design\project\读书笔记 blockchain (一)

162 阅读3分钟

区块链

概览

区块链是什么

区块链,就是一些列的区块,链接起来,就叫区块链

blockchain is a chain of blocks that contains information

区块链最早是为了防篡改:用于给数字文档加时间戳,这样就不可能对其进行回溯或篡改,就像 notary(公证人)一个样,直到后来 比特币出来了

比特币出来后,区块链是一个 distribute ledger (分布式账本),且同样会非常难于篡改

区块链如何工作

  • Block 的结构

    • Data(栗如 比特币的一条交易记录:From 张三,To 李四,金额:100w)

    • Hash:是一个全局唯一的指纹,

      • 在 Block 被创建时初始化
      • Block 中的任何修改都会导致 Hash 的改变
      • 可用于检测 篡改
    • 上一个 Block 节点的 Hash,用于组链,确保安全

      • 首节点被称为 genesis block 他没有 prevBlock
      • 修改任何一个节点都会导致整个 chain 断掉
      • 但是可以通过重新计算其他节点的 hash 来篡改整个区块链
  • Proof-of-Work

    • 让篡改变得很难,栗如,每个 Block 需要修改 10 分钟

    • 工作量证明最常用的技术原理是 哈希函数。由于输入散列函数h()的任意值n,会对应到一个h(n)结果,而n只要变动一个 比特,就会引起 雪崩效应,所以几乎无法从h(n)反推回n,因此借由指定查找h(n)的特征,让用户进行大量的穷举运算,就可以达成工作量证明。

      我们若指定h(n)的 16进制 值的前四值,求n,这样统计上平均约要运行2 的16次h(n)散列运算,才会得到答案,但验算只要进行一次就可以了。如果想要增加难度,那就增加指定的位数即可。以 SHA256 函数举例,假设我们要处理数据Hello World,并找出h(n)前四值为0000的n,如果从Hello World0开始加上一个 十进制ASCII进行穷举猜测,到Hello World107105时才会得到匹配条件的h(n):

      0000BFE6AF4232F78B0C8EBA37A6BA6C17B9B8671473B0B82305880BE077EDD9

      Hello World107105

  • 使用 pear-to-pear 分布式来保证安全

    • 每个节点都有整个 block-chain
    • 如果有人新建了一个 block,这个 block 会发布到网络中的每一个节点
    • 每个节点都会验证,这个节点是否被篡改
    • 篡改会被网络中的其他节点否决,除非你篡改 50% 以上的节点
  • 其算法还在不断进步,最近好像为了防止挖矿,hash 算法被淘汰了

  • 基于 Smart contracts

Hash 函数

将哈希表中元素的关键键值映射为元素存储位置的函数

  • hash 算法的目标:在记录的存储位置和它的关键字之间建立一个确定的对应关系f,使每个关键字和结构中一个唯一的存储位置相对应

Hash 表

  • 直接定址
  • 数字分析取键
  • 平方取中:取关键字平方后的中间几位为哈希地址
  • 折叠法
  • 取余法
  • 随机数法

Hash 函数

  • 均匀性
  • 复杂度

冲突处理

  • 链接法
  • 开放定址法

区块链能干嘛

  • 更多应用场景

    • 医疗记录
    • 电子公证 E-notary
    • 税务记录