基于COSMOS-SDK構(gòu)建自己的區(qū)塊鏈項目

首先自我介紹一下。我是Ping.Pub的梁平侍芝,我們是一家軟件公司,主營業(yè)務(wù)是軟件開發(fā)埋同,曾設(shè)計開發(fā)超百億交易規(guī)模的大型電商系統(tǒng)州叠,金融項目;去年開始探索區(qū)塊鏈技術(shù)凶赁,一接觸Cosmos就喜歡上了這個項目咧栗。我們參加了Cosmos官方舉辦的對抗黑客松比賽《Game of Steak》,是為數(shù)不多地獲勝的中國團(tuán)隊之一虱肄。我們也是Cosmos Hub致板, IRISnet Hub的創(chuàng)世節(jié)點(diǎn)。我們對Cosmos的技術(shù)架構(gòu)比較了解咏窿,但是我們接觸區(qū)塊鏈的時間比較短斟或,經(jīng)驗比較少,如果有些地方說的不對歡迎大家批評指正集嵌。

首先萝挤,Cosmos是一個明星跨鏈的項目御毅,歡迎大家訪問 https://cosmos.network 獲取更多信息,我們今天的分享主要專注在技術(shù)層面怜珍。在Cosmos體系中主要兩個非常重要的定義:hub 和 zone, 目前cosmos主網(wǎng)端蛆,IRISnet Hub就是hub, 它主要定位在跨鏈數(shù)據(jù)交換酥泛。zone是實(shí)現(xiàn)比較專屬的功能的鏈:例如用來連接以太坊的zone叫ethermint今豆。而支撐Hub和zone的底層技術(shù)就是Cosmos SDK。?

Cosmos SDK是一套完整的區(qū)塊鏈技術(shù)開發(fā)框架柔袁,主要有以下特點(diǎn):

1.POS共識呆躲,Cosmos SDK采用的是由cosmos自己團(tuán)隊開發(fā)的拜占庭容錯(BFT)共識引擎-tendermint. 這些工作Cosmos SDK已經(jīng)都集成好了,項目開發(fā)方只需要根據(jù)項目要求設(shè)定自己的權(quán)益分配捶索,并將權(quán)益分配加入到genesis即可歼秽。權(quán)益分配對應(yīng)著投票權(quán),因此情组,需要避免出現(xiàn)擁有超過1/3以上投票權(quán)的節(jié)點(diǎn)出現(xiàn)燥筷。因為出現(xiàn)1/3以上投票權(quán)的節(jié)點(diǎn)如果宕機(jī)就會導(dǎo)致cosmos共識失敗,鏈就會停止院崇。

2.秒級出塊肆氓,目前Cosmos Hub擁有超過100個認(rèn)證人節(jié)點(diǎn),且認(rèn)證人節(jié)點(diǎn)分布在全球五大洲底瓣,目前平均出塊速度為6秒左右谢揪。前不久幣安公布的擁有7個節(jié)點(diǎn)的幣安鏈的平均出塊時間為1s。Cosmos SDK支持超過1000+個以上認(rèn)證節(jié)點(diǎn)捐凭,支持秒級出塊拨扶。當(dāng)然實(shí)際數(shù)據(jù)可能會受節(jié)點(diǎn)的物理位置,節(jié)點(diǎn)數(shù)量,網(wǎng)絡(luò)質(zhì)量等因素的影響。

3.高TPS掘剪,Cosmos-SDK應(yīng)該是目前主網(wǎng)上線后TPS最高的開源SDK, 根據(jù)官方的實(shí)際公布的數(shù)據(jù)可以到1000+筆/秒。這個數(shù)字已經(jīng)可以滿足絕大多數(shù)場景的需求匹颤。而且,和另一個明星項目polkadot不同是的托猩,Cosmos采用的是實(shí)時finalize印蓖,即:出塊就確認(rèn),而不必等到若干個塊后再確認(rèn)京腥,大大提升了交易的實(shí)際效率赦肃。如果你認(rèn)為這個性能還達(dá)不到你的要求的話,那可以采用多條鏈來分解你的壓力。我想這個是Cosmos最大的亮點(diǎn)他宛。

