Smart contract development in Web3 has helped to create a lot of dApps however it is not efficient for xdApps. At Breakpoint 2022, Csongor Kiss, Software Engineer with Wormhole, defined xdApps as applications created with smart contracts on several chains. It’s a cross-chain application.
According to Kiss, the properties of traditional smart contracts that make them not efficient for xdApps include synchronous execution, atomic nature of transactions, and shared state between transactions. To create an xdApp, transactions need to be concurrent, and currency is hard.
Carrying out cross-chain development requires an asynchronous system, initiates partial state changes, and non-atomic workflows, Kiss added. While Aptos, Solana, and Avalanche are some of the chains that have some of these requirements, making it possible to create cross-chain dApps, there are no standard framework devs can use to replicate such applications.
Proposed xdApp framework
Kiss shared that for developers to begin to create xdApps, they can adopt models of thinking from the start such as using a tool that will make message passing between the different chains easy. This would enable the chains to communicate with each other without less conflict between the intricate features of the chain like their memory models, Kiss explained. One tool that can do this is the Wormhole. It’s a communication bridge between Solana and other chains that allow users to transfer tokenized assets at a low cost.
Design a “session state machine” that allows multiple components on different chains to communicate with each other, Kiss shared. Doing this will help Devs think about potential error cases for users as well as how to solve them.
Other recommendations he gave are to keep the interactive structure simple by minimizing the number of messages that go across chains while doing more with one transaction, manage the state locally to a session to impede race conditions and initiate a shared state when users’ transactions are complete.
The software engineer also advised that devs should look at the actor model as he sees programming languages integrating it as well as multiparty session types.