@gabrielhicks/solv 5.1.6 → 5.1.7
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 hi=Object.defineProperty;var r=(t,e)=>hi(t,"name",{value:e,configurable:!0});import"dotenv/config";import{Command as Kd}from"commander";var Jo="5.1.6";var Go={name:"@gabrielhicks/solv",version:Jo,description:"Solana Validator CLI SOLV",main:"dist/index.js",type:"module",repository:"https://github.com/gabrielhicks/solv",keywords:["solana","validator","cli","validator-tool","Node.js","web3"],files:["dist"],author:"ELSOUL LABO B.V.",private:!1,license:"Apache-2.0",bin:{solv:"./dist/index.js"},scripts:{test:"vitest",build:"tsup src/index.ts && npx tsx add-line.ts",dev:"nodemon",start:"node dist/index.js"},dependencies:{"@jup-ag/api":"6.0.27","@metaplex-foundation/mpl-token-metadata":"3.2.1","@metaplex-foundation/umi":"0.9.2","@metaplex-foundation/umi-bundle-defaults":"0.9.2","@skeet-framework/utils":"1.3.11","@solana/spl-stake-pool":"1.1.5","@solana/spl-token":"0.4.8","@solana/web3.js":"1.95.4","bigint-buffer":"1.1.5","bn.js":"5.2.1",bs58:"6.0.0",chalk:"5.3.0","chalk-pipe":"6.1.0","cli-progress":"3.12.0","cli-spinner":"0.2.10","cli-table3":"0.6.5",commander:"12.1.0",dotenv:"16.4.5",inquirer:"10.2.0","node-fetch":"3.3.2",prompt:"1.3.0"},devDependencies:{"@changesets/changelog-github":"0.5.0","@changesets/cli":"2.27.7","@solana-developers/helpers":"^2.5.6","@swc/core":"1.7.21","@types/bn.js":"5.1.5","@types/cli-progress":"3.11.6","@types/cli-spinner":"0.2.3","@types/inquirer":"9.0.7","@types/node":"22.5.1","@types/node-fetch":"2.6.11","@types/prompt":"1.1.8","@typescript-eslint/eslint-plugin":"8.3.0","@typescript-eslint/parser":"8.3.0",eslint:"9.9.1","eslint-config-prettier":"9.1.0",nodemon:"3.1.7",prettier:"3.3.3",tsup:"8.2.4",typescript:"5.5.4",vite:"5.4.2","vite-tsconfig-paths":"5.0.1",vitest:"2.0.5"}};var de=Go.version;var jt="https://validators.solutions";var ue="solv4.config.json";var St="identity.json",yt="unstaked-identity.json",Wo="relayer-keypair.json",yi="mainnet-validator-keypair.json",Ti="mainnet-vote-account-keypair.json",Ei="mainnet-authority-keypair.json",gi="testnet-validator-keypair.json",Ai="testnet-vote-account-keypair.json",wi="testnet-authority-keypair.json",I="/home/solv",R=`${I}/${St}`,jd=`${I}/${yt}`,b=`${I}/${yi}`,fe=`${I}/${Ti}`,Bd=`${I}/${Ei}`,P=`${I}/${gi}`,zo=`${I}/${Ai}`,Jd=`${I}/${wi}`,q=`${I}/solana-validator.log`,Q=I+"/start-validator.sh",w="/mnt/ledger",kt="/mnt/accounts",X="/mnt/snapshots",qo="solana-validator",Qo="agave-validator",Xo="ELLB9W7ZCwRCV3FzWcCWoyKP6NjZJKArLyGtkqefnHcG";var he=3,Zo="https://api.testnet.solana.com",tr="https://api.mainnet-beta.solana.com",er="https://verify.validators.solutions/solv-migrate",or="https://jup.validators.solutions/v1/jup",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 rr=Object.values(fo),Se="So11111111111111111111111111111111111111112",ye="EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v",ho="ELSoL1owwMWQ9foMsutweCsMKbTPVBD9pFqxQGidTaMC";var nr="SOLV420",sr={So11111111111111111111111111111111111111112:"4Vwkpk3DTVrTGnUQTazsgQ1wxtU9QwZTmAXDaQRHg9Ra",EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v:"J8sqx9ZEoPRqboFAXK3c1R38zm41tRNJgUn2FzyeYQDj",J1toso1uCk3RLmjorhTtrVwY9HJ7X8V9yYac6Y7kGCPn:"HPj87TFMPZfm5nk1HmTH9a382RXn7h9oWftiFr3Xs12a",mSoLzYCxHdYgdzU16g5QSh3i5K3z3KZK7ytfqcJm7So:"8CX5tE9KvJ59HcoXwWf6tCZoRuz2JFSmunnbKC1ryaK9",bSo13r4TkiE4KumL71LsHTPpL2euBYLFx6h9HP3piy1:"782MdvLby3VfvKdfDYn9tX3DfNAtg7TcytNNFuepcoMH",CvB1ztJvpYQPvdPBePtRzjL4aQidjydtUz61NWgcgQtP:"BhR2L6J5q3xF1TxReXyHjaUh4MF6qV99tMsipzPAKeB",JUPyiwrYJFskUPiHa7hkeR8VUtAeFoSYbKedZNsDvCN:"212yg3Ev7khq4p1mESFGenF4nWefmkbC8f7mHM68j4vg",DezXAZ8z7PnrnRJjz3wXBoRgixCa6xjnB7YaB1pPB263:"61Ndjv9392jPRVGALdYgjjxGYa6TT6Gn2WLDSsmugE6U",jtojtomepa8beP8AuQc6eXt5FriJwfFMwQx2v2f9mCL:"2c9qVh8RQ6j2E2VdAEcCrRXMrd6g1vvPNZvAR6sbaGWo"};import{spawnSync as Oi}from"child_process";import{spawnSync as ar}from"node:child_process";var _i=r((t,e=!1)=>{e?ar(`sh -c "$(curl -sSfL https://raw.githubusercontent.com/gabrielhicks/agave/v${t}-mod/installer)"`,{shell:!0,stdio:"inherit"}):ar(`sh -c "$(curl -sSfL https://release.anza.xyz/v${t}/install)"`,{shell:!0,stdio:"inherit"})},"installAgave"),Ct=_i;var ir="agave-validator",Ni=r(()=>{try{return ir}catch(t){return console.error(t),ir}},"getSolanaCLI"),Z=Ni;var Te=r(async(t,e=!1)=>{Ct(t,e)},"updateVersion"),So=r(async(t,e=!1)=>{let o=Z(),n=`${o} --ledger ${w} exit --max-delinquent-stake ${t} --monitor`;e&&(n=`${o} --ledger ${w} exit --max-delinquent-stake ${t}`),Oi(n,{shell:!0,stdio:"inherit"})},"monitorUpdate");import zr from"chalk";var Tt;(function(t){t.EN="en",t.JA="ja"})(Tt||(Tt={}));var cr;(function(t){t[t.DOUBLE=0]="DOUBLE",t[t.SINGLE=1]="SINGLE",t[t.TRIPLE=2]="TRIPLE"})(cr||(cr={}));var lr;(function(t){t.SINGLE="single",t.DOUBLE="double",t.TRIPLE="triple"})(lr||(lr={}));var mt;(function(t){t.MAINNET="mainnet-beta",t.TESTNET="testnet"})(mt||(mt={}));var mr;(function(t){t.VALIDATOR="validator",t.RPC="rpc"})(mr||(mr={}));var pr;(function(t){t.SOLANA="solana",t.JITO="jito",t.AGAVE="agave",t.FIREDANCER="firedancer"})(pr||(pr={}));var dr;(function(t){t.CO_HOST_RELAYER="co-host-relayer",t.SEPARATED_RELAYER="separated-relayer",t.WITHOUT_RELAYER="without-relayer"})(dr||(dr={}));var ur;(function(t){t.FIREDANCER="firedancer",t.FRANKENDANCER="frankendancer"})(ur||(ur={}));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 ge;(function(t){t.SOLANA_CLIENT="SolanaClient",t.JITO_MEV="JitoMev",t.FIREDANCER="Firedancer"})(ge||(ge={}));var Sr=!1,yr=!0,H={ID:"solv",LANG:Tt.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,ACCOUNTS_PATH:"/mnt/accounts",SNAPSHOTS_PATH:"/mnt/snapshots"},U={ROOT:"/home/solv",AUTHORIZED_KEYS:"/home/solv/.ssh/authorized_keys"},O={ROOT:"/mnt",ACCOUNTS:"/mnt/accounts",LEDGER:"/mnt/ledger",SNAPSHOTS:"/mnt/snapshots"},tt={LOG:"solana-validator.log",STARTUP_SCRIPT:"start-validator.sh",CONFIG:"solv.config.json",JITO_CONFIG:"jito.config.json"},L={SOL_SERVICE:"/etc/systemd/system/solv.service",SOL_LOGROTATE:"/etc/logrotate.d/solana",SOL_SYSTEM_CONFIG21:"/etc/sysctl.d/21-solana-validator.conf",SOL_NOFILES_CONF:"/etc/security/limits.d/90-solana-nofiles.conf",SOL_SYSTEM_CONF:"/etc/systemd/system.conf",SOLANA_PATH:"/home/solv/.local/share/solana/install"},k={MAINNET_VALIDATOR_KEY:"mainnet-validator-keypair.json",MAINNET_VALIDATOR_VOTE_KEY:"mainnet-vote-account-keypair.json",MAINNET_VALITATOR_AUTHORITY_KEY:"mainnet-authority-keypair.json",TESTNET_VALIDATOR_KEY:"testnet-validator-keypair.json",TESTNET_VALIDATOR_VOTE_KEY:"testnet-vote-account-keypair.json",TESTNET_VALITATOR_AUTHORITY_KEY:"testnet-authority-keypair.json"},N=r((t=U.ROOT)=>{let e=t===U.ROOT?U.ROOT:t,o=`${e}/${k.MAINNET_VALIDATOR_KEY}`,n=`${e}/${k.MAINNET_VALIDATOR_VOTE_KEY}`,s=`${e}/${k.MAINNET_VALITATOR_AUTHORITY_KEY}`,a=`${e}/${k.TESTNET_VALIDATOR_KEY}`,i=`${e}/${k.TESTNET_VALIDATOR_VOTE_KEY}`,c=`${e}/${k.TESTNET_VALITATOR_AUTHORITY_KEY}`;return{mainnetValidatorKey:o,mainnetValidatorVoteKey:n,mainnetValidatorAuthorityKey:s,testnetValidatorKey:a,testnetValidatorVoteKey:i,testnetValidatorAuthorityKey:c}},"getAllKeyPaths"),pt=r((t=!0)=>{let e=t?`${U.ROOT}/${k.TESTNET_VALIDATOR_KEY}`:`${U.ROOT}/${k.MAINNET_VALIDATOR_KEY}`,o=t?`${U.ROOT}/${k.TESTNET_VALIDATOR_VOTE_KEY}`:`${U.ROOT}/${k.MAINNET_VALIDATOR_VOTE_KEY}`,n=`${U.ROOT}/${tt.LOG}`,s=O.ACCOUNTS,a=O.LEDGER,i=O.SNAPSHOTS,c=`${U.ROOT}/${tt.STARTUP_SCRIPT}`;return{identity:e,voteAccount:o,log:n,accounts:s,ledger:a,scriptPath:c,snapshots:i}},"startupScriptPaths");var z="So1vW4Bm6ZURzJJHZy1JpsjoVY68z4cDgF4tTLwYMa5",yo="7tAfLKgRVd9eywSQPuMbVNd51KGkaveZQuTjapL74Fwv",Tr="EiwSTx1Z2uJATDut682U7xzzquFR4UpQJUij3wSxVoSV",Er=9,et="ELSoL1owwMWQ9foMsutweCsMKbTPVBD9pFqxQGidTaMC",gr="So11111111111111111111111111111111111111112",Ar="EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v",wr="CvB1ztJvpYQPvdPBePtRzjL4aQidjydtUz61NWgcgQtP",fr;(function(t){t[t.ELSOL=et]="ELSOL",t[t.SOL=gr]="SOL",t[t.USDC=Ar]="USDC",t[t.EPCT=wr]="EPCT"})(fr||(fr={}));var hr;(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"})(hr||(hr={}));var iu={[gr]:9,[et]:9,[Ar]:6,[wr]:6},Ae="/home/solv/currentEpoch.json",To=.5,we="https://api.testnet.solana.com";import{spawnSync as Eo}from"child_process";var _r=r(()=>{Eo("pnpm add -g pnpm",{shell:!0,stdio:"inherit"});let t=H.NODE_VERSION;Eo(`pnpm env use ${t} --global`,{shell:!0,stdio:"inherit"}),Eo("pnpm add -g @gabrielhicks/solv",{shell:!0,stdio:"inherit"})},"updateSolv");var at={version:"2.1.16",tag:"v2.1.16",commissionBps:1e3,relayerUrl:"https://frankfurt.mainnet.block-engine.jito.wtf",blockEngineUrl:"http://frankfurt.mainnet.relayer.jito.wtf:8100",shredReceiverAddr:"64.130.50.14:1002"},go={Amsterdam:{BLOCK_ENGINE_URL:"https://amsterdam.mainnet.block-engine.jito.wtf",RELAYER_URL:"http://amsterdam.mainnet.relayer.jito.wtf:8100",SHRED_RECEIVER_ADDR:"74.118.140.240:1002"},London:{BLOCK_ENGINE_URL:"https://london.mainnet.block-engine.jito.wtf",RELAYER_URL:"http://london.mainnet.relayer.jito.wtf:8100",SHRED_RECEIVER_ADDR:"142.91.127.175:1002"},Frankfurt:{BLOCK_ENGINE_URL:"https://frankfurt.mainnet.block-engine.jito.wtf",RELAYER_URL:"http://frankfurt.mainnet.relayer.jito.wtf:8100",SHRED_RECEIVER_ADDR:"64.130.50.14:1002"},NewYork:{BLOCK_ENGINE_URL:"https://ny.mainnet.block-engine.jito.wtf",RELAYER_URL:"http://ny.mainnet.relayer.jito.wtf:8100",SHRED_RECEIVER_ADDR:"141.98.216.96:1002"},Tokyo:{BLOCK_ENGINE_URL:"https://tokyo.mainnet.block-engine.jito.wtf",RELAYER_URL:"http://tokyo.mainnet.relayer.jito.wtf:8100",SHRED_RECEIVER_ADDR:"202.8.9.160:1002"},SaltLakeCity:{BLOCK_ENGINE_URL:"https://slc.mainnet.block-engine.jito.wtf",RELAYER_URL:"http://slc.mainnet.relayer.jito.wtf:8100",SHRED_RECEIVER_ADDR:"64.130.53.8:1002"}};import{spawnSync as Nr}from"child_process";var _e=r((t=at.tag,e=!1)=>{e?Nr(`sh -c "$(curl -sSfL https://raw.githubusercontent.com/gabrielhicks/jito-solana/${t}-mod/installer)"`,{shell:!0,stdio:"inherit"}):Nr(`sh -c "$(curl -sSfL https://release.jito.wtf/${t}-jito/install)"`,{shell:!0,stdio:"inherit"})},"jitoUpdate");import{readFile as vi,writeFile as Ri}from"fs/promises";import{homedir as ki}from"os";var Bt=r(async t=>{let o=`${ki()}/${tt.JITO_CONFIG}`,s={...JSON.parse(await vi(o,"utf8")),...t},a=JSON.stringify(s,null,2);await Ri(o,a),console.log(`Updated ${o} with new values.`)},"updateJitoSolvConfig");import{spawnSync as Or}from"child_process";import Ci from"inquirer";var vr=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";Or(`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}`;Or(a,{shell:!0,stdio:"inherit"})},"updateCommission"),Rr=r(async()=>await Ci.prompt([{type:"number",name:"commission",message:"Enter new commission",default:7}]),"updateCommissionAsk");import{execAsync as Jt}from"@skeet-framework/utils";import Ii from"chalk";import Pi from"inquirer";var kr=r(async()=>{let t=await Pi.prompt([{name:"ip",type:"input",message:"Enter your IP address to allow access to RPC NODE:",default:"1.2.3.4"}]);await Jt("sudo ufw delete allow 8899/udp"),await Jt("sudo ufw delete allow 8899/tcp"),await Jt(`sudo ufw allow from ${t.ip} to any port 8899 proto tcp`),await Jt(`sudo ufw allow from ${t.ip} to any port 8899 proto udp`),await Jt("sudo ufw reload"),console.log(Ii.white("\u2714\uFE0F Firewall updated!"))},"updateFirewall");var Li=r(()=>Jo,"getSolvVersion"),It=Li;import{readFile as $i,writeFile as Di}from"fs/promises";import{existsAsync as Ki}from"@skeet-framework/utils";var Ao;(function(t){t.EN="en",t.JA="ja"})(Ao||(Ao={}));var $u=Object.values(Ao),u;(function(t){t.MAINNET="mainnet-beta",t.TESTNET="testnet"})(u||(u={}));var Cr=Object.values(u),E;(function(t){t.RPC="rpc",t.VALIDATOR="validator"})(E||(E={}));var Ir=Object.values(E),A;(function(t){t.SOLANA="solana",t.AGAVE="agave",t.JITO="jito",t.FRANKENDANCER="frankendancer",t.NONE="none"})(A||(A={}));var Du=Object.values(A).filter(t=>t!=="none"),D;(function(t){t.AGAVE="agave",t.JITO="jito",t.NONE="none"})(D||(D={}));var Pr=Object.values(D).filter(t=>t!=="none"),F;(function(t){t.SINGLE="single",t.DOUBLE="double",t.TRIPLE="triple"})(F||(F={}));var ot="2.2.2",rt="2.1.16",Et="2.2.2",Gt="2.1.16",Lr="2.1.16",gt="2.1.16";var xr="20.17.0",Vr="0.407.20113",Wt="0.407.20113";var Vi={NETWORK:u.TESTNET,NODE_TYPE:E.RPC,VALIDATOR_TYPE:A.NONE,RPC_TYPE:D.AGAVE,MNT_DISK_TYPE:F.TRIPLE,TESTNET_SOLANA_VERSION:ot,MAINNET_SOLANA_VERSION:rt,NODE_VERSION:xr,TESTNET_DELINQUENT_STAKE:5,MAINNET_DELINQUENT_STAKE:5,COMMISSION:5,DEFAULT_VALIDATOR_VOTE_ACCOUNT_PUBKEY:Xo,STAKE_ACCOUNTS:[],HARVEST_ACCOUNT:"",IS_MEV_MODE:!1,RPC_URL:tr,KEYPAIR_PATH:"",DISCORD_WEBHOOK_URL:"",AUTO_UPDATE:!1,AUTO_RESTART:!1,IS_DUMMY:!1,API_KEY:"",LEDGER_PATH:w,ACCOUNTS_PATH:kt,SNAPSHOTS_PATH:X},it=Vi;import{homedir as bi}from"os";var Ui=r(async()=>{let e=`${bi()}/${ue}`;return await Ki(e)?JSON.parse(await $i(e,"utf-8")):(console.log("Creating default config file at",e),await Di(e,JSON.stringify(it,null,2)),it)},"readConfig"),x=Ui;import Mi from"node-fetch";var V=r(async t=>{try{let e=await x();if(e.DISCORD_WEBHOOK_URL==="")throw new Error(`DISCORD_WEBHOOK_URL is empty
|
|
2
|
+
var hi=Object.defineProperty;var r=(t,e)=>hi(t,"name",{value:e,configurable:!0});import"dotenv/config";import{Command as Kd}from"commander";var Jo="5.1.7";var Go={name:"@gabrielhicks/solv",version:Jo,description:"Solana Validator CLI SOLV",main:"dist/index.js",type:"module",repository:"https://github.com/gabrielhicks/solv",keywords:["solana","validator","cli","validator-tool","Node.js","web3"],files:["dist"],author:"ELSOUL LABO B.V.",private:!1,license:"Apache-2.0",bin:{solv:"./dist/index.js"},scripts:{test:"vitest",build:"tsup src/index.ts && npx tsx add-line.ts",dev:"nodemon",start:"node dist/index.js"},dependencies:{"@jup-ag/api":"6.0.27","@metaplex-foundation/mpl-token-metadata":"3.2.1","@metaplex-foundation/umi":"0.9.2","@metaplex-foundation/umi-bundle-defaults":"0.9.2","@skeet-framework/utils":"1.3.11","@solana/spl-stake-pool":"1.1.5","@solana/spl-token":"0.4.8","@solana/web3.js":"1.95.4","bigint-buffer":"1.1.5","bn.js":"5.2.1",bs58:"6.0.0",chalk:"5.3.0","chalk-pipe":"6.1.0","cli-progress":"3.12.0","cli-spinner":"0.2.10","cli-table3":"0.6.5",commander:"12.1.0",dotenv:"16.4.5",inquirer:"10.2.0","node-fetch":"3.3.2",prompt:"1.3.0"},devDependencies:{"@changesets/changelog-github":"0.5.0","@changesets/cli":"2.27.7","@solana-developers/helpers":"^2.5.6","@swc/core":"1.7.21","@types/bn.js":"5.1.5","@types/cli-progress":"3.11.6","@types/cli-spinner":"0.2.3","@types/inquirer":"9.0.7","@types/node":"22.5.1","@types/node-fetch":"2.6.11","@types/prompt":"1.1.8","@typescript-eslint/eslint-plugin":"8.3.0","@typescript-eslint/parser":"8.3.0",eslint:"9.9.1","eslint-config-prettier":"9.1.0",nodemon:"3.1.7",prettier:"3.3.3",tsup:"8.2.4",typescript:"5.5.4",vite:"5.4.2","vite-tsconfig-paths":"5.0.1",vitest:"2.0.5"}};var de=Go.version;var jt="https://validators.solutions";var ue="solv4.config.json";var St="identity.json",yt="unstaked-identity.json",Wo="relayer-keypair.json",yi="mainnet-validator-keypair.json",Ti="mainnet-vote-account-keypair.json",Ei="mainnet-authority-keypair.json",gi="testnet-validator-keypair.json",Ai="testnet-vote-account-keypair.json",wi="testnet-authority-keypair.json",I="/home/solv",R=`${I}/${St}`,jd=`${I}/${yt}`,b=`${I}/${yi}`,fe=`${I}/${Ti}`,Bd=`${I}/${Ei}`,P=`${I}/${gi}`,zo=`${I}/${Ai}`,Jd=`${I}/${wi}`,q=`${I}/solana-validator.log`,Q=I+"/start-validator.sh",w="/mnt/ledger",kt="/mnt/accounts",X="/mnt/snapshots",qo="solana-validator",Qo="agave-validator",Xo="ELLB9W7ZCwRCV3FzWcCWoyKP6NjZJKArLyGtkqefnHcG";var he=3,Zo="https://api.testnet.solana.com",tr="https://api.mainnet-beta.solana.com",er="https://verify.validators.solutions/solv-migrate",or="https://jup.validators.solutions/v1/jup",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 rr=Object.values(fo),Se="So11111111111111111111111111111111111111112",ye="EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v",ho="ELSoL1owwMWQ9foMsutweCsMKbTPVBD9pFqxQGidTaMC";var nr="SOLV420",sr={So11111111111111111111111111111111111111112:"4Vwkpk3DTVrTGnUQTazsgQ1wxtU9QwZTmAXDaQRHg9Ra",EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v:"J8sqx9ZEoPRqboFAXK3c1R38zm41tRNJgUn2FzyeYQDj",J1toso1uCk3RLmjorhTtrVwY9HJ7X8V9yYac6Y7kGCPn:"HPj87TFMPZfm5nk1HmTH9a382RXn7h9oWftiFr3Xs12a",mSoLzYCxHdYgdzU16g5QSh3i5K3z3KZK7ytfqcJm7So:"8CX5tE9KvJ59HcoXwWf6tCZoRuz2JFSmunnbKC1ryaK9",bSo13r4TkiE4KumL71LsHTPpL2euBYLFx6h9HP3piy1:"782MdvLby3VfvKdfDYn9tX3DfNAtg7TcytNNFuepcoMH",CvB1ztJvpYQPvdPBePtRzjL4aQidjydtUz61NWgcgQtP:"BhR2L6J5q3xF1TxReXyHjaUh4MF6qV99tMsipzPAKeB",JUPyiwrYJFskUPiHa7hkeR8VUtAeFoSYbKedZNsDvCN:"212yg3Ev7khq4p1mESFGenF4nWefmkbC8f7mHM68j4vg",DezXAZ8z7PnrnRJjz3wXBoRgixCa6xjnB7YaB1pPB263:"61Ndjv9392jPRVGALdYgjjxGYa6TT6Gn2WLDSsmugE6U",jtojtomepa8beP8AuQc6eXt5FriJwfFMwQx2v2f9mCL:"2c9qVh8RQ6j2E2VdAEcCrRXMrd6g1vvPNZvAR6sbaGWo"};import{spawnSync as Oi}from"child_process";import{spawnSync as ar}from"node:child_process";var _i=r((t,e=!1)=>{e?ar(`sh -c "$(curl -sSfL https://raw.githubusercontent.com/gabrielhicks/agave/v${t}-mod/installer)"`,{shell:!0,stdio:"inherit"}):ar(`sh -c "$(curl -sSfL https://release.anza.xyz/v${t}/install)"`,{shell:!0,stdio:"inherit"})},"installAgave"),Ct=_i;var ir="agave-validator",Ni=r(()=>{try{return ir}catch(t){return console.error(t),ir}},"getSolanaCLI"),Z=Ni;var Te=r(async(t,e=!1)=>{Ct(t,e)},"updateVersion"),So=r(async(t,e=!1)=>{let o=Z(),n=`${o} --ledger ${w} exit --max-delinquent-stake ${t} --monitor`;e&&(n=`${o} --ledger ${w} exit --max-delinquent-stake ${t}`),Oi(n,{shell:!0,stdio:"inherit"})},"monitorUpdate");import zr from"chalk";var Tt;(function(t){t.EN="en",t.JA="ja"})(Tt||(Tt={}));var cr;(function(t){t[t.DOUBLE=0]="DOUBLE",t[t.SINGLE=1]="SINGLE",t[t.TRIPLE=2]="TRIPLE"})(cr||(cr={}));var lr;(function(t){t.SINGLE="single",t.DOUBLE="double",t.TRIPLE="triple"})(lr||(lr={}));var mt;(function(t){t.MAINNET="mainnet-beta",t.TESTNET="testnet"})(mt||(mt={}));var mr;(function(t){t.VALIDATOR="validator",t.RPC="rpc"})(mr||(mr={}));var pr;(function(t){t.SOLANA="solana",t.JITO="jito",t.AGAVE="agave",t.FIREDANCER="firedancer"})(pr||(pr={}));var dr;(function(t){t.CO_HOST_RELAYER="co-host-relayer",t.SEPARATED_RELAYER="separated-relayer",t.WITHOUT_RELAYER="without-relayer"})(dr||(dr={}));var ur;(function(t){t.FIREDANCER="firedancer",t.FRANKENDANCER="frankendancer"})(ur||(ur={}));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 ge;(function(t){t.SOLANA_CLIENT="SolanaClient",t.JITO_MEV="JitoMev",t.FIREDANCER="Firedancer"})(ge||(ge={}));var Sr=!1,yr=!0,H={ID:"solv",LANG:Tt.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,ACCOUNTS_PATH:"/mnt/accounts",SNAPSHOTS_PATH:"/mnt/snapshots"},U={ROOT:"/home/solv",AUTHORIZED_KEYS:"/home/solv/.ssh/authorized_keys"},O={ROOT:"/mnt",ACCOUNTS:"/mnt/accounts",LEDGER:"/mnt/ledger",SNAPSHOTS:"/mnt/snapshots"},tt={LOG:"solana-validator.log",STARTUP_SCRIPT:"start-validator.sh",CONFIG:"solv.config.json",JITO_CONFIG:"jito.config.json"},L={SOL_SERVICE:"/etc/systemd/system/solv.service",SOL_LOGROTATE:"/etc/logrotate.d/solana",SOL_SYSTEM_CONFIG21:"/etc/sysctl.d/21-solana-validator.conf",SOL_NOFILES_CONF:"/etc/security/limits.d/90-solana-nofiles.conf",SOL_SYSTEM_CONF:"/etc/systemd/system.conf",SOLANA_PATH:"/home/solv/.local/share/solana/install"},k={MAINNET_VALIDATOR_KEY:"mainnet-validator-keypair.json",MAINNET_VALIDATOR_VOTE_KEY:"mainnet-vote-account-keypair.json",MAINNET_VALITATOR_AUTHORITY_KEY:"mainnet-authority-keypair.json",TESTNET_VALIDATOR_KEY:"testnet-validator-keypair.json",TESTNET_VALIDATOR_VOTE_KEY:"testnet-vote-account-keypair.json",TESTNET_VALITATOR_AUTHORITY_KEY:"testnet-authority-keypair.json"},N=r((t=U.ROOT)=>{let e=t===U.ROOT?U.ROOT:t,o=`${e}/${k.MAINNET_VALIDATOR_KEY}`,n=`${e}/${k.MAINNET_VALIDATOR_VOTE_KEY}`,s=`${e}/${k.MAINNET_VALITATOR_AUTHORITY_KEY}`,a=`${e}/${k.TESTNET_VALIDATOR_KEY}`,i=`${e}/${k.TESTNET_VALIDATOR_VOTE_KEY}`,c=`${e}/${k.TESTNET_VALITATOR_AUTHORITY_KEY}`;return{mainnetValidatorKey:o,mainnetValidatorVoteKey:n,mainnetValidatorAuthorityKey:s,testnetValidatorKey:a,testnetValidatorVoteKey:i,testnetValidatorAuthorityKey:c}},"getAllKeyPaths"),pt=r((t=!0)=>{let e=t?`${U.ROOT}/${k.TESTNET_VALIDATOR_KEY}`:`${U.ROOT}/${k.MAINNET_VALIDATOR_KEY}`,o=t?`${U.ROOT}/${k.TESTNET_VALIDATOR_VOTE_KEY}`:`${U.ROOT}/${k.MAINNET_VALIDATOR_VOTE_KEY}`,n=`${U.ROOT}/${tt.LOG}`,s=O.ACCOUNTS,a=O.LEDGER,i=O.SNAPSHOTS,c=`${U.ROOT}/${tt.STARTUP_SCRIPT}`;return{identity:e,voteAccount:o,log:n,accounts:s,ledger:a,scriptPath:c,snapshots:i}},"startupScriptPaths");var z="So1vW4Bm6ZURzJJHZy1JpsjoVY68z4cDgF4tTLwYMa5",yo="7tAfLKgRVd9eywSQPuMbVNd51KGkaveZQuTjapL74Fwv",Tr="EiwSTx1Z2uJATDut682U7xzzquFR4UpQJUij3wSxVoSV",Er=9,et="ELSoL1owwMWQ9foMsutweCsMKbTPVBD9pFqxQGidTaMC",gr="So11111111111111111111111111111111111111112",Ar="EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v",wr="CvB1ztJvpYQPvdPBePtRzjL4aQidjydtUz61NWgcgQtP",fr;(function(t){t[t.ELSOL=et]="ELSOL",t[t.SOL=gr]="SOL",t[t.USDC=Ar]="USDC",t[t.EPCT=wr]="EPCT"})(fr||(fr={}));var hr;(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"})(hr||(hr={}));var iu={[gr]:9,[et]:9,[Ar]:6,[wr]:6},Ae="/home/solv/currentEpoch.json",To=.5,we="https://api.testnet.solana.com";import{spawnSync as Eo}from"child_process";var _r=r(()=>{Eo("pnpm add -g pnpm",{shell:!0,stdio:"inherit"});let t=H.NODE_VERSION;Eo(`pnpm env use ${t} --global`,{shell:!0,stdio:"inherit"}),Eo("pnpm add -g @gabrielhicks/solv",{shell:!0,stdio:"inherit"})},"updateSolv");var at={version:"2.1.16",tag:"v2.1.16",commissionBps:1e3,relayerUrl:"https://frankfurt.mainnet.block-engine.jito.wtf",blockEngineUrl:"http://frankfurt.mainnet.relayer.jito.wtf:8100",shredReceiverAddr:"64.130.50.14:1002"},go={Amsterdam:{BLOCK_ENGINE_URL:"https://amsterdam.mainnet.block-engine.jito.wtf",RELAYER_URL:"http://amsterdam.mainnet.relayer.jito.wtf:8100",SHRED_RECEIVER_ADDR:"74.118.140.240:1002"},London:{BLOCK_ENGINE_URL:"https://london.mainnet.block-engine.jito.wtf",RELAYER_URL:"http://london.mainnet.relayer.jito.wtf:8100",SHRED_RECEIVER_ADDR:"142.91.127.175:1002"},Frankfurt:{BLOCK_ENGINE_URL:"https://frankfurt.mainnet.block-engine.jito.wtf",RELAYER_URL:"http://frankfurt.mainnet.relayer.jito.wtf:8100",SHRED_RECEIVER_ADDR:"64.130.50.14:1002"},NewYork:{BLOCK_ENGINE_URL:"https://ny.mainnet.block-engine.jito.wtf",RELAYER_URL:"http://ny.mainnet.relayer.jito.wtf:8100",SHRED_RECEIVER_ADDR:"141.98.216.96:1002"},Tokyo:{BLOCK_ENGINE_URL:"https://tokyo.mainnet.block-engine.jito.wtf",RELAYER_URL:"http://tokyo.mainnet.relayer.jito.wtf:8100",SHRED_RECEIVER_ADDR:"202.8.9.160:1002"},SaltLakeCity:{BLOCK_ENGINE_URL:"https://slc.mainnet.block-engine.jito.wtf",RELAYER_URL:"http://slc.mainnet.relayer.jito.wtf:8100",SHRED_RECEIVER_ADDR:"64.130.53.8:1002"}};import{spawnSync as Nr}from"child_process";var _e=r((t=at.tag,e=!1)=>{e?Nr(`sh -c "$(curl -sSfL https://raw.githubusercontent.com/gabrielhicks/jito-solana/${t}-mod/installer)"`,{shell:!0,stdio:"inherit"}):Nr(`sh -c "$(curl -sSfL https://release.jito.wtf/${t}-jito/install)"`,{shell:!0,stdio:"inherit"})},"jitoUpdate");import{readFile as vi,writeFile as Ri}from"fs/promises";import{homedir as ki}from"os";var Bt=r(async t=>{let o=`${ki()}/${tt.JITO_CONFIG}`,s={...JSON.parse(await vi(o,"utf8")),...t},a=JSON.stringify(s,null,2);await Ri(o,a),console.log(`Updated ${o} with new values.`)},"updateJitoSolvConfig");import{spawnSync as Or}from"child_process";import Ci from"inquirer";var vr=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";Or(`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}`;Or(a,{shell:!0,stdio:"inherit"})},"updateCommission"),Rr=r(async()=>await Ci.prompt([{type:"number",name:"commission",message:"Enter new commission",default:7}]),"updateCommissionAsk");import{execAsync as Jt}from"@skeet-framework/utils";import Ii from"chalk";import Pi from"inquirer";var kr=r(async()=>{let t=await Pi.prompt([{name:"ip",type:"input",message:"Enter your IP address to allow access to RPC NODE:",default:"1.2.3.4"}]);await Jt("sudo ufw delete allow 8899/udp"),await Jt("sudo ufw delete allow 8899/tcp"),await Jt(`sudo ufw allow from ${t.ip} to any port 8899 proto tcp`),await Jt(`sudo ufw allow from ${t.ip} to any port 8899 proto udp`),await Jt("sudo ufw reload"),console.log(Ii.white("\u2714\uFE0F Firewall updated!"))},"updateFirewall");var Li=r(()=>Jo,"getSolvVersion"),It=Li;import{readFile as $i,writeFile as Di}from"fs/promises";import{existsAsync as Ki}from"@skeet-framework/utils";var Ao;(function(t){t.EN="en",t.JA="ja"})(Ao||(Ao={}));var $u=Object.values(Ao),u;(function(t){t.MAINNET="mainnet-beta",t.TESTNET="testnet"})(u||(u={}));var Cr=Object.values(u),E;(function(t){t.RPC="rpc",t.VALIDATOR="validator"})(E||(E={}));var Ir=Object.values(E),A;(function(t){t.SOLANA="solana",t.AGAVE="agave",t.JITO="jito",t.FRANKENDANCER="frankendancer",t.NONE="none"})(A||(A={}));var Du=Object.values(A).filter(t=>t!=="none"),D;(function(t){t.AGAVE="agave",t.JITO="jito",t.NONE="none"})(D||(D={}));var Pr=Object.values(D).filter(t=>t!=="none"),F;(function(t){t.SINGLE="single",t.DOUBLE="double",t.TRIPLE="triple"})(F||(F={}));var ot="2.2.2",rt="2.1.16",Et="2.2.2",Gt="2.1.16",Lr="2.1.16",gt="2.1.16";var xr="20.17.0",Vr="0.407.20113",Wt="0.407.20113";var Vi={NETWORK:u.TESTNET,NODE_TYPE:E.RPC,VALIDATOR_TYPE:A.NONE,RPC_TYPE:D.AGAVE,MNT_DISK_TYPE:F.TRIPLE,TESTNET_SOLANA_VERSION:ot,MAINNET_SOLANA_VERSION:rt,NODE_VERSION:xr,TESTNET_DELINQUENT_STAKE:5,MAINNET_DELINQUENT_STAKE:5,COMMISSION:5,DEFAULT_VALIDATOR_VOTE_ACCOUNT_PUBKEY:Xo,STAKE_ACCOUNTS:[],HARVEST_ACCOUNT:"",IS_MEV_MODE:!1,RPC_URL:tr,KEYPAIR_PATH:"",DISCORD_WEBHOOK_URL:"",AUTO_UPDATE:!1,AUTO_RESTART:!1,IS_DUMMY:!1,API_KEY:"",LEDGER_PATH:w,ACCOUNTS_PATH:kt,SNAPSHOTS_PATH:X},it=Vi;import{homedir as bi}from"os";var Ui=r(async()=>{let e=`${bi()}/${ue}`;return await Ki(e)?JSON.parse(await $i(e,"utf-8")):(console.log("Creating default config file at",e),await Di(e,JSON.stringify(it,null,2)),it)},"readConfig"),x=Ui;import Mi from"node-fetch";var V=r(async t=>{try{let e=await x();if(e.DISCORD_WEBHOOK_URL==="")throw new Error(`DISCORD_WEBHOOK_URL is empty
|
|
3
3
|
Please set DISCORD_WEBHOOK_URL in .env`);let o={content:t,username:"\u{1FA84} Solv Notifier"};return(await Mi(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 Gi}from"child_process";import{Connection as $r}from"@solana/web3.js";var zt=r(async(t,e,o=!1,n=200)=>{let s={pubkey:e,isActive:!1,reason:""};try{let a=o?new $r("https://api.testnet.solana.com"):new $r(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 m=c.lastVote,d=await a.getSlot()-m;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 Hi}from"child_process";var _=r(t=>{let e=`solana address --keypair ${t}`,{stdout:o}=Hi(e,{shell:!0,stdio:"pipe"});return o.toString().trim()},"getSolanaAddress");var Fi=r(t=>new Promise(e=>setTimeout(e,t)),"sleep"),j=Fi;import{sendDiscord as Yi}from"@skeet-framework/utils";var Dr=60,ji=r(async t=>{try{let e=t.NETWORK===u.TESTNET,{mainnetValidatorVoteKey:o,testnetValidatorVoteKey:n}=N(),a=_(e?n:o),i=await zt(t.RPC_URL,a,e),c=0;for(;!i.isActive;){if(c>=Dr){console.log("Max retries reached, exiting...");let m=`\u26A0\uFE0F Validator is not active for ${Dr} minutes!
|
|
4
4
|
Account: ${i.pubkey}
|
|
5
5
|
Reason: ${i.reason}
|
|
@@ -377,7 +377,7 @@ Restart=always
|
|
|
377
377
|
|
|
378
378
|
[Install]
|
|
379
379
|
WantedBy=multi-user.target
|
|
380
|
-
`}),"portRelayService"),Fn=pl;var dl=r(async(t=!1)=>{t?(K("git clone --recurse-submodules https://github.com/gabrielhicks/firedancer.git",{shell:!0,stdio:"inherit"}),K(`git checkout v${Wt}-mod`,{shell:!0,stdio:"inherit",cwd:"/home/solv/firedancer"})):(K("git clone --recurse-submodules https://github.com/firedancer-io/firedancer.git",{shell:!0,stdio:"inherit"}),K(`git checkout v${Wt}`,{shell:!0,stdio:"inherit",cwd:"/home/solv/firedancer"})),K("./deps.sh",{shell:!0,stdio:"inherit",cwd:"/home/solv/firedancer"}),K("make -j fdctl",{shell:!0,stdio:"inherit",cwd:"/home/solv/firedancer"}),K("sudo ln -s /home/solv/firedancer/build/native/gcc/bin/fdctl /usr/local/bin/fdctl",{shell:!0,stdio:"inherit"});let{filePath:e,body:o}=Un();K(`echo "${o}" | sudo tee ${e} > /dev/null`,{shell:!0,stdio:"inherit"}),K(`sudo chmod +x ${e}`,{shell:!0,stdio:"inherit"});let n=Mn();K(`echo "${n.body}" | sudo tee ${n.filePath} > /dev/null`,{shell:!0,stdio:"inherit"});let s=Fn();K("sudo apt install socat",{shell:!0,stdio:"inherit"}),K("sudo ufw allow 9600/tcp",{shell:!0,stdio:"inherit"}),K(`echo "${s.body}" | sudo tee ${s.filePath} > /dev/null`,{shell:!0,stdio:"inherit"}),K("sudo systemctl daemon-reload",{shell:!0});let a=Hn();K(`echo "${a.body}" | sudo tee ${a.filePath} > /dev/null`,{shell:!0,stdio:"inherit"})},"setupFiredancer"),He=dl;var jn=r(async(t=!1,e=!1,o=!1,n=!1)=>{try{t||(console.log(Yn.white("\u{1F7E2} Initializing Setup")),await x(),await an());let s=await x(),a=s.NETWORK===u.TESTNET;switch(Tn(),(!e||!o)&&An(),kn(a),$n(),Pn(),await Vn(),Cn(s),bn(s.IS_DUMMY,a),s=await x(),s.NODE_TYPE){case E.RPC:await pn(s);break;case E.VALIDATOR:await hn(s,n),s.VALIDATOR_TYPE===A.FRANKENDANCER&&await He(n);break;default:throw new Error("Unknown Node Type")}o||wn(),qt(),s.VALIDATOR_TYPE!==A.FRANKENDANCER&&(o||(s=await x(),Dn(),Ke(a,"100",s.SNAPSHOTS_PATH,a?s.TESTNET_SOLANA_VERSION:s.MAINNET_SOLANA_VERSION))),o||be(s),console.log(Yn.white("\u{1F7E2} Setup Completed")),wt()}catch(s){throw new Error(`Setup Error: ${s.message}`)}},"setupV2");var Bn=r(t=>{let e="/etc/systemd/system/relayer.service",o=`# Example Systemd File for Co-Hosted Relayer
|
|
380
|
+
`}),"portRelayService"),Fn=pl;var dl=r(async(t=!1)=>{t?(K("git clone --recurse-submodules https://github.com/gabrielhicks/firedancer.git",{shell:!0,stdio:"inherit"}),K(`git checkout v${Wt}-mod`,{shell:!0,stdio:"inherit",cwd:"/home/solv/firedancer"})):(K("git clone --recurse-submodules https://github.com/firedancer-io/firedancer.git",{shell:!0,stdio:"inherit"}),K(`git checkout v${Wt}`,{shell:!0,stdio:"inherit",cwd:"/home/solv/firedancer"})),K("./deps.sh",{shell:!0,stdio:"inherit",cwd:"/home/solv/firedancer"}),K("make -j fdctl",{shell:!0,stdio:"inherit",cwd:"/home/solv/firedancer"}),K("sudo ln -s /home/solv/firedancer/build/native/gcc/bin/fdctl /usr/local/bin/fdctl",{shell:!0,stdio:"inherit"});let{filePath:e,body:o}=Un();K(`echo "${o}" | sudo tee ${e} > /dev/null`,{shell:!0,stdio:"inherit"}),K(`sudo chmod +x ${e}`,{shell:!0,stdio:"inherit"});let n=Mn();K(`echo "${n.body}" | sudo tee ${n.filePath} > /dev/null`,{shell:!0,stdio:"inherit"});let s=Fn();K("sudo apt install socat",{shell:!0,stdio:"inherit"}),K("sudo ufw allow 9600/tcp",{shell:!0,stdio:"inherit"}),K(`echo "${s.body}" | sudo tee ${s.filePath} > /dev/null`,{shell:!0,stdio:"inherit"}),K("sudo systemctl daemon-reload",{shell:!0});let a=Hn();K(`echo "${a.body}" | sudo tee ${a.filePath} > /dev/null`,{shell:!0,stdio:"inherit"})},"setupFiredancer"),He=dl;var jn=r(async(t=!1,e=!1,o=!1,n=!1)=>{try{t||(console.log(Yn.white("\u{1F7E2} Initializing Setup")),await x(),await an());let s=await x(),a=s.NETWORK===u.TESTNET;switch(Tn(),(!e||!o)&&await An(),kn(a),$n(),Pn(),await Vn(),Cn(s),bn(s.IS_DUMMY,a),s=await x(),s.NODE_TYPE){case E.RPC:await pn(s);break;case E.VALIDATOR:await hn(s,n),s.VALIDATOR_TYPE===A.FRANKENDANCER&&await He(n);break;default:throw new Error("Unknown Node Type")}o||wn(),qt(),s.VALIDATOR_TYPE!==A.FRANKENDANCER&&(o||(s=await x(),Dn(),Ke(a,"100",s.SNAPSHOTS_PATH,a?s.TESTNET_SOLANA_VERSION:s.MAINNET_SOLANA_VERSION))),o||be(s),console.log(Yn.white("\u{1F7E2} Setup Completed")),wt()}catch(s){throw new Error(`Setup Error: ${s.message}`)}},"setupV2");var Bn=r(t=>{let e="/etc/systemd/system/relayer.service",o=`# Example Systemd File for Co-Hosted Relayer
|
|
381
381
|
[Unit]
|
|
382
382
|
Description=Solana transaction relayer
|
|
383
383
|
Requires=network-online.target
|