diff --git a/README.md b/README.md index 74008e11..7ba7495e 100644 --- a/README.md +++ b/README.md @@ -4,7 +4,7 @@ Jito StakeNet is a decentralized Solana stake pool manager, blending Validator History and Steward Programs for secure, transparent validator management and autonomous stake operations. -## History Program +## Validator History Program The Validator History Program, a component of Jito StakeNet, is an on-chain record of verified Solana validator data, storing up to 512 epochs of history per validator. It takes fields accessible to the solana runtime like validator performance history, validator commission, MEV commission, as well as Gossip data like validator IP, version, and client type, and stores them all in a single account. It also contains some fields that currently require permissioned upload but are easily verifiable with a getVoteAccounts call, like total active stake per validator, stake rank, and superminority status. All these fields are stored in a single account per validator, the ValidatorHistory account. This enables all these disparate fields to be easily composed with in on chain programs, with a long lookback period and ease of access through the single account. @@ -30,17 +30,16 @@ Note that this is a `zero_copy` account, which allows us to initialize a lot of Harnessing on-chain validator metrics and network data, the Steward Program employs advanced algorithms to evaluate and rank validators. Automated keepers then execute a state machine to optimally allocate stake, maximizing network security and efficiency. -## Repo +On-chain Steward accounts for JitoSOL: -### Test +| Account | Address | +|-----------------|---------------------------------------------| +| Program | Stewardf95sJbmtcZsyagb2dg4Mo8eVQho8gpECvLx8 | +| Steward Config | jitoVjT9jRUyeXHzvCwzPgHj7yWNRhLcUoXtes4wtjv | +| Steward State | 9BAmGVLGxzqct6bkgjWmKSv3BFB6iKYXNBQp8GWG1LDY| +| Authority | 9eZbWiHsPRsxLSiHxzg2pkXsAuQMwAjQrda7C7e21Fw6| -Tests are in `tests/` written with solana-program-test. - -All tests can be run by running ( root directory ): - -```shell -./run_tests.sh -``` +## Build and Test ### Build @@ -53,6 +52,16 @@ Verify with [solana-verifiable-build](https://github.com/Ellipsis-Labs/solana-ve `solana-verify verify-from-repo -um --program-id HistoryJTGbKQD2mRgLZ3XhqHnN811Qpez8X9kCcGHoa https://github.com/jito-foundation/stakenet` +### Test + +Tests are in `tests/` written with solana-program-test. + +All tests can be run by running ( root directory ): + +```shell +./run_tests.sh +``` + ## Running Keeper Check out the [Keeper Bot Quick Start](./keeper-bot-quick-start.md) @@ -75,9 +84,40 @@ To see the historical state of a single validator history account: ### Steward -This CLI can be used to see the status of on-chain validator history data. +This CLI can be used to see the status of on-chain steward data. + +Build: + +```bash +cargo b -r --package steward-cli +``` -Build: `cargo b -r --package steward-cli` +To view the config: + +```bash +./target/release/steward-cli --program-id Stewardf95sJbmtcZsyagb2dg4Mo8eVQho8gpECvLx8 view-config --steward-config jitoVjT9jRUyeXHzvCwzPgHj7yWNRhLcUoXtes4wtjv +``` + +To view the state: +(Note: This fetches a lot of accounts, you may want to use your own RPC) + +```bash +./target/release/steward-cli --json-rpc-url YOUR_RPC view-state --steward-config jitoVjT9jRUyeXHzvCwzPgHj7yWNRhLcUoXtes4wtjv +``` + +To see the state of each validator in the context of the steward add `--verbose` + +```bash +./target/release/steward-cli --json-rpc-url YOUR_RPC view-state --steward-config jitoVjT9jRUyeXHzvCwzPgHj7yWNRhLcUoXtes4wtjv --verbose +``` + +> TIP: To use your own RPC configured in your solana config, use the following: +> `--json-rpc-url $(solana config get | grep "RPC URL" | awk '{print $3}')` To see all of the available commands: -`./target/release/steward-cli -h` + +```bash +./target/release/steward-cli -h +``` + +To see more info on the Steward CLI check out the [CLI notes](./utils/steward-cli/steward_cli_notes.md) diff --git a/keeper-bot-quick-start.md b/keeper-bot-quick-start.md index 118c2db7..4e944342 100644 --- a/keeper-bot-quick-start.md +++ b/keeper-bot-quick-start.md @@ -1,6 +1,6 @@ # Keeper Bot Quick-start -Below are the steps to configuring and running the Stakenet Keeper Bot. We recommend running the docker container. +Below are the steps to configuring and running the Stakenet Keeper Bot. We recommend running it as a docker container. ## Setup diff --git a/programs/steward/src/state/steward_state.rs b/programs/steward/src/state/steward_state.rs index 8e992ae1..a13a3c35 100644 --- a/programs/steward/src/state/steward_state.rs +++ b/programs/steward/src/state/steward_state.rs @@ -551,9 +551,10 @@ impl StewardState { .set(num_pool_validators, false)?; if marked_for_regular_removal { - self.validators_to_remove.set(index, false)?; + self.validators_to_remove.set(num_pool_validators, false)?; } else { - self.validators_for_immediate_removal.set(index, false)?; + self.validators_for_immediate_removal + .set(num_pool_validators, false)?; } Ok(()) diff --git a/utils/steward-cli/src/commands/info/view_state.rs b/utils/steward-cli/src/commands/info/view_state.rs index 00b21fd1..f84355e8 100644 --- a/utils/steward-cli/src/commands/info/view_state.rs +++ b/utils/steward-cli/src/commands/info/view_state.rs @@ -43,12 +43,17 @@ pub async fn command_view_state( }) .collect(); - // let raw_history_accounts = client - // .get_multiple_accounts(&history_accounts_to_fetch) - // .await?; + let raw_history_accounts: Vec> = { + let chunk_size = 100; + let mut all_accounts = Vec::new(); - let raw_history_accounts: Vec> = - vec![None; history_accounts_to_fetch.len()]; + for chunk in history_accounts_to_fetch.chunks(chunk_size) { + let accounts_chunk = client.get_multiple_accounts(chunk).await?; + all_accounts.extend(accounts_chunk); + } + + all_accounts + }; let all_history_map: HashMap> = vote_accounts .into_iter() @@ -74,135 +79,6 @@ pub async fn command_view_state( Ok(()) } -fn _print_verbose_state( - steward_state_account: &StewardStateAccount, - config_account: &Config, - validator_list_account: &ValidatorList, - validator_histories: &HashMap>, -) { - let mut formatted_string; - - let mut top_scores: Vec<(Pubkey, u32)> = vec![]; - - for (index, validator) in validator_list_account.validators.iter().enumerate() { - let history_info = validator_histories - .get(&validator.vote_account_address) - .and_then(|account| account.as_ref()) - .and_then(|account| { - ValidatorHistory::try_deserialize(&mut account.data.as_slice()).ok() - }); - - let vote_account = validator.vote_account_address; - let (stake_address, _) = find_stake_program_address( - &spl_stake_pool::id(), - &vote_account, - &config_account.stake_pool, - None, - ); - - let (transient_stake_address, _) = find_transient_stake_program_address( - &spl_stake_pool::id(), - &vote_account, - &config_account.stake_pool, - validator.transient_seed_suffix.into(), - ); - - let score_index = steward_state_account - .state - .sorted_score_indices - .iter() - .position(|&i| i == index as u16); - let yield_score_index = steward_state_account - .state - .sorted_yield_score_indices - .iter() - .position(|&i| i == index as u16); - - formatted_string = String::new(); - - formatted_string += &format!("Vote Account: {:?}\n", vote_account); - formatted_string += &format!("Stake Account: {:?}\n", stake_address); - formatted_string += &format!("Transient Stake Account: {:?}\n", transient_stake_address); - formatted_string += &format!( - "Validator Lamports: {:?}\n", - u64::from(validator.active_stake_lamports) - ); - formatted_string += &format!("Index: {:?}\n", index); - - formatted_string += &format!( - "Marked for removal: {:?}\n", - steward_state_account.state.validators_to_remove.get(index) - ); - formatted_string += &format!( - "Is Instant Unstake: {:?}\n", - steward_state_account.state.instant_unstake.get(index) - ); - formatted_string += &format!( - "Score: {:?}\n", - steward_state_account.state.scores.get(index) - ); - formatted_string += &format!( - "Yield Score: {:?}\n", - steward_state_account.state.yield_scores.get(index) - ); - formatted_string += &format!("Score Index: {:?}\n", score_index); - formatted_string += &format!("Yield Score Index: {:?}\n", yield_score_index); - - if let Some(history_info) = history_info { - formatted_string += &format!( - "\nValidator History Index: {:?}\n", - format!("{:?}", history_info.index) - ); - - formatted_string += &format!( - "Is blacklisted: {:?}\n", - format!( - "{:?}", - config_account - .validator_history_blacklist - .get_unsafe(history_info.index as usize) - ) - ); - } - - formatted_string += "\n"; - formatted_string += &format!( - "Active Lamports: {:?} ({:.2} ◎)\n", - u64::from(validator.active_stake_lamports), - u64::from(validator.active_stake_lamports) as f64 / 10f64.powf(9.), - ); - formatted_string += &format!( - "Transient Lamports: {:?} ({:.2} ◎)\n", - u64::from(validator.transient_stake_lamports), - u64::from(validator.transient_stake_lamports) as f64 / 10f64.powf(9.), - ); - - let status = match StakeStatus::try_from(validator.status).unwrap() { - StakeStatus::Active => "🟩 Active", - StakeStatus::DeactivatingAll => "🟨 Deactivating All", - StakeStatus::DeactivatingTransient => "🟨 Deactivating Transient", - StakeStatus::DeactivatingValidator => "🟥 Deactivating Validator", - StakeStatus::ReadyForRemoval => "🟥 Ready for Removal", - }; - formatted_string += &format!("Status: {}\n", status); - - formatted_string += "\n"; - - if let Some(score) = steward_state_account.state.scores.get(index) { - if *score != 0 { - top_scores.push((vote_account, *score)); - } - } - - println!("{}", formatted_string); - } - - top_scores.sort_by(|a, b| b.1.cmp(&a.1)); - top_scores.iter().for_each(|(vote_account, score)| { - println!("Vote Account: {:?} Score: {}", vote_account, score); - }); -} - fn _print_default_state( steward_config: &Pubkey, steward_state: &Pubkey, @@ -371,3 +247,148 @@ fn _print_default_state( println!("{}", formatted_string) } + +fn _print_verbose_state( + steward_state_account: &StewardStateAccount, + config_account: &Config, + validator_list_account: &ValidatorList, + validator_histories: &HashMap>, +) { + let mut formatted_string; + + let mut top_scores: Vec<(Pubkey, u32)> = vec![]; + + for (index, validator) in validator_list_account.validators.iter().enumerate() { + let history_info = validator_histories + .get(&validator.vote_account_address) + .and_then(|account| account.as_ref()) + .and_then(|account| { + ValidatorHistory::try_deserialize(&mut account.data.as_slice()).ok() + }); + + let vote_account = validator.vote_account_address; + let (stake_address, _) = find_stake_program_address( + &spl_stake_pool::id(), + &vote_account, + &config_account.stake_pool, + None, + ); + + let (transient_stake_address, _) = find_transient_stake_program_address( + &spl_stake_pool::id(), + &vote_account, + &config_account.stake_pool, + validator.transient_seed_suffix.into(), + ); + + let score_index = steward_state_account + .state + .sorted_score_indices + .iter() + .position(|&i| i == index as u16); + let yield_score_index = steward_state_account + .state + .sorted_yield_score_indices + .iter() + .position(|&i| i == index as u16); + + formatted_string = String::new(); + + formatted_string += &format!("Vote Account: {:?}\n", vote_account); + formatted_string += &format!("Stake Account: {:?}\n", stake_address); + formatted_string += &format!("Transient Stake Account: {:?}\n", transient_stake_address); + formatted_string += &format!( + "Validator Lamports: {:?}\n", + u64::from(validator.active_stake_lamports) + ); + formatted_string += &format!("Index: {:?}\n", index); + + formatted_string += &format!( + "Marked for removal: {:?}\n", + steward_state_account.state.validators_to_remove.get(index) + ); + formatted_string += &format!( + "Is Instant Unstake: {:?}\n", + steward_state_account.state.instant_unstake.get(index) + ); + formatted_string += &format!( + "Score: {:?}\n", + steward_state_account.state.scores.get(index) + ); + formatted_string += &format!( + "Yield Score: {:?}\n", + steward_state_account.state.yield_scores.get(index) + ); + formatted_string += &format!("Score Index: {:?}\n", score_index); + formatted_string += &format!("Yield Score Index: {:?}\n", yield_score_index); + + if let Some(history_info) = history_info { + formatted_string += &format!( + "\nValidator History Index: {:?}\n", + format!("{:?}", history_info.index) + ); + + formatted_string += &format!( + "Is blacklisted: {:?}\n", + format!( + "{:?}", + config_account + .validator_history_blacklist + .get_unsafe(history_info.index as usize) + ) + ); + } + + formatted_string += "\n"; + formatted_string += &format!( + "Active Lamports: {:?} ({:.2} ◎)\n", + u64::from(validator.active_stake_lamports), + u64::from(validator.active_stake_lamports) as f64 / 10f64.powf(9.), + ); + formatted_string += &format!( + "Transient Lamports: {:?} ({:.2} ◎)\n", + u64::from(validator.transient_stake_lamports), + u64::from(validator.transient_stake_lamports) as f64 / 10f64.powf(9.), + ); + + let status = match StakeStatus::try_from(validator.status).unwrap() { + StakeStatus::Active => "🟩 Active", + StakeStatus::DeactivatingAll => "🟨 Deactivating All", + StakeStatus::DeactivatingTransient => "🟨 Deactivating Transient", + StakeStatus::DeactivatingValidator => "🟥 Deactivating Validator", + StakeStatus::ReadyForRemoval => "🟥 Ready for Removal", + }; + formatted_string += &format!("Status: {}\n", status); + + formatted_string += "\n"; + + if let Some(score) = steward_state_account.state.scores.get(index) { + if *score != 0 { + top_scores.push((vote_account, *score)); + } + } + + println!("{}", formatted_string); + } + + println!("\nAll Ranked Validators ( {} ): \n", top_scores.len()); + println!("{:<45} : {}\n", "Vote Account", "Score"); + + top_scores.sort_by(|a, b| b.1.cmp(&a.1)); + top_scores.iter().for_each(|(vote_account, score)| { + let formatted_score = + format!("{}", score) + .chars() + .rev() + .enumerate() + .fold(String::new(), |acc, (i, c)| { + if i > 0 && i % 3 == 0 { + format!("{}_{}", c, acc) + } else { + format!("{}{}", c, acc) + } + }); + let vote_account = format!("{:?}", vote_account); + println!("{:<45} : {}", vote_account, formatted_score); + }); +} diff --git a/utils/steward-cli/steward_cli_notes.md b/utils/steward-cli/steward_cli_notes.md index 5a9baa5a..8992c91d 100644 --- a/utils/steward-cli/steward_cli_notes.md +++ b/utils/steward-cli/steward_cli_notes.md @@ -1,235 +1,230 @@ # Accounts -**Program** -`sssh4zkKhX8jXTNQz1xDHyGpygzgu2UhcRcUvZihBjP` +| Account | Address | +|-----------------|---------------------------------------------| +| Program | Stewardf95sJbmtcZsyagb2dg4Mo8eVQho8gpECvLx8 | +| Steward Config | jitoVjT9jRUyeXHzvCwzPgHj7yWNRhLcUoXtes4wtjv | +| Steward State | 9BAmGVLGxzqct6bkgjWmKSv3BFB6iKYXNBQp8GWG1LDY| +| Authority | 9eZbWiHsPRsxLSiHxzg2pkXsAuQMwAjQrda7C7e21Fw6| -**Authority** -`aaaDerwdMyzNkoX1aSoTi3UtFe2W45vh5wCgQNhsjF8` +# CLI Commands -**Steward Config** -`35mMfFNiui7hcHy6xHTz11Q6YukbhH9qQgYR5dhWAQQH` +## Permissionless Commands -**Stake Pool** -`3DuPtyTAKrxKfHkSPZ5fqCayMcGru1BarAKKTfGDeo2j` - -**Staker** -`4m64H5TbwAGtZVnxaGAVoTSwjZGV8BCLKRPr8agKQv4Z` - -**State** -`Hmctj1WrZnBx3cmJ8njeid6zKMGT8XHp8C6UkojSF72C` - -# Initial Commands - -## Create Steward +### View Config ```bash -cargo run -- --program-id sssh4zkKhX8jXTNQz1xDHyGpygzgu2UhcRcUvZihBjP init-steward \ - --authority-keypair-path ../../credentials/stakenet_test.json \ - --steward-config-keypair-path ../../credentials/steward_config.json \ - --stake-pool 3DuPtyTAKrxKfHkSPZ5fqCayMcGru1BarAKKTfGDeo2j \ - --mev-commission-range 10 \ - --epoch-credits-range 30 \ - --commission-range 30 \ - --mev-commission-bps-threshold 1000 \ - --commission-threshold 5 \ - --historical-commission-threshold 50 \ - --scoring-delinquency-threshold-ratio 0.85 \ - --instant-unstake-delinquency-threshold-ratio 0.70 \ - --num-delegation-validators 200 \ - --scoring-unstake-cap-bps 750 \ - --instant-unstake-cap-bps 1000 \ - --stake-deposit-unstake-cap-bps 1000 \ - --compute-score-slot-range 50000 \ - --instant-unstake-epoch-progress 0.50 \ - --instant-unstake-inputs-epoch-progress 0.50 \ - --num-epochs-between-scoring 3 \ - --minimum-stake-lamports 100000000000 \ - --minimum-voting-epochs 5 +cargo run -- --program-id Stewardf95sJbmtcZsyagb2dg4Mo8eVQho8gpECvLx8 view-config --steward-config jitoVjT9jRUyeXHzvCwzPgHj7yWNRhLcUoXtes4wtjv ``` -## Create State +### View State ```bash -cargo run -- --program-id sssh4zkKhX8jXTNQz1xDHyGpygzgu2UhcRcUvZihBjP realloc-state --authority-keypair-path ../../credentials/stakenet_test.json --steward-config 35mMfFNiui7hcHy6xHTz11Q6YukbhH9qQgYR5dhWAQQH +cargo run -- --json-rpc-url $(solana config get | grep "RPC URL" | awk '{print $3}') view-state --steward-config jitoVjT9jRUyeXHzvCwzPgHj7yWNRhLcUoXtes4wtjv ``` -## Update Config +### View State Per Validator ```bash -cargo run -- --program-id sssh4zkKhX8jXTNQz1xDHyGpygzgu2UhcRcUvZihBjP update-config \ - --authority-keypair-path ../../credentials/stakenet_test.json \ - --steward-config 35mMfFNiui7hcHy6xHTz11Q6YukbhH9qQgYR5dhWAQQH \ - --num-epochs-between-scoring 3 +cargo run -- --program-id Stewardf95sJbmtcZsyagb2dg4Mo8eVQho8gpECvLx8 --json-rpc-url $(solana config get | grep "RPC URL" | awk '{print $3}') view-state --steward-config jitoVjT9jRUyeXHzvCwzPgHj7yWNRhLcUoXtes4wtjv --verbose ``` -## Update Authority - -`blacklist` | `admin` | `parameters` +### View Next Index To Remove ```bash -cargo run -- --program-id sssh4zkKhX8jXTNQz1xDHyGpygzgu2UhcRcUvZihBjP update-authority blacklist \ - --authority-keypair-path ../../credentials/stakenet_test.json \ - --steward-config 35mMfFNiui7hcHy6xHTz11Q6YukbhH9qQgYR5dhWAQQH \ - --new-authority aaaDerwdMyzNkoX1aSoTi3UtFe2W45vh5wCgQNhsjF8 +cargo run -- --program-id Stewardf95sJbmtcZsyagb2dg4Mo8eVQho8gpECvLx8 view-next-index-to-remove --steward-config jitoVjT9jRUyeXHzvCwzPgHj7yWNRhLcUoXtes4wtjv ``` -## Set Staker +### Auto Remove Validator ```bash -cargo run -- --program-id sssh4zkKhX8jXTNQz1xDHyGpygzgu2UhcRcUvZihBjP set-staker \ - --authority-keypair-path ../../credentials/stakenet_test.json \ - --steward-config 35mMfFNiui7hcHy6xHTz11Q6YukbhH9qQgYR5dhWAQQH +cargo run -- --program-id Stewardf95sJbmtcZsyagb2dg4Mo8eVQho8gpECvLx8 auto-remove-validator-from-pool --steward-config jitoVjT9jRUyeXHzvCwzPgHj7yWNRhLcUoXtes4wtjv --payer-keypair-path ../../credentials/stakenet_test.json --validator-index-to-remove 1397 ``` -## Revert Staker +### Auto Add Validator ```bash -cargo run -- --program-id sssh4zkKhX8jXTNQz1xDHyGpygzgu2UhcRcUvZihBjP revert-staker \ - --authority-keypair-path ../../credentials/stakenet_test.json \ - --steward-config 35mMfFNiui7hcHy6xHTz11Q6YukbhH9qQgYR5dhWAQQH +cargo run -- --program-id Stewardf95sJbmtcZsyagb2dg4Mo8eVQho8gpECvLx8 auto-add-validator-from-pool --steward-config jitoVjT9jRUyeXHzvCwzPgHj7yWNRhLcUoXtes4wtjv --payer-keypair-path ../../credentials/stakenet_test.json --vote-account 4m64H5TbwAGtZVnxaGAVoTSwjZGV8BCLKRPr8agKQv4Z ``` -## Pause +### Manually Update All Vote Accounts ```bash -cargo run -- --program-id sssh4zkKhX8jXTNQz1xDHyGpygzgu2UhcRcUvZihBjP pause \ - --authority-keypair-path ../../credentials/stakenet_test.json \ - --steward-config 35mMfFNiui7hcHy6xHTz11Q6YukbhH9qQgYR5dhWAQQH --print-tx +cargo run -- --program-id Stewardf95sJbmtcZsyagb2dg4Mo8eVQho8gpECvLx8 manually-copy-all-vote-accounts --steward-config jitoVjT9jRUyeXHzvCwzPgHj7yWNRhLcUoXtes4wtjv --payer-keypair-path ../../credentials/stakenet_test.json --priority-fee 300000 ``` -## Resume +## Manually Update Vote Account ```bash -cargo run -- --program-id sssh4zkKhX8jXTNQz1xDHyGpygzgu2UhcRcUvZihBjP resume \ - --authority-keypair-path ../../credentials/stakenet_test.json \ - --steward-config 35mMfFNiui7hcHy6xHTz11Q6YukbhH9qQgYR5dhWAQQH --print-tx +cargo run -- --program-id Stewardf95sJbmtcZsyagb2dg4Mo8eVQho8gpECvLx8 manually-copy-vote-account --steward-config jitoVjT9jRUyeXHzvCwzPgHj7yWNRhLcUoXtes4wtjv --payer-keypair-path ../../credentials/stakenet_test.json --validator-index-to-update 1 ``` -## Reset State +### Manually Remove Validator ```bash -cargo run -- --program-id sssh4zkKhX8jXTNQz1xDHyGpygzgu2UhcRcUvZihBjP reset-state --steward-config 35mMfFNiui7hcHy6xHTz11Q6YukbhH9qQgYR5dhWAQQH --authority-keypair-path ../../credentials/stakenet_test.json +cargo run -- --program-id Stewardf95sJbmtcZsyagb2dg4Mo8eVQho8gpECvLx8 manually-remove-validator --steward-config jitoVjT9jRUyeXHzvCwzPgHj7yWNRhLcUoXtes4wtjv --authority-keypair-path ../../credentials/stakenet_test.json --validator-index-to-remove 0 ``` -## View Config +## Remove Bad Validators ```bash -cargo run -- --program-id Stewardf95sJbmtcZsyagb2dg4Mo8eVQho8gpECvLx8 view-config --steward-config jitoVjT9jRUyeXHzvCwzPgHj7yWNRhLcUoXtes4wtjv +cargo run -- --program-id Stewardf95sJbmtcZsyagb2dg4Mo8eVQho8gpECvLx8 remove-bad-validators --steward-config jitoVjT9jRUyeXHzvCwzPgHj7yWNRhLcUoXtes4wtjv --payer-keypair-path ../../credentials/stakenet_test.json ``` -## View State +## Permissionless Cranks + +## Crank Epoch Maintenance ```bash -cargo run -- --json-rpc-url $(solana config get | grep "RPC URL" | awk '{print $3}') view-state --steward-config jitoVjT9jRUyeXHzvCwzPgHj7yWNRhLcUoXtes4wtjv +cargo run -- --program-id Stewardf95sJbmtcZsyagb2dg4Mo8eVQho8gpECvLx8 crank-epoch-maintenance --steward-config jitoVjT9jRUyeXHzvCwzPgHj7yWNRhLcUoXtes4wtjv --payer-keypair-path ../../credentials/stakenet_test.json ``` -## View State Per Validator +## Crank Compute Score ```bash -cargo run -- --program-id Stewardf95sJbmtcZsyagb2dg4Mo8eVQho8gpECvLx8 --json-rpc-url $(solana config get | grep "RPC URL" | awk '{print $3}') view-state --verbose --steward-config jitoVjT9jRUyeXHzvCwzPgHj7yWNRhLcUoXtes4wtjv +cargo run -- --program-id Stewardf95sJbmtcZsyagb2dg4Mo8eVQho8gpECvLx8 crank-compute-score --steward-config jitoVjT9jRUyeXHzvCwzPgHj7yWNRhLcUoXtes4wtjv --payer-keypair-path ../../credentials/stakenet_test.json ``` -## View Next Index To Remove +## Crank Compute Delegations ```bash -cargo run -- --program-id sssh4zkKhX8jXTNQz1xDHyGpygzgu2UhcRcUvZihBjP view-next-index-to-remove --steward-config 35mMfFNiui7hcHy6xHTz11Q6YukbhH9qQgYR5dhWAQQH +cargo run -- --program-id Stewardf95sJbmtcZsyagb2dg4Mo8eVQho8gpECvLx8 crank-compute-delegations --steward-config jitoVjT9jRUyeXHzvCwzPgHj7yWNRhLcUoXtes4wtjv --payer-keypair-path ../../credentials/stakenet_test.json ``` -## Add To Blacklist +## Crank Idle ```bash -cargo run -- --program-id sssh4zkKhX8jXTNQz1xDHyGpygzgu2UhcRcUvZihBjP add-to-blacklist --steward-config 35mMfFNiui7hcHy6xHTz11Q6YukbhH9qQgYR5dhWAQQH --authority-keypair-path ../../credentials/stakenet_test.json --validator-history-index-to-blacklist 2168 +cargo run -- --program-id Stewardf95sJbmtcZsyagb2dg4Mo8eVQho8gpECvLx8 crank-idle --steward-config jitoVjT9jRUyeXHzvCwzPgHj7yWNRhLcUoXtes4wtjv --payer-keypair-path ../../credentials/stakenet_test.json ``` -## Remove From Blacklist +## Crank Compute Instant Unstake ```bash -cargo run -- --program-id sssh4zkKhX8jXTNQz1xDHyGpygzgu2UhcRcUvZihBjP remove-from-blacklist --steward-config 35mMfFNiui7hcHy6xHTz11Q6YukbhH9qQgYR5dhWAQQH --authority-keypair-path ../../credentials/stakenet_test.json --validator-history-index-to-deblacklist 2168 +cargo run -- --program-id Stewardf95sJbmtcZsyagb2dg4Mo8eVQho8gpECvLx8 crank-compute-instant-unstake --steward-config jitoVjT9jRUyeXHzvCwzPgHj7yWNRhLcUoXtes4wtjv --payer-keypair-path ../../credentials/stakenet_test.json ``` -## Auto Remove Validator +## Crank Rebalance ```bash -cargo run -- --program-id sssh4zkKhX8jXTNQz1xDHyGpygzgu2UhcRcUvZihBjP auto-remove-validator-from-pool --steward-config 35mMfFNiui7hcHy6xHTz11Q6YukbhH9qQgYR5dhWAQQH --payer-keypair-path ../../credentials/stakenet_test.json --validator-index-to-remove 1397 +cargo run -- --program-id Stewardf95sJbmtcZsyagb2dg4Mo8eVQho8gpECvLx8 crank-rebalance --steward-config jitoVjT9jRUyeXHzvCwzPgHj7yWNRhLcUoXtes4wtjv --payer-keypair-path ../../credentials/stakenet_test.json ``` -## Auto Add Validator +## Crank Steward ```bash -cargo run -- --program-id sssh4zkKhX8jXTNQz1xDHyGpygzgu2UhcRcUvZihBjP auto-add-validator-from-pool --steward-config 35mMfFNiui7hcHy6xHTz11Q6YukbhH9qQgYR5dhWAQQH --payer-keypair-path ../../credentials/stakenet_test.json --vote-account 4m64H5TbwAGtZVnxaGAVoTSwjZGV8BCLKRPr8agKQv4Z +cargo run -- --json-rpc-url $(solana config get | grep "RPC URL" | awk '{print $3}') crank-steward --steward-config jitoVjT9jRUyeXHzvCwzPgHj7yWNRhLcUoXtes4wtjv --payer-keypair-path ../../credentials/stakenet_test.json --priority-fee 200000 ``` -## Manually Update Vote Account +## Privileged Commands + +### Create Steward ```bash -cargo run -- --program-id sssh4zkKhX8jXTNQz1xDHyGpygzgu2UhcRcUvZihBjP manually-copy-vote-account --steward-config 35mMfFNiui7hcHy6xHTz11Q6YukbhH9qQgYR5dhWAQQH --payer-keypair-path ../../credentials/stakenet_test.json --validator-index-to-update 1 +cargo run -- --program-id Stewardf95sJbmtcZsyagb2dg4Mo8eVQho8gpECvLx8 init-steward \ + --authority-keypair-path ../../credentials/stakenet_test.json \ + --steward-config-keypair-path ../../credentials/steward_config.json \ + --stake-pool 3DuPtyTAKrxKfHkSPZ5fqCayMcGru1BarAKKTfGDeo2j \ + --mev-commission-range 10 \ + --epoch-credits-range 30 \ + --commission-range 30 \ + --mev-commission-bps-threshold 1000 \ + --commission-threshold 5 \ + --historical-commission-threshold 50 \ + --scoring-delinquency-threshold-ratio 0.85 \ + --instant-unstake-delinquency-threshold-ratio 0.70 \ + --num-delegation-validators 200 \ + --scoring-unstake-cap-bps 750 \ + --instant-unstake-cap-bps 1000 \ + --stake-deposit-unstake-cap-bps 1000 \ + --compute-score-slot-range 50000 \ + --instant-unstake-epoch-progress 0.50 \ + --instant-unstake-inputs-epoch-progress 0.50 \ + --num-epochs-between-scoring 3 \ + --minimum-stake-lamports 100000000000 \ + --minimum-voting-epochs 5 ``` -## Manually Update All Vote Accounts +### Realloc State ```bash -cargo run -- --program-id Stewardf95sJbmtcZsyagb2dg4Mo8eVQho8gpECvLx8 manually-copy-all-vote-accounts --steward-config jitoVjT9jRUyeXHzvCwzPgHj7yWNRhLcUoXtes4wtjv --payer-keypair-path ../../credentials/stakenet_test.json --priority-fee 300000 +cargo run -- --program-id Stewardf95sJbmtcZsyagb2dg4Mo8eVQho8gpECvLx8 realloc-state --authority-keypair-path ../../credentials/stakenet_test.json --steward-config jitoVjT9jRUyeXHzvCwzPgHj7yWNRhLcUoXtes4wtjv ``` -## Manually Remove Validator +### Update Config ```bash -cargo run -- --program-id sssh4zkKhX8jXTNQz1xDHyGpygzgu2UhcRcUvZihBjP manually-remove-validator --steward-config 35mMfFNiui7hcHy6xHTz11Q6YukbhH9qQgYR5dhWAQQH --authority-keypair-path ../../credentials/stakenet_test.json --validator-index-to-remove 0 +cargo run -- --program-id Stewardf95sJbmtcZsyagb2dg4Mo8eVQho8gpECvLx8 update-config \ + --authority-keypair-path ../../credentials/stakenet_test.json \ + --steward-config jitoVjT9jRUyeXHzvCwzPgHj7yWNRhLcUoXtes4wtjv \ + --num-epochs-between-scoring 3 ``` -## Close Steward +### Update Authority + +`blacklist` | `admin` | `parameters` ```bash -cargo run -- --program-id sssh4zkKhX8jXTNQz1xDHyGpygzgu2UhcRcUvZihBjP close-steward --steward-config 35mMfFNiui7hcHy6xHTz11Q6YukbhH9qQgYR5dhWAQQH --authority-keypair-path ../../credentials/stakenet_test.json +cargo run -- --program-id Stewardf95sJbmtcZsyagb2dg4Mo8eVQho8gpECvLx8 update-authority blacklist \ + --authority-keypair-path ../../credentials/stakenet_test.json \ + --steward-config jitoVjT9jRUyeXHzvCwzPgHj7yWNRhLcUoXtes4wtjv \ + --new-authority aaaDerwdMyzNkoX1aSoTi3UtFe2W45vh5wCgQNhsjF8 ``` -## Remove Bad Validators +### Set Staker ```bash -cargo run -- --program-id sssh4zkKhX8jXTNQz1xDHyGpygzgu2UhcRcUvZihBjP remove-bad-validators --steward-config 35mMfFNiui7hcHy6xHTz11Q6YukbhH9qQgYR5dhWAQQH --payer-keypair-path ../../credentials/stakenet_test.json +cargo run -- --program-id Stewardf95sJbmtcZsyagb2dg4Mo8eVQho8gpECvLx8 set-staker \ + --authority-keypair-path ../../credentials/stakenet_test.json \ + --steward-config jitoVjT9jRUyeXHzvCwzPgHj7yWNRhLcUoXtes4wtjv ``` -## Crank Epoch Maintenance +### Revert Staker ```bash -cargo run -- --program-id sssh4zkKhX8jXTNQz1xDHyGpygzgu2UhcRcUvZihBjP crank-epoch-maintenance --steward-config 35mMfFNiui7hcHy6xHTz11Q6YukbhH9qQgYR5dhWAQQH --payer-keypair-path ../../credentials/stakenet_test.json +cargo run -- --program-id Stewardf95sJbmtcZsyagb2dg4Mo8eVQho8gpECvLx8 revert-staker \ + --authority-keypair-path ../../credentials/stakenet_test.json \ + --steward-config jitoVjT9jRUyeXHzvCwzPgHj7yWNRhLcUoXtes4wtjv ``` -## Crank Compute Score +### Pause ```bash -cargo run -- --program-id sssh4zkKhX8jXTNQz1xDHyGpygzgu2UhcRcUvZihBjP crank-compute-score --steward-config 35mMfFNiui7hcHy6xHTz11Q6YukbhH9qQgYR5dhWAQQH --payer-keypair-path ../../credentials/stakenet_test.json +cargo run -- --program-id Stewardf95sJbmtcZsyagb2dg4Mo8eVQho8gpECvLx8 pause \ + --authority-keypair-path ../../credentials/stakenet_test.json \ + --steward-config jitoVjT9jRUyeXHzvCwzPgHj7yWNRhLcUoXtes4wtjv --print-tx ``` -## Crank Compute Delegations +### Resume ```bash -cargo run -- --program-id sssh4zkKhX8jXTNQz1xDHyGpygzgu2UhcRcUvZihBjP crank-compute-delegations --steward-config 35mMfFNiui7hcHy6xHTz11Q6YukbhH9qQgYR5dhWAQQH --payer-keypair-path ../../credentials/stakenet_test.json +cargo run -- --program-id Stewardf95sJbmtcZsyagb2dg4Mo8eVQho8gpECvLx8 resume \ + --authority-keypair-path ../../credentials/stakenet_test.json \ + --steward-config jitoVjT9jRUyeXHzvCwzPgHj7yWNRhLcUoXtes4wtjv --print-tx ``` -## Crank Idle +### Reset State ```bash -cargo run -- --program-id sssh4zkKhX8jXTNQz1xDHyGpygzgu2UhcRcUvZihBjP crank-idle --steward-config 35mMfFNiui7hcHy6xHTz11Q6YukbhH9qQgYR5dhWAQQH --payer-keypair-path ../../credentials/stakenet_test.json +cargo run -- --program-id Stewardf95sJbmtcZsyagb2dg4Mo8eVQho8gpECvLx8 reset-state --steward-config jitoVjT9jRUyeXHzvCwzPgHj7yWNRhLcUoXtes4wtjv --authority-keypair-path ../../credentials/stakenet_test.json ``` -## Crank Compute Instant Unstake +### Add To Blacklist ```bash -cargo run -- --program-id sssh4zkKhX8jXTNQz1xDHyGpygzgu2UhcRcUvZihBjP crank-compute-instant-unstake --steward-config 35mMfFNiui7hcHy6xHTz11Q6YukbhH9qQgYR5dhWAQQH --payer-keypair-path ../../credentials/stakenet_test.json +cargo run -- --program-id Stewardf95sJbmtcZsyagb2dg4Mo8eVQho8gpECvLx8 add-to-blacklist --steward-config jitoVjT9jRUyeXHzvCwzPgHj7yWNRhLcUoXtes4wtjv --authority-keypair-path ../../credentials/stakenet_test.json --validator-history-index-to-blacklist 2168 ``` -## Crank Rebalance +### Remove From Blacklist ```bash -cargo run -- --program-id sssh4zkKhX8jXTNQz1xDHyGpygzgu2UhcRcUvZihBjP crank-rebalance --steward-config 35mMfFNiui7hcHy6xHTz11Q6YukbhH9qQgYR5dhWAQQH --payer-keypair-path ../../credentials/stakenet_test.json +cargo run -- --program-id Stewardf95sJbmtcZsyagb2dg4Mo8eVQho8gpECvLx8 remove-from-blacklist --steward-config jitoVjT9jRUyeXHzvCwzPgHj7yWNRhLcUoXtes4wtjv --authority-keypair-path ../../credentials/stakenet_test.json --validator-history-index-to-deblacklist 2168 ``` -## Crank Steward +## Close Steward ```bash -cargo run -- --json-rpc-url $(solana config get | grep "RPC URL" | awk '{print $3}') crank-steward --steward-config jitoVjT9jRUyeXHzvCwzPgHj7yWNRhLcUoXtes4wtjv --payer-keypair-path ../../credentials/stakenet_test.json --priority-fee 200000 +cargo run -- --program-id Stewardf95sJbmtcZsyagb2dg4Mo8eVQho8gpECvLx8 close-steward --steward-config jitoVjT9jRUyeXHzvCwzPgHj7yWNRhLcUoXtes4wtjv --authority-keypair-path ../../credentials/stakenet_test.json ``` # Deploy and Upgrade @@ -238,11 +233,12 @@ cargo run -- --json-rpc-url $(solana config get | grep "RPC URL" | awk '{print $ - make sure your configured keypair is `aaaDerwdMyzNkoX1aSoTi3UtFe2W45vh5wCgQNhsjF8` - create a new keypair: `solana-keygen new -o credentials/temp-buffer.json` - use anchor `0.30.0`: `avm install 0.30.0 && avm use 0.30.0` +- make sure your configured keypair is program authority - build .so file: `anchor build --no-idl` - Write to buffer: `solana program write-buffer --use-rpc --buffer credentials/temp-buffer.json --url $(solana config get | grep "RPC URL" | awk '{print $3}') --with-compute-unit-price 10000 --max-sign-attempts 10000 target/deploy/jito_steward.so --keypair credentials/stakenet_test.json` -- Upgrade: `solana program upgrade $(solana address --keypair credentials/temp-buffer.json) sssh4zkKhX8jXTNQz1xDHyGpygzgu2UhcRcUvZihBjP --keypair credentials/stakenet_test.json --url $(solana config get | grep "RPC URL" | awk '{print $3}')` +- Upgrade: `solana program upgrade $(solana address --keypair credentials/temp-buffer.json) Stewardf95sJbmtcZsyagb2dg4Mo8eVQho8gpECvLx8 --keypair credentials/stakenet_test.json --url $(solana config get | grep "RPC URL" | awk '{print $3}')` - Close Buffers: `solana program close --buffers --keypair credentials/stakenet_test.json` -- Upgrade Program Size: `solana program extend sssh4zkKhX8jXTNQz1xDHyGpygzgu2UhcRcUvZihBjP 1000000 --keypair credentials/stakenet_test.json --url $(solana config get | grep "RPC URL" | awk '{print $3}')` +- Upgrade Program Size: `solana program extend Stewardf95sJbmtcZsyagb2dg4Mo8eVQho8gpECvLx8 1000000 --keypair credentials/stakenet_test.json --url $(solana config get | grep "RPC URL" | awk '{print $3}')` # Initial Parameters @@ -268,26 +264,6 @@ MINIMUM_STAKE_LAMPORTS=100000000000 MINIMUM_VOTING_EPOCHS=5 ``` -# Testing - -```rust -debug_send_single_transaction(client, &Arc::new(authority), &configured_ix, Some(true)).await?; -``` - -```bash -Vote Account: 6VSu1wCkeugWdSB3ZgCCFSAttu5XTuSWVRD1vJVPVQXq -Stake Account: 2kdoEDkHqtVVQXghLEpxRjBQrKE73roJP525EBXEBtWZ -Transient Stake Account: MPyP83sm5fNBXAYaAxqPsURsEoaDn7P5L7rs4dBKwTm -Validator Lamports: 3285712 -Index: 1737 -Is Blacklisted: Ok(false) -Is Instant Unstake: Ok(true) -Score: Some(0) -Yield Score: Some(872581150) -Score Index: Some(307) -Yield Score Index: Some(1142) -``` - # Getting Ready to Merge ```bash diff --git a/utils/validator-history-cli/run.txt b/utils/validator-history-cli/run.txt deleted file mode 100644 index 7e983868..00000000 --- a/utils/validator-history-cli/run.txt +++ /dev/null @@ -1,134 +0,0 @@ -History for validator AdtBv6jyEjY74XhkxZkowMuGfV1r58j44WCRyeToic99 | Validator History Account 4cGWJhcJPgiCn5rJ2BQaxcWLQg5enuJ4eRyBU958qASd -Epoch: 500 | Commission: 10 | Epoch Credits: 411507 | MEV Commission: [NULL] | MEV Earned: [NULL] | Stake: 67986503130148 | Rank: [NULL] | Superminority: [NULL] | IP: 173.231.55.190 | Client Type: [NULL] | Client Version: 1.16.12 | Last Updated: [NULL] -Epoch: 501 | Commission: 10 | Epoch Credits: 408668 | MEV Commission: [NULL] | MEV Earned: [NULL] | Stake: 67758085222829 | Rank: [NULL] | Superminority: [NULL] | IP: 173.231.55.190 | Client Type: [NULL] | Client Version: 1.16.13 | Last Updated: [NULL] -Epoch: 502 | Commission: 10 | Epoch Credits: 394442 | MEV Commission: [NULL] | MEV Earned: [NULL] | Stake: 66842305801682 | Rank: [NULL] | Superminority: [NULL] | IP: 173.231.55.190 | Client Type: [NULL] | Client Version: 1.16.13 | Last Updated: [NULL] -Epoch: 503 | Commission: 10 | Epoch Credits: 408120 | MEV Commission: [NULL] | MEV Earned: [NULL] | Stake: 66868577860089 | Rank: [NULL] | Superminority: [NULL] | IP: 173.231.55.190 | Client Type: [NULL] | Client Version: 1.16.13 | Last Updated: [NULL] -Epoch: 504 | Commission: 10 | Epoch Credits: 402182 | MEV Commission: [NULL] | MEV Earned: [NULL] | Stake: 68461871623699 | Rank: [NULL] | Superminority: [NULL] | IP: 173.231.55.190 | Client Type: [NULL] | Client Version: 1.16.13 | Last Updated: [NULL] -Epoch: 505 | Commission: 10 | Epoch Credits: 414883 | MEV Commission: [NULL] | MEV Earned: [NULL] | Stake: 67593088373667 | Rank: [NULL] | Superminority: [NULL] | IP: 173.231.55.190 | Client Type: [NULL] | Client Version: 1.16.13 | Last Updated: [NULL] -Epoch: 506 | Commission: 10 | Epoch Credits: 414125 | MEV Commission: [NULL] | MEV Earned: [NULL] | Stake: 67185749506770 | Rank: [NULL] | Superminority: [NULL] | IP: 173.231.55.190 | Client Type: [NULL] | Client Version: 1.16.13 | Last Updated: [NULL] -Epoch: 507 | Commission: 10 | Epoch Credits: 399087 | MEV Commission: [NULL] | MEV Earned: [NULL] | Stake: [NULL] | Rank: [NULL] | Superminority: [NULL] | IP: 173.231.55.190 | Client Type: [NULL] | Client Version: 1.16.14 | Last Updated: [NULL] -Epoch: 508 | Commission: 10 | Epoch Credits: 411392 | MEV Commission: [NULL] | MEV Earned: [NULL] | Stake: 66654699516177 | Rank: [NULL] | Superminority: [NULL] | IP: 173.231.55.190 | Client Type: [NULL] | Client Version: 1.16.14 | Last Updated: [NULL] -Epoch: 509 | Commission: 10 | Epoch Credits: 397707 | MEV Commission: [NULL] | MEV Earned: [NULL] | Stake: 66681470966655 | Rank: [NULL] | Superminority: [NULL] | IP: 173.231.55.190 | Client Type: [NULL] | Client Version: 1.16.14 | Last Updated: [NULL] -Epoch: 510 | Commission: 10 | Epoch Credits: 386910 | MEV Commission: [NULL] | MEV Earned: [NULL] | Stake: 67168697043520 | Rank: [NULL] | Superminority: [NULL] | IP: 173.231.55.190 | Client Type: [NULL] | Client Version: 1.16.14 | Last Updated: [NULL] -Epoch: 511 | Commission: 10 | Epoch Credits: 400504 | MEV Commission: [NULL] | MEV Earned: [NULL] | Stake: 67194689284945 | Rank: [NULL] | Superminority: [NULL] | IP: 173.231.55.190 | Client Type: [NULL] | Client Version: 1.16.14 | Last Updated: [NULL] -Epoch: 512 | Commission: 10 | Epoch Credits: 385217 | MEV Commission: [NULL] | MEV Earned: [NULL] | Stake: 47861386256695 | Rank: [NULL] | Superminority: [NULL] | IP: 173.231.59.30 | Client Type: [NULL] | Client Version: 1.16.14 | Last Updated: [NULL] -Epoch: 513 | Commission: 10 | Epoch Credits: 367104 | MEV Commission: [NULL] | MEV Earned: [NULL] | Stake: 47869816644197 | Rank: [NULL] | Superminority: [NULL] | IP: 173.231.59.30 | Client Type: [NULL] | Client Version: 1.17.0 | Last Updated: [NULL] -Epoch: 514 | Commission: 10 | Epoch Credits: 417516 | MEV Commission: [NULL] | MEV Earned: [NULL] | Stake: 47878260709562 | Rank: [NULL] | Superminority: [NULL] | IP: 173.231.59.30 | Client Type: [NULL] | Client Version: 1.17.0 | Last Updated: [NULL] -Epoch: 515 | Commission: 10 | Epoch Credits: 410609 | MEV Commission: [NULL] | MEV Earned: [NULL] | Stake: 47888517868481 | Rank: [NULL] | Superminority: [NULL] | IP: 173.231.59.30 | Client Type: [NULL] | Client Version: 1.17.0 | Last Updated: [NULL] -Epoch: 516 | Commission: 10 | Epoch Credits: 412511 | MEV Commission: [NULL] | MEV Earned: [NULL] | Stake: 47908247659322 | Rank: [NULL] | Superminority: [NULL] | IP: 173.231.59.30 | Client Type: [NULL] | Client Version: 1.17.0 | Last Updated: [NULL] -Epoch: 517 | Commission: 10 | Epoch Credits: 418420 | MEV Commission: [NULL] | MEV Earned: [NULL] | Stake: 47927710868511 | Rank: [NULL] | Superminority: [NULL] | IP: 173.231.59.30 | Client Type: [NULL] | Client Version: 1.17.0 | Last Updated: [NULL] -Epoch: 518 | Commission: 10 | Epoch Credits: 409432 | MEV Commission: [NULL] | MEV Earned: [NULL] | Stake: 69130714049575 | Rank: [NULL] | Superminority: [NULL] | IP: 173.231.59.30 | Client Type: [NULL] | Client Version: 1.17.1 | Last Updated: [NULL] -Epoch: 519 | Commission: 10 | Epoch Credits: 412159 | MEV Commission: [NULL] | MEV Earned: [NULL] | Stake: 68404379146488 | Rank: [NULL] | Superminority: [NULL] | IP: 173.231.59.30 | Client Type: [NULL] | Client Version: 1.17.1 | Last Updated: [NULL] -Epoch: 520 | Commission: 10 | Epoch Credits: 398147 | MEV Commission: [NULL] | MEV Earned: [NULL] | Stake: 68506312014697 | Rank: [NULL] | Superminority: [NULL] | IP: 173.231.59.30 | Client Type: [NULL] | Client Version: 1.17.1 | Last Updated: [NULL] -Epoch: 521 | Commission: 10 | Epoch Credits: 408777 | MEV Commission: [NULL] | MEV Earned: [NULL] | Stake: 68745314326577 | Rank: [NULL] | Superminority: [NULL] | IP: 173.231.59.30 | Client Type: [NULL] | Client Version: 1.17.1 | Last Updated: [NULL] -Epoch: 522 | Commission: 10 | Epoch Credits: 395501 | MEV Commission: [NULL] | MEV Earned: [NULL] | Stake: 68772701195994 | Rank: [NULL] | Superminority: [NULL] | IP: 173.231.59.30 | Client Type: [NULL] | Client Version: 1.17.1 | Last Updated: [NULL] -Epoch: 523 | Commission: 10 | Epoch Credits: 401824 | MEV Commission: [NULL] | MEV Earned: [NULL] | Stake: 68682200721773 | Rank: [NULL] | Superminority: [NULL] | IP: 173.231.59.30 | Client Type: [NULL] | Client Version: 1.17.1 | Last Updated: [NULL] -Epoch: 524 | Commission: 10 | Epoch Credits: 419033 | MEV Commission: [NULL] | MEV Earned: [NULL] | Stake: 68146705064661 | Rank: [NULL] | Superminority: [NULL] | IP: 173.231.59.30 | Client Type: [NULL] | Client Version: 1.17.1 | Last Updated: [NULL] -Epoch: 525 | Commission: 10 | Epoch Credits: 411198 | MEV Commission: [NULL] | MEV Earned: [NULL] | Stake: 67481169548209 | Rank: [NULL] | Superminority: [NULL] | IP: 173.231.59.30 | Client Type: [NULL] | Client Version: 1.17.1 | Last Updated: [NULL] -Epoch: 526 | Commission: 10 | Epoch Credits: 390349 | MEV Commission: [NULL] | MEV Earned: [NULL] | Stake: 66771711018104 | Rank: [NULL] | Superminority: [NULL] | IP: 173.231.59.30 | Client Type: [NULL] | Client Version: 1.17.1 | Last Updated: [NULL] -Epoch: 527 | Commission: 10 | Epoch Credits: 402796 | MEV Commission: [NULL] | MEV Earned: [NULL] | Stake: 66797900949048 | Rank: [NULL] | Superminority: [NULL] | IP: 173.231.59.30 | Client Type: [NULL] | Client Version: 1.17.1 | Last Updated: [NULL] -Epoch: 528 | Commission: 10 | Epoch Credits: 412086 | MEV Commission: [NULL] | MEV Earned: [NULL] | Stake: [NULL] | Rank: [NULL] | Superminority: [NULL] | IP: 173.231.59.30 | Client Type: [NULL] | Client Version: 1.17.1 | Last Updated: [NULL] -Epoch: 529 | Commission: 10 | Epoch Credits: 407886 | MEV Commission: [NULL] | MEV Earned: [NULL] | Stake: 66976318966065 | Rank: [NULL] | Superminority: [NULL] | IP: 173.231.59.30 | Client Type: [NULL] | Client Version: 1.17.1 | Last Updated: [NULL] -Epoch: 530 | Commission: 10 | Epoch Credits: 383263 | MEV Commission: [NULL] | MEV Earned: [NULL] | Stake: 66369327613327 | Rank: 514 | Superminority: 0 | IP: 173.231.59.30 | Client Type: [NULL] | Client Version: [NULL] | Last Updated: 229349503 -Epoch: 531 | Commission: 10 | Epoch Credits: 387367 | MEV Commission: [NULL] | MEV Earned: [NULL] | Stake: 66395551827244 | Rank: 532 | Superminority: 0 | IP: 173.231.59.30 | Client Type: [NULL] | Client Version: 1.17.1 | Last Updated: 229781220 -Epoch: 532 | Commission: 10 | Epoch Credits: 358509 | MEV Commission: [NULL] | MEV Earned: [NULL] | Stake: 66421597026256 | Rank: 521 | Superminority: 0 | IP: 173.231.59.30 | Client Type: [NULL] | Client Version: [NULL] | Last Updated: 230213313 -Epoch: 533 | Commission: 10 | Epoch Credits: 376224 | MEV Commission: [NULL] | MEV Earned: [NULL] | Stake: 67165471656109 | Rank: 510 | Superminority: 0 | IP: 173.231.59.30 | Client Type: [NULL] | Client Version: [NULL] | Last Updated: 230645124 -Epoch: 534 | Commission: 10 | Epoch Credits: 405835 | MEV Commission: [NULL] | MEV Earned: [NULL] | Stake: 48170897223911 | Rank: 1504 | Superminority: 0 | IP: 173.231.59.30 | Client Type: [NULL] | Client Version: [NULL] | Last Updated: 231077339 -Epoch: 535 | Commission: 10 | Epoch Credits: 391142 | MEV Commission: [NULL] | MEV Earned: [NULL] | Stake: 48190256906303 | Rank: 1496 | Superminority: 0 | IP: 173.231.59.30 | Client Type: [NULL] | Client Version: [NULL] | Last Updated: 231509276 -Epoch: 536 | Commission: 10 | Epoch Credits: 390206 | MEV Commission: [NULL] | MEV Earned: [NULL] | Stake: 67137494519514 | Rank: 494 | Superminority: 0 | IP: 173.231.59.30 | Client Type: [NULL] | Client Version: [NULL] | Last Updated: 231941221 -Epoch: 537 | Commission: 10 | Epoch Credits: 399716 | MEV Commission: [NULL] | MEV Earned: [NULL] | Stake: 67591172715037 | Rank: 421 | Superminority: 0 | IP: 173.231.59.30 | Client Type: [NULL] | Client Version: [NULL] | Last Updated: 232373059 -Epoch: 538 | Commission: 10 | Epoch Credits: 390065 | MEV Commission: [NULL] | MEV Earned: [NULL] | Stake: 67478209128670 | Rank: 489 | Superminority: 0 | IP: 173.231.59.30 | Client Type: [NULL] | Client Version: [NULL] | Last Updated: 232804982 -Epoch: 539 | Commission: 10 | Epoch Credits: 387307 | MEV Commission: [NULL] | MEV Earned: [NULL] | Stake: 64659168216277 | Rank: 479 | Superminority: 0 | IP: 173.231.59.30 | Client Type: [NULL] | Client Version: [NULL] | Last Updated: 233237275 -Epoch: 540 | Commission: 10 | Epoch Credits: 391610 | MEV Commission: [NULL] | MEV Earned: [NULL] | Stake: 62155183788018 | Rank: 496 | Superminority: 0 | IP: 173.231.59.30 | Client Type: [NULL] | Client Version: [NULL] | Last Updated: 233669286 -Epoch: 541 | Commission: 10 | Epoch Credits: 388409 | MEV Commission: [NULL] | MEV Earned: [NULL] | Stake: 61842083002047 | Rank: 499 | Superminority: 0 | IP: 173.231.59.30 | Client Type: [NULL] | Client Version: [NULL] | Last Updated: 234101020 -Epoch: 542 | Commission: 10 | Epoch Credits: 369430 | MEV Commission: [NULL] | MEV Earned: [NULL] | Stake: 61866737814864 | Rank: 493 | Superminority: 0 | IP: 173.231.59.30 | Client Type: 0 | Client Version: 1.17.7 | Last Updated: 234532874 -Epoch: 543 | Commission: 10 | Epoch Credits: 373420 | MEV Commission: [NULL] | MEV Earned: [NULL] | Stake: 61189246787631 | Rank: 490 | Superminority: 0 | IP: 173.231.59.30 | Client Type: 0 | Client Version: 1.17.7 | Last Updated: 234965001 -Epoch: 544 | Commission: 10 | Epoch Credits: 367072 | MEV Commission: [NULL] | MEV Earned: [NULL] | Stake: 60865322939184 | Rank: 500 | Superminority: 0 | IP: 173.231.59.30 | Client Type: 0 | Client Version: 1.17.7 | Last Updated: 235397464 -Epoch: 545 | Commission: 10 | Epoch Credits: 353416 | MEV Commission: [NULL] | MEV Earned: [NULL] | Stake: 60889214481676 | Rank: 554 | Superminority: 0 | IP: 173.231.59.30 | Client Type: [NULL] | Client Version: 1.16.21 | Last Updated: 235829453 -Epoch: 546 | Commission: 10 | Epoch Credits: 368850 | MEV Commission: [NULL] | MEV Earned: [NULL] | Stake: 61796566624097 | Rank: 498 | Superminority: 0 | IP: 173.231.59.30 | Client Type: 0 | Client Version: 1.16.21 | Last Updated: 236261286 -Epoch: 547 | Commission: 10 | Epoch Credits: 365934 | MEV Commission: [NULL] | MEV Earned: [NULL] | Stake: 61820969336494 | Rank: 492 | Superminority: 0 | IP: 173.231.59.30 | Client Type: [NULL] | Client Version: 1.16.23 | Last Updated: 236705816 -Epoch: 548 | Commission: 10 | Epoch Credits: 368633 | MEV Commission: [NULL] | MEV Earned: [NULL] | Stake: 61257414508737 | Rank: 507 | Superminority: 0 | IP: 173.231.59.30 | Client Type: [NULL] | Client Version: 1.16.23 | Last Updated: 237125397 -Epoch: 549 | Commission: 10 | Epoch Credits: 364924 | MEV Commission: [NULL] | MEV Earned: [NULL] | Stake: 62230207499565 | Rank: 486 | Superminority: 0 | IP: 173.231.59.30 | Client Type: [NULL] | Client Version: 1.16.24 | Last Updated: 237557484 -Epoch: 550 | Commission: 10 | Epoch Credits: 373919 | MEV Commission: [NULL] | MEV Earned: [NULL] | Stake: 62254085339290 | Rank: 559 | Superminority: 0 | IP: 173.231.59.30 | Client Type: [NULL] | Client Version: [NULL] | Last Updated: 237989224 -Epoch: 551 | Commission: 10 | Epoch Credits: 373404 | MEV Commission: [NULL] | MEV Earned: [NULL] | Stake: 63536577116613 | Rank: 496 | Superminority: 0 | IP: 173.231.59.30 | Client Type: [NULL] | Client Version: 1.16.24 | Last Updated: 238420904 -Epoch: 552 | Commission: 10 | Epoch Credits: 370198 | MEV Commission: [NULL] | MEV Earned: [NULL] | Stake: 63333857891036 | Rank: 498 | Superminority: 0 | IP: 173.231.59.30 | Client Type: [NULL] | Client Version: 1.16.24 | Last Updated: 238853302 -Epoch: 553 | Commission: 10 | Epoch Credits: 366819 | MEV Commission: [NULL] | MEV Earned: [NULL] | Stake: 63359241226209 | Rank: 505 | Superminority: 0 | IP: 173.231.59.30 | Client Type: [NULL] | Client Version: 1.16.24 | Last Updated: 239285241 -Epoch: 554 | Commission: 10 | Epoch Credits: 369596 | MEV Commission: [NULL] | MEV Earned: [NULL] | Stake: 63877430513499 | Rank: 496 | Superminority: 0 | IP: 173.231.59.30 | Client Type: [NULL] | Client Version: 1.16.24 | Last Updated: 239717240 -Epoch: 555 | Commission: 10 | Epoch Credits: 369519 | MEV Commission: [NULL] | MEV Earned: [NULL] | Stake: 63105099494302 | Rank: 487 | Superminority: 0 | IP: 173.231.59.30 | Client Type: [NULL] | Client Version: 1.16.24 | Last Updated: 240149460 -Epoch: 556 | Commission: 10 | Epoch Credits: 360771 | MEV Commission: [NULL] | MEV Earned: [NULL] | Stake: 63130763617549 | Rank: 484 | Superminority: 0 | IP: 173.231.59.30 | Client Type: [NULL] | Client Version: 1.16.25 | Last Updated: 240581241 -Epoch: 557 | Commission: 10 | Epoch Credits: 368922 | MEV Commission: [NULL] | MEV Earned: [NULL] | Stake: 63156244494687 | Rank: 483 | Superminority: 0 | IP: [NULL] | Client Type: [NULL] | Client Version: [NULL] | Last Updated: 241013093 -Epoch: 558 | Commission: 10 | Epoch Credits: 387867 | MEV Commission: [NULL] | MEV Earned: [NULL] | Stake: 67159366634338 | Rank: 453 | Superminority: 0 | IP: [NULL] | Client Type: [NULL] | Client Version: [NULL] | Last Updated: 241273140 -Epoch: 559 | Commission: 10 | Epoch Credits: 386493 | MEV Commission: [NULL] | MEV Earned: [NULL] | Stake: 67343566508930 | Rank: 532 | Superminority: 0 | IP: [NULL] | Client Type: [NULL] | Client Version: [NULL] | Last Updated: 241877373 -Epoch: 560 | Commission: 10 | Epoch Credits: 384909 | MEV Commission: [NULL] | MEV Earned: [NULL] | Stake: 70397459674541 | Rank: 441 | Superminority: 0 | IP: 173.231.59.30 | Client Type: 0 | Client Version: 1.17.16 | Last Updated: 242309366 -Epoch: 561 | Commission: 10 | Epoch Credits: 396452 | MEV Commission: [NULL] | MEV Earned: [NULL] | Stake: 72027522562079 | Rank: 428 | Superminority: 0 | IP: 173.231.10.206 | Client Type: 0 | Client Version: 1.17.16 | Last Updated: 242741428 -Epoch: 562 | Commission: 10 | Epoch Credits: 402415 | MEV Commission: [NULL] | MEV Earned: [NULL] | Stake: 75110630083795 | Rank: 422 | Superminority: 0 | IP: 173.231.10.206 | Client Type: 0 | Client Version: 1.17.16 | Last Updated: 243173192 -Epoch: 563 | Commission: 10 | Epoch Credits: 404305 | MEV Commission: [NULL] | MEV Earned: [NULL] | Stake: 75140618724505 | Rank: 419 | Superminority: 0 | IP: 173.231.10.206 | Client Type: 0 | Client Version: 1.17.16 | Last Updated: 243604926 -Epoch: 564 | Commission: 10 | Epoch Credits: 412170 | MEV Commission: [NULL] | MEV Earned: [NULL] | Stake: 75170850312036 | Rank: 411 | Superminority: 0 | IP: 173.231.10.206 | Client Type: 0 | Client Version: 1.17.16 | Last Updated: 244037371 -Epoch: 565 | Commission: 10 | Epoch Credits: 411587 | MEV Commission: [NULL] | MEV Earned: [NULL] | Stake: 75202488155861 | Rank: 406 | Superminority: 0 | IP: 173.231.10.206 | Client Type: 0 | Client Version: 1.17.16 | Last Updated: 244469361 -Epoch: 566 | Commission: 10 | Epoch Credits: 416291 | MEV Commission: [NULL] | MEV Earned: [NULL] | Stake: 80681848173418 | Rank: 413 | Superminority: 0 | IP: 173.231.10.206 | Client Type: 0 | Client Version: 1.17.16 | Last Updated: 244901652 -Epoch: 567 | Commission: 10 | Epoch Credits: 407322 | MEV Commission: [NULL] | MEV Earned: [NULL] | Stake: 77363724962489 | Rank: 407 | Superminority: 0 | IP: 173.231.10.206 | Client Type: 0 | Client Version: 1.17.16 | Last Updated: 245345535 -Epoch: 568 | Commission: 10 | Epoch Credits: 402193 | MEV Commission: [NULL] | MEV Earned: [NULL] | Stake: 76456782717247 | Rank: 414 | Superminority: 0 | IP: 173.231.10.206 | Client Type: 0 | Client Version: 1.17.16 | Last Updated: 245765530 -Epoch: 569 | Commission: 10 | Epoch Credits: 408154 | MEV Commission: 800 | MEV Earned: 0.32 | Stake: 78523545424078 | Rank: 410 | Superminority: 0 | IP: 173.231.10.206 | Client Type: 1 | Client Version: 1.17.18 | Last Updated: 246024696 -Epoch: 570 | Commission: 10 | Epoch Credits: 405218 | MEV Commission: 800 | MEV Earned: 2.15 | Stake: 78075121249700 | Rank: 412 | Superminority: 0 | IP: 173.231.10.206 | Client Type: 1 | Client Version: 1.17.20 | Last Updated: 246629477 -Epoch: 571 | Commission: 10 | Epoch Credits: 417090 | MEV Commission: 800 | MEV Earned: 0.67 | Stake: 77579032027209 | Rank: 420 | Superminority: 0 | IP: 173.231.10.206 | Client Type: 1 | Client Version: 1.17.20 | Last Updated: 247061581 -Epoch: 572 | Commission: 10 | Epoch Credits: 417323 | MEV Commission: 800 | MEV Earned: 0.65 | Stake: 77610084369082 | Rank: 435 | Superminority: 0 | IP: 173.231.10.206 | Client Type: 1 | Client Version: 1.17.20 | Last Updated: 247493331 -Epoch: 573 | Commission: 10 | Epoch Credits: 410710 | MEV Commission: 800 | MEV Earned: 2.47 | Stake: 77641556155901 | Rank: 438 | Superminority: 0 | IP: 173.231.10.206 | Client Type: 1 | Client Version: 1.17.21 | Last Updated: 247925681 -Epoch: 574 | Commission: 7 | Epoch Credits: 413022 | MEV Commission: 10000 | MEV Earned: 0.9 | Stake: 77672648033338 | Rank: 439 | Superminority: 0 | IP: 173.231.10.206 | Client Type: 1 | Client Version: 1.17.21 | Last Updated: 248358038 -Epoch: 575 | Commission: 7 | Epoch Credits: 413043 | MEV Commission: 10000 | MEV Earned: 0.72 | Stake: 77706045329246 | Rank: 446 | Superminority: 0 | IP: 173.231.10.206 | Client Type: 1 | Client Version: 1.17.21 | Last Updated: 248789289 -Epoch: 576 | Commission: 7 | Epoch Credits: 413721 | MEV Commission: 10000 | MEV Earned: 0.36 | Stake: 77746581287187 | Rank: 445 | Superminority: 0 | IP: 173.231.10.206 | Client Type: 1 | Client Version: 1.17.21 | Last Updated: 249221534 -Epoch: 577 | Commission: 7 | Epoch Credits: 408168 | MEV Commission: 10000 | MEV Earned: 2.65 | Stake: 77778904947558 | Rank: 460 | Superminority: 0 | IP: 173.231.10.206 | Client Type: 1 | Client Version: 1.17.21 | Last Updated: 249653315 -Epoch: 578 | Commission: 7 | Epoch Credits: 407047 | MEV Commission: 10000 | MEV Earned: 0.57 | Stake: 77811073521262 | Rank: 464 | Superminority: 0 | IP: 173.231.10.206 | Client Type: 1 | Client Version: 1.17.21 | Last Updated: 250085553 -Epoch: 579 | Commission: 7 | Epoch Credits: 415862 | MEV Commission: 10000 | MEV Earned: 1.25 | Stake: 77843063403360 | Rank: 473 | Superminority: 0 | IP: 173.231.10.206 | Client Type: 1 | Client Version: 1.17.21 | Last Updated: 250517130 -Epoch: 580 | Commission: 7 | Epoch Credits: 410941 | MEV Commission: 10000 | MEV Earned: 0.9 | Stake: 77874746297684 | Rank: 471 | Superminority: 0 | IP: 173.231.10.206 | Client Type: 1 | Client Version: 1.17.21 | Last Updated: 250949113 -Epoch: 581 | Commission: 7 | Epoch Credits: 412749 | MEV Commission: 10000 | MEV Earned: 0.69 | Stake: 77906381340047 | Rank: 472 | Superminority: 0 | IP: 173.231.10.206 | Client Type: 1 | Client Version: 1.17.21 | Last Updated: 251381557 -Epoch: 582 | Commission: 7 | Epoch Credits: 413694 | MEV Commission: 10000 | MEV Earned: 0.76 | Stake: 77938207225138 | Rank: 463 | Superminority: 0 | IP: 173.231.10.206 | Client Type: 1 | Client Version: 1.17.21 | Last Updated: 251813076 -Epoch: 583 | Commission: 7 | Epoch Credits: 414472 | MEV Commission: 10000 | MEV Earned: 2.31 | Stake: 77970372378843 | Rank: 465 | Superminority: 0 | IP: 173.231.10.206 | Client Type: 1 | Client Version: 1.17.21 | Last Updated: 252286747 -Epoch: 584 | Commission: 7 | Epoch Credits: 408741 | MEV Commission: 10000 | MEV Earned: 6.62 | Stake: 78002477096900 | Rank: 464 | Superminority: 0 | IP: 173.231.10.206 | Client Type: 1 | Client Version: 1.17.21 | Last Updated: 252716238 -Epoch: 585 | Commission: 7 | Epoch Credits: 399268 | MEV Commission: 10000 | MEV Earned: 2.04 | Stake: 78035011882986 | Rank: 463 | Superminority: 0 | IP: 173.231.10.206 | Client Type: 1 | Client Version: 1.17.21 | Last Updated: 253151303 -Epoch: 586 | Commission: 7 | Epoch Credits: 392219 | MEV Commission: 10000 | MEV Earned: 3.43 | Stake: 77672232135841 | Rank: 446 | Superminority: 0 | IP: 173.231.10.206 | Client Type: 1 | Client Version: 1.17.21 | Last Updated: 253581376 -Epoch: 587 | Commission: 7 | Epoch Credits: 386770 | MEV Commission: 10000 | MEV Earned: 2.83 | Stake: 76500561594516 | Rank: 452 | Superminority: 0 | IP: 173.231.10.206 | Client Type: 1 | Client Version: 1.17.21 | Last Updated: 254013630 -Epoch: 588 | Commission: 7 | Epoch Credits: 374699 | MEV Commission: 10000 | MEV Earned: 3.21 | Stake: 65398801499082 | Rank: 476 | Superminority: 0 | IP: 173.231.10.206 | Client Type: 1 | Client Version: 1.17.21 | Last Updated: 254447037 -Epoch: 589 | Commission: 7 | Epoch Credits: 374474 | MEV Commission: 10000 | MEV Earned: 2.35 | Stake: 65109282549595 | Rank: 481 | Superminority: 0 | IP: 173.231.10.206 | Client Type: 1 | Client Version: 1.17.26 | Last Updated: 254879344 -Epoch: 590 | Commission: 7 | Epoch Credits: 387950 | MEV Commission: 10000 | MEV Earned: 3.19 | Stake: 65135926097345 | Rank: 475 | Superminority: 0 | IP: 173.231.10.206 | Client Type: 1 | Client Version: 1.17.26 | Last Updated: 255305170 -Epoch: 591 | Commission: 7 | Epoch Credits: 396937 | MEV Commission: 10000 | MEV Earned: 5.23 | Stake: 65163592707971 | Rank: 471 | Superminority: 0 | IP: 173.231.10.206 | Client Type: 1 | Client Version: 1.17.26 | Last Updated: 255738954 -Epoch: 592 | Commission: 7 | Epoch Credits: 394396 | MEV Commission: 10000 | MEV Earned: 3.4 | Stake: 65191437306101 | Rank: 485 | Superminority: 0 | IP: 173.231.10.206 | Client Type: 1 | Client Version: 1.17.26 | Last Updated: 256133868 -Epoch: 593 | Commission: 7 | Epoch Credits: 400391 | MEV Commission: 10000 | MEV Earned: 2.68 | Stake: 65218959968787 | Rank: 488 | Superminority: 0 | IP: 173.231.10.206 | Client Type: 1 | Client Version: 1.17.26 | Last Updated: 256604431 -Epoch: 594 | Commission: 7 | Epoch Credits: 391952 | MEV Commission: 10000 | MEV Earned: 5.21 | Stake: 65246366232907 | Rank: 484 | Superminority: 0 | IP: 173.231.10.206 | Client Type: 1 | Client Version: 1.17.28 | Last Updated: 257039149 -Epoch: 595 | Commission: 7 | Epoch Credits: 388839 | MEV Commission: 10000 | MEV Earned: 3.55 | Stake: 62281000649917 | Rank: 464 | Superminority: 0 | IP: 173.231.10.206 | Client Type: 1 | Client Version: 1.17.28 | Last Updated: 257470038 -Epoch: 596 | Commission: 7 | Epoch Credits: 393912 | MEV Commission: 10000 | MEV Earned: 3.18 | Stake: 62307351005599 | Rank: 466 | Superminority: 0 | IP: 173.231.10.206 | Client Type: 1 | Client Version: 1.17.28 | Last Updated: 257903875 -Epoch: 597 | Commission: 7 | Epoch Credits: 389945 | MEV Commission: 10000 | MEV Earned: 3.69 | Stake: 62334424694943 | Rank: 465 | Superminority: 0 | IP: 173.231.10.206 | Client Type: 1 | Client Version: 1.17.28 | Last Updated: 258291644 -Epoch: 598 | Commission: [NULL] | Epoch Credits: 360870 | MEV Commission: 10000 | MEV Earned: 3.52 | Stake: 61279717575533 | Rank: [NULL] | Superminority: 0 | IP: [NULL] | Client Type: [NULL] | Client Version: [NULL] | Last Updated: [NULL] -Epoch: 599 | Commission: 7 | Epoch Credits: 347102 | MEV Commission: 10000 | MEV Earned: 2.43 | Stake: 58780777273874 | Rank: 546 | Superminority: 0 | IP: 173.231.10.206 | Client Type: 1 | Client Version: 1.17.28 | Last Updated: 259199240 -Epoch: 600 | Commission: 7 | Epoch Credits: 337019 | MEV Commission: 10000 | MEV Earned: 4.5 | Stake: 58451567335696 | Rank: 527 | Superminority: 0 | IP: 173.231.10.206 | Client Type: 1 | Client Version: 1.17.28 | Last Updated: 259628305 -Epoch: 601 | Commission: 7 | Epoch Credits: 351275 | MEV Commission: 10000 | MEV Earned: 1.4 | Stake: 53086831369049 | Rank: 654 | Superminority: 0 | IP: 173.231.10.206 | Client Type: 1 | Client Version: 1.17.28 | Last Updated: 259773768 -Epoch: 602 | Commission: 7 | Epoch Credits: 375832 | MEV Commission: 10000 | MEV Earned: 1.61 | Stake: 52978820158209 | Rank: 646 | Superminority: 0 | IP: 173.231.10.206 | Client Type: 1 | Client Version: 1.17.28 | Last Updated: 260453434 -Epoch: 603 | Commission: 7 | Epoch Credits: 391089 | MEV Commission: 10000 | MEV Earned: 1.12 | Stake: 50434176946117 | Rank: 654 | Superminority: 0 | IP: 173.231.10.206 | Client Type: 1 | Client Version: 1.17.31 | Last Updated: 260885684 -Epoch: 604 | Commission: 7 | Epoch Credits: 386206 | MEV Commission: 10000 | MEV Earned: 3.46 | Stake: 51216832057043 | Rank: 650 | Superminority: 0 | IP: 173.231.10.206 | Client Type: 1 | Client Version: 1.17.31 | Last Updated: 261317266 -Epoch: 605 | Commission: 7 | Epoch Credits: 382681 | MEV Commission: 10000 | MEV Earned: 1.73 | Stake: 49221607178908 | Rank: 664 | Superminority: 0 | IP: 173.231.10.206 | Client Type: 1 | Client Version: 1.17.31 | Last Updated: 261749806 -Epoch: 606 | Commission: 7 | Epoch Credits: 380726 | MEV Commission: 10000 | MEV Earned: 1.86 | Stake: 46515248935793 | Rank: 684 | Superminority: 0 | IP: 173.231.10.206 | Client Type: 1 | Client Version: 1.17.31 | Last Updated: 262181762 -Epoch: 607 | Commission: 7 | Epoch Credits: 362329 | MEV Commission: 10000 | MEV Earned: 1.98 | Stake: 44401697231565 | Rank: 640 | Superminority: 0 | IP: 173.231.10.206 | Client Type: 1 | Client Version: 1.17.31 | Last Updated: 262613429 -Epoch: 608 | Commission: 7 | Epoch Credits: 368932 | MEV Commission: 10000 | MEV Earned: 1.81 | Stake: 44565379439629 | Rank: 667 | Superminority: 0 | IP: 173.231.10.206 | Client Type: 1 | Client Version: 1.17.31 | Last Updated: 263045008 -Epoch: 609 | Commission: 7 | Epoch Credits: 387511 | MEV Commission: 10000 | MEV Earned: 1.64 | Stake: 42033920076291 | Rank: 667 | Superminority: 0 | IP: 173.231.10.206 | Client Type: 1 | Client Version: 1.17.31 | Last Updated: 263477247 -Epoch: 610 | Commission: 7 | Epoch Credits: 385391 | MEV Commission: 10000 | MEV Earned: 2.5 | Stake: 41027300071209 | Rank: 705 | Superminority: 0 | IP: 173.231.10.206 | Client Type: 1 | Client Version: 1.17.31 | Last Updated: 263909333 -Epoch: 611 | Commission: 7 | Epoch Credits: 388432 | MEV Commission: 10000 | MEV Earned: 2.48 | Stake: 40422607325584 | Rank: 713 | Superminority: 0 | IP: 173.231.10.206 | Client Type: 1 | Client Version: 1.17.31 | Last Updated: 264341247 -Epoch: 612 | Commission: 7 | Epoch Credits: 395198 | MEV Commission: 10000 | MEV Earned: 1.18 | Stake: 39340890342581 | Rank: 670 | Superminority: 0 | IP: 173.231.10.206 | Client Type: 1 | Client Version: 1.17.31 | Last Updated: 264778216 -Epoch: 613 | Commission: 7 | Epoch Credits: 400050 | MEV Commission: 10000 | MEV Earned: 1.99 | Stake: 39229042805964 | Rank: 640 | Superminority: 0 | IP: 173.231.10.206 | Client Type: 1 | Client Version: 1.17.31 | Last Updated: 265206233 -Epoch: 614 | Commission: 7 | Epoch Credits: 406214 | MEV Commission: 10000 | MEV Earned: 1.06 | Stake: 39055588360195 | Rank: 640 | Superminority: 0 | IP: 173.231.10.206 | Client Type: 1 | Client Version: 1.17.33 | Last Updated: 265639112 -Epoch: 615 | Commission: 7 | Epoch Credits: 407279 | MEV Commission: 10000 | MEV Earned: 1.12 | Stake: 38810360644940 | Rank: 632 | Superminority: 0 | IP: 173.231.10.206 | Client Type: 1 | Client Version: 1.17.33 | Last Updated: 266070510 -Epoch: 616 | Commission: 7 | Epoch Credits: 402935 | MEV Commission: 10000 | MEV Earned: 1.9 | Stake: 38847257792371 | Rank: 636 | Superminority: 0 | IP: 173.231.10.206 | Client Type: 1 | Client Version: 1.17.33 | Last Updated: 266501174 -Epoch: 617 | Commission: 7 | Epoch Credits: 401692 | MEV Commission: 10000 | MEV Earned: 1.81 | Stake: 38437080768313 | Rank: 637 | Superminority: 0 | IP: 173.231.10.206 | Client Type: 1 | Client Version: 1.17.33 | Last Updated: 266958485 -Epoch: 618 | Commission: 7 | Epoch Credits: 399434 | MEV Commission: 10000 | MEV Earned: 1.79 | Stake: 37810636643463 | Rank: 642 | Superminority: 0 | IP: 173.231.10.206 | Client Type: 1 | Client Version: 1.17.34 | Last Updated: 267365166 -Epoch: 619 | Commission: 7 | Epoch Credits: 392228 | MEV Commission: 10000 | MEV Earned: 1.83 | Stake: 37954947968943 | Rank: 639 | Superminority: 0 | IP: 173.231.10.206 | Client Type: 1 | Client Version: 1.17.34 | Last Updated: 267744926 -Epoch: 620 | Commission: 7 | Epoch Credits: 390804 | MEV Commission: 10000 | MEV Earned: 0.49 | Stake: 36293331942111 | Rank: 639 | Superminority: 0 | IP: 173.231.10.206 | Client Type: 1 | Client Version: 1.17.34 | Last Updated: 268180265 -Epoch: 621 | Commission: 7 | Epoch Credits: 382789 | MEV Commission: 10000 | MEV Earned: 1.97 | Stake: 36475464475798 | Rank: 643 | Superminority: 0 | IP: 173.231.10.206 | Client Type: 1 | Client Version: 1.17.34 | Last Updated: 268337196 -Epoch: 622 | Commission: 7 | Epoch Credits: 379826 | MEV Commission: 10000 | MEV Earned: 1.92 | Stake: 33808177801469 | Rank: 674 | Superminority: 0 | IP: 173.231.10.206 | Client Type: 1 | Client Version: 1.17.34 | Last Updated: 269092852 -Epoch: 623 | Commission: 7 | Epoch Credits: 381911 | MEV Commission: 10000 | MEV Earned: 2.18 | Stake: 32389921468910 | Rank: 691 | Superminority: 0 | IP: 173.231.10.206 | Client Type: 1 | Client Version: 1.17.34 | Last Updated: 269526776 -Epoch: 624 | Commission: 7 | Epoch Credits: 385956 | MEV Commission: 10000 | MEV Earned: 0.79 | Stake: 32744523767030 | Rank: 710 | Superminority: 0 | IP: 173.231.10.206 | Client Type: 1 | Client Version: 1.17.34 | Last Updated: 269958695 -Epoch: 625 | Commission: 7 | Epoch Credits: 386236 | MEV Commission: 10000 | MEV Earned: 1.65 | Stake: 32508755189988 | Rank: 721 | Superminority: 0 | IP: 173.231.10.206 | Client Type: 1 | Client Version: 1.17.34 | Last Updated: 270389993 -Epoch: 626 | Commission: 7 | Epoch Credits: 404113 | MEV Commission: 10000 | MEV Earned: 1.99 | Stake: 32521080473793 | Rank: 725 | Superminority: 0 | IP: 173.231.10.206 | Client Type: 1 | Client Version: 1.17.34 | Last Updated: 270822125 -Epoch: 627 | Commission: 7 | Epoch Credits: 387846 | MEV Commission: 10000 | MEV Earned: 3.05 | Stake: 31973323308416 | Rank: 719 | Superminority: 0 | IP: 173.231.22.178 | Client Type: 1 | Client Version: 1.18.15 | Last Updated: 271256309 -Epoch: 628 | Commission: 7 | Epoch Credits: 401110 | MEV Commission: 10000 | MEV Earned: 1.33 | Stake: 33144027111373 | Rank: 731 | Superminority: 0 | IP: 173.231.22.178 | Client Type: 1 | Client Version: 1.18.15 | Last Updated: 271658380 -Epoch: 629 | Commission: 7 | Epoch Credits: 404221 | MEV Commission: 10000 | MEV Earned: 1.97 | Stake: 33227457407029 | Rank: 724 | Superminority: 0 | IP: 173.231.22.178 | Client Type: 1 | Client Version: 1.18.15 | Last Updated: 272118868 -Epoch: 630 | Commission: 7 | Epoch Credits: 396956 | MEV Commission: 10000 | MEV Earned: 2.24 | Stake: 34270558697386 | Rank: 710 | Superminority: 0 | IP: 173.231.22.178 | Client Type: 1 | Client Version: 1.18.15 | Last Updated: 272550920 -Epoch: 631 | Commission: 7 | Epoch Credits: 403617 | MEV Commission: 10000 | MEV Earned: 2.67 | Stake: 34032047456927 | Rank: 715 | Superminority: 0 | IP: 173.231.22.178 | Client Type: 1 | Client Version: 1.18.15 | Last Updated: 272982374 -Epoch: 632 | Commission: 7 | Epoch Credits: 1833 | MEV Commission: 10000 | MEV Earned: [NULL] | Stake: 33811865607184 | Rank: 725 | Superminority: 0 | IP: 173.231.22.178 | Client Type: 1 | Client Version: 1.18.15 | Last Updated: 273026197