自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

如何在Polkadot構(gòu)建和部署智能合約

區(qū)塊鏈
Polkadot是下一代區(qū)塊鏈協(xié)議,它將多個專用區(qū)塊鏈連接到一個統(tǒng)一網(wǎng)絡(luò)中。它以以前的區(qū)塊鏈網(wǎng)絡(luò)的革命性前景為基礎(chǔ),同時提供了一些基本優(yōu)勢。

 

Polkadot是下一代區(qū)塊鏈協(xié)議,它將多個專用區(qū)塊鏈連接到一個統(tǒng)一網(wǎng)絡(luò)中。它以以前的區(qū)塊鏈網(wǎng)絡(luò)的革命性前景為基礎(chǔ),同時提供了一些基本優(yōu)勢。

Polkadot的優(yōu)點

Polkadot項目將通過提供類似橋的框架來徹底改變區(qū)塊鏈技術(shù),該框架具有以下優(yōu)點:

  • 無限的可擴展性-Polkadot可以支持無限數(shù)量的區(qū)塊鏈并允許它們連接(被稱為順鏈)。
  • 適應(yīng)性共識機制—由于不同的區(qū)塊鏈在不同的共識機制上運行,Polkadot平臺提供了一個開放且適應(yīng)性強的共識機制。
  • 跨鏈交易—該框架可支持不同區(qū)塊鏈之間的價值轉(zhuǎn)移。
  • 定義的治理機制—它具有定義的治理機制,從而消除其他區(qū)塊鏈面臨的主要問題。
  • 可升級性— Polkadot支持升級,而不必借助費力的硬分叉來實施更改。
  • 集合安全性-與Polkadot連接的區(qū)塊鏈可以通過統(tǒng)一的安全保護(hù)傘來保護(hù)。這可以保護(hù)沒有安全引導(dǎo)的小型鏈。
  • 低交易費用– Polkadot與以太坊相比,其交易費用較低。

智能合約

智能合約是一種自我執(zhí)行的軟件,由P2P網(wǎng)絡(luò)管理。它是有效的權(quán)限管理工具,無需傳統(tǒng)的法律合同即可為網(wǎng)絡(luò)參與者之間的協(xié)議提供協(xié)調(diào)和執(zhí)行框架。它們可用于形式化兩方之間的簡單協(xié)議,組織的章程或創(chuàng)建代幣。

在我們今天使用的Internet上,許多技術(shù)巨頭(例如Amazon,eBay,Airbnb,Uber等)的商業(yè)模式和“存在的理由”都會由于缺乏一個可信賴的本地結(jié)算層而造成的對不認(rèn)識的交易者缺乏信任。智能合約提供了精確解決該問題的解決方案。他們可以正式建立個人與機構(gòu)之間的關(guān)系以及他們在Internet上完全擁有的P2P關(guān)系,而無需信任的中介。

盡管智能合約的概念并不新鮮,但區(qū)塊鏈技術(shù)似乎是智能合約實施的催化劑。智能合約的一種更原始的形式是自動售貨機。交易規(guī)則被編程到機器中。您可以通過按與該產(chǎn)品相關(guān)的數(shù)字來選擇一種產(chǎn)品,插入硬幣,然后機器會檢查您是否投入了足夠的錢,從而充當(dāng)了智能合約。

自我執(zhí)行協(xié)議

智能合約是嵌入在由區(qū)塊鏈管理的計算機代碼中的自我執(zhí)行協(xié)議。該代碼包含一組規(guī)則,根據(jù)該規(guī)則,該智能合約的各方同意彼此交互。如果并且當(dāng)滿足預(yù)定義的規(guī)則時,將自動執(zhí)行該協(xié)議。智能合約提供了有效管理令牌化資產(chǎn)和兩方或多方之間訪問權(quán)限的機制。

如果滿足特定的預(yù)定條件,人們就可以將其視為可以解鎖價值或訪問權(quán)限的密碼盒。他們管理的基礎(chǔ)價值和訪問權(quán)限存儲在區(qū)塊鏈中,該區(qū)塊鏈?zhǔn)峭该鞯墓蚕矸诸悗?,可以保護(hù)它們免受刪除,篡改和修訂。因此,智能合約可以從區(qū)塊鏈內(nèi)部(其他智能合約)和外部(外部數(shù)據(jù)源)的實體調(diào)用智能合約。

