Skip to content
Information Circle

The Spanning Demo App is live! Check it out here:

We have also published the open-source demo code and related JavaScript utilities.

Testing Cross-chain Transactions

To test your smart contracts easily via our Delegate endpoints you can use the Spanning Labs Delegate App.

This app lets you submit transaction requests via your connected wallet directly to a Spanning Delegate which then are propagated to the selected destination smart contract. The destination smart contract can be on the same chain you started on or a different chain altogether.


Requesting Network

The requesting network is where you, a user, or another smart contract is issuing a transaction request from. This will cost gas to submit.

Settling Network

The settling network is where the Spanning Network will write a request to. Here gas fees are paid by the protocol.

The Delegate App allows users to choose any network to settle to but will issue a warning if you have chosen a non-deployable network as the request will not go through.

Information Circle

Settling to any supported testnet is free, but if you are testing your mainnet deployments you may be limited to a small number of free transactions before they will no longer be processed. If you are interested in enabling more mainnet settlement transactions as you test or prepare for your application to go live, please contact us for more information about a partnership.

Contract Address

This is the local address of the contract you wish to settle to on the Settling Network. The full Spanning Address will be generated for you automatically and shown below for you to copy and paste as needed.

Function Call

Here you can type any function call you wish to test on the destination contract. No compiling or ABI upload is needed!

Please take care as you enter your function calls as the Spanning Network does not verify the correctness of a call before submitting a Spanning Request.

Function calls must specify any argument types in-line, here are some valid examples:

mint(uint256: 10)
foo(bool: true, bytes32: 0x0001388100000000000000004bD0f88CcaAcFFaCB05c83a0FB400f90120bC7dB)

Here are some invalid examples:

foo(true, 0x0001388100000000000000004bD0f88CcaAcFFaCB05c83a0FB400f90120bC7dB)

Advanced Routing Parameters

Routing parameters set the reserved routing parameter bytes of the destination Spanning Address.

Block Confirmations

This parameter can be set to enforce that the Spanning Network waits to settle a transaction to a destination chain and confirm that the requesting block has not reverted for a certain number of blocks after requesting the originating chain.

This can be useful if there are state changes on the originating chain (like processing a payment or the staking of an asset) that you would like to reach some probability of finality before the settling transaction is able to process.