2019年12月13日10:43:02
以太坊由俄罗斯开发者 Vitalik Buterin(V神)在2013年创建的,它针对比特币区块链系统缺少图灵完备等缺点,建立了一个可编程、图灵完备的区块链。
以太坊允许任何人通过智能合约在平台上建立和使用去中心化应用 Dapp(Decentralized Application)
以太坊中包含两类账户:外部账户和合约账户。外部账户和合约账户在以太坊下用同一数据结构表示,
1.外部账户(Externally owned account):
? 被私钥控制。一个外部账户可以创建交易,来发送消息给另一个外部账户或合约账户,以此来触发转账交易和智能合约的调用、创建。
2.合约账户(Contract account):
? 被它们的合约代码控制且有代码与之关联。合约账户不可以自己发起一个交易,只能被外部账户调用。
外部账户和合约账户在以太坊下用同一数据结构表示,每个账户包含了4个字段:
Balance
Storage Hash
交易是一个序列化的二进制消息,其中包含以下数据:
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.一笔交易的结构
原文:https://www.cnblogs.com/oneapple/p/12034071.html