区块链入门笔记
区块链(BlockChain),是区块(Block)和链(Chain)的直译, 每个区块存储规定时间内的交易数据.并通过密码学的方式.形成一个不可篡改、全员共有的分布式账本。
区块链中的交易是一种去中心化机制,区块链特性:分布式存储,数据可溯源,不能被篡改,去中心化。
哈希:将一串明文数据加密成一串密文,密文就是加密的哈希。
(1)相同数据加密生成的HASH相同;
(2)明文可以得到唯一的哈希,但哈希值不能倒推明文;(非对称算法)
挖矿的过程就是算哈希的过程。
什么叫挖矿?就是找到某个Nonce使满足生成的哈希值前面有4个0,即满足了系统给定的难度,匹配Nonce的过程就是挖矿的过程。
区块:存储了当前时间的交易信息(交易地址,发送的比特币);
区块链:把区块一个一个的串联起来,后面的区块存储了上一个区块的哈希值。
创世块:第一个区块,它的上一个哈希值为0(没有上一个哈希,高度为0)。
POW:工作证明
POS:股权证明
DPOS:委托权益证明
比特币的介绍:
比特币是新一代的加密数字货币,比特币由计算(挖矿)产生
交易过程具有安全性,隐私性,可追溯,不可篡改等特性
比特币采用区块链作为底层技术实现上述特性
比特币:完全去中心化,总量一定(2100万枚),匿名记账
比特币区块:每个区块大小被限定在1M,每个交易大约250字节,所以每个区块最多容纳4000个交易。由于每个被认可的区块平均产生时间为10分钟,意味着每秒钟只能处理7个交易。
Merkle根节点:默克尔树
叠叠加密的方式,即使不知道所有的数据,只需要知道这样的一个默克尔树根就可以知道数据是否被篡改。
比特币中的双花:
每笔交易都需要先确认对应比特币之前的状态,如果它之前已经被标记为花掉,那么新的交易会被拒绝;如果诈骗者利用网络延迟同一笔金额在不同电脑花两次。
下一个矿工选择在A基础上继续记账的话,A分支就会比B分支更长,根据区块链的规则,最长的分支会被认可。
比特币的缺陷与解决方案:
缺陷:交易效率低,交易确认时间长;
解决方案:
(区块链1.0时代)
(1)BCH比特币进行扩容;
(区块链2.0时代)
(2)ETH每ETH每挖一个区块奖励5个以太坊币,平均每10S左右出一个区块;
(区块链3.0时代)
(3)EOS每秒 (10,000/s100,000/s) EOS将使用并发机制来扩展网络,可能高达每秒数百万次的交易。
缺陷:POW共识机制引发高耗能问题
解决方案:
(1)股权证明(POS)
(2)股权委托证明(DPOS)
缺陷:区块、区块链账本的容量问题
解决方案:
(1)SPV轻钱包
(2)网页版钱包
(3)阻止灰尘交易
缺陷:比特币不是图灵完备的
解决方案:
(1)V1.0:比特币点对点金融支付
(2)V2.0:引入智能合约,ETH为代码,主要与“金融”领域结合
(3)V3.0:区块链与商业应用的结合,EOS代表
缺陷:安全性问题、去中心责任化问题。
分布式账本->EVM的虚拟机(用来解析智能合约)->solidity合约编程语言->truffle的智能合约开发框架->web3.js的工具->后套的工具
区块链的发展:
V1.0:
2008 中本聪 比特币白皮书
2009 比特币创世区块产生
2010 10000比特币1个披萨
V2.0: 2013~2014 以太坊(图灵完备的支持)、2015 R3成立
V3.0: 2018 EOS与其它
区块链技术:
(1)区块链底层;(2)智能合约(超级账本,以太坊)(3)掌握区块链技术原理
区块链的分类:(1)公有链;(2)私有链;(3)联盟链;
解决的问题:(1)价值传递;
区块链的架构模型:
区块链的链式结构:
区块头:
链式结构:
哈希函数:
(1)确定性; (2)单向性; (3)隐秘性; (4)扛篡改; (5)抗碰撞
实现:MD系列;SHA系列:推荐SHA256,SHA3;
区块链核心技术:
密码学和数字签名用于身份地址标识
共识算法用于工作量证明、分布式存储技术用于存储交易记录和区块,分布式网络技术用于网络通信和节点发现。
区块链是一个分布式数据库、加密货币和只能合约的基础;
区块链是有着特定结构的数据库,一个有序向后连接的列表
区块按照插入的顺序进行存储,每个块都被连接到前一个块
快速地获取链上的最新块,并且高效地通过哈希来检索一个块
工作量证明pow:
工作的结果作为数据加入区块成为一个区块;
完成这个工作的人也会获得奖励(即挖矿获得比特币);
整个“努力工作并进行证明”的机制,叫做工作证明。
为什么采用哈希算法?
不可逆:无法从一个哈希值恢复原始数据,哈希并不是加密
唯一性:对于特定的数据,只能有一个哈希,并且这个哈希是唯一的
防篡改:改变输入数据中的一个字节,导致输出一个完全不同的哈希
哈希算法特性:
正向传递,给定明文和hash算法,有限时间和有限资源内能计算出hash值
逆向困难:给定哈市值,有限时间很难逆推出明文
输入敏感:原始输入信息修改一点信息,产生的hash值看起来应该有很大不同
冲突避免:很难找到两段不同的明文,使得他们的hash值一致
交易机制:
区块链能够安全可靠地存储交易结果
在区块链中,交易一旦被创建,就没有任何人能够再去修改或删除
交易由一些输入和输出组合而来
数字货币的地址及身份标识:
某种途径可以识别出你的交易输出的所有者,称之为身份
在比特币中,身份就是一对(或者多对)公钥(public key)和私钥
所谓的地址,只不过是将公钥表示成人类可读的形式而已
公钥加密算法使用的是成对的密钥:公钥和私钥
公钥并不是敏感信息,可以告诉给其他人。但是,私钥绝不对不能告诉其他人;只有所有者才能知道私钥,能够识别,鉴定和证明所有者身份就是私钥。
总结:笔者写这篇文章时正在进行区块链的学习,作为一个新入链圈的新人,接下来将继续记录相关的技术与笔记。