@gabrielhicks/solv 5.3.32 → 5.3.34
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 +2 -6
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
var Oi=Object.defineProperty;var r=(t,e)=>Oi(t,"name",{value:e,configurable:!0});import"dotenv/config";import{Command as Wd}from"commander";var nr="5.3.32";var sr={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"},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=sr.version;var Xt="https://validators.solutions";var Ae="solv4.config.json";var vt="identity.json",Nt="unstaked-identity.json",ar="relayer-keypair.json",Ci="mainnet-validator-keypair.json",Ii="mainnet-vote-account-keypair.json",Li="mainnet-authority-keypair.json",Pi="testnet-validator-keypair.json",xi="testnet-vote-account-keypair.json",$i="testnet-authority-keypair.json",x="/home/solv",R=`${x}/${vt}`,su=`${x}/${Nt}`,U=`${x}/${Ci}`,we=`${x}/${Ii}`,au=`${x}/${Li}`,$=`${x}/${Pi}`,_e=`${x}/${xi}`,iu=`${x}/${$i}`,W=`${x}/solana-validator.log`,nt=x+"/start-validator.sh",w="/mnt/ledger",xt="/mnt/accounts",st="/mnt/snapshots",ir="solana-validator",lr="agave-validator",cr="ELLB9W7ZCwRCV3FzWcCWoyKP6NjZJKArLyGtkqefnHcG";var ve=3,mr="https://api.testnet.solana.com",pr="https://api.mainnet-beta.solana.com",dr="https://verify.validators.solutions/solv-migrate",ur="https://jup.validators.solutions/v1/jup",No;(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"})(No||(No={}));var fr=Object.values(No),Ne="So11111111111111111111111111111111111111112",Re="EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v",Ro="ELSoL1owwMWQ9foMsutweCsMKbTPVBD9pFqxQGidTaMC";var hr="SOLV420",yr={So11111111111111111111111111111111111111112:"4Vwkpk3DTVrTGnUQTazsgQ1wxtU9QwZTmAXDaQRHg9Ra",EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v:"J8sqx9ZEoPRqboFAXK3c1R38zm41tRNJgUn2FzyeYQDj",J1toso1uCk3RLmjorhTtrVwY9HJ7X8V9yYac6Y7kGCPn:"HPj87TFMPZfm5nk1HmTH9a382RXn7h9oWftiFr3Xs12a",mSoLzYCxHdYgdzU16g5QSh3i5K3z3KZK7ytfqcJm7So:"8CX5tE9KvJ59HcoXwWf6tCZoRuz2JFSmunnbKC1ryaK9",bSo13r4TkiE4KumL71LsHTPpL2euBYLFx6h9HP3piy1:"782MdvLby3VfvKdfDYn9tX3DfNAtg7TcytNNFuepcoMH",CvB1ztJvpYQPvdPBePtRzjL4aQidjydtUz61NWgcgQtP:"BhR2L6J5q3xF1TxReXyHjaUh4MF6qV99tMsipzPAKeB",JUPyiwrYJFskUPiHa7hkeR8VUtAeFoSYbKedZNsDvCN:"212yg3Ev7khq4p1mESFGenF4nWefmkbC8f7mHM68j4vg",DezXAZ8z7PnrnRJjz3wXBoRgixCa6xjnB7YaB1pPB263:"61Ndjv9392jPRVGALdYgjjxGYa6TT6Gn2WLDSsmugE6U",jtojtomepa8beP8AuQc6eXt5FriJwfFMwQx2v2f9mCL:"2c9qVh8RQ6j2E2VdAEcCrRXMrd6g1vvPNZvAR6sbaGWo"};import{spawnSync as bi}from"child_process";var q="2.3.11",b="2.3.11",te="2.3.11",Rt="2.3.11",Sr="2.3.11",Ot="2.3.11";var Tr="20.17.0",$t="0.708.20306",Vt="0.708.20306";import{spawnSync as P}from"node:child_process";var Vi=r((t=b,e=!1,o=!1)=>{o?e?(P(`mkdir /tmp/v${t}-agave-mod`,{shell:!0,stdio:"inherit"}),P(`cd /tmp/v${t}-agave-mod`,{shell:!0,stdio:"inherit"}),P(`git clone https://github.com/gabrielhicks/agave.git --recurse-submodules /tmp/v${t}-agave-mod`,{shell:!0,stdio:"inherit"}),P(`git -C /tmp/v${t}-agave-mod checkout v${t}-mod`,{shell:!0,stdio:"inherit"}),P(`git -C /tmp/v${t}-agave-mod submodule update --init --recursive`,{shell:!0,stdio:"inherit"}),P(`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"}),P("sudo rm -rf /home/solv/.local/share/solana/install/active_release/bin/",{shell:!0,stdio:"inherit"}),P(`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"}),P(`sudo rm -rf /tmp/v${t}-agave-mod`,{shell:!0,stdio:"inherit"})):(P(`mkdir /tmp/v${t}-agave`,{shell:!0,stdio:"inherit"}),P(`cd /tmp/v${t}-agave`,{shell:!0,stdio:"inherit"}),P(`git clone https://github.com/anza-xyz/agave.git --recurse-submodules /tmp/v${t}-agave`,{shell:!0,stdio:"inherit"}),P(`git -C /tmp/v${t}-agave checkout v${t}`,{shell:!0,stdio:"inherit"}),P(`git -C /tmp/v${t}-agave submodule update --init --recursive`,{shell:!0,stdio:"inherit"}),P(`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"}),P("sudo rm -rf /home/solv/.local/share/solana/install/active_release/bin/",{shell:!0,stdio:"inherit"}),P(`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"}),P(`sudo rm -rf /tmp/v${t}-agave`,{shell:!0,stdio:"inherit"})):e?P(`sh -c "$(curl --netrc-optional -sSfL https://raw.githubusercontent.com/gabrielhicks/agave/v${t}-mod/installer)"`,{shell:!0,stdio:"inherit"}):P(`sh -c "$(curl --netrc-optional -sSfL https://release.anza.xyz/v${t}/install)"`,{shell:!0,stdio:"inherit"})},"installAgave"),Dt=Vi;var Er="agave-validator",Di=r(()=>{try{return Er}catch(t){return console.error(t),Er}},"getSolanaCLI"),at=Di;var Oe=r(async(t,e=!1,o=!1)=>{Dt(t,e,o)},"updateVersion"),ke=r(async(t,e=!1,o=10)=>{let n=at(),s=`${n} --ledger ${w} exit --max-delinquent-stake ${t} --monitor --min-idle-time ${o}`;e&&(s=`${n} --ledger ${w} exit --max-delinquent-stake ${t} --min-idle-time ${o}`),bi(s,{shell:!0,stdio:"inherit"})},"monitorUpdate");import an from"chalk";var kt;(function(t){t.EN="en",t.JA="ja"})(kt||(kt={}));var gr;(function(t){t[t.DOUBLE=0]="DOUBLE",t[t.SINGLE=1]="SINGLE",t[t.TRIPLE=2]="TRIPLE"})(gr||(gr={}));var Ar;(function(t){t.SINGLE="single",t.DOUBLE="double",t.TRIPLE="triple"})(Ar||(Ar={}));var St;(function(t){t.MAINNET="mainnet-beta",t.TESTNET="testnet"})(St||(St={}));var wr;(function(t){t.VALIDATOR="validator",t.RPC="rpc"})(wr||(wr={}));var _r;(function(t){t.SOLANA="solana",t.JITO="jito",t.AGAVE="agave",t.FIREDANCER="firedancer"})(_r||(_r={}));var vr;(function(t){t.CO_HOST_RELAYER="co-host-relayer",t.SEPARATED_RELAYER="separated-relayer",t.WITHOUT_RELAYER="without-relayer"})(vr||(vr={}));var Nr;(function(t){t.FIREDANCER="firedancer",t.FRANKENDANCER="frankendancer"})(Nr||(Nr={}));var Ce;(function(t){t[t.TESTNET_VALIDATOR=0]="TESTNET_VALIDATOR",t[t.MAINNET_VALIDATOR=1]="MAINNET_VALIDATOR",t[t.RPC_NODE=2]="RPC_NODE"})(Ce||(Ce={}));var Ie;(function(t){t.SOLANA_CLIENT="SolanaClient",t.JITO_MEV="JitoMev",t.FIREDANCER="Firedancer"})(Ie||(Ie={}));var kr=!1,Cr=!1,Ir=!1,Lr=!1,G={ID:"solv",LANG:kt.EN,USERNAME:"solv",TESTNET_SOLANA_VERSION:"2.3.11",MAINNET_SOLANA_VERSION:"2.3.11",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},M={ROOT:"/home/solv",AUTHORIZED_KEYS:"/home/solv/.ssh/authorized_keys"},_={ROOT:"/mnt",ACCOUNTS:"/mnt/accounts",LEDGER:"/mnt/ledger",SNAPSHOTS:"/mnt/snapshots"},it={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"},I={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=M.ROOT)=>{let e=t===M.ROOT?M.ROOT:t,o=`${e}/${I.MAINNET_VALIDATOR_KEY}`,n=`${e}/${I.MAINNET_VALIDATOR_VOTE_KEY}`,s=`${e}/${I.MAINNET_VALITATOR_AUTHORITY_KEY}`,a=`${e}/${I.TESTNET_VALIDATOR_KEY}`,i=`${e}/${I.TESTNET_VALIDATOR_VOTE_KEY}`,l=`${e}/${I.TESTNET_VALITATOR_AUTHORITY_KEY}`;return{mainnetValidatorKey:o,mainnetValidatorVoteKey:n,mainnetValidatorAuthorityKey:s,testnetValidatorKey:a,testnetValidatorVoteKey:i,testnetValidatorAuthorityKey:l}},"getAllKeyPaths"),Tt=r((t=!0)=>{let e=t?`${M.ROOT}/${I.TESTNET_VALIDATOR_KEY}`:`${M.ROOT}/${I.MAINNET_VALIDATOR_KEY}`,o=t?`${M.ROOT}/${I.TESTNET_VALIDATOR_VOTE_KEY}`:`${M.ROOT}/${I.MAINNET_VALIDATOR_VOTE_KEY}`,n=`${M.ROOT}/${it.LOG}`,s=_.ACCOUNTS,a=_.LEDGER,i=_.SNAPSHOTS,l=`${M.ROOT}/${it.STARTUP_SCRIPT}`;return{identity:e,voteAccount:o,log:n,accounts:s,ledger:a,scriptPath:l,snapshots:i}},"startupScriptPaths");var et="So1vW4Bm6ZURzJJHZy1JpsjoVY68z4cDgF4tTLwYMa5",Oo="7tAfLKgRVd9eywSQPuMbVNd51KGkaveZQuTjapL74Fwv",Pr="EiwSTx1Z2uJATDut682U7xzzquFR4UpQJUij3wSxVoSV",xr=9,lt="ELSoL1owwMWQ9foMsutweCsMKbTPVBD9pFqxQGidTaMC",$r="So11111111111111111111111111111111111111112",Vr="EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v",Dr="CvB1ztJvpYQPvdPBePtRzjL4aQidjydtUz61NWgcgQtP",Rr;(function(t){t[t.ELSOL=lt]="ELSOL",t[t.SOL=$r]="SOL",t[t.USDC=Vr]="USDC",t[t.EPCT=Dr]="EPCT"})(Rr||(Rr={}));var Or;(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"})(Or||(Or={}));var vu={[$r]:9,[lt]:9,[Vr]:6,[Dr]:6},Le="/home/solv/currentEpoch.json",ko=.5,Pe="https://api.testnet.solana.com";import{spawnSync as Co}from"child_process";var br=r(()=>{Co("pnpm add -g pnpm",{shell:!0,stdio:"inherit"});let t=G.NODE_VERSION;Co(`pnpm env use ${t} --global`,{shell:!0,stdio:"inherit"}),Co("pnpm add -g @gabrielhicks/solv",{shell:!0,stdio:"inherit"})},"updateSolv");var dt={version:"2.3.10",tag:"v2.3.10",commissionBps:0,relayerUrl:"http://frankfurt.mainnet.relayer.jito.wtf:8100",blockEngineUrl:"https://frankfurt.mainnet.block-engine.jito.wtf",shredReceiverAddr:"64.130.50.14:1002"},ee={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 Q}from"child_process";var xe=r((t=dt.tag,e=!1,o=!1)=>{o?e?Q(`sh -c "$(curl --netrc-optional -sSfL https://raw.githubusercontent.com/gabrielhicks/jito-solana/${t}-mod/installer)"`,{shell:!0,stdio:"inherit"}):(Q(`mkdir /tmp/${t}-jito`,{shell:!0,stdio:"inherit"}),Q(`cd /tmp/${t}-jito`,{shell:!0,stdio:"inherit"}),Q(`git clone https://github.com/jito-foundation/jito-solana.git --recurse-submodules /tmp/${t}-jito`,{shell:!0,stdio:"inherit"}),Q(`git -C /tmp/${t}-jito checkout ${t}-jito`,{shell:!0,stdio:"inherit"}),Q(`git -C /tmp/${t}-jito submodule update --init --recursive`,{shell:!0,stdio:"inherit"}),Q(`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"}),Q("sudo rm -rf /home/solv/.local/share/solana/install/active_release/bin/",{shell:!0,stdio:"inherit"}),Q(`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"}),Q(`sudo rm -rf /tmp/${t}-jito`,{shell:!0,stdio:"inherit"})):e?Q(`sh -c "$(curl --netrc-optional -sSfL https://raw.githubusercontent.com/gabrielhicks/jito-solana/${t}-mod/installer)"`,{shell:!0,stdio:"inherit"}):Q(`sh -c "$(curl --netrc-optional -sSfL https://release.jito.wtf/${t}-jito/install)"`,{shell:!0,stdio:"inherit"})},"jitoUpdate");import{readFile as Ki,writeFile as Ui}from"fs/promises";import{homedir as Mi}from"os";var oe=r(async t=>{let o=`${Mi()}/${it.JITO_CONFIG}`,s={...JSON.parse(await Ki(o,"utf8")),...t},a=JSON.stringify(s,null,2);await Ui(o,a),console.log(`Updated ${o} with new values.`)},"updateJitoSolvConfig");import{spawnSync as Kr}from"child_process";import Hi from"inquirer";var Ur=r((t,e=!0)=>{let o=e?"/home/solv/testnet-validator-keypair.json":"/home/solv/mainnet-validator-keypair.json",n=e?"/home/solv/testnet-vote-account-keypair.json":"/home/solv/mainnet-vote-account-keypair.json";Kr(`solana config set --url ${e?"testnet":"mainnet-beta"} --keypair ${o}`,{shell:!0,stdio:"inherit"});let a=`solana vote-update-commission ${n} ${t} ${o} --keypair ${o}`;Kr(a,{shell:!0,stdio:"inherit"})},"updateCommission"),Mr=r(async()=>await Hi.prompt([{type:"number",name:"commission",message:"Enter new commission",default:7}]),"updateCommissionAsk");import{execAsync as re}from"@skeet-framework/utils";import Fi from"chalk";import ji from"inquirer";var Hr=r(async()=>{let t=await ji.prompt([{name:"ip",type:"input",message:"Enter your IP address to allow access to RPC NODE:",default:"1.2.3.4"}]);await re("sudo ufw delete allow 8899/udp"),await re("sudo ufw delete allow 8899/tcp"),await re(`sudo ufw allow from ${t.ip} to any port 8899 proto tcp`),await re(`sudo ufw allow from ${t.ip} to any port 8899 proto udp`),await re("sudo ufw reload"),console.log(Fi.white("\u2714\uFE0F Firewall updated!"))},"updateFirewall");var Yi=r(()=>nr,"getSolvVersion"),bt=Yi;import{readFile as Bi,writeFile as zi}from"fs/promises";import{existsAsync as Wi}from"@skeet-framework/utils";var Io;(function(t){t.EN="en",t.JA="ja"})(Io||(Io={}));var Zu=Object.values(Io),f;(function(t){t.MAINNET="mainnet-beta",t.TESTNET="testnet"})(f||(f={}));var Fr=Object.values(f),A;(function(t){t.RPC="rpc",t.VALIDATOR="validator"})(A||(A={}));var jr=Object.values(A),T;(function(t){t.SOLANA="solana",t.AGAVE="agave",t.JITO="jito",t.FRANKENDANCER="frankendancer",t.NONE="none"})(T||(T={}));var Xu=Object.values(T).filter(t=>t!=="none"),K;(function(t){t.AGAVE="agave",t.JITO="jito",t.NONE="none"})(K||(K={}));var Yr=Object.values(K).filter(t=>t!=="none"),J;(function(t){t.SINGLE="single",t.DOUBLE="double",t.TRIPLE="triple"})(J||(J={}));var Ji={NETWORK:f.TESTNET,NODE_TYPE:A.RPC,VALIDATOR_TYPE:T.NONE,RPC_TYPE:K.AGAVE,MNT_DISK_TYPE:J.TRIPLE,TESTNET_SOLANA_VERSION:q,MAINNET_SOLANA_VERSION:b,NODE_VERSION:Tr,TESTNET_DELINQUENT_STAKE:10,MAINNET_DELINQUENT_STAKE:5,COMMISSION:5,DEFAULT_VALIDATOR_VOTE_ACCOUNT_PUBKEY:cr,STAKE_ACCOUNTS:[],HARVEST_ACCOUNT:"",IS_MEV_MODE:!1,RPC_URL:pr,KEYPAIR_PATH:"",DISCORD_WEBHOOK_URL:"",AUTO_UPDATE:!1,AUTO_RESTART:!1,IS_DUMMY:!1,API_KEY:"",LEDGER_PATH:w,ACCOUNTS_PATH:xt,SNAPSHOTS_PATH:st,MOD:!1},ut=Ji;import{homedir as qi}from"os";var Qi=r(async()=>{let e=`${qi()}/${Ae}`;return await Wi(e)?JSON.parse(await Bi(e,"utf-8")):(console.log("Creating default config file at",e),await zi(e,JSON.stringify(ut,null,2)),ut)},"readConfig"),V=Qi;import Zi from"node-fetch";var Z=r(async t=>{try{let e=await V();if(e.DISCORD_WEBHOOK_URL==="")throw new Error(`DISCORD_WEBHOOK_URL is empty
|
|
2
|
+
var Oi=Object.defineProperty;var r=(t,e)=>Oi(t,"name",{value:e,configurable:!0});import"dotenv/config";import{Command as Wd}from"commander";var nr="5.3.34";var sr={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"},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=sr.version;var Xt="https://validators.solutions";var Ae="solv4.config.json";var vt="identity.json",Nt="unstaked-identity.json",ar="relayer-keypair.json",Ci="mainnet-validator-keypair.json",Ii="mainnet-vote-account-keypair.json",Li="mainnet-authority-keypair.json",Pi="testnet-validator-keypair.json",xi="testnet-vote-account-keypair.json",$i="testnet-authority-keypair.json",x="/home/solv",R=`${x}/${vt}`,su=`${x}/${Nt}`,U=`${x}/${Ci}`,we=`${x}/${Ii}`,au=`${x}/${Li}`,$=`${x}/${Pi}`,_e=`${x}/${xi}`,iu=`${x}/${$i}`,W=`${x}/solana-validator.log`,nt=x+"/start-validator.sh",w="/mnt/ledger",xt="/mnt/accounts",st="/mnt/snapshots",ir="solana-validator",lr="agave-validator",cr="ELLB9W7ZCwRCV3FzWcCWoyKP6NjZJKArLyGtkqefnHcG";var ve=3,mr="https://api.testnet.solana.com",pr="https://api.mainnet-beta.solana.com",dr="https://verify.validators.solutions/solv-migrate",ur="https://jup.validators.solutions/v1/jup",No;(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"})(No||(No={}));var fr=Object.values(No),Ne="So11111111111111111111111111111111111111112",Re="EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v",Ro="ELSoL1owwMWQ9foMsutweCsMKbTPVBD9pFqxQGidTaMC";var hr="SOLV420",yr={So11111111111111111111111111111111111111112:"4Vwkpk3DTVrTGnUQTazsgQ1wxtU9QwZTmAXDaQRHg9Ra",EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v:"J8sqx9ZEoPRqboFAXK3c1R38zm41tRNJgUn2FzyeYQDj",J1toso1uCk3RLmjorhTtrVwY9HJ7X8V9yYac6Y7kGCPn:"HPj87TFMPZfm5nk1HmTH9a382RXn7h9oWftiFr3Xs12a",mSoLzYCxHdYgdzU16g5QSh3i5K3z3KZK7ytfqcJm7So:"8CX5tE9KvJ59HcoXwWf6tCZoRuz2JFSmunnbKC1ryaK9",bSo13r4TkiE4KumL71LsHTPpL2euBYLFx6h9HP3piy1:"782MdvLby3VfvKdfDYn9tX3DfNAtg7TcytNNFuepcoMH",CvB1ztJvpYQPvdPBePtRzjL4aQidjydtUz61NWgcgQtP:"BhR2L6J5q3xF1TxReXyHjaUh4MF6qV99tMsipzPAKeB",JUPyiwrYJFskUPiHa7hkeR8VUtAeFoSYbKedZNsDvCN:"212yg3Ev7khq4p1mESFGenF4nWefmkbC8f7mHM68j4vg",DezXAZ8z7PnrnRJjz3wXBoRgixCa6xjnB7YaB1pPB263:"61Ndjv9392jPRVGALdYgjjxGYa6TT6Gn2WLDSsmugE6U",jtojtomepa8beP8AuQc6eXt5FriJwfFMwQx2v2f9mCL:"2c9qVh8RQ6j2E2VdAEcCrRXMrd6g1vvPNZvAR6sbaGWo"};import{spawnSync as bi}from"child_process";var q="3.0.6",b="2.3.11",te="3.0.6",Rt="2.3.11",Sr="2.3.11",Ot="2.3.11";var Tr="20.17.0",$t="0.709.30000",Vt="0.708.20306";import{spawnSync as P}from"node:child_process";var Vi=r((t=b,e=!1,o=!1)=>{o?e?(P(`mkdir /tmp/v${t}-agave-mod`,{shell:!0,stdio:"inherit"}),P(`cd /tmp/v${t}-agave-mod`,{shell:!0,stdio:"inherit"}),P(`git clone https://github.com/gabrielhicks/agave.git --recurse-submodules /tmp/v${t}-agave-mod`,{shell:!0,stdio:"inherit"}),P(`git -C /tmp/v${t}-agave-mod checkout v${t}-mod`,{shell:!0,stdio:"inherit"}),P(`git -C /tmp/v${t}-agave-mod submodule update --init --recursive`,{shell:!0,stdio:"inherit"}),P(`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"}),P("sudo rm -rf /home/solv/.local/share/solana/install/active_release/bin/",{shell:!0,stdio:"inherit"}),P(`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"}),P(`sudo rm -rf /tmp/v${t}-agave-mod`,{shell:!0,stdio:"inherit"})):(P(`mkdir /tmp/v${t}-agave`,{shell:!0,stdio:"inherit"}),P(`cd /tmp/v${t}-agave`,{shell:!0,stdio:"inherit"}),P(`git clone https://github.com/anza-xyz/agave.git --recurse-submodules /tmp/v${t}-agave`,{shell:!0,stdio:"inherit"}),P(`git -C /tmp/v${t}-agave checkout v${t}`,{shell:!0,stdio:"inherit"}),P(`git -C /tmp/v${t}-agave submodule update --init --recursive`,{shell:!0,stdio:"inherit"}),P(`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"}),P("sudo rm -rf /home/solv/.local/share/solana/install/active_release/bin/",{shell:!0,stdio:"inherit"}),P(`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"}),P(`sudo rm -rf /tmp/v${t}-agave`,{shell:!0,stdio:"inherit"})):e?P(`sh -c "$(curl --netrc-optional -sSfL https://raw.githubusercontent.com/gabrielhicks/agave/v${t}-mod/installer)"`,{shell:!0,stdio:"inherit"}):P(`sh -c "$(curl --netrc-optional -sSfL https://release.anza.xyz/v${t}/install)"`,{shell:!0,stdio:"inherit"})},"installAgave"),Dt=Vi;var Er="agave-validator",Di=r(()=>{try{return Er}catch(t){return console.error(t),Er}},"getSolanaCLI"),at=Di;var Oe=r(async(t,e=!1,o=!1)=>{Dt(t,e,o)},"updateVersion"),ke=r(async(t,e=!1,o=10)=>{let n=at(),s=`${n} --ledger ${w} exit --max-delinquent-stake ${t} --monitor --min-idle-time ${o}`;e&&(s=`${n} --ledger ${w} exit --max-delinquent-stake ${t} --min-idle-time ${o}`),bi(s,{shell:!0,stdio:"inherit"})},"monitorUpdate");import an from"chalk";var kt;(function(t){t.EN="en",t.JA="ja"})(kt||(kt={}));var gr;(function(t){t[t.DOUBLE=0]="DOUBLE",t[t.SINGLE=1]="SINGLE",t[t.TRIPLE=2]="TRIPLE"})(gr||(gr={}));var Ar;(function(t){t.SINGLE="single",t.DOUBLE="double",t.TRIPLE="triple"})(Ar||(Ar={}));var St;(function(t){t.MAINNET="mainnet-beta",t.TESTNET="testnet"})(St||(St={}));var wr;(function(t){t.VALIDATOR="validator",t.RPC="rpc"})(wr||(wr={}));var _r;(function(t){t.SOLANA="solana",t.JITO="jito",t.AGAVE="agave",t.FIREDANCER="firedancer"})(_r||(_r={}));var vr;(function(t){t.CO_HOST_RELAYER="co-host-relayer",t.SEPARATED_RELAYER="separated-relayer",t.WITHOUT_RELAYER="without-relayer"})(vr||(vr={}));var Nr;(function(t){t.FIREDANCER="firedancer",t.FRANKENDANCER="frankendancer"})(Nr||(Nr={}));var Ce;(function(t){t[t.TESTNET_VALIDATOR=0]="TESTNET_VALIDATOR",t[t.MAINNET_VALIDATOR=1]="MAINNET_VALIDATOR",t[t.RPC_NODE=2]="RPC_NODE"})(Ce||(Ce={}));var Ie;(function(t){t.SOLANA_CLIENT="SolanaClient",t.JITO_MEV="JitoMev",t.FIREDANCER="Firedancer"})(Ie||(Ie={}));var kr=!1,Cr=!0,Ir=!1,Lr=!0,G={ID:"solv",LANG:kt.EN,USERNAME:"solv",TESTNET_SOLANA_VERSION:"3.0.6",MAINNET_SOLANA_VERSION:"2.3.11",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},M={ROOT:"/home/solv",AUTHORIZED_KEYS:"/home/solv/.ssh/authorized_keys"},_={ROOT:"/mnt",ACCOUNTS:"/mnt/accounts",LEDGER:"/mnt/ledger",SNAPSHOTS:"/mnt/snapshots"},it={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"},I={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=M.ROOT)=>{let e=t===M.ROOT?M.ROOT:t,o=`${e}/${I.MAINNET_VALIDATOR_KEY}`,n=`${e}/${I.MAINNET_VALIDATOR_VOTE_KEY}`,s=`${e}/${I.MAINNET_VALITATOR_AUTHORITY_KEY}`,a=`${e}/${I.TESTNET_VALIDATOR_KEY}`,i=`${e}/${I.TESTNET_VALIDATOR_VOTE_KEY}`,l=`${e}/${I.TESTNET_VALITATOR_AUTHORITY_KEY}`;return{mainnetValidatorKey:o,mainnetValidatorVoteKey:n,mainnetValidatorAuthorityKey:s,testnetValidatorKey:a,testnetValidatorVoteKey:i,testnetValidatorAuthorityKey:l}},"getAllKeyPaths"),Tt=r((t=!0)=>{let e=t?`${M.ROOT}/${I.TESTNET_VALIDATOR_KEY}`:`${M.ROOT}/${I.MAINNET_VALIDATOR_KEY}`,o=t?`${M.ROOT}/${I.TESTNET_VALIDATOR_VOTE_KEY}`:`${M.ROOT}/${I.MAINNET_VALIDATOR_VOTE_KEY}`,n=`${M.ROOT}/${it.LOG}`,s=_.ACCOUNTS,a=_.LEDGER,i=_.SNAPSHOTS,l=`${M.ROOT}/${it.STARTUP_SCRIPT}`;return{identity:e,voteAccount:o,log:n,accounts:s,ledger:a,scriptPath:l,snapshots:i}},"startupScriptPaths");var et="So1vW4Bm6ZURzJJHZy1JpsjoVY68z4cDgF4tTLwYMa5",Oo="7tAfLKgRVd9eywSQPuMbVNd51KGkaveZQuTjapL74Fwv",Pr="EiwSTx1Z2uJATDut682U7xzzquFR4UpQJUij3wSxVoSV",xr=9,lt="ELSoL1owwMWQ9foMsutweCsMKbTPVBD9pFqxQGidTaMC",$r="So11111111111111111111111111111111111111112",Vr="EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v",Dr="CvB1ztJvpYQPvdPBePtRzjL4aQidjydtUz61NWgcgQtP",Rr;(function(t){t[t.ELSOL=lt]="ELSOL",t[t.SOL=$r]="SOL",t[t.USDC=Vr]="USDC",t[t.EPCT=Dr]="EPCT"})(Rr||(Rr={}));var Or;(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"})(Or||(Or={}));var vu={[$r]:9,[lt]:9,[Vr]:6,[Dr]:6},Le="/home/solv/currentEpoch.json",ko=.5,Pe="https://api.testnet.solana.com";import{spawnSync as Co}from"child_process";var br=r(()=>{Co("pnpm add -g pnpm",{shell:!0,stdio:"inherit"});let t=G.NODE_VERSION;Co(`pnpm env use ${t} --global`,{shell:!0,stdio:"inherit"}),Co("pnpm add -g @gabrielhicks/solv",{shell:!0,stdio:"inherit"})},"updateSolv");var dt={version:"2.3.10",tag:"v2.3.10",commissionBps:0,relayerUrl:"http://frankfurt.mainnet.relayer.jito.wtf:8100",blockEngineUrl:"https://frankfurt.mainnet.block-engine.jito.wtf",shredReceiverAddr:"64.130.50.14:1002"},ee={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 Q}from"child_process";var xe=r((t=dt.tag,e=!1,o=!1)=>{o?e?Q(`sh -c "$(curl --netrc-optional -sSfL https://raw.githubusercontent.com/gabrielhicks/jito-solana/${t}-mod/installer)"`,{shell:!0,stdio:"inherit"}):(Q(`mkdir /tmp/${t}-jito`,{shell:!0,stdio:"inherit"}),Q(`cd /tmp/${t}-jito`,{shell:!0,stdio:"inherit"}),Q(`git clone https://github.com/jito-foundation/jito-solana.git --recurse-submodules /tmp/${t}-jito`,{shell:!0,stdio:"inherit"}),Q(`git -C /tmp/${t}-jito checkout ${t}-jito`,{shell:!0,stdio:"inherit"}),Q(`git -C /tmp/${t}-jito submodule update --init --recursive`,{shell:!0,stdio:"inherit"}),Q(`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"}),Q("sudo rm -rf /home/solv/.local/share/solana/install/active_release/bin/",{shell:!0,stdio:"inherit"}),Q(`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"}),Q(`sudo rm -rf /tmp/${t}-jito`,{shell:!0,stdio:"inherit"})):e?Q(`sh -c "$(curl --netrc-optional -sSfL https://raw.githubusercontent.com/gabrielhicks/jito-solana/${t}-mod/installer)"`,{shell:!0,stdio:"inherit"}):Q(`sh -c "$(curl --netrc-optional -sSfL https://release.jito.wtf/${t}-jito/install)"`,{shell:!0,stdio:"inherit"})},"jitoUpdate");import{readFile as Ki,writeFile as Ui}from"fs/promises";import{homedir as Mi}from"os";var oe=r(async t=>{let o=`${Mi()}/${it.JITO_CONFIG}`,s={...JSON.parse(await Ki(o,"utf8")),...t},a=JSON.stringify(s,null,2);await Ui(o,a),console.log(`Updated ${o} with new values.`)},"updateJitoSolvConfig");import{spawnSync as Kr}from"child_process";import Hi from"inquirer";var Ur=r((t,e=!0)=>{let o=e?"/home/solv/testnet-validator-keypair.json":"/home/solv/mainnet-validator-keypair.json",n=e?"/home/solv/testnet-vote-account-keypair.json":"/home/solv/mainnet-vote-account-keypair.json";Kr(`solana config set --url ${e?"testnet":"mainnet-beta"} --keypair ${o}`,{shell:!0,stdio:"inherit"});let a=`solana vote-update-commission ${n} ${t} ${o} --keypair ${o}`;Kr(a,{shell:!0,stdio:"inherit"})},"updateCommission"),Mr=r(async()=>await Hi.prompt([{type:"number",name:"commission",message:"Enter new commission",default:7}]),"updateCommissionAsk");import{execAsync as re}from"@skeet-framework/utils";import Fi from"chalk";import ji from"inquirer";var Hr=r(async()=>{let t=await ji.prompt([{name:"ip",type:"input",message:"Enter your IP address to allow access to RPC NODE:",default:"1.2.3.4"}]);await re("sudo ufw delete allow 8899/udp"),await re("sudo ufw delete allow 8899/tcp"),await re(`sudo ufw allow from ${t.ip} to any port 8899 proto tcp`),await re(`sudo ufw allow from ${t.ip} to any port 8899 proto udp`),await re("sudo ufw reload"),console.log(Fi.white("\u2714\uFE0F Firewall updated!"))},"updateFirewall");var Yi=r(()=>nr,"getSolvVersion"),bt=Yi;import{readFile as Bi,writeFile as zi}from"fs/promises";import{existsAsync as Wi}from"@skeet-framework/utils";var Io;(function(t){t.EN="en",t.JA="ja"})(Io||(Io={}));var Zu=Object.values(Io),f;(function(t){t.MAINNET="mainnet-beta",t.TESTNET="testnet"})(f||(f={}));var Fr=Object.values(f),A;(function(t){t.RPC="rpc",t.VALIDATOR="validator"})(A||(A={}));var jr=Object.values(A),T;(function(t){t.SOLANA="solana",t.AGAVE="agave",t.JITO="jito",t.FRANKENDANCER="frankendancer",t.NONE="none"})(T||(T={}));var Xu=Object.values(T).filter(t=>t!=="none"),K;(function(t){t.AGAVE="agave",t.JITO="jito",t.NONE="none"})(K||(K={}));var Yr=Object.values(K).filter(t=>t!=="none"),J;(function(t){t.SINGLE="single",t.DOUBLE="double",t.TRIPLE="triple"})(J||(J={}));var Ji={NETWORK:f.TESTNET,NODE_TYPE:A.RPC,VALIDATOR_TYPE:T.NONE,RPC_TYPE:K.AGAVE,MNT_DISK_TYPE:J.TRIPLE,TESTNET_SOLANA_VERSION:q,MAINNET_SOLANA_VERSION:b,NODE_VERSION:Tr,TESTNET_DELINQUENT_STAKE:10,MAINNET_DELINQUENT_STAKE:5,COMMISSION:5,DEFAULT_VALIDATOR_VOTE_ACCOUNT_PUBKEY:cr,STAKE_ACCOUNTS:[],HARVEST_ACCOUNT:"",IS_MEV_MODE:!1,RPC_URL:pr,KEYPAIR_PATH:"",DISCORD_WEBHOOK_URL:"",AUTO_UPDATE:!1,AUTO_RESTART:!1,IS_DUMMY:!1,API_KEY:"",LEDGER_PATH:w,ACCOUNTS_PATH:xt,SNAPSHOTS_PATH:st,MOD:!1},ut=Ji;import{homedir as qi}from"os";var Qi=r(async()=>{let e=`${qi()}/${Ae}`;return await Wi(e)?JSON.parse(await Bi(e,"utf-8")):(console.log("Creating default config file at",e),await zi(e,JSON.stringify(ut,null,2)),ut)},"readConfig"),V=Qi;import Zi from"node-fetch";var Z=r(async t=>{try{let e=await V();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 Zi(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 Gr}from"@solana/web3.js";var ne=r(async(t,e,o=!1,n=200)=>{let s={pubkey:e,isActive:!1,reason:""};try{let a=o?new Gr("https://api.testnet.solana.com"):new Gr(t,"confirmed"),i=await a.getVoteAccounts(),l=i.current.find(u=>u.votePubkey===e);if(!l)return i.delinquent.find(p=>p.votePubkey===e)?(s.isActive=!1,s.reason="Validator is delinquent.",s):(s.isActive=!1,s.reason="Validator is not found in both current and delinquent lists.",s);if(i=await a.getVoteAccounts(),l=i.current.find(u=>u.votePubkey===e),!l)return s.isActive=!1,s.reason="Validator is not found in the current list.",s;let c=l.lastVote,d=await a.getSlot()-c;return d>n?(s.isActive=!1,s.reason=`Validator has not voted for ${d} slots.`,s):(s.isActive=!0,s.reason="Validator is active and voting.",s)}catch(a){return console.error(a),s.isActive=!1,s.reason="Failed to check validator status.",s}},"isValidatorActive");import{spawnSync as Xi}from"child_process";var N=r(t=>{let e=`solana address --keypair ${t}`,{stdout:o}=Xi(e,{shell:!0,stdio:"pipe"});return o.toString().trim()},"getSolanaAddress");var tl=r(t=>new Promise(e=>setTimeout(e,t)),"sleep"),H=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:n}=v(),a=N(e?n:o),i=await ne(t.RPC_URL,a,e),l=0;for(;!i.isActive;){if(l>=Jr){console.log("Max retries reached, exiting...");let c=`\u26A0\uFE0F Validator is not active for ${Jr} minutes!
|
|
4
4
|
Account: ${i.pubkey}
|
|
5
5
|
Reason: ${i.reason}
|
|
@@ -435,11 +435,7 @@ user = "solv"
|
|
|
435
435
|
schedule_strategy = "balanced"
|
|
436
436
|
|
|
437
437
|
[net]
|
|
438
|
-
provider = "
|
|
439
|
-
|
|
440
|
-
[net.xdp]
|
|
441
|
-
xdp_mode = "drv"
|
|
442
|
-
xdp_zero_copy = true`;return{filePath:o,body:t?`name = "fd1"
|
|
438
|
+
provider = "socket"`;return{filePath:o,body:t?`name = "fd1"
|
|
443
439
|
user = "solv"
|
|
444
440
|
|
|
445
441
|
[log]
|