Let users jump right into the world of decentralized applications by hiding the complexities of the blockchain.

Photo by Rob Hampson on Unsplash

Into the CometVerse

Last week we announced the mainnet release of CometVerse, an NFT-based dApp that showcases the Comet web3 provider and innovative features of the Vechain blockchain.

See it live at https://beta.cometverse.com

Made Possible with Vechain

Vechain is an EVM-based, Proof-of-Authority blockchain that launched in 2018. In addition to being generally Ethereum and web3 compatible, Vechain adds several meta-transaction features natively to its core protocol.

Meta-transactions are a class of transactions that implement additional logic, allowing dApps to abstract away many of the complexities of the blockchain. In CometVerse, we use Fee Delegation, Atomic Transactions, and Transaction Dependency.

Fee Delegation (MPP)

Paying for gas fees on behalf of the transaction sender is key to constructing a freemium model within a dApp. Exchange signups and transaction fees can deter those who have not yet fully engaged with the application or the blockchain protocol.

Fee delegation allows dApps to pay for some or all of their users’ transaction fees to onboard them to their application without friction.

We use fee delegation throughout CometVerse to make getting started frictionless. New users can create their first comet collectible and participate in item giveaways without needing to first purchase crypto.

Atomic Transactions (MTT)

Traditional transactions allow only a single call to a contract function. On Ethereum, one can call multiple functions atomically using wrapper contracts but at the cost of obfuscating the metadata of the transaction such as msg.sender.

Vechain supports multifunction atomic transactions natively as part of its protocol, allowing developers to batch multiple atomic function calls into one transaction.

Comet collectibles are implemented as several separate NFTs. Updating the appearance can result in multiple calls to different contracts. Using atomic transactions we are able to batch these calls into a single transaction so that the end-user only has to sign once.

Transaction Dependency (DependsOn)

If atomicity is not a requirement, transaction dependency can still be used to ensure execution order of multiple transactions. Transactions that specify a dependency will not be executed until the required transactions have been included in a block.

We use transaction dependency to create a background queue of blockchain state updates. This allows CometVerse to immediately continue the dApp front-end experience in most cases even though the transaction that updates the state on the blockchain has not yet been committed. Careful error checking before transaction creation allows our optimistic state updates to nearly always be successful, removing the need to block the UI until the transaction is confirmed.

Further Reading