4.支持跨鏈操作船侧,在傳統(tǒng)的IT解決方案里,兼容性和可擴(kuò)展性是非常重要的指標(biāo)堕汞,Cosmos SDK將內(nèi)置跨鏈操作模塊-IBC勺爱,基于IBC的實(shí)現(xiàn)晃琳,你可以輕松的連接BTC, ETH讯检,Cosmos Hub,IRIS Hub卫旱,以及其他基于Cosmos SDK開發(fā)的所有的區(qū)塊鏈人灼,甚至可以連接substrate開發(fā)的區(qū)塊鏈。當(dāng)然這個目前都還沒有實(shí)現(xiàn)顾翼,我預(yù)計在今年年底就可以實(shí)現(xiàn)部分投放,到明年應(yīng)該就會非常成熟。

第二适贸,如何使用Cosmos SDK構(gòu)建一個自己的區(qū)塊鏈項目灸芳。Cosmos SDK經(jīng)過兩個年的開發(fā),已經(jīng)完成了cosmos hub主網(wǎng)上線拜姿,代碼已經(jīng)經(jīng)過充分的驗證并且已經(jīng)運(yùn)行的很穩(wěn)定烙样;因此選擇Cosmos SDK可以少踩很多坑。大家都是圈中的大牛蕊肥,所以今天我就不再者分享具體的代碼谒获,最新的源碼都可以直接在github上直接下載。地址為:https://github.com/cosmos/cosmos-sdk壁却。我簡單從以下幾個方面談?wù)勎业囊恍┛捶ǎ?/p>

1批狱,應(yīng)用場景,Cosmos SDK是一個通用的區(qū)塊鏈開發(fā)框架展东,你可以用它來開發(fā)公鏈赔硫,聯(lián)盟鏈,私有鏈盐肃。具體可以分為兩種情況:不需要定制模塊和需要定制模塊卦停。不需要定制模塊的情況主要針對的是發(fā)行數(shù)字資產(chǎn)類的項目,cosmos-hub的所有功能你都可以直接拿來用恼蓬。這類型的項目可以參看《部署你自己測試網(wǎng)絡(luò)》的教程:https://cosmos.network/docs/cosmos-hub/deploy-testnet.html惊完,項目方只需要5分鐘即可完成開發(fā)自己的區(qū)塊鏈的所有工作。需要定制模塊開發(fā)項目大家可以具體看看這個教程《域名服務(wù)》:https://cosmos.network/docs/tutorial/处硬,這個教程還是非常簡單的小槐。開發(fā)者只需專注在開發(fā)自己module即可,總體來說比較容易。

2凿跳,SDK架構(gòu)剖析:Cosmos SDK主要有3部分組成:1件豌,總體部分,app.go 和 go.mod 這些文件位于項目的根目錄控嗜。主要用來集成項目各個部件和管理項目依賴茧彤。2,命令行部分,位于./cmd/疆栏,通常分為服務(wù)進(jìn)程曾掂,以"d"結(jié)尾(如:gaiad, nsd等等)和命令行工具,以“cli”結(jié)尾(如:gaiacli, iriscli等等)壁顶,這部分代碼建議大家去看看著名的Viper項目珠洗,能夠幫助大家快速理解,Docker, Kubernetes等明星項目都是用的這個框架若专。 3.模塊部分许蓖,通常位于./x/MyModuleName/, 整個Cosmos SDK都是基于模塊化設(shè)計的。 你可以添加自己的模塊调衰,你也可以引用和者剔除任何cosmos-sdk的原生模塊膊爪。

