一次搞懂「以太坊智能合约」如何运作

2019-08-25 10:57 栏目:经验之谈 来源: 查看()
在之前的《从一笔交易来看ETH与BTC之异同》中,我们简要介绍了事务中ETH和BTC传输事务之间的区别。在本文中,我们将讨论以太坊智能合约。我不会谈论实现部分,但我希望我能从实际应用场景中删除它,以便阅读本文的读者可以完全理解智能合约的技术操作原理。 这很好!然后这篇文章开始了!我们直接去山上谈谈: 什么是智能合约?

智能合约本质上是部署(部署)到区块链的一段代码。因为可以查看区块链上的代码(严格来说,二进制代码),所以它是开放透明的。当在链上部署智能合约时,它会创建一个永久存在于链中的块中的合同地址。以下是Pelith开发和部署的CryptoCow智能合约的示例。

一次搞懂「以太坊智能合约」如何运作

如何部署智能合约? 我们谈到了智能合约的诞生。 在开发人员开发代码之后,它必须发送一个具有接收地址“0x0”的事务(一般事务接收地址以0x开头,后跟一串字),并将其放入事务的输入数据中。开发代码。当矿工看到地址为0x0的交易时,他知道交易的发件人想要部署智能合约,然后将输入数据中的代码部署到区块链并生成合同地址。

一次搞懂「以太坊智能合约」如何运作

但是,我们会发现输入数据充满了难以理解的文本,这似乎与我们想到的代码不同。原因是存储在以太坊中的合同逻辑采用字节码的形式,因此开发人员使用Solidity开发了原始版本。在部署代码之前,必须将代码编译为字节码。 目前,大多数开发人员使用的开发工具,如Remix本身,都具有编译功能。在开发人员开发源代码之后,可以通过一键编译获得字节码。 到目前为止,让我们整理部署智能合约的过程: 1.开发人员用Solidity写完成合同 2.源代码编译为字节码 3.输入交易的输入数据 4.接收地址部分留空(0x0) 5.确定节点(矿工)将合同发送到链 6.矿工执行和部署链以生成智能合约 合同有自己的“合同地址”,永久在链上。 什么是合同地址? 生成合同后,将创建合同地址,并且合同帐户具有外部帐户(外部帐户)等地址,该地址记录nonce(帐户中的交易数量)和余额(帐户余额)的跟踪。

一次搞懂「以太坊智能合约」如何运作

但是,由于合同是由“存在”创建的,与个人帐户不同,它可以“主动操作”将交易发送给其他人。因此,如果我们想要使用智能合约的功能,我们必须在个人账户中发送“接收地址作为合同”。 “地址”交易,主动触发合同,让合同执行行动。 因此,任何交易的起点必须是个人账户。

一次搞懂「以太坊智能合约」如何运作

接下来,让我们看一下与智能合约交互的交易。下面是一个非常常见的操作合同事务,它涉及将通过智能合约创建的ERC-20令牌从一个地址移动到另一个地址。在另一个地址。这些操作必须由程序源代码中的事务发起者编写,编译并放入输入数据中。

一次搞懂「以太坊智能合约」如何运作

上面的红色框实际上是在Etherscan解码(解码)之后呈现的样式,而Solidity源代码实际上与以下内容一样长,以十六进制(16位系统)表示。

一次搞懂「以太坊智能合约」如何运作

比较上下形式的两种不同表示,我们可以发现下图中红底线(0x93316cdf)的部分由上图中的MethodID标记。事实上,0x之后的前8个代码表示我们想要调用合约的函数(我们将计划在编写智能合约时可用的函数),然后是函数的其他参数。 而这个MethodID(0x93316cdf)实际上有许多其他别名,这里有一些比较常见的别名:HashID,函数哈希,函数签名等。 因此,在了解了这一点之后,将来,当我们运营DAPP时,我们可以检查其背后的操作,或者我们可以通过Etherscan区块链浏览器Etherscan直接跟踪交易(交易),看看是否根据DAPP实际应用了智能合约。显示程序界面的状态以执行该功能。 如果您不确定MethodID是什么或它将做什么,您可以转到以太坊功能签名数据库进行查询:

一次搞懂「以太坊智能合约」如何运作

发布0x93316cdf并进行搜索后,您可以知道此MethodID对应的功能,然后使用此功能检查智能合约的代码以确认正在操作的内容。

一次搞懂「以太坊智能合约」如何运作

结论 智能合约是部署在区块链上的一段代码,可以具有多种功能。由于区块链是透明和透明的,任何人都可以查看和验证。 合同部署后,将生成一个“合同账户”,其中包含自己的合同地址。但是,所有交易和操作必须由“个人账户”启动,以调用合同中的功能来执行。 要确认操作合同的事务已完成,您可以在输入数据中查看0x之后的前八个代码MethodID,并查询该函数是什么,然后检查源代码以确认合同帐户。 这很好!在这里介绍,每个人都应该对智能合约的概念有基本的了解,并且在运营DAPP和查看智能合约时,将来可以验证更多的背景知识。在下一节中,我们将介绍区块链令牌演变的历史,从第一个比特币的USDT到以太坊的ERC20令牌。最后,我们讨论了为什么Libra无法从技术角度吸引顶级开发人员的注意。谢谢。

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

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

提示:仅接受技术开发咨询!

郑重申明:资讯文章为网络收集整理,官方公告以外的资讯内容与本站无关!
NFT开发,NFT交易所开发,DAPP开发 Keywords: NFT开发 NFT交易所开发 DAPP开发