@gabrielhicks/solv 4.8.37 → 4.9.0
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 -2
- 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 ii=Object.defineProperty;var r=(t,e)=>ii(t,"name",{value:e,configurable:!0});import"dotenv/config";import{Command as Rd}from"commander";var Fo="4.8.37";var Yo={name:"@gabrielhicks/solv",version:Fo,description:"Solana Validator CLI SOLV",main:"dist/index.js",type:"module",repository:"https://github.com/gabrielhicks/solv",keywords:["solana","validator","cli","validator-tool","Node.js","web3"],files:["dist"],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 de=Yo.version;var jt="https://validators.solutions";var ue="solv4.config.json";var St="identity.json",yt="unstaked-identity.json",jo="relayer-keypair.json",li="mainnet-validator-keypair.json",mi="mainnet-vote-account-keypair.json",pi="mainnet-authority-keypair.json",di="testnet-validator-keypair.json",ui="testnet-vote-account-keypair.json",fi="testnet-authority-keypair.json",C="/home/solv",k=`${C}/${St}`,Vd=`${C}/${yt}`,D=`${C}/${li}`,fe=`${C}/${mi}`,$d=`${C}/${pi}`,I=`${C}/${di}`,Bo=`${C}/${ui}`,Dd=`${C}/${fi}`,q=`${C}/solana-validator.log`,Q=C+"/start-validator.sh",T="/mnt/ledger",Rt="/mnt/accounts",X="/mnt/snapshots",Jo="solana-validator",Go="agave-validator",zo="ELLB9W7ZCwRCV3FzWcCWoyKP6NjZJKArLyGtkqefnHcG";var he=3,Wo="https://api.testnet.solana.com",qo="https://api.mainnet-beta.solana.com",Qo="https://verify.validators.solutions/solv-migrate",Xo="https://jup.validators.solutions/v1/jup",io;(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"})(io||(io={}));var Zo=Object.values(io),Se="So11111111111111111111111111111111111111112",ye="EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v",co="ELSoL1owwMWQ9foMsutweCsMKbTPVBD9pFqxQGidTaMC";var tr="SOLV420",er={So11111111111111111111111111111111111111112:"4Vwkpk3DTVrTGnUQTazsgQ1wxtU9QwZTmAXDaQRHg9Ra",EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v:"J8sqx9ZEoPRqboFAXK3c1R38zm41tRNJgUn2FzyeYQDj",J1toso1uCk3RLmjorhTtrVwY9HJ7X8V9yYac6Y7kGCPn:"HPj87TFMPZfm5nk1HmTH9a382RXn7h9oWftiFr3Xs12a",mSoLzYCxHdYgdzU16g5QSh3i5K3z3KZK7ytfqcJm7So:"8CX5tE9KvJ59HcoXwWf6tCZoRuz2JFSmunnbKC1ryaK9",bSo13r4TkiE4KumL71LsHTPpL2euBYLFx6h9HP3piy1:"782MdvLby3VfvKdfDYn9tX3DfNAtg7TcytNNFuepcoMH",CvB1ztJvpYQPvdPBePtRzjL4aQidjydtUz61NWgcgQtP:"BhR2L6J5q3xF1TxReXyHjaUh4MF6qV99tMsipzPAKeB",JUPyiwrYJFskUPiHa7hkeR8VUtAeFoSYbKedZNsDvCN:"212yg3Ev7khq4p1mESFGenF4nWefmkbC8f7mHM68j4vg",DezXAZ8z7PnrnRJjz3wXBoRgixCa6xjnB7YaB1pPB263:"61Ndjv9392jPRVGALdYgjjxGYa6TT6Gn2WLDSsmugE6U",jtojtomepa8beP8AuQc6eXt5FriJwfFMwQx2v2f9mCL:"2c9qVh8RQ6j2E2VdAEcCrRXMrd6g1vvPNZvAR6sbaGWo"};import{spawnSync as Ti}from"child_process";import{spawnSync as hi}from"node:child_process";var Si=r(t=>{hi(`sh -c "$(curl -sSfL https://raw.githubusercontent.com/gabrielhicks/agave/v${t}-mod/installer)"`,{shell:!0,stdio:"inherit"})},"installAgave"),Ct=Si;var or="agave-validator",yi=r(()=>{try{return or}catch(t){return console.error(t),or}},"getSolanaCLI"),K=yi;var Te=r(async t=>{Ct(t)},"updateVersion"),lo=r(async(t,e=!1)=>{let o=K(),n=`${o} --ledger ${T} exit --max-delinquent-stake ${t} --monitor`;e&&(n=`${o} --ledger ${T} exit --max-delinquent-stake ${t}`),Ti(n,{shell:!0,stdio:"inherit"})},"monitorUpdate");import Yr from"chalk";var Tt;(function(t){t.EN="en",t.JA="ja"})(Tt||(Tt={}));var rr;(function(t){t[t.DOUBLE=0]="DOUBLE",t[t.SINGLE=1]="SINGLE"})(rr||(rr={}));var nr;(function(t){t.SINGLE="single",t.DOUBLE="double"})(nr||(nr={}));var mt;(function(t){t.MAINNET="mainnet-beta",t.TESTNET="testnet"})(mt||(mt={}));var sr;(function(t){t.VALIDATOR="validator",t.RPC="rpc"})(sr||(sr={}));var ar;(function(t){t.SOLANA="solana",t.JITO="jito",t.AGAVE="agave",t.FIREDANCER="firedancer"})(ar||(ar={}));var ir;(function(t){t.CO_HOST_RELAYER="co-host-relayer",t.SEPARATED_RELAYER="separated-relayer",t.WITHOUT_RELAYER="without-relayer"})(ir||(ir={}));var cr;(function(t){t.FIREDANCER="firedancer",t.FRANKENDANCER="frankendancer"})(cr||(cr={}));var Ee;(function(t){t[t.TESTNET_VALIDATOR=0]="TESTNET_VALIDATOR",t[t.MAINNET_VALIDATOR=1]="MAINNET_VALIDATOR",t[t.RPC_NODE=2]="RPC_NODE"})(Ee||(Ee={}));var ge;(function(t){t.SOLANA_CLIENT="SolanaClient",t.JITO_MEV="JitoMev",t.FIREDANCER="Firedancer"})(ge||(ge={}));var pr=!1,dr=!0,M={ID:"solv",LANG:Tt.EN,USERNAME:"solv",TESTNET_SOLANA_VERSION:"2.0.8",MAINNET_SOLANA_VERSION:"1.18.23",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"},b={ROOT:"/home/solv",AUTHORIZED_KEYS:"/home/solv/.ssh/authorized_keys"},v={ROOT:"/mnt",ACCOUNTS:"/mnt/accounts",LEDGER:"/mnt/ledger",SNAPSHOTS:"/mnt/snapshots"},Z={LOG:"solana-validator.log",STARTUP_SCRIPT:"start-validator.sh",CONFIG:"solv.config.json",JITO_CONFIG:"jito.config.json"},L={SOL_SERVICE:"/etc/systemd/system/solv.service",SOL_LOGROTATE:"/etc/logrotate.d/solana",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"},R={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"},N=r((t=b.ROOT)=>{let e=t===b.ROOT?b.ROOT:t,o=`${e}/${R.MAINNET_VALIDATOR_KEY}`,n=`${e}/${R.MAINNET_VALIDATOR_VOTE_KEY}`,s=`${e}/${R.MAINNET_VALITATOR_AUTHORITY_KEY}`,a=`${e}/${R.TESTNET_VALIDATOR_KEY}`,i=`${e}/${R.TESTNET_VALIDATOR_VOTE_KEY}`,c=`${e}/${R.TESTNET_VALITATOR_AUTHORITY_KEY}`;return{mainnetValidatorKey:o,mainnetValidatorVoteKey:n,mainnetValidatorAuthorityKey:s,testnetValidatorKey:a,testnetValidatorVoteKey:i,testnetValidatorAuthorityKey:c}},"getAllKeyPaths"),pt=r((t=!0)=>{let e=t?`${b.ROOT}/${R.TESTNET_VALIDATOR_KEY}`:`${b.ROOT}/${R.MAINNET_VALIDATOR_KEY}`,o=t?`${b.ROOT}/${R.TESTNET_VALIDATOR_VOTE_KEY}`:`${b.ROOT}/${R.MAINNET_VALIDATOR_VOTE_KEY}`,n=`${b.ROOT}/${Z.LOG}`,s=v.ACCOUNTS,a=v.LEDGER,i=v.SNAPSHOTS,c=`${b.ROOT}/${Z.STARTUP_SCRIPT}`;return{identity:e,voteAccount:o,log:n,accounts:s,ledger:a,scriptPath:c,snapshots:i}},"startupScriptPaths");var z="So1vW4Bm6ZURzJJHZy1JpsjoVY68z4cDgF4tTLwYMa5",mo="7tAfLKgRVd9eywSQPuMbVNd51KGkaveZQuTjapL74Fwv",ur="EiwSTx1Z2uJATDut682U7xzzquFR4UpQJUij3wSxVoSV",fr=9,tt="ELSoL1owwMWQ9foMsutweCsMKbTPVBD9pFqxQGidTaMC",hr="So11111111111111111111111111111111111111112",Sr="EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v",yr="CvB1ztJvpYQPvdPBePtRzjL4aQidjydtUz61NWgcgQtP",lr;(function(t){t[t.ELSOL=tt]="ELSOL",t[t.SOL=hr]="SOL",t[t.USDC=Sr]="USDC",t[t.EPCT=yr]="EPCT"})(lr||(lr={}));var mr;(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"})(mr||(mr={}));var Qd={[hr]:9,[tt]:9,[Sr]:6,[yr]:6},Ae="/home/solv/currentEpoch.json",po=.5,we="https://api.testnet.solana.com";import{spawnSync as uo}from"child_process";var Tr=r(()=>{uo("pnpm add -g pnpm",{shell:!0,stdio:"inherit"});let t=M.NODE_VERSION;uo(`pnpm env use ${t} --global`,{shell:!0,stdio:"inherit"}),uo("pnpm add -g @gabrielhicks/solv",{shell:!0,stdio:"inherit"})},"updateSolv");var at={version:"2.1.14",tag:"v2.1.14-mod",commissionBps:1e3,relayerUrl:"https://frankfurt.mainnet.block-engine.jito.wtf",blockEngineUrl:"http://frankfurt.mainnet.relayer.jito.wtf:8100",shredReceiverAddr:"145.40.93.84:1002"},fo={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"},Frankfurt:{BLOCK_ENGINE_URL:"https://frankfurt.mainnet.block-engine.jito.wtf",RELAYER_URL:"http://frankfurt.mainnet.relayer.jito.wtf:8100",SHRED_RECEIVER_ADDR:"145.40.93.84: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"}};import{spawnSync as Ei}from"child_process";var _e=r((t=at.tag)=>{Ei(`sh -c "$(curl -sSfL https://raw.githubusercontent.com/gabrielhicks/jito-solana/${t}/installer)"`,{shell:!0,stdio:"inherit"})},"jitoUpdate");import{readFile as gi,writeFile as Ai}from"fs/promises";import{homedir as wi}from"os";var Bt=r(async t=>{let o=`${wi()}/${Z.JITO_CONFIG}`,s={...JSON.parse(await gi(o,"utf8")),...t},a=JSON.stringify(s,null,2);await Ai(o,a),console.log(`Updated ${o} with new values.`)},"updateJitoSolvConfig");import{spawnSync as Er}from"child_process";import _i from"inquirer";var gr=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";Er(`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}`;Er(a,{shell:!0,stdio:"inherit"})},"updateCommission"),Ar=r(async()=>await _i.prompt([{type:"number",name:"commission",message:"Enter new commission",default:7}]),"updateCommissionAsk");import{execAsync as Jt}from"@skeet-framework/utils";import Ni from"chalk";import vi from"inquirer";var wr=r(async()=>{let t=await vi.prompt([{name:"ip",type:"input",message:"Enter your IP address to allow access to RPC NODE:",default:"1.2.3.4"}]);await Jt("sudo ufw delete allow 8899/udp"),await Jt("sudo ufw delete allow 8899/tcp"),await Jt(`sudo ufw allow from ${t.ip} to any port 8899 proto tcp`),await Jt(`sudo ufw allow from ${t.ip} to any port 8899 proto udp`),await Jt("sudo ufw reload"),console.log(Ni.white("\u2714\uFE0F Firewall updated!"))},"updateFirewall");var Oi=r(()=>Fo,"getSolvVersion"),Pt=Oi;import{readFile as Ci,writeFile as Pi}from"fs/promises";import{existsAsync as Ii}from"@skeet-framework/utils";var ho;(function(t){t.EN="en",t.JA="ja"})(ho||(ho={}));var vu=Object.values(ho),u;(function(t){t.MAINNET="mainnet-beta",t.TESTNET="testnet"})(u||(u={}));var _r=Object.values(u),E;(function(t){t.RPC="rpc",t.VALIDATOR="validator"})(E||(E={}));var Nr=Object.values(E),A;(function(t){t.SOLANA="solana",t.AGAVE="agave",t.JITO="jito",t.FRANKENDANCER="frankendancer",t.NONE="none"})(A||(A={}));var Ou=Object.values(A).filter(t=>t!=="none"),$;(function(t){t.AGAVE="agave",t.JITO="jito",t.NONE="none"})($||($={}));var vr=Object.values($).filter(t=>t!=="none"),W;(function(t){t.SINGLE="single",t.DOUBLE="double",t.TRIPLE="triple"})(W||(W={}));var et="2.1.14",ot="2.1.14",Et="2.1.14",Gt="2.1.14",Or="2.1.14",gt="2.1.14";var kr="20.17.0";var Rr="0.404.20113";var Ri={NETWORK:u.TESTNET,NODE_TYPE:E.RPC,VALIDATOR_TYPE:A.NONE,RPC_TYPE:$.AGAVE,MNT_DISK_TYPE:W.TRIPLE,TESTNET_SOLANA_VERSION:et,MAINNET_SOLANA_VERSION:ot,NODE_VERSION:kr,TESTNET_DELINQUENT_STAKE:5,MAINNET_DELINQUENT_STAKE:5,COMMISSION:5,DEFAULT_VALIDATOR_VOTE_ACCOUNT_PUBKEY:zo,STAKE_ACCOUNTS:[],HARVEST_ACCOUNT:"",IS_MEV_MODE:!1,RPC_URL:qo,KEYPAIR_PATH:"",DISCORD_WEBHOOK_URL:"",AUTO_UPDATE:!1,AUTO_RESTART:!1,IS_DUMMY:!1,API_KEY:"",LEDGER_PATH:T,ACCOUNTS_PATH:Rt,SNAPSHOTS_PATH:X},it=Ri;import{homedir as Li}from"os";var xi=r(async()=>{let e=`${Li()}/${ue}`;return await Ii(e)?JSON.parse(await Ci(e,"utf-8")):(console.log("Creating default config file at",e),await Pi(e,JSON.stringify(it,null,2)),it)},"readConfig"),x=xi;import Vi from"node-fetch";var V=r(async t=>{try{let e=await x();if(e.DISCORD_WEBHOOK_URL==="")throw new Error(`DISCORD_WEBHOOK_URL is empty
|
|
2
|
+
var ii=Object.defineProperty;var r=(t,e)=>ii(t,"name",{value:e,configurable:!0});import"dotenv/config";import{Command as Rd}from"commander";var Fo="4.9.0";var Yo={name:"@gabrielhicks/solv",version:Fo,description:"Solana Validator CLI SOLV",main:"dist/index.js",type:"module",repository:"https://github.com/gabrielhicks/solv",keywords:["solana","validator","cli","validator-tool","Node.js","web3"],files:["dist"],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 de=Yo.version;var jt="https://validators.solutions";var ue="solv4.config.json";var St="identity.json",yt="unstaked-identity.json",jo="relayer-keypair.json",li="mainnet-validator-keypair.json",mi="mainnet-vote-account-keypair.json",pi="mainnet-authority-keypair.json",di="testnet-validator-keypair.json",ui="testnet-vote-account-keypair.json",fi="testnet-authority-keypair.json",C="/home/solv",k=`${C}/${St}`,Vd=`${C}/${yt}`,D=`${C}/${li}`,fe=`${C}/${mi}`,$d=`${C}/${pi}`,I=`${C}/${di}`,Bo=`${C}/${ui}`,Dd=`${C}/${fi}`,q=`${C}/solana-validator.log`,Q=C+"/start-validator.sh",T="/mnt/ledger",Rt="/mnt/accounts",X="/mnt/snapshots",Jo="solana-validator",Go="agave-validator",zo="ELLB9W7ZCwRCV3FzWcCWoyKP6NjZJKArLyGtkqefnHcG";var he=3,Wo="https://api.testnet.solana.com",qo="https://api.mainnet-beta.solana.com",Qo="https://verify.validators.solutions/solv-migrate",Xo="https://jup.validators.solutions/v1/jup",io;(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"})(io||(io={}));var Zo=Object.values(io),Se="So11111111111111111111111111111111111111112",ye="EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v",co="ELSoL1owwMWQ9foMsutweCsMKbTPVBD9pFqxQGidTaMC";var tr="SOLV420",er={So11111111111111111111111111111111111111112:"4Vwkpk3DTVrTGnUQTazsgQ1wxtU9QwZTmAXDaQRHg9Ra",EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v:"J8sqx9ZEoPRqboFAXK3c1R38zm41tRNJgUn2FzyeYQDj",J1toso1uCk3RLmjorhTtrVwY9HJ7X8V9yYac6Y7kGCPn:"HPj87TFMPZfm5nk1HmTH9a382RXn7h9oWftiFr3Xs12a",mSoLzYCxHdYgdzU16g5QSh3i5K3z3KZK7ytfqcJm7So:"8CX5tE9KvJ59HcoXwWf6tCZoRuz2JFSmunnbKC1ryaK9",bSo13r4TkiE4KumL71LsHTPpL2euBYLFx6h9HP3piy1:"782MdvLby3VfvKdfDYn9tX3DfNAtg7TcytNNFuepcoMH",CvB1ztJvpYQPvdPBePtRzjL4aQidjydtUz61NWgcgQtP:"BhR2L6J5q3xF1TxReXyHjaUh4MF6qV99tMsipzPAKeB",JUPyiwrYJFskUPiHa7hkeR8VUtAeFoSYbKedZNsDvCN:"212yg3Ev7khq4p1mESFGenF4nWefmkbC8f7mHM68j4vg",DezXAZ8z7PnrnRJjz3wXBoRgixCa6xjnB7YaB1pPB263:"61Ndjv9392jPRVGALdYgjjxGYa6TT6Gn2WLDSsmugE6U",jtojtomepa8beP8AuQc6eXt5FriJwfFMwQx2v2f9mCL:"2c9qVh8RQ6j2E2VdAEcCrRXMrd6g1vvPNZvAR6sbaGWo"};import{spawnSync as Ti}from"child_process";import{spawnSync as hi}from"node:child_process";var Si=r(t=>{hi(`sh -c "$(curl -sSfL https://raw.githubusercontent.com/gabrielhicks/agave/v${t}-mod/installer)"`,{shell:!0,stdio:"inherit"})},"installAgave"),Ct=Si;var or="agave-validator",yi=r(()=>{try{return or}catch(t){return console.error(t),or}},"getSolanaCLI"),K=yi;var Te=r(async t=>{Ct(t)},"updateVersion"),lo=r(async(t,e=!1)=>{let o=K(),n=`${o} --ledger ${T} exit --max-delinquent-stake ${t} --monitor`;e&&(n=`${o} --ledger ${T} exit --max-delinquent-stake ${t}`),Ti(n,{shell:!0,stdio:"inherit"})},"monitorUpdate");import Yr from"chalk";var Tt;(function(t){t.EN="en",t.JA="ja"})(Tt||(Tt={}));var rr;(function(t){t[t.DOUBLE=0]="DOUBLE",t[t.SINGLE=1]="SINGLE"})(rr||(rr={}));var nr;(function(t){t.SINGLE="single",t.DOUBLE="double"})(nr||(nr={}));var mt;(function(t){t.MAINNET="mainnet-beta",t.TESTNET="testnet"})(mt||(mt={}));var sr;(function(t){t.VALIDATOR="validator",t.RPC="rpc"})(sr||(sr={}));var ar;(function(t){t.SOLANA="solana",t.JITO="jito",t.AGAVE="agave",t.FIREDANCER="firedancer"})(ar||(ar={}));var ir;(function(t){t.CO_HOST_RELAYER="co-host-relayer",t.SEPARATED_RELAYER="separated-relayer",t.WITHOUT_RELAYER="without-relayer"})(ir||(ir={}));var cr;(function(t){t.FIREDANCER="firedancer",t.FRANKENDANCER="frankendancer"})(cr||(cr={}));var Ee;(function(t){t[t.TESTNET_VALIDATOR=0]="TESTNET_VALIDATOR",t[t.MAINNET_VALIDATOR=1]="MAINNET_VALIDATOR",t[t.RPC_NODE=2]="RPC_NODE"})(Ee||(Ee={}));var ge;(function(t){t.SOLANA_CLIENT="SolanaClient",t.JITO_MEV="JitoMev",t.FIREDANCER="Firedancer"})(ge||(ge={}));var pr=!1,dr=!0,M={ID:"solv",LANG:Tt.EN,USERNAME:"solv",TESTNET_SOLANA_VERSION:"2.0.8",MAINNET_SOLANA_VERSION:"1.18.23",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"},b={ROOT:"/home/solv",AUTHORIZED_KEYS:"/home/solv/.ssh/authorized_keys"},v={ROOT:"/mnt",ACCOUNTS:"/mnt/accounts",LEDGER:"/mnt/ledger",SNAPSHOTS:"/mnt/snapshots"},Z={LOG:"solana-validator.log",STARTUP_SCRIPT:"start-validator.sh",CONFIG:"solv.config.json",JITO_CONFIG:"jito.config.json"},L={SOL_SERVICE:"/etc/systemd/system/solv.service",SOL_LOGROTATE:"/etc/logrotate.d/solana",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"},R={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"},N=r((t=b.ROOT)=>{let e=t===b.ROOT?b.ROOT:t,o=`${e}/${R.MAINNET_VALIDATOR_KEY}`,n=`${e}/${R.MAINNET_VALIDATOR_VOTE_KEY}`,s=`${e}/${R.MAINNET_VALITATOR_AUTHORITY_KEY}`,a=`${e}/${R.TESTNET_VALIDATOR_KEY}`,i=`${e}/${R.TESTNET_VALIDATOR_VOTE_KEY}`,c=`${e}/${R.TESTNET_VALITATOR_AUTHORITY_KEY}`;return{mainnetValidatorKey:o,mainnetValidatorVoteKey:n,mainnetValidatorAuthorityKey:s,testnetValidatorKey:a,testnetValidatorVoteKey:i,testnetValidatorAuthorityKey:c}},"getAllKeyPaths"),pt=r((t=!0)=>{let e=t?`${b.ROOT}/${R.TESTNET_VALIDATOR_KEY}`:`${b.ROOT}/${R.MAINNET_VALIDATOR_KEY}`,o=t?`${b.ROOT}/${R.TESTNET_VALIDATOR_VOTE_KEY}`:`${b.ROOT}/${R.MAINNET_VALIDATOR_VOTE_KEY}`,n=`${b.ROOT}/${Z.LOG}`,s=v.ACCOUNTS,a=v.LEDGER,i=v.SNAPSHOTS,c=`${b.ROOT}/${Z.STARTUP_SCRIPT}`;return{identity:e,voteAccount:o,log:n,accounts:s,ledger:a,scriptPath:c,snapshots:i}},"startupScriptPaths");var z="So1vW4Bm6ZURzJJHZy1JpsjoVY68z4cDgF4tTLwYMa5",mo="7tAfLKgRVd9eywSQPuMbVNd51KGkaveZQuTjapL74Fwv",ur="EiwSTx1Z2uJATDut682U7xzzquFR4UpQJUij3wSxVoSV",fr=9,tt="ELSoL1owwMWQ9foMsutweCsMKbTPVBD9pFqxQGidTaMC",hr="So11111111111111111111111111111111111111112",Sr="EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v",yr="CvB1ztJvpYQPvdPBePtRzjL4aQidjydtUz61NWgcgQtP",lr;(function(t){t[t.ELSOL=tt]="ELSOL",t[t.SOL=hr]="SOL",t[t.USDC=Sr]="USDC",t[t.EPCT=yr]="EPCT"})(lr||(lr={}));var mr;(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"})(mr||(mr={}));var Qd={[hr]:9,[tt]:9,[Sr]:6,[yr]:6},Ae="/home/solv/currentEpoch.json",po=.5,we="https://api.testnet.solana.com";import{spawnSync as uo}from"child_process";var Tr=r(()=>{uo("pnpm add -g pnpm",{shell:!0,stdio:"inherit"});let t=M.NODE_VERSION;uo(`pnpm env use ${t} --global`,{shell:!0,stdio:"inherit"}),uo("pnpm add -g @gabrielhicks/solv",{shell:!0,stdio:"inherit"})},"updateSolv");var at={version:"2.1.14",tag:"v2.1.14-mod",commissionBps:1e3,relayerUrl:"https://frankfurt.mainnet.block-engine.jito.wtf",blockEngineUrl:"http://frankfurt.mainnet.relayer.jito.wtf:8100",shredReceiverAddr:"145.40.93.84:1002"},fo={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"},Frankfurt:{BLOCK_ENGINE_URL:"https://frankfurt.mainnet.block-engine.jito.wtf",RELAYER_URL:"http://frankfurt.mainnet.relayer.jito.wtf:8100",SHRED_RECEIVER_ADDR:"145.40.93.84: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"}};import{spawnSync as Ei}from"child_process";var _e=r((t=at.tag)=>{Ei(`sh -c "$(curl -sSfL https://raw.githubusercontent.com/gabrielhicks/jito-solana/${t}/installer)"`,{shell:!0,stdio:"inherit"})},"jitoUpdate");import{readFile as gi,writeFile as Ai}from"fs/promises";import{homedir as wi}from"os";var Bt=r(async t=>{let o=`${wi()}/${Z.JITO_CONFIG}`,s={...JSON.parse(await gi(o,"utf8")),...t},a=JSON.stringify(s,null,2);await Ai(o,a),console.log(`Updated ${o} with new values.`)},"updateJitoSolvConfig");import{spawnSync as Er}from"child_process";import _i from"inquirer";var gr=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";Er(`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}`;Er(a,{shell:!0,stdio:"inherit"})},"updateCommission"),Ar=r(async()=>await _i.prompt([{type:"number",name:"commission",message:"Enter new commission",default:7}]),"updateCommissionAsk");import{execAsync as Jt}from"@skeet-framework/utils";import Ni from"chalk";import vi from"inquirer";var wr=r(async()=>{let t=await vi.prompt([{name:"ip",type:"input",message:"Enter your IP address to allow access to RPC NODE:",default:"1.2.3.4"}]);await Jt("sudo ufw delete allow 8899/udp"),await Jt("sudo ufw delete allow 8899/tcp"),await Jt(`sudo ufw allow from ${t.ip} to any port 8899 proto tcp`),await Jt(`sudo ufw allow from ${t.ip} to any port 8899 proto udp`),await Jt("sudo ufw reload"),console.log(Ni.white("\u2714\uFE0F Firewall updated!"))},"updateFirewall");var Oi=r(()=>Fo,"getSolvVersion"),Pt=Oi;import{readFile as Ci,writeFile as Pi}from"fs/promises";import{existsAsync as Ii}from"@skeet-framework/utils";var ho;(function(t){t.EN="en",t.JA="ja"})(ho||(ho={}));var vu=Object.values(ho),u;(function(t){t.MAINNET="mainnet-beta",t.TESTNET="testnet"})(u||(u={}));var _r=Object.values(u),E;(function(t){t.RPC="rpc",t.VALIDATOR="validator"})(E||(E={}));var Nr=Object.values(E),A;(function(t){t.SOLANA="solana",t.AGAVE="agave",t.JITO="jito",t.FRANKENDANCER="frankendancer",t.NONE="none"})(A||(A={}));var Ou=Object.values(A).filter(t=>t!=="none"),$;(function(t){t.AGAVE="agave",t.JITO="jito",t.NONE="none"})($||($={}));var vr=Object.values($).filter(t=>t!=="none"),W;(function(t){t.SINGLE="single",t.DOUBLE="double",t.TRIPLE="triple"})(W||(W={}));var et="2.1.14",ot="2.1.14",Et="2.1.14",Gt="2.1.14",Or="2.1.14",gt="2.1.14";var kr="20.17.0";var Rr="0.404.20113";var Ri={NETWORK:u.TESTNET,NODE_TYPE:E.RPC,VALIDATOR_TYPE:A.NONE,RPC_TYPE:$.AGAVE,MNT_DISK_TYPE:W.TRIPLE,TESTNET_SOLANA_VERSION:et,MAINNET_SOLANA_VERSION:ot,NODE_VERSION:kr,TESTNET_DELINQUENT_STAKE:5,MAINNET_DELINQUENT_STAKE:5,COMMISSION:5,DEFAULT_VALIDATOR_VOTE_ACCOUNT_PUBKEY:zo,STAKE_ACCOUNTS:[],HARVEST_ACCOUNT:"",IS_MEV_MODE:!1,RPC_URL:qo,KEYPAIR_PATH:"",DISCORD_WEBHOOK_URL:"",AUTO_UPDATE:!1,AUTO_RESTART:!1,IS_DUMMY:!1,API_KEY:"",LEDGER_PATH:T,ACCOUNTS_PATH:Rt,SNAPSHOTS_PATH:X},it=Ri;import{homedir as Li}from"os";var xi=r(async()=>{let e=`${Li()}/${ue}`;return await Ii(e)?JSON.parse(await Ci(e,"utf-8")):(console.log("Creating default config file at",e),await Pi(e,JSON.stringify(it,null,2)),it)},"readConfig"),x=xi;import Vi from"node-fetch";var V=r(async t=>{try{let e=await x();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 Vi(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 Hi}from"child_process";import{Connection as Cr}from"@solana/web3.js";var zt=r(async(t,e,o=!1,n=200)=>{let s={pubkey:e,isActive:!1,reason:""};try{let a=o?new Cr("https://api.testnet.solana.com"):new Cr(t,"confirmed"),i=await a.getVoteAccounts(),c=i.current.find(p=>p.votePubkey===e);if(!c)return i.delinquent.find(h=>h.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(),c=i.current.find(p=>p.votePubkey===e),!c)return s.isActive=!1,s.reason="Validator is not found in the current list.",s;let l=c.lastVote,d=await a.getSlot()-l;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 $i}from"child_process";var _=r(t=>{let e=`solana address --keypair ${t}`,{stdout:o}=$i(e,{shell:!0,stdio:"pipe"});return o.toString().trim()},"getSolanaAddress");var Di=r(t=>new Promise(e=>setTimeout(e,t)),"sleep"),rt=Di;import{sendDiscord as Ki}from"@skeet-framework/utils";var Pr=60,bi=r(async t=>{try{let e=t.NETWORK===u.TESTNET,{mainnetValidatorVoteKey:o,testnetValidatorVoteKey:n}=N(),a=_(e?n:o),i=await zt(t.RPC_URL,a,e),c=0;for(;!i.isActive;){if(c>=Pr){console.log("Max retries reached, exiting...");let l=`\u26A0\uFE0F Validator is not active for ${Pr} minutes!
|
|
4
4
|
Account: ${i.pubkey}
|
|
5
5
|
Reason: ${i.reason}
|
|
@@ -557,7 +557,7 @@ $ ssh solv@${t}
|
|
|
557
557
|
Failed Cmd: ln -sf ${me} ${Da}`));return}if(console.log(B.white("\u{1F7E2} Uploading the tower file to the new validator...")),Ut(`scp solv@${t}:${T}/tower-1_9-${e}.bin ${T}`,{shell:!0,stdio:"inherit"}).status!==0){console.log(B.yellow(`\u26A0\uFE0F Upload Tower File Failed. Please check your tower file
|
|
558
558
|
$ ssh solv@${t}
|
|
559
559
|
|
|
560
|
-
Failed Cmd: scp solv@${t}:${T}/tower-1_9-${e}.bin ${T}`));return}console.log(B.white("\u{1F7E2} Setting identity on the new validator..."));let S=`${c} -l ${T} set-identity --require-tower ${i}`;if(n==="fd"&&(S=`cd ~/firedancer && sudo fdctl set-identity --require-tower --config ~/firedancer/config.toml ${i}
|
|
560
|
+
Failed Cmd: scp solv@${t}:${T}/tower-1_9-${e}.bin ${T}`));return}console.log(B.white("\u{1F7E2} Setting identity on the new validator..."));let S=`${c} -l ${T} set-identity --require-tower ${i}`;if(n==="fd"&&(S=`cd ~/firedancer && sudo fdctl set-identity --require-tower --config ~/firedancer/config.toml ${i}`),Ut(S,{shell:!0,stdio:"inherit"}).status!==0){console.log(B.yellow(`\u26A0\uFE0F Set Identity Failed. Please check your Validator
|
|
561
561
|
|
|
562
562
|
Failed Cmd: ${c} -l ${T} set-identity ${i}
|
|
563
563
|
ln -sf ${i} ${k}`));return}if(Ut(`ln -sf ${i} ${k}`,{shell:!0,stdio:"inherit"}).status!==0){console.log(B.yellow(`\u26A0\uFE0F Chaning Identity Key Symlink Failed. Please check your Validator
|