3,模塊的構(gòu)成:每一個模塊主要包括一下幾個部分:1嚎莉,Types, 定義你的數(shù)據(jù)結(jié)構(gòu)米酬。2,Keeper定義數(shù)據(jù)庫交互萝喘,里面通常會實(shí)現(xiàn)get, set, iterator之類的數(shù)據(jù)庫操作方法淮逻。3,Msg & Handler阁簸,主要用來處理共識爬早。每一個Msg會對應(yīng)一個Handler。 需要強(qiáng)調(diào)的是所有的Hander調(diào)用前都會執(zhí)行一個叫anteHander的前置處理器启妹,來做一些通用的工作筛严,如:安全校驗。4饶米,Codec 編/解碼器桨啃,為了提升P2P層網(wǎng)絡(luò)的性能,cosmos要求所有的自定義消息體都需要有一個編/解碼器檬输,來執(zhí)行序列化和反序列化的操作照瘾。5,Queriers, 查詢器丧慈,提供面向服務(wù)的查詢接口析命。

4主卫,Cosmos中的智能合約:當(dāng)查看官方文檔的時候,你根本就找不到智能合約的字眼鹃愤。Cosmos真的能實(shí)現(xiàn)智能合約嗎簇搅?答案肯定是Yes. 整個Cosmos SDK就是一組由智能合約組成分布式系統(tǒng)。其中每一個module都可以看作是一個智能合約软吐,包括官方的module也是一樣瘩将。所以,你可以根據(jù)你的場景設(shè)計一個你自己的module實(shí)現(xiàn)你自己的cosmos智能合約凹耙。如果你覺這個還沒有辦法滿足你的需求姿现,可以用IRISnet的中 iService, 在這里你可以完成服務(wù)的創(chuàng)建,部署使兔,調(diào)用建钥,銷毀等全生命周期的管理藤韵。當(dāng)然將來會支持真正的智能合約虐沥。目前在ethermint項目中已經(jīng)實(shí)現(xiàn)了。

第三泽艘,安全欲险, 安全問題總是區(qū)塊鏈項目繞不開的話題。這里面可以討論問題很多匹涮,我挑重要的幾個方面來分享一下我們的經(jīng)驗天试。

1. DDOS 攻擊,首先DDOS攻擊是一個基本無解的命題然低。因此喜每,有以下建議供大家參考:a. 部署服務(wù)器到帶有DDOS防護(hù)的機(jī)房;b.添加多個哨兵節(jié)點(diǎn)雳攘,關(guān)閉認(rèn)證人節(jié)點(diǎn)和其他非哨兵節(jié)點(diǎn)的通信带兜;c.不要暴露validator節(jié)點(diǎn)的公網(wǎng)IP,d. 確保validator節(jié)點(diǎn)通過私有網(wǎng)絡(luò)與其他認(rèn)證人節(jié)點(diǎn)相連吨灭。

2. 51%攻擊刚照,在設(shè)計和規(guī)劃的時候需要盡量將投票權(quán)分散到多個節(jié)點(diǎn)去,防止出現(xiàn)投票權(quán)大于1/3節(jié)點(diǎn)出現(xiàn)喧兄,更不能有超過51%的節(jié)點(diǎn)无畔。

3. Double Sign. 這個問題在Cosmos里面會受到非常重的處罰。一旦發(fā)現(xiàn)節(jié)點(diǎn)有double sign的行為吠冤,就會予以5%的slashing浑彰,并且將進(jìn)入墓碑狀態(tài),也就是說將失去認(rèn)證人資格拯辙。

4. Uptime郭变,在線時長。Cosmos允許節(jié)點(diǎn)短暫的停機(jī)來處理類似升級更新的操作,genesis里面會定義一個窗口期饵较,如果這個超過這個窗口期就會受到處罰拍嵌。我們目前運(yùn)行的Cosmos 節(jié)點(diǎn)沒有一個丟塊,我們也是IRISnet hub在高度到達(dá)100萬后唯一一個沒有丟塊的節(jié)點(diǎn)循诉。

