Closed aionbot closed 5 years ago
Comment by jeff-aion (on Thursday Oct 18, 2018 at 15:05 GMT)
The plan for step 1 is to modify the Avm.run()
method to have the following shape:
Future<TransactionResult>[] run(TransactionContext[]);
The given array of TransactionContext
will represent a block of transactions which the AVM can handle and which must write-back in the given order (but execute in any order so long as the write-back order appears in-order). Each returned Future<TransactionResult>
corresponds to a single TransactionContext
and will block until the result is available.
An additional rule we will be adding to this contract is that no call can be made until all the Future
objects returned by the previous call have been observed. This is to ensure that the system remains lock-step around the processing of these contiguous transaction groups.
This interface has a few important properties:
Issue created by jeff-aion (on Monday Oct 15, 2018 at 21:27 GMT)
This has 2 angles which need to be addressed:
Avm
API: this is required for testing the concurrent executor but also making sure that larger transaction batching is exposed at the AVM level in the stack