Skip to main content

Smart contracts

Smart contracts are digital contracts that use blockchain technology to execute and enforce the terms of an agreement. The Nexera Interoperability Protocol smart contract is a EIP-2535 diamond contract that is responsible for the transmisson of messages between dApps on different networks. One of the key benefits of this contract is that it can be upgraded with new functionalities without the need to redeploy the whole contract (thus changing its address).

Notice: This page is under construction.

Members

Currently, active Nexera Interoperability Protocol validators are referred to as "members" in the contracts. An initial set of members is set up during contract deployment and all member updates (additions and removals) after that requires [n/2;n) signatures, where n is the current size of the members set. Member updates after deployment are performed using the updateMember function (Router).

The following message is expected to be signed by the validators for member updates:

keccak256(abi.encode(account, status, administrativeNonce))
  • account is the address of the member being added/removed
  • status is a boolean denoting whether this is a remove or an add operation
  • administrativeNonce is a nonce used for all administrative actions and can be retrieved using the administrativeNonce function.

Fees and rewards

The Nexera Interoperability Protocol charges a small fee in native coin for every bridging transaction, which is distributed among all currently active members. The fee amount is set upon deployment.

The fee amount can be changed using the setServiceFee function from the FeeCalculator facet. The following message is expected to be signed by the Nexera Interoperability Protocol validators for fee amount updates:

keccak256(abi.encode(oldFee, newFee, administrativeNonce))
  • oldFee is the current fee amount
  • newFee is the fee amount that will be set using these signatures
  • administrativeNonce - self-explanatory

Validator rewards are equally distributed among all validators at the start of every bridging transaction (lock/burn transactions) and accumulated separately for every member. Members can claim their rewards at any time using the claim function from the FeeCalculator facet.