Skip to content

Multichain compatibility documentation needs improvement #5

@hiroshi-yamamoto-dublr

Description

@hiroshi-yamamoto-dublr

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?

Metadata

Metadata

Assignees

No one assigned

    Labels

    documentationImprovements or additions to documentation

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions