区块链

一. 区块链技术:

    1.基本概念包括:

        1.1 交易(transaction):一次操作,导致账本状态的一次改变,如添加一条记录

        1.2 区块(block):记录一段时间内发生的交易和状态结果,是对当前账本状态的一种共识

        1.3 链(chain):由一个个区块按照发生顺序串联而成,是整个状态的日志变化记录

    2.区块和区块链网络:

        2.1 区块链的本质:

            它是一种特殊的分布式数据库,首先,区块链的主要作用是存储信息。任何需要保存的信息都可以存储到区块链中,也可以从里面读取信息,所以说是数据库。其次,任何人都可以架设服务器,加入区块链网络,成为一个节点。区块链的概念里,没有中心节点,每个节点都是平等的,都保存着整个数据库。你可以向任何一个节点,写入/读取数据,因为所有节点最后都会同步,保证区块链一致。

        2.2 区块链的最大特点:

            分布式数据库并非是新东西,但区块链的亮点在于区块链没有管理员,它是彻底无中心的,其他数据库都有管理员,但区块链没有管理员。如果有人想对区块链添加审核,也实现不了,因为它的设计初衷就是为了防止出现居于中心地位的管理当局。因为无法管理,才会做到无法控制。否则一旦出现大公司掌握了管理权,其他使用者必须得听从他们了,区块链的奇妙之处在于,没了管理员,人人可以往数据中写东西,保证数据的可信性。

        2.3 区块:

            区块链由一个个区块(block)构成,区块相当于数据库中的记录,每次写入数据,相当于建立一个区块。每个区块包含两部分:一是区块头(Head):记录当前区块的特征值,二是区块体(body):实际数据

            其中,区块头包含了区块的多项特征值:

   a.生成时间
   b.实际数据(区块体)的哈希
   c.上一个区块的哈希

        

            所谓的哈希,就是计算机可以对任意的内容,计算出一个长度相同的特征值,区块链的哈希长度是256位。因此,一.对于每个区块的哈希都是不一样的,而且可以通过哈希标识区块,二.如果区块内容变了,它的哈希一定改变。

        2.4 区块链网络:

            区块链是一种在整个业务网络上分享的分布式账本。业务交易永远被记录在有顺序的,仅可附加的,防篡改的账本区块中。所以经过确认和证明的交易都通过哈希算法从创始区块一直链接到最新的区块中,得名区块链。

            区块链是是自网络中的区块链启动以来的发生的所有交易的历史记录,可将区块链用做该网络的单一事实来源。

            区块链网络可以是许可网络或无许可网络。无许可网络向所有参与方开发,参照网络上的已有规则对交易进行验证,任何参与方都可以查看到账本上的交易,即使参与方是匿名的,在无许可和公有区块链网络中,比特币是个大家都熟悉的案例。

            另一方面,许可网络基本上都是私有的,仅能给定业务网络中的参与者进行访问,在许可区块链的网络上,参与者只允许查看与自己相关的交易。

        2.5 分布式账本:

            分布式账本是一种在网络成员之间进行共享,复制和同步的数据库或记录系统。分布式账本记录参与者之间的交易信息,比如资产或数据的交换。这种共享账本消除了不同的账本的时间和开支。

        2.6 hash的不可修改性:

            区块和哈希是一一对应的,每个区块的哈希都是针对区块头(head)来计算的,也就是说,把区块头的各项特征值,按照顺序连接在一起,组成一个很长的字符串,再对这个字符串计算哈希值。

            区块哈希的计算方式:

Hash = SHA256( 区块头 )

             SHA256是区块链的哈希算法,这个公式里只包含区块头,不包含区块体,也就是说,哈希值完全由区块头来决定。区块头包含多种信息,上一块区块的哈希,当前区块的哈希,也就是说,如果当前区块或者上一块区块的改变,都会导致当前区块的哈希值得改变,

            这一点对区块链的影响很大,也就是说,如果某个区块的改变,哈希值就会发生变化,就会导致后面的区块需要变更哈希值来适应,就需要更改者去不断更改区块,一直到最后。否则,被更改的区块有可能会脱离区块链。而且,计算哈希值需要强大的计算能力,短时间内修改多个区块,简直不可能。

            正是因为这种联动机制,才导致了整个区块链的不可更改性,保证了自身的可靠性,不可更改,不能篡改历史,发生了就发生了。无法改变。

        2.7 采矿:

            因为要保证节点之间的同步,所以新区块的添加速度不能太快。比如,你新增了个区块,然后需要去同步其他的区块,但这时又新增了一个区块,这样导致你不得不又得重新去同步所有的区块,这样的话,会导致效率极低,添加区块会变得非常的困难。所以,区块链的发明者中本聪故意设置了添加区块变得很难,他的设计是每隔10分钟全网才能生成一个区块,一小时也就能生成6个。这种产出速度是通过海量的计算来控制的,也就是说,只有通过及其大量的计算,才能得到当前区块的有效哈希,从而把新区块添加到区块链,由于计算量太大,所以计算比较慢,这个过程就叫做采矿,因为计算哈希的难度很大,就像在沙子里淘金子,计算哈希的机器叫做矿机,操作矿机的人就叫做矿工。

        2.8 采矿的难度系数:

            因为计算哈希的难度很大,需要极大的计算能力,因为不是每一个哈希都是满足条件的,只有满足条件的哈希值才能被区块链接受,这个条件很苛刻,如果不满足,又要重新计算哈希值,来判断是否满足。

            区块头包含一个参数,这个参数是难度系数,这个值决定了计算哈希值的难度,举例来说,第100000块的区块的难度系数是14484.16236122。区块链协议规定,使用一个常量除以难度系数,得到一个目标值。显然,难度系数越大,得到的目标值就越小。

            哈希的有效性和目标值有一定关系,只有小于目标值时的哈希才是有效的哈希值。否则哈希无效,就要重新计算哈希值。哈希小于目标值的几率非常小,可能10亿次里面就一次满足条件,这就是采矿又难又慢的原因。当前区块的哈希由区块头来决定,区块头是一些特征参数,这就意味着,如果对同一个区块反复计算哈希,需要区块头不停的变化,因此,在区块头的特征参数里,中本聪添加了一个随机参数,叫Nonce,Nonce是个随机值,作为矿工,就是要猜出Nonce的值,使得计算出的哈希小于目标值,从而写入区块链,目前只能通过一个个慢慢试才能猜出这个随机值,基本需要计算2.74亿(随机值的范围)次才能明确的猜出具体的随机值,运气好的话,可以快速猜出Nonce值。

        2.9 难度系数的动态调节:

            采矿具有随机性,没法保证十分钟就能生成一个区块,有时候一分钟,有时候几个小时也没有结果,总体来说,随着硬件设备的提升,以及矿机数量的增加,计算速度会越来越快。

            为了保证产率是每十分钟产一个区块,中本聪设计了难度系数的动态调节,规定,难度系数每两周(2016块)更新一次,这两周,如果区块生成速度是9分钟,那就相当于比正常速度快了10%,那就需要难度系数提升10%,难度系数越调越高,会导致采矿越来越难。

        2.10 区块链的分叉处理:

            有一个问题,如果同时有两个人,都是在某一个区块后面新生成一个新的区块,那到时候按哪个区块来算。

            现在的规则是,采用链最长的那个分支,如果区块链有分支,那就要看具体是哪个分支先到6个区块(“六次确认”),由于新区块的生成是由计算能力决定的,所以,这条规则就是说,拥有绝大多数计算能力的分支,才是正宗的区块链。

            

 

 

 

 

 

