摘要:課程概述本課程適合希望開發自己的專有區塊鏈的語言工程師,課程內容如下第一章課程簡介簡單介紹的定位特點以及對于開發者而言與以太坊的區別。課程地址區塊鏈開發詳解
簡介
tendermint是一個開源的完整的區塊鏈實現,可以用于公鏈或聯盟鏈,其官方定位 是面向開發者的區塊鏈共識引擎:
與其他區塊鏈平臺例如以太坊或者EOS相比,tendermint最大的特點是其差異化的定位: 盡管包含了區塊鏈的完整實現,但它卻是以SDK的形式將這些核心功能提供出來,供開發者 方便地定制自己的專有區塊鏈:
tendermint的SDK中包含了構造一個區塊鏈節點旳絕大部分組件,例如加密算法、共識算法、 區塊鏈存儲、RPC接口、P2P通信等等,開發人員只需要根據其應用開發接口 (Application Blockchain Communication Interface)的要求實現自己 的應用即可。
ABCI是開發語言無關的,開發人員可以使用自己喜歡的任何語言來開發基于tendermint的 專用區塊鏈。不過由于tendermint本身是采用go語言開發的,因此用go開發ABCI應用的一個額外好處 就是,你可以把tendermint完整的嵌入自己的應用,干凈利落地交付一個單一的可執行文件。
tendermint的共識算法在技術方面,tendermint引以為傲的是其共識算法 —— 世界上第一個可以應用于公鏈的拜占庭 容錯算法。tendermint曾于2016年國際區塊鏈周獲得最具創新獎,并在Hyperledger的雨燕(Burrow) 等諸多產品中被采納為共識引擎。你可以點擊 這里 查看其應用案例。
tendermint采用的共識機制屬于一種權益證明( Proof Of Stake)算法,一組驗證人 (Validator)代替了礦工(Miner)的角色,依據抵押的權益比例輪流出塊:
由于避免了POW機制,tendermint可以實現很高的交易吞吐量。根據官方的說法,在 合理(理想)的應用數據結構支持下,可以達到42000交易/秒,引文參考 這里。 不過在現實環境中,部署在全球的100個節點進行共識溝通,實際可以達到1000交易/秒。
tendermint同時是拜占庭容錯的(Byzantine Fault Tolerance),因此對于3f+1個 驗證節點組成的區塊鏈,即使有f個節點出現拜占庭錯誤,也可以保證全局正確共識的達成。同時 在極端環境下,tendermint在交易安全與停機風險之間選擇了安全,因此當超過f個驗證節點發生故障時,系統將停止工作。
什么是拜占庭錯誤?簡單的說就是任何錯誤:既包括節點宕機、也包括惡意節點的欺騙和攻擊。
tendermint共識機制的另一個特點就是其共識的最終確定性:一旦共識達成就是真的達成, 而不是像比特幣或以太坊的共識是一種概率性質的確定性,還有可能在將來某個時刻失效。 因此在tendermint中不會出現區塊鏈分叉的情況。
課程地址:
http://xc.hubwiz.com/course/5bdec63ac02e6b6a59171df3
tendermint的定位決定了在最終交付的節點軟件分層中,應用程序占有相當部分的分量。 讓我們通過與以太坊的對比來更好地理解這一點:
在上圖中,tendermint結構中的abci應用和以太坊結構中的智能合約,都是由用戶代碼實現的。 顯然,ABCI應用大致與EVM+合約的組合相匹配。
在以太坊中,節點是一個整體,開發者提供的智能合約則運行在受限的虛擬機環境中;而在 tendermint中,并不存在虛擬機這一層,應用程序是一個標準的操作系統進程,不受任何 的限制與約束 —— 聽起來這很危險,但當你考慮下使用tendermint的目的是構建專有的區塊鏈 時,這種靈活性反而更有優勢了。
事實上,tendermint留下的應用層空間如此之大,以至于你完全可以在ABCI應用中實現一個 EVM,然后提供solidity合約開發能力,這就是超級賬本的 Burrow 做的事情。
課程概述本課程適合希望開發自己的專有區塊鏈的go語言工程師,課程內容如下:
第一章 課程簡介
簡單介紹tendermint的定位、特點以及對于開發者而言tendermint與以太坊的區別。
第二章 初識tendermint
tendermint本身是一個完整的區塊鏈實現,本章介紹tendermint的主要組成部分,包括 節點軟件的使用、最小ABCI應用編寫以及RPC API開發接口。
第三章 應用開發模型
tendermint是一個標準的狀態機復制模型的實現,因此基于tendermint的應用就是一個 標準的分布式狀態機。本章通過一個分布式計數器的開發來學習基于ABCI接口的應用開發。
第四章 去中心化身份識別機制
本章介紹如何基于非對稱加密技術實現去中心化的身份識別。課程的內容包括非對稱密鑰 的生成、身份驗證原理與實現、哈希地址計算等。
第五章 案例:代幣發行
代幣是區塊鏈的一種典型應用。在這一章里我們通過發行代幣來進一步深入學習基于tendermint 的狀態機應用的設計與實現。
第六章 代幣案例:使用默克爾樹
merkle樹是區塊鏈中經常使用的一種數據結構,在這一章我們將學習其原理、用途與使用方法, 并使用它增強代幣案例的功能。
第七章 代幣案例:使用多版本狀態庫
在區塊鏈的每個高度都對應著應用狀態的特定歷史快照。本章介紹如何使用tendermint的 多版本狀態庫iavl來實現應用狀態的管理。
第八章 多節點組網
本章介紹如何進行多個tendermint節點/應用旳組網。
課程地址:tendermint區塊鏈開發詳解
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/24374.html
摘要:以太坊背后的主要人物是。以太坊通過在區塊鏈上引入智能合約,徹底改變了加密世界。以太坊使用名為以太坊虛擬機的虛擬機執行其智能合約。以太坊最終將利用協議轉向權益證明。截至目前,以太坊在可擴展性方面都失敗了。 不同的區塊鏈智能合約和區塊鏈技術現在風靡一時。越來越多的人出于某種原因試圖進入這個神奇的世界。如果你是這項技術的新手并正在尋找基于區塊鏈的開發平臺的快速入門,那么本指南非常適合你。我們...
摘要:是企業與區塊鏈相遇的地方。的框架旨在成為開發區塊鏈解決方案的支柱。以太坊,主要是針對工程師使用進行區塊鏈以太坊開發的詳解。 如果你想將區塊鏈合并到一個Java項目中,現在我們來看看就是這個細分領域中三個最大的OSS玩家。 好的伙計們,我們都聽說過比特幣,以太坊或其他加密貨幣,其中有一些時髦的名字圍繞著我們常見的新聞,但我們作為Java開發人員知道如何輕松地與這些區塊鏈技術進行交互嗎?以...
摘要:我們目前正處于一個新興的區塊鏈開發行業中。,一種在以太坊開發人員中流行的新的簡單編程語言,因為它是用于開發以太坊智能合約的語言。它是全球至少萬開發人員使用的世界上最流行的編程語言之一。以太坊,主要是針對工程師使用進行區塊鏈以太坊開發的詳解。 我們目前正處于一個新興的區塊鏈開發行業中。區塊鏈技術處于初期階段,然而這種顛覆性技術已經成功地風靡全球,并且最近經歷了一場與眾不同的繁榮。由于許多...
摘要:在新智能合約的構造函數中,將引用我們的合約工廠的地址。以太坊,主要是針對工程師使用進行區塊鏈以太坊開發的詳解。以太坊入門教程,主要介紹智能合約與應用開發,適合入門。這里是原文用工廠模式管理多個智能合約 我們寫了一份小的計算合約作為Hello World。如果我們可以創建一個允許用戶創建自己的計數器的合約怎么辦? showImg(https://segmentfault.com/img/...
摘要:你首先編寫基本智能合約并告知你的新智能合約將從基礎合約繼承。這些函數和狀態變量只能在內部訪問即從當前合約或從中派生的合約中,而其他情況不使用它。私有函數和狀態變量僅對定義它們的智能合約可見,而不是在派生合約中可見。這里是原文語言開發中的繼承 我們已經探索了很多主題,在編寫智能合約時我們發現經常使用相同的模式:例如,智能合約具有在構造函數中設置的所有者,然后生成修改器以便僅讓所有者使用一...
閱讀 3258·2023-04-25 22:47
閱讀 3771·2021-10-11 10:59
閱讀 2304·2021-09-07 10:12
閱讀 4252·2021-08-11 11:15
閱讀 3434·2019-08-30 13:15
閱讀 1753·2019-08-30 13:00
閱讀 973·2019-08-29 14:02
閱讀 1688·2019-08-26 13:57