2020年10月20日,密碼極客發起了第一期。我們非常榮幸邀請到了Parity亞洲區技術總監賈瑤琪博士做客密碼極客大咖直播間,為大家講解《如何基于波卡開發區塊鏈項目》。
1、在波卡上如何開發區塊鏈系統?
大家作為不管是開發者或者是區塊鏈從業人員,應該都能感覺到從零開始構造一個區塊鏈是一個非常困難的事情,為什么說是很困難的事情?
圖1
大家可以看一下圖1,其實要從頭開發一個區塊鏈,你要考慮到的就不只是數據庫公式算法,還要考慮到處理各種各樣的交易相關的一個轉換函數。與此同時,如果你想加一些比較復雜或者先進的一個邏輯在里邊,例如零知識證明,這樣就要在開發區關聯時候額外添加這些比較復雜的算法以及功能。
那么大家其實就會想到我們如何使用已經有的這些,不管是公鏈技術或者是聯盟鏈技術來進行二次開發。其實在過去的十幾年當中,特別是從09年比特幣白皮書這樣的一個上線,以及15年以太坊系統的上線,大家可以看到區塊鏈不止可以做支付,而且還可以在上邊部署一些智能合約。那么的話就有很多開發者是基于比特幣做二次開發,以及一些比較有意思的這種utxo模型的這樣的一個區塊鏈系統,還有根據以太坊做的一些調整,然而這些基于已有的區塊鏈開進行二次開發來做一些新的鏈這樣的一個系統,他們最大的問題就是由于像比特幣或者以太坊早期的這些項目,他們也有一個比較好的開發框架,其實大家都是在源碼基礎上進行改動的,這樣就要求開發者對于源碼的理解是比較高的。與此同時的話,由于這些源碼沒有比較好的模塊化來作為一個框架,其實開發起來的難度是很大的。
而我們Parity其實從Gavin在很早期15年建立Parity的時候,我們在最初就在幫以太坊開發它的Rust客戶端,之前是叫做ParityEthereum現在改名叫做OpenEthereum,我們積累了很多各種各樣的對區塊鏈的開發經驗,特別是在從18年開始積極的開發Polkadot跨鏈項目,我們吸收以及總結了很多開發供應鏈的這樣的一些經驗,然后從這些經驗里邊,我們抽取以及進一步的深化,做出了這樣的一個區塊鏈開發框架。而這套框架我們命名為Substrate。
圖2
因為波卡是一個跨鏈項目,那么我們為了幫助開發者更快的開發自己的一個區塊鏈系統,我們就開發了Substrate這樣的一套框架,來方便開發者去開發相關的這樣一個區塊鏈系統,我們叫做平行鏈。大家可以看到Substrate其實包含了很多剛剛我提到的這種區塊鏈的核心組件,例如數據庫層、網絡層以及可插拔的共識協議。
央行行長易綱 :將繼續研究如何加強央行數字貨幣的風險管理:4月17日,財新舉辦主題為“金融科技與人民幣可自由使用”的研討會。中國人民銀行行長易綱在會上表示,央行數字貨幣項目已取得較大進展,當前階段在部分城市及部分場景進行內部封閉試點測試,同時表示“將繼續研究如何加強央行數字貨幣的風險管理,包括了解你的客戶(KYC)等。”
對于金融科技在此次疫情期間發揮的作用,易綱表示肯定,但也強調商業銀行依然是主力;科技公司積極參與有助于提升金融服務水平;人民幣國際化主要依靠市場驅動,平等競爭,中國會繼續推進金融開放和改革。[2020/5/4]
同時,我在之后也會提到包含了比較有意思的鏈下工作機以及鏈上的這種可升級的功能,這樣就可以幫助開發者在開發的時候,其實大家只選用自己想使用的一個模塊,就可以很快速的開發相關的一個區塊鏈系統,可以快到哪種程度,Gavin其實在18年的時候,在Web3峰會做了這樣的一個演講,就是拿出了嶄新的蘋果電腦,然后開始裝這樣的一個Substrate相關的dependency,然后到最終編譯出一個區塊鏈只花了15分鐘,大家可想而知,這個是18年的不穩定版本,現在的話Substrate已經到了2.0版本,那么在這個版本上進行一個開發,其實會有更好的用戶體驗,是更加快速的。回到咱們今天講的主題,在波卡上如何開發區塊鏈系統,那么相信大家現在已經有了一個比較好的眉目,其實就是使用Substrate這樣的一個開發框架來進行一個開發。
圖3
2、Substrate開發出來的系統有哪幾種方式可以進行部署?
圖4
其實除了作為波卡的平行鏈或者平行線程之外,也可以直接部署成為獨立的鏈。特別是在國內這種特有的環境下,大家也可以使用Substrate搭建自己對應的這種商業邏輯的聯盟鏈或者私有鏈,以及一些對于吞吐量要求比較高的,可以針對某一個應用,例如游戲單獨搭一條鏈并部署在自己相對應的環境下邊,當然了目前大家在Substrate進行開發的時候,比較有利的一點是經過三年,從這個圖可以看到,整個波卡生態的壯大以及開發者持續的開發,Substrate的開發生態以及工具是有很多的,大家可以用Polkadot-js,當然內置的話也是有一個比較好的這種區塊瀏覽器,大家也可以使用ParitySigner這樣的一個離線的硬件錢包。
3、怎么使用Substrate進行Rust開發?
圖5
與此同時,除了圖5上面提到的這種ink!智能合約。這種ink!.Rust類型的智能合約,我們目前也兼容了evm其實大家可以使用這些去編寫智能合約,然后在自己對應的消費鏈上面進行一個運行。接下來我就大致跟大家分享一下怎么使用Substrate進行這種Rust開發。因為Substrate是跟其他的智能合約開發比較不太一樣,因為你是相當于開發一個區塊鏈,雖然區塊鏈底層,像數據庫、網絡、控制協議都搭好了,但是針對你自己特殊的這種需求,例如你要做游戲的一個區塊鏈,或者是偏支付的這樣一個鏈,這種核心的商業邏輯還是需要你進行開發的。
趙錫軍:央行數字貨幣重點在于如何與傳統貨幣進行融合:對于“數字貨幣研發重點和難點”的看法,中國人民大學財政金融學院副院長趙錫軍指出,其中涉及兩個問題。一是技術是否成熟。比特幣實際上就是數字貨幣最初的雛形,從技術層面來講,比特幣是有一些缺陷的,一旦支付量變大,就會出現支付困難或者效率下降。另外,比特幣出現過被盜等安全問題。而據央行貨幣研究所所長穆長春的一個內部研討會指出,央行數字貨幣,效率是非常高的,支付能力很強,說明已經克服技術方面的問題。二是數字貨幣被引入后,如何與傳統的貨幣和貨幣管理運行體系進行融合。數字貨幣的發行,是基于區塊鏈的基礎,它是有上限的,從目前來講它的發行規模取決于互聯網的算力。盡管穆長春所長也提到,央行數字貨幣現在可以突破區塊鏈的上限限制,但是破獲以后,它的發行究竟是怎么樣的,是否能夠跟我們目前的人民幣發行順利融合,這需要在制度層面有所安排。(澎湃新聞)[2020/4/22]
圖6
那么進行開發的話需要這種SubstrateRuntime的。圖6里邊大家可以看到,由于Substrate跟我們平時開發智能合約不太一樣,那么的話它是有一些這種開發上面的一些這種policy需要大家去記住的。例如第一點,在SubstrateRuntime你如果發了一個我們叫做extrinsic,或者你就把它當做交易,發交易的時候,如果這個交易進行時發生了問題的,那么交易對狀態的改變是不會回滾的。
然后在以太坊上面進行solidity的開發的話,如果交易執行不成功,那么其實它的狀態是會回滾的。這就要求了我們在開發Substrateruntime的時候,最好是我們先自己驗證一下他這樣的一個邏輯對不對?然后再寫。
接下來這幾頁的圖片,大家可以看一下,在寫這種runtime或者相對應的這種邏輯的時候,需要大家在里邊填充自己的這種代碼的,大家可以看模塊定義通常是包含怎么定義存儲事件以及錯誤,還有就是一些相關的這樣的一個函數。
圖7
對于這種如果大家想引用其他的相關的這樣的一些trait的話,因為整個Substrate都用Rust寫,所以這也會用到一些trait,如果大家想知道更多這種Rust相關的信息的話,再可以在網上查一下Rust的相關課程,或者加入我們Substrate的課程,我們會介紹一些Rust的相關的這種基礎。然后像存儲的話,大家可以看到其實里邊有一些比較簡單的類型、最簡單的方法,大家就可以學習已經有的這些簡單的類型或者這種例子,然后根據自己的實際情況,然后去改一下相關的這種變量名字,進行這樣的一個操作。與此同時的話類似于我們寫智能合約,在做一些操作的時候都要觸發事件或者發出事件,那么這里邊你也可以去定義一個事件。
掌柜調查署 | 當前環境下交易所如何“轉正”?:4月15日16:00,金色財經「掌柜調查署」邀請到ChainUP大客戶項目負責人針對交易所如何擁抱合規的問題進行解答,帶領大家全面了解當前環境下,交易所如何“轉正”!更多內容點擊原文鏈接查看。[2020/4/15]
當然了這里面還有一個地方就是decl_module,其實就是要定義自己相對應的這種runtime的函數,我在最后會提到的叫做Substrate.dev這樣的一個網站上面有很多各種各樣的教程,大家可以跟隨教程去學習,以及做一些比較簡單的例子去深入學習,怎么去根據這幾個模塊定義對應的這樣的一個事件存儲和函數,來完成自己對應的這樣的一個Runtime,以及相對應的邏輯的定義以及操作。
4、Substrate應用鏈跟智能合約的差異性在哪?
在這里簡單類比下Substrate應用鏈或者Runtime跟智能合約的差異性。
圖8
大家都知道寫智能合約,特別是以太坊上面的solidity這樣的一個智能合約,很多時候由于solidity以及以太坊本身的限制——比如它存儲量較低、手續費較高,同時像solidity它本身的限制也是比較多,可能更多時候是只能操作整數這種類型。
這就是為什么大家看到的目前以太坊上面比較火熱的應用都是跟通證相關,而不是跟更廣泛的Web3.0相關的原因。
而大家使用Substrate進行開發的時候,就不存在這樣的問題。
因為大家使用Substrate開發的時候,整個鏈都是為開發者所控制的。所以當大家在進行開發的時候,不管是鏈上鏈下數據,或是對應的一些solidity沒有的接口,Substrate都可以進行一個提供。
并且大家也可以看到,Substrate本身的吞吐量也是比較高的,所以可以給應用提供更多的處理交易與邏輯的空間。
與此同時,Substrate本身也會提供一個off-chainworker鏈下工作機,可以幫助做Substrate應用開發的開發者能夠更快的處理相關的鏈下數據,實現鏈上處理鏈下數據,這樣就打通了鏈上與鏈下。
5、無縫無分叉的鏈上升級
熟悉區塊鏈行業的朋友都知道,在過去,所有的公鏈項目包括一些聯盟鏈項目,如果想要做升級的話,都需要進行一個硬分叉。像比特幣,特別是以太坊。大家都知道在16年由于“TheDAO”事件,由于礦工意見不同,最終從以太坊分出了經典以太。
我們為什么要做鏈相關的升級?這其實涉及到了一個計算機或者編程行業。
幣情觀察室 | 如何操作超短線穿越牛熊高倍獲利:4月9日16:00,金色盤面邀請行情大V Alnn做客金色財經《幣情觀察室》直播間,將分享《如何操作超短線穿越牛熊高倍獲利》,敬請關注,掃描下圖二維碼即可觀看直播![2020/4/9]
大家其實默認這樣一個現象:沒有任何一個程序員可以寫出沒有漏洞的代碼。
不管是寫傳統的應用,還是寫區塊鏈得應用,或者智能合約。通常情況下你寫的代碼越多,那么你可能產生的安全漏洞就越多。
回顧過去的幾年,不管是DEFI還是鏈本身,大家都會發現很多各種各樣的漏洞,導致很多用戶有各種各樣的財產損失。
這就使得區塊鏈本身需要一個比較好的升級——不管是智能合約升級還是鏈本身的升級。
但如果我們頻頻地去使用這種硬分叉進行升級,首先時間趕不上,因為升級需要“各個礦工在很短的時間內,把自己的軟件升級到最新的版本,然后在某一個特定時間內大家共同去升級到這樣的版本,最后從舊鏈切入到新鏈上面”的這樣的一個邏輯。
然而,由于硬分叉,這種升級模式成本極高,而且很多時候可能會導致你本身的鏈又分叉出其它的鏈。
那么像Substrate就有一個無縫的鏈上升級。其實就是將開發者相對應的一個Runtime提交到鏈上面,然后進行一個驗證者鏈上投票,大家可以看到這其實是跟鏈上治理相關的。
鏈上投票完成以后,如果絕大多數人同意進行對應的一個升級,那么開發者提交的一個Runtime就會被寫入到整個鏈的Runtime里邊,進行對應的升級。
有了這樣一個無分叉鏈上升級,就可以保證區塊鏈開發者可以更安心的運行自己的區塊鏈。
即使出現一些問題,也可以很快的去進行修復或改正。
圖9
6、鏈下工作機
大家都知道,在以太坊上面我們有各種各樣的預言機,例如chainlink。
在過去的半年,預言機是很受到各種各樣的人的關注的。
因為以太坊本身無法打通鏈上鏈下的渠道,所以鏈上如果想要獲得鏈下數據——例如各種各樣的通證價格,就需要這種預言機將數據發送到鏈上。
而Substrate本身就是鏈下工作機的運行原理——其實就是鏈上的這些節點,它們會通過鏈下工作機去取得鏈下的相對應的數據。
圖10
那么這些鏈上的驗證節點,就可以對鏈條數據直接進行處理。
未來的話可以對處理結果——例如在鏈上形成共識,來保證可以更快、更方便的拿到鏈下信息,并進行相關的計算。
聲音 | 日本金融廳長官:針對區塊鏈等分布式金融系統,如何確保公眾利益已成為新課題:據日經新聞消息,今日在日本福岡舉行的G20峰會上,日本金融廳長官遠藤俊英發表演講指出“監管規則可能抑制創新,監管規則也會跟不上技術變革”。此外,以區塊鏈技術為首的分布式金融系統在沒有金融機構充當中介的情況下,可能實現顧客和市場參與者之間的直接交易,因此金融機構的地位存在下降的可能性,在這種情況下,如何確保公眾利益已成為新的課題。[2019/6/8]
像在波卡或Substrate對應的生態里,就不太需要這種單獨的預言機。因為對應的這種鏈下工作機的接口已經寫的比較好了。
與此同時,大家也可以看到對應的這樣一個場景:除了我剛剛提到的想去拿一些鏈下數據;還有就是使用鏈下工作機的一些場景。
例如某些比較龐大的計算,我們就可以使用鏈下工作機來完成,結果完成后再返回給對應的一個鏈上驗證者。
這里有一些鏈下工作機的相關學習資源,大家可以進行一個參考。
圖11
7、如何更好的接入到波卡里面?
前面我講了一些關于例如波卡是如何使用Substrate進行開發的,以及Substrate寫出來的Runtime大概是什么樣的,同時還有Substrate進行開發的優點的話題。
那么大家可能也更想知道:如果用Substrate去開發出一套區塊鏈系統,我是如何更好的接入到波卡里面的?
大家可以看一下圖12,其實就是關于波卡整個的一個框架。
熟悉波卡都知道,Polkadot最中間、最核心的是叫做RelayChain或者叫做中繼鏈。中繼鏈里面跑了很多對應的驗證節點,叫做區塊驗證節點。
圖12
不同的鏈如果接入到中繼鏈里邊,它們就會作為一個平行鏈接入到中繼鏈里邊。
很多比較大的區塊鏈系統,例如比特幣或者以太坊,它們如果想接入到波卡里面,就需要通過橋首先調節到一個平行鏈上面,再通過平行鏈與其他的平行鏈溝通。
作為平行鏈,它們對于內容的或者區塊的驗證要通過中繼鏈相關的驗證節點來完成。
那么的話大家就會問,平行鏈本身需要什么節點?這就像圖里面提到的一樣,需要叫做collator的這樣一個類型的節點。
這些節點就負責采集每個平行鏈對應的區塊,然后提交給中繼鏈隨機選擇的一些區塊驗證節點。這些區塊驗證節點就會去驗證平行鏈里對應的區塊。
與此同時,使用Substrate寫出來的區塊鏈,還需要另外一個模塊叫做Cumulus。大家可以在用Substrate寫完這個Cumulus后,再進行稍微的改進,就可以用Cumulus連入到平行鏈里面。
當然,不是每一個Substrate鏈都可以連入到平行鏈和中繼鏈,或者波卡里面——這就涉及到一個平行鏈插槽的拍賣。
圖13
8、Web3基金會如何支持波卡生態發展?
波卡生態里面的項目特別活躍。大家可以看一下,不管是基金會還是Parity,我們對波卡生態項目的支持,都是很高的。
例如我們在大概3月的時候,就已經發放了超過100個項目對應的Web3項目,與Web3基金市場grant的支持。
與此同時,我們也會有叫做builder?program去幫助社區一些相對成熟的團隊,給他們提供技術及商務市場的一個服務。
當然,作為一個不太熟悉技術的社區成員,你也可以參加我們的大使計劃,去幫忙推廣波卡相關的技術及理念。
圖14
在亞洲或者國內,大家可以看到從今年5月份開始,我們跟萬向合作做了Web3訓練營,孵化了15支團隊。
這15支團隊大部分已經上了相關的測試網和主網。然后像做融資等也都是非常受歡迎的。
未來,我們也希望有更多、更好的團隊可以加入到我們的Web3訓練營里。我們會提供技術、商務以及市場相關的支持。
全球已經有超過100個團隊基于Substrate進行開發區塊鏈。
我們作為亞洲團隊或者說中國團隊,大家可以看到,在過去的一段時間里,我們已經為大家提供了各種各樣的Substrate開發的相關中文資料。
不管是知乎專欄、Polkadot公眾號,還是線上、線下活動,包括嗶哩嗶哩直播,都歡迎大家去搜索Substrate,或搜索我們的社區,積極加入到我們的活動里面。
與此同時,我們也有一些最新的活動——例如在月底我們要舉辦國內首次web3大會,主題就是開放、開源、互聯。
我們會邀請海內外——不只是區塊鏈行業或波卡生態項目及嘉賓,我們還會邀請海內外比較出名的、對Web3整個領域貢獻比較大的嘉賓,去分享他們對Web3的理解,以及對Web3生態的貢獻。
圖15
大家如果感興趣,可以去學習這樣的一個教程,去體驗一下Substrate新的開發框架——不管是鏈上升級,還是鏈下工作機。以及我們提供的各種各樣的模塊,來搭建自己的區塊鏈。
很高興今天能收到密碼極客的邀請,今天為大家分享了這么多,也希望大家未來不管是在波卡生態,還是在區塊鏈生態,都能夠更好的開發、融入到我們的區塊鏈行業,謝謝大家!
問答環節
問題一,來自網易區塊鏈創新業務負責人胡志敏。
胡志敏:如果作為一個開發者,想在波卡生態中和基于Substrate上進行區塊鏈創業的話,一定會需要一些啟動資金,我想了解polkadot官方基金對于區塊鏈應用的扶持策略,比如對于什么樣的項目會啟用官方投資?
賈瑤琪博士:關于波卡生態和機器設備進行開發的相關項目和團隊,我剛剛已經講過,不管是基金會還是parity,都會提供比較大的支持。
關于資金方面,基金會會根據項目相關的資質來進行評估。
大家可以去申請一個叫做Web3grant這樣的一個項目。對于一些相對比較好的項目,基金會會提供大概3萬美金的一個支持。
當然,對于比較復雜的項目也會提供更高資金的支持,但是需要花費更長的時間進行審核。
對于一些相對成熟的、有產品或者有測試網的項目,可以申請我們比較成熟的、相關的一些program。例如builderprogram或者我們的web3bootcamp,web3訓練營。我們會對這些項目提供技術市場以及商務相關的指導與幫助。
與此同時,我們也會聯系波卡生態里比較積極,支持我們的相關投資人或者海內外投資人,去幫忙觀察一下這些項目,并且進行一些相關的投資。
問題二和問題三來自Coinversation代碼貢獻者,北大畢業,有12年程序開發經驗的清歡。
問題二
清歡:如果開發平行鏈,后續平行鏈接入卡槽的成本會是多少?
賈瑤琪博士:針對第一個問題,如果開發平行鏈,那么插槽的成本會是多少?目前來講,我們還沒有一個很明確的計算。例如大概多少的dot你可以拿到插槽。但就目前來看——因為我們的插槽不是直接去買賣的,而是需要用戶去鎖自己對應的一個dot——那么的話,其實我們還是鼓勵不同的團隊去更好的發展自己的社區,在未來可以通過眾籌的方式或去發展自己平行鏈這樣的一個盈利能力,然后就可以用自己盈利獲得的資金去進行插槽拍賣。
問題三
清歡:Coinversation使用ink!智能合約開發項目,目前從開發工具到智能合約測試再到部署都相對比較煩瑣,后續如何能降低這些開發的門檻?
賈瑤琪博士:ink!現在已經出到第三個版本,具體情況大家可以去看一下。
關于ink!相關的開發、開發的模塊以及相關的組件,我們也在逐步進行開發完善,從而方便更多的開發者去更好的使用ink!科技來進行開發。
目前你講得也很對,可能有些開發工具確實不是那么地到位。但我們的Web3基金會已經給了一些開發工具的團隊在做類似于remix的一個Ide,來幫助開發者使用ink!進行開發。
問題四
Polkadot社區1群成員:波卡或Substrate的應用開發必須要作為平行鏈嗎?這樣每個應用都開發鏈,平行鏈的插槽不夠了怎么辦?
賈瑤琪博士:除了平行鏈,其實還是有其他的方法。
第一個方法就是我剛剛提到的,可以去通過平行線程,然后接入到系統里面。
平行線程不需要一個平行鏈團隊獨占一個插槽超過半年或兩年。它只按需競拍不同的區塊,然后把自己的區塊寫入到波卡系統里面。
當然,還有一些方式。如果你只是搭建一個比較簡單的應用,那么可以嘗試使用ink!或Solidity編寫智能合約,然后可以將自己的智能合約或者相關的應用部署在智能合約平行鏈上面。通過智能合約平行鏈去調用以及提供數據給其他的平行鏈,還可以利用到波卡對應的跨鏈優勢。
還有,也可以搭建一個單獨的Substrate的鏈。未來通過某種方式橋接到一些平行鏈上面,那么通過平行鏈就可以將自己鏈的數據與其他平行鏈進行溝通。
大致的話通過以上三種方式,再加上拍賣平行鏈插槽,然后接入波卡。一共四種方式來接入到波卡的系統里面。
據消息,摩根大通新更名的區塊鏈銀行網絡Liink負責人ChristineMoy表示,經過改造的Liink是基于以太坊的一個分支,更像是一個“去中心化的網絡”,而不像是一個“中央指揮部產品”.
1900/1/1 0:00:002020年10月22日,首家區塊鏈服務網絡BSN官方展廳在杭州市下城區落成,并正式對外展出。區塊鏈服務網絡BSN官方展廳是由區塊鏈服務網絡發展聯盟、中國移動通信集團浙江有限公司杭州分公司、杭州市.
1900/1/1 0:00:00以太坊數據提供商Nansen完成120萬美元融資,計劃明年增加對ETHL2網絡支持以太坊數據提供商Nansen完成120萬美元種子輪融資.
1900/1/1 0:00:00「數據融合基礎設施」設計要基于可管控、可計算、可驗證和可度量的理念。演講:孫立林,矩陣元創始人兼首席執行官10月27日,由萬向區塊鏈實驗室主辦的第六屆區塊鏈全球峰會在上海開幕.
1900/1/1 0:00:00今天周三,比特幣即將奔向14000美元的一天!昨天最大的瓜當屬新加坡星展銀行了,在官網發布了將推出數字貨幣交易平臺,支持BTC、ETH、BCH和XRP的交易后不久.
1900/1/1 0:00:00親愛的Pool-X用戶,Pool-X將于2020年10月28日18:30:00開啟USDT鎖倉挖礦活動,本次活動上線的定期產品為“USDT-7D”和“USDT-14D”.
1900/1/1 0:00:00