@ily-validator/solc 5.2.10 → 5.2.15
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.js +2 -2
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
var Si=Object.defineProperty;var r=(t,e)=>Si(t,"name",{value:e,configurable:!0});import"dotenv/config";import{Command as ru}from"commander";var Go="5.2.10";var zo={name:"@ily-validator/solc",version:Go,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 ue=zo.version;var Jt="https://validators.solutions";var vt="solc4.config.json";var St="identity.json",Tt="unstaked-identity.json",Wo="relayer-keypair.json",gi="mainnet-validator-keypair.json",Ei="mainnet-vote-account-keypair.json",wi="mainnet-authority-keypair.json",Ai="testnet-validator-keypair.json",_i="testnet-vote-account-keypair.json",Ni="testnet-authority-keypair.json",I="/home/solv",k=`${I}/${St}`,lu=`${I}/${Tt}`,K=`${I}/${gi}`,fe=`${I}/${Ei}`,mu=`${I}/${wi}`,P=`${I}/${Ai}`,qo=`${I}/${_i}`,pu=`${I}/${Ni}`,q=`${I}/solana-validator.log`,Q=I+"/start-validator.sh",y="/mnt/ledger",X="/mnt/accounts",Ct="solana-validator",It="agave-validator",Qo="ELLB9W7ZCwRCV3FzWcCWoyKP6NjZJKArLyGtkqefnHcG";var he=3,Xo="https://api.testnet.solana.com",Zo="https://api.mainnet-beta.solana.com",tr="https://verify.validators.solutions/solc-migrate",er="https://jup.validators.solutions/v1/jup",ye="https://amsterdam.mainnet.block-engine.jito.wtf",fo;(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"})(fo||(fo={}));var or=Object.values(fo),Se="So11111111111111111111111111111111111111112",Te="EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v",ho="ELSoL1owwMWQ9foMsutweCsMKbTPVBD9pFqxQGidTaMC";var rr="SOLV420",nr={So11111111111111111111111111111111111111112:"4Vwkpk3DTVrTGnUQTazsgQ1wxtU9QwZTmAXDaQRHg9Ra",EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v:"J8sqx9ZEoPRqboFAXK3c1R38zm41tRNJgUn2FzyeYQDj",J1toso1uCk3RLmjorhTtrVwY9HJ7X8V9yYac6Y7kGCPn:"HPj87TFMPZfm5nk1HmTH9a382RXn7h9oWftiFr3Xs12a",mSoLzYCxHdYgdzU16g5QSh3i5K3z3KZK7ytfqcJm7So:"8CX5tE9KvJ59HcoXwWf6tCZoRuz2JFSmunnbKC1ryaK9",bSo13r4TkiE4KumL71LsHTPpL2euBYLFx6h9HP3piy1:"782MdvLby3VfvKdfDYn9tX3DfNAtg7TcytNNFuepcoMH",CvB1ztJvpYQPvdPBePtRzjL4aQidjydtUz61NWgcgQtP:"BhR2L6J5q3xF1TxReXyHjaUh4MF6qV99tMsipzPAKeB",JUPyiwrYJFskUPiHa7hkeR8VUtAeFoSYbKedZNsDvCN:"212yg3Ev7khq4p1mESFGenF4nWefmkbC8f7mHM68j4vg",DezXAZ8z7PnrnRJjz3wXBoRgixCa6xjnB7YaB1pPB263:"61Ndjv9392jPRVGALdYgjjxGYa6TT6Gn2WLDSsmugE6U",jtojtomepa8beP8AuQc6eXt5FriJwfFMwQx2v2f9mCL:"2c9qVh8RQ6j2E2VdAEcCrRXMrd6g1vvPNZvAR6sbaGWo"};import{spawnSync as xi}from"child_process";import{spawnSync as Oi}from"node:child_process";var ki=r(t=>{Oi(`sh -c "$(curl -sSfL https://release.anza.xyz/v${t}/install)"`,{shell:!0,stdio:"inherit"})},"installAgave"),Lt=ki;var yo;(function(t){t.EN="en",t.JA="ja"})(yo||(yo={}));var yu=Object.values(yo),u;(function(t){t.MAINNET="mainnet-beta",t.TESTNET="testnet"})(u||(u={}));var sr=Object.values(u),g;(function(t){t.RPC="rpc",t.VALIDATOR="validator"})(g||(g={}));var ar=Object.values(g),S;(function(t){t.SOLANA="solana",t.AGAVE="agave",t.JITO="jito",t.FRANKENDANCER="frankendancer",t.NONE="none"})(S||(S={}));var Su=Object.values(S).filter(t=>t!=="none"),L;(function(t){t.AGAVE="agave",t.JITO="jito",t.NONE="none"})(L||(L={}));var ir=Object.values(L).filter(t=>t!=="none"),Z;(function(t){t.SINGLE="single",t.DOUBLE="double"})(Z||(Z={}));var tt="2.3.13",et="2.3.13",Gt="2.3.13",j="2.3.13",cr="2.3.13",gt="2.3.13";var lr="20.19.5";var mr="0.804.30008";var vi={NETWORK:u.TESTNET,NODE_TYPE:g.RPC,VALIDATOR_TYPE:S.NONE,RPC_TYPE:L.AGAVE,MNT_DISK_TYPE:Z.SINGLE,TESTNET_SOLANA_VERSION:tt,MAINNET_SOLANA_VERSION:et,NODE_VERSION:lr,TESTNET_DELINQUENT_STAKE:5,MAINNET_DELINQUENT_STAKE:5,COMMISSION:5,DEFAULT_VALIDATOR_VOTE_ACCOUNT_PUBKEY:Qo,STAKE_ACCOUNTS:[],HARVEST_ACCOUNT:"",IS_MEV_MODE:!1,RPC_URL:Zo,KEYPAIR_PATH:"",DISCORD_WEBHOOK_URL:"",AUTO_UPDATE:!1,AUTO_RESTART:!1,IS_DUMMY:!1,API_KEY:"",FRANKENDANCER_BLOCK_ENGINE_URL:ye},b=vi;import*as pt from"node:fs";import*as ur from"node:os";import go from"node:path";var pr="SOLC_SOLANA_CLI",dr=r(t=>{try{return pt.accessSync(t,pt.constants.X_OK),!0}catch{return!1}},"isExecutable"),Ci=r(t=>t?(process.env.PATH??"").split(go.delimiter).some(o=>{if(!o)return!1;let n=go.join(o,t);return dr(n)?!0:process.platform==="win32"?dr(`${n}.exe`):!1}):!1,"isCommandAvailable"),Ii=r(()=>{try{let t=go.join(ur.homedir(),vt);if(!pt.existsSync(t))return b;let e=pt.readFileSync(t,"utf-8"),o=JSON.parse(e);return{...b,...o}}catch{return b}},"readConfigFromDisk"),Li=r(()=>{let t=Ii(),e=[];return t.VALIDATOR_TYPE===S.SOLANA&&e.push(Ct),(t.VALIDATOR_TYPE===S.AGAVE||t.VALIDATOR_TYPE===S.JITO||t.RPC_TYPE===L.AGAVE||t.RPC_TYPE===L.JITO)&&e.push(It),[...e,It,Ct].filter((o,n,s)=>o&&s.indexOf(o)===n)},"getPreferredBinaries"),Pi=r(()=>{let t=process.env[pr]?.trim(),e=[...t?[t]:[],...Li()];for(let o of e)if(Ci(o))return o;throw new Error(`Unable to locate a Solana validator binary. Install either "${It}" or "${Ct}" (or set ${pr}) and ensure it is on PATH.`)},"getSolanaCLI"),D=Pi;var ge=r(async t=>{Lt(t)},"updateVersion"),Eo=r(async(t,e=!1)=>{let o=D(),n=`${o} --ledger ${y} exit --max-delinquent-stake ${t} --monitor`;e&&(n=`${o} --ledger ${y} exit --max-delinquent-stake ${t}`),xi(n,{shell:!0,stdio:"inherit"})},"monitorUpdate");import zr from"chalk";var Et;(function(t){t.EN="en",t.JA="ja"})(Et||(Et={}));var fr;(function(t){t[t.DOUBLE=0]="DOUBLE",t[t.SINGLE=1]="SINGLE"})(fr||(fr={}));var hr;(function(t){t.SINGLE="single",t.DOUBLE="double"})(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 Ee;(function(t){t[t.TESTNET_VALIDATOR=0]="TESTNET_VALIDATOR",t[t.MAINNET_VALIDATOR=1]="MAINNET_VALIDATOR",t[t.RPC_NODE=2]="RPC_NODE"})(Ee||(Ee={}));var we;(function(t){t.SOLANA_CLIENT="SolanaClient",t.JITO_MEV="JitoMev",t.FIREDANCER="Firedancer"})(we||(we={}));var Ar=!1,_r=!0,F={ID:"solc",LANG:Et.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},U={ROOT:"/home/solv",AUTHORIZED_KEYS:"/home/solv/.ssh/authorized_keys"},C={ROOT:"/mnt",ACCOUNTS:"/mnt/accounts",LEDGER:"/mnt/ledger"},ot={LOG:"solana-validator.log",STARTUP_SCRIPT:"start-validator.sh",CONFIG:"solc.config.json",JITO_CONFIG:"jito.config.json"},x={SOL_SERVICE:"/etc/systemd/system/solv.service",SOL_LOGROTATE:"/etc/logrotate.d/solana",SOL_SYSTEM_CONFIG21:"/etc/sysctl.d/21-solana-validator.conf",SOL_NOFILES_CONF:"/etc/security/limits.d/90-solana-nofiles.conf",SOL_SYSTEM_CONF:"/etc/systemd/system.conf",SOLANA_PATH:"/home/solv/.local/share/solana/install"},R={MAINNET_VALIDATOR_KEY:"mainnet-validator-keypair.json",MAINNET_VALIDATOR_VOTE_KEY:"mainnet-vote-account-keypair.json",MAINNET_VALITATOR_AUTHORITY_KEY:"mainnet-authority-keypair.json",TESTNET_VALIDATOR_KEY:"testnet-validator-keypair.json",TESTNET_VALIDATOR_VOTE_KEY:"testnet-vote-account-keypair.json",TESTNET_VALITATOR_AUTHORITY_KEY:"testnet-authority-keypair.json"},A=r((t=U.ROOT)=>{let e=t===U.ROOT?U.ROOT:t,o=`${e}/${R.MAINNET_VALIDATOR_KEY}`,n=`${e}/${R.MAINNET_VALIDATOR_VOTE_KEY}`,s=`${e}/${R.MAINNET_VALITATOR_AUTHORITY_KEY}`,a=`${e}/${R.TESTNET_VALIDATOR_KEY}`,i=`${e}/${R.TESTNET_VALIDATOR_VOTE_KEY}`,c=`${e}/${R.TESTNET_VALITATOR_AUTHORITY_KEY}`;return{mainnetValidatorKey:o,mainnetValidatorVoteKey:n,mainnetValidatorAuthorityKey:s,testnetValidatorKey:a,testnetValidatorVoteKey:i,testnetValidatorAuthorityKey:c}},"getAllKeyPaths"),ut=r((t=!0)=>{let e=t?`${U.ROOT}/${R.TESTNET_VALIDATOR_KEY}`:`${U.ROOT}/${R.MAINNET_VALIDATOR_KEY}`,o=t?`${U.ROOT}/${R.TESTNET_VALIDATOR_VOTE_KEY}`:`${U.ROOT}/${R.MAINNET_VALIDATOR_VOTE_KEY}`,n=`${U.ROOT}/${ot.LOG}`,s=C.ACCOUNTS,a=C.LEDGER,i=`${U.ROOT}/${ot.STARTUP_SCRIPT}`;return{identity:e,voteAccount:o,log:n,accounts:s,ledger:a,scriptPath:i}},"startupScriptPaths");var G="So1vW4Bm6ZURzJJHZy1JpsjoVY68z4cDgF4tTLwYMa5",wo="7tAfLKgRVd9eywSQPuMbVNd51KGkaveZQuTjapL74Fwv",Nr="EiwSTx1Z2uJATDut682U7xzzquFR4UpQJUij3wSxVoSV",Or=9,rt="ELSoL1owwMWQ9foMsutweCsMKbTPVBD9pFqxQGidTaMC",kr="So11111111111111111111111111111111111111112",Rr="EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v",vr="CvB1ztJvpYQPvdPBePtRzjL4aQidjydtUz61NWgcgQtP",Er;(function(t){t[t.ELSOL=rt]="ELSOL",t[t.SOL=kr]="SOL",t[t.USDC=Rr]="USDC",t[t.EPCT=vr]="EPCT"})(Er||(Er={}));var wr;(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"})(wr||(wr={}));var Du={[kr]:9,[rt]:9,[Rr]:6,[vr]:6},Ae="/home/solv/currentEpoch.json",Ao=.5,_e="https://api.testnet.solana.com";import{spawnSync as _o}from"child_process";var Cr=r(()=>{_o("pnpm add -g pnpm",{shell:!0,stdio:"inherit"});let t=F.NODE_VERSION;_o(`pnpm env use ${t} --global`,{shell:!0,stdio:"inherit"}),_o("pnpm add -g @ily-validator/solc",{shell:!0,stdio:"inherit"})},"updateSolv");var ct={version:j,tag:`v${j}-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"},z={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 Vi}from"child_process";var Ne=r((t=ct.tag)=>{Vi(`sh -c "$(curl -sSfL https://release.jito.wtf/${t}/install)"`,{shell:!0,stdio:"inherit"})},"jitoUpdate");import{readFile as $i,writeFile as Ki}from"fs/promises";import{homedir as bi}from"os";var zt=r(async t=>{let o=`${bi()}/${ot.JITO_CONFIG}`,s={...JSON.parse(await $i(o,"utf8")),...t},a=JSON.stringify(s,null,2);await Ki(o,a),console.log(`Updated ${o} with new values.`)},"updateJitoSolvConfig");import{spawnSync as Ir}from"child_process";import Di 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";Ir(`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}`;Ir(a,{shell:!0,stdio:"inherit"})},"updateCommission"),Pr=r(async()=>await Di.prompt([{type:"number",name:"commission",message:"Enter new commission",default:7}]),"updateCommissionAsk");import{execAsync as Wt}from"@skeet-framework/utils";import Ui from"chalk";import Mi from"inquirer";var xr=r(async()=>{let t=await Mi.prompt([{name:"ip",type:"input",message:"Enter your IP address to allow access to RPC NODE:",default:"1.2.3.4"}]);await Wt("sudo ufw delete allow 8899/udp"),await Wt("sudo ufw delete allow 8899/tcp"),await Wt(`sudo ufw allow from ${t.ip} to any port 8899 proto tcp`),await Wt(`sudo ufw allow from ${t.ip} to any port 8899 proto udp`),await Wt("sudo ufw reload"),console.log(Ui.white("\u2714\uFE0F Firewall updated!"))},"updateFirewall");var Fi=r(()=>Go,"getSolvVersion"),Pt=Fi;import{readFile as Hi,writeFile as ji}from"fs/promises";import{existsAsync as Yi}from"@skeet-framework/utils";import{homedir as Bi}from"os";var Ji=r(async()=>{let e=`${Bi()}/${vt}`;if(!await Yi(e))return console.log("Creating default config file at",e),await ji(e,JSON.stringify(b,null,2)),b;let o=JSON.parse(await Hi(e,"utf-8"));return{...b,...o}},"readConfig"),v=Ji;import Gi from"node-fetch";var V=r(async t=>{try{let e=await v();if(e.DISCORD_WEBHOOK_URL==="")throw new Error(`DISCORD_WEBHOOK_URL is empty
|
|
2
|
+
var Si=Object.defineProperty;var r=(t,e)=>Si(t,"name",{value:e,configurable:!0});import"dotenv/config";import{Command as ru}from"commander";var Go="5.2.15";var zo={name:"@ily-validator/solc",version:Go,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 ue=zo.version;var Jt="https://validators.solutions";var vt="solc4.config.json";var St="identity.json",Tt="unstaked-identity.json",Wo="relayer-keypair.json",gi="mainnet-validator-keypair.json",Ei="mainnet-vote-account-keypair.json",wi="mainnet-authority-keypair.json",Ai="testnet-validator-keypair.json",_i="testnet-vote-account-keypair.json",Ni="testnet-authority-keypair.json",I="/home/solv",k=`${I}/${St}`,lu=`${I}/${Tt}`,K=`${I}/${gi}`,fe=`${I}/${Ei}`,mu=`${I}/${wi}`,P=`${I}/${Ai}`,qo=`${I}/${_i}`,pu=`${I}/${Ni}`,q=`${I}/solana-validator.log`,Q=I+"/start-validator.sh",y="/mnt/ledger",X="/mnt/accounts",Ct="solana-validator",It="agave-validator",Qo="ELLB9W7ZCwRCV3FzWcCWoyKP6NjZJKArLyGtkqefnHcG";var he=3,Xo="https://api.testnet.solana.com",Zo="https://api.mainnet-beta.solana.com",tr="https://verify.validators.solutions/solc-migrate",er="https://jup.validators.solutions/v1/jup",ye="https://amsterdam.mainnet.block-engine.jito.wtf",fo;(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"})(fo||(fo={}));var or=Object.values(fo),Se="So11111111111111111111111111111111111111112",Te="EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v",ho="ELSoL1owwMWQ9foMsutweCsMKbTPVBD9pFqxQGidTaMC";var rr="SOLV420",nr={So11111111111111111111111111111111111111112:"4Vwkpk3DTVrTGnUQTazsgQ1wxtU9QwZTmAXDaQRHg9Ra",EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v:"J8sqx9ZEoPRqboFAXK3c1R38zm41tRNJgUn2FzyeYQDj",J1toso1uCk3RLmjorhTtrVwY9HJ7X8V9yYac6Y7kGCPn:"HPj87TFMPZfm5nk1HmTH9a382RXn7h9oWftiFr3Xs12a",mSoLzYCxHdYgdzU16g5QSh3i5K3z3KZK7ytfqcJm7So:"8CX5tE9KvJ59HcoXwWf6tCZoRuz2JFSmunnbKC1ryaK9",bSo13r4TkiE4KumL71LsHTPpL2euBYLFx6h9HP3piy1:"782MdvLby3VfvKdfDYn9tX3DfNAtg7TcytNNFuepcoMH",CvB1ztJvpYQPvdPBePtRzjL4aQidjydtUz61NWgcgQtP:"BhR2L6J5q3xF1TxReXyHjaUh4MF6qV99tMsipzPAKeB",JUPyiwrYJFskUPiHa7hkeR8VUtAeFoSYbKedZNsDvCN:"212yg3Ev7khq4p1mESFGenF4nWefmkbC8f7mHM68j4vg",DezXAZ8z7PnrnRJjz3wXBoRgixCa6xjnB7YaB1pPB263:"61Ndjv9392jPRVGALdYgjjxGYa6TT6Gn2WLDSsmugE6U",jtojtomepa8beP8AuQc6eXt5FriJwfFMwQx2v2f9mCL:"2c9qVh8RQ6j2E2VdAEcCrRXMrd6g1vvPNZvAR6sbaGWo"};import{spawnSync as xi}from"child_process";import{spawnSync as Oi}from"node:child_process";var ki=r(t=>{Oi(`sh -c "$(curl -sSfL https://release.anza.xyz/v${t}/install)"`,{shell:!0,stdio:"inherit"})},"installAgave"),Lt=ki;var yo;(function(t){t.EN="en",t.JA="ja"})(yo||(yo={}));var yu=Object.values(yo),u;(function(t){t.MAINNET="mainnet-beta",t.TESTNET="testnet"})(u||(u={}));var sr=Object.values(u),g;(function(t){t.RPC="rpc",t.VALIDATOR="validator"})(g||(g={}));var ar=Object.values(g),S;(function(t){t.SOLANA="solana",t.AGAVE="agave",t.JITO="jito",t.FRANKENDANCER="frankendancer",t.NONE="none"})(S||(S={}));var Su=Object.values(S).filter(t=>t!=="none"),L;(function(t){t.AGAVE="agave",t.JITO="jito",t.NONE="none"})(L||(L={}));var ir=Object.values(L).filter(t=>t!=="none"),Z;(function(t){t.SINGLE="single",t.DOUBLE="double"})(Z||(Z={}));var tt="2.3.13",et="2.3.13",Gt="2.3.13",j="2.3.13",cr="2.3.13",gt="2.3.13";var lr="20.19.5";var mr="0.804.30008";var vi={NETWORK:u.TESTNET,NODE_TYPE:g.RPC,VALIDATOR_TYPE:S.NONE,RPC_TYPE:L.AGAVE,MNT_DISK_TYPE:Z.SINGLE,TESTNET_SOLANA_VERSION:tt,MAINNET_SOLANA_VERSION:et,NODE_VERSION:lr,TESTNET_DELINQUENT_STAKE:5,MAINNET_DELINQUENT_STAKE:5,COMMISSION:5,DEFAULT_VALIDATOR_VOTE_ACCOUNT_PUBKEY:Qo,STAKE_ACCOUNTS:[],HARVEST_ACCOUNT:"",IS_MEV_MODE:!1,RPC_URL:Zo,KEYPAIR_PATH:"",DISCORD_WEBHOOK_URL:"",AUTO_UPDATE:!1,AUTO_RESTART:!1,IS_DUMMY:!1,API_KEY:"",FRANKENDANCER_BLOCK_ENGINE_URL:ye},b=vi;import*as pt from"node:fs";import*as ur from"node:os";import go from"node:path";var pr="SOLC_SOLANA_CLI",dr=r(t=>{try{return pt.accessSync(t,pt.constants.X_OK),!0}catch{return!1}},"isExecutable"),Ci=r(t=>t?(process.env.PATH??"").split(go.delimiter).some(o=>{if(!o)return!1;let n=go.join(o,t);return dr(n)?!0:process.platform==="win32"?dr(`${n}.exe`):!1}):!1,"isCommandAvailable"),Ii=r(()=>{try{let t=go.join(ur.homedir(),vt);if(!pt.existsSync(t))return b;let e=pt.readFileSync(t,"utf-8"),o=JSON.parse(e);return{...b,...o}}catch{return b}},"readConfigFromDisk"),Li=r(()=>{let t=Ii(),e=[];return t.VALIDATOR_TYPE===S.SOLANA&&e.push(Ct),(t.VALIDATOR_TYPE===S.AGAVE||t.VALIDATOR_TYPE===S.JITO||t.RPC_TYPE===L.AGAVE||t.RPC_TYPE===L.JITO)&&e.push(It),[...e,It,Ct].filter((o,n,s)=>o&&s.indexOf(o)===n)},"getPreferredBinaries"),Pi=r(()=>{let t=process.env[pr]?.trim(),e=[...t?[t]:[],...Li()];for(let o of e)if(Ci(o))return o;throw new Error(`Unable to locate a Solana validator binary. Install either "${It}" or "${Ct}" (or set ${pr}) and ensure it is on PATH.`)},"getSolanaCLI"),D=Pi;var ge=r(async t=>{Lt(t)},"updateVersion"),Eo=r(async(t,e=!1)=>{let o=D(),n=`${o} --ledger ${y} exit --max-delinquent-stake ${t} --monitor`;e&&(n=`${o} --ledger ${y} exit --max-delinquent-stake ${t}`),xi(n,{shell:!0,stdio:"inherit"})},"monitorUpdate");import zr from"chalk";var Et;(function(t){t.EN="en",t.JA="ja"})(Et||(Et={}));var fr;(function(t){t[t.DOUBLE=0]="DOUBLE",t[t.SINGLE=1]="SINGLE"})(fr||(fr={}));var hr;(function(t){t.SINGLE="single",t.DOUBLE="double"})(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 Ee;(function(t){t[t.TESTNET_VALIDATOR=0]="TESTNET_VALIDATOR",t[t.MAINNET_VALIDATOR=1]="MAINNET_VALIDATOR",t[t.RPC_NODE=2]="RPC_NODE"})(Ee||(Ee={}));var we;(function(t){t.SOLANA_CLIENT="SolanaClient",t.JITO_MEV="JitoMev",t.FIREDANCER="Firedancer"})(we||(we={}));var Ar=!1,_r=!0,F={ID:"solc",LANG:Et.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},U={ROOT:"/home/solv",AUTHORIZED_KEYS:"/home/solv/.ssh/authorized_keys"},C={ROOT:"/mnt",ACCOUNTS:"/mnt/accounts",LEDGER:"/mnt/ledger"},ot={LOG:"solana-validator.log",STARTUP_SCRIPT:"start-validator.sh",CONFIG:"solc.config.json",JITO_CONFIG:"jito.config.json"},x={SOL_SERVICE:"/etc/systemd/system/solv.service",SOL_LOGROTATE:"/etc/logrotate.d/solana",SOL_SYSTEM_CONFIG21:"/etc/sysctl.d/21-solana-validator.conf",SOL_NOFILES_CONF:"/etc/security/limits.d/90-solana-nofiles.conf",SOL_SYSTEM_CONF:"/etc/systemd/system.conf",SOLANA_PATH:"/home/solv/.local/share/solana/install"},R={MAINNET_VALIDATOR_KEY:"mainnet-validator-keypair.json",MAINNET_VALIDATOR_VOTE_KEY:"mainnet-vote-account-keypair.json",MAINNET_VALITATOR_AUTHORITY_KEY:"mainnet-authority-keypair.json",TESTNET_VALIDATOR_KEY:"testnet-validator-keypair.json",TESTNET_VALIDATOR_VOTE_KEY:"testnet-vote-account-keypair.json",TESTNET_VALITATOR_AUTHORITY_KEY:"testnet-authority-keypair.json"},A=r((t=U.ROOT)=>{let e=t===U.ROOT?U.ROOT:t,o=`${e}/${R.MAINNET_VALIDATOR_KEY}`,n=`${e}/${R.MAINNET_VALIDATOR_VOTE_KEY}`,s=`${e}/${R.MAINNET_VALITATOR_AUTHORITY_KEY}`,a=`${e}/${R.TESTNET_VALIDATOR_KEY}`,i=`${e}/${R.TESTNET_VALIDATOR_VOTE_KEY}`,c=`${e}/${R.TESTNET_VALITATOR_AUTHORITY_KEY}`;return{mainnetValidatorKey:o,mainnetValidatorVoteKey:n,mainnetValidatorAuthorityKey:s,testnetValidatorKey:a,testnetValidatorVoteKey:i,testnetValidatorAuthorityKey:c}},"getAllKeyPaths"),ut=r((t=!0)=>{let e=t?`${U.ROOT}/${R.TESTNET_VALIDATOR_KEY}`:`${U.ROOT}/${R.MAINNET_VALIDATOR_KEY}`,o=t?`${U.ROOT}/${R.TESTNET_VALIDATOR_VOTE_KEY}`:`${U.ROOT}/${R.MAINNET_VALIDATOR_VOTE_KEY}`,n=`${U.ROOT}/${ot.LOG}`,s=C.ACCOUNTS,a=C.LEDGER,i=`${U.ROOT}/${ot.STARTUP_SCRIPT}`;return{identity:e,voteAccount:o,log:n,accounts:s,ledger:a,scriptPath:i}},"startupScriptPaths");var G="So1vW4Bm6ZURzJJHZy1JpsjoVY68z4cDgF4tTLwYMa5",wo="7tAfLKgRVd9eywSQPuMbVNd51KGkaveZQuTjapL74Fwv",Nr="EiwSTx1Z2uJATDut682U7xzzquFR4UpQJUij3wSxVoSV",Or=9,rt="ELSoL1owwMWQ9foMsutweCsMKbTPVBD9pFqxQGidTaMC",kr="So11111111111111111111111111111111111111112",Rr="EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v",vr="CvB1ztJvpYQPvdPBePtRzjL4aQidjydtUz61NWgcgQtP",Er;(function(t){t[t.ELSOL=rt]="ELSOL",t[t.SOL=kr]="SOL",t[t.USDC=Rr]="USDC",t[t.EPCT=vr]="EPCT"})(Er||(Er={}));var wr;(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"})(wr||(wr={}));var Du={[kr]:9,[rt]:9,[Rr]:6,[vr]:6},Ae="/home/solv/currentEpoch.json",Ao=.5,_e="https://api.testnet.solana.com";import{spawnSync as _o}from"child_process";var Cr=r(()=>{_o("pnpm add -g pnpm",{shell:!0,stdio:"inherit"});let t=F.NODE_VERSION;_o(`pnpm env use ${t} --global`,{shell:!0,stdio:"inherit"}),_o("pnpm add -g @ily-validator/solc",{shell:!0,stdio:"inherit"})},"updateSolv");var ct={version:j,tag:`v${j}-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"},z={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 Vi}from"child_process";var Ne=r((t=ct.tag)=>{Vi(`sh -c "$(curl -sSfL https://release.jito.wtf/${t}/install)"`,{shell:!0,stdio:"inherit"})},"jitoUpdate");import{readFile as $i,writeFile as Ki}from"fs/promises";import{homedir as bi}from"os";var zt=r(async t=>{let o=`${bi()}/${ot.JITO_CONFIG}`,s={...JSON.parse(await $i(o,"utf8")),...t},a=JSON.stringify(s,null,2);await Ki(o,a),console.log(`Updated ${o} with new values.`)},"updateJitoSolvConfig");import{spawnSync as Ir}from"child_process";import Di 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";Ir(`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}`;Ir(a,{shell:!0,stdio:"inherit"})},"updateCommission"),Pr=r(async()=>await Di.prompt([{type:"number",name:"commission",message:"Enter new commission",default:7}]),"updateCommissionAsk");import{execAsync as Wt}from"@skeet-framework/utils";import Ui from"chalk";import Mi from"inquirer";var xr=r(async()=>{let t=await Mi.prompt([{name:"ip",type:"input",message:"Enter your IP address to allow access to RPC NODE:",default:"1.2.3.4"}]);await Wt("sudo ufw delete allow 8899/udp"),await Wt("sudo ufw delete allow 8899/tcp"),await Wt(`sudo ufw allow from ${t.ip} to any port 8899 proto tcp`),await Wt(`sudo ufw allow from ${t.ip} to any port 8899 proto udp`),await Wt("sudo ufw reload"),console.log(Ui.white("\u2714\uFE0F Firewall updated!"))},"updateFirewall");var Fi=r(()=>Go,"getSolvVersion"),Pt=Fi;import{readFile as Hi,writeFile as ji}from"fs/promises";import{existsAsync as Yi}from"@skeet-framework/utils";import{homedir as Bi}from"os";var Ji=r(async()=>{let e=`${Bi()}/${vt}`;if(!await Yi(e))return console.log("Creating default config file at",e),await ji(e,JSON.stringify(b,null,2)),b;let o=JSON.parse(await Hi(e,"utf-8"));return{...b,...o}},"readConfig"),v=Ji;import Gi from"node-fetch";var V=r(async t=>{try{let e=await v();if(e.DISCORD_WEBHOOK_URL==="")throw new Error(`DISCORD_WEBHOOK_URL is empty
|
|
3
3
|
Please set DISCORD_WEBHOOK_URL in .env`);let o={content:t,username:"\u{1FA84} Solc Notifier"};return(await Gi(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 tc}from"child_process";import{Connection as Vr}from"@solana/web3.js";var qt=r(async(t,e,o=!1,n=200)=>{let s={pubkey:e,isActive:!1,reason:""};try{let a=o?new Vr("https://api.testnet.solana.com"):new Vr(t,"confirmed"),i=await a.getVoteAccounts(),c=i.current.find(p=>p.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(p=>p.votePubkey===e),!c)return s.isActive=!1,s.reason="Validator is not found in the current list.",s;let l=c.lastVote,d=await a.getSlot()-l;return d>n?(s.isActive=!1,s.reason=`Validator has not voted for ${d} slots.`,s):(s.isActive=!0,s.reason="Validator is active and voting.",s)}catch(a){return console.error(a),s.isActive=!1,s.reason="Failed to check validator status.",s}},"isValidatorActive");import{spawnSync as zi}from"child_process";var E=r(t=>{let e=`solana address --keypair ${t}`,{stdout:o}=zi(e,{shell:!0,stdio:"pipe"});return o.toString().trim()},"getSolanaAddress");var Wi=r(t=>new Promise(e=>setTimeout(e,t)),"sleep"),nt=Wi;import{sendDiscord as qi}from"@skeet-framework/utils";var $r=60,Qi=r(async t=>{try{let e=t.NETWORK===u.TESTNET,{mainnetValidatorVoteKey:o,testnetValidatorVoteKey:n}=A(),a=E(e?n:o),i=await qt(t.RPC_URL,a,e),c=0;for(;!i.isActive;){if(c>=$r){console.log("Max retries reached, exiting...");let l=`\u26A0\uFE0F Validator is not active for ${$r} minutes!
|
|
4
4
|
Account: ${i.pubkey}
|
|
5
5
|
Reason: ${i.reason}
|
|
@@ -523,7 +523,7 @@ WantedBy=multi-user.target`;return{filePath:e,body:o}},"jitoRelayerSeparateServi
|
|
|
523
523
|
`);await Rl(t,n),Ol(`chmod +x ${t}`,{shell:!0,stdio:"inherit"})},"addConfigToStartupScript"),Gn=vl;import Cl from"inquirer";import{writeFile as Il}from"node:fs/promises";var zn=r(async()=>{let e=(await Cl.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";Io(o,{shell:!0,stdio:"inherit"}),Io(n,{shell:!0,stdio:"inherit",cwd:"/home/solv/yellowstone-grpc"}),Io(s,{shell:!0,stdio:"inherit",cwd:"/home/solv/yellowstone-grpc"});let{filePath:a,defaultConfig:i}=Jn(e),c=JSON.stringify(i,null,2);await Il(a,c,{encoding:"utf8"}),await Gn()},"yellowstoneGeyser");var Wn=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(lt.white("\u{1F5F3}\uFE0F Setting up Vote Account ...")),Pe(t),process.exit(0);else if(e.key)console.log(lt.white("\u{1F511} Setting up Validator Keypairs ...")),Ve(t),process.exit(0);else if(e.relayer){console.log(lt.white("\u{1F6F0}\uFE0F Setting up Jito Relayer ..."));let n=(await wt()).blockEngineUrl;await Bn(n,!1),console.log(lt.green(`Jito Relayer Setup Completed
|
|
524
524
|
|
|
525
525
|
$ solc relayer --help`)),Qt(),_t(),process.exit(0)}else if(e.jupiter)console.log(lt.white("\u{1F30F} Setting up Jupiter Swap API ...")),await on(),Qt(),_t(),process.exit(0);else if(e.geyser){console.log(lt.white("\u26A1\uFE0F Setting up Geyser ...")),await zn();return}else if(e.firedancer){console.log(lt.white("\u{1F525} Setting up Firedancer ...")),await Ye();return}await Hn(e.skipInitConfig,e.skipMount)}catch(o){(o.message.includes("User force closed the prompt")||o.message.includes("initialConfigSetup"))&&(console.error(lt.cyan("Exiting...\u{1F31B}")),process.exit(0)),console.error(lt.red(`Setup Error: ${o.message}`)),process.exit(0)}})},"setupCommands");import{execSync as Ll}from"child_process";var Lo=r(()=>{let o=Ll("df -h").toString().split(`
|
|
526
|
-
`).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)=>Nt(a.Avail)-Nt(s.Avail)).slice(0,10),n=o.some(s=>s.MountedOn==="/mnt"&&Nt(s.Size)>9e11-1);return o.forEach(s=>{s.MountedOn==="/mnt"&&Nt(s.Size)>9e11-1?console.log(`%c${s.Filesystem} ${s.Size} ${s.MountedOn}`,"color: green"):s.Filesystem.startsWith("/dev/")&&Nt(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/")&&Nt(a.Size)>899999999999).map(a=>a.Filesystem).length>0,o},"df");import qn from"chalk";import Pl from"cli-table3";var Po=r(t=>{let e=["Filesystem","Size","Used","Avail","Use","MountedOn"].map(n=>qn.blue(n)),o=new Pl({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=>qn.white(s)))}),console.log(o.toString())},"displayTable");var Qn=r(async()=>{h.command("df").description("Disk Free Command").action(()=>{let t=Lo();Po(t)})},"dfCommands"),Nt=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 Xn=r(t=>{h.command("start").description("Start Solana Validator").action(()=>{Ue(t),process.exit(0)})},"startCommand");import{spawnSync as xl}from"node:child_process";var Zn=r((t,e={})=>{let o=t.VALIDATOR_TYPE===S.FRANKENDANCER?"frankendancer.service":"solv.service",s=`sudo systemctl stop ${e.service??o}`;e.debug&&console.log(`[solc] stop -> ${s}`),xl(s,{shell:!0,stdio:"inherit"})},"stopSolana");var ts=r(t=>{h.command("stop").description("Stop Solana Validator").option("-s, --service <service>","systemd service name to stop").option("--debug","Print executed command").action(e=>{Zn(t,e),process.exit(0)})},"stopCommand");import{spawnSync as oe}from"node:child_process";import es from"chalk";var os=r(t=>{
|
|
526
|
+
`).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)=>Nt(a.Avail)-Nt(s.Avail)).slice(0,10),n=o.some(s=>s.MountedOn==="/mnt"&&Nt(s.Size)>9e11-1);return o.forEach(s=>{s.MountedOn==="/mnt"&&Nt(s.Size)>9e11-1?console.log(`%c${s.Filesystem} ${s.Size} ${s.MountedOn}`,"color: green"):s.Filesystem.startsWith("/dev/")&&Nt(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/")&&Nt(a.Size)>899999999999).map(a=>a.Filesystem).length>0,o},"df");import qn from"chalk";import Pl from"cli-table3";var Po=r(t=>{let e=["Filesystem","Size","Used","Avail","Use","MountedOn"].map(n=>qn.blue(n)),o=new Pl({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=>qn.white(s)))}),console.log(o.toString())},"displayTable");var Qn=r(async()=>{h.command("df").description("Disk Free Command").action(()=>{let t=Lo();Po(t)})},"dfCommands"),Nt=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 Xn=r(t=>{h.command("start").description("Start Solana Validator").action(()=>{Ue(t),process.exit(0)})},"startCommand");import{spawnSync as xl}from"node:child_process";var Zn=r((t,e={})=>{let o=t.VALIDATOR_TYPE===S.FRANKENDANCER?"frankendancer.service":"solv.service",s=`sudo systemctl stop ${e.service??o}`;e.debug&&console.log(`[solc] stop -> ${s}`),xl(s,{shell:!0,stdio:"inherit"})},"stopSolana");var ts=r(t=>{h.command("stop").description("Stop Solana Validator").option("-s, --service <service>","systemd service name to stop").option("--debug","Print executed command").action(e=>{Zn(t,e),process.exit(0)})},"stopCommand");import{spawnSync as oe}from"node:child_process";import es from"chalk";var os=r(t=>{h.command("restart").description("Restart Solana Validator").option("-r, --rm","Remove Snapshot and Restart Validator",!1).action(async e=>{let o=D();e.rm&&(console.log(es.white("\u{1F477}\u200D\u2640\uFE0F Removing Snapshot and Restarting Validator...")),oe("solc stop",{stdio:"inherit",shell:!0}),oe("solc rm:snapshot",{stdio:"inherit",shell:!0}),oe("solc get snapshot",{stdio:"inherit",shell:!0}),oe("solc start",{stdio:"inherit",shell:!0}),console.log(es.green("\u2714\uFE0E Successfully Restarted Validator")),process.exit(0));let n=`${o} --ledger ${y} exit --max-delinquent-stake ${t.MAINNET_DELINQUENT_STAKE}`;oe(n,{shell:!0,stdio:"inherit"}),process.exit(0)})},"restartCommand");var rs=r(t=>{let o=t.NETWORK===u.TESTNET?tt:et;t.NODE_TYPE===g.RPC&&(o=gt),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===S.JITO){let l=`v${n.version||j}-jito`;Ne(l);return}t.NODE_TYPE===g.RPC&&(o=gt);let i=n.version||o;await ge(i)})},"installCommands");import{spawnSync as Vl}from"child_process";var ns=r(()=>{h.command("mtr").description("Mount Reload Command").action(()=>{Vl("sudo mount --all --verbose",{shell:!0,stdio:"inherit"})}),h.command("disks").description("Show unmounted disks").action(()=>{let t=te();console.log(t)})},"mountCommands");import{spawnSync as bl}from"node:child_process";import ss from"chalk";import{spawnSync as $l}from"child_process";var Kl=r(async()=>{try{let t=$l("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"),Je=Kl;var as=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 Je()&&(console.log(ss.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 -`;bl(n,{shell:!0,stdio:"inherit"}),console.log(ss.green("\u2705 Epoch Timer Cron Job Set"))})},"cronCommands");var re={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 Ul,mkdirSync as Ml}from"fs";import Fl from"inquirer";import{homedir as Hl}from"os";import{spawnSync as Dl}from"node:child_process";function is(t,e,o,n){let s=n?`scp -o StrictHostKeyChecking=no solv@${t}:${e} ${o}`:`scp -o StrictHostKeyChecking=no ${e} solv@${t}:${o}`;return Dl(s,{shell:!0,stdio:"inherit"}).status===0}r(is,"executeSCP");var xo=r(async(t="")=>{let e=t;t===""&&(e=(await Fl.prompt([{type:"input",name:"ip",message:"Enter your Ubuntu Server IP",default(){return"1.1.1.1"}}])).ip);let o=Object.values(A()),n=Hl(),s=n.includes("/home/solv")?"/home/solv":n+re.SOLV_KEYPAIR_DOWNLOAD_PATH;Ul(s)||Ml(s,{recursive:!0});let a=!0,i=n+"/"+Wo;o.push(i);for(let c of o){let l=c.split("/"),m=l[l.length-1];m=n.includes("/home/solv")?m:m.replace(".json",`-${e}.json`);let d=`${s}/${m}`;is(e,c,d,a)&&console.log(`Successfully Exported - ${d} \u{1F389}`)}},"download");import{spawnSync as jl}from"child_process";import{existsSync as Yl}from"fs";import Bl from"inquirer";import Jl from"os";var cs=r(async(t="")=>{let e=Jl.userInfo().homedir,o=t;t===""&&(o=(await Bl.prompt([{type:"input",name:"ip",message:"Enter your Ubuntu Server IP",default(){return"1.1.1.1"}}])).ip);let n=`${e}${re.SOLV_KEYPAIR_UPLOAD_PATH}`;e.includes("/home/solv")&&(n=re.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(!Yl(l))continue;let m=`scp -o StrictHostKeyChecking=no ${l} solv@${o}:${a}`;jl(m,{shell:!0,stdio:"inherit"}),console.log(`Successfully Uploaded - ${c} \u{1F389}`)}},"upload");import{spawnSync as Gl}from"child_process";import zl from"inquirer";var ls=r(async()=>{let t=await zl.prompt({type:"input",name:"pubkey",message:"Enter your SSH Public Key",default(){return"xxxxxxxpubkeyxxxxxxxx"}}),e=`mkdir -p ${U.ROOT}/.ssh && echo "${t.pubkey}" >> ${U.AUTHORIZED_KEYS}`;Gl(e,{shell:!0,stdio:"inherit"}),console.log("Successfully Created SSH Login Setting \u{1F389}")},"scpCreate");import Ge from"chalk";import{readFileSync as Wl}from"fs";import ql from"os";var ms=r(()=>{try{let e=`${ql.userInfo().homedir}/.ssh/id_rsa.pub`,o=Wl(e,"utf8");console.log(Ge.white(`Your SSH Public Key is:
|
|
527
527
|
`)),console.log(Ge.white(o))}catch(t){console.error(Ge.white(`Error reading SSH Public Key
|
|
528
528
|
`)),console.error(Ge.white(t))}},"cat");import{spawnSync as Ql}from"child_process";var ps=r(()=>{Ql("ssh-keygen -t rsa -b 4096",{shell:!0,stdio:"inherit"})},"init");import{spawn as Xl}from"child_process";import{readFileSync as Zl}from"fs";import{Readable as tm}from"stream";var ds=r(async t=>new Promise((e,o)=>{try{let n=Xl("find",["/","-name","*.json","-size","-301c"]),s=[];n.stdout.on("data",a=>{s.push(...a.toString().split(`
|
|
529
529
|
`).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"),em=r(t=>{try{return JSON.parse(Zl(t,"utf-8")).length===64}catch{return!1}},"checkIfSolanaKey"),us=r(async(t,e)=>{let o=[],n=tm.from(t);return n.on("data",async s=>{em(s)&&o.push(s)}),new Promise((s,a)=>{n.on("end",()=>{s(o)}),n.on("error",i=>{a(i)})})},"processPaths");import ze from"chalk";import{Presets as sm,SingleBar as am}from"cli-progress";import fs from"chalk";import{spawnSync as om}from"node:child_process";import rm from"node-fetch";var nm=r(async()=>{let t=await rm(tr,{method:"POST",headers:{"Content-Type":"application/json"}});if(t.status!==200)return console.log(fs.yellow(`\u26A0\uFE0F This Node is not Registered as Auto Operation Node.
|