區塊鏈:幣圈新手看得懂的「帳本」

為了能在區塊鏈網絡裡進行交易,你需要一個錢包(wallet),它讓你可以存放和交易你的比特幣。只有你可以花費你的比特幣,所以每個錢包被特殊的加密法保護著,使用一對獨特且配對的鑰匙:公鑰和私鑰,才能解鎖。

如果一個信息被公鑰加密,只有配對的私鑰才能解密讀到信息。反之,如果你用你的私鑰加密信息,只有配對的公鑰可以解密。所以當David想要轉帳,他需要用他的私鑰將轉帳信息加密後,送到網絡裡,然後每個節點使用David的公鑰將信息解開,以確認是由David發送的。

在加密完成時會產生一個電子簽名,它會被節點們用來確認交易信息的發送來源和真偽。電子簽名內容是一串文字,它是由交易信息和私鑰所組成的,所以不能用在其他的交易信息上。如果你更改交易信息中任何一個字節,電子簽名也會跟著改變,所以黑客很難更改你的交易信息或是得知交易金額。

區塊鏈:幣圈新手看得懂的“賬本”

▲圖3 電子簽名與加密交易

錢包的公鑰其實是網絡裡的一個地址(send to address),所以當你轉比特幣給某人時,你其實是將比特幣轉公鑰的地址。而且你必須證明你是私鑰的所有人,才能進行轉帳。請注意,在網絡裡的交易信息已經是被加密過的,你不用暴露你的私鑰。

每個節點都保有一份帳本,但節點是如何知道你的帳戶餘額呢?區塊鏈系統並沒有記錄每個人的帳戶餘額(注:所以帳本實際上不是圖1那樣),事實上,它只紀錄網絡上每筆交易紀錄(如下圖)。為了得知你的帳戶餘額,你必須分析和驗證所有曾經跟你錢包產生交易的紀錄。

區塊鏈:幣圈新手看得懂的“賬本”

▲圖4 區塊鏈網絡的帳本

“帳戶餘額”的計算和驗證需要靠之前的交易紀錄。舉個例子,為了轉出 10 BTC給John,Mary先發起一個交易信息,它包含了之前部分的轉入交易紀錄,只要這些紀錄的轉入金額的總和剛好或大於10 BTC,即可發送信息。這些包含的交易紀錄稱作輸入(inputs),每個節點會驗證這些輸入的金額的總和是等於或大於10 BTC。這些計算和驗證會由錢包和節點自動完成,使用者不需要煩惱。

區塊鏈:幣圈新手看得懂的“賬本”

▲圖5 區塊鏈的交易信息結構

那麼,系統如何信任這些輸入呢?

它要確認你的錢包在之前所有的轉入交易紀錄中是否真的有這些輸入。為了簡化和加速驗證的過程,每個節點會保留一份特殊的數據來達到目的,也因為這個驗證過程,錢不可能會無緣無故多出來。


分享到:


相關文章: