Step 1
The client implements a smart contract using an abstract class from
Asterizm and deploys
it to the required networks.
The _initAsterizmTransferEvent() method is used
to initiate
a cross-chain transaction on the contract. The data and parameters
of the cross-chain
transaction are transmitted to it.
The transaction can contain arbitrary information and one or multiple actions
(instructions)
to be performed on the destination networks.
Step 2
The client smart contract sends the received data and hash based on
the payload
generated at that moment xID, source chain id, destination chain id,
client smart
contract address in the source and destination chains.
Note: At this step, the key
parameters are formed,
which will further ensure the security of the cross-chain transaction, namely to
confirm its validity
and integrity in the destination chain.
Step 3
The Client off-chain module receives the cross-chain transaction payload and calls
initAsterizmTransfer() on the client’s smart contract in the source
network to continue
the cross-chain transaction.
Step 4
Before sending transaction proofs (hash and xID) to
the Initializer
contract, the Сlient’s smart contract performs a validity and integrity check of the
transaction by
comparing the hash, which is calculated based on the payload.
Note: This effectively mitigates the
risk of spam and
counterfeit transactions in the event of a compromise of the Client server.
Step 5
The Initializer smart contract verifies the transaction nonce to maintain the
sequence of
cross-chain transaction execution and sends the transaction proofs
(hash and
xID) along with unique parameters to the Translator smart
contract.
Note: When a data packet is received
on the
Initializer smart contract, the client is identified based on the destination chain
id, the Client
smart contract address in the destination chain, and the client smart contract
address in the source
chain. After the client (sender) of the cross-chain transaction is determined, the
nonce value is
incremented for it.
Step 6
Asterizm Relayer servers pull the proofs with the parameters from the Translator
contract and send
them to the Translator smart contract in the destination network for further
processing.
Step 7
The Translator smart contract on the destination network receives the encrypted
data along with
the parameters from the Relayers and then transfers it to the Initializer smart
contract for
validation.
Step 8
Upon receipt of the proofs and parameters, the Initializer smart contract verifies
the nonce to
maintain the transaction sequence, records the transaction xID for validation at
step 10, and sends
the proofs to the Client's smart contract.
Step 9
The client's smart contract in the destination network receives the proofs along
with the
parameters and emits an event to notify the delivery of proofs, which is anticipated
by the Client's
off-chain module.
Note: At this stage, the first but
not the main step
of transaction validity check occurs — the hash from the
payload and the
transaction's xID are compared, mitigating the risk of relay server
compromise.
Step 10
After the first step of cross-chain transaction validation, the client’s server
initiates the
transaction on the Client’s smart contract by calling the
asterizmClReceive() method in
the destination network, sending the payload (data) and
xID to the
contract, and validating the transaction on the Initializer smart contract by
calculating the
hash from received payload and checking the xID.
Note: At this step, the integrity of the data and the trusted addresses is
checked before the
transaction is executed. This check eliminates the risk of hacking the client’s
server.
Deep tech: The verification is performed by calculating and matching the
hash
from the payload with the hash received from Relayers
and the
xID that was previously stored on the Initializer contract. If the
verification
succeeds, it means that the client’s contract executes exactly the transaction it
sent, and does so
for the first time. This algorithm eliminates the possibility of spamming
transactions and spoofing
data on the client’s server (if, for example, the server is compromised).
Step 11
Once confirmation of the cross-chain transaction's validity and integrity is
received, the client's
smart contract proceeds to execute the payload that was included in the cross-chain
transaction,
calling methods of other contracts or performing calculations on the client’s
contract. The logic of
this step depends entirely on the client's business logic, which is implemented as
part of the
cross-chain transaction.