Polymer Adapter

Lucid has developed an adapter that integrates with Polymer Labs' Interoperability solution to send and receive cross-chain messages.

Fees

Polymer currently does not charge any fees. When using the Polymer Adapter, you’ll only pay Lucid’s standard protocol fee. Lucid takes care of calling the Polymer Adapter contract on the destination chain to execute and relay your message to your Controller contract—something you would typically need to handle manually when using Polymer.

Since Lucid’s fee is consistent across all bridge adapters, Polymer becomes the cheapest option available.

When sending or exporting a transaction through the Lucid App, Lucid automatically calculates the fee protocol fee.

Any excess gas fees sent are refunded to the refundAddress specified in the options field.

Interfaces

Each adapter implements the following public functions:

relayMessage

function relayMessage( uint256 destChainId, address destination, bytes memory options, bytes calldata message ) external payable returns (bytes32)

Sends a message, deducts the protocol fee, and pays the required protocol fee.

  • Any excess fees are refunded to the refundAddress, which must be an ABI-encoded address in the options bytes.

  • The Ether value sent by the calling contract must include the Lucid protocol fee.

  • The Polymer Lucid Adapter assigns transfer IDs to relayed messages, which is returned as a bytes32 value.

Input Params:

Type
Name
Description

uint256

destChainId

The destination chain ID.

address

destination

The destination address.

bytes

options

Additional params to be used by each adapter. In Polymer, it's the ABI-encoded refund address.

bytes

message

The message to be relayed.

The following event is also emitted, containing the transfer ID:

event RelayViaPolymer(uint256 indexed destChainId, address indexed destAdapter, bytes32 indexed transferId, bytes message);

Get fee

function minGas() public view returns (uint256)

Returns the Lucid protocol fee in ether in wei. The calculateFee(uint256 amount) function should not be used in this case.

Last updated