Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Introduce eager rent collection #9527

Merged
merged 28 commits into from
May 13, 2020
Merged

Conversation

ryoqun
Copy link
Member

@ryoqun ryoqun commented Apr 16, 2020

Problem

rent-due (!= rent-exempt) accounts are never garbage-collected unless updated (i.e. lazy collection), which accumulates over time and can be a DoS attack vector.

Also, the current rent collection mechanism has some gaming factor due to being lazy. (noted below)

Even more, there is some UX issue for the lazy rent collection.

Summary of Changes

  • scan the whole pubkey domain space over an epoch (or 2 day (if epoch is less than 2 day and not warmed-up); not implemented yet implemented) for each slot progress, while updating all accounts.
    • (cons) AccountIndex was switched from HashMap to BTreeMap for range queries to realize that
  • (pro) thus, maximum number of AppendVec is now bound to the number of slots of given epoch, combined with the recently-introduced per-slot shrinking Introduce background stale AppendVec shrink mechanism #9219.
    • Also, this fixes unbound increase of AccountsIndex.roots.
  • as a side effect, the rent collection schedule is now universally consistent: all existing accounts and newly-created accounts both alike are collected for the next epoch for each epoch exactly once.
    • (pro) technically, we can remove account.rent_epoch as a bonus. (ACCOUNT_STORAGE_OVERHEAD: 128 -> 120, -6.25% for IO bandwidth)
  • the iteration algorithm intentionally designed to be deterministic as a requirement because rent collection generally affects account delta bank hash, distribution, and capitalization. Also it's stete-less as desired to avoid ABI breakage.
  • (pro) the system load is well spread across an epoch because we can assume vast of pubkey space is uniformly distributed.
  • (pro) this doesn't introduce ABI break; only an epoch-triggered enactment if guard is needed.
minor problem of current rent colletion

Also I found that the lazy rent collection is problematic because delayed rent collection doesn't account for past rent fees were different or not.
That means the current calculation is based on the latest rent fee multiple of epochs. it's not the integral of past actual (dynamic) rent fees over epochs.
This means it introduces some gaming much like recently removed redeem-vote-credits (#7916):
A validator or an account owner might send 0 lamports to rent-due accounts to collect/save rent when the at-the-time dynamic rent is more profitable.
Although, the dynamic rent isn't still implemented...

(cons) new dos vector

An attacker can send lamports to arbitrary address if prepared to burn them so we're vulnerable to a new attack vector of targeted DoS (send so many pubkeys under some subrange corresponding to victim leader's slot), given publicly available deterministic next epoch's leader schedule.
But, I think that's tolerable given that there is already easier attack with similar threat profile: just flood the victim leader by burst TXes for some specific slot.
Still, If forced to mitigate, I think cloning the whole Pubkey set is required and then .iter().chunk(.len() / SLOT_COUNT)-ing on it.

