首页 > 其他 > 详细

17.以太坊的一些点——2019年12月13日

时间:2019-12-13 11:37:16      阅读:116      评论:0      收藏:0      [点我收藏+]

2019年12月13日10:43:02

1.以太坊介绍

以太坊由俄罗斯开发者 Vitalik Buterin(V神)在2013年创建的,它针对比特币区块链系统缺少图灵完备等缺点,建立了一个可编程、图灵完备的区块链。

以太坊允许任何人通过智能合约在平台上建立和使用去中心化应用 Dapp(Decentralized Application)

2.账户

以太坊中包含两类账户:外部账户和合约账户。外部账户和合约账户在以太坊下用同一数据结构表示,

1.外部账户(Externally owned account):

? 被私钥控制。一个外部账户可以创建交易,来发送消息给另一个外部账户或合约账户,以此来触发转账交易和智能合约的调用、创建。

2.合约账户(Contract account):

? 被它们的合约代码控制且有代码与之关联。合约账户不可以自己发起一个交易,只能被外部账户调用。

外部账户和合约账户在以太坊下用同一数据结构表示,每个账户包含了4个字段:

  • Balance

  • Nonce
  • Code Hash
  • Storage Hash

技术分享图片

3. 交易数据结构

交易是一个序列化的二进制消息,其中包含以下数据:

  • Nonce
  • Gas Limit
  • Gas Price
  • To
  • Value
  • Data
  • v r s

技术分享图片

4.以太坊双花问题

1.以太坊协议支持分叉,则万一两个区块同时出块上链得到认可,且这两个区块中存在双花现象。

结论:可能存在这种情况,但最终只会有一笔交易有效

2.在以太坊里面,每个帐户下面也都管理着一个nonce值,这也是一个非常重要的数字。nonce解决了“双花”问题。

以太坊一个地址,就理解为一个帐号,在刚生成地址时,nonce为0,该地址每发送一笔交易,nonce值加1。

这也就是说,查看某地址的nonce值,可以知道该地址已经产生了多少笔链上交易。

3.举例:

A用户当前nonce值为10,然后A在短时间内分别向B, C 发起了2笔转帐交易,那nonce对应的是11,12。

矿工在打包交易的时候,会检查A的nonce值,不管矿工是先接收到12的交易,还是11的交易(网络传输),都一定是先打包nonce值为11的交易,再打包12的交易。

如果矿工先接收到12的交易,但是发现没有11的交易,这时交易会被挂起,一直等11的交易出现。

交易的执行顺序是依据nonce值

技术分享图片

4.一笔交易的结构

技术分享图片

技术分享图片

17.以太坊的一些点——2019年12月13日

原文:https://www.cnblogs.com/oneapple/p/12034071.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!