区块链入门

历史与展望

历史

密码朋克(Cyberpunk)一个崇尚数学、密码学、计算机技术等的小组。

简介: 密码朋克是什么? 密码朋克消亡史

比特币的诞生离不开前人众多技术支持,如: POW, 时间戳方法保证数字文件安全的协议、点对点交易、加密货币等。同样,区块链不是一个单一的技术,而是一些技术的集合。

前景

应用场景:

  1. 资产:数字资产发行、支付(跨境支付)、交易、结算
  2. 记账:股权交易、供应链金融、商业积分、
  3. 不可篡改:溯源、众筹、医疗证明、存在性证明
  4. 点对点:共享经济、物联网
  5. 隐私:匿名交易,

比特币简介

  1. 比特币是数字货币 优点:财产只受自己控制、安全、无通胀、没有假钞、流通性好、匿名 缺点:
  2. 去中心化记账系统

分类

区块链分为区块链公链、私链、联盟链、侧链,特点有哪些, 参考: 什么是区块链公链、私链、联盟链、侧链。 区块链,私链,公链,联盟链之我见 区块链(公链)发展史

区块链 1.0, 2.0 的 TPS 出块速度慢,而且不知道要等多久。因此出现了区块链 3.0 的想法,想要高性能,大吞吐量。 区块链 3.0, 当前的 EOS 性能提高了,但是是以牺牲了部分去中心化的特点来实现的。它有 21 个超级节点。

比特币原理

账本验证

通过将整个账本进行 hash,然后对比分布式不同机器中的 hash 值是否一致,采用少数服从多数原则。 Ledger hash

一个区块: 序号、时间戳、账本的 hash 值、交易记录 block

新账本的产生:

比特币每 10 分钟记账一次,通过将旧账本的 hash 值和新添加交易记录一起 hash,形成新的账本的 hash。 new ledger

每个节点在核对的时候,只需要核对最后一个区块的摘要信息,如果它正确,那说明前面的也正确。

账户所有权问题

账户用地址保存,转账的过程是将比特币从一个地址转移到另一个地址。账本上是不保存任何个人信息的。

一条转账记录

1
2
3
4
5
{
"付款地址": "一串付款数字地址用来付款"
"收款地址": "一串数字地址用来收款",
"金额": "0.2btc"
}

私钥

比特币中一个地址对应有一个私钥,拥有私钥才可以登录该账户地址,进行转账付款等。一但私钥泄露,比特币就有可能会丢失。

公钥、私钥、地址的关系:

  1. 私钥:实际上是一组随机数,关于区块链中的随机数我们已经介绍过了
  2. 公钥:对私钥进行椭圆曲线加密算法生成,但是无法通过公钥倒推得到私钥。公钥的作用是在和对方交易时,使用自己的私钥加密信息,然后对方使用自己的公钥解密获得原始信息,这个过程俗称签名。
  3. 地址:由于公钥太长,在交易中不方便使用,就对公钥哈希进行 SHA256、RIPEMD160、Base58 算法加密生成地址

总结,私钥->公钥->地址

签名与验证

采用非对称加密技术,通过签名验证来证明账户所有权(也就是在不泄露私钥的情况下,证明拥有私钥)

  1. 签名(加密)

    1. 对交易进行 hash 得到摘要 transaction hash

    2. 用交易的 hash 摘要和私钥进行签名 sign

  2. 广播交易 向周围节点广播交易和签名,周围节点收到后再次向外广播

  3. 验证(解密) 签名验证的目的有两个:

    1. 证明交易所引用的 UTXO 的确属于付款人。 具体到本次交易,就是证明交易 001 的序号为 0 的 UTXO 的确是发给 B 的。 方法:- [ ] 暂时不写
    2. 证明交易的所有数据的确是付款人提供的,且未被修改过。 具体到本次交易,就是证明 B 的确创建了交易 002,且交易内的数据未被修改过。 方法:使用签名和付款方地址进行验证操作,如果结果为交易的摘要,验证通过 verity

记账(挖矿)

记账: Hash 打包的过程,该过程又被称为挖矿,通过消耗算力打包区块,获取一定的奖励

规则

  1. 一段时间内只有一人可以记账成功
  2. 通过解决密码学难题(即工作量证明)竞争获得唯一记账权
  3. 其他节点复制记账结果

工作量证明

如果按照需要打包的话,只需要计算 Hash(上一个 Hash 值,交易记录集)的 hash 值即可。但是为了出块时间的稳定,就必须提高计算的难度,因此比特币采取加入随机值,要求结果 hash 值以 n 个 0 开头 Hash(上一个Hash值,交易记录集,随机数)= 00eeaFD635BCD, 因此,挖矿的过程就是不断遍历随机数,寻找符合前 n 个数为 0 的结果 hash 值的过程

交易记录集

  1. 收集广播中还没有被记录账本的交易
  2. 交易的有效性验证(两个方面)
  3. 添加一笔给自己转账的交易(挖矿奖励)

共识机制

两个节点同时完成工作量证明,使用谁的区块?

为什么要遵守协议? 节点工作量只有在其他的节点认同其是有效的

POW 累计工作量最大的区块链

比特币采用的共识算法就是 POW,矿工们在挖一个新的区块时,必须对 SHA-256 密码散列函数进行运算,区块中的随机散列值以一个或多个 0 开始。随着 0 数目的上升,找到这个解所需要的工作量将呈指数增长,矿工通过反复尝试找到这个解。

每个节点根据总是独立地去选择最长的(工作量最大的那条链)

参考资料: 比特币钱包的理解(一)私钥、密码、助记词 区块链之公钥、私钥、地址之间的关系