比特幣交易所 比特幣交易所
Ctrl+D 比特幣交易所
ads
首頁 > MANA > Info

一文了解Substrate與智能合約的異同_RAT

Author:

Time:1900/1/1 0:00:00

原創:王大錘搬運:PolkaBase這個系列面向的是智能合約開發者,或者是在智能合約和自己定制區塊鏈之間搖擺不定的從業者。希望讀完這個系列之后,可以幫助大家更好地了解Substrate與智能合約的異同,面對不同的業務需求時,可以更加高效進行技術選型。同時,也希望可以給大家提供一些有趣的視角來看待Substrate,歡迎任何反饋。什么是Substrate?

簡單來說,Substrate是一個構造區塊鏈的“輪子”。在Substrate之前,如果大家想要快速構造一條鏈,選擇是非常少,而且可定制化程度也很低。基本上公鏈會forkBitcoin,聯盟鏈會直接使用Hyperledger。Substrate是一個開箱即用的構造區塊鏈的SDK,從簡單的智能合約,到中層的鏈上邏輯,或者底層的p2p網絡、數據庫、共識,都可以自由定制。關于Substrate入門介紹文章已經很多了,這里就不贅述了。想入門的同學可以看看下面的資料:Substrate初次亮相視頻15分鐘速成搭鏈什么是Substrate-fromboka.network什么是Substrate-fromEthfans想要了解更多的童鞋也可以自行google。什么是智能合約

智能合約是部署在區塊鏈之上的一段代碼,可以按照合約里預先設定的不可篡改的規則執行功能。因目前主流的智能合約指的都是以太坊上的智能合約,下文中的智能合約指的都是以太坊網絡中的智能合約。SubstrateVS智能合約

谷歌Chrome瀏覽器發布針對零日漏洞的修復版本:6月7日消息,在6月5日的Chrome博客公告中,谷歌已確認其Chrome網絡瀏覽器中的零日漏洞正在被積極利用,并發布了緊急安全更新作為回應。谷歌稱,桌面應用程序已經更新到Mac和Linux的114.0.5735.106版本以及Windows的114.0.5735.110的版本,所有這些都將“在未來幾天/幾周內推出”。

公告稱此次更新中包含兩個安全修復程序,但實際上只有一個被詳細說明:CVE-2023-3079。CVE-2023-3079是V8 JavaScript引擎中的類型混淆漏洞,且是谷歌Chrome 2023年的第三個零日漏洞。類型混淆漏洞會帶來重大風險,使攻擊者能夠利用內存對象處理中的弱點在目標機器上執行任意代碼,強烈建議用戶及時更新瀏覽器以減輕潛在風險。[2023/6/7 21:21:31]

