What does this PR do?
Our node needs to keep up with the head of the chain. In other words, all announced blocks must be executed, and their states must be kept in memory before being finalized. This PR implements the functionality to do so. It also exposes a runtime API interface. This makes it more readable and easily extensible. A few other changes were made along the way that improved performance (async calls) and structured the project in a better way.
Why are these changes needed?
We need the latest state of the chain to validate transactions.
Description
What does this PR do? Our node needs to keep up with the head of the chain. In other words, all announced blocks must be executed, and their states must be kept in memory before being finalized. This PR implements the functionality to do so. It also exposes a runtime API interface. This makes it more readable and easily extensible. A few other changes were made along the way that improved performance (async calls) and structured the project in a better way.
Why are these changes needed? We need the latest state of the chain to validate transactions.
Fixes #574 and #573
Checklist: