I am trying to add Multichain support to my token. The documentation needs a lot of improvement, which is why I am filing these questions as a bug report
I have followed the advice here:
https://docs.multichain.org/developer-guide/how-to-develop-under-anyswap-erc20-standards
I have several questions:
(1) Is it true that you only need the three functions mint(address,uint256)
, burn(address,uint256)
and underlying()
(returning address(0)
) to get full Multichain compatibliity? (This is my implementation of these functions.)
Are there other functions that are not required, but will provide additional Multichain-supported functionality, such as transferWithPermit
?
In particular, I assume functions like deposit
, withdrawal
, vault functionality, etc. do not need to be included in my token?
(2) How do I obtain the official approved router addresses for Multichain? Somewhere in your documentation, it says that the router addresses can be obtained on request, but that they will be available programmatically in future. How far away is the programmatic API for fetching router addresses? Where do you hold the official list of router addresses currently?
(3) I also wanted to ask about the permitting API supported in the Anyswap V5 template (but not present in the V6 template). Specifically, in the functions permit and transferWithPermit, there is this line:
require(verifyEIP712(target, hashStruct, v, r, s) || verifyPersonalSign(target, hashStruct, v, r, s));
This actually breaks EIP2612 compatibility for the permit function, because verifyPersonalSign
is not supported in the EIP2612 standard -- it uses this different format for the permit hash:
keccak256(abi.encodePacked("\x19Ethereum Signed Message:\n32", DOMAIN_SEPARATOR, hash))
What is the purpose of this? Under what circumstances will a user submit a signed message to an Anyswap token signed using the following hash? How are these signatures produced? By wallet software? Is this sort of signature support needed in Multichain?
(4) Once my token is compatible with Multichain, and launched, how do I get it listed on your site?
(5) What precautions do you take to ensure your routers are bug-free and never compromised? Do you offer any sort of recourse or compensation for runaway minting or burning of tokens, due to some bug or security vulnerability in your code?