如何在以太坊区块链上创建和实施 ERC-20 代币

关于以太坊上的 ERC 代币您应该了解的一切 - AAX Academy

如何创建和实施 ERC-20令牌 在以太坊区块链上。按照目前的发展速度,区块链正在逐渐征服世界。比特币,最受欢迎 cryptocurrency,是世界上第一个也是最知名的区块链技术的产物。以太坊是区块链的副产品,在比特币开始蓬勃发展时诞生。

醚

虽然比特币只是朝着一种货币的方向发展,但以太坊已经走得更远,其愿景是提供虚拟机(EVM)和智能合约,允许用户在网络上创建代币。

代币可以代表金钱、黄金、彩票……您可以在以太坊区块链上开发所有类型的代币,但本教程将重点介绍创建和部署 ERC-20 代币。

在创建代币之前,您必须至少对区块链技术、Solidity 语言以及以太坊的工作原理有基本的了解。

什么是区块链和 方法 我们如何运作?

简而言之,区块链是许多网络参与者的分布式账本或数据库中的交易记录。该分类账包含在网络上进行的交易的记录。

交易是指将特定货币或金额从网络上的一个用户转移到另一个用户的行为。假设 Alice 向 Bob 传输 30BLC。该交易由网络上的特定节点以加密方式散列并记录在总账中。

该节点将交易发送到网络中的其他节点,即将交易传播到网络。其他节点收到交易后,使用标准方法对其进行审核,然后将其添加到账本中。

网络上的节点接收网络上新传输的交易,然后将交易添加到账本中。网络上的每个节点都拥有或拥有账本的副本。这导致了区块链的去中心化特征。

“区块链”一词源于分类账内的交易或记录链接形成链的事实。众所周知,交易代表了节点中两方之间的货币交换,可以用JSON表示如下:

{
  “至”: “0xalice”,
  “从”: “0x鲍勃”,
  “量”: “30BLC”
}

这是一个简单的记录或交易。 Bob 将 30BLC 转给 Alice。

该交易记录在使用以下 JSON 数据格式编写的块中:

[
  {
    “至”: “0xalice”,
    “从”: “0x鲍勃”,
    “量”: “30BLC”
  }
]

一个区块就像一个包含许多交易对象的序列。因此,该块可以包含多个交易:

[
  {
    “至”: “0xalice”,
    “从”: “0x鲍勃”,
    “量”: “30BLC”
  },
  {
    “至”: “0x特蕾莎”,
    “从”: “0xarinze”,
    “量”: “5BLC”
  }
]

您可以看到交易将添加到的区块的位置。链由相互连接的块组成。每个区块链都以一个创世块开始,创建者将其添加并分发到网络中。

每个块还有一个加密哈希,充当网络上的唯一标识符。没有两个块具有相同的哈希值。

当一个块被节点验证并添加到网络时,它有一个指向网络上最后一个块的哈希值的指针。

[
  {
    “哈希”: “0x0”,
    “上一个哈希值”: "",
    “TXNS”: [
      {
        “至”: “0xalice”,
        “从”: “0x鲍勃”,
        “量”: “30BLC”
      },
      {
        “哈希”: “0x1”,
        “上一个哈希值”: “0x0”,
        “至”: “0x特蕾莎”,
        “从”: “0xarinze”,
        “量”: “5BLC”
      }
    ]
  },
  {
    “哈希”: “0x1”,
    “上一个哈希值”: “0x0”,
    “TXNS”: [
      {
        “至”: “0xalice”,
        “从”: “0x鲍勃”,
        “量”: “30BLC”
      },
      {
        “至”: “0x特蕾莎”,
        “从”: “0xarinze”,
        “量”: “5BLC”
      }
    ]
  }
]

第一个哈希值为 0x0 的块是原始块。哈希值为 0x1 的下一个块的 prevHash 指向 0x0,即网络中的第一个块。

这样,插入网络的每个新块首先指向相邻的最新块。这在区块链中创建了一条“链”。

什么是以太坊

以太坊是一个拥有自己的数字货币(称为 ETH)的区块链。就像其他区块链一样,交易存储在分类账中。

以太坊与其他区块链的区别在于其灵活性。虽然许多区块链平台仅支持汇款,但以太坊允许所有数据通过区块链传输,并以 ETH 支付费用。

以太坊如何工作?

如上所述,我们可以在以太坊区块链上传输任何数据,并以 ETH 支付费用。

