一秒通1MT.CN一秒通1MT.CN

理财、金融、保险、贷款、虚拟货币
等知识简单易懂一秒就通!

科普:以太坊交易的生命周期?

eth(以太坊)以太坊钱包基本概念介绍

了解以太坊交易是如何在网络中产生和广播的

交易是以太坊区块链(或任何类似区块链)的核心。当与以太坊区块链交互时,您正在执行交易并更新其状态。你有没有想过,当你在以太坊执行交易时,发生了什么??让';让我们通过一个交易实例来回答这个问题。本文包括以下内容。

以太坊交易的端到端遍历,即从你的浏览器/控制台开始,进入以太坊网络,然后返回你的浏览器/控制台

了解使用Metamask或Myetherwallet等插件而不是运行自己的节点时,事务是如何进行的

如果你是偏执狂,就不要';如果您不信任任何插件,并且想要自己执行事务,您应该怎么做?

这篇文章的读者需要对以太坊及其组成部分有一个基本的了解,比如账户、燃气和合同。。有关这些概念的详细解释,请参考下面的文章(编辑';s注:中文翻译请参考文末超链接《以太坊中的账户、交易、Gas和区块GasLimit》)。如果你是一个不熟悉以太坊的开发者,下面的文章可能会对你很有帮助。。您还可以从以下文章中了解如何构建简单的分布式应用程序。如果你有过执行交易的亲身经历,这篇文章对你的意义会更大。例如,它可以是向另一个人或合同发送一些以太币的交易。另一个例子您还可以与分布式应用程序进行交互。如果你在这个网站上购买一些代币,那就是交易。如果你投票给一个候选人,它';这也是一笔交易。

Let';让我们以下面的约定调用为例。并遍历函数调用/事务如何被执行并永久存储在区块链中的整个过程。点击此处了解整个合同。在更高的层面上,这是一个投票合同,你可以预设一些候选人参加竞选,任何人都可以投票给他们。。这些投票将会记录在区块链上。

假设您在本地计算机上运行了一个以太网客户端(Geth或奇偶校验),您的计算机连接到一个以太网(测试网络或主网络),因此您有权访问合同地址和ABI来执行交易。

如果你已经构建了一个分布式应用,你应该熟悉上面的代码。这是一份名为"投票",已经部署在区块链号上。让';让我们以这个契约为例,执行一个名为voteForCandidate的函数。,输入候选人姓名、交易气体限额和执行交易的账户。从名字上可以看出,这个功能可以用来给候选人投票,投票结果记录在区块链中。在下面,我们将尝试解构这个调用。为了理解执行javascript函数时会发生什么。

1。构建原始事务对象

,如下图所示。,voteForCandidate函数调用首先被转换为原始事务(rawTxn)。Web3js库用于构造原始的事务对象。

Let';让我们试着理解原始事务对象中的所有字段以及它们是如何设置的。。

nonce(随机数):每个以太坊账户都有一个名为nonce的字段,用来记录账户执行的交易总数。Nonce的值随着每个新事务的执行而增加,这可以让网络知道事务需要被执行的顺序。。Nonce也用于重放保护。

气价:您愿意为此交易支付的每单位气价。如果你是在主网交易,恰好ETH加油站上有个网站。您可以参考其建议为您的交易设定气价,使交易在一定时间内成功执行。目前气价以GWei为单位,其范围为0.1-

100Gwei。。气价及其影响将在下文进一步介绍。

气限:您愿意为此交易支付的最大气价。这个上限可以确保当出现事务执行问题时(比如陷入无限循环)您的帐户赢了';don’别把钱用完了。一旦交易完成,所有剩余的汽油将返回到您的帐户。

to:函数调用发送到的地址。。0x633296BAEBC20f33AC21C1b105d7CD1f6a0718b是我们例子中的投票契约的地址。

值:您打算发送的以太币总额。。当我们执行voteForCandidate函数时,我们不会';根本不发以太币,所以值为零。如果你想执行一个交易,把以太坊发给另一个人或者合同,你就需要设置值。

数据:Let'让我们看看数据字段是如何计算的。

首先,从VoteForce候选(ByteS3Candidate)(一个32字节的候选)的ABI获取函数签名,并获取其哈希值。

取哈希值的前4个字节。,即:0xcc9ab267。

然后是参数';尼克';被转换成32字节。,get52616d6100000000000000000000000000000000000000000000000000000000

将两者结合起来,得到数据有效载荷。

2。签署交易

如果您还记得,您使用web3.eth.accounts[0]来执行交易。以太坊网需要知道你确实是账户的主人,这样才能保证其他人不能以你的名义执行交易。。向网络证明这一点的方法是用账户对应的私钥对交易进行签名。签名的交易如下图所示:

3。交易在本地验证

签名的交易将提交到您的本地以太坊节点。。然后,您的本地节点将验证已签名的事务,以确保它确实是由该帐户地址签名的。

4。事务被广播到网络

签名的事务通过您的geth/parity节点被广播到它的对等节点。这些对等点将事务广播给它们的对等点,依此类推。一旦事务被广播到网络,您的本地节点也将输出事务的id,您可以用它来跟踪您的事务的状态。事务id是已签名事务对象的哈希值。

如果你在公共以太坊网络上执行交易,追踪你交易状态的最好方式就是通过etherscan.io如上图,你有没有注意到有几个节点被标记为etherscan节点?。以太扫描';的团队运行了几个节点,并将一个很棒的前端网络应用程序连接到Etherscan。如果您的交易被他们的节点选中,您可以在他们的网站上查看您的未决交易。

还有一点要记住,不是所有的节点都会接受你的事务。这些节点中的一些可以被设置为仅接受天然气价格超过某个最小值的交易。如果你设置的气价低于下限,节点会忽略你的交易。

5。矿工节点接受交易

如图所示,以太坊网络既有矿工节点,也有非矿工节点。您可能知道,将您的交易包括在区块中是矿工的责任。矿工是交易池的维护者,你的交易首先加入交易池。,再由矿工进行开始评估。

从上图中,您会注意到矿工将所有交易存储在根据天然气价格分类的池中。气价越高,越有可能将交易添加到下一个区块。这是矿工的常见设置';节点(为更高的报酬而优化)。但是矿工可以根据自己的喜好设置自己的节点对交易进行分类(比如只挖掘气价低的交易来帮助网络)。

来自上图你看到我们的voteForCandidate交易是如何沉到矿池底部的了吗?一旦所有天然气价格高的交易都被挖掘出来并纳入区块,矿商就会挖掘我们的交易。

另外需要注意的是矿池可以容纳的事务数量是有限的。比如一个众筹活动如火如荼或者一个非常流行的分布式应用(比如加密猫)诞生。人们提交了天然气价格高的交易,希望矿商会先选择他们的交易。。如果气价高的交易填满了矿池,气价低的交易就会被放弃。我们的候选人尼克赢了。有一段时间我得不到任何选票。在这种情况下,我们甚至必须重播我们的事务。

另一个可以让你的交易在矿池中上升的技巧是重新提交你的交易,提高气价,保持nonce值不变。这样,当矿工接收到新的交易时,具有更高气价的新交易将覆盖先前的交易。。如果nonce值被更改,重新提交的事务将被视为不同的事务(最终Nick将被投票两次)。这里有一篇好文章(编者';s注:中文翻译见文末超链接《科普|释放阻塞的以太坊交易》)。作者吉姆麦克唐纳对此进行了深入的解释。

6。矿工发现了一个有效的块,并将其广播到网络

矿工最终选择了我们的事务,并将其与其他事务一起包含在该块中。。矿工只能选择一定数量的交易加入区块,因为以太坊设置了单个区块的气体上限,换句话说,所有交易的总气体上限不能超过该区块的气体上限。。你可以看看ethstats.net目前的汽油上限。

一旦矿工选择将事务包含在块中,这些事务将被验证并包含在要处理的块中,工作量认证将开始。。矿工';s节点(通过解决工作负载证明问题)将最终找到一个有效块并将该块添加到区块链。就像你本地节点广播的原始事务会被其他节点接收一样,miner节点也会把这个有效块广播给其他节点。

7。本地节点接收/同步新数据块

最终,您的本地节点将接收此新数据块并同步区块链的本地拷贝。一旦接收到新块,本地节点将执行该块中的所有事务。

如果您使用truffle执行交易,truffle将不断测试区块链进行确认。一旦发现事务被确认,它将执行then()块中的代码,并打印控制台日志函数(在我们的每个示例中)。

如果您安装了MetaMask浏览器插件,您可以在浏览器中管理您的帐户。该密钥将只存储在您的浏览器中,因此您是唯一有权访问您的帐户和私钥的人。当您在浏览器上执行事务时。插件会将您的函数调用转换成原始事务,并用您的私钥对事务进行签名。Metamask运行自己的节点,并使用它们来广播您的事务(Metamask使用由Infura操作的节点)。因此,,你不';不需要运行你自己的以太坊节点。如果你没有,你该怎么办?不喜欢使用插件或者担心您的本地geth节点可能被损坏(篡改)?有一个安全的方法可以解决这个问题。

你注意到了吗?前两步不要';根本不需要网络。如果想保证自己的交易永远不被篡改,可以使用没有互联网的电脑,将这个函数调用转换成原交易,用自己的私钥对交易进行签名。之后,您可以复制已签名的事务字符串。,并使用联网的计算机将其广播到网络。您可以使用Etherscan和Infura等服务将您已签署的交易广播到互联网。

另一个安全策略是使用硬件钱包,如Ledger或Trezor。。这种钱包存储了你的私钥,签署交易的密钥已经被编程到硬件本身中。他们需要在线的唯一原因是发布你签署的交易。

那个';科普:以太坊交易的生命周期?详情更多以太坊信息请关注dadaqq.coM其他相关文章(www.dadaqq.coM)!

本站提醒投资有风险,入市需谨慎。此内容不作为投资理财建议。

相关推荐
本文地址: http://www.1mt.cn/539644
文章来源: kk
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 931614094@qq.com 举报,一经查实,本站将立刻删除。 未经允许不得转载:
分享到: 更多
科普:以太坊交易的生命周期?文档下载: PDF DOC TXT

一秒通1MT.CN | 理财、金融、保险、贷款、虚拟货币 等知识简单易懂一秒就通!

联系站长网站公告