@ily-validator/solc 5.2.9 → 5.2.10

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 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.9";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.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
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}
@@ -240,7 +240,7 @@ Type=simple
240
240
  Restart=always
241
241
  RestartSec=1
242
242
  LimitNOFILE=1000000
243
- LimitMEMLOCK=2000000000
243
+ LimitMEMLOCK=infinity
244
244
  LogRateLimitIntervalSec=0
245
245
  User=${F.USERNAME}
246
246
  Environment=PATH=${n}