🥷 Glaze & Jasmine:🐲 端午节快乐!本期我们继续关注 Arbitrum 的设计,学习最常见的代币协议 —— ERC-20,你想创造自己的加密货币吗?
如果你喜欢本期内容,不妨在阅读后给我们点个 ❤️ ,并在下方订阅 un.Block Weekly ⬇️
🚀 链圈热闻:Arbitrum
Arbitrum 是如何实现 Layer1 和 Layer2 的通信的?
在上一期的链圈热闻中, 我们讨论了 Arbitrum 是如何是实现的。这一期我们将介绍 Arbitrum 是如何设计 Layer1 和 Layer2 通信的。
🔜 Layer1 到 Layer2 通信
如果交易包含必要的手续费,Arbitrum 会自动执行从 Layer1 提交的交易。如果这笔交易第一次在Layer2 并没有执行成功,它会进入缓冲区中。在一段时间里,任何人都可以尝试重新执行这笔交易。
缓冲区的设计可以解决在 Layer1 执行成功,但是在 Layer2 因为某些原因失败的交易。
大家可以考虑一下这个例子,在 Layer1 上,用户 向 Arbitrum 在 Layer1 的智能合约转了 1 个 UNB。但是因为某些原因,例如突然飙升的 Gas 价格,在 Layer2 中,用户并没有收到新挖出地 1 个 UNB。此时便是 Layer1 的交易执行成功,但是 Layer2 失败了。
有了缓冲区的加入,用户随时都可以重新执行失败的交易。
🔙 Layer2 到 Layer1 通信
Layer2 到 Layer1 的通信延续了之前的设计,在一些规则上有细微的改变。例如提交至 Layer1 的交易必须等待挑战期的结束,才能被执行。
我们在上期的 Optimistic Rollup 中解释了挑战期。挑战期之后,提交的交易可以在任意时间执行,不像 Layer1 到 Layer2 那样,执行提交的交易必须在一段时间之内。
基于这样的通信机制,Arbitrum 实现了 Token Bridge,允许用户在 Layer1 和 Layer2 之间传递同质化代币。对于那些复杂的同质化代币,例如含有计算利率的功能,需要自定义 Token Bridege。
📔 相关阅读:
🍼 保姆级教程:ERC-20
上周我们一起关注了 SafeMoon,本周我们将进一步学习代币的相关知识,代币背后的协议—— ERC-20
🤔 什么是 ERC-20
在学习 ERC-20 前,我们在脑中应该先建立一个“代币” (Token) 的概念,在区块链网络中,一切物品都是可以被 “Token” 化的,无论是加密货币、图片、音乐、彩票等,而 ERC-20 就是规范这些代币的标准之一。
ERC-20 引入了一个关于可兑换代币 (fungible) 的标准,这些代币都有共同的属性,所以可以被理解为是一样的东西。市场上交易的大部分代币,如 $UNI、$MATIC、$SHIB 都是标准的 ERC-20 代币。
ERC-20 代币本质是一个智能合约,这个这个合约就像一个账本,记录着不同用户的代币余额,通过调用合约,可以完成授权、转账等交易。
你可以在 Ethersacn 上查看任意代币的智能合约,例如 UniSwap 的 $UNI
📦 ERC-20 的组成
任何人都可以根据 ERC-20 编写智能合约,创造自己的代币,前提是智能合约需要满足以下功能:
查询总供应量
用户调用该函数时,将返回智能合约的代币总量
查询账户余额
查询账户余额需要传入钱包地址作为参数,返回值是钱包中的代币数量。区块链网络中的钱包地址是公开的,因此知道地址,可以查询任意用户的余额
转账
转账是将代币从自己的钱包转出到目标钱包,需要提供转账目的钱包和金额。
在调用转账函数时,会触发转账事件,转账的记录将被记录上链。
授权转账
授权转账是另一种形式的转账,授权给合约后,合约可以代替你来进行转账操作(会触发转账事件)。例如订阅服务的付费,通过授权转账可以实现每个月自动缴费,这样就不需要麻烦的手动操作了。授权转账的形式拓展了 DApp 的可编程性。
授权
授权函数用于处理授权操作,_spender 是你要授权的对象,_value 是授权的金额数量。通过授权,可以限制合约的授权转账操作,降低资金被窃取的风险。
调用授权函数时,会触发授权事件,授权的相关记录将被记录上链。
查看允许量
查看允许量用于查询授权的额度还剩下多少,假如你通过 approve 授权了 20 个 Token 给 ContractA,ContractA 使用 transferFrom 每天从你钱包中转出 1 Token,5 天后,你调用 allowance ,可以看到结果是 15。
以上就是实现 ERC-20 需要的基本功能,除此之外,你还可以自定义代币名称,代币缩写,代币精度等可选参数,或实现铸币 mint 、燃烧代币 burn 等额外功能。
🔨 创造自己的 ERC-20 代币
创造自己的 ERC-20 代币最简单的方式就是通过 OpenZeppelin 的 ERC-20 库完成部署。你可以复制以下代码到 Remix,修改代码名称、代币缩写、初始化供应量,然后 Deploy 到虚拟链上
🛸 除了 ERC-20
虽然说 ERC-20 是最受欢迎的代币标准,但它并不是唯一的,市面上还有许多的其他标准,他们的出现或是为了实现不同的功能,或是为了改进 ERC-20:
ERC-721:流行的 NFT 代币 (not-fungible) 协议,他向用户提供了接口,用户可以自由铸造 NFT
ERC-777:ERC-20 的改进,解决了 ERC-20 小数点混乱的问题,引入了 hook 的概念,用户在发送或接受代币时会触发 hook
📔 相关阅读:
📘 附加题
比特币正式有国家接受了!
Solidity 发布 0.8.5 版本,允许将 bytes 转换为 bytesNN; 允许在 Yul 中使用函数 verbatim 来注入字节码。
🚏Find us
💻 Website: unblock256.com
✈️ Telegram:un.Block Weekly
🕊️ Twitter: @unBlock256
📧 Email:unblocketh@gmail.com
视觉设计:Jenny
特别鸣谢:
本文非商业目的转载授权遵循 CC BY-NC 4.0 协议
版权所有 ©️un.Block 2021