就像上例中的 BLC 交易一样,以太坊区块链支持 ETH 交易。假设 Alice 向 Bob 转账 1 ETH。该交易由网络中的节点验证并添加到区块链中的块中。

另外,以太坊有挖矿,需要工作才能获得ETH。此任务涉及通过尝试多种不同的方法来解决困难的计算,直到找到正确的答案。网络中的任何节点都可以参与。成功解决计算的节点将获得一定数量的ETH奖励。交易减少越多,计算难度就越大。

每当以太坊区块链中触发交易时,网络中的挖掘节点就会铸造该交易。交易的发送者必须同意向该节点支付一定的 ETH 金额。这就是所谓的天然气价格。

什么是智能合约?

智能合约是一种包含在以太坊区块链上运行的代码的工具。智能合约采用 Solidity 语言编写并编译为 ABI 代码。该 ABI 代码在以太坊区块链上提供。智能合约获取发送者的外部地址并将其与随机数(唯一编号)混合以形成以太坊区块链上的地址。

智能合约支持创建数字合约。与真实合约一样,数字合约有助于在以太坊区块链内的两方或多方之间建立交易。

智能合约是以太坊中的一种账户,这意味着它不受用户控制,可以在区块链上发送交易。由于它是一个帐户,因此智能合约有余额并包含 EVM 代码。

什么是ERC-20令牌?
ERC20 代币教程 |托普塔尔

以太坊虚拟机(EVM)是运行已编译的 Solidity ABI 代码的虚拟机。以太坊中的智能合约已成为创建一系列代币的全球标准。这些标准被称为以太坊征求意见(ERC)标准。

以太坊有很多 默认,但最常用、应用最广泛的是ERC-20和ERC-721。 ERC-20用于代币生成,而ERC-721用于NFT开发。

ERC-20是Fabian Vogelsteller提出的标准,是一个包含大量API的智能合约。 ERC20是一组规则,适用于所有选择ERC-20标准的代币。

如上所述,ERC-20 可用于创建比特币和 ETH 等虚拟货币。根据 ERC-20 标准创建的一些最著名的代币是 Binance Coin (BNB) 和 Shiba Shabu (KOBE)。

用户可以发送和接收 ERC-20 代币。这些代币是可替代的,这意味着它们的价值在区块链上的任何地方都是相同的。

遵循 Blockchain.com、钱包和交易所使用此标准将各种 ERC-20 代币集成到平台中,并促进它们与许多其他加密货币的交换。

现在我们了解了ERC-20标准是什么,我们来看看ERC-20代币的内容。

令牌内容 ERC-20

ERC-20 代币包含 ERC-20 代币必须具有的方法和事件。

ERC-20 代币必须能够:

  • 将代币从一个账户转移到另一个账户
  • 返回账户余额
  • 返回tokens中可用的token总数
  • 将代币转移到您的帐户

事实上,如果用 Solidity 编写,ERC-20 将如下所示:

功能 姓名() 国家 查看 回报 (绳子)

功能 符号() 国家 查看 回报 (绳子)

功能 小数点() 国家 查看 回报 (单位8)

功能 总供应() 国家 查看 回报 (单位256)

功能 balanceOf(地址_所有者) 国家 查看 回报 (uint256余额)

功能 转让(写给, uint256_值) 国家 回报 (布尔 成功)

功能 从转移(地址_from, 写给, uint256_值) 国家 回报 (布尔 成功)

功能 批准(地址_spender, uint256_值) 国家 回报 (布尔 成功)

功能 津贴(地址_所有者, 地址_spender) 国家 查看 回报 (剩余 uint256)

ERC-20 代币可以有以下方法:

  • name – 返回代币的名称(例如 Binance Coin)
  • 符号 – 返回代币的符号(例如 BNB)
  • 小数位数 – 返回令牌使用的小数位数
  • TotalSupply – 返回代币的全部初始库存
  • BalanceOf – 返回账户余额
  • 转账——将一定数量的代币转移到某个地址
  • TransferFrom – 将一定数量的代币从接收地址转移到接收地址
  • 批准 – 从所有者地址中提取最多一定数量的代币
  • 豁免 – 返回可以从所有者帐户中提取的代币数量

事件也可以在令牌上注册,以便在发送信号时及时捕获。 ERC-20代币有以下事件:

事件传输(地址索引 _from、地址索引 _to、uint256 _value)

事件批准(地址索引_owner、地址索引_spender、uint256 _value)

  • 转账 – 转账时激活
  • 批准 – 当账户被批准接收一定数量的代币时激活

生成 ERC 20 代币

