首先來看一張圖
這是NEO的WIF到地址的關(guān)系
流程說明
細說WIF
L13wAkUX1SAx6K9zztkS8RjxDMedBEzbtgZSZRYKUUBMP23BEgLM
這就是一個WIF嗤军,這串東西沒什么意義,不用尋找他的意義了潭枣,他是一個byte58編碼的字符串
很遺憾base58并沒有base64那么流行模蜡,所以很難找到web解碼工具贮喧,我們寫兩行代碼就可以分析出他們。
8072520405d2ab00326dbcacfddd350b01222a7cc9efc5f304f742077ec9ade4630178a41006
這串東西,才是Wif里面保存的真正數(shù)據(jù)
紅色部分就是私鑰名扛,黃色部分是加的鹽,固定的信息茧痒。藍色部分是對前面34個字節(jié)做了個hash肮韧,取了hash四個字節(jié)。
從這個可以看出
1.WIF 可以和私鑰互轉(zhuǎn)
2.WIF保存了hash旺订,有自我驗證功能弄企,不是你隨便敲個字符串都是合法的WIF
私鑰
NEO的公私鑰驗證方法使用的是ECC橢圓曲線算法。
這類非對稱加密算法的基本機制如下区拳,私鑰你保留著拘领,公鑰是公開的。你用私鑰對一串?dāng)?shù)據(jù)進行簽名樱调。
別人可以用 數(shù)據(jù)约素、簽名、公鑰 三者笆凌,斷定這三者是不是匹配圣猎,簽名是否有效。
在NEO區(qū)塊鏈上最主要的權(quán)限認證方式就是簽名乞而,所以私鑰很重要送悔,要保護好
公鑰
公鑰就是私鑰的一部分,可以由私鑰算出,但是反過來欠啤,公鑰無法算出私鑰鳍怨。
這個計算是單向的
地址腳本
地址腳本,看起來像是對公鑰前面后面各加了一個字節(jié)
實際上他是一個智能合約跪妥,將他反編譯的話鞋喇、
就是:
PushBytes[pubkey]
CheckSig
這樣兩條指令。
當(dāng)你訪問你的賬戶的時候眉撵,比如用你的賬戶給別人轉(zhuǎn)賬侦香,就會調(diào)用這個合約來驗證。
這個合約的意義是用你的公鑰和交易數(shù)據(jù) 和交易簽名進行驗證纽疟。
只有你簽名的合約才能動你的賬戶
地址ScriptHash
地址ScriptHash就是地址腳本取了個Hash
一次sha256罐韩,一次ripemd160
地址
地址和WIF很相似,不過他是ScriptHash 加了鹽污朽,加了驗證功能散吵,然后base58編碼
簡化版的圖是怎么回事
因為私鑰和WIF可以互相轉(zhuǎn)換,通常我們在講到私鑰的時候蟆肆,WIF也是私鑰矾睦,私鑰也是私鑰,不會分那么清楚炎功。
因為地址ScriptHash 和 地址字符串可以互相轉(zhuǎn)換枚冗,通常我們在講到地址的時候,也不會分那么清楚
另外因為地址腳本大多數(shù)用戶根本接觸不到蛇损,在和一般用戶談?wù)撨@個話題的時候也可以省略掉
所以這個關(guān)系圖可以簡化如下