On how to test the CLI will work properly when released.
-
Checking what are files to be published
pnpm publish --dry-run
-
Checking how the publish data looks like
| epoch vote_account apy_scientific total_active_lamports total_rewards_lamports validator_inflation_rewards stakers_inflation_rewards_lamports | |
| ----- -------------------------------------------- -------------- --------------------- ---------------------- --------------------------- ---------------------------------- | |
| 779 6H9J5xtcqGwh2hd2GpBHfvrnDicWk8GtvpnypH7piktA 4.81e+882 1000000 68123423142 <null> <null> | |
| 783 CiTYUYPAPHdcri5yEfsmqVcs54J6j8X1QaiFLgYqMVe 1.59e+394 8719484 1247374241 <null> <null> | |
| 783 ange1wwDfuSc5Row98UuqUp7AamCDGntfy16mnWSeUH 4.17e+01 1313949860150 31202838502 <null> <null> | |
| 783 Dd3TkbM6Yntz9ETLf7fmCME5RNW9yGwaMvpDhY4Exk1i 4.23e+27 4119303941 1716427973 |
| -- 827 | |
| SELECT * FROM solana.gov.fact_validators | |
| WHERE vote_pubkey = 'BT8LZUvQVwFHRGw2Dwv7UeqDUq7btfjegLpuz5bwgziD' and epoch = 827; | |
| -- EMPTY | |
| SELECT * FROM solana.gov.fact_vote_accounts | |
| WHERE vote_pubkey = 'BT8LZUvQVwFHRGw2Dwv7UeqDUq7btfjegLpuz5bwgziD' and epoch >= 823 and epoch <= 827 | |
| order by epoch desc; | |
| -- EPOCH VOTE_PUBKEY NODE_PUBKEY AUTHORIZED_VOTER AUTHORIZED_WITHDRAWER |
| SELECT * FROM solana.gov.fact_validators | |
| WHERE vote_pubkey = 'oDDiLXv87uRfbAB8PZthCtQyqof2Jomv7fpTeoBp6AY' and epoch >= 830 | |
| ORDER BY epoch DESC; | |
| EPOCH NODE_PUBKEY VOTE_PUBKEY ACTIVE_STAKE | |
| 840 HbPxQBkW4x3HaZsixZNQj3aUm8p5esRCjJieg4C9Jeyd oDDiLXv87uRfbAB8PZthCtQyqof2Jomv7fpTeoBp6AY 98717320 | |
| 839 HbPxQBkW4x3HaZsixZNQj3aUm8p5esRCjJieg4C9Jeyd oDDiLXv87uRfbAB8PZthCtQyqof2Jomv7fpTeoBp6AY 98717320 | |
| 836 HbPxQBkW4x3HaZsixZNQj3aUm8p5esRCjJieg4C9Jeyd oDDiLXv87uRfbAB8PZthCtQyqof2Jomv7fpTeoBp6AY 85485258112653 | |
| 835 HbPxQBkW4x3HaZsixZNQj3aUm8p5esRCjJieg4C9Jeyd oDDiLXv87uRfbAB8PZthCtQyqof2Jomv7fpTeoBp6AY 85485258112653 | |
| 834 5BdZZ16w5jqrqJXWiZSWL8MB6v8GPVdGp3EHGaGBfuzF oDDiLXv87uRfbAB8PZthCtQyqof2Jomv7fpTeoBp6AY 85485258112653 |
| // discriminator settlement [55, 11, 219, 33, 36, 136, 40, 182]: AD24AwEsvU5 | |
| curl $RPC_URL -X POST -H "Content-Type: application/json" -d ' | |
| { | |
| "jsonrpc": "2.0", | |
| "id": 1, | |
| "method": "getProgramAccounts", | |
| "params": [ | |
| "vBoNdEvzMrSai7is21XgVYik65mqtaKXuSdMBJ1xkW4", | |
| { | |
| "encoding": "base64", |
| DECLARE minEpoch INT64 DEFAULT 788; | |
| DECLARE maxEpoch INT64 DEFAULT 793; | |
| DECLARE epochsPerYear INT64 DEFAULT 183; | |
| DECLARE stakeAuthorities ARRAY<STRING> DEFAULT [ | |
| "STNi1NHDUi6Hvibvonawgze8fM83PFLeJhuGMEXyGps", | |
| "EX1Fs34ajye3BTMSjTkMdZ8P4hb99vQFWzmueqhKGpH6" | |
| ]; | |
| -- Numbers defined in institutional config subtracted from APY to define fee paid to Marinade and lamports left on validator | |
| DECLARE marinadeApyPercentFee DECIMAL DEFAULT 0; | |
| DECLARE validatorApyPercentRewards DECIMAL DEFAULT 0.5; |
| WITH selected_validators AS ( | |
| SELECT vote_account FROM UNNEST([ | |
| 'EdGevanAjM8a6Gg9KxBVrmVdZAUGAZ9xaVd7t9R4H2x', | |
| 'Haz7b47sZBpxh9SwggGndN3fAyNQ1S949BPdxWXS3ab6', | |
| 'juicQdAnksqZ5Yb8NQwCLjLWhykvXGktxnQCDvMe6Nx', | |
| '5iJDEVRi1nMLwKAWhYbEokZnvBAe15rgFaHGkggVEP9z', | |
| '51JBzSTU5rAM8gLAVQKgp4WoZerQcSqWC7BitBzgUNAm', | |
| 'LAKEuKJQYVFpf4vyjX7iuf9ajHo3k9FiyewYKf6VxPV', | |
| 'ErvMUdtMC7AX55zKdYSyy4DnWNCrTsWn5GwprSG7ocnx', | |
| 'FQwewNXahV7MiZcLpY6p1xhUs2acVGQ3U5Xxc7FzV571', -- blockdaemon |
On how to test the CLI will work properly when released.
Checking what are files to be published
pnpm publish --dry-runChecking how the publish data looks like
| export RPC_URL=... | |
| # --- Finding the list of blocks that were created in epoch | |
| SLOTS_PER_EPOCH=432000 | |
| START_BLOCK=302400000 | |
| EPOCH=$(($START_BLOCK/$SLOTS_PER_EPOCH)) | |
| echo "Epoch: $EPOCH" | |
| I=0 | |
| is_end=false | |
| while ! $is_end; do |
| -- block first/end: https://github.com/ochaloup/solana-list-epoch-boundaries | |
| WITH claim_settlements AS (select | |
| floor(block_id/432000) AS epoch, | |
| sum(pre_balances[0])- sum(post_balances[0]) as spending, | |
| from solana.core.fact_transactions, | |
| LATERAL FLATTEN(input => instructions) ixs, | |
| where 1=1 | |
| and ixs.value:programId = 'vBoNdEvzMrSai7is21XgVYik65mqtaKXuSdMBJ1xkW4' | |
| -- tx fee payer is at the first account key index 0 | |
| and account_keys[0]:pubkey = 'BNFeevU8uB8xtMSVXMDddzLQvPdKoV82S8dSWVv1KQre' |
| # gettting anchor discriminator (8 bytes at start of the Solana anchor generated account) | |
| git clone https://github.com/marinade-finance/liquid-staking-program | |
| cd liquid-staking-program | |
| anchor expand | |
| grep -e 'Discriminator.*TicketAccountData' -A 3 .anchor/expanded-macros/marinade-finance/marinade-finance-* | |
| > impl anchor_lang::Discriminator for TicketAccountData { | |
| > const DISCRIMINATOR: [u8; 8] = [133, 77, 18, 98, 211, 1, 231, 3]; |