在這些實體中,所謂的“預(yù)言家”將與智能合約相關(guān)的數(shù)據(jù)從鏈上世界注入到智能合約信息存儲中。如果執(zhí)行得當(dāng),智能合約可以提供優(yōu)于傳統(tǒng)合約法的交易安全性,從而降低審計和執(zhí)行此類協(xié)議的協(xié)調(diào)成本。

他們可以實時跟蹤協(xié)議的執(zhí)行情況,因此可以節(jié)省成本,因為合規(guī)性和控制權(quán)是即時發(fā)生的。智能合約將協(xié)議的交易成本降低了幾個數(shù)量級;具體而言,它們降低了達(dá)成協(xié)議,形式化和實施的成本。

此外,智能合約安全性仍然是一個需要在技術(shù)層面解決的問題。我們還需要能夠執(zhí)行更復(fù)雜的合同條款,包括分散的爭端解決工具。盡管這種發(fā)展可能需要更多時間才能成熟,但一些有趣的爭端解決方案已經(jīng)在開發(fā)中,例如“ Kleros”,“開放式法律”或“ Jur”。隨著技術(shù)變得更加成熟和廣泛以及采用法律標(biāo)準(zhǔn),我們可能會在未來幾年看到合法合同和智能合同的融合。但是,我們目前仍缺乏最佳實踐,可能需要一些時間才能進(jìn)入集體學(xué)習(xí)階段。

用例

智能合約用例的范圍從簡單到復(fù)雜。它們可用于簡單的經(jīng)濟(jì)交易,智能合約還可用于注冊任何種類的所有權(quán)和產(chǎn)權(quán)。智能合約有可能破壞許多行業(yè)。用例可以在銀行,保險,能源,電子政務(wù),電信,音樂行業(yè),藝術(shù),移動性,教育等領(lǐng)域。

使用智能合約,每個協(xié)議,每個流程,任務(wù)和付款都可以具有數(shù)字記錄和簽名,可以對其進(jìn)行識別,驗證,存儲和共享。諸如“ Bernstein”(專利注冊機構(gòu))或政府和半政府注冊機構(gòu)(土地所有權(quán),出生證類別,學(xué)校和大學(xué)學(xué)位)之類的時間戳服務(wù)是簡單的技術(shù)用例的示例。

雖然時間戳服務(wù)在技術(shù)層面上很容易實現(xiàn),但根據(jù)行業(yè)類型和特定用例,此類用例的監(jiān)管方面可能要復(fù)雜得多。此外,智能合約還可用于商品或服務(wù)供應(yīng)鏈中眾多參與者之間更為復(fù)雜的協(xié)議,或在不需要傳統(tǒng)的集中式機構(gòu)的情況下管理一群擁有相同興趣和目標(biāo)的人。分散式自治組織(DAO)就是這樣的一個例子,可能代表了最復(fù)雜的智能合約。因此,智能合約可以規(guī)范治理規(guī)則(組織的章程,治理法規(guī),議事規(guī)則或組織章程),并用自我執(zhí)行的代碼代替日常運營管理。

模型

以太坊2.0中的分片都具有相同的狀態(tài)轉(zhuǎn)換函數(shù)(STF),就像管理區(qū)塊鏈如何更改每個區(qū)塊的狀態(tài)的規(guī)則中的規(guī)則一樣。該STF提供了用于智能合約執(zhí)行的界面。合同存在于單個分片上,并且可以在分片之間發(fā)送異步消息。

同樣,在Polkadot中,每個分片都承載核心邏輯,這些分片并行執(zhí)行,并且Polkadot可以發(fā)送跨分片的異步消息。但是,每個Polkadot分片(在Polkadot術(shù)語中為“對鏈”)都具有唯一的STF。通過組合邏輯,應(yīng)用程序可以存在于單個碎片中,也可以存在于多個碎片中。Polkadot使用WebAssembly(Wasm)作為“元協(xié)議”。碎片的STF可以是抽象的,只要Polkadot上的驗證程序可以在Wasm環(huán)境中執(zhí)行即可。

建筑學(xué)

Polkadot是具有共享安全性和互操作性的異構(gòu)多鏈。

中繼鏈

中繼鏈?zhǔn)荘olkadot的中央鏈。Polkadot的所有驗證器都已放置在DOT的中繼鏈上,并進(jìn)行中繼鏈驗證。中繼鏈由相對較少的交易類型組成,其中包括與治理機制進(jìn)行交互,平行鏈拍賣以及參與NPoS的方式。中繼鏈故意具有最小的功能,主要職責(zé)是協(xié)調(diào)整個系統(tǒng)。

平行鏈和平行線程插槽

