我们可以在不同的区块链上部署相同的 ERC20 代币吗?

Gop*_*ram 6 polygon ethereum erc20 ibm-blockchain binance-smart-chain

我想在不同的区块链上部署自己的ERC-20代币,那么是否有可能在不同的区块链上部署相同的代币合约。如果我们这样做,我们就不能为三个区块链提供相同的名称和符号。谁能告诉我这个问题的解决方案是什么?或者我们可以将具有相同合约地址的合约部署在三个区块链上吗?

Pet*_*jda 7

我们可以在三个区块链上部署具有相同合约地址的合约吗?

这取决于您要部署到的网络以及您要部署的地址。假设您选择的网络具有相同的 1) 地址格式和 2) 已部署合约地址的计算 - 那么是的,您将能够在多个网络上的同一地址上部署您的合约。

例如,以太坊和 BSC 确实具有这两个功能。但是,尽管 Tron 网络支持 EVM 兼容的智能合约,但它计算地址的方式不同,因此不可能在 Tron 网络上部署与以太坊或 BSC 相同地址的合约。

将合约部署到多个网络上的同一地址的关键是从同一地址进行部署,并使用相同的参数:

  1. 对于常规CREATE操作码,部署合约的交易需要在所有网络上具有相同nonce(和相同from)的值。

  2. 或者,如果您使用CREATE2操作码,则需要传递相同的合约字节码、相同的盐(到CREATE2),并且需要从相同的地址发送部署交易。


如果我们这样做,我们就不能为三个区块链提供相同的名称和符号

这在技术上是可行的,所以我假设这“只是”您的业务案例或您正在使用的某些工具的限制,或者可能是对 ERC-20 标准如何工作的简单误解。

pragma solidity ^0.8;

contract MyToken {
    string public constant name = "MyToken";
    string public constant symbol = "MyT";
    
    // TODO rest of your token contract source code
}
Run Code Online (Sandbox Code Playgroud)