乐趣区

NEO学习笔记,从WIF到地址

今天说一说从 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 和 地址字符串可以互相转换,通常我们在讲到地址的时候,也不会分那么清楚
另外因为地址脚本大多数用户根本接触不到,在和一般用户谈论这个话题的时候也可以省略掉
所以这个关系图可以简化如下

原文转自:https://www.cnblogs.com/crazy…

退出移动版