- 1、本文档共6页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
以太坊交易签名详解
交易签名模块
交易是区块链和重中之重,不论是简单的转账还是复杂的智能 约的执⾏,都是依托于交易来完成。以太坊中的交易指的是从⽤户账户
(EOA)中发出的含有消息的签名数据包,该数据包存储着要从⼀个帐户发送到区块链上的另⼀个帐户的消息。
交易的主要结构
n交易数据结构是经过序列化后在以太坊⽹络上进⾏传输的。接收序列化交易的每个客户端和应⽤程序将使⽤其⾃⼰的内部数据结构将其
存储在内存中,并且还会使⽤交易本⾝中不存在的元数据对其进⾏修饰。序列化后的的交易是交易结构的唯⼀通⽤标准。
交易数据结构 :type txdata struct {
AccountNonce uint64 json:nonce gencodec:required
Price *big.Int json:gasPrice gencodec:required
GasLimit uint64 json:gas gencodec:required
Recipient *common.Address json:to rlp:nil // nil means contract creation Amount *big.Int json:value gencodec:required
Payload []byte json:input gencodec:required
// Signature values
V *big.Int json:v gencodec:required
R *big.Int json:r gencodec:required
S *big.Int json:s gencodec:required // This is only used when marshaling to JSON.
Hash *common.Hash json:hash rlp:- }l
AccountNonce,交易发起者内部唯⼀标识交易的字段,避免交易双重⽀付l Price, 即你愿为该交易⽀付的每单位 gas 的价格。l GasLimit,此
交易允许的最⼤gas量l Recipient, 即该函数调⽤被送往的地址。l Amount, 交易转移的ETH数量,单位是weil Payload, 交易数据l V,R,S, 交
易签名,通过交易签名可以计算出交易发送者地址。
交易的随机数 (nonce)
每个以太坊账户都有⼀个叫做 nonce 的字段,来记录该账户已执⾏的交易总数。
为了防⽌交易重播,ETH (ETC)节点要求每笔交易必须有⼀个nonce数值。每⼀个账户从同⼀个节点发起交易时,这个nonce值从0开始
计数,发送⼀笔nonce对应加 1。
当前⾯的nonce处理完成之后才会处理后⾯的nonce。前提条件是相同的地址在相同的节点发送交易。 nonce值也⽤于防⽌帐户余额的错
误计算。在以太坊这样的分布式系统中,节点可能⽆序地接收交易。nonce强制任何地址的交易按顺序处理,不管间隔时间如何,⽆论节点
接收到的顺序如何。
以下是nonce使⽤的⼏条规则 :
当nonce太⼩ (⼩于之前已经有交易使⽤的nonce值),交易会被拒绝。
当nonce太⼤,交易会⼀直处于队列之中;
当发送⼀个⽐较⼤的nonce值,然后补齐开始nonce到那个值之间的nonce,那么交易依旧可以被执⾏。
当交易处于queue中时停⽌geth客户端,那么交易queue中的交易会被清除掉。
交易费⽤ (gas)
以太坊的运⾏环境,也被称为以太坊虚拟机 (EVM)。每个参与到⽹络的节点都会运⾏EVM作为区块验证协议的⼀部分。每个⽹络中的全
节点都会进⾏相同的计算并储存相同的值。 约执⾏会在所有节点中被多次重复,⽽且任何⼈都可以发布执⾏ 约,这使得 约执⾏的消耗
⾮常昂贵,所以为防⽌以太坊⽹络发⽣蓄意攻击或滥⽤的现象,以太坊协议规定交易或 约调⽤的每个运算步骤都需要收费。这笔费⽤以
gas作为单位计数,也就是俗称的燃料。
根据以太坊协议,在 约或交易中执⾏的每个计算步骤都要收取费⽤,以防⽌在以太坊⽹络上的恶意攻击和滥⽤。每笔交易都必须包含gas
limit和愿意为gas⽀
文档评论(0)