二. 比特币技术:

    比特币是中本聪提出的革命性的构想,创造一种不受任何人和政府控制的货币,一串数字,背后没有任何资产支持,也没有任何人负责,把它当做货币进行交易。这个想法实现了,在无数爱好者的支持下,比特币网络流行起来,越来越多的人和资本参与进来,星星之火可以燎原。

    1 非对称加密:

        其实就是加密和解密要两把钥匙,一把公钥和一把私钥。公钥是公开的,任何人都可以获取,私钥是

拥有者才能使用。他人使用你的公钥加密信息,然后发送给你,你用私钥解密,去除信息。反过来,你也可以使用私钥加密信息,别人用你的公钥解开,从而证明这个消息确实是你发出的,且未被篡改,这就是所谓的数字签名。

        现在假设,加密的是一笔钱,首先,你能解开这个加密包,去除里面的钱,因为私钥在你手里 ,其次,别人偷不走这笔钱,因为他们没有你的私钥,因此,支付可以成功。

        这就是比特币的原理:非对称加密保证了比特币支付的可靠性。

    2.比特币钱包:

        其实,对于比特币来说,钱不是支付给个人,而是支付给某个私钥。这就是交易匿名性的根本原因,因为没人知道,那些私钥背后的人是谁。

        所以,比特币交易的第一件事,就是你必须得用于自己的公钥和私钥。

        你去网上比特币交易所开户,其实分配给你的比特币钱包里面,存储的就是一个公钥和一个私钥。根据协议,公钥的长度是512位,但这个长度不太方便传播,因此,协议又规定,要为公钥生成一个160位的志文,就是一个比较短的易于传播的哈希值,160位是二进制,转换成16进制,大概30位左右。你向别人收钱时,只需提供你的钱包地址即可。

    3. 交易过程:

        一笔交易其实就是一个地址的比特币,转移到另一个地址,由于比特币的交易是完全公开的,哪个地址拥有多少比特币,能否交易,都是可以直接看到的。

        因此在交易的时候,需要验证三步:

            3.1 找到上一笔交易,确认比特币的来源

            3.2 算出支付方公钥的指纹,确认和支付方的指纹是吻合的,保证公钥属实。

            3.3 使用公钥去解开数字签名(非对称加密),验证私钥是否属实。

    4.交易确认和区块链:

        确认完交易的真实性后,还需要将交易数据写入数据库才算成立,对方才能真正收到钱。比特币用的是一种特殊的数据库(区块链),就向之前所说的,计算hash是整个采矿过程,一笔交易一旦写入区块链,就无法修改,要注意;比特币不是存放在钱包里,而是存放在区块链中。区块链记录了你的每一笔交易,因此知道你的资产数据。

    5.区块的扩容:

        比特币协议规定,每十分钟生成一个区块,区块大小1MB,最多包含2000笔交易,也就是说,比特币网络每十分钟只能处理2000笔交易,相当每秒3-5笔交易。这是制约比特币发展的一个瓶颈。因此,后面出现了BCH,就是每个区块从1MB扩容到8MB,因此处理速度增加了8倍,手续费也降低了好多,BCH只是对比特币的一种扩容,因此,就相当于,之前拥有比特币的,等于一人获赠了一笔相同数量的BCH。

    6.比特币的点对点网络:

        其实,只要有台服务器,都可以加入比特币网络的节点,每个节点都有整个比特币网络的全部数据,大概100GB的样子,并且节点之间都在实时的同步信息,当你发生一笔交易时,你的这笔交易就会实时的同步到其他的所有的节点和区块。

            

        

三.加密货币技术:(略。。。)

    货币就是一种可信性很高的流通性很强的通用货币。

转载于:https://my.oschina.net/u/3110937/blog/1634470

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值