@gabrielhicks/solv 5.3.19 → 5.3.20

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 Oa=Object.defineProperty;var r=(t,e)=>Oa(t,"name",{value:e,configurable:!0});import"dotenv/config";import{Command as zd}from"commander";var nr="5.3.19";var ir={name:"@gabrielhicks/solv",version:nr,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"}};var Ae=ir.version;var te="https://validators.solutions";var we="solv4.config.json";var vt="identity.json",Nt="unstaked-identity.json",ar="relayer-keypair.json",Ca="mainnet-validator-keypair.json",Ia="mainnet-vote-account-keypair.json",La="mainnet-authority-keypair.json",Pa="testnet-validator-keypair.json",$a="testnet-vote-account-keypair.json",xa="testnet-authority-keypair.json",V="/home/solv",R=`${V}/${vt}`,su=`${V}/${Nt}`,H=`${V}/${Ca}`,_e=`${V}/${Ia}`,nu=`${V}/${La}`,D=`${V}/${Pa}`,ve=`${V}/${$a}`,iu=`${V}/${xa}`,Q=`${V}/solana-validator.log`,st=V+"/start-validator.sh",w="/mnt/ledger",$t="/mnt/accounts",nt="/mnt/snapshots",lr="solana-validator",cr="agave-validator",mr="ELLB9W7ZCwRCV3FzWcCWoyKP6NjZJKArLyGtkqefnHcG";var Ne=3,pr="https://api.testnet.solana.com",dr="https://api.mainnet-beta.solana.com",ur="https://verify.validators.solutions/solv-migrate",fr="https://jup.validators.solutions/v1/jup",Ro;(function(t){t.SOL="SOL",t.USDC="USDC",t.elSOL="elSOL",t.JitoSOL="JitoSOL",t.mSOL="mSOL",t.bSOL="bSOL",t.EPCT="EPCT",t.JUP="JUP",t.BONK="BONK",t.JTO="JTO"})(Ro||(Ro={}));var hr=Object.values(Ro),Re="So11111111111111111111111111111111111111112",Oe="EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v",Oo="ELSoL1owwMWQ9foMsutweCsMKbTPVBD9pFqxQGidTaMC";var yr="SOLV420",Sr={So11111111111111111111111111111111111111112:"4Vwkpk3DTVrTGnUQTazsgQ1wxtU9QwZTmAXDaQRHg9Ra",EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v:"J8sqx9ZEoPRqboFAXK3c1R38zm41tRNJgUn2FzyeYQDj",J1toso1uCk3RLmjorhTtrVwY9HJ7X8V9yYac6Y7kGCPn:"HPj87TFMPZfm5nk1HmTH9a382RXn7h9oWftiFr3Xs12a",mSoLzYCxHdYgdzU16g5QSh3i5K3z3KZK7ytfqcJm7So:"8CX5tE9KvJ59HcoXwWf6tCZoRuz2JFSmunnbKC1ryaK9",bSo13r4TkiE4KumL71LsHTPpL2euBYLFx6h9HP3piy1:"782MdvLby3VfvKdfDYn9tX3DfNAtg7TcytNNFuepcoMH",CvB1ztJvpYQPvdPBePtRzjL4aQidjydtUz61NWgcgQtP:"BhR2L6J5q3xF1TxReXyHjaUh4MF6qV99tMsipzPAKeB",JUPyiwrYJFskUPiHa7hkeR8VUtAeFoSYbKedZNsDvCN:"212yg3Ev7khq4p1mESFGenF4nWefmkbC8f7mHM68j4vg",DezXAZ8z7PnrnRJjz3wXBoRgixCa6xjnB7YaB1pPB263:"61Ndjv9392jPRVGALdYgjjxGYa6TT6Gn2WLDSsmugE6U",jtojtomepa8beP8AuQc6eXt5FriJwfFMwQx2v2f9mCL:"2c9qVh8RQ6j2E2VdAEcCrRXMrd6g1vvPNZvAR6sbaGWo"};import{spawnSync as ba}from"child_process";var J="3.0.0",U="2.3.7",ee="3.0.0",Rt="2.3.7",Tr="2.3.7",Ot="2.3.7";var Er="20.17.0",xt="0.707.20306",Vt="0.707.20306";import{spawnSync as $}from"node:child_process";var Va=r((t=U,e=!1,o=!1)=>{o?e?($(`mkdir /tmp/v${t}-agave-mod`,{shell:!0,stdio:"inherit"}),$(`cd /tmp/v${t}-agave-mod`,{shell:!0,stdio:"inherit"}),$(`git clone https://github.com/gabrielhicks/agave.git --recurse-submodules /tmp/v${t}-agave-mod`,{shell:!0,stdio:"inherit"}),$(`git -C /tmp/v${t}-agave-mod checkout v${t}-mod`,{shell:!0,stdio:"inherit"}),$(`git -C /tmp/v${t}-agave-mod submodule update --init --recursive`,{shell:!0,stdio:"inherit"}),$(`CI_COMMIT=$(git -C /tmp/v${t}-agave-mod rev-parse HEAD) /tmp/v${t}-agave-mod/scripts/cargo-install-all.sh /home/solv/.local/share/solana/install/releases/v${t}-agave-mod`,{shell:!0,stdio:"inherit"}),$("sudo rm -rf /home/solv/.local/share/solana/install/active_release/bin/",{shell:!0,stdio:"inherit"}),$(`cp -r /home/solv/.local/share/solana/install/releases/v${t}-agave-mod/bin/ /home/solv/.local/share/solana/install/active_release/bin/`,{shell:!0,stdio:"inherit"}),$(`sudo rm -rf /tmp/v${t}-agave-mod`,{shell:!0,stdio:"inherit"})):($(`mkdir /tmp/v${t}-agave`,{shell:!0,stdio:"inherit"}),$(`cd /tmp/v${t}-agave`,{shell:!0,stdio:"inherit"}),$(`git clone https://github.com/anza-xyz/agave.git --recurse-submodules /tmp/v${t}-agave`,{shell:!0,stdio:"inherit"}),$(`git -C /tmp/v${t}-agave checkout v${t}`,{shell:!0,stdio:"inherit"}),$(`git -C /tmp/v${t}-agave submodule update --init --recursive`,{shell:!0,stdio:"inherit"}),$(`CI_COMMIT=$(git -C /tmp/v${t}-agave rev-parse HEAD) /tmp/v${t}-agave/scripts/cargo-install-all.sh /home/solv/.local/share/solana/install/releases/v${t}-agave`,{shell:!0,stdio:"inherit"}),$("sudo rm -rf /home/solv/.local/share/solana/install/active_release/bin/",{shell:!0,stdio:"inherit"}),$(`cp -r /home/solv/.local/share/solana/install/releases/v${t}-agave/bin/ /home/solv/.local/share/solana/install/active_release/bin/`,{shell:!0,stdio:"inherit"}),$(`sudo rm -rf /tmp/v${t}-agave`,{shell:!0,stdio:"inherit"})):e?$(`sh -c "$(curl --netrc-optional -sSfL https://raw.githubusercontent.com/gabrielhicks/agave/v${t}-mod/installer)"`,{shell:!0,stdio:"inherit"}):$(`sh -c "$(curl --netrc-optional -sSfL https://release.anza.xyz/v${t}/install)"`,{shell:!0,stdio:"inherit"})},"installAgave"),Dt=Va;var gr="agave-validator",Da=r(()=>{try{return gr}catch(t){return console.error(t),gr}},"getSolanaCLI"),it=Da;var ke=r(async(t,e=!1,o=!1)=>{Dt(t,e,o)},"updateVersion"),Ce=r(async(t,e=!1,o=10)=>{let s=it(),n=`${s} --ledger ${w} exit --max-delinquent-stake ${t} --monitor --min-idle-time ${o}`;e&&(n=`${s} --ledger ${w} exit --max-delinquent-stake ${t} --min-idle-time ${o}`),ba(n,{shell:!0,stdio:"inherit"})},"monitorUpdate");import ls from"chalk";var kt;(function(t){t.EN="en",t.JA="ja"})(kt||(kt={}));var Ar;(function(t){t[t.DOUBLE=0]="DOUBLE",t[t.SINGLE=1]="SINGLE",t[t.TRIPLE=2]="TRIPLE"})(Ar||(Ar={}));var wr;(function(t){t.SINGLE="single",t.DOUBLE="double",t.TRIPLE="triple"})(wr||(wr={}));var St;(function(t){t.MAINNET="mainnet-beta",t.TESTNET="testnet"})(St||(St={}));var _r;(function(t){t.VALIDATOR="validator",t.RPC="rpc"})(_r||(_r={}));var vr;(function(t){t.SOLANA="solana",t.JITO="jito",t.AGAVE="agave",t.FIREDANCER="firedancer"})(vr||(vr={}));var Nr;(function(t){t.CO_HOST_RELAYER="co-host-relayer",t.SEPARATED_RELAYER="separated-relayer",t.WITHOUT_RELAYER="without-relayer"})(Nr||(Nr={}));var Rr;(function(t){t.FIREDANCER="firedancer",t.FRANKENDANCER="frankendancer"})(Rr||(Rr={}));var Ie;(function(t){t[t.TESTNET_VALIDATOR=0]="TESTNET_VALIDATOR",t[t.MAINNET_VALIDATOR=1]="MAINNET_VALIDATOR",t[t.RPC_NODE=2]="RPC_NODE"})(Ie||(Ie={}));var Le;(function(t){t.SOLANA_CLIENT="SolanaClient",t.JITO_MEV="JitoMev",t.FIREDANCER="Firedancer"})(Le||(Le={}));var Cr=!1,Ir=!1,Lr=!1,Pr=!1,z={ID:"solv",LANG:kt.EN,USERNAME:"solv",TESTNET_SOLANA_VERSION:"3.0.0",MAINNET_SOLANA_VERSION:"2.3.7",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},F={ROOT:"/home/solv",AUTHORIZED_KEYS:"/home/solv/.ssh/authorized_keys"},_={ROOT:"/mnt",ACCOUNTS:"/mnt/accounts",LEDGER:"/mnt/ledger",SNAPSHOTS:"/mnt/snapshots"},at={LOG:"solana-validator.log",STARTUP_SCRIPT:"start-validator.sh",CONFIG:"solv.config.json",JITO_CONFIG:"jito.config.json"},C={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"},L={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"},v=r((t=F.ROOT)=>{let e=t===F.ROOT?F.ROOT:t,o=`${e}/${L.MAINNET_VALIDATOR_KEY}`,s=`${e}/${L.MAINNET_VALIDATOR_VOTE_KEY}`,n=`${e}/${L.MAINNET_VALITATOR_AUTHORITY_KEY}`,i=`${e}/${L.TESTNET_VALIDATOR_KEY}`,a=`${e}/${L.TESTNET_VALIDATOR_VOTE_KEY}`,l=`${e}/${L.TESTNET_VALITATOR_AUTHORITY_KEY}`;return{mainnetValidatorKey:o,mainnetValidatorVoteKey:s,mainnetValidatorAuthorityKey:n,testnetValidatorKey:i,testnetValidatorVoteKey:a,testnetValidatorAuthorityKey:l}},"getAllKeyPaths"),Tt=r((t=!0)=>{let e=t?`${F.ROOT}/${L.TESTNET_VALIDATOR_KEY}`:`${F.ROOT}/${L.MAINNET_VALIDATOR_KEY}`,o=t?`${F.ROOT}/${L.TESTNET_VALIDATOR_VOTE_KEY}`:`${F.ROOT}/${L.MAINNET_VALIDATOR_VOTE_KEY}`,s=`${F.ROOT}/${at.LOG}`,n=_.ACCOUNTS,i=_.LEDGER,a=_.SNAPSHOTS,l=`${F.ROOT}/${at.STARTUP_SCRIPT}`;return{identity:e,voteAccount:o,log:s,accounts:n,ledger:i,scriptPath:l,snapshots:a}},"startupScriptPaths");var et="So1vW4Bm6ZURzJJHZy1JpsjoVY68z4cDgF4tTLwYMa5",ko="7tAfLKgRVd9eywSQPuMbVNd51KGkaveZQuTjapL74Fwv",$r="EiwSTx1Z2uJATDut682U7xzzquFR4UpQJUij3wSxVoSV",xr=9,lt="ELSoL1owwMWQ9foMsutweCsMKbTPVBD9pFqxQGidTaMC",Vr="So11111111111111111111111111111111111111112",Dr="EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v",br="CvB1ztJvpYQPvdPBePtRzjL4aQidjydtUz61NWgcgQtP",Or;(function(t){t[t.ELSOL=lt]="ELSOL",t[t.SOL=Vr]="SOL",t[t.USDC=Dr]="USDC",t[t.EPCT=br]="EPCT"})(Or||(Or={}));var kr;(function(t){t.V6_BASE_URL="https://quote-api.jup.ag/v6",t.V6_QUOTE_URL="https://quote-api.jup.ag/v6/quote",t.V6_SWAP_URL="https://quote-api.jup.ag/v6/swap"})(kr||(kr={}));var _u={[Vr]:9,[lt]:9,[Dr]:6,[br]:6},Pe="/home/solv/currentEpoch.json",Co=.5,$e="https://api.testnet.solana.com";import{spawnSync as Io}from"child_process";var Kr=r(()=>{Io("pnpm add -g pnpm",{shell:!0,stdio:"inherit"});let t=z.NODE_VERSION;Io(`pnpm env use ${t} --global`,{shell:!0,stdio:"inherit"}),Io("pnpm add -g @gabrielhicks/solv",{shell:!0,stdio:"inherit"})},"updateSolv");var dt={version:"2.3.6",tag:"v2.3.6",commissionBps:1e3,relayerUrl:"http://frankfurt.mainnet.relayer.jito.wtf:8100",blockEngineUrl:"https://frankfurt.mainnet.block-engine.jito.wtf",shredReceiverAddr:"64.130.50.14:1002"},oe={TESTNET:{Dallas:{BLOCK_ENGINE_URL:"https://dallas.testnet.block-engine.jito.wtf",RELAYER_URL:"http://dallas.testnet.relayer.jito.wtf:8100",SHRED_RECEIVER_ADDR:"141.98.218.12:1002"},NewYork:{BLOCK_ENGINE_URL:"https://ny.testnet.block-engine.jito.wtf",RELAYER_URL:"http://ny.testnet.relayer.jito.wtf:8100",SHRED_RECEIVER_ADDR:"64.130.35.224:1002"}},MAINNET:{Amsterdam:{BLOCK_ENGINE_URL:"https://amsterdam.mainnet.block-engine.jito.wtf",RELAYER_URL:"http://amsterdam.mainnet.relayer.jito.wtf:8100",SHRED_RECEIVER_ADDR:"74.118.140.240:1002"},London:{BLOCK_ENGINE_URL:"https://london.mainnet.block-engine.jito.wtf",RELAYER_URL:"http://london.mainnet.relayer.jito.wtf:8100",SHRED_RECEIVER_ADDR:"142.91.127.175:1002"},Frankfurt:{BLOCK_ENGINE_URL:"https://frankfurt.mainnet.block-engine.jito.wtf",RELAYER_URL:"http://frankfurt.mainnet.relayer.jito.wtf:8100",SHRED_RECEIVER_ADDR:"64.130.50.14:1002"},NewYork:{BLOCK_ENGINE_URL:"https://ny.mainnet.block-engine.jito.wtf",RELAYER_URL:"http://ny.mainnet.relayer.jito.wtf:8100",SHRED_RECEIVER_ADDR:"141.98.216.96:1002"},Tokyo:{BLOCK_ENGINE_URL:"https://tokyo.mainnet.block-engine.jito.wtf",RELAYER_URL:"http://tokyo.mainnet.relayer.jito.wtf:8100",SHRED_RECEIVER_ADDR:"202.8.9.160:1002"},SaltLakeCity:{BLOCK_ENGINE_URL:"https://slc.mainnet.block-engine.jito.wtf",RELAYER_URL:"http://slc.mainnet.relayer.jito.wtf:8100",SHRED_RECEIVER_ADDR:"64.130.53.8:1002"},Singapore:{BLOCK_ENGINE_URL:"https://singapore.mainnet.block-engine.jito.wtf",RELAYER_URL:"http://singapore.mainnet.relayer.jito.wtf:8100",SHRED_RECEIVER_ADDR:"202.8.11.224:1002"}}};import{spawnSync as x}from"child_process";var xe=r((t=dt.tag,e=!1,o=!1)=>{o?e?(x(`mkdir /tmp/${t}-mod`,{shell:!0,stdio:"inherit"}),x(`cd /tmp/${t}-mod`,{shell:!0,stdio:"inherit"}),x(`git clone https://github.com/gabrielhicks/jito-solana.git --recurse-submodules /tmp/${t}-mod`,{shell:!0,stdio:"inherit"}),x(`git -C /tmp/${t}-mod checkout ${t}-mod`,{shell:!0,stdio:"inherit"}),x(`git -C /tmp/${t}-mod submodule update --init --recursive`,{shell:!0,stdio:"inherit"}),x(`CI_COMMIT=$(git -C /tmp/${t}-mod rev-parse HEAD) /tmp/${t}-mod/scripts/cargo-install-all.sh /home/solv/.local/share/solana/install/releases/${t}-mod`,{shell:!0,stdio:"inherit"}),x("sudo rm -rf /home/solv/.local/share/solana/install/active_release/bin/",{shell:!0,stdio:"inherit"}),x(`cp -r /home/solv/.local/share/solana/install/releases/${t}-mod/bin/ /home/solv/.local/share/solana/install/active_release/bin/`,{shell:!0,stdio:"inherit"}),x(`sudo rm -rf /tmp/${t}-mod`,{shell:!0,stdio:"inherit"})):(x(`mkdir /tmp/${t}-jito`,{shell:!0,stdio:"inherit"}),x(`cd /tmp/${t}-jito`,{shell:!0,stdio:"inherit"}),x(`git clone https://github.com/jito-foundation/jito-solana.git --recurse-submodules /tmp/${t}-jito`,{shell:!0,stdio:"inherit"}),x(`git -C /tmp/${t}-jito checkout ${t}-jito`,{shell:!0,stdio:"inherit"}),x(`git -C /tmp/${t}-jito submodule update --init --recursive`,{shell:!0,stdio:"inherit"}),x(`CI_COMMIT=$(git -C /tmp/${t}-jito rev-parse HEAD) /tmp/${t}-jito/scripts/cargo-install-all.sh /home/solv/.local/share/solana/install/releases/${t}-jito`,{shell:!0,stdio:"inherit"}),x("sudo rm -rf /home/solv/.local/share/solana/install/active_release/bin/",{shell:!0,stdio:"inherit"}),x(`cp -r /home/solv/.local/share/solana/install/releases/${t}-jito/bin/ /home/solv/.local/share/solana/install/active_release/bin/`,{shell:!0,stdio:"inherit"}),x(`sudo rm -rf /tmp/${t}-jito`,{shell:!0,stdio:"inherit"})):e?x(`sh -c "$(curl --netrc-optional -sSfL https://raw.githubusercontent.com/gabrielhicks/jito-solana/${t}-mod/installer)"`,{shell:!0,stdio:"inherit"}):x(`sh -c "$(curl --netrc-optional -sSfL https://release.jito.wtf/${t}-jito/install)"`,{shell:!0,stdio:"inherit"})},"jitoUpdate");import{readFile as Ka,writeFile as Ua}from"fs/promises";import{homedir as Ma}from"os";var re=r(async t=>{let o=`${Ma()}/${at.JITO_CONFIG}`,n={...JSON.parse(await Ka(o,"utf8")),...t},i=JSON.stringify(n,null,2);await Ua(o,i),console.log(`Updated ${o} with new values.`)},"updateJitoSolvConfig");import{spawnSync as Ur}from"child_process";import Ha from"inquirer";var Mr=r((t,e=!0)=>{let o=e?"/home/solv/testnet-validator-keypair.json":"/home/solv/mainnet-validator-keypair.json",s=e?"/home/solv/testnet-vote-account-keypair.json":"/home/solv/mainnet-vote-account-keypair.json";Ur(`solana config set --url ${e?"testnet":"mainnet-beta"} --keypair ${o}`,{shell:!0,stdio:"inherit"});let i=`solana vote-update-commission ${s} ${t} ${o} --keypair ${o}`;Ur(i,{shell:!0,stdio:"inherit"})},"updateCommission"),Hr=r(async()=>await Ha.prompt([{type:"number",name:"commission",message:"Enter new commission",default:7}]),"updateCommissionAsk");import{execAsync as se}from"@skeet-framework/utils";import Fa from"chalk";import ja from"inquirer";var Fr=r(async()=>{let t=await ja.prompt([{name:"ip",type:"input",message:"Enter your IP address to allow access to RPC NODE:",default:"1.2.3.4"}]);await se("sudo ufw delete allow 8899/udp"),await se("sudo ufw delete allow 8899/tcp"),await se(`sudo ufw allow from ${t.ip} to any port 8899 proto tcp`),await se(`sudo ufw allow from ${t.ip} to any port 8899 proto udp`),await se("sudo ufw reload"),console.log(Fa.white("\u2714\uFE0F Firewall updated!"))},"updateFirewall");var Ya=r(()=>nr,"getSolvVersion"),bt=Ya;import{readFile as Ja,writeFile as za}from"fs/promises";import{existsAsync as Wa}from"@skeet-framework/utils";var Lo;(function(t){t.EN="en",t.JA="ja"})(Lo||(Lo={}));var Qu=Object.values(Lo),f;(function(t){t.MAINNET="mainnet-beta",t.TESTNET="testnet"})(f||(f={}));var jr=Object.values(f),A;(function(t){t.RPC="rpc",t.VALIDATOR="validator"})(A||(A={}));var Yr=Object.values(A),T;(function(t){t.SOLANA="solana",t.AGAVE="agave",t.JITO="jito",t.FRANKENDANCER="frankendancer",t.NONE="none"})(T||(T={}));var Zu=Object.values(T).filter(t=>t!=="none"),M;(function(t){t.AGAVE="agave",t.JITO="jito",t.NONE="none"})(M||(M={}));var Gr=Object.values(M).filter(t=>t!=="none"),W;(function(t){t.SINGLE="single",t.DOUBLE="double",t.TRIPLE="triple"})(W||(W={}));var Ba={NETWORK:f.TESTNET,NODE_TYPE:A.RPC,VALIDATOR_TYPE:T.NONE,RPC_TYPE:M.AGAVE,MNT_DISK_TYPE:W.TRIPLE,TESTNET_SOLANA_VERSION:J,MAINNET_SOLANA_VERSION:U,NODE_VERSION:Er,TESTNET_DELINQUENT_STAKE:10,MAINNET_DELINQUENT_STAKE:5,COMMISSION:5,DEFAULT_VALIDATOR_VOTE_ACCOUNT_PUBKEY:mr,STAKE_ACCOUNTS:[],HARVEST_ACCOUNT:"",IS_MEV_MODE:!1,RPC_URL:dr,KEYPAIR_PATH:"",DISCORD_WEBHOOK_URL:"",AUTO_UPDATE:!1,AUTO_RESTART:!1,IS_DUMMY:!1,API_KEY:"",LEDGER_PATH:w,ACCOUNTS_PATH:$t,SNAPSHOTS_PATH:nt,MOD:!1},ut=Ba;import{homedir as qa}from"os";var Qa=r(async()=>{let e=`${qa()}/${we}`;return await Wa(e)?JSON.parse(await Ja(e,"utf-8")):(console.log("Creating default config file at",e),await za(e,JSON.stringify(ut,null,2)),ut)},"readConfig"),b=Qa;import Za from"node-fetch";var Z=r(async t=>{try{let e=await b();if(e.DISCORD_WEBHOOK_URL==="")throw new Error(`DISCORD_WEBHOOK_URL is empty
2
+ var Oa=Object.defineProperty;var r=(t,e)=>Oa(t,"name",{value:e,configurable:!0});import"dotenv/config";import{Command as zd}from"commander";var nr="5.3.20";var ir={name:"@gabrielhicks/solv",version:nr,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"}};var Ae=ir.version;var te="https://validators.solutions";var we="solv4.config.json";var vt="identity.json",Nt="unstaked-identity.json",ar="relayer-keypair.json",Ca="mainnet-validator-keypair.json",Ia="mainnet-vote-account-keypair.json",La="mainnet-authority-keypair.json",Pa="testnet-validator-keypair.json",$a="testnet-vote-account-keypair.json",xa="testnet-authority-keypair.json",V="/home/solv",R=`${V}/${vt}`,su=`${V}/${Nt}`,H=`${V}/${Ca}`,_e=`${V}/${Ia}`,nu=`${V}/${La}`,D=`${V}/${Pa}`,ve=`${V}/${$a}`,iu=`${V}/${xa}`,Q=`${V}/solana-validator.log`,st=V+"/start-validator.sh",w="/mnt/ledger",$t="/mnt/accounts",nt="/mnt/snapshots",lr="solana-validator",cr="agave-validator",mr="ELLB9W7ZCwRCV3FzWcCWoyKP6NjZJKArLyGtkqefnHcG";var Ne=3,pr="https://api.testnet.solana.com",dr="https://api.mainnet-beta.solana.com",ur="https://verify.validators.solutions/solv-migrate",fr="https://jup.validators.solutions/v1/jup",Ro;(function(t){t.SOL="SOL",t.USDC="USDC",t.elSOL="elSOL",t.JitoSOL="JitoSOL",t.mSOL="mSOL",t.bSOL="bSOL",t.EPCT="EPCT",t.JUP="JUP",t.BONK="BONK",t.JTO="JTO"})(Ro||(Ro={}));var hr=Object.values(Ro),Re="So11111111111111111111111111111111111111112",Oe="EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v",Oo="ELSoL1owwMWQ9foMsutweCsMKbTPVBD9pFqxQGidTaMC";var yr="SOLV420",Sr={So11111111111111111111111111111111111111112:"4Vwkpk3DTVrTGnUQTazsgQ1wxtU9QwZTmAXDaQRHg9Ra",EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v:"J8sqx9ZEoPRqboFAXK3c1R38zm41tRNJgUn2FzyeYQDj",J1toso1uCk3RLmjorhTtrVwY9HJ7X8V9yYac6Y7kGCPn:"HPj87TFMPZfm5nk1HmTH9a382RXn7h9oWftiFr3Xs12a",mSoLzYCxHdYgdzU16g5QSh3i5K3z3KZK7ytfqcJm7So:"8CX5tE9KvJ59HcoXwWf6tCZoRuz2JFSmunnbKC1ryaK9",bSo13r4TkiE4KumL71LsHTPpL2euBYLFx6h9HP3piy1:"782MdvLby3VfvKdfDYn9tX3DfNAtg7TcytNNFuepcoMH",CvB1ztJvpYQPvdPBePtRzjL4aQidjydtUz61NWgcgQtP:"BhR2L6J5q3xF1TxReXyHjaUh4MF6qV99tMsipzPAKeB",JUPyiwrYJFskUPiHa7hkeR8VUtAeFoSYbKedZNsDvCN:"212yg3Ev7khq4p1mESFGenF4nWefmkbC8f7mHM68j4vg",DezXAZ8z7PnrnRJjz3wXBoRgixCa6xjnB7YaB1pPB263:"61Ndjv9392jPRVGALdYgjjxGYa6TT6Gn2WLDSsmugE6U",jtojtomepa8beP8AuQc6eXt5FriJwfFMwQx2v2f9mCL:"2c9qVh8RQ6j2E2VdAEcCrRXMrd6g1vvPNZvAR6sbaGWo"};import{spawnSync as ba}from"child_process";var J="3.0.1",U="2.3.8",ee="3.0.1",Rt="2.3.8",Tr="2.3.8",Ot="2.3.8";var Er="20.17.0",xt="0.708.20306",Vt="0.708.20306";import{spawnSync as $}from"node:child_process";var Va=r((t=U,e=!1,o=!1)=>{o?e?($(`mkdir /tmp/v${t}-agave-mod`,{shell:!0,stdio:"inherit"}),$(`cd /tmp/v${t}-agave-mod`,{shell:!0,stdio:"inherit"}),$(`git clone https://github.com/gabrielhicks/agave.git --recurse-submodules /tmp/v${t}-agave-mod`,{shell:!0,stdio:"inherit"}),$(`git -C /tmp/v${t}-agave-mod checkout v${t}-mod`,{shell:!0,stdio:"inherit"}),$(`git -C /tmp/v${t}-agave-mod submodule update --init --recursive`,{shell:!0,stdio:"inherit"}),$(`CI_COMMIT=$(git -C /tmp/v${t}-agave-mod rev-parse HEAD) /tmp/v${t}-agave-mod/scripts/cargo-install-all.sh /home/solv/.local/share/solana/install/releases/v${t}-agave-mod`,{shell:!0,stdio:"inherit"}),$("sudo rm -rf /home/solv/.local/share/solana/install/active_release/bin/",{shell:!0,stdio:"inherit"}),$(`cp -r /home/solv/.local/share/solana/install/releases/v${t}-agave-mod/bin/ /home/solv/.local/share/solana/install/active_release/bin/`,{shell:!0,stdio:"inherit"}),$(`sudo rm -rf /tmp/v${t}-agave-mod`,{shell:!0,stdio:"inherit"})):($(`mkdir /tmp/v${t}-agave`,{shell:!0,stdio:"inherit"}),$(`cd /tmp/v${t}-agave`,{shell:!0,stdio:"inherit"}),$(`git clone https://github.com/anza-xyz/agave.git --recurse-submodules /tmp/v${t}-agave`,{shell:!0,stdio:"inherit"}),$(`git -C /tmp/v${t}-agave checkout v${t}`,{shell:!0,stdio:"inherit"}),$(`git -C /tmp/v${t}-agave submodule update --init --recursive`,{shell:!0,stdio:"inherit"}),$(`CI_COMMIT=$(git -C /tmp/v${t}-agave rev-parse HEAD) /tmp/v${t}-agave/scripts/cargo-install-all.sh /home/solv/.local/share/solana/install/releases/v${t}-agave`,{shell:!0,stdio:"inherit"}),$("sudo rm -rf /home/solv/.local/share/solana/install/active_release/bin/",{shell:!0,stdio:"inherit"}),$(`cp -r /home/solv/.local/share/solana/install/releases/v${t}-agave/bin/ /home/solv/.local/share/solana/install/active_release/bin/`,{shell:!0,stdio:"inherit"}),$(`sudo rm -rf /tmp/v${t}-agave`,{shell:!0,stdio:"inherit"})):e?$(`sh -c "$(curl --netrc-optional -sSfL https://raw.githubusercontent.com/gabrielhicks/agave/v${t}-mod/installer)"`,{shell:!0,stdio:"inherit"}):$(`sh -c "$(curl --netrc-optional -sSfL https://release.anza.xyz/v${t}/install)"`,{shell:!0,stdio:"inherit"})},"installAgave"),Dt=Va;var gr="agave-validator",Da=r(()=>{try{return gr}catch(t){return console.error(t),gr}},"getSolanaCLI"),it=Da;var ke=r(async(t,e=!1,o=!1)=>{Dt(t,e,o)},"updateVersion"),Ce=r(async(t,e=!1,o=10)=>{let s=it(),n=`${s} --ledger ${w} exit --max-delinquent-stake ${t} --monitor --min-idle-time ${o}`;e&&(n=`${s} --ledger ${w} exit --max-delinquent-stake ${t} --min-idle-time ${o}`),ba(n,{shell:!0,stdio:"inherit"})},"monitorUpdate");import ls from"chalk";var kt;(function(t){t.EN="en",t.JA="ja"})(kt||(kt={}));var Ar;(function(t){t[t.DOUBLE=0]="DOUBLE",t[t.SINGLE=1]="SINGLE",t[t.TRIPLE=2]="TRIPLE"})(Ar||(Ar={}));var wr;(function(t){t.SINGLE="single",t.DOUBLE="double",t.TRIPLE="triple"})(wr||(wr={}));var St;(function(t){t.MAINNET="mainnet-beta",t.TESTNET="testnet"})(St||(St={}));var _r;(function(t){t.VALIDATOR="validator",t.RPC="rpc"})(_r||(_r={}));var vr;(function(t){t.SOLANA="solana",t.JITO="jito",t.AGAVE="agave",t.FIREDANCER="firedancer"})(vr||(vr={}));var Nr;(function(t){t.CO_HOST_RELAYER="co-host-relayer",t.SEPARATED_RELAYER="separated-relayer",t.WITHOUT_RELAYER="without-relayer"})(Nr||(Nr={}));var Rr;(function(t){t.FIREDANCER="firedancer",t.FRANKENDANCER="frankendancer"})(Rr||(Rr={}));var Ie;(function(t){t[t.TESTNET_VALIDATOR=0]="TESTNET_VALIDATOR",t[t.MAINNET_VALIDATOR=1]="MAINNET_VALIDATOR",t[t.RPC_NODE=2]="RPC_NODE"})(Ie||(Ie={}));var Le;(function(t){t.SOLANA_CLIENT="SolanaClient",t.JITO_MEV="JitoMev",t.FIREDANCER="Firedancer"})(Le||(Le={}));var Cr=!1,Ir=!1,Lr=!1,Pr=!1,z={ID:"solv",LANG:kt.EN,USERNAME:"solv",TESTNET_SOLANA_VERSION:"3.0.1",MAINNET_SOLANA_VERSION:"2.3.8",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},F={ROOT:"/home/solv",AUTHORIZED_KEYS:"/home/solv/.ssh/authorized_keys"},_={ROOT:"/mnt",ACCOUNTS:"/mnt/accounts",LEDGER:"/mnt/ledger",SNAPSHOTS:"/mnt/snapshots"},at={LOG:"solana-validator.log",STARTUP_SCRIPT:"start-validator.sh",CONFIG:"solv.config.json",JITO_CONFIG:"jito.config.json"},C={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"},L={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"},v=r((t=F.ROOT)=>{let e=t===F.ROOT?F.ROOT:t,o=`${e}/${L.MAINNET_VALIDATOR_KEY}`,s=`${e}/${L.MAINNET_VALIDATOR_VOTE_KEY}`,n=`${e}/${L.MAINNET_VALITATOR_AUTHORITY_KEY}`,i=`${e}/${L.TESTNET_VALIDATOR_KEY}`,a=`${e}/${L.TESTNET_VALIDATOR_VOTE_KEY}`,l=`${e}/${L.TESTNET_VALITATOR_AUTHORITY_KEY}`;return{mainnetValidatorKey:o,mainnetValidatorVoteKey:s,mainnetValidatorAuthorityKey:n,testnetValidatorKey:i,testnetValidatorVoteKey:a,testnetValidatorAuthorityKey:l}},"getAllKeyPaths"),Tt=r((t=!0)=>{let e=t?`${F.ROOT}/${L.TESTNET_VALIDATOR_KEY}`:`${F.ROOT}/${L.MAINNET_VALIDATOR_KEY}`,o=t?`${F.ROOT}/${L.TESTNET_VALIDATOR_VOTE_KEY}`:`${F.ROOT}/${L.MAINNET_VALIDATOR_VOTE_KEY}`,s=`${F.ROOT}/${at.LOG}`,n=_.ACCOUNTS,i=_.LEDGER,a=_.SNAPSHOTS,l=`${F.ROOT}/${at.STARTUP_SCRIPT}`;return{identity:e,voteAccount:o,log:s,accounts:n,ledger:i,scriptPath:l,snapshots:a}},"startupScriptPaths");var et="So1vW4Bm6ZURzJJHZy1JpsjoVY68z4cDgF4tTLwYMa5",ko="7tAfLKgRVd9eywSQPuMbVNd51KGkaveZQuTjapL74Fwv",$r="EiwSTx1Z2uJATDut682U7xzzquFR4UpQJUij3wSxVoSV",xr=9,lt="ELSoL1owwMWQ9foMsutweCsMKbTPVBD9pFqxQGidTaMC",Vr="So11111111111111111111111111111111111111112",Dr="EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v",br="CvB1ztJvpYQPvdPBePtRzjL4aQidjydtUz61NWgcgQtP",Or;(function(t){t[t.ELSOL=lt]="ELSOL",t[t.SOL=Vr]="SOL",t[t.USDC=Dr]="USDC",t[t.EPCT=br]="EPCT"})(Or||(Or={}));var kr;(function(t){t.V6_BASE_URL="https://quote-api.jup.ag/v6",t.V6_QUOTE_URL="https://quote-api.jup.ag/v6/quote",t.V6_SWAP_URL="https://quote-api.jup.ag/v6/swap"})(kr||(kr={}));var _u={[Vr]:9,[lt]:9,[Dr]:6,[br]:6},Pe="/home/solv/currentEpoch.json",Co=.5,$e="https://api.testnet.solana.com";import{spawnSync as Io}from"child_process";var Kr=r(()=>{Io("pnpm add -g pnpm",{shell:!0,stdio:"inherit"});let t=z.NODE_VERSION;Io(`pnpm env use ${t} --global`,{shell:!0,stdio:"inherit"}),Io("pnpm add -g @gabrielhicks/solv",{shell:!0,stdio:"inherit"})},"updateSolv");var dt={version:"2.3.6",tag:"v2.3.6",commissionBps:1e3,relayerUrl:"http://frankfurt.mainnet.relayer.jito.wtf:8100",blockEngineUrl:"https://frankfurt.mainnet.block-engine.jito.wtf",shredReceiverAddr:"64.130.50.14:1002"},oe={TESTNET:{Dallas:{BLOCK_ENGINE_URL:"https://dallas.testnet.block-engine.jito.wtf",RELAYER_URL:"http://dallas.testnet.relayer.jito.wtf:8100",SHRED_RECEIVER_ADDR:"141.98.218.12:1002"},NewYork:{BLOCK_ENGINE_URL:"https://ny.testnet.block-engine.jito.wtf",RELAYER_URL:"http://ny.testnet.relayer.jito.wtf:8100",SHRED_RECEIVER_ADDR:"64.130.35.224:1002"}},MAINNET:{Amsterdam:{BLOCK_ENGINE_URL:"https://amsterdam.mainnet.block-engine.jito.wtf",RELAYER_URL:"http://amsterdam.mainnet.relayer.jito.wtf:8100",SHRED_RECEIVER_ADDR:"74.118.140.240:1002"},London:{BLOCK_ENGINE_URL:"https://london.mainnet.block-engine.jito.wtf",RELAYER_URL:"http://london.mainnet.relayer.jito.wtf:8100",SHRED_RECEIVER_ADDR:"142.91.127.175:1002"},Frankfurt:{BLOCK_ENGINE_URL:"https://frankfurt.mainnet.block-engine.jito.wtf",RELAYER_URL:"http://frankfurt.mainnet.relayer.jito.wtf:8100",SHRED_RECEIVER_ADDR:"64.130.50.14:1002"},NewYork:{BLOCK_ENGINE_URL:"https://ny.mainnet.block-engine.jito.wtf",RELAYER_URL:"http://ny.mainnet.relayer.jito.wtf:8100",SHRED_RECEIVER_ADDR:"141.98.216.96:1002"},Tokyo:{BLOCK_ENGINE_URL:"https://tokyo.mainnet.block-engine.jito.wtf",RELAYER_URL:"http://tokyo.mainnet.relayer.jito.wtf:8100",SHRED_RECEIVER_ADDR:"202.8.9.160:1002"},SaltLakeCity:{BLOCK_ENGINE_URL:"https://slc.mainnet.block-engine.jito.wtf",RELAYER_URL:"http://slc.mainnet.relayer.jito.wtf:8100",SHRED_RECEIVER_ADDR:"64.130.53.8:1002"},Singapore:{BLOCK_ENGINE_URL:"https://singapore.mainnet.block-engine.jito.wtf",RELAYER_URL:"http://singapore.mainnet.relayer.jito.wtf:8100",SHRED_RECEIVER_ADDR:"202.8.11.224:1002"}}};import{spawnSync as x}from"child_process";var xe=r((t=dt.tag,e=!1,o=!1)=>{o?e?(x(`mkdir /tmp/${t}-mod`,{shell:!0,stdio:"inherit"}),x(`cd /tmp/${t}-mod`,{shell:!0,stdio:"inherit"}),x(`git clone https://github.com/gabrielhicks/jito-solana.git --recurse-submodules /tmp/${t}-mod`,{shell:!0,stdio:"inherit"}),x(`git -C /tmp/${t}-mod checkout ${t}-mod`,{shell:!0,stdio:"inherit"}),x(`git -C /tmp/${t}-mod submodule update --init --recursive`,{shell:!0,stdio:"inherit"}),x(`CI_COMMIT=$(git -C /tmp/${t}-mod rev-parse HEAD) /tmp/${t}-mod/scripts/cargo-install-all.sh /home/solv/.local/share/solana/install/releases/${t}-mod`,{shell:!0,stdio:"inherit"}),x("sudo rm -rf /home/solv/.local/share/solana/install/active_release/bin/",{shell:!0,stdio:"inherit"}),x(`cp -r /home/solv/.local/share/solana/install/releases/${t}-mod/bin/ /home/solv/.local/share/solana/install/active_release/bin/`,{shell:!0,stdio:"inherit"}),x(`sudo rm -rf /tmp/${t}-mod`,{shell:!0,stdio:"inherit"})):(x(`mkdir /tmp/${t}-jito`,{shell:!0,stdio:"inherit"}),x(`cd /tmp/${t}-jito`,{shell:!0,stdio:"inherit"}),x(`git clone https://github.com/jito-foundation/jito-solana.git --recurse-submodules /tmp/${t}-jito`,{shell:!0,stdio:"inherit"}),x(`git -C /tmp/${t}-jito checkout ${t}-jito`,{shell:!0,stdio:"inherit"}),x(`git -C /tmp/${t}-jito submodule update --init --recursive`,{shell:!0,stdio:"inherit"}),x(`CI_COMMIT=$(git -C /tmp/${t}-jito rev-parse HEAD) /tmp/${t}-jito/scripts/cargo-install-all.sh /home/solv/.local/share/solana/install/releases/${t}-jito`,{shell:!0,stdio:"inherit"}),x("sudo rm -rf /home/solv/.local/share/solana/install/active_release/bin/",{shell:!0,stdio:"inherit"}),x(`cp -r /home/solv/.local/share/solana/install/releases/${t}-jito/bin/ /home/solv/.local/share/solana/install/active_release/bin/`,{shell:!0,stdio:"inherit"}),x(`sudo rm -rf /tmp/${t}-jito`,{shell:!0,stdio:"inherit"})):e?x(`sh -c "$(curl --netrc-optional -sSfL https://raw.githubusercontent.com/gabrielhicks/jito-solana/${t}-mod/installer)"`,{shell:!0,stdio:"inherit"}):x(`sh -c "$(curl --netrc-optional -sSfL https://release.jito.wtf/${t}-jito/install)"`,{shell:!0,stdio:"inherit"})},"jitoUpdate");import{readFile as Ka,writeFile as Ua}from"fs/promises";import{homedir as Ma}from"os";var re=r(async t=>{let o=`${Ma()}/${at.JITO_CONFIG}`,n={...JSON.parse(await Ka(o,"utf8")),...t},i=JSON.stringify(n,null,2);await Ua(o,i),console.log(`Updated ${o} with new values.`)},"updateJitoSolvConfig");import{spawnSync as Ur}from"child_process";import Ha from"inquirer";var Mr=r((t,e=!0)=>{let o=e?"/home/solv/testnet-validator-keypair.json":"/home/solv/mainnet-validator-keypair.json",s=e?"/home/solv/testnet-vote-account-keypair.json":"/home/solv/mainnet-vote-account-keypair.json";Ur(`solana config set --url ${e?"testnet":"mainnet-beta"} --keypair ${o}`,{shell:!0,stdio:"inherit"});let i=`solana vote-update-commission ${s} ${t} ${o} --keypair ${o}`;Ur(i,{shell:!0,stdio:"inherit"})},"updateCommission"),Hr=r(async()=>await Ha.prompt([{type:"number",name:"commission",message:"Enter new commission",default:7}]),"updateCommissionAsk");import{execAsync as se}from"@skeet-framework/utils";import Fa from"chalk";import ja from"inquirer";var Fr=r(async()=>{let t=await ja.prompt([{name:"ip",type:"input",message:"Enter your IP address to allow access to RPC NODE:",default:"1.2.3.4"}]);await se("sudo ufw delete allow 8899/udp"),await se("sudo ufw delete allow 8899/tcp"),await se(`sudo ufw allow from ${t.ip} to any port 8899 proto tcp`),await se(`sudo ufw allow from ${t.ip} to any port 8899 proto udp`),await se("sudo ufw reload"),console.log(Fa.white("\u2714\uFE0F Firewall updated!"))},"updateFirewall");var Ya=r(()=>nr,"getSolvVersion"),bt=Ya;import{readFile as Ja,writeFile as za}from"fs/promises";import{existsAsync as Wa}from"@skeet-framework/utils";var Lo;(function(t){t.EN="en",t.JA="ja"})(Lo||(Lo={}));var Qu=Object.values(Lo),f;(function(t){t.MAINNET="mainnet-beta",t.TESTNET="testnet"})(f||(f={}));var jr=Object.values(f),A;(function(t){t.RPC="rpc",t.VALIDATOR="validator"})(A||(A={}));var Yr=Object.values(A),T;(function(t){t.SOLANA="solana",t.AGAVE="agave",t.JITO="jito",t.FRANKENDANCER="frankendancer",t.NONE="none"})(T||(T={}));var Zu=Object.values(T).filter(t=>t!=="none"),M;(function(t){t.AGAVE="agave",t.JITO="jito",t.NONE="none"})(M||(M={}));var Gr=Object.values(M).filter(t=>t!=="none"),W;(function(t){t.SINGLE="single",t.DOUBLE="double",t.TRIPLE="triple"})(W||(W={}));var Ba={NETWORK:f.TESTNET,NODE_TYPE:A.RPC,VALIDATOR_TYPE:T.NONE,RPC_TYPE:M.AGAVE,MNT_DISK_TYPE:W.TRIPLE,TESTNET_SOLANA_VERSION:J,MAINNET_SOLANA_VERSION:U,NODE_VERSION:Er,TESTNET_DELINQUENT_STAKE:10,MAINNET_DELINQUENT_STAKE:5,COMMISSION:5,DEFAULT_VALIDATOR_VOTE_ACCOUNT_PUBKEY:mr,STAKE_ACCOUNTS:[],HARVEST_ACCOUNT:"",IS_MEV_MODE:!1,RPC_URL:dr,KEYPAIR_PATH:"",DISCORD_WEBHOOK_URL:"",AUTO_UPDATE:!1,AUTO_RESTART:!1,IS_DUMMY:!1,API_KEY:"",LEDGER_PATH:w,ACCOUNTS_PATH:$t,SNAPSHOTS_PATH:nt,MOD:!1},ut=Ba;import{homedir as qa}from"os";var Qa=r(async()=>{let e=`${qa()}/${we}`;return await Wa(e)?JSON.parse(await Ja(e,"utf-8")):(console.log("Creating default config file at",e),await za(e,JSON.stringify(ut,null,2)),ut)},"readConfig"),b=Qa;import Za from"node-fetch";var Z=r(async t=>{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 o={content:t,username:"\u{1FA84} Solv Notifier"};return(await Za(e.DISCORD_WEBHOOK_URL,{method:"POST",body:JSON.stringify(o),headers:{"Content-Type":"application/json"}})).status===204}catch{return console.log({error:`Skeet sendDiscord Error - ${t}`}),!1}},"sendDiscord");import{spawnSync as rl}from"child_process";import{Connection as Br}from"@solana/web3.js";var ne=r(async(t,e,o=!1,s=200)=>{let n={pubkey:e,isActive:!1,reason:""};try{let i=o?new Br("https://api.testnet.solana.com"):new Br(t,"confirmed"),a=await i.getVoteAccounts(),l=a.current.find(u=>u.votePubkey===e);if(!l)return a.delinquent.find(p=>p.votePubkey===e)?(n.isActive=!1,n.reason="Validator is delinquent.",n):(n.isActive=!1,n.reason="Validator is not found in both current and delinquent lists.",n);if(a=await i.getVoteAccounts(),l=a.current.find(u=>u.votePubkey===e),!l)return n.isActive=!1,n.reason="Validator is not found in the current list.",n;let c=l.lastVote,d=await i.getSlot()-c;return d>s?(n.isActive=!1,n.reason=`Validator has not voted for ${d} slots.`,n):(n.isActive=!0,n.reason="Validator is active and voting.",n)}catch(i){return console.error(i),n.isActive=!1,n.reason="Failed to check validator status.",n}},"isValidatorActive");import{spawnSync as Xa}from"child_process";var N=r(t=>{let e=`solana address --keypair ${t}`,{stdout:o}=Xa(e,{shell:!0,stdio:"pipe"});return o.toString().trim()},"getSolanaAddress");var tl=r(t=>new Promise(e=>setTimeout(e,t)),"sleep"),j=tl;import{sendDiscord as el}from"@skeet-framework/utils";var Jr=10,ol=r(async t=>{try{let e=t.NETWORK===f.TESTNET,{mainnetValidatorVoteKey:o,testnetValidatorVoteKey:s}=v(),i=N(e?s:o),a=await ne(t.RPC_URL,i,e),l=0;for(;!a.isActive;){if(l>=Jr){console.log("Max retries reached, exiting...");let c=`\u26A0\uFE0F Validator is not active for ${Jr} minutes!
4
4
  Account: ${a.pubkey}
5
5
  Reason: ${a.reason}