Skip to content

Conversation

sasurobert
Copy link
Contributor

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 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.
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.

1 participant