为了让本节更容易理解,本文展示了如何编写一个简单的代币并将其称为 ND 币。

// SPDX 许可证标识符:GPL-3.0
实用坚固性 >=0.7.0 <0.9.0;

合同 NDCoinERC20 {

    活动 转让(地址索引 , 索引到的地址, UINT 令牌);
    活动 赞同(地址索引 tokenOwner, 地址索引的支出者, UINT 令牌);

    绳子 国家 常量名称 = “ND币”;
    绳子 国家 常数符号 = “NDN”;
    单位8 国家 常数小数 = 18;

    制图(地址 => 单位256) 结余;

    制图(地址 => 制图 (地址 => 单位256)) 允许;

    uint256totalSupply_;

    构造函数(uint256 总计) {
      总供应量_ =;
      结余[味精.寄件人] = 总供应量_;
    }

    功能 总供应() 国家 查看 回报 (单位256) {
      回报 总供应量_;
    }

    功能 balanceOf(地址令牌所有者) 国家 查看 回报 (UINT) {
        回报 结余[代币所有者];
    }

    功能 转让(地址接收者, UINT 令牌数) 国家 回报 (布尔) {
        要求(令牌数 <= 结余[味精.寄件人])?
        结余[味精.寄件人] -= 令牌数;
        结余[接收器] += 令牌数;
        发射 转让(味精.寄件人, 接收器, 令牌数);
        回报 true;
    }

    功能 批准(地址 代表, UINT 令牌数) 国家 回报 (布尔) {
        允许\[消息.发件人\][代表] = 令牌数;
        发射 赞同(味精.寄件人, 代表, 令牌数);
        回报 true;
    }

    功能 津贴(地址所有者, 地址 代表) 国家 查看 回报 (UINT) {
        回报 允许\[所有者\][代表];
    }

    功能 从转移(地址所有者, 地址买家, UINT 令牌数) 国家 回报 (布尔) {
        要求(令牌数 <= 结余[业主])?
        要求(令牌数 <= 允许\[所有者\][味精.寄件人])?

        结余[业主] -= 令牌数;
        允许\[所有者\][味精.寄件人] -= 令牌数;
        结余[买方] += 令牌数;
        发射 转让(业主, 买方, 令牌数);
        回报 true;
    }
}

如何在以太坊区块链上创建和实施 ERC-20 代币

关于以太坊上的 ERC 代币您应该了解的一切 - AAX Academy

如何创建和实施 ERC-20令牌 在以太坊区块链上。按照目前的发展速度,区块链正在逐渐征服世界。比特币,最受欢迎 cryptocurrency,是世界上第一个也是最知名的区块链技术的产物。以太坊是区块链的副产品,在比特币开始蓬勃发展时诞生。

醚

虽然比特币只是朝着一种货币的方向发展,但以太坊已经走得更远,其愿景是提供虚拟机(EVM)和智能合约,允许用户在网络上创建代币。

代币可以代表金钱、黄金、彩票……您可以在以太坊区块链上开发所有类型的代币,但本教程将重点介绍创建和部署 ERC-20 代币。

在创建代币之前,您必须至少对区块链技术、Solidity 语言以及以太坊的工作原理有基本的了解。

什么是区块链和 方法 我们如何运作?

简而言之,区块链是许多网络参与者的分布式账本或数据库中的交易记录。该分类账包含在网络上进行的交易的记录。

交易是指将特定货币或金额从网络上的一个用户转移到另一个用户的行为。假设 Alice 向 Bob 传输 30BLC。该交易由网络上的特定节点以加密方式散列并记录在总账中。

该节点将交易发送到网络中的其他节点,即将交易传播到网络。其他节点收到交易后,使用标准方法对其进行审核,然后将其添加到账本中。

网络上的节点接收网络上新传输的交易,然后将交易添加到账本中。网络上的每个节点都拥有或拥有账本的副本。这导致了区块链的去中心化特征。

“区块链”一词源于分类账内的交易或记录链接形成链的事实。众所周知,交易代表了节点中两方之间的货币交换,可以用JSON表示如下:

{
  “至”: “0xalice”,
  “从”: “0x鲍勃”,
  “量”: “30BLC”
}

这是一个简单的记录或交易。 Bob 将 30BLC 转给 Alice。

该交易记录在使用以下 JSON 数据格式编写的块中:

[
  {
    “至”: “0xalice”,
    “从”: “0x鲍勃”,
    “量”: “30BLC”
  }
]

一个区块就像一个包含许多交易对象的序列。因此,该块可以包含多个交易:

