比特幣、以太幣存放在區塊鏈的何處?
我們常常聽到某一間商店、電商等,已經開始接受虛擬加密貨幣的支付,又或者是您可以拿虛擬加密貨幣,與交易所兌換法定貨幣等等行為,好像就像一間無形的銀行,在背後支撐著虛擬加密貨幣的交易,您是否會不禁懷疑這些虛擬加密貨幣,到底存放在區塊鏈的何處,又是如何進行交易的呢?本文章會介紹,目前交易量較大與知名的兩大區塊鏈系統(比特幣、以太幣),的虛擬加密貨幣存放機制。<h2>比特幣</h2> <p>在比特幣系統裡面,並沒有一個帳戶來儲存一個帳號的餘額,那要如何得知一個帳號有多少虛擬加密貨幣呢?比特幣使用了UTXO(Unspent transaction output)模型,來作為其虛擬加密貨幣交易系統,簡單來說就是你的帳戶有多少Bitcoin,是來自於上一個交易輸出的總合,下圖為UTXO的交易模型示意圖,可以看到交易1(TX 1)的input0,是來自於交易0(TX 0)的output0。</p> <p><img style="display: block; margin-left: auto; margin-right: auto;" src="https://cdn2-techbang.pixfs.net/system/images/448770/original/fa1e72ffe35c74254c292a72b3fd4179.jpg?1530938824" alt="比特幣、以太幣存放在區塊鏈的何處?" width="720" height="544" /><label class="caption" style="width: 720px; display: block; text-align: left; margin: 5px auto 30px; color: #555555; line-height: 22px; padding: 0px 3px 22px; border-bottom: 2px solid #f0f0f0;"><span style="color: #2382c5; padding-right: 5px;"> ▲ </span>UTXO (圖片來源:<a href="https://bitcoin.org/en/">bitcoin.org</a>)</label></p> <p>我們用一個簡單的例子來介紹它,Mark給Alice 3個BTC,而Jordan給Alice 7個BTC,所以我們可以說總合起來的這10BTC為UTXO,當Alice要把給Julia 10個BTC時,就會創建TX3,並把TX1的3塊BTC,與TX2的7個BTC當做TX3的input,而比特幣系統透過UTXO可以防止雙花(Double Spending),在交易的過程中認證節點(礦工),會簡查其他交易在先前的區塊當中,已經使用過這筆Unspent Output,如果已經使用過,就不會執行這筆交易。</p> <p><img style="display: block; margin-left: auto; margin-right: auto;" src="https://cdn0-techbang.pixfs.net/system/images/448771/original/f45021bb4d64a9f9fc82b16afa14055e.png?1530938927" alt="比特幣、以太幣存放在區塊鏈的何處?" width="600" height="583" /></p> <p>另外在區塊鏈系統中,虛擬加密貨幣是可以分割的,所以如果 Alice只想轉9.5個BTC給Julia怎麼辦?答案是,比特幣系統再創建TX3時,會再多一個output並把剩下的0.5BTC交易給Alice自己。</p> <h2>以太幣</h2> <p>Ethereum系統在虛擬加密貨幣儲存的方式,是使用帳戶模型(Account model),也就是說每個使用者帳戶,都會有一個對應的balance儲存空間,這樣就比較像是現實世界的銀行戶頭一樣,所以在Ethereum裡面無論是進行交易、餘額查詢等,都是直接對帳戶進行操作,這樣的概念是比較直覺得,[圖1]為在Ethereum節點裡進行帳戶餘額查詢。</p> <p><img style="display: block; margin-left: auto; margin-right: auto;" src="https://cdn1-techbang.pixfs.net/system/images/448772/original/052c46955e9c39bbe3f5f6a9c5fc3456.png?1530939026" alt="比特幣、以太幣存放在區塊鏈的何處?" width="513" height="47" /><label class="caption" style="width: 513px; display: block; text-align: left; margin: 5px auto 30px; color: #555555; line-height: 22px; padding: 0px 3px 22px; border-bottom: 2px solid #f0f0f0;"><span style="color: #2382c5; padding-right: 5px;"> ▲ </span>圖1. Ethereum節點進行帳戶餘額查詢</label></p> <figure> <div> <div>&nbsp;在[圖2]中,我們透過帳戶0xca9b&hellip;,轉500 ETH給0x8022&hellip;,並查詢這筆交易的資訊,可以看到from 帳戶0xca9b&hellip;,to 帳戶0x8022&hellip; 500 ETH,非常的直覺。</div> <div>&nbsp;</div> </div> </figure> <figure> <div>&nbsp;</div> <figcaption></figcaption> </figure> <p><img style="display: block; margin-left: auto; margin-right: auto;" src="https://cdn0-techbang.pixfs.net/system/images/448774/original/383690105f7c5246ba5e3693c70cb234.png?1530939112" alt="比特幣、以太幣存放在區塊鏈的何處?" width="720" height="195" /><label class="caption" style="width: 720px; display: block; text-align: left; margin: 5px auto 30px; color: #555555; line-height: 22px; padding: 0px 3px 22px; border-bottom: 2px solid #f0f0f0;"><span style="color: #2382c5; padding-right: 5px;"> ▲ </span>圖2. 交易查詢</label></p> <p>本文介紹了,兩種區塊鏈系統的交易模型,而每個方法都會有它的優劣處,比如UTXO方法在隱私層面就會比較高,而以太坊使用account model,有一個重要的優勢是,使智能合約開發人員更容易開發智能合約。</p> <blockquote> <p>本文授權轉載自<a href="https://medium.com/@daniel.mars622">Daniel Kuo</a><br />原文網址:<a href="https://medium.com/@daniel.mars622/%E6%AF%94%E7%89%B9%E5%B9%A3-%E4%BB%A5%E5%A4%AA%E5%B9%A3%E5%AD%98%E6%94%BE%E5%9C%A8%E5%8D%80%E5%A1%8A%E9%8F%88%E7%9A%84%E4%BD%95%E8%99%95-b7d89422ae5a">比特幣、以太幣存放在區塊鏈的何處?</a></p> </blockquote><a href="http://www.facebook.com/TKbang">加入T客邦Facebook粉絲團</a><img src="http://feeds.feedburner.com/~r/techbang/~4/lOePBDezOgs" height="1" width="1" alt=""/>