许多人有可能回应深感疑惑,利用本篇文章坚信能充份为您解惑。上一节我们带上大家一窥以太坊的架构全貌并为迄今为止七篇文章做到了小结。
我们将在这基础之上阐述发送到ERC20 Token背后的技术解析。发送到以太币发送到以太币时只不过酋合乎我们的直觉,网卓新闻网,就是把钱发给别人,别人接到这样。
然而发送到ERC20 代币却好像不是这么全然,为什么呢?ERC-20 代币的本质首先总结一下上一节提及的,ERC20代币只是用ERC20之智能合约底下的记忆体来储存记录各个地址持有人数量的帐本。既然对象是个智能合约,就要再行总结一下第二节提及的,个人帐户(Externally Owned Account, EOA)与合约帐户(Contract Account)的有所不同,由于智能合约没主观意识,动作均必须由EOA放交易来启动时。
因此当合约地址接到ETH外的其它代币时,它并会告诉。因为变更的是「另一个智能合约底下的记忆体」!我们实际来看一个范例:假设我想透过去中心化交易所Uniswap 将我持有人的82 颗cDAI 外币成0.0092 颗ETH,在技术上是如何做的呢?先备科学知识: cDAI是我将DAI现金Compound借贷后,Compound传回给我的ERC20 Token。
所以cDAI是由Compound管理的cDAI智能合约底下之记忆体(帐本)来记录跟踪的。我的Token Swap市场需求在常规逻辑上是:我把我的cDAI token发送给Uniswap,Uniswap把ETH发送给我。不过事情并非这么全然。由于Uniswap是去中心化,由智能合约来运作的。
因此当Uniswap接到了cDAI token时,它不像人一样可以点进Metamask去查阅否有接到,证实有接到后再行把ETH发送给我,因此必须用类似的作法来构建这样的流程。我们就必要开门见山谈答案用比喻来解释的话,作法是:1. 我再行到银行(ERC20 Token的智能合约)打开许可,容许对方(第三方智能合约)需要到我的户头,萃取钱(ERC20 Token),并原作「需要萃取的额度」。2. 接着我开给对方一张「写出上金额的支票」,让对方拿着支票到银行中缴我帐户中的钱。
因为对象(智能合约)是一段程式码,如此作法方能让智能合约证实萃取到Token并继续执行先前的合约逻辑操作者。因此,返回区块链的世界,必需利用以下两个交易步骤来展开:Tx1: Approve(许可)我必需先发一笔交易到「Compound cDAI Token智能合约」(银行),许可「Uniswap的cDAI to ETH交易对智能合约」(对方)可以到「Compound的cDAI Token智能合约」(银行)萃取我的「 cDAI Token」(钱)。Tx2: Swap Token(外币)随后,我再行发送到一笔「将cDAI外币为ETH」的交易(支票)到「Uniswap的cDAI to ETH交易对智能合约」(对方)启动时,让「Uniswap的cDAI to ETH交易对智能合约」(对方)至「Compound的cDAI Token智能合约」(银行)缴我的82颗「cDAI Token」(钱)。「Uniswap的cDAI to ETH交易对智能合约」(对方)托领取Token(钱)后再行将0.0092颗ETH发送给我。
如下方示意图右图:接着我们带上大家实际回头一次操作者流程以搞懂背后技术逻辑。Tx1: Approve(许可)首先,当我们回到Uniswap交易所,选好Input与Output的加密货币种类并在Input输出意欲外币的数量,之后可以在我意欲外币成ETH的cDAI Token旁边看见「Unlock」的按钮。
这就是拒绝我展开「Tx1:许可」的操作者。点击「Unlock」按钮后,之后不会跑出「批准后」的交易来让我签订。
一但签订后,我之后批准后了Uniswap需要到Compound缴我的cDAI的权限。这笔交易被证实后,我们之后可以凭Txn Hash到Etherscan上寻找这笔交易。
可以找到这笔交易是发给「Compound的cDAI ERC20 Token智能合约」。
本文来源:凯发一触即发(中国区)官方网站-www.0739web.com