今天簡單分享就先到這里横辆,后面有機(jī)會再和大家做更進(jìn)一步的分享。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末茄猫,一起剝皮案震驚了整個濱河市狈蚤,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌划纽,老刑警劉巖脆侮,帶你破解...
    沈念sama閱讀 218,755評論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異勇劣,居然都是意外死亡靖避,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,305評論 3 395
  • 文/潘曉璐 我一進(jìn)店門比默,熙熙樓的掌柜王于貴愁眉苦臉地迎上來幻捏,“玉大人,你說我怎么就攤上這事命咐〈劬牛” “怎么了?”我有些...
    開封第一講書人閱讀 165,138評論 0 355
  • 文/不壞的土叔 我叫張陵醋奠,是天一觀的道長榛臼。 經(jīng)常有香客問我,道長窜司,這世上最難降的妖魔是什么沛善? 我笑而不...
    開封第一講書人閱讀 58,791評論 1 295
  • 正文 為了忘掉前任,我火速辦了婚禮例证,結(jié)果婚禮上路呜,老公的妹妹穿的比我還像新娘。我一直安慰自己织咧,他們只是感情好胀葱,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,794評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著笙蒙,像睡著了一般抵屿。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上捅位,一...
    開封第一講書人閱讀 51,631評論 1 305
  • 那天轧葛,我揣著相機(jī)與錄音搂抒,去河邊找鬼。 笑死尿扯,一個胖子當(dāng)著我的面吹牛求晶,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播衷笋,決...
    沈念sama閱讀 40,362評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼芳杏,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了辟宗?” 一聲冷哼從身側(cè)響起爵赵,我...
    開封第一講書人閱讀 39,264評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎泊脐,沒想到半個月后空幻,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,724評論 1 315
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡容客,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,900評論 3 336
  • 正文 我和宋清朗相戀三年秕铛,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片耘柱。...
    茶點(diǎn)故事閱讀 40,040評論 1 350
  • 序言:一個原本活蹦亂跳的男人離奇死亡如捅,死狀恐怖棍现,靈堂內(nèi)的尸體忽然破棺而出调煎,到底是詐尸還是另有隱情,我是刑警寧澤己肮,帶...
    沈念sama閱讀 35,742評論 5 346
  • 正文 年R本政府宣布士袄,位于F島的核電站,受9級特大地震影響谎僻,放射性物質(zhì)發(fā)生泄漏娄柳。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,364評論 3 330
  • 文/蒙蒙 一艘绍、第九天 我趴在偏房一處隱蔽的房頂上張望赤拒。 院中可真熱鬧,春花似錦诱鞠、人聲如沸挎挖。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,944評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽蕉朵。三九已至,卻和暖如春阳掐,著一層夾襖步出監(jiān)牢的瞬間始衅,已是汗流浹背冷蚂。 一陣腳步聲響...
    開封第一講書人閱讀 33,060評論 1 270
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留汛闸,地道東北人蝙茶。 一個月前我還...
    沈念sama閱讀 48,247評論 3 371
  • 正文 我出身青樓,卻偏偏與公主長得像诸老,于是被迫代替她去往敵國和親尸闸。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,979評論 2 355

推薦閱讀更多精彩內(nèi)容

  • 有幾位朋友知道,我最近在堅持早起打卡畸肆。和往常不一樣的是宦芦,我沒有提前寫上要堅持21天養(yǎng)成一個習(xí)慣,或者堅持100天迎...
    輕松愉快的心聲閱讀 389評論 0 0
  • 1.控制臺輸入年齡轴脐,根據(jù)年齡輸出不同的提示(例如:老年人调卑,青壯年,成年人大咱,未成年恬涧,兒童) 2.計算5的階乘5!的結(jié)...
    鋼镚嘎嘣脆閱讀 153評論 0 0
  • 波谷下面的下面 還有波谷 當(dāng)你選擇時 它開始走向波峰 你的投機(jī)再一次落空 你的目光投向遠(yuǎn)方 在時間的長河里打撈財富...
    楚漢留香閱讀 259評論 0 1
  • “ 蟬鳴伴初夏,我想遇見你” 我時巢杲恚回想童年的夏天是什么樣子的溯捆? 應(yīng)該是吱呀吱呀響的大風(fēng)扇,是藍(lán)天下院子里晾衣繩上...
    Super霏微閱讀 954評論 2 4