perlin-network / wavelet

Write once, run forever. Deploy robust, scalable, decentralized WebAssembly applications on Wavelet.
https://wavelet.perlin.net
MIT License
259 stars 41 forks source link

Keep track of finalized transaction IDs in ledger state to prevent double spending upon state syncing, improve overall security of state syncing, cleanup state syncing code, and speed up transaction syncing. #419

Closed iwasaki-kenta closed 4 years ago

iwasaki-kenta commented 4 years ago

Still need to update ledger integration tests to reflect these changes. @hasyimibhar @AhmadMuzakkir are you available to assist?

ledger, collapse, db: save ids of finalized transactions to database after applying account updates to ledger state, load finalized transactions upon init of ledger, and re-instantiate finalized transactions upon finalizing state syncing ledger, sync, testutil: move syncing-related code to dedicated SyncManager module, and update test code ledger: speed up rate in which transaction syncing occurs from 3 seconds to 1 second for faster finality api, ledger: remove sync status of node temporarily (we should cleanup node lifecycle later) avl, genesis, db: allow IteratePrefix to return early internal/backoff, sync: fork pkg for exponential backoff for syncing backoffs block, test/block: rename Count to LatestHeight

Fixes #395. #380