주요 콘텐츠로 건너뛰기

Atomic Transaction Chains (ATCs)

Overview

Atomic Transaction Chains (ATCs) enable multiple child chain transactions to be tightly linked and confirmed as a single unit - either all transactions in the chain are confirmed together, or none are. This is achieved through two new transaction appendices that allow transactions to reference each other: one marks a transaction as a parent, and the other as a child, forming a sequential chain of dependencies.

Note: The terms “parent” and “child” in this context refer solely to relationships between transactions on the same child chain. They should not be confused with the Ardor platform’s architecture of the Parent Chain (Ardor) and Child Chains.

How It Works

A parent transaction is valid only if its referenced child transaction is also present during validation.

A child transaction may enter the unconfirmed pool independently but cannot be included in a ChildBlock unless its parent is also present.

A child transaction can also act as a parent in a longer atomic chain, allowing for multi-step dependencies.

All transactions in the chain must share the same timestamp and deadline, ensuring they expire simultaneously.

Note: Bundlers should process the entire chain as an all-or-none unit. This may require existing Bundler Filters to be updated to handle entire atomic chains. A new ok() method has been added to Bundler.Filter for this purpose. By default, if the filter does not implement the new ok() method, then all transactions in the chain must be allowed by the old ok() method for the chain to be accepted.

Use Cases

Trustless Exchange of Virtual Holdings

Currently, Ardor allows users to create, transfer, and trade various virtual holdings such as assets, currencies, digital goods, and aliases. Each holding is managed by its own subsystem - for example, assets are traded on the Asset Exchange for coins like IGNIS, while aliases can be sold for IGNIS. Supporting new types of exchange pairs (e.g., asset-to-asset trades) requires complex protocol changes.

ATCs provide a generic, one-step solution for exchanging any type of virtual holding for any other type, removing the need for complex atomic swaps. This opens the door for custom decentralized exchanges without protocol-level changes.

Funding User Transactions Without Operating a Bundler

Currently, decentralized applications (dApps) that want to fund user transactions must operate a funding bundler. Only one ChildBlock can be included per Ardor block, which may lead to competition among dApps for this limited space.

With ATCs, dApps can sponsor user transactions without running a bundler. A user transaction that pays zero fees can be paired with a dApp-issued transaction that covers the fees for both.

Multi-Party Contract Execution

When two or more parties agree to interact beyond simple exchanges - such as entering into contracts - ATCs provide a simple solution without requiring escrow services or smart contracts. On other platforms, smart contracts must be executed by someone who pays a network fee.

With ATCs, transaction fees are only paid when the entire chain is successfully executed. This allows parties to prepare and share their signed transactions without fear of premature execution or incurring fees, offering a more trustless and cost-effective alternative for collaborative agreements.