@gabrielhicks/solv 5.2.4 → 5.2.5
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 +3 -3
- 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 Ei=Object.defineProperty;var r=(t,e)=>Ei(t,"name",{value:e,configurable:!0});import"dotenv/config";import{Command as Yd}from"commander";var Xo="5.2.4";var Zo={name:"@gabrielhicks/solv",version:Xo,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 fe=Zo.version;var zt="https://validators.solutions";var he="solv4.config.json";var gt="identity.json",Et="unstaked-identity.json",tr="relayer-keypair.json",wi="mainnet-validator-keypair.json",_i="mainnet-vote-account-keypair.json",Ni="mainnet-authority-keypair.json",vi="testnet-validator-keypair.json",Oi="testnet-vote-account-keypair.json",Ri="testnet-authority-keypair.json",I="/home/solv",k=`${I}/${gt}`,Zd=`${I}/${Et}`,b=`${I}/${wi}`,ye=`${I}/${_i}`,tu=`${I}/${Ni}`,P=`${I}/${vi}`,er=`${I}/${Oi}`,eu=`${I}/${Ri}`,X=`${I}/solana-validator.log`,Z=I+"/start-validator.sh",w="/mnt/ledger",Ct="/mnt/accounts",tt="/mnt/snapshots",or="solana-validator",rr="agave-validator",nr="ELLB9W7ZCwRCV3FzWcCWoyKP6NjZJKArLyGtkqefnHcG";var Se=3,sr="https://api.testnet.solana.com",ar="https://api.mainnet-beta.solana.com",ir="https://verify.validators.solutions/solv-migrate",cr="https://jup.validators.solutions/v1/jup",So;(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"})(So||(So={}));var lr=Object.values(So),Te="So11111111111111111111111111111111111111112",ge="EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v",To="ELSoL1owwMWQ9foMsutweCsMKbTPVBD9pFqxQGidTaMC";var mr="SOLV420",pr={So11111111111111111111111111111111111111112:"4Vwkpk3DTVrTGnUQTazsgQ1wxtU9QwZTmAXDaQRHg9Ra",EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v:"J8sqx9ZEoPRqboFAXK3c1R38zm41tRNJgUn2FzyeYQDj",J1toso1uCk3RLmjorhTtrVwY9HJ7X8V9yYac6Y7kGCPn:"HPj87TFMPZfm5nk1HmTH9a382RXn7h9oWftiFr3Xs12a",mSoLzYCxHdYgdzU16g5QSh3i5K3z3KZK7ytfqcJm7So:"8CX5tE9KvJ59HcoXwWf6tCZoRuz2JFSmunnbKC1ryaK9",bSo13r4TkiE4KumL71LsHTPpL2euBYLFx6h9HP3piy1:"782MdvLby3VfvKdfDYn9tX3DfNAtg7TcytNNFuepcoMH",CvB1ztJvpYQPvdPBePtRzjL4aQidjydtUz61NWgcgQtP:"BhR2L6J5q3xF1TxReXyHjaUh4MF6qV99tMsipzPAKeB",JUPyiwrYJFskUPiHa7hkeR8VUtAeFoSYbKedZNsDvCN:"212yg3Ev7khq4p1mESFGenF4nWefmkbC8f7mHM68j4vg",DezXAZ8z7PnrnRJjz3wXBoRgixCa6xjnB7YaB1pPB263:"61Ndjv9392jPRVGALdYgjjxGYa6TT6Gn2WLDSsmugE6U",jtojtomepa8beP8AuQc6eXt5FriJwfFMwQx2v2f9mCL:"2c9qVh8RQ6j2E2VdAEcCrRXMrd6g1vvPNZvAR6sbaGWo"};import{spawnSync as Ii}from"child_process";import{spawnSync as dr}from"node:child_process";var ki=r((t,e=!1)=>{e?dr(`sh -c "$(curl -sSfL https://raw.githubusercontent.com/gabrielhicks/agave/v${t}-mod/installer)"`,{shell:!0,stdio:"inherit"}):dr(`sh -c "$(curl -sSfL https://release.anza.xyz/v${t}/install)"`,{shell:!0,stdio:"inherit"})},"installAgave"),It=ki;var ur="agave-validator",Ci=r(()=>{try{return ur}catch(t){return console.error(t),ur}},"getSolanaCLI"),et=Ci;var Ee=r(async(t,e=!1)=>{It(t,e)},"updateVersion"),go=r(async(t,e=!1,o=10)=>{let n=et(),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}`),Ii(s,{shell:!0,stdio:"inherit"})},"monitorUpdate");import en from"chalk";var At;(function(t){t.EN="en",t.JA="ja"})(At||(At={}));var fr;(function(t){t[t.DOUBLE=0]="DOUBLE",t[t.SINGLE=1]="SINGLE",t[t.TRIPLE=2]="TRIPLE"})(fr||(fr={}));var hr;(function(t){t.SINGLE="single",t.DOUBLE="double",t.TRIPLE="triple"})(hr||(hr={}));var dt;(function(t){t.MAINNET="mainnet-beta",t.TESTNET="testnet"})(dt||(dt={}));var yr;(function(t){t.VALIDATOR="validator",t.RPC="rpc"})(yr||(yr={}));var Sr;(function(t){t.SOLANA="solana",t.JITO="jito",t.AGAVE="agave",t.FIREDANCER="firedancer"})(Sr||(Sr={}));var Tr;(function(t){t.CO_HOST_RELAYER="co-host-relayer",t.SEPARATED_RELAYER="separated-relayer",t.WITHOUT_RELAYER="without-relayer"})(Tr||(Tr={}));var gr;(function(t){t.FIREDANCER="firedancer",t.FRANKENDANCER="frankendancer"})(gr||(gr={}));var Ae;(function(t){t[t.TESTNET_VALIDATOR=0]="TESTNET_VALIDATOR",t[t.MAINNET_VALIDATOR=1]="MAINNET_VALIDATOR",t[t.RPC_NODE=2]="RPC_NODE"})(Ae||(Ae={}));var we;(function(t){t.SOLANA_CLIENT="SolanaClient",t.JITO_MEV="JitoMev",t.FIREDANCER="Firedancer"})(we||(we={}));var wr=!1,_r=!1,Y={ID:"solv",LANG:At.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},K={ROOT:"/home/solv",AUTHORIZED_KEYS:"/home/solv/.ssh/authorized_keys"},_={ROOT:"/mnt",ACCOUNTS:"/mnt/accounts",LEDGER:"/mnt/ledger",SNAPSHOTS:"/mnt/snapshots"},ot={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"},C={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=K.ROOT)=>{let e=t===K.ROOT?K.ROOT:t,o=`${e}/${C.MAINNET_VALIDATOR_KEY}`,n=`${e}/${C.MAINNET_VALIDATOR_VOTE_KEY}`,s=`${e}/${C.MAINNET_VALITATOR_AUTHORITY_KEY}`,a=`${e}/${C.TESTNET_VALIDATOR_KEY}`,i=`${e}/${C.TESTNET_VALIDATOR_VOTE_KEY}`,c=`${e}/${C.TESTNET_VALITATOR_AUTHORITY_KEY}`;return{mainnetValidatorKey:o,mainnetValidatorVoteKey:n,mainnetValidatorAuthorityKey:s,testnetValidatorKey:a,testnetValidatorVoteKey:i,testnetValidatorAuthorityKey:c}},"getAllKeyPaths"),ut=r((t=!0)=>{let e=t?`${K.ROOT}/${C.TESTNET_VALIDATOR_KEY}`:`${K.ROOT}/${C.MAINNET_VALIDATOR_KEY}`,o=t?`${K.ROOT}/${C.TESTNET_VALIDATOR_VOTE_KEY}`:`${K.ROOT}/${C.MAINNET_VALIDATOR_VOTE_KEY}`,n=`${K.ROOT}/${ot.LOG}`,s=_.ACCOUNTS,a=_.LEDGER,i=_.SNAPSHOTS,c=`${K.ROOT}/${ot.STARTUP_SCRIPT}`;return{identity:e,voteAccount:o,log:n,accounts:s,ledger:a,scriptPath:c,snapshots:i}},"startupScriptPaths");var W="So1vW4Bm6ZURzJJHZy1JpsjoVY68z4cDgF4tTLwYMa5",Eo="7tAfLKgRVd9eywSQPuMbVNd51KGkaveZQuTjapL74Fwv",Nr="EiwSTx1Z2uJATDut682U7xzzquFR4UpQJUij3wSxVoSV",vr=9,rt="ELSoL1owwMWQ9foMsutweCsMKbTPVBD9pFqxQGidTaMC",Or="So11111111111111111111111111111111111111112",Rr="EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v",kr="CvB1ztJvpYQPvdPBePtRzjL4aQidjydtUz61NWgcgQtP",Er;(function(t){t[t.ELSOL=rt]="ELSOL",t[t.SOL=Or]="SOL",t[t.USDC=Rr]="USDC",t[t.EPCT=kr]="EPCT"})(Er||(Er={}));var Ar;(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"})(Ar||(Ar={}));var yu={[Or]:9,[rt]:9,[Rr]:6,[kr]:6},_e="/home/solv/currentEpoch.json",Ao=.5,Ne="https://api.testnet.solana.com";import{spawnSync as wo}from"child_process";var Cr=r(()=>{wo("pnpm add -g pnpm",{shell:!0,stdio:"inherit"});let t=Y.NODE_VERSION;wo(`pnpm env use ${t} --global`,{shell:!0,stdio:"inherit"}),wo("pnpm add -g @gabrielhicks/solv",{shell:!0,stdio:"inherit"})},"updateSolv");var ct={version:"2.1.21",tag:"v2.1.21",commissionBps:1e3,relayerUrl:"https://frankfurt.mainnet.block-engine.jito.wtf",blockEngineUrl:"http://frankfurt.mainnet.relayer.jito.wtf:8100",shredReceiverAddr:"64.130.50.14:1002"},_o={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 Ir}from"child_process";var ve=r((t=ct.tag,e=!1)=>{e?Ir(`sh -c "$(curl -sSfL https://raw.githubusercontent.com/gabrielhicks/jito-solana/${t}-mod/installer)"`,{shell:!0,stdio:"inherit"}):Ir(`sh -c "$(curl -sSfL https://release.jito.wtf/${t}-jito/install)"`,{shell:!0,stdio:"inherit"})},"jitoUpdate");import{readFile as Pi,writeFile as Li}from"fs/promises";import{homedir as xi}from"os";var Wt=r(async t=>{let o=`${xi()}/${ot.JITO_CONFIG}`,s={...JSON.parse(await Pi(o,"utf8")),...t},a=JSON.stringify(s,null,2);await Li(o,a),console.log(`Updated ${o} with new values.`)},"updateJitoSolvConfig");import{spawnSync as Pr}from"child_process";import Vi from"inquirer";var Lr=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";Pr(`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}`;Pr(a,{shell:!0,stdio:"inherit"})},"updateCommission"),xr=r(async()=>await Vi.prompt([{type:"number",name:"commission",message:"Enter new commission",default:7}]),"updateCommissionAsk");import{execAsync as qt}from"@skeet-framework/utils";import $i from"chalk";import Di from"inquirer";var Vr=r(async()=>{let t=await Di.prompt([{name:"ip",type:"input",message:"Enter your IP address to allow access to RPC NODE:",default:"1.2.3.4"}]);await qt("sudo ufw delete allow 8899/udp"),await qt("sudo ufw delete allow 8899/tcp"),await qt(`sudo ufw allow from ${t.ip} to any port 8899 proto tcp`),await qt(`sudo ufw allow from ${t.ip} to any port 8899 proto udp`),await qt("sudo ufw reload"),console.log($i.white("\u2714\uFE0F Firewall updated!"))},"updateFirewall");var bi=r(()=>Xo,"getSolvVersion"),Pt=bi;import{readFile as Mi,writeFile as Hi}from"fs/promises";import{existsAsync as Fi}from"@skeet-framework/utils";var No;(function(t){t.EN="en",t.JA="ja"})(No||(No={}));var ju=Object.values(No),f;(function(t){t.MAINNET="mainnet-beta",t.TESTNET="testnet"})(f||(f={}));var $r=Object.values(f),E;(function(t){t.RPC="rpc",t.VALIDATOR="validator"})(E||(E={}));var Dr=Object.values(E),T;(function(t){t.SOLANA="solana",t.AGAVE="agave",t.JITO="jito",t.FRANKENDANCER="frankendancer",t.NONE="none"})(T||(T={}));var Bu=Object.values(T).filter(t=>t!=="none"),$;(function(t){t.AGAVE="agave",t.JITO="jito",t.NONE="none"})($||($={}));var br=Object.values($).filter(t=>t!=="none"),j;(function(t){t.SINGLE="single",t.DOUBLE="double",t.TRIPLE="triple"})(j||(j={}));var q="2.2.16",J="2.2.16",wt="2.2.16",Qt="2.2.16",Kr="2.2.16",_t="2.2.16";var Ur="20.17.0",Oe="0.504.20216",Re="0.504.20216";var Ui={NETWORK:f.TESTNET,NODE_TYPE:E.RPC,VALIDATOR_TYPE:T.NONE,RPC_TYPE:$.AGAVE,MNT_DISK_TYPE:j.TRIPLE,TESTNET_SOLANA_VERSION:q,MAINNET_SOLANA_VERSION:J,NODE_VERSION:Ur,TESTNET_DELINQUENT_STAKE:5,MAINNET_DELINQUENT_STAKE:5,COMMISSION:5,DEFAULT_VALIDATOR_VOTE_ACCOUNT_PUBKEY:nr,STAKE_ACCOUNTS:[],HARVEST_ACCOUNT:"",IS_MEV_MODE:!1,RPC_URL:ar,KEYPAIR_PATH:"",DISCORD_WEBHOOK_URL:"",AUTO_UPDATE:!1,AUTO_RESTART:!1,IS_DUMMY:!1,API_KEY:"",LEDGER_PATH:w,ACCOUNTS_PATH:Ct,SNAPSHOTS_PATH:tt,MOD:!1},lt=Ui;import{homedir as Yi}from"os";var ji=r(async()=>{let e=`${Yi()}/${he}`;return await Fi(e)?JSON.parse(await Mi(e,"utf-8")):(console.log("Creating default config file at",e),await Hi(e,JSON.stringify(lt,null,2)),lt)},"readConfig"),x=ji;import Bi from"node-fetch";var Q=r(async t=>{try{let e=await x();if(e.DISCORD_WEBHOOK_URL==="")throw new Error(`DISCORD_WEBHOOK_URL is empty
|
|
2
|
+
var Ei=Object.defineProperty;var r=(t,e)=>Ei(t,"name",{value:e,configurable:!0});import"dotenv/config";import{Command as Yd}from"commander";var Xo="5.2.5";var Zo={name:"@gabrielhicks/solv",version:Xo,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 fe=Zo.version;var zt="https://validators.solutions";var he="solv4.config.json";var gt="identity.json",Et="unstaked-identity.json",tr="relayer-keypair.json",wi="mainnet-validator-keypair.json",_i="mainnet-vote-account-keypair.json",Ni="mainnet-authority-keypair.json",vi="testnet-validator-keypair.json",Oi="testnet-vote-account-keypair.json",Ri="testnet-authority-keypair.json",I="/home/solv",k=`${I}/${gt}`,Zd=`${I}/${Et}`,b=`${I}/${wi}`,ye=`${I}/${_i}`,tu=`${I}/${Ni}`,P=`${I}/${vi}`,er=`${I}/${Oi}`,eu=`${I}/${Ri}`,X=`${I}/solana-validator.log`,Z=I+"/start-validator.sh",w="/mnt/ledger",Ct="/mnt/accounts",tt="/mnt/snapshots",or="solana-validator",rr="agave-validator",nr="ELLB9W7ZCwRCV3FzWcCWoyKP6NjZJKArLyGtkqefnHcG";var Se=3,sr="https://api.testnet.solana.com",ar="https://api.mainnet-beta.solana.com",ir="https://verify.validators.solutions/solv-migrate",cr="https://jup.validators.solutions/v1/jup",So;(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"})(So||(So={}));var lr=Object.values(So),Te="So11111111111111111111111111111111111111112",ge="EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v",To="ELSoL1owwMWQ9foMsutweCsMKbTPVBD9pFqxQGidTaMC";var mr="SOLV420",pr={So11111111111111111111111111111111111111112:"4Vwkpk3DTVrTGnUQTazsgQ1wxtU9QwZTmAXDaQRHg9Ra",EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v:"J8sqx9ZEoPRqboFAXK3c1R38zm41tRNJgUn2FzyeYQDj",J1toso1uCk3RLmjorhTtrVwY9HJ7X8V9yYac6Y7kGCPn:"HPj87TFMPZfm5nk1HmTH9a382RXn7h9oWftiFr3Xs12a",mSoLzYCxHdYgdzU16g5QSh3i5K3z3KZK7ytfqcJm7So:"8CX5tE9KvJ59HcoXwWf6tCZoRuz2JFSmunnbKC1ryaK9",bSo13r4TkiE4KumL71LsHTPpL2euBYLFx6h9HP3piy1:"782MdvLby3VfvKdfDYn9tX3DfNAtg7TcytNNFuepcoMH",CvB1ztJvpYQPvdPBePtRzjL4aQidjydtUz61NWgcgQtP:"BhR2L6J5q3xF1TxReXyHjaUh4MF6qV99tMsipzPAKeB",JUPyiwrYJFskUPiHa7hkeR8VUtAeFoSYbKedZNsDvCN:"212yg3Ev7khq4p1mESFGenF4nWefmkbC8f7mHM68j4vg",DezXAZ8z7PnrnRJjz3wXBoRgixCa6xjnB7YaB1pPB263:"61Ndjv9392jPRVGALdYgjjxGYa6TT6Gn2WLDSsmugE6U",jtojtomepa8beP8AuQc6eXt5FriJwfFMwQx2v2f9mCL:"2c9qVh8RQ6j2E2VdAEcCrRXMrd6g1vvPNZvAR6sbaGWo"};import{spawnSync as Ii}from"child_process";import{spawnSync as dr}from"node:child_process";var ki=r((t,e=!1)=>{e?dr(`sh -c "$(curl --netrc-optional -sSfL https://raw.githubusercontent.com/gabrielhicks/agave/v${t}-mod/installer)"`,{shell:!0,stdio:"inherit"}):dr(`sh -c "$(curl --netrc-optional -sSfL https://release.anza.xyz/v${t}/install)"`,{shell:!0,stdio:"inherit"})},"installAgave"),It=ki;var ur="agave-validator",Ci=r(()=>{try{return ur}catch(t){return console.error(t),ur}},"getSolanaCLI"),et=Ci;var Ee=r(async(t,e=!1)=>{It(t,e)},"updateVersion"),go=r(async(t,e=!1,o=10)=>{let n=et(),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}`),Ii(s,{shell:!0,stdio:"inherit"})},"monitorUpdate");import en from"chalk";var At;(function(t){t.EN="en",t.JA="ja"})(At||(At={}));var fr;(function(t){t[t.DOUBLE=0]="DOUBLE",t[t.SINGLE=1]="SINGLE",t[t.TRIPLE=2]="TRIPLE"})(fr||(fr={}));var hr;(function(t){t.SINGLE="single",t.DOUBLE="double",t.TRIPLE="triple"})(hr||(hr={}));var dt;(function(t){t.MAINNET="mainnet-beta",t.TESTNET="testnet"})(dt||(dt={}));var yr;(function(t){t.VALIDATOR="validator",t.RPC="rpc"})(yr||(yr={}));var Sr;(function(t){t.SOLANA="solana",t.JITO="jito",t.AGAVE="agave",t.FIREDANCER="firedancer"})(Sr||(Sr={}));var Tr;(function(t){t.CO_HOST_RELAYER="co-host-relayer",t.SEPARATED_RELAYER="separated-relayer",t.WITHOUT_RELAYER="without-relayer"})(Tr||(Tr={}));var gr;(function(t){t.FIREDANCER="firedancer",t.FRANKENDANCER="frankendancer"})(gr||(gr={}));var Ae;(function(t){t[t.TESTNET_VALIDATOR=0]="TESTNET_VALIDATOR",t[t.MAINNET_VALIDATOR=1]="MAINNET_VALIDATOR",t[t.RPC_NODE=2]="RPC_NODE"})(Ae||(Ae={}));var we;(function(t){t.SOLANA_CLIENT="SolanaClient",t.JITO_MEV="JitoMev",t.FIREDANCER="Firedancer"})(we||(we={}));var wr=!1,_r=!1,Y={ID:"solv",LANG:At.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},K={ROOT:"/home/solv",AUTHORIZED_KEYS:"/home/solv/.ssh/authorized_keys"},_={ROOT:"/mnt",ACCOUNTS:"/mnt/accounts",LEDGER:"/mnt/ledger",SNAPSHOTS:"/mnt/snapshots"},ot={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"},C={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=K.ROOT)=>{let e=t===K.ROOT?K.ROOT:t,o=`${e}/${C.MAINNET_VALIDATOR_KEY}`,n=`${e}/${C.MAINNET_VALIDATOR_VOTE_KEY}`,s=`${e}/${C.MAINNET_VALITATOR_AUTHORITY_KEY}`,a=`${e}/${C.TESTNET_VALIDATOR_KEY}`,i=`${e}/${C.TESTNET_VALIDATOR_VOTE_KEY}`,c=`${e}/${C.TESTNET_VALITATOR_AUTHORITY_KEY}`;return{mainnetValidatorKey:o,mainnetValidatorVoteKey:n,mainnetValidatorAuthorityKey:s,testnetValidatorKey:a,testnetValidatorVoteKey:i,testnetValidatorAuthorityKey:c}},"getAllKeyPaths"),ut=r((t=!0)=>{let e=t?`${K.ROOT}/${C.TESTNET_VALIDATOR_KEY}`:`${K.ROOT}/${C.MAINNET_VALIDATOR_KEY}`,o=t?`${K.ROOT}/${C.TESTNET_VALIDATOR_VOTE_KEY}`:`${K.ROOT}/${C.MAINNET_VALIDATOR_VOTE_KEY}`,n=`${K.ROOT}/${ot.LOG}`,s=_.ACCOUNTS,a=_.LEDGER,i=_.SNAPSHOTS,c=`${K.ROOT}/${ot.STARTUP_SCRIPT}`;return{identity:e,voteAccount:o,log:n,accounts:s,ledger:a,scriptPath:c,snapshots:i}},"startupScriptPaths");var W="So1vW4Bm6ZURzJJHZy1JpsjoVY68z4cDgF4tTLwYMa5",Eo="7tAfLKgRVd9eywSQPuMbVNd51KGkaveZQuTjapL74Fwv",Nr="EiwSTx1Z2uJATDut682U7xzzquFR4UpQJUij3wSxVoSV",vr=9,rt="ELSoL1owwMWQ9foMsutweCsMKbTPVBD9pFqxQGidTaMC",Or="So11111111111111111111111111111111111111112",Rr="EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v",kr="CvB1ztJvpYQPvdPBePtRzjL4aQidjydtUz61NWgcgQtP",Er;(function(t){t[t.ELSOL=rt]="ELSOL",t[t.SOL=Or]="SOL",t[t.USDC=Rr]="USDC",t[t.EPCT=kr]="EPCT"})(Er||(Er={}));var Ar;(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"})(Ar||(Ar={}));var yu={[Or]:9,[rt]:9,[Rr]:6,[kr]:6},_e="/home/solv/currentEpoch.json",Ao=.5,Ne="https://api.testnet.solana.com";import{spawnSync as wo}from"child_process";var Cr=r(()=>{wo("pnpm add -g pnpm",{shell:!0,stdio:"inherit"});let t=Y.NODE_VERSION;wo(`pnpm env use ${t} --global`,{shell:!0,stdio:"inherit"}),wo("pnpm add -g @gabrielhicks/solv",{shell:!0,stdio:"inherit"})},"updateSolv");var ct={version:"2.1.21",tag:"v2.1.21",commissionBps:1e3,relayerUrl:"https://frankfurt.mainnet.block-engine.jito.wtf",blockEngineUrl:"http://frankfurt.mainnet.relayer.jito.wtf:8100",shredReceiverAddr:"64.130.50.14:1002"},_o={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 Ir}from"child_process";var ve=r((t=ct.tag,e=!1)=>{e?Ir(`sh -c "$(curl --netrc-optional -sSfL https://raw.githubusercontent.com/gabrielhicks/jito-solana/${t}-mod/installer)"`,{shell:!0,stdio:"inherit"}):Ir(`sh -c "$(curl --netrc-optional -sSfL https://release.jito.wtf/${t}-jito/install)"`,{shell:!0,stdio:"inherit"})},"jitoUpdate");import{readFile as Pi,writeFile as Li}from"fs/promises";import{homedir as xi}from"os";var Wt=r(async t=>{let o=`${xi()}/${ot.JITO_CONFIG}`,s={...JSON.parse(await Pi(o,"utf8")),...t},a=JSON.stringify(s,null,2);await Li(o,a),console.log(`Updated ${o} with new values.`)},"updateJitoSolvConfig");import{spawnSync as Pr}from"child_process";import Vi from"inquirer";var Lr=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";Pr(`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}`;Pr(a,{shell:!0,stdio:"inherit"})},"updateCommission"),xr=r(async()=>await Vi.prompt([{type:"number",name:"commission",message:"Enter new commission",default:7}]),"updateCommissionAsk");import{execAsync as qt}from"@skeet-framework/utils";import $i from"chalk";import Di from"inquirer";var Vr=r(async()=>{let t=await Di.prompt([{name:"ip",type:"input",message:"Enter your IP address to allow access to RPC NODE:",default:"1.2.3.4"}]);await qt("sudo ufw delete allow 8899/udp"),await qt("sudo ufw delete allow 8899/tcp"),await qt(`sudo ufw allow from ${t.ip} to any port 8899 proto tcp`),await qt(`sudo ufw allow from ${t.ip} to any port 8899 proto udp`),await qt("sudo ufw reload"),console.log($i.white("\u2714\uFE0F Firewall updated!"))},"updateFirewall");var bi=r(()=>Xo,"getSolvVersion"),Pt=bi;import{readFile as Mi,writeFile as Hi}from"fs/promises";import{existsAsync as Fi}from"@skeet-framework/utils";var No;(function(t){t.EN="en",t.JA="ja"})(No||(No={}));var ju=Object.values(No),f;(function(t){t.MAINNET="mainnet-beta",t.TESTNET="testnet"})(f||(f={}));var $r=Object.values(f),E;(function(t){t.RPC="rpc",t.VALIDATOR="validator"})(E||(E={}));var Dr=Object.values(E),T;(function(t){t.SOLANA="solana",t.AGAVE="agave",t.JITO="jito",t.FRANKENDANCER="frankendancer",t.NONE="none"})(T||(T={}));var Bu=Object.values(T).filter(t=>t!=="none"),$;(function(t){t.AGAVE="agave",t.JITO="jito",t.NONE="none"})($||($={}));var br=Object.values($).filter(t=>t!=="none"),j;(function(t){t.SINGLE="single",t.DOUBLE="double",t.TRIPLE="triple"})(j||(j={}));var q="2.2.16",J="2.2.16",wt="2.2.16",Qt="2.2.16",Kr="2.2.16",_t="2.2.16";var Ur="20.17.0",Oe="0.504.20216",Re="0.504.20216";var Ui={NETWORK:f.TESTNET,NODE_TYPE:E.RPC,VALIDATOR_TYPE:T.NONE,RPC_TYPE:$.AGAVE,MNT_DISK_TYPE:j.TRIPLE,TESTNET_SOLANA_VERSION:q,MAINNET_SOLANA_VERSION:J,NODE_VERSION:Ur,TESTNET_DELINQUENT_STAKE:5,MAINNET_DELINQUENT_STAKE:5,COMMISSION:5,DEFAULT_VALIDATOR_VOTE_ACCOUNT_PUBKEY:nr,STAKE_ACCOUNTS:[],HARVEST_ACCOUNT:"",IS_MEV_MODE:!1,RPC_URL:ar,KEYPAIR_PATH:"",DISCORD_WEBHOOK_URL:"",AUTO_UPDATE:!1,AUTO_RESTART:!1,IS_DUMMY:!1,API_KEY:"",LEDGER_PATH:w,ACCOUNTS_PATH:Ct,SNAPSHOTS_PATH:tt,MOD:!1},lt=Ui;import{homedir as Yi}from"os";var ji=r(async()=>{let e=`${Yi()}/${he}`;return await Fi(e)?JSON.parse(await Mi(e,"utf-8")):(console.log("Creating default config file at",e),await Hi(e,JSON.stringify(lt,null,2)),lt)},"readConfig"),x=ji;import Bi from"node-fetch";var Q=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 Bi(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 Xi}from"child_process";import{Connection as Mr}from"@solana/web3.js";var Xt=r(async(t,e,o=!1,n=200)=>{let s={pubkey:e,isActive:!1,reason:""};try{let a=o?new Mr("https://api.testnet.solana.com"):new Mr(t,"confirmed"),i=await a.getVoteAccounts(),c=i.current.find(d=>d.votePubkey===e);if(!c)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(),c=i.current.find(d=>d.votePubkey===e),!c)return s.isActive=!1,s.reason="Validator is not found in the current list.",s;let l=c.lastVote,u=await a.getSlot()-l;return u>n?(s.isActive=!1,s.reason=`Validator has not voted for ${u} 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 Ji}from"child_process";var v=r(t=>{let e=`solana address --keypair ${t}`,{stdout:o}=Ji(e,{shell:!0,stdio:"pipe"});return o.toString().trim()},"getSolanaAddress");var Gi=r(t=>new Promise(e=>setTimeout(e,t)),"sleep"),U=Gi;import{sendDiscord as zi}from"@skeet-framework/utils";var Hr=60,Wi=r(async t=>{try{let e=t.NETWORK===f.TESTNET,{mainnetValidatorVoteKey:o,testnetValidatorVoteKey:n}=N(),a=v(e?n:o),i=await Xt(t.RPC_URL,a,e),c=0;for(;!i.isActive;){if(c>=Hr){console.log("Max retries reached, exiting...");let l=`\u26A0\uFE0F Validator is not active for ${Hr} minutes!
|
|
4
4
|
Account: ${i.pubkey}
|
|
5
5
|
Reason: ${i.reason}
|
|
@@ -25,7 +25,7 @@ unzip jupiter-swap-api-x86_64-unknown-linux-gnu.zip
|
|
|
25
25
|
chmod +x jupiter-swap-api
|
|
26
26
|
rm jupiter-swap-api-x86_64-unknown-linux-gnu.zip`,{shell:!0,stdio:"inherit"});let{filePath:o,body:n}=cn(t.rpcUrl,t.grpcUrl,t.grpcToken);ln(`echo '${n}' | sudo tee ${o}`,{shell:!0,stdio:"inherit"}),console.log(Nc.white(`\u{1F7E2} Jupiter Swap API Setup Completed
|
|
27
27
|
|
|
28
|
-
$ solv jupiter --help`))},"jupiterAPISetup"),mn=vc;import{existsAsync as Oc}from"@skeet-framework/utils";import{readFile as Rc,writeFile as pn}from"fs/promises";import{homedir as kc}from"os";import Cc from"path";var Nt=r(async()=>{let t=kc(),e=Cc.join(t,ot.JITO_CONFIG);await Oc(e)||(await pn(e,JSON.stringify(ct,null,2)),console.log(`Created jito config file at ${e}`));let o;try{o=JSON.parse(await Rc(e,"utf-8"))}catch(n){console.log(`readOrCreateJitoConfig - ${n}`),await pn(e,JSON.stringify(ct,null,2)),o=ct}return o},"readOrCreateJitoConfig");import{spawnSync as Ic}from"child_process";var Zt=r(()=>{Ic("sudo systemctl daemon-reload",{shell:!0,stdio:"inherit"})},"daemonReload");import te from"chalk";import Ke from"inquirer";import Pc from"inquirer";var dn=r(async()=>{let e=Object.keys(_o),o=await Pc.prompt([{name:"commissionBps",type:"number",message:"Enter commission bps",default:1e3},{name:"region",type:"list",message:"Select region",choices:e}]),n=o.region,s=_o[n];return{version:ct.version,tag:ct.tag,commissionBps:o.commissionBps,blockEngineUrl:s.BLOCK_ENGINE_URL,relayerUrl:s.RELAYER_URL,shredReceiverAddr:s.SHRED_RECEIVER_ADDR}},"askJitoSetting");var Lc=r(async()=>{try{let t=T.NONE,e=$.AGAVE,o=lt.COMMISSION,n=!1,s=await Ke.prompt([{name:"network",type:"list",message:"Choose Network",choices:$r,default:f.MAINNET},{name:"nodeType",type:"list",message:"Choose Node Type",choices:Dr,default:E.RPC}]);if(s.nodeType===E.VALIDATOR){let c=s.network===f.MAINNET?[T.JITO,T.SOLANA]:[T.AGAVE,T.JITO,T.FRANKENDANCER];t=await Ke.prompt({name:"validatorType",type:"list",message:"Choose Validator Type",choices:c,default:T.AGAVE}).then(l=>l.validatorType),e=$.NONE}if(s.nodeType===E.RPC&&(e=await Ke.prompt({name:"rpcType",type:"list",message:"Choose RPC Type",choices:br,default:$.AGAVE}).then(c=>c.rpcType)),s.nodeType===E.VALIDATOR){let c=await Ke.prompt([{name:"commission",type:"number",message:`What is your commission rate? You can change it later (default: ${lt.COMMISSION}%)'`,default:lt.COMMISSION},{name:"isDummy",type:"confirm",message:"Do you want to setup as a dummy(Inactive) node?(\u203BFor Migration)",default:!0}]);if(o=c.commission,n=c.isDummy,t===T.JITO){await Nt();let l=await dn();await Wt(l)}}let{network:a,nodeType:i}=s;return console.log(te.white("Network:",a)),console.log(te.white("Node Type:",i)),console.log(te.white("Validator Type:",t)),console.log(te.white("RPC Type:",e)),i===E.VALIDATOR&&console.log(te.white("Commission:",o)),await O({NETWORK:a,NODE_TYPE:i,VALIDATOR_TYPE:t,RPC_TYPE:e,COMMISSION:o,IS_DUMMY:n}),!0}catch(t){throw new Error(t)}},"initialConfigSetup"),un=Lc;import{spawnSync as fn}from"child_process";var ee=r((t=wt,e=!1)=>{if(e){let o=`v${t}-mod`;fn(`sh -c "$(curl -sSfL https://raw.githubusercontent.com/gabrielhicks/jito-solana/${o}/installer)"`,{shell:!0,stdio:"inherit"})}else{let o=`v${t}-jito`;fn(`sh -c "$(curl -sSfL https://raw.githubusercontent.com/jito-foundation/jito-solana/${o}/installer)"`,{shell:!0,stdio:"inherit"})}},"installJito");var hn=r(()=>`#!/bin/bash
|
|
28
|
+
$ solv jupiter --help`))},"jupiterAPISetup"),mn=vc;import{existsAsync as Oc}from"@skeet-framework/utils";import{readFile as Rc,writeFile as pn}from"fs/promises";import{homedir as kc}from"os";import Cc from"path";var Nt=r(async()=>{let t=kc(),e=Cc.join(t,ot.JITO_CONFIG);await Oc(e)||(await pn(e,JSON.stringify(ct,null,2)),console.log(`Created jito config file at ${e}`));let o;try{o=JSON.parse(await Rc(e,"utf-8"))}catch(n){console.log(`readOrCreateJitoConfig - ${n}`),await pn(e,JSON.stringify(ct,null,2)),o=ct}return o},"readOrCreateJitoConfig");import{spawnSync as Ic}from"child_process";var Zt=r(()=>{Ic("sudo systemctl daemon-reload",{shell:!0,stdio:"inherit"})},"daemonReload");import te from"chalk";import Ke from"inquirer";import Pc from"inquirer";var dn=r(async()=>{let e=Object.keys(_o),o=await Pc.prompt([{name:"commissionBps",type:"number",message:"Enter commission bps",default:1e3},{name:"region",type:"list",message:"Select region",choices:e}]),n=o.region,s=_o[n];return{version:ct.version,tag:ct.tag,commissionBps:o.commissionBps,blockEngineUrl:s.BLOCK_ENGINE_URL,relayerUrl:s.RELAYER_URL,shredReceiverAddr:s.SHRED_RECEIVER_ADDR}},"askJitoSetting");var Lc=r(async()=>{try{let t=T.NONE,e=$.AGAVE,o=lt.COMMISSION,n=!1,s=await Ke.prompt([{name:"network",type:"list",message:"Choose Network",choices:$r,default:f.MAINNET},{name:"nodeType",type:"list",message:"Choose Node Type",choices:Dr,default:E.RPC}]);if(s.nodeType===E.VALIDATOR){let c=s.network===f.MAINNET?[T.JITO,T.SOLANA]:[T.AGAVE,T.JITO,T.FRANKENDANCER];t=await Ke.prompt({name:"validatorType",type:"list",message:"Choose Validator Type",choices:c,default:T.AGAVE}).then(l=>l.validatorType),e=$.NONE}if(s.nodeType===E.RPC&&(e=await Ke.prompt({name:"rpcType",type:"list",message:"Choose RPC Type",choices:br,default:$.AGAVE}).then(c=>c.rpcType)),s.nodeType===E.VALIDATOR){let c=await Ke.prompt([{name:"commission",type:"number",message:`What is your commission rate? You can change it later (default: ${lt.COMMISSION}%)'`,default:lt.COMMISSION},{name:"isDummy",type:"confirm",message:"Do you want to setup as a dummy(Inactive) node?(\u203BFor Migration)",default:!0}]);if(o=c.commission,n=c.isDummy,t===T.JITO){await Nt();let l=await dn();await Wt(l)}}let{network:a,nodeType:i}=s;return console.log(te.white("Network:",a)),console.log(te.white("Node Type:",i)),console.log(te.white("Validator Type:",t)),console.log(te.white("RPC Type:",e)),i===E.VALIDATOR&&console.log(te.white("Commission:",o)),await O({NETWORK:a,NODE_TYPE:i,VALIDATOR_TYPE:t,RPC_TYPE:e,COMMISSION:o,IS_DUMMY:n}),!0}catch(t){throw new Error(t)}},"initialConfigSetup"),un=Lc;import{spawnSync as fn}from"child_process";var ee=r((t=wt,e=!1)=>{if(e){let o=`v${t}-mod`;fn(`sh -c "$(curl --netrc-optional -sSfL https://raw.githubusercontent.com/gabrielhicks/jito-solana/${o}/installer)"`,{shell:!0,stdio:"inherit"})}else{let o=`v${t}-jito`;fn(`sh -c "$(curl --netrc-optional -sSfL https://raw.githubusercontent.com/jito-foundation/jito-solana/${o}/installer)"`,{shell:!0,stdio:"inherit"})}},"installJito");var hn=r(()=>`#!/bin/bash
|
|
29
29
|
exec agave-validator \\
|
|
30
30
|
--identity ${k} \\
|
|
31
31
|
--log ${X} \\
|
|
@@ -100,7 +100,7 @@ exec agave-validator \\
|
|
|
100
100
|
--wal-recovery-mode skip_any_corrupted_record \\
|
|
101
101
|
--use-snapshot-archives-at-startup when-newest \\
|
|
102
102
|
--limit-ledger-size 400000000 \\
|
|
103
|
-
`,"startRPCNodeScript");var bc=r(async t=>{let e=t.RPC_TYPE,o="";switch(e){case $.AGAVE:console.log("Agave RPC Node Setup"),It(t.TESTNET_SOLANA_VERSION),o=yn();break;case $.JITO:console.log("JITO RPC Node Setup"),ee(wt),o=hn();break;default:console.log("Unknown RPC Node Setup");break}if(await $c(Z)){console.log("Startup script already exists. Skipping...");return}await Dc(Z,o,"utf-8"),oe()},"setupRpcNode"),Sn=bc;import{spawnSync as Kc}from"node:child_process";var Uc=r(t=>{Kc(`sh -c "$(curl -sSfL https://release.solana.com/v${t}/install)"`,{shell:!0,stdio:"inherit"})},"installSolana"),Ro=Uc;var ko=r((t=1e3,e,o,n,s,a="agave-validator")=>`#!/bin/bash
|
|
103
|
+
`,"startRPCNodeScript");var bc=r(async t=>{let e=t.RPC_TYPE,o="";switch(e){case $.AGAVE:console.log("Agave RPC Node Setup"),It(t.TESTNET_SOLANA_VERSION),o=yn();break;case $.JITO:console.log("JITO RPC Node Setup"),ee(wt),o=hn();break;default:console.log("Unknown RPC Node Setup");break}if(await $c(Z)){console.log("Startup script already exists. Skipping...");return}await Dc(Z,o,"utf-8"),oe()},"setupRpcNode"),Sn=bc;import{spawnSync as Kc}from"node:child_process";var Uc=r(t=>{Kc(`sh -c "$(curl --netrc-optional -sSfL https://release.solana.com/v${t}/install)"`,{shell:!0,stdio:"inherit"})},"installSolana"),Ro=Uc;var ko=r((t=1e3,e,o,n,s,a="agave-validator")=>`#!/bin/bash
|
|
104
104
|
exec ${a} \\
|
|
105
105
|
--identity ${k} \\
|
|
106
106
|
--vote-account ${ye} \\
|