All wrapped assets minted by ZERO on a given EVM network derive from ZAsset. A ZAsset is derived from ERC20Permit and supports the additional APIs

function mint(address to, bytes32 pHash, bytes32 nHash, uint256 amount, bytes memory signature) public;

This function is called by keepers when the `to` address is an EOA wallet. Otherwise, it can be submitted once the signature is produced on the ZERO network by the FROST ring, along with the other parameters.

function burn(uint256 amount, bytes memory blsPubKey, bytes memory data) public;

This function can be called to burn the wrapped asset to the ZERO network, where the identity represented by the supplied BLS public key is credited to the balance after fees.

The ZERO network has an equivalent concept of "precompiled contract" addresses which can be supplied in place of `blsPubKey`. When an address reserved for this purpose is used, there is meaning to the `data` parameter, which acts as an arbitrary bytestring input to the given special function. The purpose of these reserved addresses is to permit behaviors such as a burn which directly results in the release of an asset to its native blockchain. Reserved addresses are upgradeable as the ZERO network evolves and can handle any possible behavior needed as the ecosystem of all bridged blockchain systems change and adapt.

Last updated