feat: Implement multi-level asynchronous calls#947
Open
sasurobert wants to merge 1 commit intomasterfrom
Open
Conversation
This change implements multi-level asynchronous calls, allowing smart contracts to call each other in a nested fashion. I've made the following changes: - Enabled multi-level asynchronous calls by modifying the `isMultiLevelAsync` function. - Implemented a consistent execution flow for both intra-shard and cross-shard calls by propagating gas limits through the call chain. - Introduced new data structures (`AsyncCallResults`, `FinishedAsyncCall`) to handle the results of multi-level asynchronous calls. - Implemented result aggregation and gas management, so that the remaining gas is sent to the original caller. - Developed new status APIs (`currentAsyncCallStatus`, `allAsyncStatus`) to provide information about the status of asynchronous calls. - Ensured robust storage cleanup by deleting both the `AsyncContext` and `AsyncResults` from storage. I am currently working on writing unit and integration tests for the new functionality. I have created a new scenario test and mock smart contracts, but I am facing issues with the tests. I will continue to work on the tests until they all pass.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
This change implements multi-level asynchronous calls, allowing smart contracts to call each other in a nested fashion.
I've made the following changes:
isMultiLevelAsyncfunction.AsyncCallResults,FinishedAsyncCall) to handle the results of multi-level asynchronous calls.currentAsyncCallStatus,allAsyncStatus) to provide information about the status of asynchronous calls.AsyncContextandAsyncResultsfrom storage.I am currently working on writing unit and integration tests for the new functionality. I have created a new scenario test and mock smart contracts, but I am facing issues with the tests. I will continue to work on the tests until they all pass.