依據特定輸入及轉換函數(Transition Function)執行狀態更新的系統,稱為狀態機複製(State Machine Replication)
新手教學|ELI5!區塊鏈到底在幹嘛〈上〉用生活化的例子輕鬆學會區塊鏈技術的重要概念
經過一段時間之後,每個 EPC 參與者手上都會有許多來自別的參與者的紙條,每張紙條都記載著不同的交易。在理想狀況下,如果所有參與者收到紙條的順序都相同,且每個參與者都收到了所有紙條,則所有參與者的帳本上的狀態,也就是餘額,都會相同。然而,若採用上述的訊息散佈策略,會發生兩種情況:每個參與者收到紙條的順序會不同,或者某些紙條可能會被遺漏。這些情況都會讓每個參與者的帳本產生差異,使帳本不可靠。而一個不可靠的帳本,不能作為貨幣發行的工具。
有沒有辦法能使所有 EPC 參與者用相同的交易順序記帳呢?這便是區塊鏈技術的奧秘之處。
值得注意的是,每個區塊當中都會記錄前一個已達成共識的區塊的編號。例如接下來的範例,Bk15 的前一個已達成共識的區塊為 Bk3:
Bk15
Last Block: Bk3
Height: 15
Transactions:
- Tx1
- Tx5
- Tx4
- Tx10
- 什麼是區塊鏈技術? Tx7
- Tx13
Nonce: 1
Signature: CHARLIE
而當 EPC 參與者在收取共識的區塊後,將按照共識依序為每個交易內容進行帳本餘額的轉換。如此,所有的帳本都將具有一致的狀態。
依據特定輸入及轉換函數(Transition Function)執行狀態更新的系統,稱為狀態機複製(State Machine Replication)
摘要:濃縮紙條上的訊息
在介紹達成共識的方法前,筆者要先來介紹一個樸實無華但重要的概念:摘要(Digest),其顧名思義就是一段內容經過消化的產物。假設有一種摘要產生器,這個機器可以放入一張紙條,然後透過 3 個步驟計算出紙條的摘要。
- 摘要產生器將記載訊息的紙條切成一條一條固定寬度的細長條狀紙帶,如下圖:
2. 將這些紙帶依照順序接成一個長條紙帶。紙帶上有字跡的黑色部分與沒字跡的白色部分會出現不規則相間,測量每個黑色區塊之間相鄰的距離,如下圖:
每個 EPC 參與者都會有一台摘要產生器,而它需要上緊發條才能開始工作,且每計算完一張紙條便須重新上一次發條。
首先,摘要會隨著紙條內容的變動而更動。只要更動了任何一點紙條內容,例如區塊的交易順序,或者流水號(Nonce),都會使摘要改變。因此一個附上摘要的紙條,可以讓收到紙條的人在收到後再自行計算一次摘要並比對兩者,以驗證紙條的內容是否被修改過。因此,摘要是可驗證的(Verifiable)。
若想在不更動摘要的情況下同時變動紙條內容,只能不斷嘗試用不同內容產生摘要,直到發生碰撞(Collision) — 意即兩個不同內容的紙條出現相同摘要。
其次,摘要也是單向的:一個紙條很容易產出摘要,但摘要很難還原出原本的紙條內容。這也代表摘要是隨機且難以預測的,因此摘要可以作為一種亂數(Random Number)來源。
正式的區塊鏈使用更難預測且更不易碰撞的的密碼雜湊函數(Cryptograpgic Hash Function)產生訊息摘要。
区块链?对你影响能有多大?到底是什么?什麼是區塊鏈技術? 能干嘛?
LFOSSA官方交流群
LFAPAC官方微信公众号
LFOSSA官方微信公众号
Linux基金会开源软件学园 Copyright © 2019 linuxfoundation.cn, ICP license, no. 京ICP备17074266号-2
如何读懂区块链技术?
例如:如果A借了B 100块钱,这个时候,A在人群中大喊“我是A,我借给了B 100块钱!”,B也在人群中大喊“我是B,A借给了我100块!”此时路人甲乙丙丁都听到了这些消息,因此所有人都在心中默默记下了“A借给了B100块钱”。这个系统中不需要银行,也不需要借贷协议和收据,严格来说,甚至不需要人与人长久的信任关系(比如B突然又改口说“我不欠A钱!”,这个时候人民群众就会站出来说“不对,我的小本本上记录了你某天借了A100块钱!”)。
看到这里基本已经能够生动形象又不涉及任何细节地解释区块链了。但是任然存在以下疑问: “凭啥?” “凭啥你喊一句话我就帮你记?我的小本本不要钱么?”。为了激励大家帮我传话和记账,我决定给第一个听到我喊话并且记录在小本本上的人一些奖励:第一个听到我喊话并记录下来的人,你就凭空得到了1个查克拉,这个查克拉是整个系统对你幸苦记账的报酬,而你记录了这句话之后,要马上告诉其它人你已经记录好了,让别人放弃继续记录这句话,并给你自己的记录编号让别人有据可查,然后你再把我的话加上你的记录编号一起喊出来,供下一个人记账。
区块链技术逻辑架构
协议层
扩展层
应用层
区块链技术对社会的影响及意义
机器信任
这个意义有多大呢?
价值传递
这个意义有多大呢?
首先,代币发行让融资更加便利,这个在很多海外项目 ICO 的疯狂上就可以看到。
举个例子,比如基于区块链的内容平台 Steemit,发行了代币 STEEM 来奖励内容生产者。Steemit 平台上每一个内容资产的增加,都会带来新价值的产生,又会吸引更多的用户,用户越多,STEEM 代币的消费也增加了,STEEM 代币的价值也相应增加,可以吸引更多的内容生产者,这种正向循环,从而形成生态效应。
这个意义有多大呢?
区块链技术的应用前景
区块链在金融领域的应用前景
比如Visa推出基于区块链技术的 Visa B2B Connect,它能为机构提供一种费用更低、更快速和安全的跨境支付方式来处理全球范围的企业对企业的交易。要知道传统的跨境支付需要等3-5天,并为此支付1-3%的交易费用。
又比如纳斯达克推出基于区块链的交易平台 Linq,Linq 的具体应用场景是非上市公司的股权管理和股权交易。
Visa 还联合 Coinbase 推出了首张比特币借记卡,花旗银行则在区块链上测试运行加密货币“花旗币”。
区块链在物联网和物流领域的应用前景
Skuchain 创建了基于区块链的新型供应链解决方案,实现商品流与资金流的同步,同时缓解假货问题。而伦敦的区块链初创企业 Provenance 为企业提供供应链溯源服务,通过在区块链上记录零售供应链上的全流程信息,实现产品材料、原料和产品的起源和历史等信息的检索和追踪,提升供应链上信息的透明度和真实性。
德国一个初创公司 Slock.it 做了一个基于区块链技术的智能锁,将锁连接到互联网,通过区块链上的智能合约对其进行控制。只需通过区块链网络向智能合约账户转账,即可打开智能锁。用在酒店里,客人就能很方便地开门了,这是真正的共享经济!
区块链在公共服务领域的应用前景
西班牙 Lugo 市政府则利用区块链建立了一个公开公正的投票系统。
爱沙尼亚政府与 Bitnation 合作,在区块链上开展政务管辖,通过区块链为居民提供结婚证明、出生证明、商务合同等公证服务。
欧洲能源署则利用区块链使得公民在能源零售市场中发挥更大的作用,能源零售市场的智能化(Micro-Generation Energy Market)使得消费者可以让多余的电量在市场上进行交换和出售,并显著降低电费开支。
区块链在认证、公证领域的应用前景
Bitproof 是一家专门利用区块链技术进行文件验证的公司。区块链初创公司 Bitproof 已经与霍伯顿学校(Holberton School)开展合作,该校宣布将利用比特币区块链技术向学生颁发学历证书,解决学历造假等问题。
区块链在数字版权领域的应用前景 什麼是區塊鏈技術?
例如,Ujo Music 平台借助区块链,建立了音乐版权管理平台新模式,歌曲的创作者与消费者可以建立直接的联系,省去了中间商的费用提成。
区块链在预测市场和保险领域的应用
典型的应用案例 是LenderBot,是 2016 年由区块链企业 Stratumn、德勤与支付服务商 Lemonway 合作推出,它允许人们通过 Facebook Messenger 的聊天功能,注册定制化的微保险产品, 为个人之间交换的高价值物品进行投保,而区块链在贷款合同中代替了第三方角色。
为您发布产品,请点击“阅读原文”
免责声明: 该内容由专栏作者授权发布或转载自其他媒体,目的在于传递更多信息,并不代表本网赞同其观点,本站亦不保证或承诺内容真实性等。如若文章内容侵犯您的权益,请及时联系本站删除。侵权投诉联系: [email protected] !
(转)什么是区块链,一文看懂区块链架构设计(附知识图谱)
Super_PF 于 2018-01-18 16:58:47 发布 7904 收藏 6
(1)C/C++
这两个语言是无法逾越的,任何开发遇到瓶颈,基本上都会找到它们,自然应该排在第一位要介绍的。同时,区块链技术的鼻祖,比特币(协议层)就是用C++语言开发的,而且目前为止,没有比比特币更加成功的区块链产品。所以,无论你使用什么语言开发,在正式进入这个行业的过程中,都应该先研究研究比特币。比特币官方客户端钱包用的Qt,第三方钱包有Python语言开发的,特别是第三方整理的开发库(Api包)很多是Nodejs设计的。比特币的架构,与上面的架构设计基本相同,另外,因为共识算法采用的是工作量证明机制(PoW:Proof of work),还有一些特殊的挖矿的过程。其他竞争币都是直接来自比特币的分支,所以编程语言相同,具体的技术选型和技术实现上可能有所改进,比如:莱特币,使用了其他的加密算法。
(2)Nodejs/Javascript
Nodejs平台强大的网络编程能力,以及js脚本语言的简单快捷,在区块链领域自然少不了它的身影。亿书便是这样一个区块链产品,亿书币是它的协议层,使用了著名的express开发框架,基于http协议开发而成。同时,它采用了授权股权证明机制(DPoS),算法上的改进,让它在处理交易时更加轻量,处理能力大大提升。它提供了强大的协作机制,为数字出版、版权保护提供了便利;扩展了侧链功能,可以基于它开发任何去中心化的应用,从而为专业作者、博客爱好者和开发者提供很多方便。《Nodejs开发加密货币》这本书完整分享了它的源码,从区块链基础概念到代码实现,从基本原理到开发设计思路,都做了比较详细的探索,目前为止,从协议层面深入代码讲解区块链技术实现的书籍极少,这算作一本。
(3)Python
如果是Python语言爱好者,我建议研究研究以太坊(Ethereum)的Python实现。尽管因为The Dao事件闹得沸沸扬扬,但从技术实现的角度来说,仍然值得参考学习。以太坊官方定位为一种开发管理分布式应用的平台,主攻方向就是“智能合约”,并为其定制了一种编程语言Solidity。以太坊的核心是以太坊虚拟机(EVM),允许用户按照自己的意愿创建操作。以太坊给出了Go、Java、Python等多语言的实现。其中以python为基础的实现主要包括三个部分:Pyethapp是客户端部分;pyethereum是核心库,实现了区块链、以太坊模拟机和挖矿等功能;pydevp2p是点对点网络库,实现了节点发现、合约代码传输、加密签名等功能,这三者组合在一起就是完整的区块链实现,后面两个核心库共同组成了协议层。另外,go-ethereum是go语言的完整实现;Ethereum(J) 是纯Java实现,它作为可以嵌入任何Java/Scala项目的库提供。客户端方面,还有Rust、Ruby、Javascript等语言的实现。
(4)Go
在多核时代,Go语言备受喜爱,它可以让你用同步方式轻松实现高并发,特别是在分布式系统、网络编程等领域,应用非常广。所以,在区块链开发领域,也有很多使用Go语言的项目。其中,由linux基金会主导的超级账本(HyperLeger),版本库的名字叫Fabric,就是其中一个。该项目试图为新一代的事务应用创建一种开放的分布式账本标准,支持许可式区块链(这种方式可能无法再现比特币那种强大的网络效应)。Fabric的开发环境建立在VirtualBox虚拟机上,部署环境可以自建网络,也可以直接部署在BlueMix上,部署方式可docker化,支持用Go和JavaScript开发智能合约。它采用PBFT分布式算法,网络编程方面用gRPC来做P2P通讯,使用 Protocol Buffer来序列化要传递的数据结构。在架构设计上,Fabric可能与比特币等区块链产品有所不同,但是上述基本组成部分还是不可或缺的。