为何发送ERC20 Token 需要两次交易?

2019-12-02 15:42 栏目:经验之谈 来源:网络整理 查看()
许多人可能对此有疑问。我相信这篇文章能完全解决你的疑问。在前一节中,我们看了一下以太网广场的整体结构,总结了迄今为止的七篇文章。在此基础上,我们将阐明发送ERC20令牌背后的技术分析。 发送以太网货币 发送以太网硬币实际上非常符合我们的直觉,也就是说,把钱发送给别人,别人以这种方式接收钱。然而,发送ERC20令牌似乎并不那么简单。为什么?

为何发送ERC20 Token 需要两次交易?

ERC-20令牌的本质 首先,回想一下上一节提到的内容。ERC20令牌仅使用ERC20智能契约下的内存来存储记录持有地址数量的书籍。由于对象是智能合同,因此有必要审查第二部分中提到的外部拥有账户(EOA)和合同账户之间的差异。由于智能合同没有主观意识,所有行动都需要由EOA交易触发。因此,当合同地址收到ETH以外的令牌时,它不会知道。因为变化是“另一个智能合同下的记忆”!

为何发送ERC20 Token 需要两次交易?

让我们来看一个例子:假设我想通过分散式交易所Uniswap,以0.0092 ETH交换我持有的82个cDAI。这在技术上怎么可能? 预先了解:cDAI是ERC20令牌,在我将DAI存入复利进行借贷后,我会将它发回给我。因此,cDAI由复合管理的cDAI智能契约下的内存(账簿)跟踪。

为何发送ERC20 Token 需要两次交易?

我的令牌交换要求逻辑上是:我将cDAI令牌发送给Uniswap,Uniswap将ETH发送给我。 但是事情没有那么简单。由于Uniswap是分散的,它是通过智能合同来运营的。因此,当Uniswap收到cDAI令牌时,不像是一个人点击元掩码来检查它是否已经收到,并在确认收到后发送ETH给我。因此,有必要使用特殊的方法来实现这一过程。 让我们开门见山吧。 用比喻来说明,方法是: 1.我首先去银行(ERC20 Token的智能合同)打开授权,允许另一方(第三方智能合同)访问我的账户,取款(ERC20 Token),并设置“可取款的金额”。 2.然后我给对方写了一张“写有金额的支票”,并要求对方把支票拿到银行从我的账户里取钱。 因为对象(智能契约)是一段代码,这将使智能契约能够确认令牌的选择并执行后续的契约逻辑操作。 因此,回归区块链世界必须通过以下两个交易步骤进行: Tx1:批准 我必须首先向“复合cDAI令牌智能合同”(银行)发送交易。 授权“Uniswap对ETH交易的cDAI对智能合同”(交易对手) 您可以前往“复合的cDAI令牌智能合同”(银行) 选择我的“cDAI令牌”。 Tx2:交换令牌 后来,我又发了一笔交易(支票)给“用cDAI换ETH” CDAI与瑞士联邦理工学院对“Uniswap”的交易触发了智能合同(交易对手)。 让“Uniswap的cDAI到ETH交易对智能合同”(对方) 至“复合cDAI令牌智能合同”(银行) 拿着我的82 cDAI令牌。 “Uniswap对ETH的cDAI交易在收到代币(钱)后给我0.0092 ETH。 如下图所示:

为何发送ERC20 Token 需要两次交易?

然后,我们将带您了解实际操作过程,了解其背后的技术逻辑。 Tx1:批准 首先,当我们来到Uniswap交易所时,选择输入和输出的加密货币类型,并在输入中输入要兑换的数量,我们可以看到我要兑换ETH的cDAI令牌旁边的“解锁”按钮。这就是我被要求做的“Tx1:授权”。

为何发送ERC20 Token 需要两次交易?

点击“解锁”按钮后,我将跳出“已批准”的交易,并让我签名。一旦签署,我就批准了Uniswap在大院领取cDAI的权力。

为何发送ERC20 Token 需要两次交易?

交易确认后,我们可以通过Txn哈希在以太网扫描上找到交易。可以发现,该交易是“复合cDAI ERC20令牌智能合同”。

为何发送ERC20 Token 需要两次交易?

点击该事务后,您可以看到正在调用的是approve的函数。我同意“Uniswap ETH-cDAI交易对”的合同地址可以提取我的CDai,授权提取金额为“最高”。 有些人可能想知道为什么我不把这个数目设定为我想兑换的数目:82。原因是为了方便将来不需要重新授权的取款操作,通常调用智能合同的审批功能,默认情况下最大值打开,这样在将来再次需要取款操作时,就不需要再次进行审批操作。 但是,需要注意的是,对于“易受攻击或不受信任的智能合同”,如果默认情况下权限仍然设置为最大值,将面临令牌被盗的风险。

为何发送ERC20 Token 需要两次交易?

“Tx1:批准授权”完成后,您可以看到“解锁”按钮消失,并且可以单击“交换”按钮。

为何发送ERC20 Token 需要两次交易?

Tx2:交换令牌 然后我们就可以把我的cDAI换成ETH了。

为何发送ERC20 Token 需要两次交易?

同样在通过Metamask签署交易之后,我们去了以太网扫描(Etherscan)追踪交易:我们能够发现交易是从我的钱包发送到“Uniswap的ETH-cDAI交易到智能合同”。

为何发送ERC20 Token 需要两次交易?

点击交易后,我们可以看到交易中执行了两件事: 1.将82个cDAI从“复合cDAI智能合同”转移到“联合wap的ETH-cDAI交易对合同地址”。 2.将0.0092 ETH从“Uniswap的ETH-cDAI交易对合同地址”转移给我。

为何发送ERC20 Token 需要两次交易?

然后我们可以看到0.0092 ETH被转移到我在“Uniswap的ETH-cDAI交易对合同地址”的“内部Txns”中的钱包地址;在“Erc20令牌Txns”中,我们看到82个cDAI从“复合cDAI智能合同”转移到了“联合wap的ETH-cDAI交易对合同地址”。

为何发送ERC20 Token 需要两次交易?

同时,交易还可以在“复合CDAI智能合同”中看到82个cDAI的转让记录。

为何发送ERC20 Token 需要两次交易?

结论 1.向智能合同发送ETH和发送ERC20令牌是有本质区别的。以太网是基于推送的,只能发送。ERC20令牌由基于拉的发送,允许契约主动提取令牌。 2.交易必须首先发送到ERC20合同进行审批,允许合同地址从ERC20智能合同中提取我的ERC 20令牌。 3.发送另一个事务来触发合同地址以提取ERC20令牌和后续逻辑操作。 至此,我相信读者已经完全理解了向智能合同发送ERC20令牌背后的技术逻辑。 在下一节中,我们将介绍甲骨文,一种在现实世界和区块链之间架起桥梁的技术,并向您展示如何实施大型项目,如MakerDAO和Compound。请期待! 如果有任何上述情况 A.不清楚的区域 B.书面改进建议 我希望我能写和分享区块链的技术知识。

微信二维码
售前客服二维码

文章均源于网络收集编辑侵删

提示:币友交流QQ/WX群请联系客服加入!

郑重申明:资讯文章为网络收集整理,官方公告以外的资讯内容与本站无关!
虚拟币开发,虚拟币交易平台开发,山寨币交易平台开发 Keywords: 虚拟币开发 虚拟币交易平台开发 山寨币交易平台开发