区块链区块链基础知识
【区块链】区块链基础知识
区块链三大主流开发语言:
a) Golang
b) C++
c) Node.js
区块链概述
a) 产生背景
i. 密码朋克:通过匿名性保护隐私安全
ii.不可篡改的文件记录:通过给记录加盖时间戳,记录不可篡改文件
iii.通过加密货币代替现金
iv.分布式传输
b)区块链发展历史
i.09年中本聪发布区块链白皮书。 区块链1.0
ii.2014年,以太坊诞生。 区块链2.0
iii.18年中期,EOS主网上线。区块链3.0
iv.超级账本:Fabric,不支持发币。
c)区块链场景概念
i.数字货币 :可以与现金等价交换,理论上有现金流所拥有的一切功能和属性。
ii.融资:产生一个项目亮点,使他人认可它的价值和发展潜力,通过筹集资金来实现这个项目。
1.IPO
2.ICO
iii.电子钱包:在电子商务活动中管理资金,用于支付的工具。
d)什么是区块链
i. 区块链是一种集成了点对点传输协议、现代密码学、共识算法、分布式数据储存等成型数据的应用模型。
e)区块链特点
i.去中心化,无中心化机构
ii.不可篡改
iii.可追溯
1.公益宝、善款追溯
2.物流追溯
iv.完整备份:区块链具有完整的分布式存储特性
v.历史记录:被存储的数据拥有完整的历史记录,可以快速查看或者复原
vi.交易广播:一次交易,分发给网络的其他节点,同步接收。
f)加密货币的特点
i.独立性 所有货币都是独立存在的。
ii.地址、交易ID等都有不重复的唯一性。
iii.匿名性:账户和个人信息没有关联,所有交易全程加密。
iv.不可篡改:基于加密和时间戳,全程不可篡改。
g)区块链核心技术
i.点对点传输协议(PPP):在网络中,节点可以直接进行数据流通。
ii.现代密码学:公私钥签名、安全,不会在传输过程中被恶意篡改
iii.共识篡改:数据一致性
iv.分布式数据储存:实现去中心化的重要技术依据。
h)区块链的核心概念
i.区块链本质是一个分布式账本,通过共识算法来决定谁能获得记账权。以区块为单位以区块产生时间为顺序进行连接。每一个区块中保存上一个区块的Hash值、交易数据。
ii.区块
- 区块负责保存交易数据、记录等
- 结构
区块头
a)时间戳
b)随机数
c)区块高度
d)前一个区块Hash值
e)当前区块Hash值
f)Merkle
区块体
保存交易数据
分布式数据库
所有的区块都会存储在每个节点中,所有的节点组成一个分布式数据库。
节点:简单来说,节点可以理解为一个运行区块链软件的计算机。
1.全节点:保存了完整的区块链副本,也就是说包含了所有数据。
2.轻节点:不保存所有区块数据,需要依赖全节点进行验证。
3.挖矿节点:带有挖矿功能的节点,专门处理交易验证,保存了完整的区块副本。
挖矿
a)区块是在挖矿中产生的
b)穷举随机数算法,把上一个区块的哈希值加上10分钟内产生的所有交易加上随机数通过sha256产生一个哈希值。随机数nonce需要使得哈希值满足一定条件,就可以获得这些区块的交易记账权,产生一个新的区块,再进行广播,让其他节点进行验证,防止造假。
分叉
a)挖矿分叉
解决方案:不同的矿工跟随不同的区块,由于在不同的链上面,算力不一样,矿工数量不一样。矿工数量与算力成正比,最终链的增长速度不一样,然后出现其中一条链更长的情况。最终,矿工在发现更长的链之后,会去同步这条链上的数据。丢弃原来的链。
b)升级分叉:矿工遵从不同机制的情况下导致的分叉。例如DAO攻击导致的ETCÐ
分类
1.硬分叉:如果区块链共识规则改变,并且这种规则不支持前向兼容。也就是说旧节点无法认可新节点产生的区块,叫做硬分叉。要求所有节点必须升级。
2.软分叉:如果区块链共识规则改变,并且这种规则支持前向兼容。也就是说旧节点仍然认可新节点产生的区块,叫做软分叉。需要大部分节点更新软件。