区块链学习笔记(一)
作者:互联网
最近学习了下区块链的相关技术,整理一些基础资料。
区块链的基础知识
数据结构 :
- 区块链 :用Hash指针链接起来的区块组成的链表,后一个区块包含了指向前一个区块的Hash指针
- Merkle Tree :以数据块的Hash指针构建的二叉树,主要用于区块体的防篡改和验证 稍复杂,在后续笔记中扩展
主要特性 :
- Decentralized 去中心化 : 参与到同一条区块链的所有人都是平等的
- Consencus Protocal 共识协议 :
- 前提 : 假设大部分的人都是诚实的,愿意遵循协议发布信息并履行合法性验证的义务
- 最长合法链 : 新发布的区块必须接在最长合法链最后一个区块之后,如果两个或以上的节点几乎同时发布了新的合法区块,则链出现暂时的分叉,其他节点默认以自己接收到的第一个新区块作为最长合法链,在此基础上继续求解,最后终将有一条链胜出,成为唯一合法链
- 记账权 : 通过计算得到puzzle的合法解,才能发布新区块,向区块链中追加新的信息
- 工作量证明 Proof of Work (PoW) : 所有节点的puzzle难度一致,算力越强才能越快求到合法的解获得记账权
- 权益证明 Proof of Stake (PoS) : 通过持币量和持币时间长短决定其puzzle难度,持币量越多时间越长越容易获得记账权
- Tamper Proof 防篡改 : 因为后一个区块保存了前一个区块的Hash值,如果要篡改某一个区块的内容,后续所有的区块都会受到影响
加密技术 :
加密技术在区块链中的应用主要是Hash算法和数字签名
- Hash算法 :
用于计算Hash指针,同时也是求解Puzzle的算法,区块链采用的Hash算法有以下要求:
- Collision Resistance : 没有高效的方法人为制造Hash碰撞,即没办法在知道Hash值的情况下,比较快的找到一个输入去替代原始输入
--保持Hash值不变,无法篡改原始信息 - Hiding : 给定Hash值,没办法很快推算出原始输入信息,即Hash值不会泄露原始输入信息
--数字签名不会泄露私钥 - Puzzle Friendly : 输出不可预测,没办法根据一个输入很快推测出其Hash值范围
--求解的过程,只能遍历尝试,没有捷径 Difficult to Solve and Easy to verify
- 数字签名 :
采用非对称加密算法,发布信息的人用自己的私钥进行数字签名,接收信息的人用发布人的公钥进行验证
--一对公私钥可以认为是一个账户,公钥是账号,私钥是密码
--一般是先对交易信息取Hash,再对Hash值进行签名
区块链的演进阶段
区块链1.0
比特币,建立起了一个基于PoW的去中心化共识链
- 币的产生 : 区块链上的节点每发布一个新的合法区块,可以获得一定数量的币作为出块奖励Block Reword,每个币都有唯一标识--出块奖励最早是50个币,每出21万个块奖励减半,总计2100万个块之后,出块奖励会变为0,所以其实比特币的puzzle解的数量上并没有限制,区块链可以一直拓展下去,只是比特币的数量有上限
- 币的交易 : 持有币的人可以发起币的交易,交易的输入是币的来源说明,可以根据来源追溯到每个币的产生。交易的输出是币的标识,币的数量和接收币的账号(公钥)。持币人对整个交易用自己的私钥签名,区块链上每个节点都可以用其公钥验证。每个区块都可以包含多笔交易信息,区块发布者可以收取一定数量的币作为手续费。
区块链2.0
以太坊,通过智能合约实现可编程的链,目前正在从PoW向PoS迁移的进程中
- 基于区块链1.0 : 同样有出块奖励,支持币交易,但为了提升效率降低了求解难度,出块频率较高,所以更容易出现分叉。因此引入了对于合法但竞争失败的分叉上的区块的安慰奖励。
- 智能合约 : 新增功能,可以在区块链上发布代码,供其他人调用。为区块链的应用范围提供了无限可能。
区块链3.0
百家争鸣,暂无定论,目前收集到的一些 :
- DAG : 将区块链的数据结构由链表改为DAG,如IOTA
- BasS : Blockchain as Service 区块链即服务
- DApp : 去中心化的App
标签:出块,Hash,--,笔记,合法,学习,数字签名,区块 来源: https://www.cnblogs.com/panda-chocolate/p/15010357.html