@ily-validator/solc 5.0.1 → 5.0.2

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 ii=Object.defineProperty;var r=(t,e)=>ii(t,"name",{value:e,configurable:!0});import"dotenv/config";import{Command as Ld}from"commander";var Uo="5.0.1";var Mo={name:"@ily-validator/solc",version:Uo,description:"Solana Validator CLI-Customized (Customized SOLV Client)",main:"dist/index.js",type:"module",repository:{type:"git",url:"git+https://github.com/ikaika1/solc.git"},keywords:["solana","validator","cli","validator-tool","Node.js","web3"],files:["dist"],types:"dist/index.d.ts",engines:{node:">=20"},author:"ELSOUL LABO B.V.",private:!1,license:"Apache-2.0",publishConfig:{access:"public",registry:"https://registry.npmjs.org"},bin:{solc:"./dist/index.js"},scripts:{test:"vitest",build:"tsup src/index.ts && npx tsx add-line.ts",prepublishOnly:"pnpm -s build",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 ce=Mo.version;var Mt="https://validators.solutions";var le="solc4.config.json";var ut="identity.json",ft="unstaked-identity.json",Fo="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",O=`${C}/${ut}`,bd=`${C}/${ft}`,D=`${C}/${li}`,me=`${C}/${mi}`,Ud=`${C}/${pi}`,I=`${C}/${di}`,Ho=`${C}/${ui}`,Md=`${C}/${fi}`,G=`${C}/solana-validator.log`,z=C+"/start-validator.sh",y="/mnt/ledger",W="/mnt/accounts",Yo="solana-validator",jo="agave-validator",Bo="ELLB9W7ZCwRCV3FzWcCWoyKP6NjZJKArLyGtkqefnHcG";var pe=3,Jo="https://api.testnet.solana.com",Go="https://api.mainnet-beta.solana.com",zo="https://verify.validators.solutions/solc-migrate",Wo="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 qo=Object.values(ao),de="So11111111111111111111111111111111111111112",ue="EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v",io="ELSoL1owwMWQ9foMsutweCsMKbTPVBD9pFqxQGidTaMC";var Qo="SOLV420",Xo={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 yi=r(t=>{hi(`sh -c "$(curl -sSfL https://release.anza.xyz/v${t}/install)"`,{shell:!0,stdio:"inherit"})},"installAgave"),Nt=yi;var Zo="agave-validator",Si=r(()=>{try{return Zo}catch(t){return console.error(t),Zo}},"getSolanaCLI"),K=Si;var fe=r(async t=>{Nt(t)},"updateVersion"),co=r(async(t,e=!1)=>{let o=K(),n=`${o} --ledger ${y} exit --max-delinquent-stake ${t} --monitor`;e&&(n=`${o} --ledger ${y} exit --max-delinquent-stake ${t}`),Ti(n,{shell:!0,stdio:"inherit"})},"monitorUpdate");import Mr from"chalk";var ht;(function(t){t.EN="en",t.JA="ja"})(ht||(ht={}));var tr;(function(t){t[t.DOUBLE=0]="DOUBLE",t[t.SINGLE=1]="SINGLE"})(tr||(tr={}));var er;(function(t){t.SINGLE="single",t.DOUBLE="double"})(er||(er={}));var ct;(function(t){t.MAINNET="mainnet-beta",t.TESTNET="testnet"})(ct||(ct={}));var or;(function(t){t.VALIDATOR="validator",t.RPC="rpc"})(or||(or={}));var rr;(function(t){t.SOLANA="solana",t.JITO="jito",t.AGAVE="agave",t.FIREDANCER="firedancer"})(rr||(rr={}));var nr;(function(t){t.CO_HOST_RELAYER="co-host-relayer",t.SEPARATED_RELAYER="separated-relayer",t.WITHOUT_RELAYER="without-relayer"})(nr||(nr={}));var sr;(function(t){t.FIREDANCER="firedancer",t.FRANKENDANCER="frankendancer"})(sr||(sr={}));var he;(function(t){t[t.TESTNET_VALIDATOR=0]="TESTNET_VALIDATOR",t[t.MAINNET_VALIDATOR=1]="MAINNET_VALIDATOR",t[t.RPC_NODE=2]="RPC_NODE"})(he||(he={}));var ye;(function(t){t.SOLANA_CLIENT="SolanaClient",t.JITO_MEV="JitoMev",t.FIREDANCER="Firedancer"})(ye||(ye={}));var cr=!1,lr=!0,M={ID:"solc",LANG:ht.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},b={ROOT:"/home/solv",AUTHORIZED_KEYS:"/home/solv/.ssh/authorized_keys"},k={ROOT:"/mnt",ACCOUNTS:"/mnt/accounts",LEDGER:"/mnt/ledger"},q={LOG:"solana-validator.log",STARTUP_SCRIPT:"start-validator.sh",CONFIG:"solc.config.json",JITO_CONFIG:"jito.config.json"},P={SOL_SERVICE:"/etc/systemd/system/solc.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"},v={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"},A=r((t=b.ROOT)=>{let e=t===b.ROOT?b.ROOT:t,o=`${e}/${v.MAINNET_VALIDATOR_KEY}`,n=`${e}/${v.MAINNET_VALIDATOR_VOTE_KEY}`,s=`${e}/${v.MAINNET_VALITATOR_AUTHORITY_KEY}`,a=`${e}/${v.TESTNET_VALIDATOR_KEY}`,i=`${e}/${v.TESTNET_VALIDATOR_VOTE_KEY}`,c=`${e}/${v.TESTNET_VALITATOR_AUTHORITY_KEY}`;return{mainnetValidatorKey:o,mainnetValidatorVoteKey:n,mainnetValidatorAuthorityKey:s,testnetValidatorKey:a,testnetValidatorVoteKey:i,testnetValidatorAuthorityKey:c}},"getAllKeyPaths"),lt=r((t=!0)=>{let e=t?`${b.ROOT}/${v.TESTNET_VALIDATOR_KEY}`:`${b.ROOT}/${v.MAINNET_VALIDATOR_KEY}`,o=t?`${b.ROOT}/${v.TESTNET_VALIDATOR_VOTE_KEY}`:`${b.ROOT}/${v.MAINNET_VALIDATOR_VOTE_KEY}`,n=`${b.ROOT}/${q.LOG}`,s=k.ACCOUNTS,a=k.LEDGER,i=`${b.ROOT}/${q.STARTUP_SCRIPT}`;return{identity:e,voteAccount:o,log:n,accounts:s,ledger:a,scriptPath:i}},"startupScriptPaths");var B="So1vW4Bm6ZURzJJHZy1JpsjoVY68z4cDgF4tTLwYMa5",lo="7tAfLKgRVd9eywSQPuMbVNd51KGkaveZQuTjapL74Fwv",mr="EiwSTx1Z2uJATDut682U7xzzquFR4UpQJUij3wSxVoSV",pr=9,Q="ELSoL1owwMWQ9foMsutweCsMKbTPVBD9pFqxQGidTaMC",dr="So11111111111111111111111111111111111111112",ur="EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v",fr="CvB1ztJvpYQPvdPBePtRzjL4aQidjydtUz61NWgcgQtP",ar;(function(t){t[t.ELSOL=Q]="ELSOL",t[t.SOL=dr]="SOL",t[t.USDC=ur]="USDC",t[t.EPCT=fr]="EPCT"})(ar||(ar={}));var ir;(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"})(ir||(ir={}));var eu={[dr]:9,[Q]:9,[ur]:6,[fr]:6},Se="/home/solv/currentEpoch.json",mo=.5,Te="https://api.testnet.solana.com";import{spawnSync as po}from"child_process";var hr=r(()=>{po("pnpm add -g pnpm",{shell:!0,stdio:"inherit"});let t=M.NODE_VERSION;po(`pnpm env use ${t} --global`,{shell:!0,stdio:"inherit"}),po("pnpm add -g @ily-validator/solc",{shell:!0,stdio:"inherit"})},"updateSolv");var nt={version:"1.18.23",tag:"v1.18.23-jito",commissionBps:700,relayerUrl:"http://amsterdam.mainnet.relayer.jito.wtf:8100",blockEngineUrl:"https://amsterdam.mainnet.block-engine.jito.wtf",shredReceiverAddr:"74.118.140.240:1002"},uo={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 Ee=r((t=nt.tag)=>{Ei(`sh -c "$(curl -sSfL https://release.jito.wtf/${t}/install)"`,{shell:!0,stdio:"inherit"})},"jitoUpdate");import{readFile as gi,writeFile as wi}from"fs/promises";import{homedir as Ai}from"os";var Ft=r(async t=>{let o=`${Ai()}/${q.JITO_CONFIG}`,s={...JSON.parse(await gi(o,"utf8")),...t},a=JSON.stringify(s,null,2);await wi(o,a),console.log(`Updated ${o} with new values.`)},"updateJitoSolvConfig");import{spawnSync as yr}from"child_process";import _i from"inquirer";var Sr=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";yr(`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}`;yr(a,{shell:!0,stdio:"inherit"})},"updateCommission"),Tr=r(async()=>await _i.prompt([{type:"number",name:"commission",message:"Enter new commission",default:7}]),"updateCommissionAsk");import{execAsync as Ht}from"@skeet-framework/utils";import Ni from"chalk";import Oi from"inquirer";var Er=r(async()=>{let t=await Oi.prompt([{name:"ip",type:"input",message:"Enter your IP address to allow access to RPC NODE:",default:"1.2.3.4"}]);await Ht("sudo ufw delete allow 8899/udp"),await Ht("sudo ufw delete allow 8899/tcp"),await Ht(`sudo ufw allow from ${t.ip} to any port 8899 proto tcp`),await Ht(`sudo ufw allow from ${t.ip} to any port 8899 proto udp`),await Ht("sudo ufw reload"),console.log(Ni.white("\u2714\uFE0F Firewall updated!"))},"updateFirewall");var ki=r(()=>Uo,"getSolvVersion"),Ot=ki;import{readFile as Ci,writeFile as Ii}from"fs/promises";import{existsAsync as Pi}from"@skeet-framework/utils";var fo;(function(t){t.EN="en",t.JA="ja"})(fo||(fo={}));var Cu=Object.values(fo),u;(function(t){t.MAINNET="mainnet-beta",t.TESTNET="testnet"})(u||(u={}));var gr=Object.values(u),T;(function(t){t.RPC="rpc",t.VALIDATOR="validator"})(T||(T={}));var wr=Object.values(T),E;(function(t){t.SOLANA="solana",t.AGAVE="agave",t.JITO="jito",t.FRANKENDANCER="frankendancer",t.NONE="none"})(E||(E={}));var Iu=Object.values(E).filter(t=>t!=="none"),$;(function(t){t.AGAVE="agave",t.JITO="jito",t.NONE="none"})($||($={}));var Ar=Object.values($).filter(t=>t!=="none"),X;(function(t){t.SINGLE="single",t.DOUBLE="double"})(X||(X={}));var Z="3.0.0",tt="2.3.8",yt="3.0.0",Yt="2.3.8",_r="2.3.8",St="2.3.8";var Nr="20.19.5";var Or="0.708.20306";var vi={NETWORK:u.TESTNET,NODE_TYPE:T.RPC,VALIDATOR_TYPE:E.NONE,RPC_TYPE:$.AGAVE,MNT_DISK_TYPE:X.SINGLE,TESTNET_SOLANA_VERSION:Z,MAINNET_SOLANA_VERSION:tt,NODE_VERSION:Nr,TESTNET_DELINQUENT_STAKE:5,MAINNET_DELINQUENT_STAKE:5,COMMISSION:5,DEFAULT_VALIDATOR_VOTE_ACCOUNT_PUBKEY:Bo,STAKE_ACCOUNTS:[],HARVEST_ACCOUNT:"",IS_MEV_MODE:!1,RPC_URL:Go,KEYPAIR_PATH:"",DISCORD_WEBHOOK_URL:"",AUTO_UPDATE:!1,AUTO_RESTART:!1,IS_DUMMY:!1,API_KEY:""},st=vi;import{homedir as Li}from"os";var xi=r(async()=>{let e=`${Li()}/${le}`;return await Pi(e)?JSON.parse(await Ci(e,"utf-8")):(console.log("Creating default config file at",e),await Ii(e,JSON.stringify(st,null,2)),st)},"readConfig"),L=xi;import Vi from"node-fetch";var x=r(async t=>{try{let e=await L();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 Ld}from"commander";var Uo="5.0.2";var Mo={name:"@ily-validator/solc",version:Uo,description:"Solana Validator CLI-Customized (Customized SOLV Client)",main:"dist/index.js",type:"module",repository:{type:"git",url:"git+https://github.com/ikaika1/solc.git"},keywords:["solana","validator","cli","validator-tool","Node.js","web3"],files:["dist"],types:"dist/index.d.ts",engines:{node:">=20"},author:"ELSOUL LABO B.V.",private:!1,license:"Apache-2.0",publishConfig:{access:"public",registry:"https://registry.npmjs.org"},bin:{solc:"./dist/index.js"},scripts:{test:"vitest",build:"tsup src/index.ts && npx tsx add-line.ts",prepublishOnly:"pnpm -s build",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 ce=Mo.version;var Mt="https://validators.solutions";var le="solc4.config.json";var ut="identity.json",ft="unstaked-identity.json",Fo="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",O=`${C}/${ut}`,bd=`${C}/${ft}`,D=`${C}/${li}`,me=`${C}/${mi}`,Ud=`${C}/${pi}`,I=`${C}/${di}`,Ho=`${C}/${ui}`,Md=`${C}/${fi}`,G=`${C}/solana-validator.log`,z=C+"/start-validator.sh",y="/mnt/ledger",W="/mnt/accounts",Yo="solana-validator",jo="agave-validator",Bo="ELLB9W7ZCwRCV3FzWcCWoyKP6NjZJKArLyGtkqefnHcG";var pe=3,Jo="https://api.testnet.solana.com",Go="https://api.mainnet-beta.solana.com",zo="https://verify.validators.solutions/solc-migrate",Wo="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 qo=Object.values(ao),de="So11111111111111111111111111111111111111112",ue="EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v",io="ELSoL1owwMWQ9foMsutweCsMKbTPVBD9pFqxQGidTaMC";var Qo="SOLV420",Xo={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 yi=r(t=>{hi(`sh -c "$(curl -sSfL https://release.anza.xyz/v${t}/install)"`,{shell:!0,stdio:"inherit"})},"installAgave"),Nt=yi;var Zo="agave-validator",Si=r(()=>{try{return Zo}catch(t){return console.error(t),Zo}},"getSolanaCLI"),K=Si;var fe=r(async t=>{Nt(t)},"updateVersion"),co=r(async(t,e=!1)=>{let o=K(),n=`${o} --ledger ${y} exit --max-delinquent-stake ${t} --monitor`;e&&(n=`${o} --ledger ${y} exit --max-delinquent-stake ${t}`),Ti(n,{shell:!0,stdio:"inherit"})},"monitorUpdate");import Mr from"chalk";var ht;(function(t){t.EN="en",t.JA="ja"})(ht||(ht={}));var tr;(function(t){t[t.DOUBLE=0]="DOUBLE",t[t.SINGLE=1]="SINGLE"})(tr||(tr={}));var er;(function(t){t.SINGLE="single",t.DOUBLE="double"})(er||(er={}));var ct;(function(t){t.MAINNET="mainnet-beta",t.TESTNET="testnet"})(ct||(ct={}));var or;(function(t){t.VALIDATOR="validator",t.RPC="rpc"})(or||(or={}));var rr;(function(t){t.SOLANA="solana",t.JITO="jito",t.AGAVE="agave",t.FIREDANCER="firedancer"})(rr||(rr={}));var nr;(function(t){t.CO_HOST_RELAYER="co-host-relayer",t.SEPARATED_RELAYER="separated-relayer",t.WITHOUT_RELAYER="without-relayer"})(nr||(nr={}));var sr;(function(t){t.FIREDANCER="firedancer",t.FRANKENDANCER="frankendancer"})(sr||(sr={}));var he;(function(t){t[t.TESTNET_VALIDATOR=0]="TESTNET_VALIDATOR",t[t.MAINNET_VALIDATOR=1]="MAINNET_VALIDATOR",t[t.RPC_NODE=2]="RPC_NODE"})(he||(he={}));var ye;(function(t){t.SOLANA_CLIENT="SolanaClient",t.JITO_MEV="JitoMev",t.FIREDANCER="Firedancer"})(ye||(ye={}));var cr=!1,lr=!0,M={ID:"solc",LANG:ht.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},b={ROOT:"/home/solv",AUTHORIZED_KEYS:"/home/solv/.ssh/authorized_keys"},k={ROOT:"/mnt",ACCOUNTS:"/mnt/accounts",LEDGER:"/mnt/ledger"},q={LOG:"solana-validator.log",STARTUP_SCRIPT:"start-validator.sh",CONFIG:"solc.config.json",JITO_CONFIG:"jito.config.json"},P={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"},v={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"},A=r((t=b.ROOT)=>{let e=t===b.ROOT?b.ROOT:t,o=`${e}/${v.MAINNET_VALIDATOR_KEY}`,n=`${e}/${v.MAINNET_VALIDATOR_VOTE_KEY}`,s=`${e}/${v.MAINNET_VALITATOR_AUTHORITY_KEY}`,a=`${e}/${v.TESTNET_VALIDATOR_KEY}`,i=`${e}/${v.TESTNET_VALIDATOR_VOTE_KEY}`,c=`${e}/${v.TESTNET_VALITATOR_AUTHORITY_KEY}`;return{mainnetValidatorKey:o,mainnetValidatorVoteKey:n,mainnetValidatorAuthorityKey:s,testnetValidatorKey:a,testnetValidatorVoteKey:i,testnetValidatorAuthorityKey:c}},"getAllKeyPaths"),lt=r((t=!0)=>{let e=t?`${b.ROOT}/${v.TESTNET_VALIDATOR_KEY}`:`${b.ROOT}/${v.MAINNET_VALIDATOR_KEY}`,o=t?`${b.ROOT}/${v.TESTNET_VALIDATOR_VOTE_KEY}`:`${b.ROOT}/${v.MAINNET_VALIDATOR_VOTE_KEY}`,n=`${b.ROOT}/${q.LOG}`,s=k.ACCOUNTS,a=k.LEDGER,i=`${b.ROOT}/${q.STARTUP_SCRIPT}`;return{identity:e,voteAccount:o,log:n,accounts:s,ledger:a,scriptPath:i}},"startupScriptPaths");var B="So1vW4Bm6ZURzJJHZy1JpsjoVY68z4cDgF4tTLwYMa5",lo="7tAfLKgRVd9eywSQPuMbVNd51KGkaveZQuTjapL74Fwv",mr="EiwSTx1Z2uJATDut682U7xzzquFR4UpQJUij3wSxVoSV",pr=9,Q="ELSoL1owwMWQ9foMsutweCsMKbTPVBD9pFqxQGidTaMC",dr="So11111111111111111111111111111111111111112",ur="EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v",fr="CvB1ztJvpYQPvdPBePtRzjL4aQidjydtUz61NWgcgQtP",ar;(function(t){t[t.ELSOL=Q]="ELSOL",t[t.SOL=dr]="SOL",t[t.USDC=ur]="USDC",t[t.EPCT=fr]="EPCT"})(ar||(ar={}));var ir;(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"})(ir||(ir={}));var eu={[dr]:9,[Q]:9,[ur]:6,[fr]:6},Se="/home/solv/currentEpoch.json",mo=.5,Te="https://api.testnet.solana.com";import{spawnSync as po}from"child_process";var hr=r(()=>{po("pnpm add -g pnpm",{shell:!0,stdio:"inherit"});let t=M.NODE_VERSION;po(`pnpm env use ${t} --global`,{shell:!0,stdio:"inherit"}),po("pnpm add -g @ily-validator/solc",{shell:!0,stdio:"inherit"})},"updateSolv");var nt={version:"1.18.23",tag:"v1.18.23-jito",commissionBps:700,relayerUrl:"http://amsterdam.mainnet.relayer.jito.wtf:8100",blockEngineUrl:"https://amsterdam.mainnet.block-engine.jito.wtf",shredReceiverAddr:"74.118.140.240:1002"},uo={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 Ee=r((t=nt.tag)=>{Ei(`sh -c "$(curl -sSfL https://release.jito.wtf/${t}/install)"`,{shell:!0,stdio:"inherit"})},"jitoUpdate");import{readFile as gi,writeFile as wi}from"fs/promises";import{homedir as Ai}from"os";var Ft=r(async t=>{let o=`${Ai()}/${q.JITO_CONFIG}`,s={...JSON.parse(await gi(o,"utf8")),...t},a=JSON.stringify(s,null,2);await wi(o,a),console.log(`Updated ${o} with new values.`)},"updateJitoSolvConfig");import{spawnSync as yr}from"child_process";import _i from"inquirer";var Sr=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";yr(`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}`;yr(a,{shell:!0,stdio:"inherit"})},"updateCommission"),Tr=r(async()=>await _i.prompt([{type:"number",name:"commission",message:"Enter new commission",default:7}]),"updateCommissionAsk");import{execAsync as Ht}from"@skeet-framework/utils";import Ni from"chalk";import Oi from"inquirer";var Er=r(async()=>{let t=await Oi.prompt([{name:"ip",type:"input",message:"Enter your IP address to allow access to RPC NODE:",default:"1.2.3.4"}]);await Ht("sudo ufw delete allow 8899/udp"),await Ht("sudo ufw delete allow 8899/tcp"),await Ht(`sudo ufw allow from ${t.ip} to any port 8899 proto tcp`),await Ht(`sudo ufw allow from ${t.ip} to any port 8899 proto udp`),await Ht("sudo ufw reload"),console.log(Ni.white("\u2714\uFE0F Firewall updated!"))},"updateFirewall");var ki=r(()=>Uo,"getSolvVersion"),Ot=ki;import{readFile as Ci,writeFile as Ii}from"fs/promises";import{existsAsync as Pi}from"@skeet-framework/utils";var fo;(function(t){t.EN="en",t.JA="ja"})(fo||(fo={}));var Cu=Object.values(fo),u;(function(t){t.MAINNET="mainnet-beta",t.TESTNET="testnet"})(u||(u={}));var gr=Object.values(u),T;(function(t){t.RPC="rpc",t.VALIDATOR="validator"})(T||(T={}));var wr=Object.values(T),E;(function(t){t.SOLANA="solana",t.AGAVE="agave",t.JITO="jito",t.FRANKENDANCER="frankendancer",t.NONE="none"})(E||(E={}));var Iu=Object.values(E).filter(t=>t!=="none"),$;(function(t){t.AGAVE="agave",t.JITO="jito",t.NONE="none"})($||($={}));var Ar=Object.values($).filter(t=>t!=="none"),X;(function(t){t.SINGLE="single",t.DOUBLE="double"})(X||(X={}));var Z="3.0.0",tt="2.3.8",yt="3.0.0",Yt="2.3.8",_r="2.3.8",St="2.3.8";var Nr="20.19.5";var Or="0.708.20306";var vi={NETWORK:u.TESTNET,NODE_TYPE:T.RPC,VALIDATOR_TYPE:E.NONE,RPC_TYPE:$.AGAVE,MNT_DISK_TYPE:X.SINGLE,TESTNET_SOLANA_VERSION:Z,MAINNET_SOLANA_VERSION:tt,NODE_VERSION:Nr,TESTNET_DELINQUENT_STAKE:5,MAINNET_DELINQUENT_STAKE:5,COMMISSION:5,DEFAULT_VALIDATOR_VOTE_ACCOUNT_PUBKEY:Bo,STAKE_ACCOUNTS:[],HARVEST_ACCOUNT:"",IS_MEV_MODE:!1,RPC_URL:Go,KEYPAIR_PATH:"",DISCORD_WEBHOOK_URL:"",AUTO_UPDATE:!1,AUTO_RESTART:!1,IS_DUMMY:!1,API_KEY:""},st=vi;import{homedir as Li}from"os";var xi=r(async()=>{let e=`${Li()}/${le}`;return await Pi(e)?JSON.parse(await Ci(e,"utf-8")):(console.log("Creating default config file at",e),await Ii(e,JSON.stringify(st,null,2)),st)},"readConfig"),L=xi;import Vi from"node-fetch";var x=r(async t=>{try{let e=await L();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} Solc 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 Fi}from"child_process";import{Connection as kr}from"@solana/web3.js";var jt=r(async(t,e,o=!1,n=200)=>{let s={pubkey:e,isActive:!1,reason:""};try{let a=o?new kr("https://api.testnet.solana.com"):new kr(t,"confirmed"),i=await a.getVoteAccounts(),c=i.current.find(m=>m.votePubkey===e);if(!c)return i.delinquent.find(f=>f.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(m=>m.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 g=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"),et=Di;import{sendDiscord as Ki}from"@skeet-framework/utils";var Rr=60,bi=r(async t=>{try{let e=t.NETWORK===u.TESTNET,{mainnetValidatorVoteKey:o,testnetValidatorVoteKey:n}=A(),a=g(e?n:o),i=await jt(t.RPC_URL,a,e),c=0;for(;!i.isActive;){if(c>=Rr){console.log("Max retries reached, exiting...");let l=`\u26A0\uFE0F Validator is not active for ${Rr} minutes!
4
4
  Account: ${i.pubkey}
5
5
  Reason: ${i.reason}
@@ -227,7 +227,7 @@ fs.nr_open = 1000000
227
227
  missingok
228
228
  compress
229
229
  postrotate
230
- systemctl kill -s USR1 solc.service
230
+ systemctl kill -s USR1 solv.service
231
231
  endscript
232
232
  }
233
233
  `},"logRotates");import{existsSync as Uc}from"fs";import{execSync as Mc}from"child_process";function hn(){if(console.log("Creating logrotate configuration for solana"),Uc(P.SOL_LOGROTATE))console.log("SOL_LOGROTATE_PATH already exists. Skipping logrotate configuration.");else{let t=fn();Mc(`echo "${t}" | sudo tee ${P.SOL_LOGROTATE} > /dev/null`),console.log("Logrotate configuration created.")}}r(hn,"setupLogrotate");var Fc="SOLANA_METRICS_CONFIG=host=https://metrics.solana.com:8086,db=mainnet-beta,u=mainnet-beta_write,p=password",Hc="SOLANA_METRICS_CONFIG=host=https://metrics.solana.com:8086,db=tds,u=testnet_write,p=c4fa841aa918bf8274e3e2a44d77568d9861b3ea",Yc=`/home/${M.USERNAME}/.local/share/solana/install/active_release/bin`,yn=r((t=!0)=>{let{scriptPath:e}=lt(t),o=t?Hc:Fc,n=Yc;return`[Unit]
@@ -248,7 +248,7 @@ Environment="${o}"
248
248
  ExecStart=${e}
249
249
 
250
250
  [Install]
251
- WantedBy=multi-user.target`},"solvService");import{execSync as jc}from"child_process";function Sn(t=!0){console.log("Creating solvService configuration for solana");let e=yn(t);jc(`echo "${e}" | sudo tee ${P.SOL_SERVICE} > /dev/null`),console.log("solc.service configuration created.")}r(Sn,"setupSolvService");var Tn=r((t=!0)=>{hn(),Sn(t),un()},"makeServices");import{spawnSync as wo}from"node:child_process";var En=r(t=>{try{Ce(t);let e=t.NETWORK;return e===u.TESTNET?(wo(`solana config set --url ${e} -k ${I}`,{shell:!0,stdio:"inherit"}),wo(`solana airdrop 1 --url ${e} -k ${I}`,{shell:!0,stdio:"inherit"})):wo(`solana config set --url ${e} -k ${D}`,{shell:!0,stdio:"inherit"}),t.NODE_TYPE!==T.RPC&&Re(t),!0}catch(e){throw new Error(`setupKeys Error: ${e}`)}},"setupKeys");import{spawnSync as gn}from"node:child_process";var xe=r((t=!1,e="45",o=k.LEDGER,n=`${o}/snapshot`,s)=>{try{let a=`docker run -it --rm -v ${o}:${n} --user $(id -u):$(id -g) c29r3/solana-snapshot-finder:latest --snapshot_path ${n} --min_download_speed ${e} --version ${s}`;if(t){gn("wget --trust-server-names https://snapshots.avorio.network/testnet/snapshot.tar.bz2 https://snapshots.avorio.network/testnet/incremental-snapshot.tar.bz2",{shell:!0,stdio:"inherit",cwd:"/mnt/ledger"});return}gn(a,{shell:!0,stdio:"inherit"})}catch(a){throw new Error(`getSnapshot Error: ${a}`)}},"getSnapshot");import{spawnSync as Bc}from"node:child_process";var Ve=r(t=>{let o=[`sudo systemctl start ${t.VALIDATOR_TYPE===E.FRANKENDANCER?"frankendancer":"solc"}`];Bc(o[0],{shell:!0,stdio:"inherit"})},"startSolana");import{execSync as Jc}from"node:child_process";var Gc=r(()=>{try{Jc('echo "performance" | sudo tee /sys/devices/system/cpu/cpu*/cpufreq/scaling_governor')}catch{}},"setupCpuGovernor"),wn=Gc;import Ao from"fs";import{promisify as _n}from"util";import{execSync as An}from"child_process";var zc=_n(Ao.readFile),Wc=_n(Ao.access),$e="/etc/sysctl.conf",qc=`# set default and maximum socket buffer sizes to 128MB
251
+ WantedBy=multi-user.target`},"solvService");import{execSync as jc}from"child_process";function Sn(t=!0){console.log("Creating solvService configuration for solana");let e=yn(t);jc(`echo "${e}" | sudo tee ${P.SOL_SERVICE} > /dev/null`),console.log("solv.service configuration created.")}r(Sn,"setupSolvService");var Tn=r((t=!0)=>{hn(),Sn(t),un()},"makeServices");import{spawnSync as wo}from"node:child_process";var En=r(t=>{try{Ce(t);let e=t.NETWORK;return e===u.TESTNET?(wo(`solana config set --url ${e} -k ${I}`,{shell:!0,stdio:"inherit"}),wo(`solana airdrop 1 --url ${e} -k ${I}`,{shell:!0,stdio:"inherit"})):wo(`solana config set --url ${e} -k ${D}`,{shell:!0,stdio:"inherit"}),t.NODE_TYPE!==T.RPC&&Re(t),!0}catch(e){throw new Error(`setupKeys Error: ${e}`)}},"setupKeys");import{spawnSync as gn}from"node:child_process";var xe=r((t=!1,e="45",o=k.LEDGER,n=`${o}/snapshot`,s)=>{try{let a=`docker run -it --rm -v ${o}:${n} --user $(id -u):$(id -g) c29r3/solana-snapshot-finder:latest --snapshot_path ${n} --min_download_speed ${e} --version ${s}`;if(t){gn("wget --trust-server-names https://snapshots.avorio.network/testnet/snapshot.tar.bz2 https://snapshots.avorio.network/testnet/incremental-snapshot.tar.bz2",{shell:!0,stdio:"inherit",cwd:"/mnt/ledger"});return}gn(a,{shell:!0,stdio:"inherit"})}catch(a){throw new Error(`getSnapshot Error: ${a}`)}},"getSnapshot");import{spawnSync as Bc}from"node:child_process";var Ve=r(t=>{let o=`sudo systemctl start ${t.VALIDATOR_TYPE===E.FRANKENDANCER?"frankendancer":"solv"}`;Bc(o,{shell:!0,stdio:"inherit"})},"startSolana");import{execSync as Jc}from"node:child_process";var Gc=r(()=>{try{Jc('echo "performance" | sudo tee /sys/devices/system/cpu/cpu*/cpufreq/scaling_governor')}catch{}},"setupCpuGovernor"),wn=Gc;import Ao from"fs";import{promisify as _n}from"util";import{execSync as An}from"child_process";var zc=_n(Ao.readFile),Wc=_n(Ao.access),$e="/etc/sysctl.conf",qc=`# set default and maximum socket buffer sizes to 128MB
252
252
  net.core.rmem_default=134217728
253
253
  net.core.wmem_default=134217728
254
254
  net.core.rmem_max=134217728
@@ -261,7 +261,7 @@ net.ipv4.tcp_wmem=10240 87380 134217728
261
261
  # Enable TCP westwood for kernels greater than or equal to 2.6.13
262
262
  net.ipv4.tcp_congestion_control=westwood`;async function Qc(){try{await Wc($e,Ao.constants.F_OK)}catch{return console.log(`Skipping updateSysctlConfig: ${$e} does not exist`)}try{let t=await zc($e,"utf8");if(!t.includes("rmem_default")){console.log("No need to update sysctl.conf");return}let e=t.replace(/net\.core\.(rmem_default|wmem_default|rmem_max|wmem_max)=.*\n/g,"");e=e.replace(/net\.ipv4\.tcp_(rmem|wmem|congestion_control)=.*\n/g,""),e+=`
263
263
  ${qc}
264
- `,An(`echo "${e}" | sudo tee ${$e} > /dev/null`),An("sudo sysctl -p"),console.log("sysctl.conf updated successfully")}catch(t){console.error(`Error: ${t}`)}}r(Qc,"updateSysctlConfig");var Nn=Qc;import{spawnSync as Xc}from"child_process";var On=r(()=>{Xc("sudo systemctl restart logrotate",{shell:!0,stdio:"inherit"})},"restartLogrotate");import{spawnSync as Zc}from"node:child_process";var kn=r(()=>{Zc("sudo systemctl enable solc",{shell:!0,stdio:"inherit"})},"enableSolv");import{spawnSync as Rn}from"child_process";var vn=r((t=!1,e=!1)=>{t?el():tl(e)},"createSymLink"),tl=r((t=!1)=>{let e="mainnet";t&&(e="testnet"),Rn(`ln -sf /home/solv/${e}-validator-keypair.json /home/solv/identity.json`,{shell:!0,stdio:"inherit"})},"createActiveSymLink"),el=r(()=>{Rn("ln -sf /home/solv/unstaked-identity.json /home/solv/identity.json",{shell:!0,stdio:"inherit"})},"createInactiveSymLink");import De from"chalk";var ol=r(()=>{let t=`${De.yellow("\u26A1\uFE0F\u26A1\uFE0F\u26A1\uFE0F")}`,e=`${De.blueBright(`${t} Solana Private RPC Connection API Key ${t}`)}
264
+ `,An(`echo "${e}" | sudo tee ${$e} > /dev/null`),An("sudo sysctl -p"),console.log("sysctl.conf updated successfully")}catch(t){console.error(`Error: ${t}`)}}r(Qc,"updateSysctlConfig");var Nn=Qc;import{spawnSync as Xc}from"child_process";var On=r(()=>{Xc("sudo systemctl restart logrotate",{shell:!0,stdio:"inherit"})},"restartLogrotate");import{spawnSync as Zc}from"node:child_process";var kn=r(()=>{Zc("sudo systemctl enable solv",{shell:!0,stdio:"inherit"})},"enableSolv");import{spawnSync as Rn}from"child_process";var vn=r((t=!1,e=!1)=>{t?el():tl(e)},"createSymLink"),tl=r((t=!1)=>{let e="mainnet";t&&(e="testnet"),Rn(`ln -sf /home/solv/${e}-validator-keypair.json /home/solv/identity.json`,{shell:!0,stdio:"inherit"})},"createActiveSymLink"),el=r(()=>{Rn("ln -sf /home/solv/unstaked-identity.json /home/solv/identity.json",{shell:!0,stdio:"inherit"})},"createInactiveSymLink");import De from"chalk";var ol=r(()=>{let t=`${De.yellow("\u26A1\uFE0F\u26A1\uFE0F\u26A1\uFE0F")}`,e=`${De.blueBright(`${t} Solana Private RPC Connection API Key ${t}`)}
265
265
 
266
266
  We're excited to offer a free API key exclusively for the Validators DAO community \u{1F389}
267
267
  It's our way of supporting the community and empowering you with fast, reliable connections.
@@ -407,7 +407,7 @@ WantedBy=multi-user.target`;return{filePath:e,body:o}},"jitoRelayerSeparateServi
407
407
  `);await ml(t,n),cl(`chmod +x ${t}`,{shell:!0,stdio:"inherit"})},"addConfigToStartupScript"),Kn=pl;import dl from"inquirer";import{writeFile as ul}from"node:fs/promises";var bn=r(async()=>{let e=(await dl.prompt([{type:"input",name:"xToken",message:"Enter the xToken",default:"xToken"}])).xToken,o="git clone https://github.com/rpcpool/yellowstone-grpc.git",n="cargo build -r",s="cargo-fmt && cargo run --bin config-check -- --config yellowstone-grpc-geyser/config.json";_o(o,{shell:!0,stdio:"inherit"}),_o(n,{shell:!0,stdio:"inherit",cwd:"/home/solv/yellowstone-grpc"}),_o(s,{shell:!0,stdio:"inherit",cwd:"/home/solv/yellowstone-grpc"});let{filePath:a,defaultConfig:i}=Dn(e),c=JSON.stringify(i,null,2);await ul(a,c,{encoding:"utf8"}),await Kn()},"yellowstoneGeyser");var Un=r(t=>{h.command("setup").description("Setup Solana Validator").option("--vote","Setup Vote Account",!1).option("--key","Setup Validator Keypairs",!1).option("--relayer","Setup Jito Relayer",!1).option("--jupiter","Setup Jupiter Swap API",!1).option("--geyser","Setup Geyser",!1).option("--firedancer","Setup Firedancer",!1).option("--skip-init-config","Skip Initial Config",!1).option("--skip-mount","Skip Mount",!1).action(async e=>{try{if(e.vote)console.log(at.white("\u{1F5F3}\uFE0F Setting up Vote Account ...")),Re(t),process.exit(0);else if(e.key)console.log(at.white("\u{1F511} Setting up Validator Keypairs ...")),Ce(t),process.exit(0);else if(e.relayer){console.log(at.white("\u{1F6F0}\uFE0F Setting up Jito Relayer ..."));let n=(await Tt()).blockEngineUrl;await $n(n,!1),console.log(at.green(`Jito Relayer Setup Completed
408
408
 
409
409
  $ solc relayer --help`)),Bt(),Et(),process.exit(0)}else if(e.jupiter)console.log(at.white("\u{1F30F} Setting up Jupiter Swap API ...")),await zr(),Bt(),Et(),process.exit(0);else if(e.geyser){console.log(at.white("\u26A1\uFE0F Setting up Geyser ...")),await bn();return}else if(e.firedancer){console.log(at.white("\u{1F525} Setting up Firedancer ...")),await be();return}await Ln(e.skipInitConfig,e.skipMount)}catch(o){(o.message.includes("User force closed the prompt")||o.message.includes("initialConfigSetup"))&&(console.error(at.cyan("Exiting...\u{1F31B}")),process.exit(0)),console.error(at.red(`Setup Error: ${o.message}`)),process.exit(0)}})},"setupCommands");import{execSync as fl}from"child_process";var No=r(()=>{let o=fl("df -h").toString().split(`
410
- `).slice(1).filter(s=>s.split(/\s+/)[0]!=="").map(s=>{let a=s.split(/\s+/);return{Filesystem:a[0],Size:a[1],Used:a[2],Avail:a[3],Use:a[4],MountedOn:a[5]}}).sort((s,a)=>gt(a.Avail)-gt(s.Avail)).slice(0,10),n=o.some(s=>s.MountedOn==="/mnt"&&gt(s.Size)>9e11-1);return o.forEach(s=>{s.MountedOn==="/mnt"&&gt(s.Size)>9e11-1?console.log(`%c${s.Filesystem} ${s.Size} ${s.MountedOn}`,"color: green"):s.Filesystem.startsWith("/dev/")&&gt(s.Size)>9e11-1&&console.log(`%c${s.Filesystem} ${s.Size} ${s.MountedOn}`,"color: red")}),n?console.log("your mount point is correct"):o.filter(a=>a.Filesystem.startsWith("/dev/")&&gt(a.Size)>899999999999).map(a=>a.Filesystem).length>0,o},"df");import Mn from"chalk";import hl from"cli-table3";var Oo=r(t=>{let e=["Filesystem","Size","Used","Avail","Use","MountedOn"].map(n=>Mn.blue(n)),o=new hl({head:e,colWidths:[20,10,10,10,10,20]});t.forEach(n=>{o.push([n.Filesystem,n.Size,n.Used,n.Avail,n.Use,n.MountedOn].map(s=>Mn.white(s)))}),console.log(o.toString())},"displayTable");var Fn=r(async()=>{h.command("df").description("Disk Free Command").action(()=>{let t=No();Oo(t)})},"dfCommands"),gt=r(t=>{let e={K:1e3,KB:1e3,M:1e6,MB:1e6,G:1e9,GB:1e9,T:1e12,TB:1e12},o=t.match(/[A-Za-z]+/)?.[0]||"",n=parseFloat(t);return e[o]?n*e[o]:n},"convertToBytes");var Hn=r(t=>{h.command("start").description("Start Solana Validator").action(()=>{Ve(t),process.exit(0)})},"startCommand");import{spawnSync as yl}from"node:child_process";var Yn=r(t=>{let o=[`sudo systemctl stop ${t.VALIDATOR_TYPE===E.FRANKENDANCER?"frankendancer":"solc"}`];yl(o[0],{shell:!0,stdio:"inherit"})},"stopSolana");var jn=r(t=>{h.command("stop").description("Stop Solana Validator").action(()=>{Yn(t),process.exit(0)})},"stopCommand");import{spawnSync as Qt}from"node:child_process";import Bn from"chalk";var Jn=r(t=>{let e=K();h.command("restart").description("Restart Solana Validator").option("-r, --rm","Remove Snapshot and Restart Validator",!1).action(async o=>{o.rm&&(console.log(Bn.white("\u{1F477}\u200D\u2640\uFE0F Removing Snapshot and Restarting Validator...")),Qt("solc stop",{stdio:"inherit",shell:!0}),Qt("solc rm:snapshot",{stdio:"inherit",shell:!0}),Qt("solc get snapshot",{stdio:"inherit",shell:!0}),Qt("solc start",{stdio:"inherit",shell:!0}),console.log(Bn.green("\u2714\uFE0E Successfully Restarted Validator")),process.exit(0));let n=`${e} --ledger ${y} exit --max-delinquent-stake ${t.MAINNET_DELINQUENT_STAKE}`;Qt(n,{shell:!0,stdio:"inherit"}),process.exit(0)})},"restartCommand");var Gn=r(t=>{let o=t.NETWORK===u.TESTNET?Z:tt;t.NODE_TYPE===T.RPC&&(o=St),h.command("install").alias("i").description("Install Solana Client").option("-v, --version <version>",`Solana Version e.g. ${o}`,o).action(async n=>{if(t.VALIDATOR_TYPE===E.JITO){let l=`v${n.version||Yt}-jito`;Ee(l);return}t.NODE_TYPE===T.RPC&&(o=St);let i=n.version||o;await fe(i)})},"installCommands");import{spawnSync as Sl}from"child_process";var zn=r(()=>{h.command("mtr").description("Mount Reload Command").action(()=>{Sl("sudo mount --all --verbose",{shell:!0,stdio:"inherit"})}),h.command("disks").description("Show unmounted disks").action(()=>{let t=Wt();console.log(t)})},"mountCommands");import{spawnSync as gl}from"node:child_process";import Wn from"chalk";import{spawnSync as Tl}from"child_process";var El=r(async()=>{try{let t=Tl("crontab",["-l"],{encoding:"utf-8"});if(t.status!==0)return console.log("No crontab for this user."),!1;let e=t.stdout;return console.log(e),e.includes("solc epochTimer")}catch(t){return console.error("Error reading crontab:",t),!1}},"hasEpochTimer"),Me=El;var qn=r(()=>{h.command("cron").description("Cron Job Commands").command("epoch").description("Solc Epoch Timer Discord Notification Command").option("-c, --cron <value>","Cron Job","*/5 * * * *").action(async e=>{await Me()&&(console.log(Wn.green("\u26A0\uFE0F Epoch Timer Cron Job already set")),process.exit(1));let n=`(crontab -l 2>/dev/null; echo "${e.cron} . /home/solv/.profile && solc epochTimer >> /home/solv/cron.log 2>&1") | crontab -`;gl(n,{shell:!0,stdio:"inherit"}),console.log(Wn.green("\u2705 Epoch Timer Cron Job Set"))})},"cronCommands");var Xt={SOLV_KEYPAIR_DOWNLOAD_PATH:"/solvKeys/download",SOLV_KEYPAIR_UPLOAD_PATH:"/solvKeys/upload",SOLV_KEYPAIR_UPLOAD_PATH_LINUX:"/home/solv",SOLV_KEYPAIR_TRASH_PATH:"/solvKeys/trash",SSH_PUBKEY_PATH:"/.ssh/id_rsa.pub"};import{existsSync as Al,mkdirSync as _l}from"fs";import Nl from"inquirer";import{homedir as Ol}from"os";import{spawnSync as wl}from"node:child_process";function Qn(t,e,o,n){let s=n?`scp -o StrictHostKeyChecking=no solv@${t}:${e} ${o}`:`scp -o StrictHostKeyChecking=no ${e} solv@${t}:${o}`;return wl(s,{shell:!0,stdio:"inherit"}).status===0}r(Qn,"executeSCP");var ko=r(async(t="")=>{let e=t;t===""&&(e=(await Nl.prompt([{type:"input",name:"ip",message:"Enter your Ubuntu Server IP",default(){return"1.1.1.1"}}])).ip);let o=Object.values(A()),n=Ol(),s=n.includes("/home/solv")?"/home/solv":n+Xt.SOLV_KEYPAIR_DOWNLOAD_PATH;Al(s)||_l(s,{recursive:!0});let a=!0,i=n+"/"+Fo;o.push(i);for(let c of o){let l=c.split("/"),p=l[l.length-1];p=n.includes("/home/solv")?p:p.replace(".json",`-${e}.json`);let d=`${s}/${p}`;Qn(e,c,d,a)&&console.log(`Successfully Exported - ${d} \u{1F389}`)}},"download");import{spawnSync as kl}from"child_process";import{existsSync as Rl}from"fs";import vl from"inquirer";import Cl from"os";var Xn=r(async(t="")=>{let e=Cl.userInfo().homedir,o=t;t===""&&(o=(await vl.prompt([{type:"input",name:"ip",message:"Enter your Ubuntu Server IP",default(){return"1.1.1.1"}}])).ip);let n=`${e}${Xt.SOLV_KEYPAIR_UPLOAD_PATH}`;e.includes("/home/solv")&&(n=Xt.SOLV_KEYPAIR_UPLOAD_PATH_LINUX);let s=Object.values(A(n));for(let a of s){let i=a.split("/"),c=i[i.length-1];if(!c.endsWith("keypair.json"))continue;let l=`${n}/${c}`;if(!Rl(l))continue;let p=`scp -o StrictHostKeyChecking=no ${l} solv@${o}:${a}`;kl(p,{shell:!0,stdio:"inherit"}),console.log(`Successfully Uploaded - ${c} \u{1F389}`)}},"upload");import{spawnSync as Il}from"child_process";import Pl from"inquirer";var Zn=r(async()=>{let t=await Pl.prompt({type:"input",name:"pubkey",message:"Enter your SSH Public Key",default(){return"xxxxxxxpubkeyxxxxxxxx"}}),e=`mkdir -p ${b.ROOT}/.ssh && echo "${t.pubkey}" >> ${b.AUTHORIZED_KEYS}`;Il(e,{shell:!0,stdio:"inherit"}),console.log("Successfully Created SSH Login Setting \u{1F389}")},"scpCreate");import Fe from"chalk";import{readFileSync as Ll}from"fs";import xl from"os";var ts=r(()=>{try{let e=`${xl.userInfo().homedir}/.ssh/id_rsa.pub`,o=Ll(e,"utf8");console.log(Fe.white(`Your SSH Public Key is:
410
+ `).slice(1).filter(s=>s.split(/\s+/)[0]!=="").map(s=>{let a=s.split(/\s+/);return{Filesystem:a[0],Size:a[1],Used:a[2],Avail:a[3],Use:a[4],MountedOn:a[5]}}).sort((s,a)=>gt(a.Avail)-gt(s.Avail)).slice(0,10),n=o.some(s=>s.MountedOn==="/mnt"&&gt(s.Size)>9e11-1);return o.forEach(s=>{s.MountedOn==="/mnt"&&gt(s.Size)>9e11-1?console.log(`%c${s.Filesystem} ${s.Size} ${s.MountedOn}`,"color: green"):s.Filesystem.startsWith("/dev/")&&gt(s.Size)>9e11-1&&console.log(`%c${s.Filesystem} ${s.Size} ${s.MountedOn}`,"color: red")}),n?console.log("your mount point is correct"):o.filter(a=>a.Filesystem.startsWith("/dev/")&&gt(a.Size)>899999999999).map(a=>a.Filesystem).length>0,o},"df");import Mn from"chalk";import hl from"cli-table3";var Oo=r(t=>{let e=["Filesystem","Size","Used","Avail","Use","MountedOn"].map(n=>Mn.blue(n)),o=new hl({head:e,colWidths:[20,10,10,10,10,20]});t.forEach(n=>{o.push([n.Filesystem,n.Size,n.Used,n.Avail,n.Use,n.MountedOn].map(s=>Mn.white(s)))}),console.log(o.toString())},"displayTable");var Fn=r(async()=>{h.command("df").description("Disk Free Command").action(()=>{let t=No();Oo(t)})},"dfCommands"),gt=r(t=>{let e={K:1e3,KB:1e3,M:1e6,MB:1e6,G:1e9,GB:1e9,T:1e12,TB:1e12},o=t.match(/[A-Za-z]+/)?.[0]||"",n=parseFloat(t);return e[o]?n*e[o]:n},"convertToBytes");var Hn=r(t=>{h.command("start").description("Start Solana Validator").action(()=>{Ve(t),process.exit(0)})},"startCommand");import{spawnSync as yl}from"node:child_process";var Yn=r(t=>{let o=`sudo systemctl stop ${t.VALIDATOR_TYPE===E.FRANKENDANCER?"frankendancer":"solv"}`;yl(o,{shell:!0,stdio:"inherit"})},"stopSolana");var jn=r(t=>{h.command("stop").description("Stop Solana Validator").action(()=>{Yn(t),process.exit(0)})},"stopCommand");import{spawnSync as Qt}from"node:child_process";import Bn from"chalk";var Jn=r(t=>{let e=K();h.command("restart").description("Restart Solana Validator").option("-r, --rm","Remove Snapshot and Restart Validator",!1).action(async o=>{o.rm&&(console.log(Bn.white("\u{1F477}\u200D\u2640\uFE0F Removing Snapshot and Restarting Validator...")),Qt("solc stop",{stdio:"inherit",shell:!0}),Qt("solc rm:snapshot",{stdio:"inherit",shell:!0}),Qt("solc get snapshot",{stdio:"inherit",shell:!0}),Qt("solc start",{stdio:"inherit",shell:!0}),console.log(Bn.green("\u2714\uFE0E Successfully Restarted Validator")),process.exit(0));let n=`${e} --ledger ${y} exit --max-delinquent-stake ${t.MAINNET_DELINQUENT_STAKE}`;Qt(n,{shell:!0,stdio:"inherit"}),process.exit(0)})},"restartCommand");var Gn=r(t=>{let o=t.NETWORK===u.TESTNET?Z:tt;t.NODE_TYPE===T.RPC&&(o=St),h.command("install").alias("i").description("Install Solana Client").option("-v, --version <version>",`Solana Version e.g. ${o}`,o).action(async n=>{if(t.VALIDATOR_TYPE===E.JITO){let l=`v${n.version||Yt}-jito`;Ee(l);return}t.NODE_TYPE===T.RPC&&(o=St);let i=n.version||o;await fe(i)})},"installCommands");import{spawnSync as Sl}from"child_process";var zn=r(()=>{h.command("mtr").description("Mount Reload Command").action(()=>{Sl("sudo mount --all --verbose",{shell:!0,stdio:"inherit"})}),h.command("disks").description("Show unmounted disks").action(()=>{let t=Wt();console.log(t)})},"mountCommands");import{spawnSync as gl}from"node:child_process";import Wn from"chalk";import{spawnSync as Tl}from"child_process";var El=r(async()=>{try{let t=Tl("crontab",["-l"],{encoding:"utf-8"});if(t.status!==0)return console.log("No crontab for this user."),!1;let e=t.stdout;return console.log(e),e.includes("solc epochTimer")}catch(t){return console.error("Error reading crontab:",t),!1}},"hasEpochTimer"),Me=El;var qn=r(()=>{h.command("cron").description("Cron Job Commands").command("epoch").description("Solc Epoch Timer Discord Notification Command").option("-c, --cron <value>","Cron Job","*/5 * * * *").action(async e=>{await Me()&&(console.log(Wn.green("\u26A0\uFE0F Epoch Timer Cron Job already set")),process.exit(1));let n=`(crontab -l 2>/dev/null; echo "${e.cron} . /home/solv/.profile && solc epochTimer >> /home/solv/cron.log 2>&1") | crontab -`;gl(n,{shell:!0,stdio:"inherit"}),console.log(Wn.green("\u2705 Epoch Timer Cron Job Set"))})},"cronCommands");var Xt={SOLV_KEYPAIR_DOWNLOAD_PATH:"/solvKeys/download",SOLV_KEYPAIR_UPLOAD_PATH:"/solvKeys/upload",SOLV_KEYPAIR_UPLOAD_PATH_LINUX:"/home/solv",SOLV_KEYPAIR_TRASH_PATH:"/solvKeys/trash",SSH_PUBKEY_PATH:"/.ssh/id_rsa.pub"};import{existsSync as Al,mkdirSync as _l}from"fs";import Nl from"inquirer";import{homedir as Ol}from"os";import{spawnSync as wl}from"node:child_process";function Qn(t,e,o,n){let s=n?`scp -o StrictHostKeyChecking=no solv@${t}:${e} ${o}`:`scp -o StrictHostKeyChecking=no ${e} solv@${t}:${o}`;return wl(s,{shell:!0,stdio:"inherit"}).status===0}r(Qn,"executeSCP");var ko=r(async(t="")=>{let e=t;t===""&&(e=(await Nl.prompt([{type:"input",name:"ip",message:"Enter your Ubuntu Server IP",default(){return"1.1.1.1"}}])).ip);let o=Object.values(A()),n=Ol(),s=n.includes("/home/solv")?"/home/solv":n+Xt.SOLV_KEYPAIR_DOWNLOAD_PATH;Al(s)||_l(s,{recursive:!0});let a=!0,i=n+"/"+Fo;o.push(i);for(let c of o){let l=c.split("/"),p=l[l.length-1];p=n.includes("/home/solv")?p:p.replace(".json",`-${e}.json`);let d=`${s}/${p}`;Qn(e,c,d,a)&&console.log(`Successfully Exported - ${d} \u{1F389}`)}},"download");import{spawnSync as kl}from"child_process";import{existsSync as Rl}from"fs";import vl from"inquirer";import Cl from"os";var Xn=r(async(t="")=>{let e=Cl.userInfo().homedir,o=t;t===""&&(o=(await vl.prompt([{type:"input",name:"ip",message:"Enter your Ubuntu Server IP",default(){return"1.1.1.1"}}])).ip);let n=`${e}${Xt.SOLV_KEYPAIR_UPLOAD_PATH}`;e.includes("/home/solv")&&(n=Xt.SOLV_KEYPAIR_UPLOAD_PATH_LINUX);let s=Object.values(A(n));for(let a of s){let i=a.split("/"),c=i[i.length-1];if(!c.endsWith("keypair.json"))continue;let l=`${n}/${c}`;if(!Rl(l))continue;let p=`scp -o StrictHostKeyChecking=no ${l} solv@${o}:${a}`;kl(p,{shell:!0,stdio:"inherit"}),console.log(`Successfully Uploaded - ${c} \u{1F389}`)}},"upload");import{spawnSync as Il}from"child_process";import Pl from"inquirer";var Zn=r(async()=>{let t=await Pl.prompt({type:"input",name:"pubkey",message:"Enter your SSH Public Key",default(){return"xxxxxxxpubkeyxxxxxxxx"}}),e=`mkdir -p ${b.ROOT}/.ssh && echo "${t.pubkey}" >> ${b.AUTHORIZED_KEYS}`;Il(e,{shell:!0,stdio:"inherit"}),console.log("Successfully Created SSH Login Setting \u{1F389}")},"scpCreate");import Fe from"chalk";import{readFileSync as Ll}from"fs";import xl from"os";var ts=r(()=>{try{let e=`${xl.userInfo().homedir}/.ssh/id_rsa.pub`,o=Ll(e,"utf8");console.log(Fe.white(`Your SSH Public Key is:
411
411
  `)),console.log(Fe.white(o))}catch(t){console.error(Fe.white(`Error reading SSH Public Key
412
412
  `)),console.error(Fe.white(t))}},"cat");import{spawnSync as Vl}from"child_process";var es=r(()=>{Vl("ssh-keygen -t rsa -b 4096",{shell:!0,stdio:"inherit"})},"init");import{spawn as $l}from"child_process";import{readFileSync as Dl}from"fs";import{Readable as Kl}from"stream";var os=r(async t=>new Promise((e,o)=>{try{let n=$l("find",["/","-name","*.json","-size","-301c"]),s=[];n.stdout.on("data",a=>{s.push(...a.toString().split(`
413
413
  `).filter(i=>i)),t.increment()}),n.stderr.on("data",a=>{t.increment()}),n.on("close",a=>{e(s)})}catch(n){o(`search Error: ${n}`)}}),"search"),bl=r(t=>{try{return JSON.parse(Dl(t,"utf-8")).length===64}catch{return!1}},"checkIfSolanaKey"),rs=r(async(t,e)=>{let o=[],n=Kl.from(t);return n.on("data",async s=>{bl(s)&&o.push(s)}),new Promise((s,a)=>{n.on("end",()=>{s(o)}),n.on("error",i=>{a(i)})})},"processPaths");import He from"chalk";import{Presets as Hl,SingleBar as Yl}from"cli-progress";import ns from"chalk";import{spawnSync as Ul}from"node:child_process";import Ml from"node-fetch";var Fl=r(async()=>{let t=await Ml(zo,{method:"POST",headers:{"Content-Type":"application/json"}});if(t.status!==200)return console.log(ns.yellow(`\u26A0\uFE0F This Node is not Registered as Auto Operation Node.
@@ -416,7 +416,7 @@ ${n.join(`
416
416
  `)}`)),console.log(He.white(`
417
417
  Only showing the first 10 results
418
418
 
419
- `)),console.log(He.white("$ mv <your-key> /mt/solana/<solvKeyName>.json"))})},"scpCommands");import{spawnSync as jl}from"child_process";var is=r(t=>{h.command("status").description("Check Solana Validator Status").action(()=>{Bl(t)})},"statusCommands"),Bl=r(t=>{let o=`sudo systemctl status ${t.VALIDATOR_TYPE===E.FRANKENDANCER?"frankendancer":"solc"}`;jl(o,{shell:!0,stdio:"inherit"}),process.exit(0)},"systemctlStatusSolv");import{spawnSync as Jl}from"node:child_process";var cs=r(async(t,e)=>{try{let o=await L(),n=o.NETWORK===u.TESTNET,a=o.NODE_TYPE===T.RPC?o.RPC_URL:n?u.TESTNET:o.RPC_URL,c=[`solana delegate-stake ${t} ${e} --stake-authority ${n?"~/testnet-authority-keypair.json":"~/mainnet-authority-keypair.json"} --url ${a}`];return Jl(c.join(" && "),{shell:!0,stdio:"inherit"}),!0}catch(o){throw new Error(`delegateStake: ${o}`)}},"delegateStake");import ms from"inquirer";import{spawnSync as Gl}from"node:child_process";var ls=r((t,e,o=5)=>{let n=0;for(;n<o;){let s=Gl(`solana create-stake-account ${t} ${e}`,{shell:!0,stdio:"pipe"}),a=s.stdout.toString()+s.stderr.toString();if(a.includes("Signature:"))return console.log("Stake account created successfully:",a),!0;if(a.includes("Error:"))console.log("Error encountered:",a),n++,console.log(`Retrying... (${n}/${o})`);else{console.log("Unknown output:",a);break}n===o&&console.log("Failed to create stake account after retries.")}return!1},"createStakeAccount");import{addLeadingZero as zl,existsAsync as Wl}from"@skeet-framework/utils";import{execSync as ql,spawnSync as je}from"node:child_process";import Ql from"node:os";var ps=r(async t=>{let e=t.NETWORK===u.TESTNET;if(!(await ms.prompt([{type:"confirm",name:"confirmCreateStakeAccount",message:"Would you like to create a new stake account?",default:!1}])).confirmCreateStakeAccount)return!1;je(`solana config set --keypair ${e?"~/testnet-authority-keypair.json":"~/mainnet-authority-keypair.json"}`,{shell:!0,stdio:"pipe"});let s=await ms.prompt([{type:"input",name:"solAmount",message:"How many SOL would you like to stake?",default:"1"}]),{stakeKeypair:a,stakeKeypairPath:i}=await Zl(),c=t.STAKE_ACCOUNTS,l=Array.from(new Set([...c,a]));return kt({STAKE_ACCOUNT:l}),ls(i,Number(s.solAmount))},"stakeAccountQuestion"),Xl=Ql.userInfo().homedir,Ye=Xl+"/stake-account",Zl=r(async()=>{await Wl(Ye)||je(`mkdir -p ${Ye}`,{shell:!0});let t=je(`ls ${Ye}`,{shell:!0}).stdout.toString().split(`
419
+ `)),console.log(He.white("$ mv <your-key> /mt/solana/<solvKeyName>.json"))})},"scpCommands");import{spawnSync as jl}from"child_process";var is=r(t=>{h.command("status").description("Check Solana Validator Status").action(()=>{Bl(t)})},"statusCommands"),Bl=r(t=>{let o=`sudo systemctl status ${t.VALIDATOR_TYPE===E.FRANKENDANCER?"frankendancer":"solv"}`;jl(o,{shell:!0,stdio:"inherit"}),process.exit(0)},"systemctlStatusSolv");import{spawnSync as Jl}from"node:child_process";var cs=r(async(t,e)=>{try{let o=await L(),n=o.NETWORK===u.TESTNET,a=o.NODE_TYPE===T.RPC?o.RPC_URL:n?u.TESTNET:o.RPC_URL,c=[`solana delegate-stake ${t} ${e} --stake-authority ${n?"~/testnet-authority-keypair.json":"~/mainnet-authority-keypair.json"} --url ${a}`];return Jl(c.join(" && "),{shell:!0,stdio:"inherit"}),!0}catch(o){throw new Error(`delegateStake: ${o}`)}},"delegateStake");import ms from"inquirer";import{spawnSync as Gl}from"node:child_process";var ls=r((t,e,o=5)=>{let n=0;for(;n<o;){let s=Gl(`solana create-stake-account ${t} ${e}`,{shell:!0,stdio:"pipe"}),a=s.stdout.toString()+s.stderr.toString();if(a.includes("Signature:"))return console.log("Stake account created successfully:",a),!0;if(a.includes("Error:"))console.log("Error encountered:",a),n++,console.log(`Retrying... (${n}/${o})`);else{console.log("Unknown output:",a);break}n===o&&console.log("Failed to create stake account after retries.")}return!1},"createStakeAccount");import{addLeadingZero as zl,existsAsync as Wl}from"@skeet-framework/utils";import{execSync as ql,spawnSync as je}from"node:child_process";import Ql from"node:os";var ps=r(async t=>{let e=t.NETWORK===u.TESTNET;if(!(await ms.prompt([{type:"confirm",name:"confirmCreateStakeAccount",message:"Would you like to create a new stake account?",default:!1}])).confirmCreateStakeAccount)return!1;je(`solana config set --keypair ${e?"~/testnet-authority-keypair.json":"~/mainnet-authority-keypair.json"}`,{shell:!0,stdio:"pipe"});let s=await ms.prompt([{type:"input",name:"solAmount",message:"How many SOL would you like to stake?",default:"1"}]),{stakeKeypair:a,stakeKeypairPath:i}=await Zl(),c=t.STAKE_ACCOUNTS,l=Array.from(new Set([...c,a]));return kt({STAKE_ACCOUNT:l}),ls(i,Number(s.solAmount))},"stakeAccountQuestion"),Xl=Ql.userInfo().homedir,Ye=Xl+"/stake-account",Zl=r(async()=>{await Wl(Ye)||je(`mkdir -p ${Ye}`,{shell:!0});let t=je(`ls ${Ye}`,{shell:!0}).stdout.toString().split(`
420
420
  `).filter(a=>a.includes(".json")),e=zl(t.length+1),o=`${Ye}/stake${e}.json`,n=`solana-keygen new --outfile ${o} --no-bip39-passphrase`;return je(n,{shell:!0,stdio:"inherit"}),{stakeKeypair:ql(`solana-keygen pubkey ${o}`).toString().trim(),stakeKeypairPath:o}},"createStakeKeypair");import{spawnSync as tm}from"node:child_process";var ds=r(async t=>{try{let o=(await L()).NETWORK===u.TESTNET?"~/testnet-authority-keypair.json":"~/mainnet-authority-keypair.json",n=`solana deactivate-stake ${t} --stake-authority ${o}`;return tm(n,{shell:!0,stdio:"inherit"}),!0}catch(e){throw new Error(`deactivateStake: ${e}`)}},"deactivateStake");import{spawnSync as em}from"node:child_process";var us=r(async(t,e,o)=>{try{let n=`solana withdraw-stake ${t} ${e} ${o}`;return em(n,{shell:!0,stdio:"inherit"}),!0}catch(n){throw new Error(`withdrawStake: ${n}`)}},"withdrawStake");import It from"chalk";import{Connection as om,PublicKey as rm}from"@solana/web3.js";import{stakePoolInfo as nm}from"@solana/spl-stake-pool";var Be=r(async(t,e=B)=>{try{let o=new om(t),n=new rm(e);return await nm(o,n)}catch{return console.log(`Stake Pool not found: ${e}`),null}},"getStakePoolInfo");import{fetchDigitalAsset as sm}from"@metaplex-foundation/mpl-token-metadata";import{createUmi as am}from"@metaplex-foundation/umi-bundle-defaults";import{publicKey as im}from"@metaplex-foundation/umi";var fs=r(async(t,e)=>{try{let o=im(e);console.log(`mintPubkey: ${o}`);let n=am(t),s=await sm(n,o);return{name:s.metadata.name,symbol:s.metadata.symbol,uri:s.metadata.uri,mint:e}}catch{return null}},"getTokenInfo");import Zt from"chalk";import hs from"inquirer";var ys=r(async t=>{let e=await hs.prompt([{type:"input",name:"stakePoolAddress",message:"Enter Stake Pool Address(default: elSOL)",default:B}]);try{let o=await Be(t,e.stakePoolAddress);if(!o)return console.log(Zt.yellow(`\u26A0\uFE0F Invalid Stake Pool Address
421
421
  Please check the correct address and try again.
422
422
  `)),console.log(Zt.white(`For stake pool information
@@ -461,7 +461,7 @@ $ solc mt -p <fileSystem>
461
461
  $ solc umt -p <fileSystem>
462
462
  `,s=`mount reload
463
463
  $ solc mtr
464
- `;console.log(e),console.log(t.greyHex(o)),console.log(t.greyHex(n)),console.log(t.greyHex(s))}})(Pt||(Pt={}));import Lt from"chalk";import{spawnSync as Pm}from"node:child_process";var We=r(()=>{Pm("solana config get",{shell:!0,stdio:"inherit"});let e=lt();console.log(Lt.white("start-validator.sh: ")+e.scriptPath),console.log(Lt.white("solc.service: ")+P.SOL_SERVICE),console.log(Lt.white("logrotate: ")+P.SOL_LOGROTATE),console.log(Lt.white("sysctl.d: ")+P.SOL_SYSTEM_CONFIG21),console.log(Lt.white("limits.d: ")+P.SOL_NOFILES_CONF),console.log(Lt.white("system.conf: ")+P.SOL_SYSTEM_CONF)},"showConfig");import{spawnSync as vs}from"node:child_process";import Lm from"chalk";var Cs=r(t=>{let e=t.NETWORK===u.TESTNET,o=e?Z:tt;t.NODE_TYPE===T.RPC&&(o=St);let n=h.command("get").description("Get Solana Validator's Information").argument("<cmd>","Subcommands: epoch, slot, catchup, snapshot, contact, config");n.command("epoch").description("Show Validator's Epoch").action(()=>{let s=ks();console.log({epoch:s})}),n.command("ip").description("Show Validator's IP Address").action(()=>{let s="curl ipinfo.io/ip",{stdout:a}=vs(s,{shell:!0,stdio:"pipe"});console.log(Lm.white(`${a}`))}),n.command("slot").description("Show Current Slot").action(()=>{let s=Rs();console.log({slot:s})}),n.command("snapshot").alias("sn").option("-m, --minDownloadSpeed <minDownloadSpeed>","Minimum download speed","45").option("-l, --ledgerPath <ledgerPath>","Ledger Path","/mnt/ledger").option("-s, --snapshotPath <snapshotPath>","Snapshot Path","/mnt/ledger/snapshot").option("-v, --version <version>","Specific Version Node",o).description("Download the latest snapshot").action(s=>{let a=s.minDownloadSpeed,i=s.ledgerPath,c=s.snapshotPath,l=s.version;xe(e,a,i,c,l)}),n.command("contact").description("Show Validator Contact Information").action(()=>{let a=`${K()} --ledger /mnt/ledger/ contact-info`;vs(a,{shell:!0,stdio:"inherit"})}),n.command("config").description("Show Solc Config").alias("c").action(async()=>{We()}),n.command("aa").description("Show Solc AA").option("-c, --client","Show Solc Client Mode AA",!1).action(s=>{Pt.solvAA(),s.client?Pt.installClientMessage():Pt.installMessage()}),n.addHelpCommand("help [cmd]","Get Solana Validator Information")},"getCommands");import{spawnSync as xm}from"node:child_process";var Is=r(()=>{xm("sudo systemctl status relayer.service",{shell:!0,stdio:"inherit"})},"relayerStatus");import{spawnSync as Vm}from"node:child_process";var Ps=r(()=>{Vm("sudo systemctl start relayer.service",{shell:!0,stdio:"inherit"})},"relayerStart");import{spawnSync as $m}from"node:child_process";var Ls=r(()=>{$m("sudo systemctl stop relayer.service",{shell:!0,stdio:"inherit"})},"relayerStop");import{spawnSync as Dm}from"node:child_process";var xs=r(()=>{Dm("sudo systemctl restart relayer.service",{shell:!0,stdio:"inherit"})},"relayerRestart");import{spawnSync as Km}from"node:child_process";var Vs=r((t=!1)=>{Km(t?"journalctl -u relayer.service -xef | grep ERROR":"journalctl -u relayer.service -xef",{shell:!0,stdio:"inherit"})},"relayerLog");import Ro from"chalk";import{spawnSync as Um}from"child_process";import{spawnSync as bm}from"node:child_process";var $s=r(()=>{bm("sudo systemctl enable relayer.service",{shell:!0,stdio:"inherit"})},"relayerEnable");var Ds=r(()=>{let t=h.command("relayer").description("Jito Relayer Commands");t.command("status").description("Show Relayer Status").action(()=>{Is()}),t.command("start").description("Start Relayer").action(()=>{Ps()}),t.command("stop").description("Stop Relayer").action(()=>{Ls()}),t.command("log").option("-e, --error","Show Error Logs",!1).description("Show Relayer Logs").action(e=>{Vs(e.error)}),t.command("restart").description("Restart Relayer").action(()=>{xs()}),t.command("enable").description("Enable Relayer").action(()=>{$s()}),t.command("set:url").option("-u, --url <url>","Set Relayer URL","").description("Set Relayer URL on Validator").action(e=>{if(e.url===""){console.log(Ro.red("Please provide a URL"));return}let o=`${K()} --ledger ${y} set-relayer-config --relayer-url ${e.url}`;console.log(Ro.white("Setting Relayer URL ...")),Um(o,{shell:!0,stdio:"inherit"}),console.log(Ro.green("\u{1F7E2} Relayer URL Set"))})},"relayerCommands");var Mm=r(()=>({filePath:"/home/solv/firedancer/config.toml",body:`name = "solc"
464
+ `;console.log(e),console.log(t.greyHex(o)),console.log(t.greyHex(n)),console.log(t.greyHex(s))}})(Pt||(Pt={}));import Lt from"chalk";import{spawnSync as Pm}from"node:child_process";var We=r(()=>{Pm("solana config get",{shell:!0,stdio:"inherit"});let e=lt();console.log(Lt.white("start-validator.sh: ")+e.scriptPath),console.log(Lt.white("service unit: ")+P.SOL_SERVICE),console.log(Lt.white("logrotate: ")+P.SOL_LOGROTATE),console.log(Lt.white("sysctl.d: ")+P.SOL_SYSTEM_CONFIG21),console.log(Lt.white("limits.d: ")+P.SOL_NOFILES_CONF),console.log(Lt.white("system.conf: ")+P.SOL_SYSTEM_CONF)},"showConfig");import{spawnSync as vs}from"node:child_process";import Lm from"chalk";var Cs=r(t=>{let e=t.NETWORK===u.TESTNET,o=e?Z:tt;t.NODE_TYPE===T.RPC&&(o=St);let n=h.command("get").description("Get Solana Validator's Information").argument("<cmd>","Subcommands: epoch, slot, catchup, snapshot, contact, config");n.command("epoch").description("Show Validator's Epoch").action(()=>{let s=ks();console.log({epoch:s})}),n.command("ip").description("Show Validator's IP Address").action(()=>{let s="curl ipinfo.io/ip",{stdout:a}=vs(s,{shell:!0,stdio:"pipe"});console.log(Lm.white(`${a}`))}),n.command("slot").description("Show Current Slot").action(()=>{let s=Rs();console.log({slot:s})}),n.command("snapshot").alias("sn").option("-m, --minDownloadSpeed <minDownloadSpeed>","Minimum download speed","45").option("-l, --ledgerPath <ledgerPath>","Ledger Path","/mnt/ledger").option("-s, --snapshotPath <snapshotPath>","Snapshot Path","/mnt/ledger/snapshot").option("-v, --version <version>","Specific Version Node",o).description("Download the latest snapshot").action(s=>{let a=s.minDownloadSpeed,i=s.ledgerPath,c=s.snapshotPath,l=s.version;xe(e,a,i,c,l)}),n.command("contact").description("Show Validator Contact Information").action(()=>{let a=`${K()} --ledger /mnt/ledger/ contact-info`;vs(a,{shell:!0,stdio:"inherit"})}),n.command("config").description("Show Solc Config").alias("c").action(async()=>{We()}),n.command("aa").description("Show Solc AA").option("-c, --client","Show Solc Client Mode AA",!1).action(s=>{Pt.solvAA(),s.client?Pt.installClientMessage():Pt.installMessage()}),n.addHelpCommand("help [cmd]","Get Solana Validator Information")},"getCommands");import{spawnSync as xm}from"node:child_process";var Is=r(()=>{xm("sudo systemctl status relayer.service",{shell:!0,stdio:"inherit"})},"relayerStatus");import{spawnSync as Vm}from"node:child_process";var Ps=r(()=>{Vm("sudo systemctl start relayer.service",{shell:!0,stdio:"inherit"})},"relayerStart");import{spawnSync as $m}from"node:child_process";var Ls=r(()=>{$m("sudo systemctl stop relayer.service",{shell:!0,stdio:"inherit"})},"relayerStop");import{spawnSync as Dm}from"node:child_process";var xs=r(()=>{Dm("sudo systemctl restart relayer.service",{shell:!0,stdio:"inherit"})},"relayerRestart");import{spawnSync as Km}from"node:child_process";var Vs=r((t=!1)=>{Km(t?"journalctl -u relayer.service -xef | grep ERROR":"journalctl -u relayer.service -xef",{shell:!0,stdio:"inherit"})},"relayerLog");import Ro from"chalk";import{spawnSync as Um}from"child_process";import{spawnSync as bm}from"node:child_process";var $s=r(()=>{bm("sudo systemctl enable relayer.service",{shell:!0,stdio:"inherit"})},"relayerEnable");var Ds=r(()=>{let t=h.command("relayer").description("Jito Relayer Commands");t.command("status").description("Show Relayer Status").action(()=>{Is()}),t.command("start").description("Start Relayer").action(()=>{Ps()}),t.command("stop").description("Stop Relayer").action(()=>{Ls()}),t.command("log").option("-e, --error","Show Error Logs",!1).description("Show Relayer Logs").action(e=>{Vs(e.error)}),t.command("restart").description("Restart Relayer").action(()=>{xs()}),t.command("enable").description("Enable Relayer").action(()=>{$s()}),t.command("set:url").option("-u, --url <url>","Set Relayer URL","").description("Set Relayer URL on Validator").action(e=>{if(e.url===""){console.log(Ro.red("Please provide a URL"));return}let o=`${K()} --ledger ${y} set-relayer-config --relayer-url ${e.url}`;console.log(Ro.white("Setting Relayer URL ...")),Um(o,{shell:!0,stdio:"inherit"}),console.log(Ro.green("\u{1F7E2} Relayer URL Set"))})},"relayerCommands");var Mm=r(()=>({filePath:"/home/solv/firedancer/config.toml",body:`name = "solc"
465
465
  user = "solv"
466
466
  scratch_directory = "/home/{user}"
467
467
  dynamic_port_range = "8900-9000"