以太坊交易基础知识

在这里插入图片描述

1、账户模型与转账

《区块链原理与技术》3.3

(1) 账户模型:

将账户记录保存到所有以太坊节点中,实现去中心化。

①账户与地址:

由于以太坊是一个去中心化系统,没有办法实现用户到密码的映射,因此使用非对称密码学来进行认证和控制。对于一个私钥,可以计算得到对应的公钥,再计算私钥对应的以太坊地址。地址是用户的一个身份标识,账户代表地址对应的信息。

②地址的生成:

公钥经过一次哈希算法得到用户地址。

③账户结构:

保存对应账户的数据信息,主要有以太币余额,用于记录这个地址交易此书的计数器Nonce。余额记录了当前地址持有的以太币数额,单位是Wei;Nonce值记录了这个地址的累计发起交易此书。每次这个地址发起的交易被确认后,Nonce就会增加。

(2)转账

< From:Alice, To:Bob, value:1 ETH > 通过数字签名的方式认证。
交易的数据通过Alice私钥进行签名之后会得到对应的数字签名,通过相应的签证流程,以太坊节点可以通过交易本身和对应数字签名还原Alice的公钥值。再通过以太坊地址生成流程,通过Alice公钥计算对应的以太坊地址。如果交易受到篡改,则会得到错误的地址,因此避免了通过篡改签名来攻击账户。

(3)Nonce

以太坊中,交易合法性的检验在于交易发起者的账户余额,数字签名始终有效,交易可能可以被无限次发起而不经过发起者同意。为了防止这样的恶意攻击,以太坊增加了计算交易次数和序列的Nonce计数器,只有账户的Nonce和交易的Nonce对应时交易才是合法的。这样可以避免交易重放的攻击。
Nonce还能用来控制账户发起交易的顺序,实现一些复杂的功能。(如撤销)

2、以太坊交易

(1)交易内容

交易数据分为:基本的交易、驱动智能合约、交易签名。
详细属性:
①From:交易发送者地址
②To:交易接收者地址
③Value:交易金额
④Data:交易附带数据,传递创建合约的代码和构造函数,或调用合约的函数及参数
⑤Nonce:交易发送者累计发出的交易量,区分一个账户的不同交易的顺序
⑥GasPrice:发送者支付给矿工的Gas价格
⑦GasLimit:交易允许消耗的最大的Gas,解决智能合约不能停机的问题
⑧Hash:交易ID,是由以上字段生成的哈希值
⑨r、s、v:用于ECDSA验证的参数,用于确认转账的合法性

(2)交易费用

Gas机制:保证合约停机,对交易执行的成本进行归一化计算。
Gas:以太坊中资源消耗的基础单位
GasLimit:允许消耗的最大Gas值,如果事实计算的GasUsed超过了GasLimit,则判定为Gas不足,交易失败。
GasUsed:执行后消耗的Gas值,实时计算
GasPrice:用户为消耗的每个Gas单位支付的以太币
换言之,挖到区块的节点除了得到区块奖励以外,还将得到运行以太坊智能合约的手续费。
Gas机制的弊端:定价由以太坊社区的开发者决定,其合理性常常受到质疑。

(3)交易的周期

将以太坊交易在网络中的周期分为发起、广播、打包、执行4个阶段。

①发起

用户在本地的以太坊钱包软件中选择要发送交易的地址(From),输入目标地址(To),金额(Value),是否部署或调用合约(Data),手续费单价(GasPrice)等,确认发送至以太坊节点,节点和钱包可以是同一台物理服务器,可以可以不是。
一般将钱包软件会自动为用户得出GasLimit,给出对应Nonce值,最后使用私钥得到数字签名,将交易序列化以后发到网络中。

②广播

节点收到交易以后对交易进行验证(交易的签名、交易的发起账号余额是否能支付转账金额和手续费、交易的Nonce值是否为账号已发出的交易数)。验证为合法交易后,将交易加入节点的交易池中。还会根据P2P网络广播的策略向相邻节点继续广播。
交易池中存储待打包的交易,受限于节点资源,其村相互数量常常是有限的,一般可以在启动以太坊程序时配置这一交易的最大值。

③打包与执行

交易进入内存以后,具有挖矿功能的全节点开始打包下一个区块。一般节点会从自身利益出发将交易池中的交易按照GasPrice大小取出较高手续费的交易。少数情况部分节点只打包自己发起的交易(如矿池提供商或交易所服务商的节点)
交易的执行类型如下:
a.创建合约交易
b.调用合约交易
c.普通转账交易
在所有需要打包的交易执行后,交易、状态、收据的信息也会打包到区块中。记账节点在打包交易并获得合法区块后,将区块广播到相邻节点。

(4)验证与执行

没有获得记账权的节点,即未打包区块的节点,在收到广播的区块后,将对区块进行合法性验证,执行交易。保证合约执行的去中心化。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值