Go區(qū)塊鏈之地址

簡介

在上文中,我們實現了基本的交易。我們知道了,在比特幣中沒有賬戶,用戶電話等用戶相關信息,區(qū)塊鏈并不保存?zhèn)€人信息。但是,在比特幣中仍然有一些信息證明誰擁有這些Coin,這個信息就是地址。在上一文中,我們的地址使用的是自己定義的字符串,比如zhangsan、lisi、wangwu、zhaoliu等。本文將實現真正的地址。

比特幣地址

這是一個比特幣地址:1A1zP1eP5QGefi2DMPTfTL5SLmv7DivfNa。這是第一個比特幣地址,據稱該地址屬于Satoshi Nakamoto。比特幣地址是公開的。如果你想要轉幣給某個人,你必須直到他的比特幣地址。每一個比特幣地址都是獨一無二的,該地址并沒有指定誰是該地址的擁有者。實際上,這些地址只是一個(可讀性比較好的)公鑰。在比特幣中,你擁有一對公私鑰。比特幣根據加密算法生成這些密鑰,并且保證只有擁有了這對key,才能使用該地址的幣。

公鑰密碼學

公鑰加密算法使用一對密鑰:公鑰和私鑰。公鑰可以展示給其他人,私鑰不可展示給其他人。在比特幣中,私鑰就代表著你本人。

比特幣錢包就是這樣的一個密鑰對。當你使用錢包或客戶端創(chuàng)建地址時,就會生成一個這樣的密鑰對。擁有私鑰的人,就擁有該地址的幣。公鑰和私鑰僅僅是一些隨機的字節(jié)序列,因此比特幣使用一個算法將公鑰轉換為一個可讀的字符串。

現在我們直到如何認定address所屬,但是比特幣又是如何校驗交易輸出(儲存coin的地方)的所屬呢?

數字簽名

在數學和密碼學中,數字簽名保證:

1.數據由發(fā)送人發(fā)給接受人的過程中,數據不可更改。

2.數據由確定的發(fā)送人發(fā)送。

3.發(fā)送人不能否認發(fā)送過數據。

對數據進行簽名,可以得到簽名數據(signature),我們可以對該簽名數據進行驗證。當我們使用私鑰時,我們需要進行數字簽名,當我們進行簽名驗證時,我們使用公鑰。為了對數據進行簽名,我們需要一下參數:

1.需要簽名的數據

2.私鑰

對數據進行簽名后生成一個簽名數據(signature),該數據存儲在input中,想要驗證該簽名,需要以下參數:

1.數據

2.簽名

3.公鑰

?著作權歸作者所有,轉載或內容合作請聯系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

友情鏈接更多精彩內容