区块链兄弟社区,区块链技术专业问答先行者,中国区块链技术爱好者聚集地
作者:吉祥在成长
来源:简书
原文链接:http://t.cn/RFgCCLh
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
本文约1900字+,阅读(观看)需要11分钟
关于以太坊的交易,本文主要讲述三个部分的内容,分别是以太坊交易模型、交易的结构和交易的生命周期。
1. 以太坊交易模型
交易模型部分分别讲解了比特币的UTXO交易模型,以太坊的Account交易模型,并通过对比来说明两者的优劣。
1.1 比特币的 UTXO 交易模型
比特币的交易采用了UTXO模型,其中UTXO 代表 Unspent Transaction Output,即未花费的交易输出。通过下图来说明。
UTXO交易模型
图中使用的比特币单位是聪(satoshi),交易费都按10k计算。
- 交易0表示,某个地址有100k的未花费交易输出(UTXO),向另外两个地址分别转账40k和50k,这样那两个地址就分别有了40k和50k的UTXO。
- 交易1表示,一个含有40k的UTXO的某地址向外转账,除去10k的交易费,接收地址就得到了30k的UTXO。
- 其它的交易依次类推。
这样,整个系统的收支状态信息都保存在UTXO中。每一个UTXO都由私钥控制,解锁后才能使用。
这种设计的好处是,有一定的保密性,如果一个用户经常更换地址,外界就不容易判断他的身份。但这对智能合约系统来说,就是不利的地方,因为智能合约需要一个确定的身份来操作。
它的缺点是会影响区块的尺寸,如果在某个交易中,有1000个交易输入,那就需要1000个解锁,这会造成区块的尺寸增大,尺寸大的区块就需要多的交易费。交易费在这里就是控制因素,使得交易尽量采用少的输入。
它还有一个缺点很难精细地控制使用哪些输入,假如要花费5个比特币,有50种排列组合,到底选哪个呢,不易控制。以太坊则没有这个缺点,因为它是采用的账户模型。一个账户对应一个余额。
下面是以太坊账户交易模型的介绍。
1.2 以太坊的 Account 交易模型
在以太坊中采用账户模型,这种设计不易于隐藏身份,通过合约来混淆。
这种模型节省空间;实现比较简单。
DAPP(分布式应用)也需要这种模型,在应用中,合约的发起、调用都需要特定的人来执行。而在比特币中,如果输入比较多,则不易控制。
历史信息获取也比较简单,可以只检查更新的部分。
同时签名验证次数少,不像比特币要依赖输入的多少。
2. 以太坊交易的结构
2.1 账户类型
以太坊中有两种类型的账户:
外部账户(Externally Owned Accounts 或EOA):被私钥控制,没有与合约代码相关联,有余额。可以发起和签名交易,可以创建合约。
其地址长度为公钥的Keccak256散列值的最后20个字节。
合约账户:被合约代码控制,同样有余额。能被外部账户调用来激活,也可以通过另外一个合约账户来激活。
合约账号一经创建,存在于区块链中。一旦接收到消息,其包含的代码被激活开始运行,它修改全局状态或向其它合约继续发送消息。
2.2 交易的内部结构
交易中的几个参数介绍:
- To: 交易接收方地址(20Bytes)
- Value: 交易发送的ether数量(wei)
- Startgas:交易者愿意花费的最大Gas数量
- Gasprice: 交易者愿意支付的Gas价格
- startgas*gasprice = 最终ether数值
- nonce: 交易发起者填写的序列号,防止重放攻击
- Data:可变长度的二进制数据载荷
- V,R,S: ECDSA数字签名信息
2.3 注意事项
- 不要发送到无效地址!这样会丢失以太币。
- 发往合约账号的交易一般需要符合调用规范,否则会调用合约fallback函数,如果正常则调用并转账到该函数。
- 地址0用来创建合约,合约编译结果是data。创建合约需要消耗Gas。
- 专有的销毁以太币地址0xdead,一般用不到。
3. 以太坊交易的生命周期
这里有一个交易执行过程的例子。如图,有三个节点,Alice节点,Charlie节点,矿工节点。
交易示例1
交易示例2
- Alice发布一笔交易,给Bob转账 1 ether。
- 交易广播到所有的节点。
- 矿工节点开始挖矿,赢得竞争后,记录新区块,Alice 的余额变为 18.98** ether,比 19 少的那部分是交易费,Bob 的余额变为 6 ether。
- 矿工将新区块广播出去,其它节点更新区块。
经过若干个区块,Alice 的交易被认为是安全的。
文章发布只为分享区块链技术内容,版权归原作者所有,观点仅代表作者本人,绝不代表区块链兄弟赞同其观点或证实其描述。
郑重声明:本文版权归原作者所有,转载文章仅为传播更多信息之目的,如作者信息标记有误,请第一时间联系我们修改或删除,多谢。
郑重声明:本文版权归原作者所有,转载文章仅为传播更多信息之目的,如作者信息标记有误,请第一时间联系我们修改或删除,多谢。