@gabrielhicks/solv 5.6.9 → 5.6.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.
|
@@ -25,7 +25,7 @@ class JsonEncoder(json.JSONEncoder):
|
|
|
25
25
|
def default(self, obj):
|
|
26
26
|
if isinstance(obj, (numpy.int_, numpy.intc, numpy.intp, numpy.int8,
|
|
27
27
|
numpy.int16, numpy.int32, numpy.int64, numpy.uint8,
|
|
28
|
-
numpy.
|
|
28
|
+
numpy.int16, numpy.uint32, numpy.uint64)):
|
|
29
29
|
return int(obj)
|
|
30
30
|
elif isinstance(obj, (numpy.float_, numpy.float16, numpy.float32,
|
|
31
31
|
numpy.float64)):
|
|
@@ -60,4 +60,3 @@ def measurement_from_fields(name, data, tags, config, legacy_tags=None):
|
|
|
60
60
|
measurement.update(legacy_tags)
|
|
61
61
|
|
|
62
62
|
return measurement
|
|
63
|
-
|
|
@@ -333,6 +333,10 @@ def calculate_output_data(config: ValidatorConfig):
|
|
|
333
333
|
}
|
|
334
334
|
|
|
335
335
|
legacy_tags = {
|
|
336
|
+
"tags_validator_name": config.validator_name,
|
|
337
|
+
"tags_validator_identity_pubkey": data['identity_account_pubkey'],
|
|
338
|
+
"tags_validator_vote_pubkey": data['vote_account_pubkey'],
|
|
339
|
+
"tags_cluster_environment": config.cluster_environment,
|
|
336
340
|
"validator_identity_pubkey": data['identity_account_pubkey'],
|
|
337
341
|
"validator_vote_pubkey": data['vote_account_pubkey'],
|
|
338
342
|
"validator_name": config.validator_name,
|
package/dist/index.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
var Zr=Object.defineProperty;var E=(_,e)=>Zr(_,"name",{value:e,configurable:!0});import"dotenv/config";import{Command as YC}from"commander";var To="5.6.9";var ao={name:"@gabrielhicks/solv",version:To,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","dist/cli/monitoring/scripts"],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"},overrides:{chalk:"5.3.0","strip-ansi":"7.1.0","color-convert":"2.0.1","color-name":"1.1.4","is-core-module":"2.13.1","error-ex":"1.3.2","has-ansi":"5.0.1"}};var nt=ao.version;var me="https://validators.solutions";var st="solv4.config.json";var v_="identity.json",H_="unstaked-identity.json",So="relayer-keypair.json",eT="mainnet-validator-keypair.json",tT="mainnet-vote-account-keypair.json",ET="mainnet-authority-keypair.json",oT="testnet-validator-keypair.json",iT="testnet-vote-account-keypair.json",nT="testnet-authority-keypair.json",w="/home/solv",p=`${w}/${v_}`,ZC=`${w}/${H_}`,Q=`${w}/${eT}`,te=`${w}/${tT}`,_d=`${w}/${ET}`,y=`${w}/${oT}`,h_=`${w}/${iT}`,ed=`${w}/${nT}`,v=`${w}/solana-validator.log`,d_=w+"/start-validator.sh",u="/mnt/ledger",g_="/mnt/accounts",l_="/mnt/snapshots",Ro="solana-validator",co="agave-validator",Co="ELLB9W7ZCwRCV3FzWcCWoyKP6NjZJKArLyGtkqefnHcG";var rt=3;var lo="https://api.mainnet-beta.solana.com",No="https://verify.validators.solutions/solv-migrate",Oo="https://jup.validators.solutions/v1/jup",fE;(function(_){_.SOL="SOL",_.USDC="USDC",_.elSOL="elSOL",_.JitoSOL="JitoSOL",_.mSOL="mSOL",_.bSOL="bSOL",_.EPCT="EPCT",_.JUP="JUP",_.BONK="BONK",_.JTO="JTO"})(fE||(fE={}));var Fo=Object.values(fE),Tt="So11111111111111111111111111111111111111112",at="EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v",DE="ELSoL1owwMWQ9foMsutweCsMKbTPVBD9pFqxQGidTaMC";var Io="SOLV420",fo={So11111111111111111111111111111111111111112:"4Vwkpk3DTVrTGnUQTazsgQ1wxtU9QwZTmAXDaQRHg9Ra",EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v:"J8sqx9ZEoPRqboFAXK3c1R38zm41tRNJgUn2FzyeYQDj",J1toso1uCk3RLmjorhTtrVwY9HJ7X8V9yYac6Y7kGCPn:"HPj87TFMPZfm5nk1HmTH9a382RXn7h9oWftiFr3Xs12a",mSoLzYCxHdYgdzU16g5QSh3i5K3z3KZK7ytfqcJm7So:"8CX5tE9KvJ59HcoXwWf6tCZoRuz2JFSmunnbKC1ryaK9",bSo13r4TkiE4KumL71LsHTPpL2euBYLFx6h9HP3piy1:"782MdvLby3VfvKdfDYn9tX3DfNAtg7TcytNNFuepcoMH",CvB1ztJvpYQPvdPBePtRzjL4aQidjydtUz61NWgcgQtP:"BhR2L6J5q3xF1TxReXyHjaUh4MF6qV99tMsipzPAKeB",JUPyiwrYJFskUPiHa7hkeR8VUtAeFoSYbKedZNsDvCN:"212yg3Ev7khq4p1mESFGenF4nWefmkbC8f7mHM68j4vg",DezXAZ8z7PnrnRJjz3wXBoRgixCa6xjnB7YaB1pPB263:"61Ndjv9392jPRVGALdYgjjxGYa6TT6Gn2WLDSsmugE6U",jtojtomepa8beP8AuQc6eXt5FriJwfFMwQx2v2f9mCL:"2c9qVh8RQ6j2E2VdAEcCrRXMrd6g1vvPNZvAR6sbaGWo"},Ee=["adreoi6W1MGA7eegERNcQTwQH3UuJaAnWjVZEq2cxcF","naterTR45j7aWs16S3qx8V29CfM314dzfvtCSitiAYi","th734sEwvZZ5XfemLcvo6TXepPfawWBjz3HMYeQdhPi","BAPExw4zFmwSUjyPfQorenucofeafHLUetcoWTB4Gwnt","bay3c7G89NTxSULyM45gqJx3JoWtBBeXHvifCywwiwZ","BeRTyZTveVQsekrF63WhFvfGiABThym95x8uZaicDPgo","EF8o3aQnu853EEPJKUfqAgoa8szkVs28sv64xtBrRPSV","chrtyETASKQhsndRM9pr6qC3gAHG5MuRwCgXSNVqnJL","GsVJ62qt2nbRLT4f67LAo6Ve8eGhChJquYaK3wT1iG2v","ctz4yB16kvGiMrA4vdtKXEMYgkkfJLo6hMwDk9DZ3Vf","PARaNF4kcQW3BmaeMD3ELLAqUV7MDS8bMudaCEZ72NM","dedxpgLN1VXLHpekKra1JKkMGrw7tW1uuYz7Ec28iLK","DegEnNCbn6PrsvHvsErneRNv7KFTwnjW3uFVjf43e28v","Dcky7CK3aEHzdV9EF5YR1NaTJ9QfSyzW5cACbqEFKZNv","dksYs1gzQ7FzqyadN5XtcaeVbqKSN7X2SpfN3fcUW7G","dstCt4sDCQx1QFFJekmM5RjyFLsDRkaEjTgXd5gbpDB","eyeYaqg9e2L6xw7YwsSLm27eWJfhLNAm6ETQm8TXNoK","ExCHpAsqeaDJGfUj41bhU2BuZK4fhRnJKvhG486rfKg","farmoWMKdJBxLxhMZpgU1uVjvjVJnQqrGhwAyDmcn8R","G1EaM8gLQU7DifPnCTQKP2PLvFf63tHvaXBAR8QFLg5Z","goJirTtcRjP6Wqkw7cHNvzjEva5rpvPDtj2ZnEmPAr6","wetfCN7bhjhBT8GTSAnah8ftoRoHB8H8Q87KkxDdRgK","8H6qQ2FKUjY8wmggSKHUENY38Nr9sQxDUbEZB6fiCHSX","hy1oTqvrknqoNmPWq2JtQMdDDnWkEGH2ab7N4r4rnJJ","jntrbAHjcxhP2eRUgCSACb6cMVhYm3jEQ3eQDZKicmz","akicJSdNFWszP2Le38t1NtVeywXtvoxdiGciaELwZHz","1i1yarXXz55VdvVL4v2HXcjMJPAv4fWJhY8x43bmwfL","LoV31z7KC5CZ8sdGovmRSDGB6csP1fJip1hiM7xDozw","magiCagux3C7nMKo2jKSbX6yWzYWMGKJ6ABRnw1zQ8U","JAfBCSxx2fZwdM5wTiLRAfJm3MpqXz3KnxjPhCQixGVh","mythT638QB6T8rqcGS4aKZ5a5z31xakTsRC6CL9KGEe","phz4F5mHZcZGC21GRUT6j3AqJxTUGDVAiCKiyucnyy1","pineBbb5K6SdV6KG1xibsR5DM1XsWuajtXSy3YYGY4N","prt1stdbFCFXpEcx9rxwJK63zhYo43V5JCXzGWXkPGn","rad1u8GKZoyVWxVAKy1cjL84dqhS9mp57uAezPt4iQg","rapTWQhZD2dPjJ91BXW4UnVKBt6NvX2aZxWSSYg66Y4","royLQKzrsSs9VbMZMDjZkMM8j3buBnwx7oH3wdifAk4","CitYBuKSE5W6CXEBAgY1B9fEMUdHXYSmZbXbAWd31Cr","axyaGn2eZM1dnDCagpd9aYa92gKWTrtEYb8vwc21ddr","sTeV1NswjBBo15qosoyQj1aYrgvoxomAduN1zFV6gCf","txtXxyX13G7h899vnZwNJsVRAMfWcwYZNT3jucRqqiW","hxTzWqz2WMdLhbMgYfsWiWYdtx8pY582FKwQpfGL59M","te1emnh77qnpsdjcCi9FsyX8t4gf4HYWC4kTVHuH4MQ","tstidz7tN8armqvZ7ia2ck62mY9RD2BrwMtW2w8hcwk","vnd1sXYmA8YY9xHQBkKKurZeq7iCe6EQ9bGYNZJwh1c","YE11vEiXKKx95onU1EpjgwrHovgXamRTQvY52Mvde8i","5D1fNXzvv5NjV1ysLjirC4WY92RNsVH18vjmcszZd8on"],N_=["adre1Xia7ekGsEqNgHeFc7MYwkfzTQNeJgQmZ2agAKZ","nateKhsYkrVc992UuTfAhEEFQqr2zQfpGg9RafNkxdC","BeRtYZnaaZLFwYQRPaZcxuuHBmyFBSGP32C8Ls5xnrZP","b1ueZK9bWTywN2587zsScyLTaH18wfRfN5W15XnkiqF","chrtyhyeugoiCD3M2kjVmJigLwX7YtNP3YK9HZ1N3F1","chdvWr6T14nqGRFD37KY36dsvhkCtDaufW5rpu3AfHe","CtzN7ysR5rX69qd168Aosbuc83mPozhi81bEHbG7ecNP","parayLyZvwnGjDT2pGqrVn8UDxmNcdNQCE8uPRWMeRz","dmMwc4RazLHkvDZYrWAfbHQ6cViAvNa5szCJKaiun8S","DEgenZMznWXvg5YHaZM75arVTauV453SeXX1UrxcGNup","dst2u7mXMyDvb14cSErRNA1mxH1d5VXbSXgZ3DKE9xH","eyeY8HangkSYirSBtopAfThXzhHL855wPnddz8WnemV","ExCHWgfeJyKRzpfryiQn4W6aYaWhbSAEnsoUnBGNqjWD","G1eAmANVWf6ZeoxG4aMbS1APauyEDHqLxHFytzk5hZqN","wetkjRRRDrSPAzHqfVHtFDbhNnejKm5UPfkHeccFCpo","hnhCMmnrmod4rcyc3QRKkLEC9XnPTvYJ2gBvjgFiV4o","hy1oMaD3ViyJ8i6w1xjP79zAWBBaRd1zWdTW8zYXnwu","jntr1vkzvSujfckGR6ANmFmirVoPBMNr5XJGKP5uDQA","NATsUSZGohWw8xtLdxG4yus21UCkaes4FLfM2eqKbRk","1i1yPyh843bTfi5qPgqozTbDcEX65rUNEFcUT2KAs2i","Love31pnbDJNVzZZVbtV4h2ftvTPVcBpXW11BSTCa6s","MagiCBYNPD9iTBXqiFybAFCREQzG6MSM4LmFLXQZxuV","D8xKNftHzFcCekENuTEcFC1eoL9y8wNHEg4Q5z57KK4e","mythxvB89eT3C1TKwwhsvdHfYq2aoCt2es8vLoDFYyk","phz1CRbEsCtFCh2Ro5tjyu588VU1WPMwW9BJS9yFNn2","pineXRUnbaLNFMxaM3zBmFfTiKgQMGqT9jYHXZWq2Fw","prt1st4RSxAt32ams4zsXCe1kavzmKeoR7eh1sdYRXW","radM7PKUpZwJ9bYPAJ7V8FXHeUmH1zim6iaXUKkftP9","rapXHroUoGG3KvZ3qwjvGMdA7siWXwXpiNC1bYarvSC","RoYLttggWwa2st3KAGEjnPhsq4NPD5QwaNVyyR8pTz4","ciTyjzN9iyobidMycjyqRRM7vXAHXkFzH3m8vEr6cQj","axy3tCRL3wmFMVG4c69rYurcf4fXhBo2RcuBj9ADnJ4","sTEVErNNwF2qPnV6DuNPkWpEyCt4UU6k2Y3Hyn7WUFu","TxtxXzLTDQ9W4ya3xgwyaqVa6Tky6Yqhi5BLpPCc9tZ","hxMhrsuGPDmkLJ4mTxEjyeMST3VGhTiwJvS9XgHwePj","te1ee9rGf369wxYQkuxkvuvMuTJ9cksgZySmNUF8rNY","UNrgBLmc8JT6A3dxXY9DWeHvDezt2DZQbhg1KPQfqEL","vnd1Ps8w3fsi54qUMJxBhUWARES34Qw7JQXDZxvbysd","YE11a5nVJtUNqsojkphYuWc7StqBzbCeFH6BjhAAUEV","Certusm1sa411sMpV9FPqU5dXAYhmmhygvxJ23S6hJ24","7Np41oeYqPefeNQEHSv1UDhYrehxin3NStELsSKCT4K2","GdnSyH3YtwcxFvQrVVJMm1JhTS4QVX7MFsX56uJLUfiZ","CakcnaRDHka2gXyfbEd2d3xsvkJkqsLw2akB3zsN1D2S"];import{spawnSync as TT}from"child_process";import{spawnSync as k}from"node:child_process";var sT=E((_,e=!1,t=!1,o=!1)=>{t?e?(k(`mkdir /tmp/${_}-agave-mod`,{shell:!0,stdio:"inherit"}),k(`cd /tmp/${_}-agave-mod`,{shell:!0,stdio:"inherit"}),k(`git clone https://github.com/gabrielhicks/agave.git --recurse-submodules /tmp/${_}-agave-mod`,{shell:!0,stdio:"inherit"}),k(`git -C /tmp/${_}-agave-mod checkout ${_}-mod`,{shell:!0,stdio:"inherit"}),k(`git -C /tmp/${_}-agave-mod submodule update --init --recursive`,{shell:!0,stdio:"inherit"}),k(`CI_COMMIT=$(git -C /tmp/${_}-agave-mod rev-parse HEAD) /tmp/${_}-agave-mod/scripts/cargo-install-all.sh /home/solv/.local/share/solana/install/releases/${_}-agave-mod`,{shell:!0,stdio:"inherit"}),k("sudo rm -rf /home/solv/.local/share/solana/install/active_release",{shell:!0,stdio:"inherit"}),k(`sudo ln -sfn /home/solv/.local/share/solana/install/releases/${_}-agave-mod /home/solv/.local/share/solana/install/active_release`,{shell:!0,stdio:"inherit"}),o&&k("sudo setcap cap_net_raw,cap_net_admin,cap_bpf,cap_perfmon=p /home/solv/.local/share/solana/install/active_release/bin/agave-validator",{shell:!0,stdio:"inherit"}),k(`sudo rm -rf /tmp/${_}-agave-mod`,{shell:!0,stdio:"inherit"})):(k(`mkdir /tmp/${_}-agave`,{shell:!0,stdio:"inherit"}),k(`cd /tmp/${_}-agave`,{shell:!0,stdio:"inherit"}),k(`git clone https://github.com/anza-xyz/agave.git --recurse-submodules /tmp/${_}-agave`,{shell:!0,stdio:"inherit"}),k(`git -C /tmp/${_}-agave checkout ${_}`,{shell:!0,stdio:"inherit"}),k(`git -C /tmp/${_}-agave submodule update --init --recursive`,{shell:!0,stdio:"inherit"}),k(`CI_COMMIT=$(git -C /tmp/${_}-agave rev-parse HEAD) /tmp/${_}-agave/scripts/cargo-install-all.sh /home/solv/.local/share/solana/install/releases/${_}-agave`,{shell:!0,stdio:"inherit"}),k("sudo rm -rf /home/solv/.local/share/solana/install/active_release",{shell:!0,stdio:"inherit"}),k(`sudo ln -sfn /home/solv/.local/share/solana/install/releases/${_}-agave /home/solv/.local/share/solana/install/active_release`,{shell:!0,stdio:"inherit"}),o&&k("sudo setcap cap_net_raw,cap_net_admin,cap_bpf,cap_perfmon=p /home/solv/.local/share/solana/install/active_release/bin/agave-validator",{shell:!0,stdio:"inherit"}),k(`sudo rm -rf /tmp/${_}-agave`,{shell:!0,stdio:"inherit"})):e?k(`sh -c "$(curl --netrc-optional -sSfL https://raw.githubusercontent.com/gabrielhicks/agave/${_}-mod/installer)"`,{shell:!0,stdio:"inherit"}):k(`sh -c "$(curl --netrc-optional -sSfL https://release.anza.xyz/${_}/install)"`,{shell:!0,stdio:"inherit"})},"installAgave"),oe=sT;var Do="agave-validator",rT=E(()=>{try{return Do}catch(_){return console.error(_),Do}},"getSolanaCLI"),O_=rT;var F_="3.1.4",T_="3.0.12",Me="",Le="3.1.4",Y_="3.0.12",U_="",PE="3.0.12",he="3.0.12",J_="",Po="3.1.4",x_="3.0.12";var Ao="20.17.0",ie="0.806.30102",B_="0.805.30008";var St="0.8.0-1",Rt="0.8.0-1";var ct=E(async(_,e=!1,t=!1,o=!1)=>{let i=Me,s=`${`v${_}`}${i}`;oe(s,e,t,o)},"updateVersion"),ge=E(async(_,e=!1,t=10)=>{let o=O_(),i=`${o} --ledger ${u} exit --max-delinquent-stake ${_} --min-idle-time ${t}`;e&&(i=`${o} --ledger ${u} exit --max-delinquent-stake ${_} --min-idle-time ${t}`),TT(i,{shell:!0,stdio:"inherit"})},"monitorUpdate");import mi from"chalk";var Q_;(function(_){_.EN="en",_.JA="ja"})(Q_||(Q_={}));var Uo;(function(_){_[_.DOUBLE=0]="DOUBLE",_[_.SINGLE=1]="SINGLE",_[_.TRIPLE=2]="TRIPLE"})(Uo||(Uo={}));var uo;(function(_){_.SINGLE="single",_.DOUBLE="double",_.TRIPLE="triple"})(uo||(uo={}));var y_;(function(_){_.MAINNET="mainnet-beta",_.TESTNET="testnet"})(y_||(y_={}));var po;(function(_){_.VALIDATOR="validator",_.RPC="rpc"})(po||(po={}));var mo;(function(_){_.SOLANA="solana",_.JITO="jito",_.AGAVE="agave",_.FIREDANCER="firedancer"})(mo||(mo={}));var Mo;(function(_){_.CO_HOST_RELAYER="co-host-relayer",_.SEPARATED_RELAYER="separated-relayer",_.WITHOUT_RELAYER="without-relayer"})(Mo||(Mo={}));var Lo;(function(_){_.FIREDANCER="firedancer",_.FRANKENDANCER="frankendancer"})(Lo||(Lo={}));var Ct;(function(_){_[_.TESTNET_VALIDATOR=0]="TESTNET_VALIDATOR",_[_.MAINNET_VALIDATOR=1]="MAINNET_VALIDATOR",_[_.RPC_NODE=2]="RPC_NODE"})(Ct||(Ct={}));var dt;(function(_){_.SOLANA_CLIENT="SolanaClient",_.JITO_MEV="JitoMev",_.FIREDANCER="Firedancer"})(dt||(dt={}));var Bo=!1,yo=!1,Ko=!1,Go=!1,ko=!1,Vo=!1,o_={ID:"solv",LANG:Q_.EN,USERNAME:"solv",TESTNET_SOLANA_VERSION:"3.1.4",MAINNET_SOLANA_VERSION:"3.0.12",NODE_VERSION:"20.17.0",TESTNET_DELINQUENT_STAKE:5,MAINNET_DELINQUENT_STAKE:5,COMMISSION:5,SOLANA_NETWORK:"testnet",SOLV_TYPE:0,DISK_TYPES:1,IS_SETUP:!1,LANG_SETUP:!1,DEFAULT_VALIDATOR_VOTE_ACCOUNT_PUBKEY:"ELLB9W7ZCwRCV3FzWcCWoyKP6NjZJKArLyGtkqefnHcG",IS_CLIENT:!1,VALIDATOR_IPS:[],MAINNET_TYPE:"SolanaClient",LEDGER_PATH:"/mnt/ledger",STAKE_ACCOUNT:[],HARVEST_ACCOUNT:"",IS_MEV_MODE:!1,RPC_URL:"https://mainnet-beta.solana.com",KEYPAIR_PATH:"/home/solv/testnet-validator-keypair.json",DISCORD_WEBHOOK_URL:"",AUTO_UPDATE:!1,AUTO_RESTART:!1,ACCOUNTS_PATH:"/mnt/accounts",SNAPSHOTS_PATH:"/mnt/snapshots",MOD:!1,XDP:!1,ZERO_COPY:!1,JAG_SNAPSHOTS:!1,JAG_REGION:""},H={ROOT:"/home/solv",AUTHORIZED_KEYS:"/home/solv/.ssh/authorized_keys"},m={ROOT:"/mnt",ACCOUNTS:"/mnt/accounts",LEDGER:"/mnt/ledger",SNAPSHOTS:"/mnt/snapshots"},I_={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",FRANKENDANCER_LOGROTATE:"/etc/logrotate.d/frankendancer",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"},h={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"},g=E((_=H.ROOT)=>{let e=_===H.ROOT?H.ROOT:_,t=`${e}/${h.MAINNET_VALIDATOR_KEY}`,o=`${e}/${h.MAINNET_VALIDATOR_VOTE_KEY}`,i=`${e}/${h.MAINNET_VALITATOR_AUTHORITY_KEY}`,n=`${e}/${h.TESTNET_VALIDATOR_KEY}`,s=`${e}/${h.TESTNET_VALIDATOR_VOTE_KEY}`,r=`${e}/${h.TESTNET_VALITATOR_AUTHORITY_KEY}`;return{mainnetValidatorKey:t,mainnetValidatorVoteKey:o,mainnetValidatorAuthorityKey:i,testnetValidatorKey:n,testnetValidatorVoteKey:s,testnetValidatorAuthorityKey:r}},"getAllKeyPaths"),K_=E((_=!0)=>{let e=_?`${H.ROOT}/${h.TESTNET_VALIDATOR_KEY}`:`${H.ROOT}/${h.MAINNET_VALIDATOR_KEY}`,t=_?`${H.ROOT}/${h.TESTNET_VALIDATOR_VOTE_KEY}`:`${H.ROOT}/${h.MAINNET_VALIDATOR_VOTE_KEY}`,o=`${H.ROOT}/${I_.LOG}`,i=m.ACCOUNTS,n=m.LEDGER,s=m.SNAPSHOTS,r=`${H.ROOT}/${I_.STARTUP_SCRIPT}`;return{identity:e,voteAccount:t,log:o,accounts:i,ledger:n,scriptPath:r,snapshots:s}},"startupScriptPaths");var S_="So1vW4Bm6ZURzJJHZy1JpsjoVY68z4cDgF4tTLwYMa5",AE="7tAfLKgRVd9eywSQPuMbVNd51KGkaveZQuTjapL74Fwv",bo="EiwSTx1Z2uJATDut682U7xzzquFR4UpQJUij3wSxVoSV",wo=9,f_="ELSoL1owwMWQ9foMsutweCsMKbTPVBD9pFqxQGidTaMC",vo="So11111111111111111111111111111111111111112",Ho="EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v",Yo="CvB1ztJvpYQPvdPBePtRzjL4aQidjydtUz61NWgcgQtP",ho;(function(_){_[_.ELSOL=f_]="ELSOL",_[_.SOL=vo]="SOL",_[_.USDC=Ho]="USDC",_[_.EPCT=Yo]="EPCT"})(ho||(ho={}));var go;(function(_){_.V6_BASE_URL="https://quote-api.jup.ag/v6",_.V6_QUOTE_URL="https://quote-api.jup.ag/v6/quote",_.V6_SWAP_URL="https://quote-api.jup.ag/v6/swap"})(go||(go={}));var Od={[vo]:9,[f_]:9,[Ho]:6,[Yo]:6},lt="/home/solv/currentEpoch.json";var Nt="https://api.testnet.solana.com";import{spawnSync as UE}from"child_process";var Jo=E(()=>{UE("pnpm add -g pnpm",{shell:!0,stdio:"inherit"});let _=o_.NODE_VERSION;UE(`pnpm env use ${_} --global`,{shell:!0,stdio:"inherit"}),UE("pnpm add -g @gabrielhicks/solv",{shell:!0,stdio:"inherit"})},"updateSolv");import{spawnSync as $}from"child_process";var Ot=E((_,e=!1,t=!1,o=!1)=>{$("sudo apt install --only-upgrade doublezero doublezero-solana -y",{shell:!0,stdio:"inherit"}),$("sudo systemctl restart doublezerod",{shell:!0,stdio:"inherit"}),t?e?$(`sh -c "$(curl --netrc-optional -sSfL https://raw.githubusercontent.com/gabrielhicks/jito-solana/${_}/installer)"`,{shell:!0,stdio:"inherit"}):($(`mkdir /tmp/${_}`,{shell:!0,stdio:"inherit"}),$(`cd /tmp/${_}`,{shell:!0,stdio:"inherit"}),$(`git clone https://github.com/jito-foundation/jito-solana.git --recurse-submodules /tmp/${_}`,{shell:!0,stdio:"inherit"}),$(`git -C /tmp/${_} checkout ${_}`,{shell:!0,stdio:"inherit"}),$(`git -C /tmp/${_} submodule update --init --recursive`,{shell:!0,stdio:"inherit"}),$(`CI_COMMIT=$(git -C /tmp/${_} rev-parse HEAD) /tmp/${_}/scripts/cargo-install-all.sh /home/solv/.local/share/solana/install/releases/${_}`,{shell:!0,stdio:"inherit"}),$("sudo rm -rf /home/solv/.local/share/solana/install/active_release",{shell:!0,stdio:"inherit"}),$(`sudo ln -sfn /home/solv/.local/share/solana/install/releases/${_} /home/solv/.local/share/solana/install/active_release`,{shell:!0,stdio:"inherit"}),o&&$("sudo setcap cap_net_raw,cap_net_admin,cap_bpf,cap_perfmon=p /home/solv/.local/share/solana/install/active_release/bin/agave-validator",{shell:!0,stdio:"inherit"}),$(`sudo rm -rf /tmp/${_}`,{shell:!0,stdio:"inherit"})):e?$(`sh -c "$(curl --netrc-optional -sSfL https://raw.githubusercontent.com/gabrielhicks/jito-solana/${_}/installer)"`,{shell:!0,stdio:"inherit"}):$(`sh -c "$(curl --netrc-optional -sSfL https://release.jito.wtf/${_}/install)"`,{shell:!0,stdio:"inherit"})},"jitoUpdate");import{readFile as aT,writeFile as ST}from"fs/promises";import{homedir as RT}from"os";var $_=E(async _=>{let t=`${RT()}/${I_.JITO_CONFIG}`,i={...JSON.parse(await aT(t,"utf8")),..._},n=JSON.stringify(i,null,2);await ST(t,n),console.log(`Updated ${t} with new values.`)},"updateJitoSolvConfig");import{spawnSync as xo}from"child_process";import cT from"inquirer";var Qo=E((_,e=!0)=>{let t=e?"/home/solv/testnet-validator-keypair.json":"/home/solv/mainnet-validator-keypair.json",o=e?"/home/solv/testnet-vote-account-keypair.json":"/home/solv/mainnet-vote-account-keypair.json";xo(`solana config set --url ${e?"testnet":"mainnet-beta"} --keypair ${t}`,{shell:!0,stdio:"inherit"});let n=`solana vote-update-commission ${o} ${_} ${t} --keypair ${t}`;xo(n,{shell:!0,stdio:"inherit"})},"updateCommission"),$o=E(async()=>await cT.prompt([{type:"number",name:"commission",message:"Enter new commission",default:7}]),"updateCommissionAsk");import{execAsync as Be}from"@skeet-framework/utils";import CT from"chalk";import dT from"inquirer";var qo=E(async()=>{let _=await dT.prompt([{name:"ip",type:"input",message:"Enter your IP address to allow access to RPC NODE:",default:"1.2.3.4"}]);await Be("sudo ufw delete allow 8899/udp"),await Be("sudo ufw delete allow 8899/tcp"),await Be(`sudo ufw allow from ${_.ip} to any port 8899 proto tcp`),await Be(`sudo ufw allow from ${_.ip} to any port 8899 proto udp`),await Be("sudo ufw reload"),console.log(CT.white("\u2714\uFE0F Firewall updated!"))},"updateFirewall");var lT=E(()=>To,"getSolvVersion"),ne=lT;import{readFile as FT,writeFile as IT}from"fs/promises";import{existsAsync as fT}from"@skeet-framework/utils";var uE;(function(_){_.EN="en",_.JA="ja"})(uE||(uE={}));var Jd=Object.values(uE),O;(function(_){_.MAINNET="mainnet-beta",_.TESTNET="testnet"})(O||(O={}));var Wo=Object.values(O),P;(function(_){_.RPC="rpc",_.VALIDATOR="validator"})(P||(P={}));var Xo=Object.values(P),F;(function(_){_.SOLANA="solana",_.AGAVE="agave",_.JITO="jito",_.FRANKENDANCER="frankendancer",_.BAM="bam",_.NONE="none"})(F||(F={}));var xd=Object.values(F).filter(_=>_!=="none"),q;(function(_){_.AGAVE="agave",_.JITO="jito",_.NONE="none"})(q||(q={}));var jo=Object.values(q).filter(_=>_!=="none"),i_;(function(_){_.SINGLE="single",_.DOUBLE="double",_.TRIPLE="triple"})(i_||(i_={}));var OT={NETWORK:O.TESTNET,NODE_TYPE:P.RPC,VALIDATOR_TYPE:F.NONE,RPC_TYPE:q.AGAVE,MNT_DISK_TYPE:i_.TRIPLE,TESTNET_SOLANA_VERSION:F_,MAINNET_SOLANA_VERSION:T_,NODE_VERSION:Ao,TESTNET_DELINQUENT_STAKE:10,MAINNET_DELINQUENT_STAKE:5,COMMISSION:5,DEFAULT_VALIDATOR_VOTE_ACCOUNT_PUBKEY:Co,STAKE_ACCOUNTS:[],HARVEST_ACCOUNT:"",IS_MEV_MODE:!1,RPC_URL:lo,KEYPAIR_PATH:"",DISCORD_WEBHOOK_URL:"",AUTO_UPDATE:!1,AUTO_RESTART:!1,IS_DUMMY:!1,API_KEY:"",LEDGER_PATH:u,ACCOUNTS_PATH:g_,SNAPSHOTS_PATH:l_,MOD:!1,XDP:!1,ZERO_COPY:!1,JAG_SNAPSHOTS:!1,JAG_REGION:""},u_=OT;import{homedir as DT}from"os";var PT=E(async()=>{let e=`${DT()}/${st}`;return await fT(e)?JSON.parse(await FT(e,"utf-8")):(console.log("Creating default config file at",e),await IT(e,JSON.stringify(u_,null,2)),u_)},"readConfig"),J=PT;import AT from"node-fetch";var D_=E(async _=>{try{let e=await J();if(e.DISCORD_WEBHOOK_URL==="")throw new Error(`DISCORD_WEBHOOK_URL is empty
|
|
2
|
+
var Zr=Object.defineProperty;var E=(_,e)=>Zr(_,"name",{value:e,configurable:!0});import"dotenv/config";import{Command as YC}from"commander";var To="5.6.10";var ao={name:"@gabrielhicks/solv",version:To,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","dist/cli/monitoring/scripts"],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"},overrides:{chalk:"5.3.0","strip-ansi":"7.1.0","color-convert":"2.0.1","color-name":"1.1.4","is-core-module":"2.13.1","error-ex":"1.3.2","has-ansi":"5.0.1"}};var nt=ao.version;var me="https://validators.solutions";var st="solv4.config.json";var v_="identity.json",H_="unstaked-identity.json",So="relayer-keypair.json",eT="mainnet-validator-keypair.json",tT="mainnet-vote-account-keypair.json",ET="mainnet-authority-keypair.json",oT="testnet-validator-keypair.json",iT="testnet-vote-account-keypair.json",nT="testnet-authority-keypair.json",w="/home/solv",p=`${w}/${v_}`,ZC=`${w}/${H_}`,Q=`${w}/${eT}`,te=`${w}/${tT}`,_d=`${w}/${ET}`,y=`${w}/${oT}`,h_=`${w}/${iT}`,ed=`${w}/${nT}`,v=`${w}/solana-validator.log`,d_=w+"/start-validator.sh",u="/mnt/ledger",g_="/mnt/accounts",l_="/mnt/snapshots",Ro="solana-validator",co="agave-validator",Co="ELLB9W7ZCwRCV3FzWcCWoyKP6NjZJKArLyGtkqefnHcG";var rt=3;var lo="https://api.mainnet-beta.solana.com",No="https://verify.validators.solutions/solv-migrate",Oo="https://jup.validators.solutions/v1/jup",fE;(function(_){_.SOL="SOL",_.USDC="USDC",_.elSOL="elSOL",_.JitoSOL="JitoSOL",_.mSOL="mSOL",_.bSOL="bSOL",_.EPCT="EPCT",_.JUP="JUP",_.BONK="BONK",_.JTO="JTO"})(fE||(fE={}));var Fo=Object.values(fE),Tt="So11111111111111111111111111111111111111112",at="EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v",DE="ELSoL1owwMWQ9foMsutweCsMKbTPVBD9pFqxQGidTaMC";var Io="SOLV420",fo={So11111111111111111111111111111111111111112:"4Vwkpk3DTVrTGnUQTazsgQ1wxtU9QwZTmAXDaQRHg9Ra",EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v:"J8sqx9ZEoPRqboFAXK3c1R38zm41tRNJgUn2FzyeYQDj",J1toso1uCk3RLmjorhTtrVwY9HJ7X8V9yYac6Y7kGCPn:"HPj87TFMPZfm5nk1HmTH9a382RXn7h9oWftiFr3Xs12a",mSoLzYCxHdYgdzU16g5QSh3i5K3z3KZK7ytfqcJm7So:"8CX5tE9KvJ59HcoXwWf6tCZoRuz2JFSmunnbKC1ryaK9",bSo13r4TkiE4KumL71LsHTPpL2euBYLFx6h9HP3piy1:"782MdvLby3VfvKdfDYn9tX3DfNAtg7TcytNNFuepcoMH",CvB1ztJvpYQPvdPBePtRzjL4aQidjydtUz61NWgcgQtP:"BhR2L6J5q3xF1TxReXyHjaUh4MF6qV99tMsipzPAKeB",JUPyiwrYJFskUPiHa7hkeR8VUtAeFoSYbKedZNsDvCN:"212yg3Ev7khq4p1mESFGenF4nWefmkbC8f7mHM68j4vg",DezXAZ8z7PnrnRJjz3wXBoRgixCa6xjnB7YaB1pPB263:"61Ndjv9392jPRVGALdYgjjxGYa6TT6Gn2WLDSsmugE6U",jtojtomepa8beP8AuQc6eXt5FriJwfFMwQx2v2f9mCL:"2c9qVh8RQ6j2E2VdAEcCrRXMrd6g1vvPNZvAR6sbaGWo"},Ee=["adreoi6W1MGA7eegERNcQTwQH3UuJaAnWjVZEq2cxcF","naterTR45j7aWs16S3qx8V29CfM314dzfvtCSitiAYi","th734sEwvZZ5XfemLcvo6TXepPfawWBjz3HMYeQdhPi","BAPExw4zFmwSUjyPfQorenucofeafHLUetcoWTB4Gwnt","bay3c7G89NTxSULyM45gqJx3JoWtBBeXHvifCywwiwZ","BeRTyZTveVQsekrF63WhFvfGiABThym95x8uZaicDPgo","EF8o3aQnu853EEPJKUfqAgoa8szkVs28sv64xtBrRPSV","chrtyETASKQhsndRM9pr6qC3gAHG5MuRwCgXSNVqnJL","GsVJ62qt2nbRLT4f67LAo6Ve8eGhChJquYaK3wT1iG2v","ctz4yB16kvGiMrA4vdtKXEMYgkkfJLo6hMwDk9DZ3Vf","PARaNF4kcQW3BmaeMD3ELLAqUV7MDS8bMudaCEZ72NM","dedxpgLN1VXLHpekKra1JKkMGrw7tW1uuYz7Ec28iLK","DegEnNCbn6PrsvHvsErneRNv7KFTwnjW3uFVjf43e28v","Dcky7CK3aEHzdV9EF5YR1NaTJ9QfSyzW5cACbqEFKZNv","dksYs1gzQ7FzqyadN5XtcaeVbqKSN7X2SpfN3fcUW7G","dstCt4sDCQx1QFFJekmM5RjyFLsDRkaEjTgXd5gbpDB","eyeYaqg9e2L6xw7YwsSLm27eWJfhLNAm6ETQm8TXNoK","ExCHpAsqeaDJGfUj41bhU2BuZK4fhRnJKvhG486rfKg","farmoWMKdJBxLxhMZpgU1uVjvjVJnQqrGhwAyDmcn8R","G1EaM8gLQU7DifPnCTQKP2PLvFf63tHvaXBAR8QFLg5Z","goJirTtcRjP6Wqkw7cHNvzjEva5rpvPDtj2ZnEmPAr6","wetfCN7bhjhBT8GTSAnah8ftoRoHB8H8Q87KkxDdRgK","8H6qQ2FKUjY8wmggSKHUENY38Nr9sQxDUbEZB6fiCHSX","hy1oTqvrknqoNmPWq2JtQMdDDnWkEGH2ab7N4r4rnJJ","jntrbAHjcxhP2eRUgCSACb6cMVhYm3jEQ3eQDZKicmz","akicJSdNFWszP2Le38t1NtVeywXtvoxdiGciaELwZHz","1i1yarXXz55VdvVL4v2HXcjMJPAv4fWJhY8x43bmwfL","LoV31z7KC5CZ8sdGovmRSDGB6csP1fJip1hiM7xDozw","magiCagux3C7nMKo2jKSbX6yWzYWMGKJ6ABRnw1zQ8U","JAfBCSxx2fZwdM5wTiLRAfJm3MpqXz3KnxjPhCQixGVh","mythT638QB6T8rqcGS4aKZ5a5z31xakTsRC6CL9KGEe","phz4F5mHZcZGC21GRUT6j3AqJxTUGDVAiCKiyucnyy1","pineBbb5K6SdV6KG1xibsR5DM1XsWuajtXSy3YYGY4N","prt1stdbFCFXpEcx9rxwJK63zhYo43V5JCXzGWXkPGn","rad1u8GKZoyVWxVAKy1cjL84dqhS9mp57uAezPt4iQg","rapTWQhZD2dPjJ91BXW4UnVKBt6NvX2aZxWSSYg66Y4","royLQKzrsSs9VbMZMDjZkMM8j3buBnwx7oH3wdifAk4","CitYBuKSE5W6CXEBAgY1B9fEMUdHXYSmZbXbAWd31Cr","axyaGn2eZM1dnDCagpd9aYa92gKWTrtEYb8vwc21ddr","sTeV1NswjBBo15qosoyQj1aYrgvoxomAduN1zFV6gCf","txtXxyX13G7h899vnZwNJsVRAMfWcwYZNT3jucRqqiW","hxTzWqz2WMdLhbMgYfsWiWYdtx8pY582FKwQpfGL59M","te1emnh77qnpsdjcCi9FsyX8t4gf4HYWC4kTVHuH4MQ","tstidz7tN8armqvZ7ia2ck62mY9RD2BrwMtW2w8hcwk","vnd1sXYmA8YY9xHQBkKKurZeq7iCe6EQ9bGYNZJwh1c","YE11vEiXKKx95onU1EpjgwrHovgXamRTQvY52Mvde8i","5D1fNXzvv5NjV1ysLjirC4WY92RNsVH18vjmcszZd8on"],N_=["adre1Xia7ekGsEqNgHeFc7MYwkfzTQNeJgQmZ2agAKZ","nateKhsYkrVc992UuTfAhEEFQqr2zQfpGg9RafNkxdC","BeRtYZnaaZLFwYQRPaZcxuuHBmyFBSGP32C8Ls5xnrZP","b1ueZK9bWTywN2587zsScyLTaH18wfRfN5W15XnkiqF","chrtyhyeugoiCD3M2kjVmJigLwX7YtNP3YK9HZ1N3F1","chdvWr6T14nqGRFD37KY36dsvhkCtDaufW5rpu3AfHe","CtzN7ysR5rX69qd168Aosbuc83mPozhi81bEHbG7ecNP","parayLyZvwnGjDT2pGqrVn8UDxmNcdNQCE8uPRWMeRz","dmMwc4RazLHkvDZYrWAfbHQ6cViAvNa5szCJKaiun8S","DEgenZMznWXvg5YHaZM75arVTauV453SeXX1UrxcGNup","dst2u7mXMyDvb14cSErRNA1mxH1d5VXbSXgZ3DKE9xH","eyeY8HangkSYirSBtopAfThXzhHL855wPnddz8WnemV","ExCHWgfeJyKRzpfryiQn4W6aYaWhbSAEnsoUnBGNqjWD","G1eAmANVWf6ZeoxG4aMbS1APauyEDHqLxHFytzk5hZqN","wetkjRRRDrSPAzHqfVHtFDbhNnejKm5UPfkHeccFCpo","hnhCMmnrmod4rcyc3QRKkLEC9XnPTvYJ2gBvjgFiV4o","hy1oMaD3ViyJ8i6w1xjP79zAWBBaRd1zWdTW8zYXnwu","jntr1vkzvSujfckGR6ANmFmirVoPBMNr5XJGKP5uDQA","NATsUSZGohWw8xtLdxG4yus21UCkaes4FLfM2eqKbRk","1i1yPyh843bTfi5qPgqozTbDcEX65rUNEFcUT2KAs2i","Love31pnbDJNVzZZVbtV4h2ftvTPVcBpXW11BSTCa6s","MagiCBYNPD9iTBXqiFybAFCREQzG6MSM4LmFLXQZxuV","D8xKNftHzFcCekENuTEcFC1eoL9y8wNHEg4Q5z57KK4e","mythxvB89eT3C1TKwwhsvdHfYq2aoCt2es8vLoDFYyk","phz1CRbEsCtFCh2Ro5tjyu588VU1WPMwW9BJS9yFNn2","pineXRUnbaLNFMxaM3zBmFfTiKgQMGqT9jYHXZWq2Fw","prt1st4RSxAt32ams4zsXCe1kavzmKeoR7eh1sdYRXW","radM7PKUpZwJ9bYPAJ7V8FXHeUmH1zim6iaXUKkftP9","rapXHroUoGG3KvZ3qwjvGMdA7siWXwXpiNC1bYarvSC","RoYLttggWwa2st3KAGEjnPhsq4NPD5QwaNVyyR8pTz4","ciTyjzN9iyobidMycjyqRRM7vXAHXkFzH3m8vEr6cQj","axy3tCRL3wmFMVG4c69rYurcf4fXhBo2RcuBj9ADnJ4","sTEVErNNwF2qPnV6DuNPkWpEyCt4UU6k2Y3Hyn7WUFu","TxtxXzLTDQ9W4ya3xgwyaqVa6Tky6Yqhi5BLpPCc9tZ","hxMhrsuGPDmkLJ4mTxEjyeMST3VGhTiwJvS9XgHwePj","te1ee9rGf369wxYQkuxkvuvMuTJ9cksgZySmNUF8rNY","UNrgBLmc8JT6A3dxXY9DWeHvDezt2DZQbhg1KPQfqEL","vnd1Ps8w3fsi54qUMJxBhUWARES34Qw7JQXDZxvbysd","YE11a5nVJtUNqsojkphYuWc7StqBzbCeFH6BjhAAUEV","Certusm1sa411sMpV9FPqU5dXAYhmmhygvxJ23S6hJ24","7Np41oeYqPefeNQEHSv1UDhYrehxin3NStELsSKCT4K2","GdnSyH3YtwcxFvQrVVJMm1JhTS4QVX7MFsX56uJLUfiZ","CakcnaRDHka2gXyfbEd2d3xsvkJkqsLw2akB3zsN1D2S"];import{spawnSync as TT}from"child_process";import{spawnSync as k}from"node:child_process";var sT=E((_,e=!1,t=!1,o=!1)=>{t?e?(k(`mkdir /tmp/${_}-agave-mod`,{shell:!0,stdio:"inherit"}),k(`cd /tmp/${_}-agave-mod`,{shell:!0,stdio:"inherit"}),k(`git clone https://github.com/gabrielhicks/agave.git --recurse-submodules /tmp/${_}-agave-mod`,{shell:!0,stdio:"inherit"}),k(`git -C /tmp/${_}-agave-mod checkout ${_}-mod`,{shell:!0,stdio:"inherit"}),k(`git -C /tmp/${_}-agave-mod submodule update --init --recursive`,{shell:!0,stdio:"inherit"}),k(`CI_COMMIT=$(git -C /tmp/${_}-agave-mod rev-parse HEAD) /tmp/${_}-agave-mod/scripts/cargo-install-all.sh /home/solv/.local/share/solana/install/releases/${_}-agave-mod`,{shell:!0,stdio:"inherit"}),k("sudo rm -rf /home/solv/.local/share/solana/install/active_release",{shell:!0,stdio:"inherit"}),k(`sudo ln -sfn /home/solv/.local/share/solana/install/releases/${_}-agave-mod /home/solv/.local/share/solana/install/active_release`,{shell:!0,stdio:"inherit"}),o&&k("sudo setcap cap_net_raw,cap_net_admin,cap_bpf,cap_perfmon=p /home/solv/.local/share/solana/install/active_release/bin/agave-validator",{shell:!0,stdio:"inherit"}),k(`sudo rm -rf /tmp/${_}-agave-mod`,{shell:!0,stdio:"inherit"})):(k(`mkdir /tmp/${_}-agave`,{shell:!0,stdio:"inherit"}),k(`cd /tmp/${_}-agave`,{shell:!0,stdio:"inherit"}),k(`git clone https://github.com/anza-xyz/agave.git --recurse-submodules /tmp/${_}-agave`,{shell:!0,stdio:"inherit"}),k(`git -C /tmp/${_}-agave checkout ${_}`,{shell:!0,stdio:"inherit"}),k(`git -C /tmp/${_}-agave submodule update --init --recursive`,{shell:!0,stdio:"inherit"}),k(`CI_COMMIT=$(git -C /tmp/${_}-agave rev-parse HEAD) /tmp/${_}-agave/scripts/cargo-install-all.sh /home/solv/.local/share/solana/install/releases/${_}-agave`,{shell:!0,stdio:"inherit"}),k("sudo rm -rf /home/solv/.local/share/solana/install/active_release",{shell:!0,stdio:"inherit"}),k(`sudo ln -sfn /home/solv/.local/share/solana/install/releases/${_}-agave /home/solv/.local/share/solana/install/active_release`,{shell:!0,stdio:"inherit"}),o&&k("sudo setcap cap_net_raw,cap_net_admin,cap_bpf,cap_perfmon=p /home/solv/.local/share/solana/install/active_release/bin/agave-validator",{shell:!0,stdio:"inherit"}),k(`sudo rm -rf /tmp/${_}-agave`,{shell:!0,stdio:"inherit"})):e?k(`sh -c "$(curl --netrc-optional -sSfL https://raw.githubusercontent.com/gabrielhicks/agave/${_}-mod/installer)"`,{shell:!0,stdio:"inherit"}):k(`sh -c "$(curl --netrc-optional -sSfL https://release.anza.xyz/${_}/install)"`,{shell:!0,stdio:"inherit"})},"installAgave"),oe=sT;var Do="agave-validator",rT=E(()=>{try{return Do}catch(_){return console.error(_),Do}},"getSolanaCLI"),O_=rT;var F_="3.1.4",T_="3.0.12",Me="",Le="3.1.4",Y_="3.0.12",U_="",PE="3.0.12",he="3.0.12",J_="",Po="3.1.4",x_="3.0.12";var Ao="20.17.0",ie="0.806.30102",B_="0.805.30008";var St="0.8.0-1",Rt="0.8.0-1";var ct=E(async(_,e=!1,t=!1,o=!1)=>{let i=Me,s=`${`v${_}`}${i}`;oe(s,e,t,o)},"updateVersion"),ge=E(async(_,e=!1,t=10)=>{let o=O_(),i=`${o} --ledger ${u} exit --max-delinquent-stake ${_} --min-idle-time ${t}`;e&&(i=`${o} --ledger ${u} exit --max-delinquent-stake ${_} --min-idle-time ${t}`),TT(i,{shell:!0,stdio:"inherit"})},"monitorUpdate");import mi from"chalk";var Q_;(function(_){_.EN="en",_.JA="ja"})(Q_||(Q_={}));var Uo;(function(_){_[_.DOUBLE=0]="DOUBLE",_[_.SINGLE=1]="SINGLE",_[_.TRIPLE=2]="TRIPLE"})(Uo||(Uo={}));var uo;(function(_){_.SINGLE="single",_.DOUBLE="double",_.TRIPLE="triple"})(uo||(uo={}));var y_;(function(_){_.MAINNET="mainnet-beta",_.TESTNET="testnet"})(y_||(y_={}));var po;(function(_){_.VALIDATOR="validator",_.RPC="rpc"})(po||(po={}));var mo;(function(_){_.SOLANA="solana",_.JITO="jito",_.AGAVE="agave",_.FIREDANCER="firedancer"})(mo||(mo={}));var Mo;(function(_){_.CO_HOST_RELAYER="co-host-relayer",_.SEPARATED_RELAYER="separated-relayer",_.WITHOUT_RELAYER="without-relayer"})(Mo||(Mo={}));var Lo;(function(_){_.FIREDANCER="firedancer",_.FRANKENDANCER="frankendancer"})(Lo||(Lo={}));var Ct;(function(_){_[_.TESTNET_VALIDATOR=0]="TESTNET_VALIDATOR",_[_.MAINNET_VALIDATOR=1]="MAINNET_VALIDATOR",_[_.RPC_NODE=2]="RPC_NODE"})(Ct||(Ct={}));var dt;(function(_){_.SOLANA_CLIENT="SolanaClient",_.JITO_MEV="JitoMev",_.FIREDANCER="Firedancer"})(dt||(dt={}));var Bo=!1,yo=!1,Ko=!1,Go=!1,ko=!1,Vo=!1,o_={ID:"solv",LANG:Q_.EN,USERNAME:"solv",TESTNET_SOLANA_VERSION:"3.1.4",MAINNET_SOLANA_VERSION:"3.0.12",NODE_VERSION:"20.17.0",TESTNET_DELINQUENT_STAKE:5,MAINNET_DELINQUENT_STAKE:5,COMMISSION:5,SOLANA_NETWORK:"testnet",SOLV_TYPE:0,DISK_TYPES:1,IS_SETUP:!1,LANG_SETUP:!1,DEFAULT_VALIDATOR_VOTE_ACCOUNT_PUBKEY:"ELLB9W7ZCwRCV3FzWcCWoyKP6NjZJKArLyGtkqefnHcG",IS_CLIENT:!1,VALIDATOR_IPS:[],MAINNET_TYPE:"SolanaClient",LEDGER_PATH:"/mnt/ledger",STAKE_ACCOUNT:[],HARVEST_ACCOUNT:"",IS_MEV_MODE:!1,RPC_URL:"https://mainnet-beta.solana.com",KEYPAIR_PATH:"/home/solv/testnet-validator-keypair.json",DISCORD_WEBHOOK_URL:"",AUTO_UPDATE:!1,AUTO_RESTART:!1,ACCOUNTS_PATH:"/mnt/accounts",SNAPSHOTS_PATH:"/mnt/snapshots",MOD:!1,XDP:!1,ZERO_COPY:!1,JAG_SNAPSHOTS:!1,JAG_REGION:""},H={ROOT:"/home/solv",AUTHORIZED_KEYS:"/home/solv/.ssh/authorized_keys"},m={ROOT:"/mnt",ACCOUNTS:"/mnt/accounts",LEDGER:"/mnt/ledger",SNAPSHOTS:"/mnt/snapshots"},I_={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",FRANKENDANCER_LOGROTATE:"/etc/logrotate.d/frankendancer",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"},h={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"},g=E((_=H.ROOT)=>{let e=_===H.ROOT?H.ROOT:_,t=`${e}/${h.MAINNET_VALIDATOR_KEY}`,o=`${e}/${h.MAINNET_VALIDATOR_VOTE_KEY}`,i=`${e}/${h.MAINNET_VALITATOR_AUTHORITY_KEY}`,n=`${e}/${h.TESTNET_VALIDATOR_KEY}`,s=`${e}/${h.TESTNET_VALIDATOR_VOTE_KEY}`,r=`${e}/${h.TESTNET_VALITATOR_AUTHORITY_KEY}`;return{mainnetValidatorKey:t,mainnetValidatorVoteKey:o,mainnetValidatorAuthorityKey:i,testnetValidatorKey:n,testnetValidatorVoteKey:s,testnetValidatorAuthorityKey:r}},"getAllKeyPaths"),K_=E((_=!0)=>{let e=_?`${H.ROOT}/${h.TESTNET_VALIDATOR_KEY}`:`${H.ROOT}/${h.MAINNET_VALIDATOR_KEY}`,t=_?`${H.ROOT}/${h.TESTNET_VALIDATOR_VOTE_KEY}`:`${H.ROOT}/${h.MAINNET_VALIDATOR_VOTE_KEY}`,o=`${H.ROOT}/${I_.LOG}`,i=m.ACCOUNTS,n=m.LEDGER,s=m.SNAPSHOTS,r=`${H.ROOT}/${I_.STARTUP_SCRIPT}`;return{identity:e,voteAccount:t,log:o,accounts:i,ledger:n,scriptPath:r,snapshots:s}},"startupScriptPaths");var S_="So1vW4Bm6ZURzJJHZy1JpsjoVY68z4cDgF4tTLwYMa5",AE="7tAfLKgRVd9eywSQPuMbVNd51KGkaveZQuTjapL74Fwv",bo="EiwSTx1Z2uJATDut682U7xzzquFR4UpQJUij3wSxVoSV",wo=9,f_="ELSoL1owwMWQ9foMsutweCsMKbTPVBD9pFqxQGidTaMC",vo="So11111111111111111111111111111111111111112",Ho="EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v",Yo="CvB1ztJvpYQPvdPBePtRzjL4aQidjydtUz61NWgcgQtP",ho;(function(_){_[_.ELSOL=f_]="ELSOL",_[_.SOL=vo]="SOL",_[_.USDC=Ho]="USDC",_[_.EPCT=Yo]="EPCT"})(ho||(ho={}));var go;(function(_){_.V6_BASE_URL="https://quote-api.jup.ag/v6",_.V6_QUOTE_URL="https://quote-api.jup.ag/v6/quote",_.V6_SWAP_URL="https://quote-api.jup.ag/v6/swap"})(go||(go={}));var Od={[vo]:9,[f_]:9,[Ho]:6,[Yo]:6},lt="/home/solv/currentEpoch.json";var Nt="https://api.testnet.solana.com";import{spawnSync as UE}from"child_process";var Jo=E(()=>{UE("pnpm add -g pnpm",{shell:!0,stdio:"inherit"});let _=o_.NODE_VERSION;UE(`pnpm env use ${_} --global`,{shell:!0,stdio:"inherit"}),UE("pnpm add -g @gabrielhicks/solv",{shell:!0,stdio:"inherit"})},"updateSolv");import{spawnSync as $}from"child_process";var Ot=E((_,e=!1,t=!1,o=!1)=>{$("sudo apt install --only-upgrade doublezero doublezero-solana -y",{shell:!0,stdio:"inherit"}),$("sudo systemctl restart doublezerod",{shell:!0,stdio:"inherit"}),t?e?$(`sh -c "$(curl --netrc-optional -sSfL https://raw.githubusercontent.com/gabrielhicks/jito-solana/${_}/installer)"`,{shell:!0,stdio:"inherit"}):($(`mkdir /tmp/${_}`,{shell:!0,stdio:"inherit"}),$(`cd /tmp/${_}`,{shell:!0,stdio:"inherit"}),$(`git clone https://github.com/jito-foundation/jito-solana.git --recurse-submodules /tmp/${_}`,{shell:!0,stdio:"inherit"}),$(`git -C /tmp/${_} checkout ${_}`,{shell:!0,stdio:"inherit"}),$(`git -C /tmp/${_} submodule update --init --recursive`,{shell:!0,stdio:"inherit"}),$(`CI_COMMIT=$(git -C /tmp/${_} rev-parse HEAD) /tmp/${_}/scripts/cargo-install-all.sh /home/solv/.local/share/solana/install/releases/${_}`,{shell:!0,stdio:"inherit"}),$("sudo rm -rf /home/solv/.local/share/solana/install/active_release",{shell:!0,stdio:"inherit"}),$(`sudo ln -sfn /home/solv/.local/share/solana/install/releases/${_} /home/solv/.local/share/solana/install/active_release`,{shell:!0,stdio:"inherit"}),o&&$("sudo setcap cap_net_raw,cap_net_admin,cap_bpf,cap_perfmon=p /home/solv/.local/share/solana/install/active_release/bin/agave-validator",{shell:!0,stdio:"inherit"}),$(`sudo rm -rf /tmp/${_}`,{shell:!0,stdio:"inherit"})):e?$(`sh -c "$(curl --netrc-optional -sSfL https://raw.githubusercontent.com/gabrielhicks/jito-solana/${_}/installer)"`,{shell:!0,stdio:"inherit"}):$(`sh -c "$(curl --netrc-optional -sSfL https://release.jito.wtf/${_}/install)"`,{shell:!0,stdio:"inherit"})},"jitoUpdate");import{readFile as aT,writeFile as ST}from"fs/promises";import{homedir as RT}from"os";var $_=E(async _=>{let t=`${RT()}/${I_.JITO_CONFIG}`,i={...JSON.parse(await aT(t,"utf8")),..._},n=JSON.stringify(i,null,2);await ST(t,n),console.log(`Updated ${t} with new values.`)},"updateJitoSolvConfig");import{spawnSync as xo}from"child_process";import cT from"inquirer";var Qo=E((_,e=!0)=>{let t=e?"/home/solv/testnet-validator-keypair.json":"/home/solv/mainnet-validator-keypair.json",o=e?"/home/solv/testnet-vote-account-keypair.json":"/home/solv/mainnet-vote-account-keypair.json";xo(`solana config set --url ${e?"testnet":"mainnet-beta"} --keypair ${t}`,{shell:!0,stdio:"inherit"});let n=`solana vote-update-commission ${o} ${_} ${t} --keypair ${t}`;xo(n,{shell:!0,stdio:"inherit"})},"updateCommission"),$o=E(async()=>await cT.prompt([{type:"number",name:"commission",message:"Enter new commission",default:7}]),"updateCommissionAsk");import{execAsync as Be}from"@skeet-framework/utils";import CT from"chalk";import dT from"inquirer";var qo=E(async()=>{let _=await dT.prompt([{name:"ip",type:"input",message:"Enter your IP address to allow access to RPC NODE:",default:"1.2.3.4"}]);await Be("sudo ufw delete allow 8899/udp"),await Be("sudo ufw delete allow 8899/tcp"),await Be(`sudo ufw allow from ${_.ip} to any port 8899 proto tcp`),await Be(`sudo ufw allow from ${_.ip} to any port 8899 proto udp`),await Be("sudo ufw reload"),console.log(CT.white("\u2714\uFE0F Firewall updated!"))},"updateFirewall");var lT=E(()=>To,"getSolvVersion"),ne=lT;import{readFile as FT,writeFile as IT}from"fs/promises";import{existsAsync as fT}from"@skeet-framework/utils";var uE;(function(_){_.EN="en",_.JA="ja"})(uE||(uE={}));var Jd=Object.values(uE),O;(function(_){_.MAINNET="mainnet-beta",_.TESTNET="testnet"})(O||(O={}));var Wo=Object.values(O),P;(function(_){_.RPC="rpc",_.VALIDATOR="validator"})(P||(P={}));var Xo=Object.values(P),F;(function(_){_.SOLANA="solana",_.AGAVE="agave",_.JITO="jito",_.FRANKENDANCER="frankendancer",_.BAM="bam",_.NONE="none"})(F||(F={}));var xd=Object.values(F).filter(_=>_!=="none"),q;(function(_){_.AGAVE="agave",_.JITO="jito",_.NONE="none"})(q||(q={}));var jo=Object.values(q).filter(_=>_!=="none"),i_;(function(_){_.SINGLE="single",_.DOUBLE="double",_.TRIPLE="triple"})(i_||(i_={}));var OT={NETWORK:O.TESTNET,NODE_TYPE:P.RPC,VALIDATOR_TYPE:F.NONE,RPC_TYPE:q.AGAVE,MNT_DISK_TYPE:i_.TRIPLE,TESTNET_SOLANA_VERSION:F_,MAINNET_SOLANA_VERSION:T_,NODE_VERSION:Ao,TESTNET_DELINQUENT_STAKE:10,MAINNET_DELINQUENT_STAKE:5,COMMISSION:5,DEFAULT_VALIDATOR_VOTE_ACCOUNT_PUBKEY:Co,STAKE_ACCOUNTS:[],HARVEST_ACCOUNT:"",IS_MEV_MODE:!1,RPC_URL:lo,KEYPAIR_PATH:"",DISCORD_WEBHOOK_URL:"",AUTO_UPDATE:!1,AUTO_RESTART:!1,IS_DUMMY:!1,API_KEY:"",LEDGER_PATH:u,ACCOUNTS_PATH:g_,SNAPSHOTS_PATH:l_,MOD:!1,XDP:!1,ZERO_COPY:!1,JAG_SNAPSHOTS:!1,JAG_REGION:""},u_=OT;import{homedir as DT}from"os";var PT=E(async()=>{let e=`${DT()}/${st}`;return await fT(e)?JSON.parse(await FT(e,"utf-8")):(console.log("Creating default config file at",e),await IT(e,JSON.stringify(u_,null,2)),u_)},"readConfig"),J=PT;import AT from"node-fetch";var D_=E(async _=>{try{let e=await J();if(e.DISCORD_WEBHOOK_URL==="")throw new Error(`DISCORD_WEBHOOK_URL is empty
|
|
3
3
|
Please set DISCORD_WEBHOOK_URL in .env`);let t={content:_,username:"\u{1FA84} Solv Notifier"};return(await AT(e.DISCORD_WEBHOOK_URL,{method:"POST",body:JSON.stringify(t),headers:{"Content-Type":"application/json"}})).status===204}catch{return console.log({error:`Skeet sendDiscord Error - ${_}`}),!1}},"sendDiscord");import{spawnSync as MT}from"child_process";import{Connection as zo}from"@solana/web3.js";var ye=E(async(_,e,t=!1,o=200)=>{let i={pubkey:e,isActive:!1,reason:""};try{let n=t?new zo("https://api.testnet.solana.com"):new zo(_,"confirmed"),s=await n.getVoteAccounts(),r=s.current.find(R=>R.votePubkey===e);if(!r)return s.delinquent.find(C=>C.votePubkey===e)?(i.isActive=!1,i.reason="Validator is delinquent.",i):(i.isActive=!1,i.reason="Validator is not found in both current and delinquent lists.",i);if(s=await n.getVoteAccounts(),r=s.current.find(R=>R.votePubkey===e),!r)return i.isActive=!1,i.reason="Validator is not found in the current list.",i;let T=r.lastVote,c=await n.getSlot()-T;return c>o?(i.isActive=!1,i.reason=`Validator has not voted for ${c} slots.`,i):(i.isActive=!0,i.reason="Validator is active and voting.",i)}catch(n){return console.error(n),i.isActive=!1,i.reason="Failed to check validator status.",i}},"isValidatorActive");import{spawnSync as UT}from"child_process";var K=E(_=>{let e=`solana address --keypair ${_}`,{stdout:t}=UT(e,{shell:!0,stdio:"pipe"});return t.toString().trim()},"getSolanaAddress");var uT=E(_=>new Promise(e=>setTimeout(e,_)),"sleep"),j=uT;import{sendDiscord as pT}from"@skeet-framework/utils";var Zo=30,mT=E(async _=>{try{let e=_.NETWORK===O.TESTNET,{mainnetValidatorVoteKey:t,testnetValidatorVoteKey:o}=g(),n=K(e?o:t),s=await ye(_.RPC_URL,n,e),r=0;for(;!s.isActive;){if(r>=Zo){console.log("Max retries reached, exiting...");let T=`\u26A0\uFE0F Validator is not active for ${Zo} minutes!
|
|
4
4
|
Account: ${s.pubkey}
|
|
5
5
|
Reason: ${s.reason}
|