Alternatives:

  • scan whole account_index and collect rent when new epoch begins
    • (pro) most straightforward to reason and to implement.
    • (cons) too much sudden system load at the start of new epoch
  • upfront clone() of account_index.keys() at each epoch boundary and process .chunk() of it for each slot like this PR.
    • (pro) no need to resort to BTreeMap.
    • (cons) moderate cluster hiccup and ABI break on Bank/Snapshot; also must include that into trust chain in some way.
  • lookup by slot/slot range:
    • (cons) account updates aren't uniformly distributed across the slots in general
  • slot coalescence (WIP: [wip][abi-incompat.] Introduce background stale slot coalescence #9319):
    • (cons) as pointed, single AppendVec for several slots showed performance degradation in the past. Also, this solution still doesn't solve stale rent-due accounts and gaming problem.
  • stale slot/AppendVec eviction/unmap by LRU and on-demand mmap after eviction:
    • (cons) still too many unbound-number-of small AppendVec in the snapshot
  • cold-store stale accounts:
    • (cons) too much effort to implement; could implemented later if there is so much account storage need. hampers the accounts index under huge number of active pubkeys.
    • (cons) also, we need to revise economic design/fee for executing TXes on accounts in the cold-storage; otherwise, economically-efficient DoS attack is possible
  • maintain a HashSet<Pubkey> for rent-due accounts, separately:
    • (cons) can be another DoS vector when those account set gets large and we need a deterministic iteration algorithm.

(Also, I've lightly researched the rent mechanism of other blockchain projects and found there is no better solution. ;)

todo (once the direction is confirmed)

  • [ ] update docs for rents (let's do with another future pr, this pr is already big). Update docs for eager rent collection #10348
  • hard fork logic
  • write/fix tests
  • refactor the copy and paste
  • check perf. degradation of using BTreeMap over HashMap (doing right now)
  • warmup epochs & rent? what to do? (DONE: introduced constant cycle collection).

Fixes #9383

@ryoqun ryoqun added the work in progress This isn't quite right yet label Apr 16, 2020
@ryoqun ryoqun requested a review from sakridge April 16, 2020 13:38
runtime/src/accounts_index.rs Outdated Show resolved Hide resolved
runtime/src/accounts_db.rs Outdated Show resolved Hide resolved
runtime/src/accounts.rs Outdated Show resolved Hide resolved
Copy link
Member Author

@ryoqun ryoqun left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

?

@sakridge
Copy link
Member

Cool. I didn't review the code in-depth yet, but from the description and scanning it, it seems like a really good direction.

@ryoqun ryoqun force-pushed the eager-rent-collection branch 2 times, most recently from 52ef243 to 4f8fa22 Compare April 23, 2020 03:27
@ryoqun
Copy link
Member Author

ryoqun commented Apr 23, 2020

metrics is now working:

image

@codecov
Copy link

codecov bot commented Apr 23, 2020

Codecov Report

Merging #9527 into master will increase coverage by 0.1%.
The diff coverage is 97.7%.

@@           Coverage Diff            @@
##           master   #9527     +/-   ##
========================================
+ Coverage    80.4%   80.5%   +0.1%     
========================================
  Files         283     283             
  Lines       65868   66382    +514     
========================================
+ Hits        52995   53498    +503     
- Misses      12873   12884     +11     

run.sh Outdated Show resolved Hide resolved
runtime/src/accounts_index.rs Outdated Show resolved Hide resolved
assert_eq!(
range,
Pubkey::new_from_array([
0x02, 0x82, 0x5a, 0x89, 0xd1, 0xac, 0x58, 0x9c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think my math is correct:

[5] pry(main)> step = (0xffff_ffff_ffff_ffff / 12345)
=> 1494268454735484
[10] pry(main)> "%016x" % (step * 121)
=> "02825a89d1ac589c"

0x00, 0x00, 0x00, 0x00
])
..=Pubkey::new_from_array([
0x15, 0x3c, 0x1d, 0xf1, 0xc6, 0x39, 0xef, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
Copy link
Member Author

@ryoqun ryoqun Apr 24, 2020

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

[9] pry(main)> "%016x" % ((step * 1024) - 1)
=> "153c1df1c639efff"
[12] pry(main)> 1023 - 120 # as index (in test)
=> 903
[13] pry(main)> 1024 - 121 # as raw multiple (in this pry)
=> 903

@ryoqun ryoqun force-pushed the eager-rent-collection branch 2 times, most recently from 29c10f6 to 4cfe6a7 Compare April 25, 2020 10:17
@ryoqun ryoqun mentioned this pull request Apr 25, 2020
ci/test-checks.sh Outdated Show resolved Hide resolved
runtime/src/bank.rs Outdated Show resolved Hide resolved
runtime/src/bank.rs Outdated Show resolved Hide resolved
@ryoqun ryoqun changed the title [wip] Introduce eager rent collection Introduce eager rent collection Apr 27, 2020
@ryoqun
Copy link
Member Author

ryoqun commented May 18, 2020

status update (devnet): finally the count started to reduce... (the size isn't yet....)

image

@ryoqun
Copy link
Member Author

ryoqun commented May 18, 2020

I couldn't successfully launch a validator to devnet patched with #10099....

Too large for now.

Anyway, devnet will slowly reduce its snapshot size.
Also, these enlarged snapshot issue only manifests on the devnet, shouldn't affect tds, mainnet-beta.

@mvines
Copy link
Member

mvines commented May 18, 2020

@ryoqun - that store count graph looks pretty, can you add it to the main dashboard?

@ryoqun
Copy link
Member Author

ryoqun commented May 18, 2020

@mvines Sure! :)

@ryoqun
Copy link
Member Author

ryoqun commented May 18, 2020

@jstarry Thanks for reviewing!

@ryoqun doesn't this DOS the whole cluster?

Well, this isn't case. Hint: parallelization. :)

Sure, the victim leader won't be able to collect rent, but every leader after that will also try to collect rent from the DOS'd slot, right? The scary part of this DOS is that it can be prepared slowly by sending lamports to a pubkey subrange over the course of the entire previous epoch

Nice point! Yeah, I didn't explicitly mention about that attack scenario but subsequent leaders are free to parallelize the eager collection as much as they could. Though, I haven't implemented it. ;)

EDIT: Strictly speaking, it's a bit hard to scan subrange of BTreeMap in parallel. But, grouped (this happens when previous leaders couldn't handle previous eager rent collections) subrange scan of b-trees in general should be quite fast. :)

... without detection.

Well, such activity is easily observable because alive account pubkeys are always public information. However monitoring for such thing isn't implemented...

@ryoqun
Copy link
Member Author

ryoqun commented May 19, 2020

Oops, I just noticed AccountsDB::frozen_accounts would trigger panic with eager rent collection... Need to add an exception for that. FYI: @mvines

@mvines
Copy link
Member

mvines commented May 19, 2020

Yikes, ok. Thanks for the heads up. This'll block upgrading mainnet-beta to 1.1 at the end of the month

@jstarry
Copy link
Member

jstarry commented May 19, 2020

Hint: parallelization. :)

Ah 😄

(pro) the system load is well spread across an epoch because we can assume vast of pubkey space is uniformly distributed.

Under the new design, keys at the end of the range will be slightly more valuable since they will be valid for (currently) 2 more days than those at the beginning of the range. So I think system load will skew towards the end of the epoch. For instance, a simple client can always generate two accounts and choose the one towards the end of the range. Could we add a deterministic offset to avoid this?

EDIT: The above comment assumes that lazy rent collection is eventually removed

@ryoqun
Copy link
Member Author

ryoqun commented May 19, 2020

status update (devnet): The store count is reduced to the expected upper bound of around 432000.

image

@ryoqun
Copy link
Member Author

ryoqun commented May 19, 2020

@jstarry

Under the new design, keys at the end of the range will be slightly more valuable since they will be valid for (currently) 2 more days than those at the beginning of the range. So I think system load will skew towards the end of the epoch. For instance, a simple client can always generate two accounts and choose the one towards the end of the range. Could we add a deterministic offset to avoid this?

Yeah, this concern is real.

EDIT: The above comment assumes that lazy rent collection is eventually removed

Well, lazy rent collection won't be removed due to the very reason you just mentioned. Then, problem solved. :)

So, even after the eager rent collection is fully enabled, we always collect rent when accessed for the given epoch.

@jstarry
Copy link
Member

jstarry commented May 19, 2020

Cool, agreed! So rent_epoch will stick around?

@ryoqun
Copy link
Member Author

ryoqun commented May 19, 2020

@jstarry Not necessarily. We could remove it because the slot at which the old state of any given account was updated is computable easily. Otherwise, it would mean we don't have deterministic set of all alive accounts at any moment... ;)

Moreover, for program reentrant thing, it could be morphed into more granular last_modified_slot: Slot or something off course. :)

@ryoqun
Copy link
Member Author

ryoqun commented May 19, 2020

the slot at which the old state of any given account was updated is computable easily.

So it means we could infer whether we already collected the rent or not for the current epoch easily.

@mvines
Copy link
Member

mvines commented May 19, 2020

Oops, I just noticed AccountsDB::frozen_accounts would trigger panic with eager rent collection... Need to add an exception for that. FYI: @mvines

@ryoqun - why would eager rent collection affect the rent-exempt frozen accounts?

@ryoqun
Copy link
Member Author

ryoqun commented May 19, 2020

@mvines I haven't tested but I'm sure my code reading is right: When frozen account is eagerly collected (this always happens regardless of rent-exempt or not to avoid #8931), we store the account via Bank much like other usual updates, so it changes the account hash due to the incremented account.rent_epoch and the update hits:

if hash != frozen_account_info.hash {

We could add a special condition there to white-list eager rent collection update.

Otherwise it means there is a bug where we don't collect all of accounts or frozen account doesn't catch account updates. ;)

@mvines
Copy link
Member

mvines commented May 19, 2020

account.rent_epoch isn't included in the frozen account hash, I think we're ok?

fn hash_frozen_account_data(account: &Account) -> Hash {
let mut hasher = Hasher::default();
hasher.hash(&account.data);
hasher.hash(&account.owner.as_ref());
if account.executable {
hasher.hash(&[1u8; 1]);
} else {
hasher.hash(&[0u8; 1]);
}
hasher.result()
}

@ryoqun
Copy link
Member Author

ryoqun commented May 19, 2020

@mvines Lucky! Then, we're ok. I just didn't notice there is different account hashing for frozen account and you even have a test for account.rent_epoch:

account_modified.rent_epoch += 1;

Just cool. :)

@ryoqun
Copy link
Member Author

ryoqun commented May 21, 2020

Status update (devnet): eager rent collection is working fine.
Status update (tds): TDS just enabled eager rent collection and the slot is counting. :)

