- 特性
去中心化。
这意味着没有中心的服务器,不受某个人的控制,整个系统直接由用户端的电脑构成。这样的技术难度是非常大的,并不像手机 App 或是小网站一样,你想发布就发布,这需要有人来跟你一起玩。
数据防篡改。
所有交易记录全量保存,并公开给所有的人,而且还被加密和校验。并不是数据不能被篡改,而是数据被篡改的成本非常大。(有人借此说区块链的不可篡改可以解决人类的信任问题,这个并不一定。)
固定的发行量。
不会像国家中央银行那样乱印钞票,造成通货膨胀。 - 比特币
区块链技术
工作量证明共识机制 - 区块链
真正的数据。
自己的地址(或是 ID)。
前一个数据块的地址。 - 比特币哈希算法
Version,Previous Block Hash,Merkle Root,Timestamp,Difficulty Target 和 Nonce 这六个数据字段是区块链的区块数据协议头 - 以太坊Merkle Root树
一个是用来做交易 hash 的 Merkle Root。
一个是用来表示状态 State 的。
还有一个是用来做交易收据的。 - UTXO(Unspent Transaction Output)
需要进行交易处理 - 一般的挖矿流程如下。
(1)从网络上取得之前的区块信息。
(2)从 " 待记账区 " 中获取一组交易数据(有优先级,比如成长时间、矿工小费等)。
(3)形成区块头(计算 Merkle Root 并设计记账时间 Timestamp 等)。
(4)开始穷举 Nonce,来计算区块头的 hash 值。如果前面有 18 个零(小于 Target),那么记账成功。如果没有,则从第一步重新开始。
(5)一旦某矿工成功打包一个区块,他就会告诉其他矿工。收到消息的矿工会停下手上的工作,开始验证,验证通过后,广播给其他矿工。 - Pow Proof of Work
区块链网络设计使用的算法思路:一个是限制一段时间内整个网络中出现提案的个数(增加提案成本),另外一个是放宽对最终一致性确认的需求,约定好大家都确认并沿着已知最长的链进行拓宽。 - 拜占庭容错系统研究中的三个重要理论:CAP、FLP 和 DLS。
CAP在网络发生阻断(partition)时,你只能选择数据的一致性(consistency)或可用性(availability),无法两者兼得,在一致性、可用性和分区容忍性上只能三选两
FLP在异步环境中,如果节点间的网络延迟没有上限,只要有一个恶意节点存在,就没有算法能在有限的时间内达成共识
DLS在部分同步(partially synchronous)的网络环境中(即网络延迟有一定的上限,但我们无法事先知道上限是多少),协议可以容忍最多 1/3 的拜占庭故障(Byzantine fault)。
在异步(asynchronous)网络环境中,具确定性质的协议无法容忍任何错误,但这篇论文并没有提及 randomized algorithms 在这种情况可以容忍最多 1/3 的拜占庭故障。
在同步(synchronous)网络环境中(网络延迟有上限且上限是已知的),协议可以容忍 100% 的拜占庭故障。 - 工作量证明就是为了下面几件事。
提高对数据篡改的成本。
提高网络中有不同声音的成本。
解决分歧 - PoW 也有几个非常严重的问题。
越来越中心化地记账。
越来越跑不动。 - 比特币的几个问题
交易成本上升。
个人无法参与
社区的利益纷争。 - 步骤
公开记账、创建创世区块、交易、打包Transaction、广播交易 - 共识机制
业务吞吐量、交易速度、不可篡改性、准入门槛,最为关键的技术要素之一。 - POW工作机制
计算资源是决定记账权的唯一因素
计算难度是区块链为了控制产生答案的速度
Pow的激励机制
解决双花攻击:广播的内容分为两种,第一种是Transacton,第二种是区块,也就是信封。
所有记账节点都会遵循两条规则:
一、一个代币如果已经被花费,会被标记为已花费,如果再次接收到这个代币被花费的请求,记账节点会拒绝打包这个交易;二、如果同时接收到两个信封,这两个信封中的两笔交易出现了一个代币被花费两次的情况,这是我们所说的分叉(fork),那么会选择挖矿难度较大的那个信封。
来源:CSDN
作者:跑酷的男孩
链接:https://blog.csdn.net/hzfd2013/article/details/104011095