[
  {
    “至”: “0xalice”,
    “从”: “0x鲍勃”,
    “量”: “30BLC”
  },
  {
    “至”: “0x特蕾莎”,
    “从”: “0xarinze”,
    “量”: “5BLC”
  }
]

您可以看到交易将添加到的区块的位置。链由相互连接的块组成。每个区块链都以一个创世块开始,创建者将其添加并分发到网络中。

每个块还有一个加密哈希,充当网络上的唯一标识符。没有两个块具有相同的哈希值。

当一个块被节点验证并添加到网络时,它有一个指向网络上最后一个块的哈希值的指针。

[
  {
    “哈希”: “0x0”,
    “上一个哈希值”: "",
    “TXNS”: [
      {
        “至”: “0xalice”,
        “从”: “0x鲍勃”,
        “量”: “30BLC”
      },
      {
        “哈希”: “0x1”,
        “上一个哈希值”: “0x0”,
        “至”: “0x特蕾莎”,
        “从”: “0xarinze”,
        “量”: “5BLC”
      }
    ]
  },
  {
    “哈希”: “0x1”,
    “上一个哈希值”: “0x0”,
    “TXNS”: [
      {
        “至”: “0xalice”,
        “从”: “0x鲍勃”,
        “量”: “30BLC”
      },
      {
        “至”: “0x特蕾莎”,
        “从”: “0xarinze”,
        “量”: “5BLC”
      }
    ]
  }
]

第一个哈希值为 0x0 的块是原始块。哈希值为 0x1 的下一个块的 prevHash 指向 0x0,即网络中的第一个块。

这样,插入网络的每个新块首先指向相邻的最新块。这在区块链中创建了一条“链”。

什么是以太坊

以太坊是一个拥有自己的数字货币(称为 ETH)的区块链。就像其他区块链一样,交易存储在分类账中。

以太坊与其他区块链的区别在于其灵活性。虽然许多区块链平台仅支持汇款,但以太坊允许所有数据通过区块链传输,并以 ETH 支付费用。

以太坊如何工作?

如上所述,我们可以在以太坊区块链上传输任何数据,并以 ETH 支付费用。

就像上例中的 BLC 交易一样,以太坊区块链支持 ETH 交易。假设 Alice 向 Bob 转账 1 ETH。该交易由网络中的节点验证并添加到区块链中的块中。

另外,以太坊有挖矿,需要工作才能获得ETH。此任务涉及通过尝试多种不同的方法来解决困难的计算,直到找到正确的答案。网络中的任何节点都可以参与。成功解决计算的节点将获得一定数量的ETH奖励。交易减少越多,计算难度就越大。

每当以太坊区块链中触发交易时,网络中的挖掘节点就会铸造该交易。交易的发送者必须同意向该节点支付一定的 ETH 金额。这就是所谓的天然气价格。

什么是智能合约?

智能合约是一种包含在以太坊区块链上运行的代码的工具。智能合约采用 Solidity 语言编写并编译为 ABI 代码。该 ABI 代码在以太坊区块链上提供。智能合约获取发送者的外部地址并将其与随机数(唯一编号)混合以形成以太坊区块链上的地址。

智能合约支持创建数字合约。与真实合约一样,数字合约有助于在以太坊区块链内的两方或多方之间建立交易。

智能合约是以太坊中的一种账户,这意味着它不受用户控制,可以在区块链上发送交易。由于它是一个帐户,因此智能合约有余额并包含 EVM 代码。

什么是ERC-20令牌?
ERC20 代币教程 |托普塔尔

以太坊虚拟机(EVM)是运行已编译的 Solidity ABI 代码的虚拟机。以太坊中的智能合约已成为创建一系列代币的全球标准。这些标准被称为以太坊征求意见(ERC)标准。

以太坊有很多 默认,但最常用、应用最广泛的是ERC-20和ERC-721。 ERC-20用于代币生成,而ERC-721用于NFT开发。

ERC-20是Fabian Vogelsteller提出的标准,是一个包含大量API的智能合约。 ERC20是一组规则,适用于所有选择ERC-20标准的代币。

如上所述,ERC-20 可用于创建比特币和 ETH 等虚拟货币。根据 ERC-20 标准创建的一些最著名的代币是 Binance Coin (BNB) 和 Shiba Shabu (KOBE)。

用户可以发送和接收 ERC-20 代币。这些代币是可替代的,这意味着它们的价值在区块链上的任何地方都是相同的。

