-
比特幣是一種’‘電子記帳系統’',所有交易紀錄皆為公開且匿名
-
如何保證交易紀錄的真實性
- 身分驗證
- 傳統: 人臉辨識、簽名、指紋
- 電子系統: 電子簽名
- 電子簽名(數位簽章)
- 比特幣用戶註冊時,系統會生成一"隨機數",透過隨機數會產生"私鑰"(私有)字串,私鑰字串又可產生"公鑰"(公開)字串,公鑰又可產生"地址"(公開)
- 公鑰無法反算私鑰
- 自己轉出比特幣: 公鑰+地址
- 他人轉入比特幣: 地址
- 私鑰可以對字串進行加密
- 公鑰可以解密私鑰加密的字串
- 以上稱為非對稱加密(ex.RSA是非對稱加密的一種)
- 例子: 假設A給B 10個比特幣
- 1.A先寫一條紀錄(A給10比特幣到B),之後進行Hash運算,再用私鑰進行加密,產生一組密碼
- 2.將交易訊息、公鑰、密碼對每一節點進行"廣播",節點會去運用紀錄去做Hash運算,與運用公鑰解密後的密碼進行比對,驗證其交易的真偽
- 3.現假設A只有10個比特幣,卻同時給兩人10比特幣(double spending problem)
- 如何進行帳戶餘額檢查
- A廣播出交易訊息後,區塊鏈中的節點會往前檢查每一區塊中A的交易紀錄(追溯),確認A的餘額
- 防止雙重支付
- A同時廣播兩條消息
- 給B 10比特幣
- 給C 10比特幣
- 每一個節點會去算A的餘額是否還夠,如果剛好有10比特幣的話,一些節點收到第一條消息就會拒絕第二條(因為餘額不足),反之亦然。
- 第1(或2)的消息會被放到區塊中(未被確認),當有一個節點解出隨機數,新的區塊會被鏈結到區塊鏈中,其餘節點則會放棄打包區塊的機會,自動承認第一個產生的區塊,此時第1(或2)個消息被確認,另一消息則不會被確認(此時A餘額已經確定是0)
- 只有當區塊鏈接到區塊鏈上,交易才真正完成
- A同時廣播兩條消息
- 如何進行帳戶餘額檢查
- 防止竄改
- 最長鏈原則
- 當有兩個礦工同時找到一個新區塊(產生分支,上、下),當上面區塊的下一個區塊先被找到,此時上面的鏈結就比下面的長,所有人會跟著往上面走,下方區塊則打包失敗
- 若有人想要修改自己的交易紀錄,就要從該筆交易紀錄區塊開啟新分支(往另一方向走),但根據最長鏈規則,這筆紀錄不會被其他節點承認
- 最長鏈原則
- 身分驗證