merkletree比特币
A. 什么是工作量证明
工作量证明(Proof Of Work,简称POW),简单理解就是一份证明,用来确认你做过一定量的工作。监测工作的整个过程通常是极为低效的,而通过对工作的结果进行认证来证明完成了相应的工作量,则是一种非常高效的方式。比如现实生活中的毕业证、驾驶证等等,也是通过检验结果的方式(通过相关的考试)所取得的证明。
权益证明机制
POW是达成共识的一种方式,不过他不是唯一的方式,还可以有其他的方式让各个节点达成共识,例如POS。
POS不同于POW之处在于,在POS系统上挖矿是以货币持有数量为基础,换句话说,在POS的情况下,一个人拥有虚拟货币的5%和在比特币系统上拥有系统5%的算力的效果是一样的。
工作量证明的基本原理工作量证明系统主要特征是客户端需要做一定难度的工作得出一个结果,验证方却很容易通过结果来检查出客户端是不是做了相应的工作。这种方案的一个核心特征是不对称性:工作对于请求方是适中的,对于验证方则是易于验证的。它与验证码不同,验证码的设计出发点是易于被人类解决而不易被计算机解决。下图表示的是工作量证明的流程:
举个例子,给定的一个基本的字符串"Hello, world!",我们给出的工作量要求是,可以在这个字符串后面添加一个叫做nonce的整数值,对变更后(添加nonce)的字符串进行SHA256哈希运算,如果得到的哈希结果(以16进制的形式表示)是以"0000"开头的,则验证通过。为了达到这个工作量证明的目标。我们需要不停的递增nonce值,对得到的新字符串进行SHA256哈希运算。按照这个规则,我们需要经过4251次计算才能找到恰好前4位为0的哈希散列。
.工作量证明的过程 我们可以把比特币矿工解这道工作量证明迷题的步骤大致归纳如下: 生成Coinbase交易,并与其他所有准备打包进区块的交易组成交易列表,通过Merkle Tree算法生成Merkle Root Hash 把Merkle Root Hash及其他相关字段组装成区块头,将区块头的80字节数据(Block Header)作为工作量证明的输入 不停的变更区块头中的随机数即nonce的数值,并对每次变更后的的区块头做双重SHA256运算(即SHA256(SHA256(Block_Header))),将结果值与当前网络的目标值做对比,如果小于目标值,则解题成功,工作量证明完成。 该过程可以用下图表示:
比特币的工作量证明,就是我们俗称“挖矿”所做的主要工作。理解工作量证明机制,将为我们进一步理解比特币区块链的共识机制奠定基础。
B. 区块链带来了哪些颠覆,为什么能够成为国家战略
区块链的颠覆性特征在于以下四个方面:一、透明性。区块链系统的数据记录对全网节点是透明的,数据记录的更新操作对全网节点也是透明的,这是区块链系统值得信任的基础。由于区块链系统使用开源的程序、开放的规则和高参与度,区块链数据记录和运行规则可以被全网节点审查、追溯,具有很高的透明度。
二、开放性。区块链系统是开放的,除了数据直接相关各方的私有信总被加密外区块链的数据对所有人公开(具有特殊权限要求的区块链系统除外)。任何人或参与节点都可以通过公开的接口查询区块链数据记录或者开发相关应用,因此整个系统信息高度透明。
三、信息不可篡改。区块链系统的信息一旦经过验证并添加至区块链后,就会得到永久存储,无法更改(具备特殊更改需求的私有区块链等系统除外)。除非能够同时控制系统中超过51%的节点,否则单个节点上对数据库的修改是无效的,因此区块链的数据稳定性和可靠性极高
四、去中心化。去中心化是区块链最基本的特征,意味着区块链不再依赖于中央处理节点,实现了数据的分布式记录、存储和更新。在传统的中心化网络中,对一个中心节点实行攻击即可破坏整个系统,而在一个去中心化的区块链网络中,攻击单个节点无法控制或破坏整个网络掌握网内超过5%的节点只是获得控制权的开始而已。2019年是区块链技术商业应用的元年,而政策利好的刺激将让区块链技术的发展更加稳健。
随着区块链技术的应用逐渐渗透到数字金融、互联网等众多领域,大家对区块链的价值认识更加清晰。
区块链已经形成了全球竞争的态势,各国都在抢占发展先机,中国更不能落后;因此,区块链成为国家战略亦无可厚非。
C. MerkleTree有什么功能
一种打包数据的方法,以便您以后可以有效地存储和验证。MerkleTrees允许将事务打包成块,使其具有防篡改功能,并且可以通过任何节点(尤其是轻节点)轻松验证。的梅克尔根保持数据的紧凑表示。
D. 比特币钱包
比特币(bitcoin)诞生于2008年的一篇论文。
一个署名为中本聪的人,提出了革命性的构想:让我们创造一种不受政府或其他任何人控制的货币!这个想法堪称疯狂:一串数字,背后没有任何资产支持,也没有任何人负责,你把它当作钱付给对方,怎么会有人愿意接受?
Merkle tree
跟二叉树长得很像,只是这个是下面两个节点取哈希值得到上面节点。只需要记住根节点,就可以检测整棵树有没有被篡改。
根哈希值存在block header里,交易过程存在block body里。全节点包括block header和block body,但是轻节点(比如手机上比特币钱包)只包括block header。这棵树可以证明包含某个交易已经被写进了区块链。
3.共识协议
去中心化的货币要注意的两个问题:
1.谁能发行数字货币:挖矿。
2.怎么验证交易的合法性:区块链。
双花攻击(double spending attack)
双花攻击是数字货币的一个主要挑战。
比特币中的交易都要有输入和输出,币从哪来,花到哪去。
正常情况也可能有两个分叉,因为两个节点同时获得记账权,两个节点打包的区块,同时计算出了那个随机数。此时会暂时两个分叉共存,直到其中某一个区块抢先找到了下一个区块,这条就成了最长合法链,另一个分叉就被丢弃。
女巫攻击(sybil attack)
某恶意节点不停产生账户,账户总数超过总账户的一半,则取得了区块链的控制权。
比特币中的共识协议(Consensus)
一些节点是有恶意的,大部分节点是好的。
想法1:把一些交易打包到区块里作为候选区块,让每个区块投票,如果通过就写入区块链。
不行,因为有的恶意节点一直发布一些含有恶意交易的区块,则一直投票,占用资源。而且有的节点不投票。
想法2:不按账户个数投票,而是按照计算力投票。每个节点都可以产生合法交易放入区块,这些节点就开始试随机数,直到找到H(block header)≤ target,则这个节点有记账权。
唯一产生比特币的途径
coinbase transaction。这个不用指出币的来源,有了记账权的节点(找到了随机数)会有出块奖励。
50BTC->25BTC->12.5BTC,每21万个比特币,奖励就减半。
比特币争夺记账权的过程叫挖矿。争夺记账权的节点叫矿工。
E. 区块链原理
区块链是一种技术,但它不是一种单一的技术,而是由多种技术整合的结果,包括密码学、数学、经济学、网络科学等。你可以把它看做是一个分布式共享记账技术,也可以看做是一个数据库,只不过这个数据库是由在这个链上的所有节点共同维护,每个节点都有一份账本,因为所有节点的账本一致,不同节点之间可以互相信任,对数据没有疑问,所以大家都说区块链从技术上实现了信任。详细的专业技术可以咨询一些专业的技术公司,例:金博科技,专注开发区块链相关产品,专业研发团队和完善的售后服务,可以电话咨询。
F. 区块链技术中的哈希算法是什么
1.1. 简介
计算机行业从业者对哈希这个词应该非常熟悉,哈希能够实现数据从一个维度向另一个维度的映射,通常使用哈希函数实现这种映射。通常业界使用y = hash(x)的方式进行表示,该哈希函数实现对x进行运算计算出一个哈希值y。
区块链中哈希函数特性:
函数参数为string类型;
固定大小输出;
计算高效;
collision-free 即冲突概率小:x != y => hash(x) != hash(y)
隐藏原始信息:例如区块链中各个节点之间对交易的验证只需要验证交易的信息熵,而不需要对原始信息进行比对,节点间不需要传输交易的原始数据只传输交易的哈希即可,常见算法有SHA系列和MD5等算法
1.2. 哈希的用法
哈希在区块链中用处广泛,其一我们称之为哈希指针(Hash Pointer)
哈希指针是指该变量的值是通过实际数据计算出来的且指向实际的数据所在位置,即其既可以表示实际数据内容又可以表示实际数据的存储位置。下图为Hash Pointer的示意图
