2018開年,先給大家拜個年,Happy Neo Year.
開年總得寫點什麼,就打算繼續開學習筆記系列,一點一點仔細的去分析NEO。
今天說一說從WIF到地址的這一串關係。
簡單說就一張圖:
或者他的簡單版本
好了,寫完了。^_^
當然,如果你想要搞清楚他們之間具體的計算方法,我們接著往下看。
流程說明
細說WIF
L13wAkUX1SAx6K9zztkS8RjxDMedBEzbtgZSZRYKUUBMP23BEgLM複製程式碼
這就是一個WIF,這串東西沒什麼意義,不用尋找他的意義了,他是一個byte58編碼的字串
很遺憾base58並沒有base64那麼流行,所以很難找到web解碼工具,我們寫兩行程式碼就可以分析出他們。
8072520405d2ab00326dbcacfddd350b01222a7cc9efc5f304f742077ec9ade4630178a41006複製程式碼
這串東西,才是Wif裡面儲存的真正資料
紅色部分就是私鑰,黃色部分是加的鹽,固定的資訊。藍色部分是對前面34個位元組做了個hash,取了hash四個位元組。
從這個可以看出
1.WIF 可以和私鑰互轉
2.WIF儲存了hash,有自我驗證功能,不是你隨便敲個字串都是合法的WIF
私鑰
NEO的公私鑰驗證方法使用的是ECC橢圓曲線演算法。
這類非對稱加密演算法的基本機制如下,私鑰你保留著,公鑰是公開的。你用私鑰對一串資料進行簽名。
別人可以用 資料、簽名、公鑰 三者,斷定這三者是不是匹配,簽名是否有效。
在NEO區塊鏈上最主要的許可權認證方式就是簽名,所以私鑰很重要,要保護好
公鑰
公鑰就是私鑰的一部分,可以由私鑰算出,但是反過來,公鑰無法算出私鑰。
這個計算是單向的
地址指令碼
地址指令碼,看起來像是對公鑰前面後面各加了一個位元組
實際上他是一個智慧合約,將他反編譯的話、
就是:
PushBytes[pubkey]
CheckSig
這樣兩條指令。
當你訪問你的賬戶的時候,比如用你的賬戶給別人轉賬,就會呼叫這個合約來驗證。
這個合約的意義是用你的公鑰和交易資料 和交易簽名進行驗證。
只有你簽名的合約才能動你的賬戶
地址ScriptHash
地址ScriptHash就是地址指令碼取了個Hash
一次sha256,一次ripemd160
地址
地址和WIF很相似,不過他是ScriptHash 加了鹽,加了驗證功能,然後base58編碼
簡化版的圖是怎麼回事
因為私鑰和WIF可以互相轉換,通常我們在講到私鑰的時候,WIF也是私鑰,私鑰也是私鑰,不會分那麼清楚。
因為地址ScriptHash 和 地址字串可以互相轉換,通常我們在講到地址的時候,也不會分那麼清楚
另外因為地址指令碼大多數使用者根本接觸不到,在和一般使用者談論這個話題的時候也可以省略掉
所以這個關係圖可以簡化如下
原文轉自:www.cnblogs.com/crazylights…