@gabrielhicks/solv 5.2.12 → 5.2.13

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 Oi=Object.defineProperty;var r=(t,e)=>Oi(t,"name",{value:e,configurable:!0});import"dotenv/config";import{Command as Jd}from"commander";var or="5.2.12";var rr={name:"@gabrielhicks/solv",version:or,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 ye=rr.version;var Qt="https://validators.solutions";var Te="solv4.config.json";var At="identity.json",wt="unstaked-identity.json",nr="relayer-keypair.json",ki="mainnet-validator-keypair.json",Ci="mainnet-vote-account-keypair.json",Ii="mainnet-authority-keypair.json",Pi="testnet-validator-keypair.json",Li="testnet-vote-account-keypair.json",xi="testnet-authority-keypair.json",P="/home/solv",k=`${P}/${At}`,ru=`${P}/${wt}`,K=`${P}/${ki}`,Ee=`${P}/${Ci}`,nu=`${P}/${Ii}`,x=`${P}/${Pi}`,sr=`${P}/${Li}`,su=`${P}/${xi}`,Z=`${P}/solana-validator.log`,tt=P+"/start-validator.sh",w="/mnt/ledger",It="/mnt/accounts",et="/mnt/snapshots",ar="solana-validator",ir="agave-validator",lr="ELLB9W7ZCwRCV3FzWcCWoyKP6NjZJKArLyGtkqefnHcG";var ge=3,cr="https://api.testnet.solana.com",mr="https://api.mainnet-beta.solana.com",pr="https://verify.validators.solutions/solv-migrate",dr="https://jup.validators.solutions/v1/jup",Ao;(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"})(Ao||(Ao={}));var ur=Object.values(Ao),Ae="So11111111111111111111111111111111111111112",we="EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v",wo="ELSoL1owwMWQ9foMsutweCsMKbTPVBD9pFqxQGidTaMC";var fr="SOLV420",hr={So11111111111111111111111111111111111111112:"4Vwkpk3DTVrTGnUQTazsgQ1wxtU9QwZTmAXDaQRHg9Ra",EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v:"J8sqx9ZEoPRqboFAXK3c1R38zm41tRNJgUn2FzyeYQDj",J1toso1uCk3RLmjorhTtrVwY9HJ7X8V9yYac6Y7kGCPn:"HPj87TFMPZfm5nk1HmTH9a382RXn7h9oWftiFr3Xs12a",mSoLzYCxHdYgdzU16g5QSh3i5K3z3KZK7ytfqcJm7So:"8CX5tE9KvJ59HcoXwWf6tCZoRuz2JFSmunnbKC1ryaK9",bSo13r4TkiE4KumL71LsHTPpL2euBYLFx6h9HP3piy1:"782MdvLby3VfvKdfDYn9tX3DfNAtg7TcytNNFuepcoMH",CvB1ztJvpYQPvdPBePtRzjL4aQidjydtUz61NWgcgQtP:"BhR2L6J5q3xF1TxReXyHjaUh4MF6qV99tMsipzPAKeB",JUPyiwrYJFskUPiHa7hkeR8VUtAeFoSYbKedZNsDvCN:"212yg3Ev7khq4p1mESFGenF4nWefmkbC8f7mHM68j4vg",DezXAZ8z7PnrnRJjz3wXBoRgixCa6xjnB7YaB1pPB263:"61Ndjv9392jPRVGALdYgjjxGYa6TT6Gn2WLDSsmugE6U",jtojtomepa8beP8AuQc6eXt5FriJwfFMwQx2v2f9mCL:"2c9qVh8RQ6j2E2VdAEcCrRXMrd6g1vvPNZvAR6sbaGWo"};import{spawnSync as Di}from"child_process";import{spawnSync as Sr}from"node:child_process";var Vi=r((t,e=!1)=>{e?Sr(`sh -c "$(curl --netrc-optional -sSfL https://raw.githubusercontent.com/gabrielhicks/agave/v${t}-mod/installer)"`,{shell:!0,stdio:"inherit"}):Sr(`sh -c "$(curl --netrc-optional -sSfL https://release.anza.xyz/v${t}/install)"`,{shell:!0,stdio:"inherit"})},"installAgave"),Pt=Vi;var yr="agave-validator",$i=r(()=>{try{return yr}catch(t){return console.error(t),yr}},"getSolanaCLI"),ot=$i;var _e=r(async(t,e=!1)=>{Pt(t,e)},"updateVersion"),Ne=r(async(t,e=!1,o=10)=>{let n=ot(),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}`),Di(s,{shell:!0,stdio:"inherit"})},"monitorUpdate");import cn from"chalk";var _t;(function(t){t.EN="en",t.JA="ja"})(_t||(_t={}));var Tr;(function(t){t[t.DOUBLE=0]="DOUBLE",t[t.SINGLE=1]="SINGLE",t[t.TRIPLE=2]="TRIPLE"})(Tr||(Tr={}));var Er;(function(t){t.SINGLE="single",t.DOUBLE="double",t.TRIPLE="triple"})(Er||(Er={}));var ft;(function(t){t.MAINNET="mainnet-beta",t.TESTNET="testnet"})(ft||(ft={}));var gr;(function(t){t.VALIDATOR="validator",t.RPC="rpc"})(gr||(gr={}));var Ar;(function(t){t.SOLANA="solana",t.JITO="jito",t.AGAVE="agave",t.FIREDANCER="firedancer"})(Ar||(Ar={}));var wr;(function(t){t.CO_HOST_RELAYER="co-host-relayer",t.SEPARATED_RELAYER="separated-relayer",t.WITHOUT_RELAYER="without-relayer"})(wr||(wr={}));var _r;(function(t){t.FIREDANCER="firedancer",t.FRANKENDANCER="frankendancer"})(_r||(_r={}));var ve;(function(t){t[t.TESTNET_VALIDATOR=0]="TESTNET_VALIDATOR",t[t.MAINNET_VALIDATOR=1]="MAINNET_VALIDATOR",t[t.RPC_NODE=2]="RPC_NODE"})(ve||(ve={}));var Oe;(function(t){t.SOLANA_CLIENT="SolanaClient",t.JITO_MEV="JitoMev",t.FIREDANCER="Firedancer"})(Oe||(Oe={}));var Or=!1,Rr=!1,kr=!1,Cr=!1,j={ID:"solv",LANG:_t.EN,USERNAME:"solv",TESTNET_SOLANA_VERSION:"2.2.16",MAINNET_SOLANA_VERSION:"2.2.16",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},b={ROOT:"/home/solv",AUTHORIZED_KEYS:"/home/solv/.ssh/authorized_keys"},_={ROOT:"/mnt",ACCOUNTS:"/mnt/accounts",LEDGER:"/mnt/ledger",SNAPSHOTS:"/mnt/snapshots"},rt={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"},N=r((t=b.ROOT)=>{let e=t===b.ROOT?b.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"),ht=r((t=!0)=>{let e=t?`${b.ROOT}/${I.TESTNET_VALIDATOR_KEY}`:`${b.ROOT}/${I.MAINNET_VALIDATOR_KEY}`,o=t?`${b.ROOT}/${I.TESTNET_VALIDATOR_VOTE_KEY}`:`${b.ROOT}/${I.MAINNET_VALIDATOR_VOTE_KEY}`,n=`${b.ROOT}/${rt.LOG}`,s=_.ACCOUNTS,a=_.LEDGER,i=_.SNAPSHOTS,l=`${b.ROOT}/${rt.STARTUP_SCRIPT}`;return{identity:e,voteAccount:o,log:n,accounts:s,ledger:a,scriptPath:l,snapshots:i}},"startupScriptPaths");var Q="So1vW4Bm6ZURzJJHZy1JpsjoVY68z4cDgF4tTLwYMa5",_o="7tAfLKgRVd9eywSQPuMbVNd51KGkaveZQuTjapL74Fwv",Ir="EiwSTx1Z2uJATDut682U7xzzquFR4UpQJUij3wSxVoSV",Pr=9,nt="ELSoL1owwMWQ9foMsutweCsMKbTPVBD9pFqxQGidTaMC",Lr="So11111111111111111111111111111111111111112",xr="EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v",Vr="CvB1ztJvpYQPvdPBePtRzjL4aQidjydtUz61NWgcgQtP",Nr;(function(t){t[t.ELSOL=nt]="ELSOL",t[t.SOL=Lr]="SOL",t[t.USDC=xr]="USDC",t[t.EPCT=Vr]="EPCT"})(Nr||(Nr={}));var vr;(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"})(vr||(vr={}));var gu={[Lr]:9,[nt]:9,[xr]:6,[Vr]:6},Re="/home/solv/currentEpoch.json",No=.5,ke="https://api.testnet.solana.com";import{spawnSync as vo}from"child_process";var $r=r(()=>{vo("pnpm add -g pnpm",{shell:!0,stdio:"inherit"});let t=j.NODE_VERSION;vo(`pnpm env use ${t} --global`,{shell:!0,stdio:"inherit"}),vo("pnpm add -g @gabrielhicks/solv",{shell:!0,stdio:"inherit"})},"updateSolv");var ct={version:"2.1.21",tag:"v2.1.21",commissionBps:1e3,relayerUrl:"http://frankfurt.mainnet.relayer.jito.wtf:8100",blockEngineUrl:"https://frankfurt.mainnet.block-engine.jito.wtf/",shredReceiverAddr:"64.130.50.14:1002"},Oo={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"}};import{spawnSync as Dr}from"child_process";var Ce=r((t=ct.tag,e=!1)=>{e?Dr(`sh -c "$(curl --netrc-optional -sSfL https://raw.githubusercontent.com/gabrielhicks/jito-solana/${t}-mod/installer)"`,{shell:!0,stdio:"inherit"}):Dr(`sh -c "$(curl --netrc-optional -sSfL https://release.jito.wtf/${t}-jito/install)"`,{shell:!0,stdio:"inherit"})},"jitoUpdate");import{readFile as Ki,writeFile as bi}from"fs/promises";import{homedir as Ui}from"os";var Xt=r(async t=>{let o=`${Ui()}/${rt.JITO_CONFIG}`,s={...JSON.parse(await Ki(o,"utf8")),...t},a=JSON.stringify(s,null,2);await bi(o,a),console.log(`Updated ${o} with new values.`)},"updateJitoSolvConfig");import{spawnSync as Kr}from"child_process";import Mi from"inquirer";var br=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"),Ur=r(async()=>await Mi.prompt([{type:"number",name:"commission",message:"Enter new commission",default:7}]),"updateCommissionAsk");import{execAsync as Zt}from"@skeet-framework/utils";import Hi from"chalk";import Fi from"inquirer";var Mr=r(async()=>{let t=await Fi.prompt([{name:"ip",type:"input",message:"Enter your IP address to allow access to RPC NODE:",default:"1.2.3.4"}]);await Zt("sudo ufw delete allow 8899/udp"),await Zt("sudo ufw delete allow 8899/tcp"),await Zt(`sudo ufw allow from ${t.ip} to any port 8899 proto tcp`),await Zt(`sudo ufw allow from ${t.ip} to any port 8899 proto udp`),await Zt("sudo ufw reload"),console.log(Hi.white("\u2714\uFE0F Firewall updated!"))},"updateFirewall");var Yi=r(()=>or,"getSolvVersion"),Lt=Yi;import{readFile as Gi,writeFile as Ji}from"fs/promises";import{existsAsync as zi}from"@skeet-framework/utils";var Ro;(function(t){t.EN="en",t.JA="ja"})(Ro||(Ro={}));var zu=Object.values(Ro),f;(function(t){t.MAINNET="mainnet-beta",t.TESTNET="testnet"})(f||(f={}));var Hr=Object.values(f),A;(function(t){t.RPC="rpc",t.VALIDATOR="validator"})(A||(A={}));var Fr=Object.values(A),T;(function(t){t.SOLANA="solana",t.AGAVE="agave",t.JITO="jito",t.FRANKENDANCER="frankendancer",t.NONE="none"})(T||(T={}));var Wu=Object.values(T).filter(t=>t!=="none"),D;(function(t){t.AGAVE="agave",t.JITO="jito",t.NONE="none"})(D||(D={}));var Yr=Object.values(D).filter(t=>t!=="none"),B;(function(t){t.SINGLE="single",t.DOUBLE="double",t.TRIPLE="triple"})(B||(B={}));var G="2.2.16",U="2.2.16",Nt="2.2.16",te="2.2.16",jr="2.2.16",vt="2.2.16";var Br="20.17.0",xt="0.505.20216",Vt="0.505.20216";var Bi={NETWORK:f.TESTNET,NODE_TYPE:A.RPC,VALIDATOR_TYPE:T.NONE,RPC_TYPE:D.AGAVE,MNT_DISK_TYPE:B.TRIPLE,TESTNET_SOLANA_VERSION:G,MAINNET_SOLANA_VERSION:U,NODE_VERSION:Br,TESTNET_DELINQUENT_STAKE:5,MAINNET_DELINQUENT_STAKE:5,COMMISSION:5,DEFAULT_VALIDATOR_VOTE_ACCOUNT_PUBKEY:lr,STAKE_ACCOUNTS:[],HARVEST_ACCOUNT:"",IS_MEV_MODE:!1,RPC_URL:mr,KEYPAIR_PATH:"",DISCORD_WEBHOOK_URL:"",AUTO_UPDATE:!1,AUTO_RESTART:!1,IS_DUMMY:!1,API_KEY:"",LEDGER_PATH:w,ACCOUNTS_PATH:It,SNAPSHOTS_PATH:et,MOD:!1},mt=Bi;import{homedir as Wi}from"os";var qi=r(async()=>{let e=`${Wi()}/${Te}`;return await zi(e)?JSON.parse(await Gi(e,"utf-8")):(console.log("Creating default config file at",e),await Ji(e,JSON.stringify(mt,null,2)),mt)},"readConfig"),V=qi;import Qi 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 Jd}from"commander";var or="5.2.13";var rr={name:"@gabrielhicks/solv",version:or,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 ye=rr.version;var Qt="https://validators.solutions";var Te="solv4.config.json";var At="identity.json",wt="unstaked-identity.json",nr="relayer-keypair.json",ki="mainnet-validator-keypair.json",Ci="mainnet-vote-account-keypair.json",Ii="mainnet-authority-keypair.json",Pi="testnet-validator-keypair.json",Li="testnet-vote-account-keypair.json",xi="testnet-authority-keypair.json",P="/home/solv",k=`${P}/${At}`,ru=`${P}/${wt}`,K=`${P}/${ki}`,Ee=`${P}/${Ci}`,nu=`${P}/${Ii}`,x=`${P}/${Pi}`,sr=`${P}/${Li}`,su=`${P}/${xi}`,Z=`${P}/solana-validator.log`,tt=P+"/start-validator.sh",w="/mnt/ledger",It="/mnt/accounts",et="/mnt/snapshots",ar="solana-validator",ir="agave-validator",lr="ELLB9W7ZCwRCV3FzWcCWoyKP6NjZJKArLyGtkqefnHcG";var ge=3,cr="https://api.testnet.solana.com",mr="https://api.mainnet-beta.solana.com",pr="https://verify.validators.solutions/solv-migrate",dr="https://jup.validators.solutions/v1/jup",Ao;(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"})(Ao||(Ao={}));var ur=Object.values(Ao),Ae="So11111111111111111111111111111111111111112",we="EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v",wo="ELSoL1owwMWQ9foMsutweCsMKbTPVBD9pFqxQGidTaMC";var fr="SOLV420",hr={So11111111111111111111111111111111111111112:"4Vwkpk3DTVrTGnUQTazsgQ1wxtU9QwZTmAXDaQRHg9Ra",EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v:"J8sqx9ZEoPRqboFAXK3c1R38zm41tRNJgUn2FzyeYQDj",J1toso1uCk3RLmjorhTtrVwY9HJ7X8V9yYac6Y7kGCPn:"HPj87TFMPZfm5nk1HmTH9a382RXn7h9oWftiFr3Xs12a",mSoLzYCxHdYgdzU16g5QSh3i5K3z3KZK7ytfqcJm7So:"8CX5tE9KvJ59HcoXwWf6tCZoRuz2JFSmunnbKC1ryaK9",bSo13r4TkiE4KumL71LsHTPpL2euBYLFx6h9HP3piy1:"782MdvLby3VfvKdfDYn9tX3DfNAtg7TcytNNFuepcoMH",CvB1ztJvpYQPvdPBePtRzjL4aQidjydtUz61NWgcgQtP:"BhR2L6J5q3xF1TxReXyHjaUh4MF6qV99tMsipzPAKeB",JUPyiwrYJFskUPiHa7hkeR8VUtAeFoSYbKedZNsDvCN:"212yg3Ev7khq4p1mESFGenF4nWefmkbC8f7mHM68j4vg",DezXAZ8z7PnrnRJjz3wXBoRgixCa6xjnB7YaB1pPB263:"61Ndjv9392jPRVGALdYgjjxGYa6TT6Gn2WLDSsmugE6U",jtojtomepa8beP8AuQc6eXt5FriJwfFMwQx2v2f9mCL:"2c9qVh8RQ6j2E2VdAEcCrRXMrd6g1vvPNZvAR6sbaGWo"};import{spawnSync as Di}from"child_process";import{spawnSync as Sr}from"node:child_process";var Vi=r((t,e=!1)=>{e?Sr(`sh -c "$(curl --netrc-optional -sSfL https://raw.githubusercontent.com/gabrielhicks/agave/v${t}-mod/installer)"`,{shell:!0,stdio:"inherit"}):Sr(`sh -c "$(curl --netrc-optional -sSfL https://release.anza.xyz/v${t}/install)"`,{shell:!0,stdio:"inherit"})},"installAgave"),Pt=Vi;var yr="agave-validator",$i=r(()=>{try{return yr}catch(t){return console.error(t),yr}},"getSolanaCLI"),ot=$i;var _e=r(async(t,e=!1)=>{Pt(t,e)},"updateVersion"),Ne=r(async(t,e=!1,o=10)=>{let n=ot(),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}`),Di(s,{shell:!0,stdio:"inherit"})},"monitorUpdate");import cn from"chalk";var _t;(function(t){t.EN="en",t.JA="ja"})(_t||(_t={}));var Tr;(function(t){t[t.DOUBLE=0]="DOUBLE",t[t.SINGLE=1]="SINGLE",t[t.TRIPLE=2]="TRIPLE"})(Tr||(Tr={}));var Er;(function(t){t.SINGLE="single",t.DOUBLE="double",t.TRIPLE="triple"})(Er||(Er={}));var ft;(function(t){t.MAINNET="mainnet-beta",t.TESTNET="testnet"})(ft||(ft={}));var gr;(function(t){t.VALIDATOR="validator",t.RPC="rpc"})(gr||(gr={}));var Ar;(function(t){t.SOLANA="solana",t.JITO="jito",t.AGAVE="agave",t.FIREDANCER="firedancer"})(Ar||(Ar={}));var wr;(function(t){t.CO_HOST_RELAYER="co-host-relayer",t.SEPARATED_RELAYER="separated-relayer",t.WITHOUT_RELAYER="without-relayer"})(wr||(wr={}));var _r;(function(t){t.FIREDANCER="firedancer",t.FRANKENDANCER="frankendancer"})(_r||(_r={}));var ve;(function(t){t[t.TESTNET_VALIDATOR=0]="TESTNET_VALIDATOR",t[t.MAINNET_VALIDATOR=1]="MAINNET_VALIDATOR",t[t.RPC_NODE=2]="RPC_NODE"})(ve||(ve={}));var Oe;(function(t){t.SOLANA_CLIENT="SolanaClient",t.JITO_MEV="JitoMev",t.FIREDANCER="Firedancer"})(Oe||(Oe={}));var Or=!1,Rr=!0,kr=!1,Cr=!1,j={ID:"solv",LANG:_t.EN,USERNAME:"solv",TESTNET_SOLANA_VERSION:"2.2.16",MAINNET_SOLANA_VERSION:"2.2.16",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},b={ROOT:"/home/solv",AUTHORIZED_KEYS:"/home/solv/.ssh/authorized_keys"},_={ROOT:"/mnt",ACCOUNTS:"/mnt/accounts",LEDGER:"/mnt/ledger",SNAPSHOTS:"/mnt/snapshots"},rt={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"},N=r((t=b.ROOT)=>{let e=t===b.ROOT?b.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"),ht=r((t=!0)=>{let e=t?`${b.ROOT}/${I.TESTNET_VALIDATOR_KEY}`:`${b.ROOT}/${I.MAINNET_VALIDATOR_KEY}`,o=t?`${b.ROOT}/${I.TESTNET_VALIDATOR_VOTE_KEY}`:`${b.ROOT}/${I.MAINNET_VALIDATOR_VOTE_KEY}`,n=`${b.ROOT}/${rt.LOG}`,s=_.ACCOUNTS,a=_.LEDGER,i=_.SNAPSHOTS,l=`${b.ROOT}/${rt.STARTUP_SCRIPT}`;return{identity:e,voteAccount:o,log:n,accounts:s,ledger:a,scriptPath:l,snapshots:i}},"startupScriptPaths");var Q="So1vW4Bm6ZURzJJHZy1JpsjoVY68z4cDgF4tTLwYMa5",_o="7tAfLKgRVd9eywSQPuMbVNd51KGkaveZQuTjapL74Fwv",Ir="EiwSTx1Z2uJATDut682U7xzzquFR4UpQJUij3wSxVoSV",Pr=9,nt="ELSoL1owwMWQ9foMsutweCsMKbTPVBD9pFqxQGidTaMC",Lr="So11111111111111111111111111111111111111112",xr="EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v",Vr="CvB1ztJvpYQPvdPBePtRzjL4aQidjydtUz61NWgcgQtP",Nr;(function(t){t[t.ELSOL=nt]="ELSOL",t[t.SOL=Lr]="SOL",t[t.USDC=xr]="USDC",t[t.EPCT=Vr]="EPCT"})(Nr||(Nr={}));var vr;(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"})(vr||(vr={}));var gu={[Lr]:9,[nt]:9,[xr]:6,[Vr]:6},Re="/home/solv/currentEpoch.json",No=.5,ke="https://api.testnet.solana.com";import{spawnSync as vo}from"child_process";var $r=r(()=>{vo("pnpm add -g pnpm",{shell:!0,stdio:"inherit"});let t=j.NODE_VERSION;vo(`pnpm env use ${t} --global`,{shell:!0,stdio:"inherit"}),vo("pnpm add -g @gabrielhicks/solv",{shell:!0,stdio:"inherit"})},"updateSolv");var ct={version:"2.1.21",tag:"v2.1.21",commissionBps:1e3,relayerUrl:"http://frankfurt.mainnet.relayer.jito.wtf:8100",blockEngineUrl:"https://frankfurt.mainnet.block-engine.jito.wtf/",shredReceiverAddr:"64.130.50.14:1002"},Oo={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"}};import{spawnSync as Dr}from"child_process";var Ce=r((t=ct.tag,e=!1)=>{e?Dr(`sh -c "$(curl --netrc-optional -sSfL https://raw.githubusercontent.com/gabrielhicks/jito-solana/${t}-mod/installer)"`,{shell:!0,stdio:"inherit"}):Dr(`sh -c "$(curl --netrc-optional -sSfL https://release.jito.wtf/${t}-jito/install)"`,{shell:!0,stdio:"inherit"})},"jitoUpdate");import{readFile as Ki,writeFile as bi}from"fs/promises";import{homedir as Ui}from"os";var Xt=r(async t=>{let o=`${Ui()}/${rt.JITO_CONFIG}`,s={...JSON.parse(await Ki(o,"utf8")),...t},a=JSON.stringify(s,null,2);await bi(o,a),console.log(`Updated ${o} with new values.`)},"updateJitoSolvConfig");import{spawnSync as Kr}from"child_process";import Mi from"inquirer";var br=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"),Ur=r(async()=>await Mi.prompt([{type:"number",name:"commission",message:"Enter new commission",default:7}]),"updateCommissionAsk");import{execAsync as Zt}from"@skeet-framework/utils";import Hi from"chalk";import Fi from"inquirer";var Mr=r(async()=>{let t=await Fi.prompt([{name:"ip",type:"input",message:"Enter your IP address to allow access to RPC NODE:",default:"1.2.3.4"}]);await Zt("sudo ufw delete allow 8899/udp"),await Zt("sudo ufw delete allow 8899/tcp"),await Zt(`sudo ufw allow from ${t.ip} to any port 8899 proto tcp`),await Zt(`sudo ufw allow from ${t.ip} to any port 8899 proto udp`),await Zt("sudo ufw reload"),console.log(Hi.white("\u2714\uFE0F Firewall updated!"))},"updateFirewall");var Yi=r(()=>or,"getSolvVersion"),Lt=Yi;import{readFile as Gi,writeFile as Ji}from"fs/promises";import{existsAsync as zi}from"@skeet-framework/utils";var Ro;(function(t){t.EN="en",t.JA="ja"})(Ro||(Ro={}));var zu=Object.values(Ro),f;(function(t){t.MAINNET="mainnet-beta",t.TESTNET="testnet"})(f||(f={}));var Hr=Object.values(f),A;(function(t){t.RPC="rpc",t.VALIDATOR="validator"})(A||(A={}));var Fr=Object.values(A),T;(function(t){t.SOLANA="solana",t.AGAVE="agave",t.JITO="jito",t.FRANKENDANCER="frankendancer",t.NONE="none"})(T||(T={}));var Wu=Object.values(T).filter(t=>t!=="none"),D;(function(t){t.AGAVE="agave",t.JITO="jito",t.NONE="none"})(D||(D={}));var Yr=Object.values(D).filter(t=>t!=="none"),B;(function(t){t.SINGLE="single",t.DOUBLE="double",t.TRIPLE="triple"})(B||(B={}));var G="2.2.16",U="2.2.16",Nt="2.2.16",te="2.2.16",jr="2.2.16",vt="2.2.16";var Br="20.17.0",xt="0.505.20216",Vt="0.505.20216";var Bi={NETWORK:f.TESTNET,NODE_TYPE:A.RPC,VALIDATOR_TYPE:T.NONE,RPC_TYPE:D.AGAVE,MNT_DISK_TYPE:B.TRIPLE,TESTNET_SOLANA_VERSION:G,MAINNET_SOLANA_VERSION:U,NODE_VERSION:Br,TESTNET_DELINQUENT_STAKE:5,MAINNET_DELINQUENT_STAKE:5,COMMISSION:5,DEFAULT_VALIDATOR_VOTE_ACCOUNT_PUBKEY:lr,STAKE_ACCOUNTS:[],HARVEST_ACCOUNT:"",IS_MEV_MODE:!1,RPC_URL:mr,KEYPAIR_PATH:"",DISCORD_WEBHOOK_URL:"",AUTO_UPDATE:!1,AUTO_RESTART:!1,IS_DUMMY:!1,API_KEY:"",LEDGER_PATH:w,ACCOUNTS_PATH:It,SNAPSHOTS_PATH:et,MOD:!1},mt=Bi;import{homedir as Wi}from"os";var qi=r(async()=>{let e=`${Wi()}/${Te}`;return await zi(e)?JSON.parse(await Gi(e,"utf-8")):(console.log("Creating default config file at",e),await Ji(e,JSON.stringify(mt,null,2)),mt)},"readConfig"),V=qi;import Qi 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 Qi(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 nl}from"child_process";import{Connection as Gr}from"@solana/web3.js";var ee=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 v=r(t=>{let e=`solana address --keypair ${t}`,{stdout:o}=Xi(e,{shell:!0,stdio:"pipe"});return o.toString().trim()},"getSolanaAddress");var Zi=r(t=>new Promise(e=>setTimeout(e,t)),"sleep"),M=Zi;import{sendDiscord as tl}from"@skeet-framework/utils";var Jr=60,el=r(async t=>{try{let e=t.NETWORK===f.TESTNET,{mainnetValidatorVoteKey:o,testnetValidatorVoteKey:n}=N(),a=v(e?n:o),i=await ee(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}