Polkadot可支持多個執(zhí)行插槽。這些插槽就像計算機處理器上的核心(例如,現(xiàn)代筆記本電腦的處理器可能具有八個核心)。這些內(nèi)核中的每個內(nèi)核可以一次運行一個進(jìn)程,Polkadot使用兩種訂閱模型允許這些插槽:并行鏈和并行線程。平行鏈有一個專用的鏈槽(核心),就像一個不斷運行的過程。Parathread在組中共享插槽,因此更像是需要喚醒且運行頻率較低的進(jìn)程。

整個Polkadot網(wǎng)絡(luò)上發(fā)生的大多數(shù)計算都將委托給處理各種用例的特定parachain或parathread實現(xiàn)。Polkadot對平行鏈可以做什么沒有任何限制,除了它們必須能夠生成可以由分配給平行鏈的驗證者驗證的證據(jù)外。該證明驗證了旁鏈的狀態(tài)轉(zhuǎn)變。

一些平行鏈可能特定于特定的應(yīng)用程序,另一些平行鏈可能專注于諸如智能合約,隱私或可伸縮性之類的特定功能-仍然,其他平行鏈可能是實驗性架構(gòu),本質(zhì)上不一定是區(qū)塊鏈。

Polkadot提供了多種方法來在特定時間段內(nèi)固定旁鏈插槽的插槽。Parathread是共享插槽的池的一部分,必須贏得各個塊的拍賣。并行線程和并行鏈具有相同的API。他們的區(qū)別是經(jīng)濟(jì)上的。平行鏈將必須在其插槽租賃期間保留DOT;parathreads將按塊收費。平行線程可以變成平行鏈,反之亦然。

共享安全

連接到Polkadot中繼鏈的平行鏈都共享中繼鏈的安全性。Polkadot在中繼鏈和所有連接的副鏈之間具有共享狀態(tài)。如果中繼鏈由于某種原因必須還原,那么所有平行鏈也將還原。這是為了確保整個系統(tǒng)的有效性可以持續(xù)存在,并且任何單個部分都不可損壞。

共享狀態(tài)使得使用Polkadot平行鏈時的信任假設(shè)僅是中繼鏈驗證器集中的那些,而沒有其他假設(shè)。由于預(yù)計中繼鏈上設(shè)置的驗證器將是安全的,并且要有大量股份支持該驗證器,因此旁鏈應(yīng)從這種安全性中受益。

基板

基板是用于構(gòu)建區(qū)塊鏈的開源,模塊化和可擴展框架。

底層從頭開始進(jìn)行了靈活設(shè)計,使創(chuàng)新者可以設(shè)計和構(gòu)建滿足其需求的區(qū)塊鏈網(wǎng)絡(luò)。它提供了構(gòu)建自定義區(qū)塊鏈節(jié)點所需的所有核心組件。

基板開發(fā)人員中心節(jié)點模板

我們以Node Template的形式提供了一個開箱即用的基于Substrate的節(jié)點,您在閱讀本文時應(yīng)對其進(jìn)行編譯。無需進(jìn)行任何更改,您可以共享此節(jié)點模板,并創(chuàng)建具有加密貨幣和所有內(nèi)容的有效的區(qū)塊鏈網(wǎng)絡(luò)!

我們將教您如何在“開發(fā)”模式下使用該節(jié)點,該模式使您可以在單個節(jié)點上運行網(wǎng)絡(luò),并擁有一些預(yù)先配置的有資金的用戶帳戶。

建立和部署合同

1.安裝先決條件

  1. # Install Homebrew if necessary https://brew.sh/ /bin/bash -c “$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install.sh)" # Make sure Homebrew is up-to-date, install openssl brew update brew install openssl 

2.Rust開發(fā)人員環(huán)境

  1. # Install curl https://sh.rustup.rs -sSf | sh # Configure source ~/.cargo/env 
  2. rustup default stable 

3.基材的最新報道

自行構(gòu)建Substrate的開發(fā)人員應(yīng)始終每晚穩(wěn)定使用Rust的最新無錯誤版本。這是因為Substrate代碼庫遵循Rust每晚的技巧,這意味著Substrate的更改通常取決于Rust每晚編譯器的上游更改。為了確保您的Rust編譯器始終是最新的,您應(yīng)該運行:

  1. rustup update 
  2. rustup update nightly 
  3. rustup target add wasm32-unknown-unknown --toolchain nightly 

4.Wasm工具鏈

現(xiàn)在,配置每晚版本以與Wasm編譯目標(biāo)一起使用:

  1. rustup target add wasm32-unknown-unknown — toolchain nightly 

