@gabrielhicks/solv 5.6.32 → 5.6.33

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.js CHANGED
@@ -1,5 +1,5 @@
1
1
  #!/usr/bin/env node
2
- var lT=Object.defineProperty;var E=(_,e)=>lT(_,"name",{value:e,configurable:!0}),NT=(_=>typeof require<"u"?require:typeof Proxy<"u"?new Proxy(_,{get:(e,t)=>(typeof require<"u"?require:e)[t]}):_)(function(_){if(typeof require<"u")return require.apply(this,arguments);throw Error('Dynamic require of "'+_+'" is not supported')});import"dotenv/config";import{Command as Cd}from"commander";var Fo="5.6.32";var Io={name:"@gabrielhicks/solv",version:Fo,description:"Solana Validator CLI SOLV",main:"dist/index.js",type:"module",repository:"https://github.com/gabrielhicks/solv",keywords:["solana","validator","cli","validator-tool","Node.js","web3"],files:["dist","dist/cli/monitoring/scripts","dist/cli/chrony"],author:"ELSOUL LABO B.V.",private:!1,license:"Apache-2.0",bin:{solv:"./dist/index.js"},scripts:{test:"vitest",build:"tsup src/index.ts && npx tsx add-line.ts",dev:"nodemon",start:"node dist/index.js"},dependencies:{"@jup-ag/api":"6.0.27","@metaplex-foundation/mpl-token-metadata":"3.2.1","@metaplex-foundation/umi":"0.9.2","@metaplex-foundation/umi-bundle-defaults":"0.9.2","@skeet-framework/utils":"1.3.11","@solana/spl-stake-pool":"1.1.5","@solana/spl-token":"0.4.8","@solana/web3.js":"1.95.4","bigint-buffer":"1.1.5","bn.js":"5.2.1",bs58:"6.0.0",chalk:"5.3.0","chalk-pipe":"6.1.0","cli-progress":"3.12.0","cli-spinner":"0.2.10","cli-table3":"0.6.5",commander:"12.1.0",dotenv:"16.4.5",inquirer:"10.2.0","node-fetch":"3.3.2",prompt:"1.3.0"},devDependencies:{"@changesets/changelog-github":"0.5.0","@changesets/cli":"2.27.7","@solana-developers/helpers":"^2.5.6","@swc/core":"1.7.21","@types/bn.js":"5.1.5","@types/cli-progress":"3.11.6","@types/cli-spinner":"0.2.3","@types/inquirer":"9.0.7","@types/node":"22.5.1","@types/node-fetch":"2.6.11","@types/prompt":"1.1.8","@typescript-eslint/eslint-plugin":"8.3.0","@typescript-eslint/parser":"8.3.0",eslint:"9.9.1","eslint-config-prettier":"9.1.0",nodemon:"3.1.7",prettier:"3.3.3",tsup:"8.2.4",typescript:"5.5.4",vite:"5.4.2","vite-tsconfig-paths":"5.0.1",vitest:"2.0.5"},overrides:{chalk:"5.3.0","strip-ansi":"7.1.0","color-convert":"2.0.1","color-name":"1.1.4","is-core-module":"2.13.1","error-ex":"1.3.2","has-ansi":"5.0.1"}};var ct=Io.version;var ge="https://validators.solutions";var Rt="solv4.config.json";var Y_="identity.json",J_="unstaked-identity.json",fo="relayer-keypair.json",FT="mainnet-validator-keypair.json",IT="mainnet-vote-account-keypair.json",fT="mainnet-authority-keypair.json",DT="testnet-validator-keypair.json",PT="testnet-vote-account-keypair.json",AT="testnet-authority-keypair.json",b="/home/solv",p=`${b}/${Y_}`,Ad=`${b}/${J_}`,x=`${b}/${FT}`,ie=`${b}/${IT}`,Ud=`${b}/${fT}`,K=`${b}/${DT}`,g_=`${b}/${PT}`,ud=`${b}/${AT}`,w=`${b}/solana-validator.log`,l_=b+"/start-validator.sh",u="/mnt/ledger",B_="/mnt/accounts",N_="/mnt/snapshots",Do="solana-validator",Po="agave-validator",Ao="ELLB9W7ZCwRCV3FzWcCWoyKP6NjZJKArLyGtkqefnHcG";var Ct=3;var Uo="https://api.mainnet-beta.solana.com",uo="https://verify.validators.solutions/solv-migrate",po="https://jup.validators.solutions/v1/jup",hE;(function(_){_.SOL="SOL",_.USDC="USDC",_.elSOL="elSOL",_.JitoSOL="JitoSOL",_.mSOL="mSOL",_.bSOL="bSOL",_.EPCT="EPCT",_.JUP="JUP",_.BONK="BONK",_.JTO="JTO"})(hE||(hE={}));var mo=Object.values(hE),dt="So11111111111111111111111111111111111111112",lt="EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v",gE="ELSoL1owwMWQ9foMsutweCsMKbTPVBD9pFqxQGidTaMC";var Mo="SOLV420",Lo={So11111111111111111111111111111111111111112:"4Vwkpk3DTVrTGnUQTazsgQ1wxtU9QwZTmAXDaQRHg9Ra",EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v:"J8sqx9ZEoPRqboFAXK3c1R38zm41tRNJgUn2FzyeYQDj",J1toso1uCk3RLmjorhTtrVwY9HJ7X8V9yYac6Y7kGCPn:"HPj87TFMPZfm5nk1HmTH9a382RXn7h9oWftiFr3Xs12a",mSoLzYCxHdYgdzU16g5QSh3i5K3z3KZK7ytfqcJm7So:"8CX5tE9KvJ59HcoXwWf6tCZoRuz2JFSmunnbKC1ryaK9",bSo13r4TkiE4KumL71LsHTPpL2euBYLFx6h9HP3piy1:"782MdvLby3VfvKdfDYn9tX3DfNAtg7TcytNNFuepcoMH",CvB1ztJvpYQPvdPBePtRzjL4aQidjydtUz61NWgcgQtP:"BhR2L6J5q3xF1TxReXyHjaUh4MF6qV99tMsipzPAKeB",JUPyiwrYJFskUPiHa7hkeR8VUtAeFoSYbKedZNsDvCN:"212yg3Ev7khq4p1mESFGenF4nWefmkbC8f7mHM68j4vg",DezXAZ8z7PnrnRJjz3wXBoRgixCa6xjnB7YaB1pPB263:"61Ndjv9392jPRVGALdYgjjxGYa6TT6Gn2WLDSsmugE6U",jtojtomepa8beP8AuQc6eXt5FriJwfFMwQx2v2f9mCL:"2c9qVh8RQ6j2E2VdAEcCrRXMrd6g1vvPNZvAR6sbaGWo"},ne=["adreoi6W1MGA7eegERNcQTwQH3UuJaAnWjVZEq2cxcF","naterTR45j7aWs16S3qx8V29CfM314dzfvtCSitiAYi","th734sEwvZZ5XfemLcvo6TXepPfawWBjz3HMYeQdhPi","BAPExw4zFmwSUjyPfQorenucofeafHLUetcoWTB4Gwnt","bay3c7G89NTxSULyM45gqJx3JoWtBBeXHvifCywwiwZ","BeRTyZTveVQsekrF63WhFvfGiABThym95x8uZaicDPgo","EF8o3aQnu853EEPJKUfqAgoa8szkVs28sv64xtBrRPSV","chrtyETASKQhsndRM9pr6qC3gAHG5MuRwCgXSNVqnJL","GsVJ62qt2nbRLT4f67LAo6Ve8eGhChJquYaK3wT1iG2v","ctz4yB16kvGiMrA4vdtKXEMYgkkfJLo6hMwDk9DZ3Vf","PARaNF4kcQW3BmaeMD3ELLAqUV7MDS8bMudaCEZ72NM","dedxpgLN1VXLHpekKra1JKkMGrw7tW1uuYz7Ec28iLK","DegEnNCbn6PrsvHvsErneRNv7KFTwnjW3uFVjf43e28v","Dcky7CK3aEHzdV9EF5YR1NaTJ9QfSyzW5cACbqEFKZNv","dksYs1gzQ7FzqyadN5XtcaeVbqKSN7X2SpfN3fcUW7G","dstCt4sDCQx1QFFJekmM5RjyFLsDRkaEjTgXd5gbpDB","eyeYaqg9e2L6xw7YwsSLm27eWJfhLNAm6ETQm8TXNoK","ExCHpAsqeaDJGfUj41bhU2BuZK4fhRnJKvhG486rfKg","farmoWMKdJBxLxhMZpgU1uVjvjVJnQqrGhwAyDmcn8R","G1EaM8gLQU7DifPnCTQKP2PLvFf63tHvaXBAR8QFLg5Z","goJirTtcRjP6Wqkw7cHNvzjEva5rpvPDtj2ZnEmPAr6","wetfCN7bhjhBT8GTSAnah8ftoRoHB8H8Q87KkxDdRgK","8H6qQ2FKUjY8wmggSKHUENY38Nr9sQxDUbEZB6fiCHSX","hy1oTqvrknqoNmPWq2JtQMdDDnWkEGH2ab7N4r4rnJJ","jntrbAHjcxhP2eRUgCSACb6cMVhYm3jEQ3eQDZKicmz","akicJSdNFWszP2Le38t1NtVeywXtvoxdiGciaELwZHz","1i1yarXXz55VdvVL4v2HXcjMJPAv4fWJhY8x43bmwfL","LoV31z7KC5CZ8sdGovmRSDGB6csP1fJip1hiM7xDozw","magiCagux3C7nMKo2jKSbX6yWzYWMGKJ6ABRnw1zQ8U","JAfBCSxx2fZwdM5wTiLRAfJm3MpqXz3KnxjPhCQixGVh","mythT638QB6T8rqcGS4aKZ5a5z31xakTsRC6CL9KGEe","phz4F5mHZcZGC21GRUT6j3AqJxTUGDVAiCKiyucnyy1","pineBbb5K6SdV6KG1xibsR5DM1XsWuajtXSy3YYGY4N","prt1stdbFCFXpEcx9rxwJK63zhYo43V5JCXzGWXkPGn","rad1u8GKZoyVWxVAKy1cjL84dqhS9mp57uAezPt4iQg","rapTWQhZD2dPjJ91BXW4UnVKBt6NvX2aZxWSSYg66Y4","royLQKzrsSs9VbMZMDjZkMM8j3buBnwx7oH3wdifAk4","CitYBuKSE5W6CXEBAgY1B9fEMUdHXYSmZbXbAWd31Cr","axyaGn2eZM1dnDCagpd9aYa92gKWTrtEYb8vwc21ddr","sTeV1NswjBBo15qosoyQj1aYrgvoxomAduN1zFV6gCf","txtXxyX13G7h899vnZwNJsVRAMfWcwYZNT3jucRqqiW","hxTzWqz2WMdLhbMgYfsWiWYdtx8pY582FKwQpfGL59M","te1emnh77qnpsdjcCi9FsyX8t4gf4HYWC4kTVHuH4MQ","tstidz7tN8armqvZ7ia2ck62mY9RD2BrwMtW2w8hcwk","vnd1sXYmA8YY9xHQBkKKurZeq7iCe6EQ9bGYNZJwh1c","YE11vEiXKKx95onU1EpjgwrHovgXamRTQvY52Mvde8i","5D1fNXzvv5NjV1ysLjirC4WY92RNsVH18vjmcszZd8on"],O_=["adre1Xia7ekGsEqNgHeFc7MYwkfzTQNeJgQmZ2agAKZ","nateKhsYkrVc992UuTfAhEEFQqr2zQfpGg9RafNkxdC","BeRtYZnaaZLFwYQRPaZcxuuHBmyFBSGP32C8Ls5xnrZP","b1ueZK9bWTywN2587zsScyLTaH18wfRfN5W15XnkiqF","chrtyhyeugoiCD3M2kjVmJigLwX7YtNP3YK9HZ1N3F1","chdvWr6T14nqGRFD37KY36dsvhkCtDaufW5rpu3AfHe","CtzN7ysR5rX69qd168Aosbuc83mPozhi81bEHbG7ecNP","parayLyZvwnGjDT2pGqrVn8UDxmNcdNQCE8uPRWMeRz","dmMwc4RazLHkvDZYrWAfbHQ6cViAvNa5szCJKaiun8S","DEgenZMznWXvg5YHaZM75arVTauV453SeXX1UrxcGNup","dst2u7mXMyDvb14cSErRNA1mxH1d5VXbSXgZ3DKE9xH","eyeY8HangkSYirSBtopAfThXzhHL855wPnddz8WnemV","ExCHWgfeJyKRzpfryiQn4W6aYaWhbSAEnsoUnBGNqjWD","G1eAmANVWf6ZeoxG4aMbS1APauyEDHqLxHFytzk5hZqN","wetkjRRRDrSPAzHqfVHtFDbhNnejKm5UPfkHeccFCpo","hnhCMmnrmod4rcyc3QRKkLEC9XnPTvYJ2gBvjgFiV4o","hy1oMaD3ViyJ8i6w1xjP79zAWBBaRd1zWdTW8zYXnwu","jntr1vkzvSujfckGR6ANmFmirVoPBMNr5XJGKP5uDQA","NATsUSZGohWw8xtLdxG4yus21UCkaes4FLfM2eqKbRk","1i1yPyh843bTfi5qPgqozTbDcEX65rUNEFcUT2KAs2i","Love31pnbDJNVzZZVbtV4h2ftvTPVcBpXW11BSTCa6s","MagiCBYNPD9iTBXqiFybAFCREQzG6MSM4LmFLXQZxuV","D8xKNftHzFcCekENuTEcFC1eoL9y8wNHEg4Q5z57KK4e","mythxvB89eT3C1TKwwhsvdHfYq2aoCt2es8vLoDFYyk","phz1CRbEsCtFCh2Ro5tjyu588VU1WPMwW9BJS9yFNn2","pineXRUnbaLNFMxaM3zBmFfTiKgQMGqT9jYHXZWq2Fw","prt1st4RSxAt32ams4zsXCe1kavzmKeoR7eh1sdYRXW","radM7PKUpZwJ9bYPAJ7V8FXHeUmH1zim6iaXUKkftP9","rapXHroUoGG3KvZ3qwjvGMdA7siWXwXpiNC1bYarvSC","RoYLttggWwa2st3KAGEjnPhsq4NPD5QwaNVyyR8pTz4","ciTyjzN9iyobidMycjyqRRM7vXAHXkFzH3m8vEr6cQj","axy3tCRL3wmFMVG4c69rYurcf4fXhBo2RcuBj9ADnJ4","sTEVErNNwF2qPnV6DuNPkWpEyCt4UU6k2Y3Hyn7WUFu","TxtxXzLTDQ9W4ya3xgwyaqVa6Tky6Yqhi5BLpPCc9tZ","hxMhrsuGPDmkLJ4mTxEjyeMST3VGhTiwJvS9XgHwePj","te1ee9rGf369wxYQkuxkvuvMuTJ9cksgZySmNUF8rNY","UNrgBLmc8JT6A3dxXY9DWeHvDezt2DZQbhg1KPQfqEL","vnd1Ps8w3fsi54qUMJxBhUWARES34Qw7JQXDZxvbysd","YE11a5nVJtUNqsojkphYuWc7StqBzbCeFH6BjhAAUEV","Certusm1sa411sMpV9FPqU5dXAYhmmhygvxJ23S6hJ24","7Np41oeYqPefeNQEHSv1UDhYrehxin3NStELsSKCT4K2","GdnSyH3YtwcxFvQrVVJMm1JhTS4QVX7MFsX56uJLUfiZ","CakcnaRDHka2gXyfbEd2d3xsvkJkqsLw2akB3zsN1D2S"];import{spawnSync as mT}from"child_process";import{spawnSync as UT}from"node:child_process";var uT=E(_=>{UT(`sh -c "$(curl --netrc-optional -sSfL https://release.anza.xyz/${_}/install)"`,{shell:!0,stdio:"inherit"})},"installAgave"),y_=uT;var ho="agave-validator",pT=E(()=>{try{return ho}catch(_){return console.error(_),ho}},"getSolanaCLI"),F_=pT;var I_="3.1.7",T_="3.0.14",Be="",ye="3.1.7",x_="3.0.14",u_="",BE="3.1.7",Ke="3.0.14",Q_="",go="3.1.7",$_="3.0.14";var Bo="20.17.0",se="0.809.30106",K_="0.808.30014";var Nt="0.8.0-1",Ot="0.8.0-1";var Ft=E(async _=>{let e=Be,o=`${`v${_}`}${e}`;y_(o)},"updateVersion"),Ge=E(async(_,e=!1,t=10)=>{let o=F_(),i=`${o} --ledger ${u} exit --max-delinquent-stake ${_} --min-idle-time ${t}`;e&&(i=`${o} --ledger ${u} exit --max-delinquent-stake ${_} --min-idle-time ${t}`),mT(i,{shell:!0,stdio:"inherit"})},"monitorUpdate");import Vi from"chalk";var q_;(function(_){_.EN="en",_.JA="ja"})(q_||(q_={}));var yo;(function(_){_[_.DOUBLE=0]="DOUBLE",_[_.SINGLE=1]="SINGLE",_[_.TRIPLE=2]="TRIPLE"})(yo||(yo={}));var Ko;(function(_){_.SINGLE="single",_.DOUBLE="double",_.TRIPLE="triple"})(Ko||(Ko={}));var G_;(function(_){_.MAINNET="mainnet-beta",_.TESTNET="testnet"})(G_||(G_={}));var Go;(function(_){_.VALIDATOR="validator",_.RPC="rpc"})(Go||(Go={}));var ko;(function(_){_.SOLANA="solana",_.JITO="jito",_.AGAVE="agave",_.FIREDANCER="firedancer"})(ko||(ko={}));var Vo;(function(_){_.CO_HOST_RELAYER="co-host-relayer",_.SEPARATED_RELAYER="separated-relayer",_.WITHOUT_RELAYER="without-relayer"})(Vo||(Vo={}));var bo;(function(_){_.FIREDANCER="firedancer",_.FRANKENDANCER="frankendancer"})(bo||(bo={}));var It;(function(_){_[_.TESTNET_VALIDATOR=0]="TESTNET_VALIDATOR",_[_.MAINNET_VALIDATOR=1]="MAINNET_VALIDATOR",_[_.RPC_NODE=2]="RPC_NODE"})(It||(It={}));var ft;(function(_){_.SOLANA_CLIENT="SolanaClient",_.JITO_MEV="JitoMev",_.FIREDANCER="Firedancer"})(ft||(ft={}));var Ho=!1,Yo=!0,Jo=!1,xo=!1,Qo=!1,$o=!0,o_={ID:"solv",LANG:q_.EN,USERNAME:"solv",TESTNET_SOLANA_VERSION:"3.1.4",MAINNET_SOLANA_VERSION:"3.0.14",NODE_VERSION:"20.17.0",TESTNET_DELINQUENT_STAKE:5,MAINNET_DELINQUENT_STAKE:5,COMMISSION:5,SOLANA_NETWORK:"testnet",SOLV_TYPE:0,DISK_TYPES:1,IS_SETUP:!1,LANG_SETUP:!1,DEFAULT_VALIDATOR_VOTE_ACCOUNT_PUBKEY:"ELLB9W7ZCwRCV3FzWcCWoyKP6NjZJKArLyGtkqefnHcG",IS_CLIENT:!1,VALIDATOR_IPS:[],MAINNET_TYPE:"SolanaClient",LEDGER_PATH:"/mnt/ledger",STAKE_ACCOUNT:[],HARVEST_ACCOUNT:"",IS_MEV_MODE:!1,RPC_URL:"https://mainnet-beta.solana.com",KEYPAIR_PATH:"/home/solv/testnet-validator-keypair.json",DISCORD_WEBHOOK_URL:"",AUTO_UPDATE:!1,AUTO_RESTART:!1,ACCOUNTS_PATH:"/mnt/accounts",SNAPSHOTS_PATH:"/mnt/snapshots",MOD:!1,XDP:!1,ZERO_COPY:!1,JAG_SNAPSHOTS:!1,JAG_REGION:""},v={ROOT:"/home/solv",AUTHORIZED_KEYS:"/home/solv/.ssh/authorized_keys"},m={ROOT:"/mnt",ACCOUNTS:"/mnt/accounts",LEDGER:"/mnt/ledger",SNAPSHOTS:"/mnt/snapshots"},f_={LOG:"solana-validator.log",STARTUP_SCRIPT:"start-validator.sh",CONFIG:"solv.config.json",JITO_CONFIG:"jito.config.json"},L={SOL_SERVICE:"/etc/systemd/system/solv.service",SOL_LOGROTATE:"/etc/logrotate.d/solana",FRANKENDANCER_LOGROTATE:"/etc/logrotate.d/frankendancer",SOL_SYSTEM_CONFIG21:"/etc/sysctl.d/21-solana-validator.conf",SOL_NOFILES_CONF:"/etc/security/limits.d/90-solana-nofiles.conf",SOL_SYSTEM_CONF:"/etc/systemd/system.conf",SOLANA_PATH:"/home/solv/.local/share/solana/install"},h={MAINNET_VALIDATOR_KEY:"mainnet-validator-keypair.json",MAINNET_VALIDATOR_VOTE_KEY:"mainnet-vote-account-keypair.json",MAINNET_VALITATOR_AUTHORITY_KEY:"mainnet-authority-keypair.json",TESTNET_VALIDATOR_KEY:"testnet-validator-keypair.json",TESTNET_VALIDATOR_VOTE_KEY:"testnet-vote-account-keypair.json",TESTNET_VALITATOR_AUTHORITY_KEY:"testnet-authority-keypair.json"},g=E((_=v.ROOT)=>{let e=_===v.ROOT?v.ROOT:_,t=`${e}/${h.MAINNET_VALIDATOR_KEY}`,o=`${e}/${h.MAINNET_VALIDATOR_VOTE_KEY}`,i=`${e}/${h.MAINNET_VALITATOR_AUTHORITY_KEY}`,n=`${e}/${h.TESTNET_VALIDATOR_KEY}`,s=`${e}/${h.TESTNET_VALIDATOR_VOTE_KEY}`,r=`${e}/${h.TESTNET_VALITATOR_AUTHORITY_KEY}`;return{mainnetValidatorKey:t,mainnetValidatorVoteKey:o,mainnetValidatorAuthorityKey:i,testnetValidatorKey:n,testnetValidatorVoteKey:s,testnetValidatorAuthorityKey:r}},"getAllKeyPaths"),k_=E((_=!0)=>{let e=_?`${v.ROOT}/${h.TESTNET_VALIDATOR_KEY}`:`${v.ROOT}/${h.MAINNET_VALIDATOR_KEY}`,t=_?`${v.ROOT}/${h.TESTNET_VALIDATOR_VOTE_KEY}`:`${v.ROOT}/${h.MAINNET_VALIDATOR_VOTE_KEY}`,o=`${v.ROOT}/${f_.LOG}`,i=m.ACCOUNTS,n=m.LEDGER,s=m.SNAPSHOTS,r=`${v.ROOT}/${f_.STARTUP_SCRIPT}`;return{identity:e,voteAccount:t,log:o,accounts:i,ledger:n,scriptPath:r,snapshots:s}},"startupScriptPaths");var c_="So1vW4Bm6ZURzJJHZy1JpsjoVY68z4cDgF4tTLwYMa5",yE="7tAfLKgRVd9eywSQPuMbVNd51KGkaveZQuTjapL74Fwv",qo="EiwSTx1Z2uJATDut682U7xzzquFR4UpQJUij3wSxVoSV",Wo=9,D_="ELSoL1owwMWQ9foMsutweCsMKbTPVBD9pFqxQGidTaMC",Xo="So11111111111111111111111111111111111111112",jo="EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v",zo="CvB1ztJvpYQPvdPBePtRzjL4aQidjydtUz61NWgcgQtP",wo;(function(_){_[_.ELSOL=D_]="ELSOL",_[_.SOL=Xo]="SOL",_[_.USDC=jo]="USDC",_[_.EPCT=zo]="EPCT"})(wo||(wo={}));var vo;(function(_){_.V6_BASE_URL="https://quote-api.jup.ag/v6",_.V6_QUOTE_URL="https://quote-api.jup.ag/v6/quote",_.V6_SWAP_URL="https://quote-api.jup.ag/v6/swap"})(vo||(vo={}));var Yd={[Xo]:9,[D_]:9,[jo]:6,[zo]:6},Dt="/home/solv/currentEpoch.json";var Pt="https://api.testnet.solana.com";import{spawnSync as KE}from"child_process";var Zo=E(()=>{KE("pnpm add -g pnpm",{shell:!0,stdio:"inherit"});let _=o_.NODE_VERSION;KE(`pnpm env use ${_} --global`,{shell:!0,stdio:"inherit"}),KE("pnpm add -g @gabrielhicks/solv",{shell:!0,stdio:"inherit"})},"updateSolv");import{spawnSync as Q}from"child_process";var At=E((_,e=!1,t=!1,o=!1)=>{Q("sudo apt install --only-upgrade doublezero doublezero-solana -y",{shell:!0,stdio:"inherit"}),Q("sudo systemctl restart doublezerod",{shell:!0,stdio:"inherit"}),t?e?Q(`sh -c "$(curl --netrc-optional -sSfL https://raw.githubusercontent.com/gabrielhicks/jito-solana/${_}/installer)"`,{shell:!0,stdio:"inherit"}):(Q(`mkdir /tmp/${_}`,{shell:!0,stdio:"inherit"}),Q(`cd /tmp/${_}`,{shell:!0,stdio:"inherit"}),Q(`git clone https://github.com/jito-foundation/jito-solana.git --recurse-submodules /tmp/${_}`,{shell:!0,stdio:"inherit"}),Q(`git -C /tmp/${_} checkout ${_}`,{shell:!0,stdio:"inherit"}),Q(`git -C /tmp/${_} submodule update --init --recursive`,{shell:!0,stdio:"inherit"}),Q(`CI_COMMIT=$(git -C /tmp/${_} rev-parse HEAD) /tmp/${_}/scripts/cargo-install-all.sh /home/solv/.local/share/solana/install/releases/${_}`,{shell:!0,stdio:"inherit"}),Q("sudo rm -rf /home/solv/.local/share/solana/install/active_release",{shell:!0,stdio:"inherit"}),Q(`sudo ln -sfn /home/solv/.local/share/solana/install/releases/${_} /home/solv/.local/share/solana/install/active_release`,{shell:!0,stdio:"inherit"}),o&&Q("sudo setcap cap_net_raw,cap_net_admin,cap_bpf,cap_perfmon=p /home/solv/.local/share/solana/install/active_release/bin/agave-validator",{shell:!0,stdio:"inherit"}),Q(`sudo rm -rf /tmp/${_}`,{shell:!0,stdio:"inherit"})):e?Q(`sh -c "$(curl --netrc-optional -sSfL https://raw.githubusercontent.com/gabrielhicks/jito-solana/${_}/installer)"`,{shell:!0,stdio:"inherit"}):Q(`sh -c "$(curl --netrc-optional -sSfL https://release.jito.wtf/${_}/install)"`,{shell:!0,stdio:"inherit"})},"jitoUpdate");import{readFile as MT,writeFile as LT}from"fs/promises";import{homedir as hT}from"os";var W_=E(async _=>{let t=`${hT()}/${f_.JITO_CONFIG}`,i={...JSON.parse(await MT(t,"utf8")),..._},n=JSON.stringify(i,null,2);await LT(t,n),console.log(`Updated ${t} with new values.`)},"updateJitoSolvConfig");import{spawnSync as _i}from"child_process";import gT from"inquirer";var ei=E((_,e=!0)=>{let t=e?"/home/solv/testnet-validator-keypair.json":"/home/solv/mainnet-validator-keypair.json",o=e?"/home/solv/testnet-vote-account-keypair.json":"/home/solv/mainnet-vote-account-keypair.json";_i(`solana config set --url ${e?"testnet":"mainnet-beta"} --keypair ${t}`,{shell:!0,stdio:"inherit"});let n=`solana vote-update-commission ${o} ${_} ${t} --keypair ${t}`;_i(n,{shell:!0,stdio:"inherit"})},"updateCommission"),ti=E(async()=>await gT.prompt([{type:"number",name:"commission",message:"Enter new commission",default:7}]),"updateCommissionAsk");import{execAsync as ke}from"@skeet-framework/utils";import BT from"chalk";import yT from"inquirer";var Ei=E(async()=>{let _=await yT.prompt([{name:"ip",type:"input",message:"Enter your IP address to allow access to RPC NODE:",default:"1.2.3.4"}]);await ke("sudo ufw delete allow 8899/udp"),await ke("sudo ufw delete allow 8899/tcp"),await ke(`sudo ufw allow from ${_.ip} to any port 8899 proto tcp`),await ke(`sudo ufw allow from ${_.ip} to any port 8899 proto udp`),await ke("sudo ufw reload"),console.log(BT.white("\u2714\uFE0F Firewall updated!"))},"updateFirewall");var KT=E(()=>Fo,"getSolvVersion"),re=KT;import{readFile as VT,writeFile as bT}from"fs/promises";import{existsAsync as wT}from"@skeet-framework/utils";var GE;(function(_){_.EN="en",_.JA="ja"})(GE||(GE={}));var dl=Object.values(GE),l;(function(_){_.MAINNET="mainnet-beta",_.TESTNET="testnet"})(l||(l={}));var oi=Object.values(l),P;(function(_){_.RPC="rpc",_.VALIDATOR="validator"})(P||(P={}));var ii=Object.values(P),F;(function(_){_.SOLANA="solana",_.AGAVE="agave",_.JITO="jito",_.FRANKENDANCER="frankendancer",_.BAM="bam",_.NONE="none"})(F||(F={}));var ll=Object.values(F).filter(_=>_!=="none"),$;(function(_){_.AGAVE="agave",_.JITO="jito",_.NONE="none"})($||($={}));var ni=Object.values($).filter(_=>_!=="none"),i_;(function(_){_.SINGLE="single",_.DOUBLE="double",_.TRIPLE="triple"})(i_||(i_={}));var kT={NETWORK:l.TESTNET,NODE_TYPE:P.RPC,VALIDATOR_TYPE:F.NONE,RPC_TYPE:$.AGAVE,MNT_DISK_TYPE:i_.TRIPLE,TESTNET_SOLANA_VERSION:I_,MAINNET_SOLANA_VERSION:T_,NODE_VERSION:Bo,TESTNET_DELINQUENT_STAKE:10,MAINNET_DELINQUENT_STAKE:5,COMMISSION:5,DEFAULT_VALIDATOR_VOTE_ACCOUNT_PUBKEY:Ao,STAKE_ACCOUNTS:[],HARVEST_ACCOUNT:"",IS_MEV_MODE:!1,RPC_URL:Uo,KEYPAIR_PATH:"",DISCORD_WEBHOOK_URL:"",AUTO_UPDATE:!1,AUTO_RESTART:!1,IS_DUMMY:!1,API_KEY:"",LEDGER_PATH:u,ACCOUNTS_PATH:B_,SNAPSHOTS_PATH:N_,MOD:!1,XDP:!1,ZERO_COPY:!1,JAG_SNAPSHOTS:!1,JAG_REGION:"",CHRONY_LOCATION:""},p_=kT;import{homedir as vT}from"os";var HT=E(async()=>{let e=`${vT()}/${Rt}`;return await wT(e)?JSON.parse(await VT(e,"utf-8")):(console.log("Creating default config file at",e),await bT(e,JSON.stringify(p_,null,2)),p_)},"readConfig"),Y=HT;import YT from"node-fetch";var P_=E(async _=>{try{let e=await Y();if(e.DISCORD_WEBHOOK_URL==="")throw new Error(`DISCORD_WEBHOOK_URL is empty
2
+ var lT=Object.defineProperty;var E=(_,e)=>lT(_,"name",{value:e,configurable:!0}),NT=(_=>typeof require<"u"?require:typeof Proxy<"u"?new Proxy(_,{get:(e,t)=>(typeof require<"u"?require:e)[t]}):_)(function(_){if(typeof require<"u")return require.apply(this,arguments);throw Error('Dynamic require of "'+_+'" is not supported')});import"dotenv/config";import{Command as Cd}from"commander";var Fo="5.6.33";var Io={name:"@gabrielhicks/solv",version:Fo,description:"Solana Validator CLI SOLV",main:"dist/index.js",type:"module",repository:"https://github.com/gabrielhicks/solv",keywords:["solana","validator","cli","validator-tool","Node.js","web3"],files:["dist","dist/cli/monitoring/scripts","dist/cli/chrony"],author:"ELSOUL LABO B.V.",private:!1,license:"Apache-2.0",bin:{solv:"./dist/index.js"},scripts:{test:"vitest",build:"tsup src/index.ts && npx tsx add-line.ts",dev:"nodemon",start:"node dist/index.js"},dependencies:{"@jup-ag/api":"6.0.27","@metaplex-foundation/mpl-token-metadata":"3.2.1","@metaplex-foundation/umi":"0.9.2","@metaplex-foundation/umi-bundle-defaults":"0.9.2","@skeet-framework/utils":"1.3.11","@solana/spl-stake-pool":"1.1.5","@solana/spl-token":"0.4.8","@solana/web3.js":"1.95.4","bigint-buffer":"1.1.5","bn.js":"5.2.1",bs58:"6.0.0",chalk:"5.3.0","chalk-pipe":"6.1.0","cli-progress":"3.12.0","cli-spinner":"0.2.10","cli-table3":"0.6.5",commander:"12.1.0",dotenv:"16.4.5",inquirer:"10.2.0","node-fetch":"3.3.2",prompt:"1.3.0"},devDependencies:{"@changesets/changelog-github":"0.5.0","@changesets/cli":"2.27.7","@solana-developers/helpers":"^2.5.6","@swc/core":"1.7.21","@types/bn.js":"5.1.5","@types/cli-progress":"3.11.6","@types/cli-spinner":"0.2.3","@types/inquirer":"9.0.7","@types/node":"22.5.1","@types/node-fetch":"2.6.11","@types/prompt":"1.1.8","@typescript-eslint/eslint-plugin":"8.3.0","@typescript-eslint/parser":"8.3.0",eslint:"9.9.1","eslint-config-prettier":"9.1.0",nodemon:"3.1.7",prettier:"3.3.3",tsup:"8.2.4",typescript:"5.5.4",vite:"5.4.2","vite-tsconfig-paths":"5.0.1",vitest:"2.0.5"},overrides:{chalk:"5.3.0","strip-ansi":"7.1.0","color-convert":"2.0.1","color-name":"1.1.4","is-core-module":"2.13.1","error-ex":"1.3.2","has-ansi":"5.0.1"}};var ct=Io.version;var ge="https://validators.solutions";var Rt="solv4.config.json";var Y_="identity.json",J_="unstaked-identity.json",fo="relayer-keypair.json",FT="mainnet-validator-keypair.json",IT="mainnet-vote-account-keypair.json",fT="mainnet-authority-keypair.json",DT="testnet-validator-keypair.json",PT="testnet-vote-account-keypair.json",AT="testnet-authority-keypair.json",b="/home/solv",p=`${b}/${Y_}`,Ad=`${b}/${J_}`,x=`${b}/${FT}`,ie=`${b}/${IT}`,Ud=`${b}/${fT}`,K=`${b}/${DT}`,g_=`${b}/${PT}`,ud=`${b}/${AT}`,w=`${b}/solana-validator.log`,l_=b+"/start-validator.sh",u="/mnt/ledger",B_="/mnt/accounts",N_="/mnt/snapshots",Do="solana-validator",Po="agave-validator",Ao="ELLB9W7ZCwRCV3FzWcCWoyKP6NjZJKArLyGtkqefnHcG";var Ct=3;var Uo="https://api.mainnet-beta.solana.com",uo="https://verify.validators.solutions/solv-migrate",po="https://jup.validators.solutions/v1/jup",hE;(function(_){_.SOL="SOL",_.USDC="USDC",_.elSOL="elSOL",_.JitoSOL="JitoSOL",_.mSOL="mSOL",_.bSOL="bSOL",_.EPCT="EPCT",_.JUP="JUP",_.BONK="BONK",_.JTO="JTO"})(hE||(hE={}));var mo=Object.values(hE),dt="So11111111111111111111111111111111111111112",lt="EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v",gE="ELSoL1owwMWQ9foMsutweCsMKbTPVBD9pFqxQGidTaMC";var Mo="SOLV420",Lo={So11111111111111111111111111111111111111112:"4Vwkpk3DTVrTGnUQTazsgQ1wxtU9QwZTmAXDaQRHg9Ra",EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v:"J8sqx9ZEoPRqboFAXK3c1R38zm41tRNJgUn2FzyeYQDj",J1toso1uCk3RLmjorhTtrVwY9HJ7X8V9yYac6Y7kGCPn:"HPj87TFMPZfm5nk1HmTH9a382RXn7h9oWftiFr3Xs12a",mSoLzYCxHdYgdzU16g5QSh3i5K3z3KZK7ytfqcJm7So:"8CX5tE9KvJ59HcoXwWf6tCZoRuz2JFSmunnbKC1ryaK9",bSo13r4TkiE4KumL71LsHTPpL2euBYLFx6h9HP3piy1:"782MdvLby3VfvKdfDYn9tX3DfNAtg7TcytNNFuepcoMH",CvB1ztJvpYQPvdPBePtRzjL4aQidjydtUz61NWgcgQtP:"BhR2L6J5q3xF1TxReXyHjaUh4MF6qV99tMsipzPAKeB",JUPyiwrYJFskUPiHa7hkeR8VUtAeFoSYbKedZNsDvCN:"212yg3Ev7khq4p1mESFGenF4nWefmkbC8f7mHM68j4vg",DezXAZ8z7PnrnRJjz3wXBoRgixCa6xjnB7YaB1pPB263:"61Ndjv9392jPRVGALdYgjjxGYa6TT6Gn2WLDSsmugE6U",jtojtomepa8beP8AuQc6eXt5FriJwfFMwQx2v2f9mCL:"2c9qVh8RQ6j2E2VdAEcCrRXMrd6g1vvPNZvAR6sbaGWo"},ne=["adreoi6W1MGA7eegERNcQTwQH3UuJaAnWjVZEq2cxcF","naterTR45j7aWs16S3qx8V29CfM314dzfvtCSitiAYi","th734sEwvZZ5XfemLcvo6TXepPfawWBjz3HMYeQdhPi","BAPExw4zFmwSUjyPfQorenucofeafHLUetcoWTB4Gwnt","bay3c7G89NTxSULyM45gqJx3JoWtBBeXHvifCywwiwZ","BeRTyZTveVQsekrF63WhFvfGiABThym95x8uZaicDPgo","EF8o3aQnu853EEPJKUfqAgoa8szkVs28sv64xtBrRPSV","chrtyETASKQhsndRM9pr6qC3gAHG5MuRwCgXSNVqnJL","GsVJ62qt2nbRLT4f67LAo6Ve8eGhChJquYaK3wT1iG2v","ctz4yB16kvGiMrA4vdtKXEMYgkkfJLo6hMwDk9DZ3Vf","PARaNF4kcQW3BmaeMD3ELLAqUV7MDS8bMudaCEZ72NM","dedxpgLN1VXLHpekKra1JKkMGrw7tW1uuYz7Ec28iLK","DegEnNCbn6PrsvHvsErneRNv7KFTwnjW3uFVjf43e28v","Dcky7CK3aEHzdV9EF5YR1NaTJ9QfSyzW5cACbqEFKZNv","dksYs1gzQ7FzqyadN5XtcaeVbqKSN7X2SpfN3fcUW7G","dstCt4sDCQx1QFFJekmM5RjyFLsDRkaEjTgXd5gbpDB","eyeYaqg9e2L6xw7YwsSLm27eWJfhLNAm6ETQm8TXNoK","ExCHpAsqeaDJGfUj41bhU2BuZK4fhRnJKvhG486rfKg","farmoWMKdJBxLxhMZpgU1uVjvjVJnQqrGhwAyDmcn8R","G1EaM8gLQU7DifPnCTQKP2PLvFf63tHvaXBAR8QFLg5Z","goJirTtcRjP6Wqkw7cHNvzjEva5rpvPDtj2ZnEmPAr6","wetfCN7bhjhBT8GTSAnah8ftoRoHB8H8Q87KkxDdRgK","8H6qQ2FKUjY8wmggSKHUENY38Nr9sQxDUbEZB6fiCHSX","hy1oTqvrknqoNmPWq2JtQMdDDnWkEGH2ab7N4r4rnJJ","jntrbAHjcxhP2eRUgCSACb6cMVhYm3jEQ3eQDZKicmz","akicJSdNFWszP2Le38t1NtVeywXtvoxdiGciaELwZHz","1i1yarXXz55VdvVL4v2HXcjMJPAv4fWJhY8x43bmwfL","LoV31z7KC5CZ8sdGovmRSDGB6csP1fJip1hiM7xDozw","magiCagux3C7nMKo2jKSbX6yWzYWMGKJ6ABRnw1zQ8U","JAfBCSxx2fZwdM5wTiLRAfJm3MpqXz3KnxjPhCQixGVh","mythT638QB6T8rqcGS4aKZ5a5z31xakTsRC6CL9KGEe","phz4F5mHZcZGC21GRUT6j3AqJxTUGDVAiCKiyucnyy1","pineBbb5K6SdV6KG1xibsR5DM1XsWuajtXSy3YYGY4N","prt1stdbFCFXpEcx9rxwJK63zhYo43V5JCXzGWXkPGn","rad1u8GKZoyVWxVAKy1cjL84dqhS9mp57uAezPt4iQg","rapTWQhZD2dPjJ91BXW4UnVKBt6NvX2aZxWSSYg66Y4","royLQKzrsSs9VbMZMDjZkMM8j3buBnwx7oH3wdifAk4","CitYBuKSE5W6CXEBAgY1B9fEMUdHXYSmZbXbAWd31Cr","axyaGn2eZM1dnDCagpd9aYa92gKWTrtEYb8vwc21ddr","sTeV1NswjBBo15qosoyQj1aYrgvoxomAduN1zFV6gCf","txtXxyX13G7h899vnZwNJsVRAMfWcwYZNT3jucRqqiW","hxTzWqz2WMdLhbMgYfsWiWYdtx8pY582FKwQpfGL59M","te1emnh77qnpsdjcCi9FsyX8t4gf4HYWC4kTVHuH4MQ","tstidz7tN8armqvZ7ia2ck62mY9RD2BrwMtW2w8hcwk","vnd1sXYmA8YY9xHQBkKKurZeq7iCe6EQ9bGYNZJwh1c","YE11vEiXKKx95onU1EpjgwrHovgXamRTQvY52Mvde8i","5D1fNXzvv5NjV1ysLjirC4WY92RNsVH18vjmcszZd8on"],O_=["adre1Xia7ekGsEqNgHeFc7MYwkfzTQNeJgQmZ2agAKZ","nateKhsYkrVc992UuTfAhEEFQqr2zQfpGg9RafNkxdC","BeRtYZnaaZLFwYQRPaZcxuuHBmyFBSGP32C8Ls5xnrZP","b1ueZK9bWTywN2587zsScyLTaH18wfRfN5W15XnkiqF","chrtyhyeugoiCD3M2kjVmJigLwX7YtNP3YK9HZ1N3F1","chdvWr6T14nqGRFD37KY36dsvhkCtDaufW5rpu3AfHe","CtzN7ysR5rX69qd168Aosbuc83mPozhi81bEHbG7ecNP","parayLyZvwnGjDT2pGqrVn8UDxmNcdNQCE8uPRWMeRz","dmMwc4RazLHkvDZYrWAfbHQ6cViAvNa5szCJKaiun8S","DEgenZMznWXvg5YHaZM75arVTauV453SeXX1UrxcGNup","dst2u7mXMyDvb14cSErRNA1mxH1d5VXbSXgZ3DKE9xH","eyeY8HangkSYirSBtopAfThXzhHL855wPnddz8WnemV","ExCHWgfeJyKRzpfryiQn4W6aYaWhbSAEnsoUnBGNqjWD","G1eAmANVWf6ZeoxG4aMbS1APauyEDHqLxHFytzk5hZqN","wetkjRRRDrSPAzHqfVHtFDbhNnejKm5UPfkHeccFCpo","hnhCMmnrmod4rcyc3QRKkLEC9XnPTvYJ2gBvjgFiV4o","hy1oMaD3ViyJ8i6w1xjP79zAWBBaRd1zWdTW8zYXnwu","jntr1vkzvSujfckGR6ANmFmirVoPBMNr5XJGKP5uDQA","NATsUSZGohWw8xtLdxG4yus21UCkaes4FLfM2eqKbRk","1i1yPyh843bTfi5qPgqozTbDcEX65rUNEFcUT2KAs2i","Love31pnbDJNVzZZVbtV4h2ftvTPVcBpXW11BSTCa6s","MagiCBYNPD9iTBXqiFybAFCREQzG6MSM4LmFLXQZxuV","D8xKNftHzFcCekENuTEcFC1eoL9y8wNHEg4Q5z57KK4e","mythxvB89eT3C1TKwwhsvdHfYq2aoCt2es8vLoDFYyk","phz1CRbEsCtFCh2Ro5tjyu588VU1WPMwW9BJS9yFNn2","pineXRUnbaLNFMxaM3zBmFfTiKgQMGqT9jYHXZWq2Fw","prt1st4RSxAt32ams4zsXCe1kavzmKeoR7eh1sdYRXW","radM7PKUpZwJ9bYPAJ7V8FXHeUmH1zim6iaXUKkftP9","rapXHroUoGG3KvZ3qwjvGMdA7siWXwXpiNC1bYarvSC","RoYLttggWwa2st3KAGEjnPhsq4NPD5QwaNVyyR8pTz4","ciTyjzN9iyobidMycjyqRRM7vXAHXkFzH3m8vEr6cQj","axy3tCRL3wmFMVG4c69rYurcf4fXhBo2RcuBj9ADnJ4","sTEVErNNwF2qPnV6DuNPkWpEyCt4UU6k2Y3Hyn7WUFu","TxtxXzLTDQ9W4ya3xgwyaqVa6Tky6Yqhi5BLpPCc9tZ","hxMhrsuGPDmkLJ4mTxEjyeMST3VGhTiwJvS9XgHwePj","te1ee9rGf369wxYQkuxkvuvMuTJ9cksgZySmNUF8rNY","UNrgBLmc8JT6A3dxXY9DWeHvDezt2DZQbhg1KPQfqEL","vnd1Ps8w3fsi54qUMJxBhUWARES34Qw7JQXDZxvbysd","YE11a5nVJtUNqsojkphYuWc7StqBzbCeFH6BjhAAUEV","Certusm1sa411sMpV9FPqU5dXAYhmmhygvxJ23S6hJ24","7Np41oeYqPefeNQEHSv1UDhYrehxin3NStELsSKCT4K2","GdnSyH3YtwcxFvQrVVJMm1JhTS4QVX7MFsX56uJLUfiZ","CakcnaRDHka2gXyfbEd2d3xsvkJkqsLw2akB3zsN1D2S"];import{spawnSync as mT}from"child_process";import{spawnSync as UT}from"node:child_process";var uT=E(_=>{UT(`sh -c "$(curl --netrc-optional -sSfL https://release.anza.xyz/${_}/install)"`,{shell:!0,stdio:"inherit"})},"installAgave"),y_=uT;var ho="agave-validator",pT=E(()=>{try{return ho}catch(_){return console.error(_),ho}},"getSolanaCLI"),F_=pT;var I_="3.1.7",T_="3.0.14",Be="",ye="3.1.7",x_="3.0.14",u_="",BE="3.1.7",Ke="3.0.14",Q_="",go="3.1.7",$_="3.0.14";var Bo="20.17.0",se="0.809.30106",K_="0.808.30014";var Nt="0.8.0-1",Ot="0.8.0-1";var Ft=E(async _=>{let e=Be,o=`${`v${_}`}${e}`;y_(o)},"updateVersion"),Ge=E(async(_,e=!1,t=10)=>{let o=F_(),i=`${o} --ledger ${u} exit --max-delinquent-stake ${_} --min-idle-time ${t}`;e&&(i=`${o} --ledger ${u} exit --max-delinquent-stake ${_} --min-idle-time ${t}`),mT(i,{shell:!0,stdio:"inherit"})},"monitorUpdate");import Vi from"chalk";var q_;(function(_){_.EN="en",_.JA="ja"})(q_||(q_={}));var yo;(function(_){_[_.DOUBLE=0]="DOUBLE",_[_.SINGLE=1]="SINGLE",_[_.TRIPLE=2]="TRIPLE"})(yo||(yo={}));var Ko;(function(_){_.SINGLE="single",_.DOUBLE="double",_.TRIPLE="triple"})(Ko||(Ko={}));var G_;(function(_){_.MAINNET="mainnet-beta",_.TESTNET="testnet"})(G_||(G_={}));var Go;(function(_){_.VALIDATOR="validator",_.RPC="rpc"})(Go||(Go={}));var ko;(function(_){_.SOLANA="solana",_.JITO="jito",_.AGAVE="agave",_.FIREDANCER="firedancer"})(ko||(ko={}));var Vo;(function(_){_.CO_HOST_RELAYER="co-host-relayer",_.SEPARATED_RELAYER="separated-relayer",_.WITHOUT_RELAYER="without-relayer"})(Vo||(Vo={}));var bo;(function(_){_.FIREDANCER="firedancer",_.FRANKENDANCER="frankendancer"})(bo||(bo={}));var It;(function(_){_[_.TESTNET_VALIDATOR=0]="TESTNET_VALIDATOR",_[_.MAINNET_VALIDATOR=1]="MAINNET_VALIDATOR",_[_.RPC_NODE=2]="RPC_NODE"})(It||(It={}));var ft;(function(_){_.SOLANA_CLIENT="SolanaClient",_.JITO_MEV="JitoMev",_.FIREDANCER="Firedancer"})(ft||(ft={}));var Ho=!1,Yo=!1,Jo=!1,xo=!1,Qo=!1,$o=!1,o_={ID:"solv",LANG:q_.EN,USERNAME:"solv",TESTNET_SOLANA_VERSION:"3.1.4",MAINNET_SOLANA_VERSION:"3.0.14",NODE_VERSION:"20.17.0",TESTNET_DELINQUENT_STAKE:5,MAINNET_DELINQUENT_STAKE:5,COMMISSION:5,SOLANA_NETWORK:"testnet",SOLV_TYPE:0,DISK_TYPES:1,IS_SETUP:!1,LANG_SETUP:!1,DEFAULT_VALIDATOR_VOTE_ACCOUNT_PUBKEY:"ELLB9W7ZCwRCV3FzWcCWoyKP6NjZJKArLyGtkqefnHcG",IS_CLIENT:!1,VALIDATOR_IPS:[],MAINNET_TYPE:"SolanaClient",LEDGER_PATH:"/mnt/ledger",STAKE_ACCOUNT:[],HARVEST_ACCOUNT:"",IS_MEV_MODE:!1,RPC_URL:"https://mainnet-beta.solana.com",KEYPAIR_PATH:"/home/solv/testnet-validator-keypair.json",DISCORD_WEBHOOK_URL:"",AUTO_UPDATE:!1,AUTO_RESTART:!1,ACCOUNTS_PATH:"/mnt/accounts",SNAPSHOTS_PATH:"/mnt/snapshots",MOD:!1,XDP:!1,ZERO_COPY:!1,JAG_SNAPSHOTS:!1,JAG_REGION:""},v={ROOT:"/home/solv",AUTHORIZED_KEYS:"/home/solv/.ssh/authorized_keys"},m={ROOT:"/mnt",ACCOUNTS:"/mnt/accounts",LEDGER:"/mnt/ledger",SNAPSHOTS:"/mnt/snapshots"},f_={LOG:"solana-validator.log",STARTUP_SCRIPT:"start-validator.sh",CONFIG:"solv.config.json",JITO_CONFIG:"jito.config.json"},L={SOL_SERVICE:"/etc/systemd/system/solv.service",SOL_LOGROTATE:"/etc/logrotate.d/solana",FRANKENDANCER_LOGROTATE:"/etc/logrotate.d/frankendancer",SOL_SYSTEM_CONFIG21:"/etc/sysctl.d/21-solana-validator.conf",SOL_NOFILES_CONF:"/etc/security/limits.d/90-solana-nofiles.conf",SOL_SYSTEM_CONF:"/etc/systemd/system.conf",SOLANA_PATH:"/home/solv/.local/share/solana/install"},h={MAINNET_VALIDATOR_KEY:"mainnet-validator-keypair.json",MAINNET_VALIDATOR_VOTE_KEY:"mainnet-vote-account-keypair.json",MAINNET_VALITATOR_AUTHORITY_KEY:"mainnet-authority-keypair.json",TESTNET_VALIDATOR_KEY:"testnet-validator-keypair.json",TESTNET_VALIDATOR_VOTE_KEY:"testnet-vote-account-keypair.json",TESTNET_VALITATOR_AUTHORITY_KEY:"testnet-authority-keypair.json"},g=E((_=v.ROOT)=>{let e=_===v.ROOT?v.ROOT:_,t=`${e}/${h.MAINNET_VALIDATOR_KEY}`,o=`${e}/${h.MAINNET_VALIDATOR_VOTE_KEY}`,i=`${e}/${h.MAINNET_VALITATOR_AUTHORITY_KEY}`,n=`${e}/${h.TESTNET_VALIDATOR_KEY}`,s=`${e}/${h.TESTNET_VALIDATOR_VOTE_KEY}`,r=`${e}/${h.TESTNET_VALITATOR_AUTHORITY_KEY}`;return{mainnetValidatorKey:t,mainnetValidatorVoteKey:o,mainnetValidatorAuthorityKey:i,testnetValidatorKey:n,testnetValidatorVoteKey:s,testnetValidatorAuthorityKey:r}},"getAllKeyPaths"),k_=E((_=!0)=>{let e=_?`${v.ROOT}/${h.TESTNET_VALIDATOR_KEY}`:`${v.ROOT}/${h.MAINNET_VALIDATOR_KEY}`,t=_?`${v.ROOT}/${h.TESTNET_VALIDATOR_VOTE_KEY}`:`${v.ROOT}/${h.MAINNET_VALIDATOR_VOTE_KEY}`,o=`${v.ROOT}/${f_.LOG}`,i=m.ACCOUNTS,n=m.LEDGER,s=m.SNAPSHOTS,r=`${v.ROOT}/${f_.STARTUP_SCRIPT}`;return{identity:e,voteAccount:t,log:o,accounts:i,ledger:n,scriptPath:r,snapshots:s}},"startupScriptPaths");var c_="So1vW4Bm6ZURzJJHZy1JpsjoVY68z4cDgF4tTLwYMa5",yE="7tAfLKgRVd9eywSQPuMbVNd51KGkaveZQuTjapL74Fwv",qo="EiwSTx1Z2uJATDut682U7xzzquFR4UpQJUij3wSxVoSV",Wo=9,D_="ELSoL1owwMWQ9foMsutweCsMKbTPVBD9pFqxQGidTaMC",Xo="So11111111111111111111111111111111111111112",jo="EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v",zo="CvB1ztJvpYQPvdPBePtRzjL4aQidjydtUz61NWgcgQtP",wo;(function(_){_[_.ELSOL=D_]="ELSOL",_[_.SOL=Xo]="SOL",_[_.USDC=jo]="USDC",_[_.EPCT=zo]="EPCT"})(wo||(wo={}));var vo;(function(_){_.V6_BASE_URL="https://quote-api.jup.ag/v6",_.V6_QUOTE_URL="https://quote-api.jup.ag/v6/quote",_.V6_SWAP_URL="https://quote-api.jup.ag/v6/swap"})(vo||(vo={}));var Yd={[Xo]:9,[D_]:9,[jo]:6,[zo]:6},Dt="/home/solv/currentEpoch.json";var Pt="https://api.testnet.solana.com";import{spawnSync as KE}from"child_process";var Zo=E(()=>{KE("pnpm add -g pnpm",{shell:!0,stdio:"inherit"});let _=o_.NODE_VERSION;KE(`pnpm env use ${_} --global`,{shell:!0,stdio:"inherit"}),KE("pnpm add -g @gabrielhicks/solv",{shell:!0,stdio:"inherit"})},"updateSolv");import{spawnSync as Q}from"child_process";var At=E((_,e=!1,t=!1,o=!1)=>{Q("sudo apt install --only-upgrade doublezero doublezero-solana -y",{shell:!0,stdio:"inherit"}),Q("sudo systemctl restart doublezerod",{shell:!0,stdio:"inherit"}),t?e?Q(`sh -c "$(curl --netrc-optional -sSfL https://raw.githubusercontent.com/gabrielhicks/jito-solana/${_}/installer)"`,{shell:!0,stdio:"inherit"}):(Q(`mkdir /tmp/${_}`,{shell:!0,stdio:"inherit"}),Q(`cd /tmp/${_}`,{shell:!0,stdio:"inherit"}),Q(`git clone https://github.com/jito-foundation/jito-solana.git --recurse-submodules /tmp/${_}`,{shell:!0,stdio:"inherit"}),Q(`git -C /tmp/${_} checkout ${_}`,{shell:!0,stdio:"inherit"}),Q(`git -C /tmp/${_} submodule update --init --recursive`,{shell:!0,stdio:"inherit"}),Q(`CI_COMMIT=$(git -C /tmp/${_} rev-parse HEAD) /tmp/${_}/scripts/cargo-install-all.sh /home/solv/.local/share/solana/install/releases/${_}`,{shell:!0,stdio:"inherit"}),Q("sudo rm -rf /home/solv/.local/share/solana/install/active_release",{shell:!0,stdio:"inherit"}),Q(`sudo ln -sfn /home/solv/.local/share/solana/install/releases/${_} /home/solv/.local/share/solana/install/active_release`,{shell:!0,stdio:"inherit"}),o&&Q("sudo setcap cap_net_raw,cap_net_admin,cap_bpf,cap_perfmon=p /home/solv/.local/share/solana/install/active_release/bin/agave-validator",{shell:!0,stdio:"inherit"}),Q(`sudo rm -rf /tmp/${_}`,{shell:!0,stdio:"inherit"})):e?Q(`sh -c "$(curl --netrc-optional -sSfL https://raw.githubusercontent.com/gabrielhicks/jito-solana/${_}/installer)"`,{shell:!0,stdio:"inherit"}):Q(`sh -c "$(curl --netrc-optional -sSfL https://release.jito.wtf/${_}/install)"`,{shell:!0,stdio:"inherit"})},"jitoUpdate");import{readFile as MT,writeFile as LT}from"fs/promises";import{homedir as hT}from"os";var W_=E(async _=>{let t=`${hT()}/${f_.JITO_CONFIG}`,i={...JSON.parse(await MT(t,"utf8")),..._},n=JSON.stringify(i,null,2);await LT(t,n),console.log(`Updated ${t} with new values.`)},"updateJitoSolvConfig");import{spawnSync as _i}from"child_process";import gT from"inquirer";var ei=E((_,e=!0)=>{let t=e?"/home/solv/testnet-validator-keypair.json":"/home/solv/mainnet-validator-keypair.json",o=e?"/home/solv/testnet-vote-account-keypair.json":"/home/solv/mainnet-vote-account-keypair.json";_i(`solana config set --url ${e?"testnet":"mainnet-beta"} --keypair ${t}`,{shell:!0,stdio:"inherit"});let n=`solana vote-update-commission ${o} ${_} ${t} --keypair ${t}`;_i(n,{shell:!0,stdio:"inherit"})},"updateCommission"),ti=E(async()=>await gT.prompt([{type:"number",name:"commission",message:"Enter new commission",default:7}]),"updateCommissionAsk");import{execAsync as ke}from"@skeet-framework/utils";import BT from"chalk";import yT from"inquirer";var Ei=E(async()=>{let _=await yT.prompt([{name:"ip",type:"input",message:"Enter your IP address to allow access to RPC NODE:",default:"1.2.3.4"}]);await ke("sudo ufw delete allow 8899/udp"),await ke("sudo ufw delete allow 8899/tcp"),await ke(`sudo ufw allow from ${_.ip} to any port 8899 proto tcp`),await ke(`sudo ufw allow from ${_.ip} to any port 8899 proto udp`),await ke("sudo ufw reload"),console.log(BT.white("\u2714\uFE0F Firewall updated!"))},"updateFirewall");var KT=E(()=>Fo,"getSolvVersion"),re=KT;import{readFile as VT,writeFile as bT}from"fs/promises";import{existsAsync as wT}from"@skeet-framework/utils";var GE;(function(_){_.EN="en",_.JA="ja"})(GE||(GE={}));var dl=Object.values(GE),l;(function(_){_.MAINNET="mainnet-beta",_.TESTNET="testnet"})(l||(l={}));var oi=Object.values(l),P;(function(_){_.RPC="rpc",_.VALIDATOR="validator"})(P||(P={}));var ii=Object.values(P),F;(function(_){_.SOLANA="solana",_.AGAVE="agave",_.JITO="jito",_.FRANKENDANCER="frankendancer",_.BAM="bam",_.NONE="none"})(F||(F={}));var ll=Object.values(F).filter(_=>_!=="none"),$;(function(_){_.AGAVE="agave",_.JITO="jito",_.NONE="none"})($||($={}));var ni=Object.values($).filter(_=>_!=="none"),i_;(function(_){_.SINGLE="single",_.DOUBLE="double",_.TRIPLE="triple"})(i_||(i_={}));var kT={NETWORK:l.TESTNET,NODE_TYPE:P.RPC,VALIDATOR_TYPE:F.NONE,RPC_TYPE:$.AGAVE,MNT_DISK_TYPE:i_.TRIPLE,TESTNET_SOLANA_VERSION:I_,MAINNET_SOLANA_VERSION:T_,NODE_VERSION:Bo,TESTNET_DELINQUENT_STAKE:10,MAINNET_DELINQUENT_STAKE:5,COMMISSION:5,DEFAULT_VALIDATOR_VOTE_ACCOUNT_PUBKEY:Ao,STAKE_ACCOUNTS:[],HARVEST_ACCOUNT:"",IS_MEV_MODE:!1,RPC_URL:Uo,KEYPAIR_PATH:"",DISCORD_WEBHOOK_URL:"",AUTO_UPDATE:!1,AUTO_RESTART:!1,IS_DUMMY:!1,API_KEY:"",LEDGER_PATH:u,ACCOUNTS_PATH:B_,SNAPSHOTS_PATH:N_,MOD:!1,XDP:!1,ZERO_COPY:!1,JAG_SNAPSHOTS:!1,JAG_REGION:"",CHRONY_LOCATION:""},p_=kT;import{homedir as vT}from"os";var HT=E(async()=>{let e=`${vT()}/${Rt}`;return await wT(e)?JSON.parse(await VT(e,"utf-8")):(console.log("Creating default config file at",e),await bT(e,JSON.stringify(p_,null,2)),p_)},"readConfig"),Y=HT;import YT from"node-fetch";var P_=E(async _=>{try{let e=await Y();if(e.DISCORD_WEBHOOK_URL==="")throw new Error(`DISCORD_WEBHOOK_URL is empty
3
3
  Please set DISCORD_WEBHOOK_URL in .env`);let t={content:_,username:"\u{1FA84} Solv Notifier"};return(await YT(e.DISCORD_WEBHOOK_URL,{method:"POST",body:JSON.stringify(t),headers:{"Content-Type":"application/json"}})).status===204}catch{return console.log({error:`Skeet sendDiscord Error - ${_}`}),!1}},"sendDiscord");import{spawnSync as qT}from"child_process";import{Connection as si}from"@solana/web3.js";var Ve=E(async(_,e,t=!1,o=200)=>{let i={pubkey:e,isActive:!1,reason:""};try{let n=t?new si("https://api.testnet.solana.com"):new si(_,"confirmed"),s=await n.getVoteAccounts(),r=s.current.find(R=>R.votePubkey===e);if(!r)return s.delinquent.find(C=>C.votePubkey===e)?(i.isActive=!1,i.reason="Validator is delinquent.",i):(i.isActive=!1,i.reason="Validator is not found in both current and delinquent lists.",i);if(s=await n.getVoteAccounts(),r=s.current.find(R=>R.votePubkey===e),!r)return i.isActive=!1,i.reason="Validator is not found in the current list.",i;let T=r.lastVote,c=await n.getSlot()-T;return c>o?(i.isActive=!1,i.reason=`Validator has not voted for ${c} slots.`,i):(i.isActive=!0,i.reason="Validator is active and voting.",i)}catch(n){return console.error(n),i.isActive=!1,i.reason="Failed to check validator status.",i}},"isValidatorActive");import{spawnSync as JT}from"child_process";var G=E(_=>{let e=`solana address --keypair ${_}`,{stdout:t}=JT(e,{shell:!0,stdio:"pipe"});return t.toString().trim()},"getSolanaAddress");var xT=E(_=>new Promise(e=>setTimeout(e,_)),"sleep"),X=xT;import{sendDiscord as QT}from"@skeet-framework/utils";var ri=30,$T=E(async _=>{try{let e=_.NETWORK===l.TESTNET,{mainnetValidatorVoteKey:t,testnetValidatorVoteKey:o}=g(),n=G(e?o:t),s=await Ve(_.RPC_URL,n,e),r=0;for(;!s.isActive;){if(r>=ri){console.log("Max retries reached, exiting...");let T=`\u26A0\uFE0F Validator is not active for ${ri} minutes!
4
4
  Account: ${s.pubkey}
5
5
  Reason: ${s.reason}