今天來看比特幣論文提到的最後兩個實作上的技術,今天的內容用實際的比特幣交易來進行說明。
從Blockchain.info網站上隨便找一個區塊:https://blockchain.info/block-index/1663686
觀察該區塊第一筆交易,可以發現並沒有輸入只有輸出,這就是所謂的挖礦獎勵,裡面包含了這次交易產出的錢和手續費,一共是14.71290545 BTC。
可以注意到是有小數點的,比特幣最小的消費單位是聰(Satoshi,1BTC=100,000,000聰)。
另外這裡給的1GbVUSW5WJmRCpaCJ4hanUny77oDaWW4to並不是公鑰,而是所謂的比特幣地址,在下面的Privacy部份會解釋到。
根據比特幣的運作,錢的歸屬都是跟鑰匙掛勾而不是人,那麼如果一筆交易只能像Day 4那樣一次跟另一組鑰匙交易實在太麻煩了。
根據論文的說法,一筆交易可以有多筆輸入,但最多兩筆輸出,一筆給收款人、一筆把錢返回給自己,如下圖所示。
把錢返回給自己的用處在於,之後不必再去追蹤過去的交易流向來判斷鑰匙裡放了多少錢,而是根據該鑰匙最後的交易即可。但是實際觀察比特幣的交易紀錄可以發現到,一個transaction實際上是包含多個出入和輸出的。
在剛剛的block中挑出一筆交易,可以發現裡面同時有三個輸入和遠遠超過兩個的輸出,說好的兩個輸出呢?不過個人認為比較關鍵的重點在於輸出有一個給收款人找零的機制,至於實作上的一點出入倒也不是很重要。
傳統上可能的資產管理會有銀行之類的第三方代理負責將我們的財產狀況保密,但是像比特幣這種公開整個帳本的交易都是透明的,雖然公鑰可以隱藏個人的身份,但是透過追蹤交易還是可以掌握到某個人的資金流向(例如某筆交易同時有很多個輸入,大概就可以發現這些輸入之前的交易都與某個人有關)。
下圖上方是傳統上的交易模式,由第三方代理負責我們財產的隱私權,下方是比特幣的設計,整個交易過程對所有人都是公開的。
在比特幣的實作中使用了地址來作到更進一步的隱私確保,文章上面的那幾張圖中密密麻麻的數字就是地址了。
簡單說就是:
私鑰---產生--->公鑰---產生--->地址
地址---不能反推--->公鑰---不能反推--->私鑰
然後平常收錢時只需要給出地址,哪天要給錢時才給出公鑰來確認簽名。
反向就是:
地址:確認跟著簽名來的公鑰是該地址的。
公鑰:被地址確認過是地址的公鑰後用來確認私鑰產生的簽名。
所以公鑰只會在哪天要花錢的時候才會被人知道,平常只知道地址,增添了一層保密性。
至於今天提到的兩個章節實作上詳細操作流程實在不是一個晚上可以寫完的內容,隨便寫反而容易散播錯誤訊息,中文資料的話推薦昨天說的Master Bitcoin簡體中文版4、5章,似乎有點偷懶,反正今天剩下的時間就拿來玩了。
《Bitcoin: A Peer-to-Peer Electronic Cash System》
https://bitcoin.org/bitcoin.pdf
Blockchain.info
https://blockchain.info/
Master Bitcoin簡體中文版
https://www.bitcoinbook.info/translations/cmn/book.pdf