5.編譯基板

一旦安裝了先決條件,您就可以使用Git克隆Substrate Developer Hub節(jié)點模板,這是在Substrate上構(gòu)建的良好起點。

  1. git clone -b v3.0.0 — depth 1 https://github.com/substrate-developer-hub/substrate-node-template 

6.編譯節(jié)點模板

  1. cd substrate-node-template # NOTE: you should always use the `--release` flag cargo build --release # ^^ this will take a while! 

7.安裝前端模板

本教程使用ReactJS前端模板來允許您與應(yīng)該在上一步中開始編譯的基于Substrate的區(qū)塊鏈節(jié)點進(jìn)行交互。將來,您可以使用相同的前端模板為自己的項目創(chuàng)建UI。

要使用前端模板,你需要的紗線,其本身需要Node.js的。如果您沒有這些工具,則必須按照以下說明進(jìn)行安裝:

  • 安裝Node.js
  • 安裝紗

現(xiàn)在,您可以使用這些命令來設(shè)置前端模板。

  1. # Clone the frontend template from github git clone -b v3.0.0 --depth 1 https://github.com/substrate-developer-hub/substrate-front-end-template  # Install the dependencies cd substrate-front-end-template yarn install 

8.啟動節(jié)點

運行以下命令以啟動您的節(jié)點:

  1. # Run a temporary node in development mode ./target/release/node-template — dev — tmp 

使用此命令,如果您的節(jié)點運行成功,您應(yīng)該會看到類似以下的內(nèi)容:

節(jié)點已啟動

  1. Start the Front-End Template 
  2. # Make sure to run this command in the root directory of the Front-End Template yarn start 

前端

9.合約組成

對于使用其他現(xiàn)代智能合約語言進(jìn)行編程的開發(fā)人員,應(yīng)該感到熟悉。合同的骨架具有您可能期望的所有相同組件:

  • 大事記
  • 貯存
  • 部署(構(gòu)造函數(shù))功能
  • 公共職能
  • 內(nèi)部功能

每個合約功能明確定義了可變性和可見性。在這些功能中,您可以訪問幾種常見的基材類型,如AccountId,Balances,Hash,等。

10.創(chuàng)造an ink!項目

我們將使用an ink!CLI生成Substrate智能合約項目所需的文件。

確保您位于工作目錄中,然后運行:

  1. cargo contract new flipper 
  2. cd flipper/ 
  3. flipper 
  4. +-- lib.rs                <-- Contract Source Code 
  5. +-- Cargo.toml            <-- Rust Dependencies and ink! Configuration 
  6. +-- .gitignore 

11.建立合同

運行以下命令來編譯您的智能合約:

  1. cargo +nightly contract build 

將項目投影為Wasm二進(jìn)制文件,元數(shù)據(jù)文件(包含合同的ABI)和將.contract兩者捆綁在一起的文件。該文件可用于將合同部署到鏈中。如果一切順利,您應(yīng)該看到一個target包含以下文件的文件夾:

  1. target 
  2. └── flipper.wasm 
  3. └── metadata.json 
  4. └── flipper.contract 

12.測試您的合同

您將在源代碼底部看到一個簡單的測試,它可以驗證合同的功能。

在您的項目文件夾中運行:

  1. cargo +nightly test 

您應(yīng)該看到要成功完成的測試:

  1. $ cargo +nightly test 
  2.     running 2 tests 
  3.     test flipper::tests::it_works ... ok 
  4.     test flipper::tests::default_works ... ok 
  5. test result: ok. 2 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out 

13.部署合同

現(xiàn)在我們已經(jīng)從源代碼生成了Wasm二進(jìn)制文件并啟動了Canvas節(jié)點,我們希望將該合同部署到我們的Substrate區(qū)塊鏈上。

Substrate上的智能合約部署與傳統(tǒng)智能合約區(qū)塊鏈上的部署有些不同。

每次您在其他平臺上推送合同時,都會部署一個全新的智能合同源代碼塊,而Substrate選擇優(yōu)化此行為。。

在Substrate中,合同部署過程分為兩個部分:

  • 將您的代碼放在區(qū)塊鏈上
  • 創(chuàng)建合同實例

通過這種模式,可以將諸如ERC20標(biāo)準(zhǔn)之類的合同代碼一次性放置在區(qū)塊鏈上,但是可以實例化任意次。

無需持續(xù)上傳相同的源代碼并浪費區(qū)塊鏈上的空間。

