我们可以在不同的区块链上部署相同的 ERC20 代币吗?
Posted
技术标签:
【中文标题】我们可以在不同的区块链上部署相同的 ERC20 代币吗?【英文标题】:Can we deploy same ERC20-token on different blockchains? 【发布时间】:2021-10-18 11:56:43 【问题描述】:我想在不同的区块链上部署我自己的 ERC-20 代币,那么有没有可能在不同的区块链上部署相同的代币合约。如果我们这样做,我们就不能为三个区块链提供相同的名称和符号。谁能告诉我这个问题的解决方案是什么?或者我们可以在三个区块链上部署具有相同合约地址的合约吗?
【问题讨论】:
【参考方案1】:我们可以在三个区块链上部署具有相同合约地址的合约吗?
这取决于您要部署到的网络和您要部署的地址。假设您选择的网络具有相同的 1) 地址格式和 2) 已部署合约地址的计算 - 那么是的,您将能够在多个网络上的同一地址上部署您的合约。
例如,以太坊和 BSC 确实具有这两个功能。但即使波场网络支持与 EVM 兼容的智能合约,它的地址计算方式也不同,因此无法将合约部署在与以太坊或 BSC 上相同的地址的波场网络上。
在多个网络上部署合约到同一个地址的关键是从同一个地址部署,并使用相同的参数:
对于常规的CREATE
操作码,部署合约的交易需要在所有网络中具有相同的nonce
(和相同的from
)值。
或者,如果您使用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
【讨论】:
以上是关于我们可以在不同的区块链上部署相同的 ERC20 代币吗?的主要内容,如果未能解决你的问题,请参考以下文章