@gabrielhicks/solv 5.5.6 → 5.5.7
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 +9 -6
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
var QT=Object.defineProperty;var t=(_,e)=>QT(_,"name",{value:e,configurable:!0});import"dotenv/config";import{Command as NC}from"commander";var ft="5.5.6";var Ut={name:"@gabrielhicks/solv",version:ft,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"],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 Ge=Ut.version;var ae="https://validators.solutions";var ke="solv4.config.json";var m_="identity.json",h_="unstaked-identity.json",At="relayer-keypair.json",$T="mainnet-validator-keypair.json",WT="mainnet-vote-account-keypair.json",XT="mainnet-authority-keypair.json",jT="testnet-validator-keypair.json",zT="testnet-vote-account-keypair.json",ZT="testnet-authority-keypair.json",G="/home/solv",U=`${G}/${m_}`,LC=`${G}/${h_}`,w=`${G}/${$T}`,Y_=`${G}/${WT}`,MC=`${G}/${XT}`,u=`${G}/${jT}`,F_=`${G}/${zT}`,pC=`${G}/${ZT}`,V=`${G}/solana-validator.log`,i_=G+"/start-validator.sh",f="/mnt/ledger",I_="/mnt/accounts",n_="/mnt/snapshots",Lt="solana-validator",Mt="agave-validator",pt="ELLB9W7ZCwRCV3FzWcCWoyKP6NjZJKArLyGtkqefnHcG";var Ve=3;var ut="https://api.mainnet-beta.solana.com",mt="https://verify.validators.solutions/solv-migrate",ht="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 Bt=Object.values(HE),be="So11111111111111111111111111111111111111112",we="EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v",YE="ELSoL1owwMWQ9foMsutweCsMKbTPVBD9pFqxQGidTaMC";var gt="SOLV420",yt={So11111111111111111111111111111111111111112:"4Vwkpk3DTVrTGnUQTazsgQ1wxtU9QwZTmAXDaQRHg9Ra",EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v:"J8sqx9ZEoPRqboFAXK3c1R38zm41tRNJgUn2FzyeYQDj",J1toso1uCk3RLmjorhTtrVwY9HJ7X8V9yYac6Y7kGCPn:"HPj87TFMPZfm5nk1HmTH9a382RXn7h9oWftiFr3Xs12a",mSoLzYCxHdYgdzU16g5QSh3i5K3z3KZK7ytfqcJm7So:"8CX5tE9KvJ59HcoXwWf6tCZoRuz2JFSmunnbKC1ryaK9",bSo13r4TkiE4KumL71LsHTPpL2euBYLFx6h9HP3piy1:"782MdvLby3VfvKdfDYn9tX3DfNAtg7TcytNNFuepcoMH",CvB1ztJvpYQPvdPBePtRzjL4aQidjydtUz61NWgcgQtP:"BhR2L6J5q3xF1TxReXyHjaUh4MF6qV99tMsipzPAKeB",JUPyiwrYJFskUPiHa7hkeR8VUtAeFoSYbKedZNsDvCN:"212yg3Ev7khq4p1mESFGenF4nWefmkbC8f7mHM68j4vg",DezXAZ8z7PnrnRJjz3wXBoRgixCa6xjnB7YaB1pPB263:"61Ndjv9392jPRVGALdYgjjxGYa6TT6Gn2WLDSsmugE6U",jtojtomepa8beP8AuQc6eXt5FriJwfFMwQx2v2f9mCL:"2c9qVh8RQ6j2E2VdAEcCrRXMrd6g1vvPNZvAR6sbaGWo"},J_=["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"],x_=["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 Es}from"child_process";import{spawnSync as K}from"node:child_process";var _s=t((_,e=!1,E=!1)=>{E?e?(K(`mkdir /tmp/${_}-agave-mod`,{shell:!0,stdio:"inherit"}),K(`cd /tmp/${_}-agave-mod`,{shell:!0,stdio:"inherit"}),K(`git clone https://github.com/gabrielhicks/agave.git --recurse-submodules /tmp/${_}-agave-mod`,{shell:!0,stdio:"inherit"}),K(`git -C /tmp/${_}-agave-mod checkout ${_}-mod`,{shell:!0,stdio:"inherit"}),K(`git -C /tmp/${_}-agave-mod submodule update --init --recursive`,{shell:!0,stdio:"inherit"}),K(`CI_COMMIT=$(git -C /tmp/${_}-agave-mod rev-parse HEAD) /tmp/${_}-agave-mod/scripts/cargo-install-all.sh /home/solv/.local/share/solana/install/releases/${_}-agave-mod`,{shell:!0,stdio:"inherit"}),K("sudo rm -rf /home/solv/.local/share/solana/install/active_release",{shell:!0,stdio:"inherit"}),K(`sudo ln -sfn /home/solv/.local/share/solana/install/releases/${_}-agave-mod /home/solv/.local/share/solana/install/active_release`,{shell:!0,stdio:"inherit"}),K(`sudo rm -rf /tmp/${_}-agave-mod`,{shell:!0,stdio:"inherit"})):(K(`mkdir /tmp/${_}-agave`,{shell:!0,stdio:"inherit"}),K(`cd /tmp/${_}-agave`,{shell:!0,stdio:"inherit"}),K(`git clone https://github.com/anza-xyz/agave.git --recurse-submodules /tmp/${_}-agave`,{shell:!0,stdio:"inherit"}),K(`git -C /tmp/${_}-agave checkout v${_}`,{shell:!0,stdio:"inherit"}),K(`git -C /tmp/${_}-agave submodule update --init --recursive`,{shell:!0,stdio:"inherit"}),K(`CI_COMMIT=$(git -C /tmp/${_}-agave rev-parse HEAD) /tmp/${_}-agave/scripts/cargo-install-all.sh /home/solv/.local/share/solana/install/releases/${_}-agave`,{shell:!0,stdio:"inherit"}),K("sudo rm -rf /home/solv/.local/share/solana/install/active_release",{shell:!0,stdio:"inherit"}),K(`sudo ln -sfn /home/solv/.local/share/solana/install/releases/${_}-agave /home/solv/.local/share/solana/install/active_release`,{shell:!0,stdio:"inherit"}),K(`sudo rm -rf /tmp/${_}-agave`,{shell:!0,stdio:"inherit"})):e?K(`sh -c "$(curl --netrc-optional -sSfL https://raw.githubusercontent.com/gabrielhicks/agave/${_}-mod/installer)"`,{shell:!0,stdio:"inherit"}):K(`sh -c "$(curl --netrc-optional -sSfL https://release.anza.xyz/${_}/install)"`,{shell:!0,stdio:"inherit"})},"installAgave"),Q_=_s;var Kt="agave-validator",es=t(()=>{try{return Kt}catch(_){return console.error(_),Kt}},"getSolanaCLI"),T_=es;var s_="3.0.10",e_="3.0.10",Re="",Ce="3.0.10",B_="3.0.10",d_="",JE="3.0.10",ce="3.0.10",g_="_patch1",Gt="3.0.10",y_="3.0.10";var kt="20.17.0",q_="0.802.30008",D_="0.802.30008";var ve=t(async(_,e=!1,E=!1)=>{let o=Re,n=`${`v${_}`}${o}`;Q_(n,e,E)},"updateVersion"),de=t(async(_,e=!1,E=10)=>{let o=T_(),i=`${o} --ledger ${f} exit --max-delinquent-stake ${_} --monitor --min-idle-time ${E}`;e&&(i=`${o} --ledger ${f} exit --max-delinquent-stake ${_} --min-idle-time ${E}`),Es(i,{shell:!0,stdio:"inherit"})},"monitorUpdate");import Bo from"chalk";var K_;(function(_){_.EN="en",_.JA="ja"})(K_||(K_={}));var Vt;(function(_){_[_.DOUBLE=0]="DOUBLE",_[_.SINGLE=1]="SINGLE",_[_.TRIPLE=2]="TRIPLE"})(Vt||(Vt={}));var bt;(function(_){_.SINGLE="single",_.DOUBLE="double",_.TRIPLE="triple"})(bt||(bt={}));var P_;(function(_){_.MAINNET="mainnet-beta",_.TESTNET="testnet"})(P_||(P_={}));var wt;(function(_){_.VALIDATOR="validator",_.RPC="rpc"})(wt||(wt={}));var vt;(function(_){_.SOLANA="solana",_.JITO="jito",_.AGAVE="agave",_.FIREDANCER="firedancer"})(vt||(vt={}));var Ht;(function(_){_.CO_HOST_RELAYER="co-host-relayer",_.SEPARATED_RELAYER="separated-relayer",_.WITHOUT_RELAYER="without-relayer"})(Ht||(Ht={}));var Yt;(function(_){_.FIREDANCER="firedancer",_.FRANKENDANCER="frankendancer"})(Yt||(Yt={}));var He;(function(_){_[_.TESTNET_VALIDATOR=0]="TESTNET_VALIDATOR",_[_.MAINNET_VALIDATOR=1]="MAINNET_VALIDATOR",_[_.RPC_NODE=2]="RPC_NODE"})(He||(He={}));var Ye;(function(_){_.SOLANA_CLIENT="SolanaClient",_.JITO_MEV="JitoMev",_.FIREDANCER="Firedancer"})(Ye||(Ye={}));var Qt=!1,qt=!1,$t=!1,Wt=!1,Xt=!1,jt=!1,W={ID:"solv",LANG:K_.EN,USERNAME:"solv",TESTNET_SOLANA_VERSION:"3.0.10",MAINNET_SOLANA_VERSION:"3.0.10",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},H={ROOT:"/home/solv",AUTHORIZED_KEYS:"/home/solv/.ssh/authorized_keys"},M={ROOT:"/mnt",ACCOUNTS:"/mnt/accounts",LEDGER:"/mnt/ledger",SNAPSHOTS:"/mnt/snapshots"},r_={LOG:"solana-validator.log",STARTUP_SCRIPT:"start-validator.sh",CONFIG:"solv.config.json",JITO_CONFIG:"jito.config.json"},g={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"},y={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"},p=t((_=H.ROOT)=>{let e=_===H.ROOT?H.ROOT:_,E=`${e}/${y.MAINNET_VALIDATOR_KEY}`,o=`${e}/${y.MAINNET_VALIDATOR_VOTE_KEY}`,i=`${e}/${y.MAINNET_VALITATOR_AUTHORITY_KEY}`,n=`${e}/${y.TESTNET_VALIDATOR_KEY}`,T=`${e}/${y.TESTNET_VALIDATOR_VOTE_KEY}`,s=`${e}/${y.TESTNET_VALITATOR_AUTHORITY_KEY}`;return{mainnetValidatorKey:E,mainnetValidatorVoteKey:o,mainnetValidatorAuthorityKey:i,testnetValidatorKey:n,testnetValidatorVoteKey:T,testnetValidatorAuthorityKey:s}},"getAllKeyPaths"),f_=t((_=!0)=>{let e=_?`${H.ROOT}/${y.TESTNET_VALIDATOR_KEY}`:`${H.ROOT}/${y.MAINNET_VALIDATOR_KEY}`,E=_?`${H.ROOT}/${y.TESTNET_VALIDATOR_VOTE_KEY}`:`${H.ROOT}/${y.MAINNET_VALIDATOR_VOTE_KEY}`,o=`${H.ROOT}/${r_.LOG}`,i=M.ACCOUNTS,n=M.LEDGER,T=M.SNAPSHOTS,s=`${H.ROOT}/${r_.STARTUP_SCRIPT}`;return{identity:e,voteAccount:E,log:o,accounts:i,ledger:n,scriptPath:s,snapshots:T}},"startupScriptPaths");var t_="So1vW4Bm6ZURzJJHZy1JpsjoVY68z4cDgF4tTLwYMa5",xE="7tAfLKgRVd9eywSQPuMbVNd51KGkaveZQuTjapL74Fwv",zt="EiwSTx1Z2uJATDut682U7xzzquFR4UpQJUij3wSxVoSV",Zt=9,S_="ELSoL1owwMWQ9foMsutweCsMKbTPVBD9pFqxQGidTaMC",_o="So11111111111111111111111111111111111111112",eo="EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v",Eo="CvB1ztJvpYQPvdPBePtRzjL4aQidjydtUz61NWgcgQtP",Jt;(function(_){_[_.ELSOL=S_]="ELSOL",_[_.SOL=_o]="SOL",_[_.USDC=eo]="USDC",_[_.EPCT=Eo]="EPCT"})(Jt||(Jt={}));var xt;(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"})(xt||(xt={}));var xC={[_o]:9,[S_]:9,[eo]:6,[Eo]:6},Je="/home/solv/currentEpoch.json";var xe="https://api.testnet.solana.com";import{spawnSync as QE}from"child_process";var to=t(()=>{QE("pnpm add -g pnpm",{shell:!0,stdio:"inherit"});let _=W.NODE_VERSION;QE(`pnpm env use ${_} --global`,{shell:!0,stdio:"inherit"}),QE("pnpm add -g @gabrielhicks/solv",{shell:!0,stdio:"inherit"})},"updateSolv");import{spawnSync as Y}from"child_process";var Qe=t((_,e=!1,E=!1)=>{Y("sudo apt install --only-upgrade doublezero doublezero-solana -y",{shell:!0,stdio:"inherit"}),Y("sudo systemctl restart doublezerod",{shell:!0,stdio:"inherit"}),E?e?Y(`sh -c "$(curl --netrc-optional -sSfL https://raw.githubusercontent.com/gabrielhicks/jito-solana/${_}/installer)"`,{shell:!0,stdio:"inherit"}):(Y(`mkdir /tmp/${_}`,{shell:!0,stdio:"inherit"}),Y(`cd /tmp/${_}`,{shell:!0,stdio:"inherit"}),Y(`git clone https://github.com/jito-foundation/jito-solana.git --recurse-submodules /tmp/${_}`,{shell:!0,stdio:"inherit"}),Y(`git -C /tmp/${_} checkout ${_}`,{shell:!0,stdio:"inherit"}),Y(`git -C /tmp/${_} submodule update --init --recursive`,{shell:!0,stdio:"inherit"}),Y(`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"}),Y("sudo rm -rf /home/solv/.local/share/solana/install/active_release",{shell:!0,stdio:"inherit"}),Y(`sudo ln -sfn /home/solv/.local/share/solana/install/releases/${_} /home/solv/.local/share/solana/install/active_release`,{shell:!0,stdio:"inherit"}),Y(`sudo rm -rf /tmp/${_}`,{shell:!0,stdio:"inherit"})):e?Y(`sh -c "$(curl --netrc-optional -sSfL https://raw.githubusercontent.com/gabrielhicks/jito-solana/${_}/installer)"`,{shell:!0,stdio:"inherit"}):Y(`sh -c "$(curl --netrc-optional -sSfL https://release.jito.wtf/${_}/install)"`,{shell:!0,stdio:"inherit"})},"jitoUpdate");import{readFile as ts,writeFile as os}from"fs/promises";import{homedir as is}from"os";var G_=t(async _=>{let E=`${is()}/${r_.JITO_CONFIG}`,i={...JSON.parse(await ts(E,"utf8")),..._},n=JSON.stringify(i,null,2);await os(E,n),console.log(`Updated ${E} with new values.`)},"updateJitoSolvConfig");import{spawnSync as oo}from"child_process";import ns from"inquirer";var io=t((_,e=!0)=>{let E=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";oo(`solana config set --url ${e?"testnet":"mainnet-beta"} --keypair ${E}`,{shell:!0,stdio:"inherit"});let n=`solana vote-update-commission ${o} ${_} ${E} --keypair ${E}`;oo(n,{shell:!0,stdio:"inherit"})},"updateCommission"),no=t(async()=>await ns.prompt([{type:"number",name:"commission",message:"Enter new commission",default:7}]),"updateCommissionAsk");import{execAsync as Ne}from"@skeet-framework/utils";import Ts from"chalk";import ss from"inquirer";var To=t(async()=>{let _=await ss.prompt([{name:"ip",type:"input",message:"Enter your IP address to allow access to RPC NODE:",default:"1.2.3.4"}]);await Ne("sudo ufw delete allow 8899/udp"),await Ne("sudo ufw delete allow 8899/tcp"),await Ne(`sudo ufw allow from ${_.ip} to any port 8899 proto tcp`),await Ne(`sudo ufw allow from ${_.ip} to any port 8899 proto udp`),await Ne("sudo ufw reload"),console.log(Ts.white("\u2714\uFE0F Firewall updated!"))},"updateFirewall");var rs=t(()=>ft,"getSolvVersion"),$_=rs;import{readFile as Rs,writeFile as Cs}from"fs/promises";import{existsAsync as cs}from"@skeet-framework/utils";var qE;(function(_){_.EN="en",_.JA="ja"})(qE||(qE={}));var Oc=Object.values(qE),O;(function(_){_.MAINNET="mainnet-beta",_.TESTNET="testnet"})(O||(O={}));var so=Object.values(O),D;(function(_){_.RPC="rpc",_.VALIDATOR="validator"})(D||(D={}));var ro=Object.values(D),F;(function(_){_.SOLANA="solana",_.AGAVE="agave",_.JITO="jito",_.FRANKENDANCER="frankendancer",_.BAM="bam",_.NONE="none"})(F||(F={}));var lc=Object.values(F).filter(_=>_!=="none"),v;(function(_){_.AGAVE="agave",_.JITO="jito",_.NONE="none"})(v||(v={}));var So=Object.values(v).filter(_=>_!=="none"),X;(function(_){_.SINGLE="single",_.DOUBLE="double",_.TRIPLE="triple"})(X||(X={}));var as={NETWORK:O.TESTNET,NODE_TYPE:D.RPC,VALIDATOR_TYPE:F.NONE,RPC_TYPE:v.AGAVE,MNT_DISK_TYPE:X.TRIPLE,TESTNET_SOLANA_VERSION:s_,MAINNET_SOLANA_VERSION:e_,NODE_VERSION:kt,TESTNET_DELINQUENT_STAKE:10,MAINNET_DELINQUENT_STAKE:5,COMMISSION:5,DEFAULT_VALIDATOR_VOTE_ACCOUNT_PUBKEY:pt,STAKE_ACCOUNTS:[],HARVEST_ACCOUNT:"",IS_MEV_MODE:!1,RPC_URL:ut,KEYPAIR_PATH:"",DISCORD_WEBHOOK_URL:"",AUTO_UPDATE:!1,AUTO_RESTART:!1,IS_DUMMY:!1,API_KEY:"",LEDGER_PATH:f,ACCOUNTS_PATH:I_,SNAPSHOTS_PATH:n_,MOD:!1},N_=as;import{homedir as ds}from"os";var Ns=t(async()=>{let e=`${ds()}/${ke}`;return await cs(e)?JSON.parse(await Rs(e,"utf-8")):(console.log("Creating default config file at",e),await Cs(e,JSON.stringify(N_,null,2)),N_)},"readConfig"),b=Ns;import Os from"node-fetch";var a_=t(async _=>{try{let e=await b();if(e.DISCORD_WEBHOOK_URL==="")throw new Error(`DISCORD_WEBHOOK_URL is empty
|
|
2
|
+
var QT=Object.defineProperty;var t=(_,e)=>QT(_,"name",{value:e,configurable:!0});import"dotenv/config";import{Command as NC}from"commander";var ft="5.5.7";var Ut={name:"@gabrielhicks/solv",version:ft,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"],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 Ge=Ut.version;var ae="https://validators.solutions";var ke="solv4.config.json";var m_="identity.json",h_="unstaked-identity.json",At="relayer-keypair.json",$T="mainnet-validator-keypair.json",WT="mainnet-vote-account-keypair.json",XT="mainnet-authority-keypair.json",jT="testnet-validator-keypair.json",zT="testnet-vote-account-keypair.json",ZT="testnet-authority-keypair.json",G="/home/solv",U=`${G}/${m_}`,LC=`${G}/${h_}`,w=`${G}/${$T}`,Y_=`${G}/${WT}`,MC=`${G}/${XT}`,u=`${G}/${jT}`,F_=`${G}/${zT}`,pC=`${G}/${ZT}`,V=`${G}/solana-validator.log`,i_=G+"/start-validator.sh",f="/mnt/ledger",I_="/mnt/accounts",n_="/mnt/snapshots",Lt="solana-validator",Mt="agave-validator",pt="ELLB9W7ZCwRCV3FzWcCWoyKP6NjZJKArLyGtkqefnHcG";var Ve=3;var ut="https://api.mainnet-beta.solana.com",mt="https://verify.validators.solutions/solv-migrate",ht="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 Bt=Object.values(HE),be="So11111111111111111111111111111111111111112",we="EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v",YE="ELSoL1owwMWQ9foMsutweCsMKbTPVBD9pFqxQGidTaMC";var gt="SOLV420",yt={So11111111111111111111111111111111111111112:"4Vwkpk3DTVrTGnUQTazsgQ1wxtU9QwZTmAXDaQRHg9Ra",EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v:"J8sqx9ZEoPRqboFAXK3c1R38zm41tRNJgUn2FzyeYQDj",J1toso1uCk3RLmjorhTtrVwY9HJ7X8V9yYac6Y7kGCPn:"HPj87TFMPZfm5nk1HmTH9a382RXn7h9oWftiFr3Xs12a",mSoLzYCxHdYgdzU16g5QSh3i5K3z3KZK7ytfqcJm7So:"8CX5tE9KvJ59HcoXwWf6tCZoRuz2JFSmunnbKC1ryaK9",bSo13r4TkiE4KumL71LsHTPpL2euBYLFx6h9HP3piy1:"782MdvLby3VfvKdfDYn9tX3DfNAtg7TcytNNFuepcoMH",CvB1ztJvpYQPvdPBePtRzjL4aQidjydtUz61NWgcgQtP:"BhR2L6J5q3xF1TxReXyHjaUh4MF6qV99tMsipzPAKeB",JUPyiwrYJFskUPiHa7hkeR8VUtAeFoSYbKedZNsDvCN:"212yg3Ev7khq4p1mESFGenF4nWefmkbC8f7mHM68j4vg",DezXAZ8z7PnrnRJjz3wXBoRgixCa6xjnB7YaB1pPB263:"61Ndjv9392jPRVGALdYgjjxGYa6TT6Gn2WLDSsmugE6U",jtojtomepa8beP8AuQc6eXt5FriJwfFMwQx2v2f9mCL:"2c9qVh8RQ6j2E2VdAEcCrRXMrd6g1vvPNZvAR6sbaGWo"},J_=["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"],x_=["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 Es}from"child_process";import{spawnSync as K}from"node:child_process";var _s=t((_,e=!1,E=!1)=>{E?e?(K(`mkdir /tmp/${_}-agave-mod`,{shell:!0,stdio:"inherit"}),K(`cd /tmp/${_}-agave-mod`,{shell:!0,stdio:"inherit"}),K(`git clone https://github.com/gabrielhicks/agave.git --recurse-submodules /tmp/${_}-agave-mod`,{shell:!0,stdio:"inherit"}),K(`git -C /tmp/${_}-agave-mod checkout ${_}-mod`,{shell:!0,stdio:"inherit"}),K(`git -C /tmp/${_}-agave-mod submodule update --init --recursive`,{shell:!0,stdio:"inherit"}),K(`CI_COMMIT=$(git -C /tmp/${_}-agave-mod rev-parse HEAD) /tmp/${_}-agave-mod/scripts/cargo-install-all.sh /home/solv/.local/share/solana/install/releases/${_}-agave-mod`,{shell:!0,stdio:"inherit"}),K("sudo rm -rf /home/solv/.local/share/solana/install/active_release",{shell:!0,stdio:"inherit"}),K(`sudo ln -sfn /home/solv/.local/share/solana/install/releases/${_}-agave-mod /home/solv/.local/share/solana/install/active_release`,{shell:!0,stdio:"inherit"}),K(`sudo rm -rf /tmp/${_}-agave-mod`,{shell:!0,stdio:"inherit"})):(K(`mkdir /tmp/${_}-agave`,{shell:!0,stdio:"inherit"}),K(`cd /tmp/${_}-agave`,{shell:!0,stdio:"inherit"}),K(`git clone https://github.com/anza-xyz/agave.git --recurse-submodules /tmp/${_}-agave`,{shell:!0,stdio:"inherit"}),K(`git -C /tmp/${_}-agave checkout v${_}`,{shell:!0,stdio:"inherit"}),K(`git -C /tmp/${_}-agave submodule update --init --recursive`,{shell:!0,stdio:"inherit"}),K(`CI_COMMIT=$(git -C /tmp/${_}-agave rev-parse HEAD) /tmp/${_}-agave/scripts/cargo-install-all.sh /home/solv/.local/share/solana/install/releases/${_}-agave`,{shell:!0,stdio:"inherit"}),K("sudo rm -rf /home/solv/.local/share/solana/install/active_release",{shell:!0,stdio:"inherit"}),K(`sudo ln -sfn /home/solv/.local/share/solana/install/releases/${_}-agave /home/solv/.local/share/solana/install/active_release`,{shell:!0,stdio:"inherit"}),K(`sudo rm -rf /tmp/${_}-agave`,{shell:!0,stdio:"inherit"})):e?K(`sh -c "$(curl --netrc-optional -sSfL https://raw.githubusercontent.com/gabrielhicks/agave/${_}-mod/installer)"`,{shell:!0,stdio:"inherit"}):K(`sh -c "$(curl --netrc-optional -sSfL https://release.anza.xyz/${_}/install)"`,{shell:!0,stdio:"inherit"})},"installAgave"),Q_=_s;var Kt="agave-validator",es=t(()=>{try{return Kt}catch(_){return console.error(_),Kt}},"getSolanaCLI"),T_=es;var s_="3.0.10",e_="3.0.10",Re="",Ce="3.0.10",B_="3.0.10",d_="",JE="3.0.10",ce="3.0.10",g_="_patch1",Gt="3.0.10",y_="3.0.10";var kt="20.17.0",q_="0.802.30008",D_="0.802.30008";var ve=t(async(_,e=!1,E=!1)=>{let o=Re,n=`${`v${_}`}${o}`;Q_(n,e,E)},"updateVersion"),de=t(async(_,e=!1,E=10)=>{let o=T_(),i=`${o} --ledger ${f} exit --max-delinquent-stake ${_} --monitor --min-idle-time ${E}`;e&&(i=`${o} --ledger ${f} exit --max-delinquent-stake ${_} --min-idle-time ${E}`),Es(i,{shell:!0,stdio:"inherit"})},"monitorUpdate");import Bo from"chalk";var K_;(function(_){_.EN="en",_.JA="ja"})(K_||(K_={}));var Vt;(function(_){_[_.DOUBLE=0]="DOUBLE",_[_.SINGLE=1]="SINGLE",_[_.TRIPLE=2]="TRIPLE"})(Vt||(Vt={}));var bt;(function(_){_.SINGLE="single",_.DOUBLE="double",_.TRIPLE="triple"})(bt||(bt={}));var P_;(function(_){_.MAINNET="mainnet-beta",_.TESTNET="testnet"})(P_||(P_={}));var wt;(function(_){_.VALIDATOR="validator",_.RPC="rpc"})(wt||(wt={}));var vt;(function(_){_.SOLANA="solana",_.JITO="jito",_.AGAVE="agave",_.FIREDANCER="firedancer"})(vt||(vt={}));var Ht;(function(_){_.CO_HOST_RELAYER="co-host-relayer",_.SEPARATED_RELAYER="separated-relayer",_.WITHOUT_RELAYER="without-relayer"})(Ht||(Ht={}));var Yt;(function(_){_.FIREDANCER="firedancer",_.FRANKENDANCER="frankendancer"})(Yt||(Yt={}));var He;(function(_){_[_.TESTNET_VALIDATOR=0]="TESTNET_VALIDATOR",_[_.MAINNET_VALIDATOR=1]="MAINNET_VALIDATOR",_[_.RPC_NODE=2]="RPC_NODE"})(He||(He={}));var Ye;(function(_){_.SOLANA_CLIENT="SolanaClient",_.JITO_MEV="JitoMev",_.FIREDANCER="Firedancer"})(Ye||(Ye={}));var Qt=!1,qt=!0,$t=!1,Wt=!1,Xt=!1,jt=!1,W={ID:"solv",LANG:K_.EN,USERNAME:"solv",TESTNET_SOLANA_VERSION:"3.0.10",MAINNET_SOLANA_VERSION:"3.0.10",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},H={ROOT:"/home/solv",AUTHORIZED_KEYS:"/home/solv/.ssh/authorized_keys"},M={ROOT:"/mnt",ACCOUNTS:"/mnt/accounts",LEDGER:"/mnt/ledger",SNAPSHOTS:"/mnt/snapshots"},r_={LOG:"solana-validator.log",STARTUP_SCRIPT:"start-validator.sh",CONFIG:"solv.config.json",JITO_CONFIG:"jito.config.json"},g={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"},y={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"},p=t((_=H.ROOT)=>{let e=_===H.ROOT?H.ROOT:_,E=`${e}/${y.MAINNET_VALIDATOR_KEY}`,o=`${e}/${y.MAINNET_VALIDATOR_VOTE_KEY}`,i=`${e}/${y.MAINNET_VALITATOR_AUTHORITY_KEY}`,n=`${e}/${y.TESTNET_VALIDATOR_KEY}`,T=`${e}/${y.TESTNET_VALIDATOR_VOTE_KEY}`,s=`${e}/${y.TESTNET_VALITATOR_AUTHORITY_KEY}`;return{mainnetValidatorKey:E,mainnetValidatorVoteKey:o,mainnetValidatorAuthorityKey:i,testnetValidatorKey:n,testnetValidatorVoteKey:T,testnetValidatorAuthorityKey:s}},"getAllKeyPaths"),f_=t((_=!0)=>{let e=_?`${H.ROOT}/${y.TESTNET_VALIDATOR_KEY}`:`${H.ROOT}/${y.MAINNET_VALIDATOR_KEY}`,E=_?`${H.ROOT}/${y.TESTNET_VALIDATOR_VOTE_KEY}`:`${H.ROOT}/${y.MAINNET_VALIDATOR_VOTE_KEY}`,o=`${H.ROOT}/${r_.LOG}`,i=M.ACCOUNTS,n=M.LEDGER,T=M.SNAPSHOTS,s=`${H.ROOT}/${r_.STARTUP_SCRIPT}`;return{identity:e,voteAccount:E,log:o,accounts:i,ledger:n,scriptPath:s,snapshots:T}},"startupScriptPaths");var t_="So1vW4Bm6ZURzJJHZy1JpsjoVY68z4cDgF4tTLwYMa5",xE="7tAfLKgRVd9eywSQPuMbVNd51KGkaveZQuTjapL74Fwv",zt="EiwSTx1Z2uJATDut682U7xzzquFR4UpQJUij3wSxVoSV",Zt=9,S_="ELSoL1owwMWQ9foMsutweCsMKbTPVBD9pFqxQGidTaMC",_o="So11111111111111111111111111111111111111112",eo="EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v",Eo="CvB1ztJvpYQPvdPBePtRzjL4aQidjydtUz61NWgcgQtP",Jt;(function(_){_[_.ELSOL=S_]="ELSOL",_[_.SOL=_o]="SOL",_[_.USDC=eo]="USDC",_[_.EPCT=Eo]="EPCT"})(Jt||(Jt={}));var xt;(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"})(xt||(xt={}));var xC={[_o]:9,[S_]:9,[eo]:6,[Eo]:6},Je="/home/solv/currentEpoch.json";var xe="https://api.testnet.solana.com";import{spawnSync as QE}from"child_process";var to=t(()=>{QE("pnpm add -g pnpm",{shell:!0,stdio:"inherit"});let _=W.NODE_VERSION;QE(`pnpm env use ${_} --global`,{shell:!0,stdio:"inherit"}),QE("pnpm add -g @gabrielhicks/solv",{shell:!0,stdio:"inherit"})},"updateSolv");import{spawnSync as Y}from"child_process";var Qe=t((_,e=!1,E=!1)=>{Y("sudo apt install --only-upgrade doublezero doublezero-solana -y",{shell:!0,stdio:"inherit"}),Y("sudo systemctl restart doublezerod",{shell:!0,stdio:"inherit"}),E?e?Y(`sh -c "$(curl --netrc-optional -sSfL https://raw.githubusercontent.com/gabrielhicks/jito-solana/${_}/installer)"`,{shell:!0,stdio:"inherit"}):(Y(`mkdir /tmp/${_}`,{shell:!0,stdio:"inherit"}),Y(`cd /tmp/${_}`,{shell:!0,stdio:"inherit"}),Y(`git clone https://github.com/jito-foundation/jito-solana.git --recurse-submodules /tmp/${_}`,{shell:!0,stdio:"inherit"}),Y(`git -C /tmp/${_} checkout ${_}`,{shell:!0,stdio:"inherit"}),Y(`git -C /tmp/${_} submodule update --init --recursive`,{shell:!0,stdio:"inherit"}),Y(`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"}),Y("sudo rm -rf /home/solv/.local/share/solana/install/active_release",{shell:!0,stdio:"inherit"}),Y(`sudo ln -sfn /home/solv/.local/share/solana/install/releases/${_} /home/solv/.local/share/solana/install/active_release`,{shell:!0,stdio:"inherit"}),Y(`sudo rm -rf /tmp/${_}`,{shell:!0,stdio:"inherit"})):e?Y(`sh -c "$(curl --netrc-optional -sSfL https://raw.githubusercontent.com/gabrielhicks/jito-solana/${_}/installer)"`,{shell:!0,stdio:"inherit"}):Y(`sh -c "$(curl --netrc-optional -sSfL https://release.jito.wtf/${_}/install)"`,{shell:!0,stdio:"inherit"})},"jitoUpdate");import{readFile as ts,writeFile as os}from"fs/promises";import{homedir as is}from"os";var G_=t(async _=>{let E=`${is()}/${r_.JITO_CONFIG}`,i={...JSON.parse(await ts(E,"utf8")),..._},n=JSON.stringify(i,null,2);await os(E,n),console.log(`Updated ${E} with new values.`)},"updateJitoSolvConfig");import{spawnSync as oo}from"child_process";import ns from"inquirer";var io=t((_,e=!0)=>{let E=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";oo(`solana config set --url ${e?"testnet":"mainnet-beta"} --keypair ${E}`,{shell:!0,stdio:"inherit"});let n=`solana vote-update-commission ${o} ${_} ${E} --keypair ${E}`;oo(n,{shell:!0,stdio:"inherit"})},"updateCommission"),no=t(async()=>await ns.prompt([{type:"number",name:"commission",message:"Enter new commission",default:7}]),"updateCommissionAsk");import{execAsync as Ne}from"@skeet-framework/utils";import Ts from"chalk";import ss from"inquirer";var To=t(async()=>{let _=await ss.prompt([{name:"ip",type:"input",message:"Enter your IP address to allow access to RPC NODE:",default:"1.2.3.4"}]);await Ne("sudo ufw delete allow 8899/udp"),await Ne("sudo ufw delete allow 8899/tcp"),await Ne(`sudo ufw allow from ${_.ip} to any port 8899 proto tcp`),await Ne(`sudo ufw allow from ${_.ip} to any port 8899 proto udp`),await Ne("sudo ufw reload"),console.log(Ts.white("\u2714\uFE0F Firewall updated!"))},"updateFirewall");var rs=t(()=>ft,"getSolvVersion"),$_=rs;import{readFile as Rs,writeFile as Cs}from"fs/promises";import{existsAsync as cs}from"@skeet-framework/utils";var qE;(function(_){_.EN="en",_.JA="ja"})(qE||(qE={}));var Oc=Object.values(qE),O;(function(_){_.MAINNET="mainnet-beta",_.TESTNET="testnet"})(O||(O={}));var so=Object.values(O),D;(function(_){_.RPC="rpc",_.VALIDATOR="validator"})(D||(D={}));var ro=Object.values(D),F;(function(_){_.SOLANA="solana",_.AGAVE="agave",_.JITO="jito",_.FRANKENDANCER="frankendancer",_.BAM="bam",_.NONE="none"})(F||(F={}));var lc=Object.values(F).filter(_=>_!=="none"),v;(function(_){_.AGAVE="agave",_.JITO="jito",_.NONE="none"})(v||(v={}));var So=Object.values(v).filter(_=>_!=="none"),X;(function(_){_.SINGLE="single",_.DOUBLE="double",_.TRIPLE="triple"})(X||(X={}));var as={NETWORK:O.TESTNET,NODE_TYPE:D.RPC,VALIDATOR_TYPE:F.NONE,RPC_TYPE:v.AGAVE,MNT_DISK_TYPE:X.TRIPLE,TESTNET_SOLANA_VERSION:s_,MAINNET_SOLANA_VERSION:e_,NODE_VERSION:kt,TESTNET_DELINQUENT_STAKE:10,MAINNET_DELINQUENT_STAKE:5,COMMISSION:5,DEFAULT_VALIDATOR_VOTE_ACCOUNT_PUBKEY:pt,STAKE_ACCOUNTS:[],HARVEST_ACCOUNT:"",IS_MEV_MODE:!1,RPC_URL:ut,KEYPAIR_PATH:"",DISCORD_WEBHOOK_URL:"",AUTO_UPDATE:!1,AUTO_RESTART:!1,IS_DUMMY:!1,API_KEY:"",LEDGER_PATH:f,ACCOUNTS_PATH:I_,SNAPSHOTS_PATH:n_,MOD:!1},N_=as;import{homedir as ds}from"os";var Ns=t(async()=>{let e=`${ds()}/${ke}`;return await cs(e)?JSON.parse(await Rs(e,"utf-8")):(console.log("Creating default config file at",e),await Cs(e,JSON.stringify(N_,null,2)),N_)},"readConfig"),b=Ns;import Os from"node-fetch";var a_=t(async _=>{try{let e=await b();if(e.DISCORD_WEBHOOK_URL==="")throw new Error(`DISCORD_WEBHOOK_URL is empty
|
|
3
3
|
Please set DISCORD_WEBHOOK_URL in .env`);let E={content:_,username:"\u{1FA84} Solv Notifier"};return(await Os(e.DISCORD_WEBHOOK_URL,{method:"POST",body:JSON.stringify(E),headers:{"Content-Type":"application/json"}})).status===204}catch{return console.log({error:`Skeet sendDiscord Error - ${_}`}),!1}},"sendDiscord");import{spawnSync as Ps}from"child_process";import{Connection as ao}from"@solana/web3.js";var Oe=t(async(_,e,E=!1,o=200)=>{let i={pubkey:e,isActive:!1,reason:""};try{let n=E?new ao("https://api.testnet.solana.com"):new ao(_,"confirmed"),T=await n.getVoteAccounts(),s=T.current.find(R=>R.votePubkey===e);if(!s)return T.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(T=await n.getVoteAccounts(),s=T.current.find(R=>R.votePubkey===e),!s)return i.isActive=!1,i.reason="Validator is not found in the current list.",i;let r=s.lastVote,a=await n.getSlot()-r;return a>o?(i.isActive=!1,i.reason=`Validator has not voted for ${a} 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 ls}from"child_process";var m=t(_=>{let e=`solana address --keypair ${_}`,{stdout:E}=ls(e,{shell:!0,stdio:"pipe"});return E.toString().trim()},"getSolanaAddress");var Fs=t(_=>new Promise(e=>setTimeout(e,_)),"sleep"),J=Fs;import{sendDiscord as Is}from"@skeet-framework/utils";var Ro=30,Ds=t(async _=>{try{let e=_.NETWORK===O.TESTNET,{mainnetValidatorVoteKey:E,testnetValidatorVoteKey:o}=p(),n=m(e?o:E),T=await Oe(_.RPC_URL,n,e),s=0;for(;!T.isActive;){if(s>=Ro){console.log("Max retries reached, exiting...");let r=`\u26A0\uFE0F Validator is not active for ${Ro} minutes!
|
|
4
4
|
Account: ${T.pubkey}
|
|
5
5
|
Reason: ${T.reason}
|
|
6
6
|
Message: Max retries reached, exiting catchup check...
|
|
7
7
|
Please check your validator node \u{1F477}\u200D\u2640\uFE0F`;return await Is(r),!1}console.log("Waiting for validator to catch up..."),await J(60*1e3),T=await Oe(_.RPC_URL,n,e),s++}return!0}catch(e){return console.log("Error in waitCatchup:",e),!1}},"waitCatchup"),Co=Ds;var fs=t(async _=>{let e=_.NETWORK===O.MAINNET,E=_.VALIDATOR_TYPE===F.FRANKENDANCER,o=_.VALIDATOR_TYPE===F.BAM,{mainnetValidatorKey:i,testnetValidatorKey:n}=p(),T=e?i:n,s=!1;E?s=e?$t:Wt:o?s=e?Xt:jt:s=e?Qt:qt,s=s&&_.AUTO_RESTART;let r=m(T),S=`**${r}** updated solv to **${$_()}**`;if(await a_(S),s){let a=`Restarting **${r}**
|
|
8
|
-
_ _`;await a_(a);try{Ps("solv update && solv update --config && solv update -b",{stdio:"inherit",shell:!0})}catch(l){let d=`Error restarting **${r}**: ${l?.message||"Unknown error"}`;return await a_(d),!1}let R=Math.floor(Date.now()/1e3),c=`**${r}** has restarted, catching up...
|
|
8
|
+
_ _`;await a_(a);try{Ps("solv update && solv update --config && solv update --startup && sudo systemctl daemon-reload && solv update -b",{stdio:"inherit",shell:!0})}catch(l){let d=`Error restarting **${r}**: ${l?.message||"Unknown error"}`;return await a_(d),!1}let R=Math.floor(Date.now()/1e3),c=`**${r}** has restarted, catching up...
|
|
9
9
|
at: <t:${R}> (${R})
|
|
10
10
|
_ _`;await a_(c),await J(180*1e3);let C=await Co(_);if(C){let d=Math.floor(Date.now()/1e3)-R,N=Math.floor(d/60),A=d%60,P=N>0?`${N}m ${A}s`:`${A}s`,L=`**${r}** has caught up!
|
|
11
11
|
at: <t:${R}> (${R})
|
|
@@ -5821,7 +5821,7 @@ exec agave-validator \\
|
|
|
5821
5821
|
--limit-ledger-size 50000000 \\
|
|
5822
5822
|
--block-production-method central-scheduler-greedy \\
|
|
5823
5823
|
--maximum-full-snapshots-to-retain 1 \\
|
|
5824
|
-
--maximum-incremental-snapshots-to-retain
|
|
5824
|
+
--maximum-incremental-snapshots-to-retain 2 \\
|
|
5825
5825
|
`,"startTestnetValidatorScript");import po from"chalk";import{spawnSync as Hs}from"child_process";var uo=t(async _=>{try{let e=`spl-token accounts --owner ${_}`;Hs(e,{shell:!0,stdio:"inherit"})}catch{console.log(po.yellow(`You might need to install the Solana SPL CLI:
|
|
5826
5826
|
`)),console.log(po.white("$ cargo install spl-token-cli"))}},"splBalance");import{homedir as Js}from"os";import{spawnSync as Ys}from"child_process";var U_=t(_=>{let e=`solana balance --keypair ${_}`,{stdout:E}=Ys(e,{shell:!0,stdio:"pipe"});return E.toString().trim()},"getSolBalance");import xs from"chalk";import{spawnSync as Qs}from"node:child_process";var mo=t(_=>{I.command("balance").alias("bal").alias("b").option("-s, --spl","Show SPL Token Balance",!1).description("Show Keypairs Balance").action(async e=>{if(e.spl){let o=`${Js()}/mainnet-authority-keypair.json`;await uo(o),process.exit(0)}await qs(_),process.exit(0)})},"balanceCommands"),qs=t(async _=>{let e=j(_),E=`Validator Key: ${e.validatorKey}
|
|
5827
5827
|
Address: ${e.validatorKeyAddress}
|
|
@@ -5861,7 +5861,8 @@ ${n}
|
|
|
5861
5861
|
--limit-ledger-size 50000000 \\
|
|
5862
5862
|
--block-production-method central-scheduler-greedy \\
|
|
5863
5863
|
--block-verification-method unified-scheduler \\
|
|
5864
|
-
--
|
|
5864
|
+
--maximum-full-snapshots-to-retain 1 \\
|
|
5865
|
+
--maximum-incremental-snapshots-to-retain 2 \\
|
|
5865
5866
|
--private-rpc \\
|
|
5866
5867
|
`},"startMainnetValidatorScript");var Fe=t(_=>{let{validatorKeyAddress:e}=j(_),i=J_.filter(T=>T!==e).map(T=>`--known-validator ${T} \\`).join(`
|
|
5867
5868
|
`);return`#!/bin/bash
|
|
@@ -5985,7 +5986,8 @@ ${S}
|
|
|
5985
5986
|
--limit-ledger-size 50000000 \\
|
|
5986
5987
|
--block-production-method central-scheduler-greedy \\
|
|
5987
5988
|
--block-verification-method unified-scheduler \\
|
|
5988
|
-
--
|
|
5989
|
+
--maximum-full-snapshots-to-retain 1 \\
|
|
5990
|
+
--maximum-incremental-snapshots-to-retain 2 \\
|
|
5989
5991
|
--private-rpc \\
|
|
5990
5992
|
--full-rpc-api \\
|
|
5991
5993
|
`},"startJitoMainnetScript");var iE=t((_=0,e,E,o,i,n,T="agave-validator")=>{let{validatorKeyAddress:s}=j(n),a=x_.filter(c=>c!==s).map(c=>`--known-validator ${c} \\`).join(`
|
|
@@ -6019,7 +6021,8 @@ ${a}
|
|
|
6019
6021
|
--limit-ledger-size 50000000 \\
|
|
6020
6022
|
--block-production-method central-scheduler-greedy \\
|
|
6021
6023
|
--block-verification-method unified-scheduler \\
|
|
6022
|
-
--
|
|
6024
|
+
--maximum-full-snapshots-to-retain 1 \\
|
|
6025
|
+
--maximum-incremental-snapshots-to-retain 2 \\
|
|
6023
6026
|
--private-rpc \\
|
|
6024
6027
|
--full-rpc-api \\
|
|
6025
6028
|
`},"startBamMainnetScript");import{spawnSync as zs}from"node:child_process";var Zs=t(()=>{let _=`sudo chmod +x ${i_}`;zs(_,{shell:!0,stdio:"inherit"})},"updateStartupScriptPermission"),V_=Zs;var go=t(_=>{let e=_.NETWORK===O.TESTNET,E=_.NODE_TYPE===D.RPC,o=_.VALIDATOR_TYPE===F.JITO,i=_.VALIDATOR_TYPE===F.BAM,n=_.VALIDATOR_TYPE===F.FRANKENDANCER,T=_.AUTO_RESTART,s=_.MOD,r=10;T&&!e&&(r=30);let S=e?s_:e_;o&&(S=B_,e&&(S=Ce)),i&&(S=ce,e&&(S=JE)),n&&(S=D_,e&&(S=q_)),E&&(S=y_,o&&(S=Gt)),I.command("update").alias("u").description("Update Command").option("-v, --version <version>",`Solana Version e.g ${S}`,S).option("-b, --background","No Monitor Delinquent Stake Update",!1).option("-c, --commission","Update Commission",!1).option("-f, --firewall","Update Firewall",!1).option("--migrate-config","Migrate Solv Config",!1).option("--config","Update Solv Config Default Solana Version",!1).option("--auto","Auto Update",!1).option("--mod","Modified Versions",!1).option("--startup","Start up Script",!1).action(async a=>{let R=$_(),c=e?_.TESTNET_DELINQUENT_STAKE:_.MAINNET_DELINQUENT_STAKE;if(console.log(Bo.white(`Current solv version: ${R}`)),a.auto){await co(_);return}if(a.migrateConfig){let C=Ao().config,l=X.TRIPLE;C.DISK_TYPES===0?l=X.DOUBLE:C.DISK_TYPES===1?l=X.SINGLE:l=X.TRIPLE;let d=C.SOLANA_NETWORK===P_.TESTNET,N=C.SOLV_TYPE===He.RPC_NODE,A=C.MAINNET_TYPE===Ye.JITO_MEV,P={NETWORK:d?O.TESTNET:O.MAINNET,NODE_TYPE:N?D.RPC:D.VALIDATOR,MNT_DISK_TYPE:l,RPC_TYPE:N?v.JITO:v.NONE,VALIDATOR_TYPE:A?F.JITO:d?F.AGAVE:F.SOLANA,TESTNET_SOLANA_VERSION:C.TESTNET_SOLANA_VERSION,MAINNET_SOLANA_VERSION:C.MAINNET_SOLANA_VERSION,NODE_VERSION:C.NODE_VERSION,TESTNET_DELINQUENT_STAKE:C.TESTNET_DELINQUENT_STAKE,MAINNET_DELINQUENT_STAKE:C.MAINNET_DELINQUENT_STAKE,COMMISSION:C.COMMISSION,DEFAULT_VALIDATOR_VOTE_ACCOUNT_PUBKEY:C.DEFAULT_VALIDATOR_VOTE_ACCOUNT_PUBKEY,STAKE_ACCOUNTS:C.STAKE_ACCOUNT,HARVEST_ACCOUNT:C.HARVEST_ACCOUNT,IS_MEV_MODE:C.IS_MEV_MODE,RPC_URL:C.RPC_URL,KEYPAIR_PATH:C.KEYPAIR_PATH,DISCORD_WEBHOOK_URL:C.DISCORD_WEBHOOK_URL,AUTO_UPDATE:C.AUTO_UPDATE,AUTO_RESTART:C.AUTO_RESTART,IS_DUMMY:!1,API_KEY:"",LEDGER_PATH:C.LEDGER_PATH,ACCOUNTS_PATH:"/mnt/accounts",SNAPSHOTS_PATH:"/mnt/snapshots",MOD:!1};await h(P)}if(a.config){if(await h({TESTNET_SOLANA_VERSION:s_,MAINNET_SOLANA_VERSION:e_}),o){let C=e?Ce:B_;await G_({version:C,tag:`v${C}`})}if(i){let C=e?JE:ce;await G_({version:C,tag:`v${C}`})}console.log(Bo.green("\u2714\uFE0F Updated Solv Config Default Solana Version\n\n You can now run `solv i` to install the latest version"));return}if(a.firewall){await To();return}if(a.startup){let C=_.VALIDATOR_TYPE,l="";switch(C){case F.SOLANA:l=e?Mo():le(_);break;case F.AGAVE:l=e?Fe(_):le(_);break;case F.JITO:let d=await Q();l=e?EE(d.commissionBps,d.relayerUrl,d.blockEngineUrl,d.shredReceiverAddr,_):oE(d.commissionBps,d.relayerUrl,d.blockEngineUrl,d.shredReceiverAddr,_);break;case F.BAM:let N=await Q();l=e?tE(N.commissionBps,N.relayerUrl,N.blockEngineUrl,N.shredReceiverAddr,N.bamUrl,_):iE(N.commissionBps,N.relayerUrl,N.blockEngineUrl,N.shredReceiverAddr,N.bamUrl,_);break;default:console.log("Unknown Validator Type for Update Script");break}await er(i_,l,"utf-8"),V_();return}if(a.background){let C=a.version,l=!!C.startsWith("3");if(await h({TESTNET_SOLANA_VERSION:s_,MAINNET_SOLANA_VERSION:e_}),o){let N=d_,A=`v${C}-jito`,P=`v${C}-mod`,L=a.mod||s?`${P}${N}`:`${A}${N}`;Qe(L,a.mod||s,l),await G_({version:C,tag:`v${C}`}),await de(c,!0,r);return}if(i){let N=g_,A=`v${C}-bam`,P=`v${C}-mod`,L=a.mod||s?`${P}${N}`:`${A}${N}`;eE(L,a.mod||s,l),await G_({version:C,tag:`v${C}`}),await de(c,!0,r);return}if(n){await _E(_,C,a.mod||s),await de(c,!0,r);return}await ve(C,a.mod||s,l);let d=e?10:5;e&&_r("solv start",{stdio:"inherit",shell:!0}),await de(d,!0,r);return}else if(a.commission){let C=await no();io(C.commission,e)}else to()})},"updateCommands");import{spawnSync as Er}from"node:child_process";var yo=t(_=>{try{let{log:e}=f_(),E=`tail -f ${e}`;_.error?E+=" | grep '\\(WARN\\|ERR\\)'":_.info?E+=" | grep INFO":_.warning&&(E+=" | grep WARN"),console.log(E);let o=Er(E,{shell:!0,stdio:"inherit"});if(o.error)throw o.error;o.signal==="SIGINT"?(console.log("Child process terminated due to receipt of SIGINT signal"),process.exit(0)):o.status!==0&&(console.error(`Child process exited with code ${o.status}`),process.exit(o.status))}catch(e){console.error(`tail Error: ${e}`),process.exit(1)}},"tail");var Ko=t(()=>{I.command("log").description("tail logs").alias("l").description("tail logs").option("-i, --info","Follow INFO output",!1).option("-w, --warning","Follow WARN output",!1).option("-e, --error","Follow ERR/WARN output",!1).option("-a, --all","Follow All output",!1).action(_=>{yo(_)})},"logCommands");import O_ from"chalk";import{spawnSync as tr}from"child_process";import{homedir as or}from"os";var nE=t(_=>{let e=or(),E=p(e),o=E.testnetValidatorVoteKey,i=E.testnetValidatorKey,n=E.testnetValidatorAuthorityKey,T=P_.TESTNET,s=_.COMMISSION;_.NETWORK===O.MAINNET&&(o=E.mainnetValidatorVoteKey,i=E.mainnetValidatorKey,n=E.mainnetValidatorAuthorityKey,T=P_.MAINNET),console.log(`\u231B\uFE0F Creating vote account with commission ${s} - ${T}`);let r=_.RPC_URL||T;_.NETWORK===O.TESTNET&&(r=P_.TESTNET);let S=`solana create-vote-account ${o} ${i} ${n} --commission ${s} --url ${r} --keypair ${i}`;tr(S,{shell:!0,stdio:"inherit"})},"setupVoteAccount");import{spawnSync as TE}from"child_process";import{existsSync as Go,readdirSync as ir,rmSync as nr}from"fs";import{homedir as Tr}from"os";import ko from"path";var sE=t(_=>{let e=[],E=0;_.NODE_TYPE===D.RPC&&(e=[y.MAINNET_VALIDATOR_KEY],E=1),_.NETWORK===O.TESTNET?(e=[y.TESTNET_VALIDATOR_KEY,y.TESTNET_VALITATOR_AUTHORITY_KEY,y.TESTNET_VALIDATOR_VOTE_KEY,y.MAINNET_VALIDATOR_KEY,y.MAINNET_VALITATOR_AUTHORITY_KEY,y.MAINNET_VALIDATOR_VOTE_KEY],E=6):(e=[y.MAINNET_VALIDATOR_KEY,y.MAINNET_VALITATOR_AUTHORITY_KEY,y.MAINNET_VALIDATOR_VOTE_KEY],E=3);let o=`solana-keygen grind --starts-and-ends-with E:SV:${E}`;TE(o,{shell:!0,stdio:"ignore"});let i=ir("./").filter(r=>r.endsWith("SV.json")),n=Tr(),T=ko.join(n,"unstaked-identity.json");Go(T)&&TE(`mv ${T} ${n}/unstaked-identity.backup.json`,{shell:!0,stdio:"ignore"});let s=0;for(let r of i){let S=ko.join(n,e[s]);if(s++,Go(S)){console.log(`${S} is already exist!`),nr(r,{recursive:!0});continue}let a=`mv ${r} ${S}`;TE(a,{shell:!0,stdio:"inherit"})}TE("solana-keygen new -s --no-bip39-passphrase -o /home/solv/unstaked-identity.json",{shell:!0,stdio:"ignore"}),console.log(`Generated keypairs - ${n}`)},"createSolvKeyPairs");import{spawnSync as bo}from"child_process";var sr=t((_,e,E,o=2001)=>{let i="/etc/systemd/system/jupiter-api.service",n=`[Unit]
|