上載Wasm和元數(shù)據(jù)

將代碼放在上,當(dāng)您按Deploy時,應(yīng)該會看到一系列事件,包括創(chuàng)建新帳戶(system.NewAccount)和合同的實例化(contracts.instantiate):

打開“畫布UI”的特殊設(shè)計的“上傳”部分。

使用下拉菜單選擇具有一些帳戶余額的部署帳戶,例如Alice。在輸入字段中輸入合同名稱。提供flipper.contract文件作為捆綁的Wasm Blob和元數(shù)據(jù)。

14.簽訂合同

單擊上載,然后在確認(rèn)頁面上簽名并提交。

這應(yīng)該發(fā)出一個contracts.PutCode事件。如果交易成功,您將收到一個system.ExtrinsicSuccess事件,您的WASM合同將存儲在您的Substrate區(qū)塊鏈上!

創(chuàng)建合同實例

智能合約作為區(qū)塊鏈上會計系統(tǒng)的擴展而存在。因此,創(chuàng)建此合同的實例將創(chuàng)建一個新合同,該合同將AccountId存儲由智能合同管理的任何余額并允許我們與合同進(jìn)行交互。

在上一步中上傳合同后,確認(rèn)屏幕將顯示代表我們的智能合同的信息。現(xiàn)在,我們需要部署智能合約來創(chuàng)建實例。在確認(rèn)屏幕上按“部署代碼”按鈕。

要實例化我們的合同,請接受默認(rèn)選項,為該合同帳戶提供一筆of賦,1000 Units用于支付存儲租金,并將最大允許汽油價值設(shè)置為1000000:

當(dāng)您按Deploy時,應(yīng)該會看到一系列事件,包括創(chuàng)建新帳戶(system.NewAccount)和實例化合同(contracts.instantiate):

現(xiàn)在您的合同已被完全部署,我們可以開始與它進(jìn)行交互了!Flipper只有兩個功能,因此我們將向您展示同時使用這兩個功能的感覺。在上一步中,在部署了Flipper合同實例之后,在出現(xiàn)的確認(rèn)屏幕上,單擊“執(zhí)行合同”按鈕。

default()功能

如果您回顧一下我們合同的default()功能,我們會將Flipper合同的初始值設(shè)置為false。讓我們檢查一下是否是這種情況。

在“要發(fā)送的消息”部分中,選擇“ get():bool”消息,并接受其他選項的默認(rèn)值。

按“呼叫”并確認(rèn)它返回值false:

因此,true現(xiàn)在就讓價值轉(zhuǎn)向吧!

我們可以通過用戶界面發(fā)送的替代消息是flip()。同樣,接受其他選項的默認(rèn)值。

您會注意到該flip()消息默認(rèn)為交易呼叫。

如果交易成功,那么我們應(yīng)該可以返回到該get()函數(shù)并查看更新后的存儲:

目前為止,我們已經(jīng)成功在Polkadot上構(gòu)建和部署了智能合約,有任何疑問可以在留言區(qū)留言。

責(zé)任編輯:武曉燕 來源: 區(qū)塊鏈研究實驗室
相關(guān)推薦

2021-03-11 19:13:04

NFT合約智能

2021-05-06 09:42:24

Truffle部署智能

2014-06-26 14:08:28

Azure云服務(wù)

2022-07-04 18:58:43

智能合約區(qū)塊鏈

2024-01-05 07:41:34

OpenLLM大語言模型LLM

2022-07-07 14:23:06

人工智能機器學(xué)習(xí)大數(shù)據(jù)

2022-04-20 10:11:45

PythonBrownie編程語言

2019-01-23 11:12:42

機器學(xué)習(xí)機器模型預(yù)測工資

2020-12-17 08:00:00

區(qū)塊鏈數(shù)據(jù)以太坊

2010-03-29 13:35:39

ibmdwRIA

2023-07-04 20:15:00

2019-09-18 11:17:53

云計算云安全

2021-02-18 17:00:52

Linux歸檔文件

2021-08-06 13:46:29

人工智能AI深度學(xué)習(xí)

2021-04-19 11:11:57

云計算數(shù)字

2023-05-05 08:00:00

2021-03-25 16:34:10

區(qū)塊鏈加密資產(chǎn)技術(shù)

2021-10-28 19:08:29

Python虛擬環(huán)境

2019-09-16 11:40:49

Linux交換文件

2019-05-29 08:00:00

Linux計劃任務(wù)cron
點贊
收藏

51CTO技術(shù)棧公眾號