这篇文章说原创吧,是我写的;说不是原创吧,通篇没几个是自己的观点。还是标明转载好了,原创不足 10% 的原创,丢不起啊。
本篇文章以调研为目的,主要目的是梳理区块链入门的知识点,以及相关区块链开源技术整理,抛砖引玉,为进一步的区块链开源技术使用以及实现做铺垫。
由于是初学者,个人见解就不献丑了,文章大部分都是摘要关键点信息(自认为),详细信息请点击链接,尴尬而不失礼貌的微笑
区块链技术(Blockchain technology)是指通过去中心化和去信任中介的方式集体维护一个可靠数据库的技术方案。本质上是解决信任问题、降低信任成本的技术方案,通过基于计算机加密技术的无可替代的信用凭证,从原本信任足够信用度的单独个体(中心)到信、任一堆个体,从而极大地降低了信任成本,核心目的也就是去中心化,去信用中介。
以比特币交易为例来看看区块链具体是如何操作的:
1. 把每笔交易在全网广播。让全网承认有效,必须广播给每个节点。
2. 矿工节点接收到交易信息后,都要拿出账簿本记载该次交易。一旦记录,就不可撤销,不能随意销毁。
- 矿工节点是通过电脑运行的比特币软件对交易的进行确认的。
- 为了鼓励矿工的服务,对于其所记录和确认的交易,系统为矿工提供25个比特币作为奖励。(这个奖励数量,系统设定每4年减半)
- 奖励只有一份,哪个节点记录快就奖励给哪个节点。为了减少这种情况,系统会出一道十分钟的使用哈希散列(Hash)算法运算题,谁能最快解出值,谁就将获得记录入账权利,并赢得奖励。
3. 获得记账权的矿工将向全网广播该笔交易,账簿公开,其他矿工将核对确认这些账目。交易达到某个确认数以上就成功记录在案了。矿工记录的时候,还会将该笔交易盖上时间戳,形成一个完整时间链。
4. 当其它矿工对账簿记录都确认无误后,该记录就确认合法,矿工们就进入了下一轮记账权争夺战。
- 若两个人同时上传,虽然这个概率很小,但是若发生,我们就看最后的区块链哪条更长,短的那条就失效。这就是区块链中的“双花问题”(同一笔钱花两次),具体见标题【双花问题和共识进攻】
- 对于要制作虚假交易,除非你说服了全网里超过51%的矿工都更改某一笔账目,否则你的篡改都是无效的。网络中参与人数越多,实现造假可能性越低。这也是集体维护和监督的优越性,伪造成本最大化。
矿工的每个记录,就是一个区块(block),会盖上时间戳,每个新产生的区块严格按照时间线形顺序推进,形成不可逆的链条(chain),所以叫做区块链(Blockchain)。而且每个区块都含有其上一个区块的哈希值,确保区块按照时间顺序连接的同时没有被篡改。
这时候我们再看对区块链的原始定义就能理解了:区块链是一种分布式数据库,是一串使用密码学方法相关联产生的数据块,每个数据块都包含了一次网络交易信息,用于验证其信息的有效性和生成下一个区块。
本部分内容主要摘自文章【区块链之菜鸟入门】亲,你淘的区块链到了!,文章以诙谐的漫画方式阐述了区块链简单的一些概念以及原理,大家可以点击查看,图文结合更清晰些
个人见解,可以简单理解为使用计算机语言描述并取代纸质合同,并由计算系统自动执行该合同。
- 多方之间的定期交付合同被以代码的形式写入区块链。其中的个体是匿名的,但合同记录在公共账本中。
- 当扳机事件触发时,比如到期、执行价格达到,合约按照编程的条款自动执行。
- 监管者可以通过这个区块链了解市场上的活动,同时维护个体成员的隐私。
Bob是接受数字货币支付的线上商家,Alice是使用数字货币进行支付的购物者,智能合约可以在去信任的情况下使Bob的商品与Alice的数字货币实现交换。Alice可以创建一个智能合约,将这样一段代码写入区块链:“如果我在24小时内收到这一商品,则我会将这笔数字货币发到寄件人的收款地址,并将这个商品寄给我的创建者,否则我将会将这笔数字货币发回给我的创建者”。
智能合约中的资产和资金没有拥有者(Owner),在这个例子中,当Alice把这笔数字货币加入智能合约,就无法通过修改这个合约把这笔数字货币拿回来,只能等待交易成功并收到Bob寄出的商品,或者24小时后交易没有成功,再收到自己的数字货币。
【区块链之菜鸟入门】来来来,这篇科普告诉你“区块链”到底是个啥?
【区块链之技术进阶】让这篇技术贴告诉你区块链是怎么运行的
共识机制是区块链技术的关键点。共识机制的核心是在分布式网络中,利用一种规则(算法)来保证全网对于Block的创建是一致的,下面是主要的共识算法。
比特币采用的pow工作量证明机制,即按照做工作量的多少来获得奖励。这一点带来的弊端是算力很容易集中化。
比特币的交易机制是十分钟产生一个区块,意思就是每隔十分钟计算机就打包全网交易进入一个区块。而矿工就是在打包游戏中争夺区块链记账权的人,谁能最快准狠解开SHA256这个数学命题的值,谁就赢得了这个十分钟区块的打包记账权。而这十分钟里的每一笔交易,都会被盖上一个 timestamp —时戳
具体步骤:
- 广播比特币网络中的每一笔交易,使每个参与者(指矿工)都记录下这笔交易。
- 每个参与者接收到交易信息后,都要将该笔交易盖上时戳,收入区块。
- 由于每个矿工都做了工作,谁赢了获得奖励呢?此时参与者们要通过一个计算游戏,谁能最快解出SHA256运算的值,谁就将赢得打包区块的权利,并获得系统的25歌比特币奖励。这个数量的设定是每四年减半。
- 获得记账权的矿工将向全网广播这十分钟内区盖了时戳的交易,其他参与者将核对这些账目。
- 当其他参与者都确认无误后,该区块就确认合法,就进入了下一轮的区块争夺战。多个区块逐渐形成区块链。
忘记在哪里看到具体描述了,个人理解为是减少记账人数(权益证明)的方式来降低工作量证明机制带来的资源损耗,属于工作量证明机制的升级版,具体的后续补充下吧
另一种解释版本是这个:Pow的一种升级共识机制;根据每个节点所占代币的比例和时间;等比例的降低挖矿难度,从而加快找随机数的速度。
类似于董事会投票,持币者投出一定数量的节点,代理他们进行验证和记账。
由布比构建,基于传统的分布式一致性技术,加上数据验证机制;是目前行业链大范围在使用的共识机制
全称 Proof ofElapsed Time,它是由英特尔构建在可信执行环境的一种彩票协议。
属于Quorum拜占庭协议,仲裁投票算法,它采用了瑞波和恒星的共识协议,用来解决需立即交易定局的需求。
以太坊社区提出的正在研发中的类POS共识协议。Casper的基本思路是,任何人抵押足够多的以太币到系统中就可以成为矿工参与到挖矿过程。共识算法要求所有的矿工诚实工作,如果一个矿工有意破坏,不遵守协议,系统就会对矿工做出惩罚:没收之前抵押的以太币。有人把Casper这样的挖矿机制称为“虚拟挖矿”。
全称 PracticalByzantine Fault Tolerance,拜占庭容错算法,属于状态机拜占庭协议,IBM HyperLedger fabric实现和推荐的共识算法,采取一个节点一票的方案确定记账结果,少数服从多数投票,性能较好,主要用于联盟链。
【区块链之技术进阶】扒一扒某乎上面对于区块链的理解(一)
区块链主流开源技术体系介绍
上面提到过,区块链的每个区块头都会进行SHA256哈希加密,生成一个哈希值,通过这个值,我们可以在区块链中识别出特定区块,并且每个区块头都还包含它的父区块的哈希值。
每一个子区块都只有一个父区块,但一个父区块可以暂时拥有很多子区块,这种情况被称为区块链分叉。这种只有当不同的矿工在同一时刻发现不同的区块时才会发生。这时解决的方法就是,每一个节点总是选择并尝试延长拥有最大工作量证明(最长或者最大难度)的区块链。
举个例子:我们现在有一个区块链-蓝
位于X地区的矿工与位于Y地区的矿工同时发现了两个区块。
我们假设:
- 矿工熊猫君A发现区块-红,
- 矿工兔子君B发现区块-绿。
当熊猫君A,兔子君B节点分别在比特币网络广播的时候,部分节点会先收到熊猫君A的广播,部分会先收到兔子君B的广播,然后分为两派阵营的节点会分别开始以他们接收到的区块作为父区块,进行深一步的挖矿活动。(这里节点的地理意义指的是网络拓扑上的位置,而非真实的地理位置。)
就在大家如火如荼地紧张解题的关键时刻,一个接收到兔子君B所广播的节点的兔子君C,优先发现了下一个区块-粉,也就是说绿色阵营的小兔子们的区块链可以进行下一步延伸,就会比红色阵营的小熊猫们的长度长,红色阵营小熊猫遗憾出局。这样的话分叉问题就得到了解决。
这里我们需要提到一个名词,“共识攻击”。一个很著名的场景就是“51%攻击”。如果一群矿工拥有了全网51%的算力,那么只要他们联合起来就可以打击整个比特币网络。他们可以认为地去制造一个分叉的区块链实现双重支付,拿我们上文的例子举例,攻击者在区块-红中进行过了交易,结果他强行制造出区块-绿,并且区块-绿中将原本的交易替换成另一笔交易(把原本应该给卖家的钱打入自己同伙的钱包中),然后在区块绿的基础上再计算一个区块-粉,这样包含伪造的区块的区块链就比包含真实交易的区块红高出一个高度,此时,包含双重支付的恶意区块链将取代真实区块链,从而实现诈骗。51%的概念并不是说攻击者需要全网51%的算力才能进行攻击,理论上来说不到51%也是可以实现攻击的,我们只是说拥有超过51%的算力的攻击几乎我们就可以判定它一定会成功。
【区块链之技术进阶】扒一扒某乎上面对于区块链的理解(二)
下述文章讲解的非常精炼了,我就不做搬运工了,大伙自个儿点击链接查看吧,这里贴出他的思维导图
【区块链之技术进阶】Attention please!区块链技术的风险!
不知道怎么描述,在这里也不做搬运工了,大伙自个儿点开链接看看,文章内包含开源项目的地址链接。下次专门写个文章从技术角度详细描述下主流开源项目的简单使用与实现。
【区块链之技术实战】区块链开源项目合集:Hello,BlockChain!
【区块链主流开源技术体系介绍
文章提到的开源项目有:
比特币体系
以太坊ETH
BitShares —— 点对点的多态数字资产交易系统
公证通Factom
瑞波Ripple - 世界上第一个开放的支付网络,引入了一个共识机制RPCA
未来币NXT - 第二代去中心化虚拟货币,100%的股权证明POS算法
Hyperledger Fabric
Bletchley —— 微软开源区块链平台项目
Openchain —— 分布式总账区块链工具
IBM-Blockchain-marbles - IBM 本家基于bluemix云平台的推荐方案,与bluemix绑定
openchain
HydraChain - 基于以太坊平台的私有链技术
myblockchain - 类SQL方式的Blockchain
MultiChain - 一个构建私有区块链的伪开源平台
Eris - 带智能合约的区块链构建方案
blockstrap - html5框架的区块链应用