首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

以太坊交易的学习笔记

关于以太坊的交易,本文主要讲述三个部分的内容,分别是以太坊交易模型、交易的结构和交易的生命周期。

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 的交易被认为是安全的。

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20181020A0IVTR00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券