用Go 構建乙個區塊鏈 Part 5 位址

2021-09-24 03:37:04 字數 1044 閱讀 8194

鏈客,專為開發者而生,有問必答!

公鑰加密

公鑰加密(public-key cryptography)演算法使用的是成對的金鑰:公鑰和私鑰。公鑰並不是敏感資訊,可以告訴其他人。但是,私鑰絕對不能告訴其他人:只有所有者(owner)才能知道私鑰,能夠識別,鑑定和證明所有者身份的就是私鑰。在加密貨幣的世界中,你的私鑰代表的就是你,私鑰就是一切。

本質上,位元幣錢包也只不過是這樣的金鑰對而已。當你安裝乙個錢包應用,或是使用乙個位元幣客戶端來生成乙個新位址時,它就會為你生成一對金鑰。在位元幣中,誰擁有了私鑰,誰就可以控制所以傳送到這個公鑰的幣。

私鑰和公鑰只不過是隨機的位元組序列,因此它們無法在螢幕上列印,人類也無法通過肉眼去讀取。這就是為什麼位元幣使用了乙個轉換演算法,將公鑰轉化為乙個人類可讀的字串(也就是我們看到的位址)。

如果你用過位元幣錢包應用,很可能它會為你生成乙個助記符。這樣的助記符可以用來替代私鑰,並且可以被用於生成私鑰。bip-039 已經實現了這個機制。

好了,現在我們已經知道了在位元幣中證明使用者身份的是私鑰。那麼,位元幣如何檢查交易輸出(和儲存在裡面的幣)的所有權呢?

數字簽名

在數學和密碼學中,有乙個數字簽名(digital signature)的概念,演算法可以保證:

當資料從傳送方傳送到接收方時,資料不會被修改;

資料由某一確定的傳送方建立;

傳送方無法否認傳送過資料這一事實。

通過在資料上應用簽名演算法(也就是對資料進行簽名),你就可以得到乙個簽名,這個簽名晚些時候會被驗證。生成數字簽名需要乙個私鑰,而驗證簽名需要乙個公鑰。簽名有點類似於印章,比方說我做了一幅畫,完了用印章一蓋,就說明了這幅畫是我的作品。給資料生成簽名,就是給資料蓋了章。

為了對資料進行簽名,我們需要下面兩樣東西:

1.要簽名的資料

2.私鑰

應用簽名演算法可以生成乙個簽名,並且這個簽名會被儲存在交易輸入中。為了對乙個簽名進行驗證,我們需要以下三樣東西:

1.被簽名的資料

2.簽名

3.公鑰

簡單來說,驗證過程可以被描述為:檢查簽名是由被簽名資料加上私鑰得來,並且公鑰恰好是由該私鑰生成。

用Java建立你第乙個區塊鏈 part3

在上一章節中最後說到了要實現p2p網路,那麼在這一章節中就主要說一下p2p網路,實現的方式是什麼,以及為什麼要實現p2p網路。首先先簡單的介紹一下什麼是p2p網路?p2p網路技術又稱為對等網路技術,是一種網路的新技術,依賴網路中參與者的計算能力和頻寬,而不是把依賴都聚集在較少的幾台伺服器上。舉個位元...

用Ruby實現乙個最簡的區塊鏈

blockchain 是一種革命性的技術,有些抽象,比較複雜.自從位元幣誕生以來,有很多技術的科普文章,甚至是制精良的動畫,來解釋其中的原理.其中不乏精品之作.在區塊鏈的世界,閱讀理論的作用是有限的.離開實踐,力有不逮,心有餘而力不逮,是很常見的.從 到 實現是乙個飛躍,需要一些耐心和技術儲備.lx...

區塊鏈 乙個完整的區塊鏈入門學習整理

1.位元幣 這是一切的開始 2.精通位元幣 講位元幣很詳細的一本書,看完基本對位元幣的認識就清楚了。3.theproof of work concept pow機制理論介紹,英文 4.位元幣的原理及運作機制 這篇是新手向,適合向圈外人介紹什麼是位元幣什麼是區塊鏈 5.位元幣pow難度調節機制 pow...