遵循 Blockchain.com、钱包和交易所使用此标准将各种 ERC-20 代币集成到平台中,并促进它们与许多其他加密货币的交换。

现在我们了解了ERC-20标准是什么,我们来看看ERC-20代币的内容。

令牌内容 ERC-20

ERC-20 代币包含 ERC-20 代币必须具有的方法和事件。

ERC-20 代币必须能够:

  • 将代币从一个账户转移到另一个账户
  • 返回账户余额
  • 返回tokens中可用的token总数
  • 将代币转移到您的帐户

事实上,如果用 Solidity 编写,ERC-20 将如下所示:

功能 姓名() 国家 查看 回报 (绳子)

功能 符号() 国家 查看 回报 (绳子)

功能 小数点() 国家 查看 回报 (单位8)

功能 总供应() 国家 查看 回报 (单位256)

功能 balanceOf(地址_所有者) 国家 查看 回报 (uint256余额)

功能 转让(写给, uint256_值) 国家 回报 (布尔 成功)

功能 从转移(地址_from, 写给, uint256_值) 国家 回报 (布尔 成功)

功能 批准(地址_spender, uint256_值) 国家 回报 (布尔 成功)

功能 津贴(地址_所有者, 地址_spender) 国家 查看 回报 (剩余 uint256)

ERC-20 代币可以有以下方法:

  • name – 返回代币的名称(例如 Binance Coin)
  • 符号 – 返回代币的符号(例如 BNB)
  • 小数位数 – 返回令牌使用的小数位数
  • TotalSupply – 返回代币的全部初始库存
  • BalanceOf – 返回账户余额
  • 转账——将一定数量的代币转移到某个地址
  • TransferFrom – 将一定数量的代币从接收地址转移到接收地址
  • 批准 – 从所有者地址中提取最多一定数量的代币
  • 豁免 – 返回可以从所有者帐户中提取的代币数量

事件也可以在令牌上注册,以便在发送信号时及时捕获。 ERC-20代币有以下事件:

事件传输(地址索引 _from、地址索引 _to、uint256 _value)

事件批准(地址索引_owner、地址索引_spender、uint256 _value)

  • 转账 – 转账时激活
  • 批准 – 当账户被批准接收一定数量的代币时激活

生成 ERC 20 代币

为了让本节更容易理解,本文展示了如何编写一个简单的代币并将其称为 ND 币。

// SPDX 许可证标识符:GPL-3.0
实用坚固性 >=0.7.0 <0.9.0;

合同 NDCoinERC20 {

    活动 转让(地址索引 , 索引到的地址, UINT 令牌);
    活动 赞同(地址索引 tokenOwner, 地址索引的支出者, UINT 令牌);

    绳子 国家 常量名称 = “ND币”;
    绳子 国家 常数符号 = “NDN”;
    单位8 国家 常数小数 = 18;

    制图(地址 => 单位256) 结余;

    制图(地址 => 制图 (地址 => 单位256)) 允许;

    uint256totalSupply_;

    构造函数(uint256 总计) {
      总供应量_ =;
      结余[味精.寄件人] = 总供应量_;
    }

    功能 总供应() 国家 查看 回报 (单位256) {
      回报 总供应量_;
    }

    功能 balanceOf(地址令牌所有者) 国家 查看 回报 (UINT) {
        回报 结余[代币所有者];
    }

    功能 转让(地址接收者, UINT 令牌数) 国家 回报 (布尔) {
        要求(令牌数 <= 结余[味精.寄件人])?
        结余[味精.寄件人] -= 令牌数;
        结余[接收器] += 令牌数;
        发射 转让(味精.寄件人, 接收器, 令牌数);
        回报 true;
    }

    功能 批准(地址 代表, UINT 令牌数) 国家 回报 (布尔) {
        允许\[消息.发件人\][代表] = 令牌数;
        发射 赞同(味精.寄件人, 代表, 令牌数);
        回报 true;
    }

    功能 津贴(地址所有者, 地址 代表) 国家 查看 回报 (UINT) {
        回报 允许\[所有者\][代表];
    }

    功能 从转移(地址所有者, 地址买家, UINT 令牌数) 国家 回报 (布尔) {
        要求(令牌数 <= 结余[业主])?
        要求(令牌数 <= 允许\[所有者\][味精.寄件人])?

        结余[业主] -= 令牌数;
        允许\[所有者\][味精.寄件人] -= 令牌数;
        结余[买方] += 令牌数;
        发射 转让(业主, 买方, 令牌数);
        回报 true;
    }
}
访问 67 次,今天 1 次访问

发表评论