@mvines
Copy link
Member

mvines commented May 21, 2020

🎊 🎊 🎊

@ryoqun
Copy link
Member Author

ryoqun commented May 22, 2020

status update (tds): 20 hours passed. No issue. And, as expected, tds doesn't experiencing the snapshot bloat not like devnet:

image

@ryoqun
Copy link
Member Author

ryoqun commented Jun 3, 2020

Finally, this will be enabled on the mainnet-beta on epoch 34 in 18 hours. I'm planning to watch the moment, personally. :)

@ryoqun
Copy link
Member Author

ryoqun commented Jun 4, 2020

Finally, this went alive on mainnet-beta!!!

Also it seems that we managed to avoid #10206, so as for the master branch & mainet-beta compatibility #10163 , this should be resolved after exactly this single epoch 34, otherwise it's bug.. ;)

[2020-06-04T07:41:49.430214371Z INFO  solana_runtime::bank] bank frozen: 14687982 hash: 325efEvsEEdoAinGL9dYeRjGweQXNASHLEwSLds2D86y accounts_delta: CgDnsqSL4wWAQVJToTKpYPg3bV4xyF88BfXp6vGFzbdY signature_count: 52 last_blockhash: 42wmsD9TUstVefs63uVZfamGi47QHJrkdcHBGLG2XcbM capitalization: 488630431390252238
[2020-06-04T07:41:49.679637389Z INFO  solana_runtime::bank] bank frozen: 14687983 hash: 5FttUBrRuxKQ4kQRGi4ghhbf5T3jCSjo15DX9S4ENPsh accounts_delta: EWE6mDmzrTiqXZbwBPV2Jq9BCp4biXyPygcVY5jouT5m signature_count: 107 last_blockhash: 7H2NJCL7qS9jJgSjvA6yTMnqLQtuKvWrK6CqNvQAGW4n capitalization: 488630431389717238
[2020-06-04T07:41:49.970694795Z INFO  solana_runtime::bank] bank frozen: 14687984 hash: CisUdmkcXS9E2tESyXxGW7jBE9NbrqFiHsYFBy6vvopB accounts_delta: AK4kseRCi4eEcZiJkzw6AeNUjVRF7evVgXZwdwZXKV87 signature_count: 132 last_blockhash: 9cshGMcZrPYvAU7VCXy5baCpbJVjwocgwpV86qXLwn4b capitalization: 488630431389057238
[2020-06-04T07:41:50.234723220Z INFO  solana_runtime::bank] bank frozen: 14687985 hash: CgwbWCvpoB6SBixyU3q7mieVzFDZ19N8Egjf7WfGBQKa accounts_delta: J4PqGyCsb3pwekUnQ3LWPXMbPJPqoVsctgdqqcwa6Ljr signature_count: 31 last_blockhash: CGvmw3MdZCKSEswu2eUjfgY75n2hFxyoXonFHC7mkML capitalization: 488630431388902238
[2020-06-04T07:41:50.476518897Z INFO  solana_runtime::bank] bank frozen: 14687986 hash: BLDTJUAUnxFRHRk9CkSxY4mBvzu7yrgSa7bv9dcpJWfs accounts_delta: FShMn4MDvUEsUNMNKTzpKiF59Fk8A2x2Nj3dNexAmieM signature_count: 30 last_blockhash: CWePKbzVhu2SY5wPJw3H6wGPuUCYtWhUH8LAxAgnQzNk capitalization: 488630431388752238
[2020-06-04T07:41:50.740731907Z INFO  solana_runtime::bank] bank frozen: 14687987 hash: 4uTPM8sREMqZm7emFLHhUsGtSUN43iHT5amf5c1RQRdo accounts_delta: BYL2AcEQqykAihHropHHqsaFqPCJpXE9Tvv9eGsPPrEg signature_count: 31 last_blockhash: 2MqdjsBk8DK4tSdECTA6as6iNifYedKxVRixMV1WiuWs capitalization: 488630431388597238
[2020-06-04T07:41:50.957765732Z INFO  solana_runtime::bank] bank frozen: 14687988 hash: 67svdzCQJv7iMFJU4rEVMreEhm47jvq1kM8aRjpo3jQQ accounts_delta: DrLyufQqpHS2axcSkamwsvVEXsmQXHSzV6KkCfyDNSeC signature_count: 12 last_blockhash: 6nGdKrQvE9KAycE1M6ubdj6tiLPN7Zt4F8pgexmwpqts capitalization: 488630431388537238
[2020-06-04T07:41:51.202050892Z INFO  solana_runtime::bank] bank frozen: 14687989 hash: A6wAAyk7vYmwS84qjWRq7knaGpc77LDDLDgSStPdgy64 accounts_delta: Cy1LYa6hojzXU46UFM7j7EbpTXQB8cWp5VkbqSz7p7N1 signature_count: 2 last_blockhash: BdtfyP25wnVeBCahwVoYZQb2ddBRcrJuabebNVVBw3eD capitalization: 488630431388527238
[2020-06-04T07:41:51.398992781Z INFO  solana_runtime::bank] bank frozen: 14687990 hash: FVGVUDyABp8ak4Shk8tackgMb9PyLperFoaCsRC2m2we accounts_delta: 2n9dVyLi4CB9fUpboAwB3fYVrfmhDjkb3A9dcveZJ1wW signature_count: 1 last_blockhash: HXtVBCmAn2DM6SPJ8ryojHkHephHapx4nojhRnb8Su68 capitalization: 488630431388522238
[2020-06-04T07:41:51.636499683Z INFO  solana_runtime::bank] bank frozen: 14687991 hash: 14BZaomYQmAWjjpyb6GqnFTVWGDx4G3qbgS4EivoZuRW accounts_delta: Dr7LDetcGKPKu92kUzY5x8ZczmrCuFnHd9Ekr8wLf5FY signature_count: 0 last_blockhash: 4Sbj9kG9WQmf7t8EcSJroNugRaFSpbzn2w7Zh8biH7ZS capitalization: 488630431388522238
[2020-06-04T07:41:51.829997341Z INFO  solana_runtime::bank] bank frozen: 14687992 hash: FKbMerzZuYUFjURM1JrzZcuhbkWSRAvT5JGmgzb1yXPe accounts_delta: EnUGEYvX56UjuFx2nqEwiyQjz7Hhn1XZjjf6vAgqx1Ea signature_count: 3 last_blockhash: 67qD3RBJGHdVXewobzPXSVpnkQJWhYPHoXByHYoTyaTJ capitalization: 488630431388507238
[2020-06-04T07:41:52.016862033Z INFO  solana_runtime::bank] bank frozen: 14687993 hash: 5ZWAXsHLp4EeJ2qwFkvEVKm1XSmZWyd1jKEWLyvBoctR accounts_delta: 8z31Vc4ht9MKfad3GT4vZfrtH4iy6Rs5eWiAXPQ7oYhy signature_count: 1 last_blockhash: 9gJcTE3XbwrCW1GXTZbHhNQMfKMZkmM5aM7KuwDysbVq capitalization: 488630431388502238
[2020-06-04T07:41:52.244799758Z INFO  solana_runtime::bank] bank frozen: 14687994 hash: 12WbFuJAsCzcozm2C2jP3mzt6C5AARMSa7N9mTREpxUg accounts_delta: 325TcRNqRtdkCghHcJsYBsQDmtjRf8eTiEjBUWTuDuv2 signature_count: 0 last_blockhash: DAfs86RA123KGtSFVtRR8joLrgCebuW7nkXVEinSqcPF capitalization: 488630431388502238
[2020-06-04T07:41:52.454510221Z INFO  solana_runtime::bank] bank frozen: 14687995 hash: 6L1pQr2YVr6BT8xjTf1aY5oK8B3R4BxqHEdyhN5ojaek accounts_delta: 5PzZsbSK9RfyhJW5x8JBzzmm9mn7ukWv5eSeaVZJgteF signature_count: 0 last_blockhash: Dz8aoM6UpL8VbeXUa7g3UuHsfN2ggAr6MMBLi4nko38p capitalization: 488630431388502238
[2020-06-04T07:41:52.729784775Z INFO  solana_runtime::bank] bank frozen: 14687996 hash: BnfM8ar71LAfuFinTJNzKwPdqboccZZrBHp9CpPzmHcV accounts_delta: Diu5oE7YP5qbMntnB3WoxsrA9W8Ho8pTyWvSgQNst8N3 signature_count: 185 last_blockhash: 758mZaasv9QTwt1yEKo6naR4zw64abmvHLM5X3rNDd5v capitalization: 488630431387577238
[2020-06-04T07:41:52.959435002Z INFO  solana_runtime::bank] bank frozen: 14687997 hash: 47SkrXtoxxQkFBHn4YXX8jawP1DJyzqnQ7VHESHXK7gu accounts_delta: GxEc2t3i9xAa8AER1FrVqqR3jx8aVEeiFSCYLx7o6FeK signature_count: 68 last_blockhash: 7xyDkhfEQocb2WPdusqP31czcaMNUynpNCSmgLyaF71i capitalization: 488630431387237238
[2020-06-04T07:41:53.182555128Z INFO  solana_runtime::bank] bank frozen: 14687998 hash: GG75YPCQcUq2VQGBjFEzp5xzSRqa6HziWSULwetdnN9d accounts_delta: 5eyLJAc1RQpnJqAUhX6BAC1Gw6MiiCRgTeao6AqitcJd signature_count: 42 last_blockhash: J2vGieGn1kVW4qefCxrqasWn316kbDBCd9aDqRYmev8f capitalization: 488630431387027238
[2020-06-04T07:41:53.434346132Z INFO  solana_runtime::bank] bank frozen: 14687999 hash: DheAfP4hxA25J9X8FN15NMAZwzyj1rniZJMfbyCPDXik accounts_delta: 3XvghY6jEVxToCuNhLCgemC72heiVyXtcMQAcaePvCAN signature_count: 60 last_blockhash: 9DJKMX2axsBWKw1EmGQpoKRAyTNeCHVm1EvroGKS5pwK capitalization: 488630431386727238
[2020-06-04T07:41:53.747778182Z ERROR solana_runtime::bank] pubkey_range_from_partition: (0-0)/432000 [42700796466919]: [00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00]-[00, 00, 26, d6, 0d, ce, 16, e7, ff, ff, ff, ff, ff, ff, ff, ff, ff, ff, ff, ff, ff, ff, ff, ff, ff, ff, ff, ff, ff, ff, ff, ff]
[2020-06-04T07:41:53.750187218Z INFO  solana_runtime::bank] bank frozen: 14688000 hash: AmR9yQfDLdKjFT8thaGrKUTFD6GZVgqKmVT3ZMApm65a accounts_delta: oqbQgqMtrC4KnHMTNzoHJ9vXDGeZmBmy25vkDAPJq9N signature_count: 135 last_blockhash: J3s6zE8LkL9ZvjqeoU5SuscknCL2W9YythQ7nPg9rvJe capitalization: 488630431386052238
[2020-06-04T07:41:54.026714271Z ERROR solana_runtime::bank] pubkey_range_from_partition: (0-1)/432000 [42700796466919]: [00, 00, 26, d6, 0d, ce, 16, e8, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00]-[00, 00, 4d, ac, 1b, 9c, 2d, cf, ff, ff, ff, ff, ff, ff, ff, ff, ff, ff, ff, ff, ff, ff, ff, ff, ff, ff, ff, ff, ff, ff, ff, ff]
[2020-06-04T07:41:54.028971398Z INFO  solana_runtime::bank] bank frozen: 14688001 hash: 9vvVZzFh4t2vyrx6qWvwMb1C974dfPUQpdug4dN9Xx26 accounts_delta: 2q9xiXeD4XzTq2EKdf61wB6u5t8GxkxVUhJGWukSCtXJ signature_count: 103 last_blockhash: B71EnBPqeZ3T7hHjP2biXpuE2tkcKYLWhHaLMk8ApDM1 capitalization: 488630431385537238
[2020-06-04T07:41:54.266788148Z ERROR solana_runtime::bank] pubkey_range_from_partition: (1-2)/432000 [42700796466919]: [00, 00, 4d, ac, 1b, 9c, 2d, d0, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00]-[00, 00, 74, 82, 29, 6a, 44, b7, ff, ff, ff, ff, ff, ff, ff, ff, ff, ff, ff, ff, ff, ff, ff, ff, ff, ff, ff, ff, ff, ff, ff, ff]
[2020-06-04T07:41:54.269297343Z INFO  solana_runtime::bank] bank frozen: 14688002 hash: 4zCkDr27g8L6yVmyRhicamwUAXhdHdvAGXdrfRmKKUth accounts_delta: 3yZMNYoNmUYHccRn1yKzKnNzG5cvH76ZQMZAMy2zXEWN signature_count: 23 last_blockhash: HWhugA2U6nwFJErNepohiM54RJKQB52YXE5KrtE7evW1 capitalization: 488630431385422238
[2020-06-04T07:41:54.513437818Z ERROR solana_runtime::bank] pubkey_range_from_partition: (2-3)/432000 [42700796466919]: [00, 00, 74, 82, 29, 6a, 44, b8, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00]-[00, 00, 9b, 58, 37, 38, 5b, 9f, ff, ff, ff, ff, ff, ff, ff, ff, ff, ff, ff, ff, ff, ff, ff, ff, ff, ff, ff, ff, ff, ff, ff, ff]
[2020-06-04T07:41:54.516249240Z INFO  solana_runtime::bank] bank frozen: 14688003 hash: 7F1kFZYH9b13xug2jim2reYryS7friEYRWpqDVavX21E accounts_delta: 4Cny6b9xpZ8LRrra9FYMCjRYPJh1peibNShrf4gRoNhn signature_count: 83 last_blockhash: 45idNxgTttZtQQhV1FfDPMKFdhhRSZawkTCHXLguWiSe capitalization: 488630431385007238
[2020-06-04T07:41:54.785261588Z ERROR solana_runtime::bank] pubkey_range_from_partition: (3-4)/432000 [42700796466919]: [00, 00, 9b, 58, 37, 38, 5b, a0, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00]-[00, 00, c2, 2e, 45, 06, 72, 87, ff, ff, ff, ff, ff, ff, ff, ff, ff, ff, ff, ff, ff, ff, ff, ff, ff, ff, ff, ff, ff, ff, ff, ff]
[2020-06-04T07:41:54.788175227Z INFO  solana_runtime::bank] bank frozen: 14688004 hash: 4AZcdqkLTFfuzhomq7x9fnZME8D4aQszf51w5JYuL8xz accounts_delta: D4JfM3bmQHKR4vA9p7295PWyqHH7vaC1mGg69Ly9yCYZ signature_count: 103 last_blockhash: DzTSm7ANzAUKhyAJ1p9FAh2gAt5zCveArYcrkLP2s4u capitalization: 488630431384492238
[2020-06-04T07:41:55.041417604Z ERROR solana_runtime::bank] pubkey_range_from_partition: (4-5)/432000 [42700796466919]: [00, 00, c2, 2e, 45, 06, 72, 88, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00]-[00, 00, e9, 04, 52, d4, 89, 6f, ff, ff, ff, ff, ff, ff, ff, ff, ff, ff, ff, ff, ff, ff, ff, ff, ff, ff, ff, ff, ff, ff, ff, ff]
[2020-06-04T07:41:55.045265717Z INFO  solana_runtime::bank] bank frozen: 14688005 hash: 4z4hSQ1snPsLjZ4a9tiwUfwfcfq8Dgo58VXEqGwhFH1u accounts_delta: 3b2Yx2FmtSGggkhH7RxzFvKFmQV6Bhhogtq7HhZSudjj signature_count: 54 last_blockhash: 9N6Lz2km24nVrrLZ9AdNp6GZLE7FQXKaHq7zDGpAQyNd capitalization: 488630431384222238
[2020-06-04T07:41:55.268227933Z ERROR solana_runtime::bank] pubkey_range_from_partition: (5-6)/432000 [42700796466919]: [00, 00, e9, 04, 52, d4, 89, 70, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00]-[00, 01, 0f, da, 60, a2, a0, 57, ff, ff, ff, ff, ff, ff, ff, ff, ff, ff, ff, ff, ff, ff, ff, ff, ff, ff, ff, ff, ff, ff, ff, ff]
[2020-06-04T07:41:55.270515213Z INFO  solana_runtime::bank] bank frozen: 14688006 hash: Crz4JhqVqu2KCCPt8MwcR5v1AVC9j1nfT4TEALmsffs7 accounts_delta: 8sohV5Se9NZECjvrinDaom3Z5BqsXaNs1PAjbs1Ag22h signature_count: 5 last_blockhash: DXvaLArCzBcHP879KsniiNDCcnLYL43hCU2NzjNqcPzq capitalization: 488630431384197238
[2020-06-04T07:41:55.591566665Z ERROR solana_runtime::bank] pubkey_range_from_partition: (6-7)/432000 [42700796466919]: [00, 01, 0f, da, 60, a2, a0, 58, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00]-[00, 01, 36, b0, 6e, 70, b7, 3f, ff, ff, ff, ff, ff, ff, ff, ff, ff, ff, ff, ff, ff, ff, ff, ff, ff, ff, ff, ff, ff, ff, ff, ff]
[2020-06-04T07:41:55.593732096Z INFO  solana_runtime::bank] bank frozen: 14688007 hash: GaiLkfT2uNFT4AkKy9NB6P9KmFncoQL4HNkrn1C5GaSo accounts_delta: 63Bjr4Bv5zydGYJVwXZ27892a9L2PbnoxNg6isAW4u2x signature_count: 3 last_blockhash: 49qvgi3RYtcWVfRtMacdWAfxK4b6HyDjCVhdviC2hWR3 capitalization: 488630431384182238
[2020-06-04T07:41:55.982103080Z ERROR solana_runtime::bank] pubkey_range_from_partition: (7-8)/432000 [42700796466919]: [00, 01, 36, b0, 6e, 70, b7, 40, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00]-[00, 01, 5d, 86, 7c, 3e, ce, 27, ff, ff, ff, ff, ff, ff, ff, ff, ff, ff, ff, ff, ff, ff, ff, ff, ff, ff, ff, ff, ff, ff, ff, ff]
[2020-06-04T07:41:55.986281693Z INFO  solana_runtime::bank] bank frozen: 14688008 hash: BiqcB1xhrA3TcX4NmLsSAJbZnhFvQ2DLCmiBm7dd8bLD accounts_delta: A8ym4FcfKUwjVVEGa2gJ89PAyDDTXgbikukeRroMc9Vj signature_count: 184 last_blockhash: 6MUCsGRWaKvLxr1cdf3h5PeAYqGLw8R53ZiMnwoLdWwk capitalization: 488630431383262238
[2020-06-04T07:41:56.254147498Z ERROR solana_runtime::bank] pubkey_range_from_partition: (8-9)/432000 [42700796466919]: [00, 01, 5d, 86, 7c, 3e, ce, 28, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00]-[00, 01, 84, 5c, 8a, 0c, e5, 0f, ff, ff, ff, ff, ff, ff, ff, ff, ff, ff, ff, ff, ff, ff, ff, ff, ff, ff, ff, ff, ff, ff, ff, ff]
[2020-06-04T07:41:56.256389788Z INFO  solana_runtime::bank] bank frozen: 14688009 hash: 6t6yH48BBDHkcgdcs1zEbTHtq4m1yRFLi2dqEFx42y6z accounts_delta: En2jG17vaRdVhDANmpcZ9uVDxHRHdNz6wz17ewpWRuNj signature_count: 5 last_blockhash: E9ZX43bexgV3of8sXFdm2Bk7nBQMycwxi8pydoiZunUC capitalization: 488630431383237238
[2020-06-04T07:41:56.490795229Z ERROR solana_runtime::bank] pubkey_range_from_partition: (9-10)/432000 [42700796466919]: [00, 01, 84, 5c, 8a, 0c, e5, 10, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00]-[00, 01, ab, 32, 97, da, fb, f7, ff, ff, ff, ff, ff, ff, ff, ff, ff, ff, ff, ff, ff, ff, ff, ff, ff, ff, ff, ff, ff, ff, ff, ff]
[2020-06-04T07:41:56.493313085Z INFO  solana_runtime::bank] bank frozen: 14688010 hash: C8ZZ2hKu41dWTaMoXQvgbdzzx7xRzT4PTPLW1YFMFi9u accounts_delta: He8N96mrmi8MHv4RJds7HTCGtjr7TWhvdXjD2FcbPbrd signature_count: 29 last_blockhash: 7bL9YQPemYuzh2ks8e37VPCmiBNc2RjKFiu2rH2fH2Ec capitalization: 488630431383092238
[2020-06-04T07:41:56.764087691Z ERROR solana_runtime::bank] pubkey_range_from_partition: (10-11)/432000 [42700796466919]: [00, 01, ab, 32, 97, da, fb, f8, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00]-[00, 01, d2, 08, a5, a9, 12, df, ff, ff, ff, ff, ff, ff, ff, ff, ff, ff, ff, ff, ff, ff, ff, ff, ff, ff, ff, ff, ff, ff, ff, ff]
[2020-06-04T07:41:56.770894499Z INFO  solana_runtime::bank] bank frozen: 14688011 hash: AgpsFzbrDFBhtjbF4vUdGwLB44Tm2GraKn7bpKpqBWrp accounts_delta: FmFQ6wgTdWBxMiHDT1M6Vx6u5qckvJTPac6VREjBX82w signature_count: 98 last_blockhash: 98a7jdFXx34hmCPSDPxxCuyeZXhD4y8vzf3FuPP6JFRV capitalization: 488630431382602238
[2020-06-04T07:41:57.087262835Z ERROR solana_runtime::bank] pubkey_range_from_partition: (11-12)/432000 [42700796466919]: [00, 01, d2, 08, a5, a9, 12, e0, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00]-[00, 01, f8, de, b3, 77, 29, c7, ff, ff, ff, ff, ff, ff, ff, ff, ff, ff, ff, ff, ff, ff, ff, ff, ff, ff, ff, ff, ff, ff, ff, ff]
[2020-06-04T07:41:57.092625330Z INFO  solana_runtime::bank] bank frozen: 14688012 hash: 34jnzZYHCjxHuz9iPWmtjWxHbLyKsudXXQzHK88eSoDG accounts_delta: 7Z5vxzzZBzVcvAaPNZWZsHciJczAWsgNQ6ryZxrPCGP4 signature_count: 177 last_blockhash: 13QCwYTJEZKNMHPMaANwFLExYmJLtMuMTNSP3MVGAiVJ capitalization: 488630431381717238
[2020-06-04T07:41:57.373550514Z ERROR solana_runtime::bank] pubkey_range_from_partition: (12-13)/432000 [42700796466919]: [00, 01, f8, de, b3, 77, 29, c8, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00]-[00, 02, 1f, b4, c1, 45, 40, af, ff, ff, ff, ff, ff, ff, ff, ff, ff, ff, ff, ff, ff, ff, ff, ff, ff, ff, ff, ff, ff, ff, ff, ff]
[2020-06-04T07:41:57.378195186Z INFO  solana_runtime::bank] bank frozen: 14688013 hash: Hdg7aGhPS43bwg15CKesutuowJriWXA72ZqKmm33N6Bb accounts_delta: BRLu2nGJEq3EeQvY58DbBy5DKKVjAKQWZyKrqft9FmCM signature_count: 10 last_blockhash: HbKASdjhNNrFkLovbxub6ScadshGntLMeZumUdrjjsTE capitalization: 488630431381667238

@ryoqun
Copy link
Member Author

ryoqun commented Jun 4, 2020

image

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

The number of account files on devnet is too high
5 participants