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

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

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

原文地址:https://www.cnblogs.com/crazylights/p/8166690.html

时间: 2024-10-12 12:47:22

NEO学习笔记,从WIF到地址的相关文章

Android之开源控件ViewFLow学习笔记【含下载地址】--(原创-20150407)

Android开源控件ViewFlow学习 这里简单介绍一点:抛出IllegalStateException: "ViewFlow can only be used in EXACTLY mode." 首先要明确ViewFlow的好处所在:(1).ViewFlow比较适合动态大小,如图片的个数由后台决定,发多少就显示多少,这是用ViewPager就不是很合适. ( 2) ViewFlow的轮播滚动效果非常平滑,过渡非常友好,而且支持循环. 使用ViewFlow的时候,注意只能用在大小确

计算机网络学习笔记--网络层之IP地址与子网

IPv4地址: 我们知道在网络层(TCP/IP体系结构的网际互联层),最重要的一个协议就是IP协议,现在正处于IPv4和IPv6的过渡时期,但目前来说,IPv4仍为主流,所以主要讲Ipv4. IP地址基本格式: 计算机内部IP地址的格式是32位的二进制数表示的,为了让人们看起来方便,通常采用点分十进制来表示IP地址,如192.168.1.25,其中用来分隔各段的那个点,也是为了方便人们阅读加上的,计算机内部并没有这个点. 公网IP地址和私网IP地址: 公网Ip地址是指可以在广域网上直接使用,直接

IP地址和子网划分学习笔记之《IP地址基础篇》

一.IP地址和MAC地址 1.MAC地址 MAC(Media Access Control,介质访问控制)地址,或称为物理地址,也叫硬件地址,用来定义网络设备的位置,MAC地址是网卡出厂时设定的,是固定的(但可以通过在设备管理器中或注册表等方式修改,同一网段内的MAC地址必须唯一).MAC地址采用十六进制数表示,长度是6个字节(48位),分为前24位和后24位. 1.前24位叫做组织唯一标志符(Organizationally Unique Identifier,即OUI),是由IEEE的注册管

Dynamic CRM 2015学习笔记(4)修改开发人员资源(发现服务、组织服务和组织数据服务)url地址及组织名

在azure vm上安装了CRM 2015后 Dynamic CRM 2015学习笔记(1)Azure 上安装 CRM 2015, 发现了一个问题,那就是在设置 ->自定义项 –> 开发人员资源 里面的几个ulr(发现服务.组织服务和组织数据服务)都不对,显示的都是http://机器名/XRMServices/2011/ -, 但这个url是访问不了的,正确的url应该是 http://xxx.cloudapp.net/XRMServices/2011/ - 下面介绍如何修改成正确的url.

【JS学习笔记】js中关于传地址的问题

我觉得初学者应该会遇到很多这样的问题 条件1.不想定义全局变量的时候 条件2.定义了外围变量却又要引用并且修改其中内容的时候 以下转一篇文章 -------------------------------------------------------------------------------------------------------------------------------------------------------- 很多人,包括我,受书本知识消化不彻底的影响,认为 J

CCNA学习笔记五——ip地址子网划分

ip地址作用:用来标识一个节点的网络地址 ip地址的分类: A类:0NNNNNNN(1-126)  私有地址:10.0.0.0-10.255.255.255 B类:10NNNNNN(128-191)  私有地址:172.16.0.0-172.31.255.255 C类:110NNNNN(192-223)  私有地址:192.168.0.0-192.168.255.255 D类:1110NNNN(224-239) 子网掩码中1对应的为ip地址位为网络位,0对应的为主机位 划分子网:通过将子网掩码变

SpringBoot学习笔记(1):配置Mybatis

SpringBoot学习笔记(1):配置Mybatis 参考资料: 1.AndyLizh的博客 2.xiaolyuh123的博客 快速开始 添加Mybatis依赖(其他依赖已省去) <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> </dependency> <dependency> <groupId

Caliburn.Micro学习笔记(一)----引导类和命名匹配规则

Caliburn.Micro学习笔记(一)----引导类和命名匹配规则 用了几天时间看了一下开源框架Caliburn.Micro 这是他源码的地址http://caliburnmicro.codeplex.com/ 文档也写的很详细,自己在看它的文档和代码时写了一些demo和笔记,还有它实现的原理记录一下 学习Caliburn.Micro要有MEF和MVVM的基础 先说一下他的命名规则和引导类 以后我会把Caliburn.Micro的 Actions IResult,IHandle ICondu

Spring MVC 学习笔记(二):@RequestMapping用法详解

一.@RequestMapping 简介 在Spring MVC 中使用 @RequestMapping 来映射请求,也就是通过它来指定控制器可以处理哪些URL请求,相当于Servlet中在web.xml中配置 <servlet>     <servlet-name>servletName</servlet-name>     <servlet-class>ServletClass</servlet-class> </servlet>