区块链技术


  • 底层机制
    • 去中心化,P2P 分布式数字货币系统
    • 共识机制,POW 工作量证明
    • 非对称加密算法,数字签名
    • 区块链账本技术
  • 钱包分类
    • 轻钱包,只存储维护跟你自己交易相关的数据
    • 中心化钱包,数字货币交易所
  • 区块链节点
    • 矿工-运行于强大或专用的硬件
    • 全节点-这些节点验证矿工挖出来的块的有效性,并对交易进行确认
    • SPV节点-简单支付验证,如钱包节点
  • 区块链分类
    • 公有链:任何人都可以参与使用和维护,信息公开,如比特币,以太坊等
    • 联盟链:若干组织共同维护,使用有权限限制,信息受保护,如银联组织
    • 私有链:集中管理者进行限制,内部少数人可以使用,信息不公开

分布式账本系统

  • 共识机制,POW 工作量证明
    • 付出大量工作代价证明自己是非恶意节点
    • 计算一个随机数(nonce),算出的正确随机数即POW
    • 获取记账权利
    • 打包交易并通知其它节点
    • 冲突的区块选最长的链(可以设置6个区块之后再确认交易)
  • 交易确认
    • 一项交易被链上的区块收录后,就是交易确认
    • 在此区块之后每产生一个区块,此项交易的确认数相应加1
    • 经过6个以上区块确认的交易才是安全确认的,因为篡改成本巨大
    • 比特币钱包可以设置交易确认数
  • 基于P2P网络,每个全节点都存储着最全的比特币交易记录
    • 使用 DNS seeds 寻找周围的节点
    • 交易广播,区块广播,钱包公钥的广播
  • 新区块通过包含前一个区块头部的哈希值(区块的唯一标识)建立链接关系
  • 区块里装的就是所有的比特币交易记录


交易:UTXO (unspent transaction output) 未花费交易输出

  • 余额实际上并不直接存在,而是通过计算得来
  • 签名,对发送者和接收者的公钥哈希以及整个交易签名(私钥,确保不可篡改)
  • 找零,Output 给自己


挖矿

  • 和其他节点竞争计算
    • 挖矿奖励-12.5BTC
  • 记账权-把交易写入区块里
    • 收取交易手续费
  • 广播义务-把区块在全网广播
  • 在挖矿前要组建区块
    • 将coinbase交易打包进区块
    • 将交易池中高优先级的交易打包进区块
    • 创建区块头部
    • 挖矿成功后,将计算出来的随机数nonce(POW)填入区块头部,并向临近节点传播



区块验证:相邻节点收到新区块后,立即做以下验证

  • 验证POW的nonce值是否符合难度值
  • 检查时间戳是否小于当前时间两小时
  • 检查merkle树根是否正确
  • 检查区块size要小于区块size的上限
  • 第一笔交易必须是coinbase交易
  • 验证每个交易(使用对应的钱包公钥进行验证):验证链
    • 私钥加密的交易可以使用公钥进行验证

区块链-篡改账本(需要掌握半数以上的机器)

  • 双花问题:同一笔比特币被支付多次
    • 比特币的合法交易进行完毕之后,攻击者利用共识机制取消了之前的付款
    • 操控半数以上的机器在区块上一个链上建立新的分支
    • 冲突的区块选最长的链,当攻击者操控的分支变为最长的链时,原来的链就被取消了,链上的比特币交易也自动作废


文章作者: 钱不寒
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 钱不寒 !
  目录