zoukankan      html  css  js  c++  java
  • NEO学习笔记,从WIF到地址

    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 和 地址字符串可以互相转换,通常我们在讲到地址的时候,也不会分那么清楚

    另外因为地址脚本大多数用户根本接触不到,在和一般用户谈论这个话题的时候也可以省略掉

    所以这个关系图可以简化如下

  • 相关阅读:
    zkRollup原理(转载)
    2012元旦遭遇坑爹的12306订票网站付了款不出票
    VM.xPort.ExcelClient XXX备忘
    Parsing html markup text using MSHTML
    Asp.net中模仿Winform的MessageBox
    ReportViewer 2008 打印出现Error loading resource library. (0x8007007E)和(0x80070006)
    使用ADO.net将数据导出到Excel并提供下载
    【备忘】Oracle常用系统表(做代码生成器用得到)
    Worm.Sober.b(“清醒”病毒)
    发布基于T4模板引擎的代码生成器[Kalman Studio]
  • 原文地址:https://www.cnblogs.com/crazylights/p/8166690.html
Copyright © 2011-2022 走看看