以太币和比特币是如何运作的
扫描二维码
随时随地手机看文章
要了解以太币(ETH)或是比特币(BTC)是如何运作,从一笔交易来切入是很好的著力点,因为几乎所有的概念与原理都是围绕着交易来发生的。
本篇文章将从一笔普通的ETH 交易与一笔BTC 交易来检视架构上的异同,借以了解各自之运作原理。
下方是一笔在 Etherscan(以太坊的区块浏览器,任何在链上发生的交易都可以在Etherscan一览无遗)上随机撷取的交易,我们先来解析一下这笔交易内容包含的资讯。
以太坊上的一笔普通交易
第1点「交易杂凑值」,即这笔交易的id,是唯一识别值,如我们的身分证字号一般。这个值是由这笔交易的所有资讯杂凑而成。
第2点「所在区块」,为这笔交易位在的区块,亦即「区块高度」。后方灰标签中的「13 Block Confirmations」代表在这个区块之后已经接了12个区块(包含本区块共有13个区块已经确认)。因为有可能有分叉的问题,故通常在一笔交易出块后,要等到5个以上的区块确认,才较能确保本交易是在最长的区块链之上,相关资讯不会再被更动。
第3点「时间戳记」,为矿工打包本笔交易上链的时间,时间以UTC(世界协调时间)表示,和台湾有8个小时的时差。
第4点「来自地址」,表示本笔交易是从哪个地址送出。
第5点「接收地址」,表示本笔交易的金额将被哪个地址接收。
第6点「交易金额」,表示本笔交易中所转移了多少颗以太币,后方会以检视时的时价来换算。
第7点「手续费」,在以太坊中进行交易,必须经由矿工运算打包后上链,故需要支付给矿工手续费。一笔一般的以太坊转帐交易会使用21,000的Gas(燃料),可以理解成点对点网路要花多少资源去做这笔交易的运算。
[注]以太坊交易手续费公式:
Tx Fee(7手续费)= Gas Used(7-2燃料用量) * Gas Price(7-3单位燃料价格)
用比喻来说明的话,可以理解成台北开车至台中的油钱:「油钱= 使用公升数* 每公升油价」
而Gas Limit 比较像是出发前你要加多少公升的油,如果加的油不足你旅程需要的油,那这趟旅程(这笔交易)就会失败。
发送交易时,部分钱包的Gas Price & Gas Limit 是可以自己设定的,Gas Limit 基本上只要大过交易所需的用量,不要交易失败即可。比较需要注意的是,在以太坊如果因为Gas Limit 设不够等原因交易失败,那么手续费还是会被收取,不会退回。(因为矿工还是花资源下去帮你算了)
因为交易的Gas Used是矿工实际在运算时才会被决定的,故Gas Price成为决定要支付给矿工多少手续费的决定因子。原则上手续费越高会越优先被矿工打包上链,交易的等待时间会越短。由于以太坊上交易量会随时间改变,欲知道当前即时状况以决定手续费要设多少,可以到ETH gas staTIon查看。
第8点「Nonce」,目前比较没有一个比较统一的翻译,我个人觉得可以理解为序次,前方的值“22954”表示这个「来自地址」截至本交易为止,已发送了22954笔交易。
后方的值“210”则表示这笔交易是在这个「所在区块」中的第210笔交易。
第9点「额外注记」,则是可以写上额外的文字作为这笔交易的注记,也会牵涉到以太坊与比特币最大的不同处之一:智慧合约,我们会在后续详述。
介绍完了以太坊的一笔交易,接下来我们要先来谈谈以太坊和比特币的架构,才能来介绍比特币的交易。因为比特币的交易长相比较特别一些,不像以太坊这么直觉。
以太坊的架构类似银行帐户,有资料库在记录每个帐号和帐号的余额,透过交易来更新。如下图所示,地址14c5f8ba在一笔交易中发送了10个eth给地址bb75a980 ,于是在交易过后双方的以太币数量便被更新了。
比特币的UTXO模型
然而,比特币是采用了另外一种,叫作 UTXO(Unspent TransacTIon Output,TransacTIon简称Tx)的架构,如下图所示:
我们可以想像比特币是一坨一坨的钱堆,我们的地址比较像是能够操控这些钱堆的钥匙。可以把钱堆凑在一起做交易;也可以把一坨钱堆拆开来交易。
每一笔交易可以有多个input(钱堆),交易后也可以变成一或多个新的钱堆。我们直接透过 Blockstream Bitcoin Explorer(比特币的区块浏览器,任何在链上发生的交易都可以在这一览无遗)上的随机一笔比特币交易来一探究竟:
比特币的一笔普通交易
可以发现,这笔交易动用了三个钱堆,推测可能是这三个钱堆的所有者想要发送四颗比特币给别人,但他想动用的前两个钱堆总额不足四颗,所以便再动用了第三个钱堆,凑足四颗发送给别人。而多出的比特币则会变为「Unspent (未花费)」的钱堆回到所有者身上。
打开Details 查看交易的细节后便可以发现,右下方的#1 钱堆中有标注Unspent 的字样,这笔钱堆在交易后会返回到发送交易的地址中。
此外,我们可以发现input 的三笔钱堆,总额是6.1446498 BTC;而output 的两笔钱堆,总额却只有6.1442275 BTC。中间有0.0004223 BTC 的差额,原因是比特币交易需要付手续费给帮忙验证打包上链的矿工,故这0.0004223 BTC 便是这笔交易手续费的金额。
UTXO的架构,其实是解决了Account model同一个地址(帐户)无法同时进行两笔交易的问题(Account model一定会有先后顺序,即Nonce)。以太币为了避免双重花费(Double Spending:同一笔钱被花了两次),会以Nonce来标注每一笔交易的先后次序,若同时发送多笔交易,一但前面有一笔交易卡住,则后面的交易也都会跟着塞住。
比特币UTXO的架构可以同时进行多笔交易,一个地址可以「同时」将多个钱堆发送给多个不同的地址,在同一个区块,甚至同一笔交易中完成。可以把多个钱堆同时进行交易,算是让交易变得更加有效率。(虽然比特币出一个块依然要10分钟⋯⋯)
至此,我们对于比特币和以太币的架构都有初步的认识了。接着便要来介绍以太币和比特币最核心的差异:智慧合约。我们再来重新检视一下比特币和以太币的交易。
还记得在以太坊交易的第9点中,有个额外注记的部分,我们在前面跳过了。其实这个部分不只可以作为额外注记,要在以太坊上发布智慧合约、操作智慧合约也都是要透过这个栏位来输入程式码,被矿工执行。
其实比特币也可以在交易中做额外注记,会标注在「OP_RETURN」的栏位中,但比特币这个额外备注的栏位并无法被解释为程式码,故在此便只能单纯作为交易的注记。
结论
1. 以太坊采用Account Model 架构;比特币则是采用UTXO 架构。
2. 以太坊同一个地址(帐户) 发送出的交易必有先后顺序之分(Nonce);比特币则是类似钱堆的架构。
3. 以太坊可以在「Input Data」栏位输入程式码,部署或操作智慧合约;比特币则只能在「OP_RETURN DATA」栏位单纯做备注。