• 比特币白皮书-学习笔记


    个人感觉,先对区块链或比特币有个基本了解之后,再配合比特币白皮书食用更佳。

    1.简介(Introduction)

    比特币这种电子支付系统,基于密码学原理而不基于信用。
    点对点交易,不存在第三方中介的参与。

    杜绝交易回滚的可能,防止欺诈。

    2.交易(Transactions)

    定义一枚电子货币就是一串数字签名链(coin as chain),每一位发送者通过对前一次交易和接收者的公钥(public key)进行哈希运算后数字签名,并将这个签名附加到这枚电子货币的末尾,电子货币就发送给了接收者。

    接收者使用发送者的公钥校验是否是正确的发送者发送的。

    由于交易中有接收者的公钥,所以只有接收者使用自己的私钥才能解锁并将该货币传递下去。

    但是这里的交易过程无法解决双重支付问题。为了避免双重支付,即收款人有方法确保之前的所有者没有对更早发送的交易进行签名,实际上需要关注的只是于本交易之前发生的交易,而不需要关注这笔交易发生之后是否会有双重支付的尝试。解决办法就是“时间戳服务器”。

    3.时间戳服务器(Timestamp server)

    时间戳服务器通过对 以区块(block)形式存在的一组数据实施随机哈希并加上时间戳,并将该哈希广播。

    每个时间戳应当将前一个时间戳纳入其随机哈希值中,这样就形成一个链条。

    4.工作量证明(Proof-of-Work)

    在区块中添加一个随机数(Nonce),将随机数与区块头一起计算随机哈希值,使得该哈希值满足以N个0开头(N为变量,N越大,寻找随机数的难度越大),即为“挖矿”。

    保证了区块的不可篡改性,因为修改了某一区块,就需要重新完成后面所有区块的工作量。

    工作量证明的本质是一CPU一票(传统一IP一票会对能够分配大量IP的人有利),如果大多数的CPU为诚实节点,那么正确的链条将以最快速度增长。

    5.网络(Network)

    比特币的运行网络步骤:

    1. 新的交易被广播到全部的节点;
    2. 每个节点把新的交易收集进入到一个区块;
    3. 每个节点都为自己的那个区块进行工作量证明;
    4. 当一个节点找到它的区块的工作量证明,就将此区块广播给所有节点;
    5. 如果那个区块上的所有交易都是合法的并且没有被双花,节点才接受这个区块;
    6. 节点们接受这个区块的表现为:将这个区块的哈希作为下一个区块的“前哈希”,在这个区块后继续创造区块。

    其中只有最长的链被认可,并且不断在这个“最长链”上添加区块。

    如果两个节点同时完成工作量证明并广播了两个不同版本的新区块,那么其它节点接收到该区块的时间存在先后差别,即会产生两条不同的链。出现这种情况时,节点将在率先收到的区块基础上工作,同时保留另一条链,直到下一个工作量证明被发现,证实了其中一条是较长链,那么在另一条分支链上工作的节点将转移到较长链上工作。

    6.激励(Incentive)

    1. 规定了每个区块的第一笔交易作为节点完成工作量证明的激励,这个激励是一定量新产生的电子货币。
    2. 另一个激励来源是交易费。如果某笔交易的输出值小于输入值,差额就是交易费。如果2100万枚比特币全部流通,激励将完全靠交易费。

    激励系统也有助于鼓励节点诚实。因为遵循规则用算力挖矿的收益很可能高于破坏系统得到的收益。

    7.回收硬盘空间(Reclaiming Disk Space)

    交易信息的随机哈希值被构成Merkle树的形态,只需要根节点与路径即可验证交易的正确性。用户只需要存储含有Merkle root的区块头,在需要时获取Merkle树的路径即可验证一笔交易。

    不含交易信息的区块头大小只有80字节,区块的生成速率为每10分钟一个,每年产生的数据为4.2MB。

    8.简化支付验证(Simplified Payment Verification)

    可以在不运行完整网络节点的情况下,实现对支付的验证。

    9.价值的组合与分割(Combining and Splitting Value)

    为了使得价值易于组合和分割,交易被设计成可以纳入多个输入和输出,可以有多个输入,但是最多只有两个输出:一个用于支付,一个用于找零(如果有的话)。

    10.隐私(Privacy)

    使用公钥的哈希生成地址,公众能得知的信息只有某人将一定数量的比特币发送给另一个人,但无法确定是谁。

    11.计算(Calculations)

    因为节点不会接受无效的交易,诚实的节点不会接受一个包含无效信息的区块,因此攻击者无法凭空创造价值或者掠夺他人的货币,最多只能更改自己的交易(即双重支付)。

  • 相关阅读:
    采用springboot+flowable快速实现工作流
    07 Sublime Text3常用快捷键
    06 解决Sublime Text3输入法不跟随的问题
    04 Storage and Calculation C语言中的存储和计算
    05 sublime环境配置及编译运行后输出中文乱码的解决
    04 sublime text 3在线安装package control插件,之后安装主题插件和ConvertToUTF8 插件
    03 sublime text3下配置Java的编译运行环境
    02 sublime text3下配置Python的编译运行环境
    01 sublime text3下配置c/c++ 的编译运行环境
    03 Comments in C Programming C编程中的注释
  • 原文地址:https://www.cnblogs.com/KRDecad3/p/10994182.html
Copyright © 2020-2023  润新知