在這里,會從最宏觀的角度去理解Substrate和智能合約的異同,不會涉及到具體的功能性demo和細節。更加詳細的主題我們會在后續的文章中提及。1.存儲類型1.1智能合約和Substrate都有的boolintegersaddress(`accountIdinSubtrate)arraymapenum1.2智能合約(Solidity)中獨有的string:雖然存在string類型,但是沒有完善的string處理方法1.3Substrate中特有的linked_map:可以遍歷的mapper_things:可以認為定點數double_map:雙鍵mapenum:這里單獨列出來,是因為solidity中的enum只是數字的枚舉,而substrate中的enum包含類型信息1.4單獨說明Substrate中沒有stringSubstrate中沒有string類型,與string對應的,只有Vec<u8>。這就要涉及到Substrate或者是區塊鏈的設計哲學。鏈上存儲是很寶貴的,并且string和Vec<u8>是相互可轉換的,因此Substrate決定不用string.Substrate中的enumSolidity和Substrate中都有enum,但是兩者存在的意義對整個系統來說是完全不同的。Solidity中的enum更像是一個數字的文字化表述,例如下面的定義:

2022年元宇宙概念股年終匯總:福石控股領漲60.37% 歌爾股份領跌68.72%:金色財經報道,12月30日,2022年A股收官,截止今日,A股共有124只元宇宙概念股。從2022年整年的表現來看,共有21只個股出現不同程度的漲幅,103只股票處于下跌狀態。其中福石控股以全年累計漲幅60.37%居于榜首,歌爾股份以跌幅68.72%位列跌幅榜之首。此外從前三季度的業績來看,宣亞國際以352.35%增長位列業績增長榜之首,深桑達A以-10860.04%居于業績增長之末尾。[2022/12/31 22:18:12]

這里的Red,Yellow和Green其實只是0,1,2而已。而Substrate中的enumhttps://doc.rust-lang.org/book/ch06-01-defining-an-enum.html則可以攜帶類型信息,功能強大。例如Substrate中的Error,

Substrate中的linked_map與Solidity中的map寫智能合約的最大的痛之一就是,很簡單的存儲邏輯卻需要多種類型的組合使用。例如以下場景,想要記錄一個班級中所有的學生信息,在智能合約中,需要如下聲明:

審計公司Prager Metis官網刪除FTX US相關信息:11月12日消息,根據CoinDesk獲得的一份財務文件,此前與FTX Trading LLC合作的審計公司Prager Metis報告稱,公司在2021年的收入為10億美元。

Prager Metis在其網站上列出24個運營地點,包括Decentraland的“虛擬元宇宙”,并贊助Decentraland Babydolls活動。Prager Metis網站6月發布的一個頁面顯示,它也“自豪地支持FTX US”,但在發稿時該頁面已被刪除。

然而CoinDesk查看文件發現,FTX US 2020年和2021年的審計由Armanino公司進行。(CoinDesk)[2022/11/12 12:54:30]

并且對array進行元素刪除并且是一件O(n)的操作,這意味著我們無法支付的起昂貴的gas費用,并且涉及到多個存儲的更改,稍不留神可能就會出現邏輯錯誤。Substrate中提供了多種map,包括map,linked_map,double_map。其中linked_map即是對map提供了iterate的功能。這使得存儲和邏輯變得更加貼近真實。想要深入學習Substrate中存儲類型的童鞋,請移步Substratec存儲類型概覽https://zhuanlan.zhihu.com/p/1035109592.更加深度的定制作為一個前智能合約er,深知dapp的痛:gas費用太高,用戶玩不起;出塊時間長,用戶等不起;一般dapp都會有自己的token,但是用戶必須現有eth才可以玩,這對不習慣區塊鏈的用戶來說是一大門檻;新用戶經常弄丟私鑰,資產都沒了;...這當然不是智能合約的錯。站在昨天,智能合約是劃時代的產物;站在現在,智能合約的不足需要新的技術來彌補。有些dapp開發者選擇不在eth公鏈上部署dapp,而是自己使用eth開發私鏈來部署自己的dapp,確實可以解決上述的部分問題,但是類似私鑰、多種token對用戶門檻的提高,仍然是無法避免的。而Substrate作為區塊鏈開發的“輪子”,因為優秀的框架設計和抽象分層,給開發者提供了多階定制選擇:

上海十四五規劃:布局分布式存儲、DNS和加密通信等Web3關鍵技術:7月13日消息,上海市人民政府辦公廳印發《上海市數字經濟發展十四五規劃》,規劃提出,上海將在十四五期間應圍繞數字新產業、數據新要素、數字新基建、智能新終端等重點領域,加強數據、技術、企業、空間載體等關鍵要素協同聯動,加快進行數字經濟發展布局。

提升數字新基建應加強網絡新型基礎設施部署、技術研發和應用創新,打造面向未來的網絡生態。超前布局新一代網絡形態,前沿探索多平臺 OpenID(數字身份識別框架)、分布式數據存儲、去中心化 DNS(域名解析系統)、端到端加密通信等 Web3.0(第三代萬維網)關鍵技術,加快突破分布式網絡核心技術。[2022/7/13 2:10:03]

Substrate分層這里簡單介紹一下Substrate的分層,想要深入了解的童鞋可以自己搜索一下,SubstrateNode:節點層。在這一層基本上不做什么改動。就是編譯一下就可以運行一個節點了。如果想要做一些改動,就重寫一下創世配置文件就好了。重新定義鏈中的參數,但是無法修改鏈的運行邏輯。SubstrateFRAME:runtime層。基本上絕大部分的定制化都發生在這一層。在這一層大家可以做的事情很多,概括起來就是修改區塊鏈的運行邏輯。比如轉賬、治理、鏈上升級邏輯、staking等都發生在這一層。是智能合約開發者最需要關注的一部分。SubstrateCore:核心層。整個FRAME/runtime層在Core面前都可以被忽略。可以用任何語言從0開始搭建一個runtime,只要它最終可以被編譯成WebAssembly.這一層主要包括區塊鏈的一些底層組件,包括共識、數據庫、p2p網絡等。對于智能合約開發者而言,我們把大部分目光放在FRAME層就可以了。在這一層中,大家可以實現任何可以用智能合約實現的功能,以及用智能合約辦不到的事情。比如:自定義tokensystem,除了轉賬,還實現鏈邏輯層面上的鎖倉、自定義釋放規則等;自定義區塊間隔時間和手續費:這里,所有原先區塊鏈的出快慢、手續費高的煩惱都可以丟掉,開發者可以自定義出塊時長,以及操作手續費多少;實現鏈邏輯的整體升級;實現鏈的治理;實現多種賬戶支持,例如在用戶丟失私鑰的情況下,如果保證用戶的資產不受損失;....所有對區塊鏈操作門檻、用戶友好、響應速度的抱怨,都可以在runtime層通過巧妙地設計來化解。接下來會詳細聊到其中的一些部分。3.不用重復“造輪子”solidity智能合約開發者,還有一層痛苦就是,需要不停地ctrl+C和ctrl+V。因為solidity是獨立于現有編程語言系統的,沒有任何可以直接調用的依賴;solidity里自帶的library,與其說是library,更像是一段“不配擁有地址的”代碼引用。即使有import,前提也是依賴必須自己寫。哪怕復制粘貼。這使得大家在寫solidity代碼的時候,無法直接找到現有輪子,然后下載引入;而是復制粘貼+改寫,某種程度上,分散了dapp開發者的注意力,進一步阻礙了dapp的生態進步。畢竟,除了注意復雜的業務邏輯和防不勝防的安全漏洞之外,還要自己寫輪子。對此dapp開發者有一段心酸地自嘲,“只要能用solidity寫出log(n)就足以創建一個項目了”。Substrate的FRAME,目前parity自己使用Rust語言進行開發,但任何可以編譯成WebAssembly的語言都可以用來寫FRAME。終于,開發區塊鏈邏輯也可以像正常寫程序一樣正常進行了。這里舉個例子,比如著名的BTC-Relay項目,實現了BTC->ETH的跨鏈,方法是用solidity在智能合約中實現了一個BTC的SPV,其中最關鍵的一步就是驗證比特幣網絡中的交易的有效性。驗證交易有效性在solidity中的實現,也得益于solidity中提供的precompile的hashfunction和在BTC中使用的一樣(SHA256),否則可以想見,這樣著名的項目,可能就不會出現。所以,自由地使用各種現有的基礎設施,不僅幫助開發者節省時間和精力,更是鼓勵整個應用生態層層推進,向水更深、更未知的方向去探索。如果說之前dapp開發者是帶著鐐銬在跳舞,那現在substrate就是在幫助他們卸下枷鎖,更自由地舞蹈。4.自動執行ETH是沒有延后執行或者自動執行功能的,所有的交易必須手動觸發。有一些區塊鏈平臺已經實現了延后執行的功能,但是不能精準控制執行的時間和條件。在Substrate中有一個很棒的自定義功能,on_initialize和on_finalize兩個功能會在validator構造區塊的開始和結束時自動執行,也就是如果有一些很重要的功能,需要根據是否達到時間點或者條件閾值而觸發時,這是一個不錯的選擇。不建議大規模使用,因為如果需要消耗太多算力的話,會影響到validator的打包出塊5.Off-chainworker在寫智能合約時,如果想要獲取鏈下數據比如隨機數,第一可以自己手動寫進去,這樣缺乏公信力;或者也可以去請求oracle服務,貴且數據源選擇不多。Substrate有一個功能叫做off-chainworker,用來執行一些計算密集并且計算周期長的操作。例如在獲取鏈下數據時,可以把http請求操作寫在offchainworker中,可以在runtime中被觸發執行,獲取鏈下數據并在請求成功之后把結果返回給鏈上進行相關計算操作。這不僅給了dapp開發者帶來了很多便利,例如隨機數請求;更給區塊鏈開發者帶來了全新的想象空間。比如在聯盟鏈領域,之前通常的做法就是往左走區塊鏈架構,往右走傳統存儲服務,因為區塊鏈天然和鏈下世界隔離的特點,好像很難把兩件事情融合在一起。有了off-chainworker,是不是可以發現一些新的交叉地帶?請大家此處放飛想象力。6.相似點說了這么多不同,個人感覺,在開發Substrateruntime時,和開發智能合約在思路上,還是很類似的。無論寫智能合約還是runtime,首先都會進行填空題操作:以上部分在Solidity中直接按照寫代碼的方式聲明變量和方法就可以了,在Susbtrate中則是在相應的宏內聲明,詳見上表。所以對于智能合約開發者來說,所需要的只是學習Rust相關的語法,在邏輯構造環節,無縫遷移。Substrateruntime相關資料,請參考:SubstrateRuntime7.安全當然Substrate也不是全都是好處,最大的缺點,就是上手開發確實比智能合約要難。這里的難不僅體現在Rust語法上,還體現在Substrateruntime中的方法不像智能合約一樣可以原子調用。即在智能合約中,如果其中一個邏輯失敗,那么整個交易執行失敗,所有存儲更改全部回滾。但是在Substrate中,即使一筆交易在某一處邏輯判斷失敗,但是在這之前的執行,還是會發生。所以強烈提醒Substrateruntime開發者在開發runtime時,一定要Verifyfirst,WriteLast。總結

非洲跨境加密轉賬應用EverSend擬融資1500-2000萬美元:金色財經報道,據bitcoinke消息,總部位于非洲烏干達的跨境加密轉賬應用EverSend正計劃從投資者募集1500-2000萬美元資金,以支持其業務拓展到肯尼亞、加納、尼日利亞和盧旺達等國。Eversend是一款提供加密貨幣匯款服務的初創公司,其服務價格比傳統金融公司和電匯便宜7倍,此外Eversend 還推出了 B2B 加密支付應用程序,使企業能夠接受加密貨幣作為支付方式,企業用戶可以接入自己平臺的 API,繼而更便捷地持有、支付、收集和轉換加密貨幣。[2022/6/7 4:07:51]

作為系列開篇,簡單地總結一下Substrate和合約開發的異同。在接下來的系列文章中,會從具體的例子觸發,希望可以幫助大家在實操層面,感受到Substrate開發的自由。歡迎任何反饋和問題。

Tags:STRTRARATTRATBlock Farming IndustrySTRAKSSociety of Galactic Explorationstratos幣挖礦

MANA
在印度最高法院判決后,加密移動應用在印度興起_OIN

編者按:本文來自Cointelegraph中文,作者:FELIPEERAZO,Odaily星球日報經授權轉載.

1900/1/1 0:00:00
通過yield farming策略,可以在DeFi上賺取年化100%的利潤?_FAR

編者按:本文來自巴比特資訊,作者:TheDefiant,翻譯:Wendy,星球日報經授權發布。在行情好的時候,yieldfarmers可以通過一些很受歡迎的穩定幣賺取年化高達100%的利潤.

1900/1/1 0:00:00
加密貨幣如何影響外匯交易的基礎設施?_COM

編者按:本文來自Deribit德瑞的交易課,星球日報經授權發布。2020年1月,全球外匯日均交易額為6.6萬億美元,而加密貨幣交易總額僅為2,000億美元.

1900/1/1 0:00:00
下半年不應該錯過的4大風口:ETH2.0、波卡、存儲、DeFi_EFI

編者按:本文來自白話區塊鏈,作者:五火球教主,Odaily星球日報經授權轉載。ETH2.0很不幸的是,在近期「Hello,ETH2.0」AMA上,ETH2.0再次跳票.

1900/1/1 0:00:00
中央銀行數字貨幣的總體框架概覽_區塊鏈

編者按:本文來自區塊鏈大本營,作者:龐宇雄,Odaily星球日報經授權轉載。區塊鏈技術的提出對降低社會信用成本、改善社會信用環境有重要意義.

1900/1/1 0:00:00
通過DeFi治理賺錢的群體,一文了解協議家的秘密_EFI

編者按:本文來自巴比特資訊,作者:CooperTurley,編譯:隔夜的粥,星球日報經授權發布.

1900/1/1 0:00:00
ads