区块链入门
区块链的概念
从技术的角度来讲,区块链就是一种特殊的分布式数据库。
区块链的分类
- 公有链:比特币、以太坊、EOS。
- 私有链:公司内部搭建的开发节点、测试节点等。
- 联盟链:Fabric、R3 联盟、EEA、阳光链。
区块链的应用场景
- 资产:数字资产发行(ICO)、支付(跨境支付)、交易、结算。
- 记账:股权交易、供应链金融、商业积分。
- 不可篡改:溯源(跨境电商商品溯源)、众筹、医疗证明、存在性证明。
- 点对点:共享经济、物联网。
- 隐私:匿名交易。
比特币的原理
1. 账本如何验证
哈希函数:Hash(原始信息) = 摘要信息,简单的说就是一种将任意长度的消息压缩到某一固定长度的消息摘要的函数。
哈希函数的特点:
- 同样的原始信息用同一个哈希函数总能得到相同的摘要信息。
- 原始信息任何微小的变化都会哈希出面目全非的摘要信息。
- 从摘要信息无法逆向推算出原始信息。
区块结构如下:
第 1 块区块(区块 0)叫做创世区块。除第 1 块区块外,其他区块的 Hash 值 = Hash(上一个区块的 Hash 值 + 当前账本信息)。
2. 账户所有权问题
账户是用一个地址来表示的,转账的过程是把 btc 从一个地址转到另外一个地址。
{
"付款地址":"2A39CBa2390FDe",
"收款地址":"AAC9CBa239aFcc",
"金额":"0.2btc"
}
每个地址都会对应一个私钥,私钥可以通过两次 Hash 运算得到地址,但地址不能反推出私钥。Hash(Hash(fun(私钥))) = 地址
非对称加密技术的应用:
- 签名:sign(“交易摘要”, “私钥”) = 签名信息
- 验证:verify(“签名信息”, “付款方地址”) = 交易摘要
3. 为什么记账(挖矿)
记账实际是将交易记录进行 Hash 打包的过程,会消耗计算机资源,那节点为什么要参与记账?
因为完成记账的节点可以获得系统一定数量的 btc 奖励(12.5 个)。
规则:
- 一段时间内(10 分钟)只能有一人可以记账成功。
- 通过解决密码学难题(即工作量证明)竞争获得唯一记账权。
- 其他节点复制记账结果。
工作量证明:Hash(上一个区块的 Hash 值, 交易记录集, 随机数) = Hash 值(必须满足若干个 0 开头)
第一个完成工作量证明的节点有优先的记账权,唯一的记账权就可以打包区块。
4. 共识机制
两个节点同时完成工作量证明:每个节点只认可累计工作量最大的链。