技術指南:如何創建通用的區塊鏈智能合約?

2021-03-25 09:03:45

區塊鏈智能合約可以通過集成去中心化Oracle來訪問鏈外的數據。在用戶深入研究如何使用它們之前,了解整體情況下區塊鏈智能合約的重要性以及需要Oracle訪問數據的原因非常重要。

如今,世界各地每天都在進行大量交易,並且通常受協議或合同約束。這可能是由供應商的服務條款,監管框架或兩者的結合所驅動。這些協議的參數並不總是清晰或透明的。他們最終取決於組織及其按照事先約定的條件採取行動的意愿。

越來越多的合同被數字化。區塊鏈技術的興起引入了智能合約,該系統可防止篡改,透明和公平地管理此類協議。智能合約是通過數學而不是組織來管理的。合同生效後,他們將自動實施合同參數,為所有各方創建一個更公平的結構。

智能合約的挑战在於,它們通常依賴於將現實世界的數據與區塊鏈橋接的能力(或從一個區塊鏈到另一區塊鏈的數據傳輸),以便智能合約可以識別質量,評估可靠的數據並觸發商定的結果滿足健康)狀況。過去,這是一個過於復雜和困難的過程,從而限制了其廣泛採用。

技術指南:如何創建通用的區塊鏈智能合約?

關於Chainlink

Chainlink是一個开源抽象層,它提供了一個框架,可以輕松地將區塊鏈與外部(或單獨的區塊鏈)API連接起來。您可以將Chainlink視為TCP / IP中傳輸層的等效區塊鏈,以確保可靠地進出數據。Chainlink旨在成為智能合約的標准數據層,釋放其影響外部世界的真正能力,並將其轉變為具有外部意識的通用智能合約。

智能合約可以完全改變信任和自動化在業務中的處理方式,但是它們對區塊鏈事件應用範圍的限制嚴重限制了它們的潛力。开發人員希望與之交互的大多數內容都存在於“現實世界”中,例如定價數據,運輸條件,全球事件等,以創建通用的智能合約。這些合同具有外部意識,因此在掌握世界數據時可以處理各種常規任務。Chainlink網絡為Solidity和其他區塊鏈开發人員提供了構建去中心化Oracle的框架。

這些Oracle可用於在以太坊網站上實時從分散式應用程序(dApps)檢索數據。

鏈環適配器

默認情況下,適配器是每個Chainlink節點支持的數據操作功能。在這種情況下,節點是分散的。它們滿足數據請求,並且Chainlink網絡由越來越多的節點組成。它的節點由許多獨立的運營商運營。通過該適配器,所有开發人員都具有用於發送數據請求的標准接口,並且節點操作員將遵循該標准來處理數據。這些適配器包括HTTP GET,HTTP POST,比較,復制和其他功能。適配器是dApp與外部世界數據之間的連接。

例如,這是HttpGet適配器的參數:

  • Get:獲取包含API URL的字符串以請求Get。

  • 標頭:包含鍵作為字符串和值作為字符串數組的對象。

  • queryParams:獲取URL查詢參數的字符串或字符串數組。

  • extPath:以斜槓分隔的字符串或字符串數組,以附加到作業的URL。

鏈環要求

為了使通用智能合約能夠與這些適配器交互,還需要其他功能。從Chainlink Client繼承的所有合同都可以創建Chainlink.Request結構,該結構允許开發人員向Chainlink的去中心化Oracle發出請求。該請求應根據要發出的請求將所需的適配器參數添加到結構中。提交此請求需要一些基本字段,例如用作Oracle的節點的地址,jobId和約定的費用。除了這些默認字段之外,您還可以將所需的適配器參數添加到請求結構中:

使用這種結構,該請求是靈活的,並且可以被表述為適合各種情況的請求,這些情況涉及從任何API獲取,發布和操作數據,因為該請求可以包含任何適配器功能。系統分散的原因是Chainlink的Oracle網絡由許多這樣的節點組成,开發人員可以根據需要自由選擇節點和編號。正如高可靠性dApp經常需要的那樣,這可以通過多個源實現冗余故障轉移和錯誤檢查。

有關在ChainlinkClient合同中構造請求以及提交請求和接收響應所需的功能的更多信息,您可以查看Chainlink的完整HTTP GET請求示例。

對於常見請求,節點操作員可能已預先配置了現有的Oracle作業,在這種情況下,請求要簡單得多。無需構建自定義請求結構並添加必要的適配器。不需要其他適配器參數,並且所選的分布式oracle集將基於創建請求結構時提供的jobId知道如何響應。

您可以使用分散的Oracle數據服務(例如Chainlink Market)搜索現有的Oracle和受支持的作業,以找到所需的jobId。

外部適配器

但是,如果智能合約具有復雜的用例,並且默認適配器功能不能涵蓋該用例,那么應該怎么做?如果需要執行一些高級數據操作怎么辦?也許不是要提交給合同的原始數據,而是通過對數據點進行統計分析而生成的多個元數據。可能可以使用默認適配器來操作鏈上的數據,但希望降低成本。也許由於使用憑證來源,我不希望其API請求出現在鏈上,也不想在鏈上或Oracle作業規範中指定這些憑證。這是外部適配器起作用的地方。

技術指南:如何創建通用的區塊鏈智能合約?

由於外部適配器是與Chainlink Oracle節點脫鏈存在的代碼段,因此只要數據輸入和輸出遵循適配器的JSON規範,它們就可以用他們選擇的任何語言編寫並執行人們可以想到的任何功能。。外部適配器充當Chainlink分散的Oracle網絡與外部數據之間的接口,使節點操作員能夠知道如何請求和接收JSON響應,然後在鏈上使用它們。

通過外部適配器在鏈外定義此接口規範將帶來巨大的可能性:現在可以根據個人安全標准在鏈外存儲API憑據,並且可以使用選擇的語言以任何方式對數據進行編程,而無需使用任何以太坊費用用於資助鏈上交易。從某種意義上說,外部適配器就像分散的Oracle的另一層一樣。它以低成本快速地將數據打包到區塊鏈的外部,然後將其轉換為整潔的JSON格式,供Chainlink oracle使用。節點在鏈上進行了驗證。

外部適配器是使Chainlink成為多功能分散式Oracle網絡的重要組成部分。合同开發人員可以根據需要自由地實現這些適配器,或者從Chainlink市場上的現有適配器中進行選擇。如果它是尋求創建外部適配器的智能合約开發人員,則Chainlink僅需要JSON接口來進行數據請求和返回數據。在這兩個界面之間,开發人員可以自由創建和操縱數據以適合他們的用例。作為Oracle節點操作員,要支持外部適配器並處理其他請求,必須在節點用戶界面中為其創建橋,並將適配器的橋名稱添加到支持的任務中。

技術指南:如何創建通用的區塊鏈智能合約?

您可以在Chainlink Build External Adapter頁面上訪問創建外部適配器的完整示例。

Chainlink致力於為區塊鏈和智能合約开發人員提供工具,以便他們可以根據實際需求使用實際數據支持通用智能合約。

Chainlink致力於為區塊鏈和智能合約开發人員提供工具,以便他們可以根據實際需求使用實際數據支持通用智能合約。Chainlink的設計結合了通過默認適配器和可擴展外部適配器對任何API的直接調用,從而為开發人員提供了一個靈活的平臺來創建所需的任何數據。這為智能合約打开了一個真實的數據世界,並給出了新的用例。

總結

如果您是一個智能合約开發人員,想要通過外部數據增加智能合約的效用,則需要嘗試這個Chainlink示例練習,以部署與鏈下數據進行交互的通用智能合約。

Chainlink是MIT許可下的开源代碼。因此,如果您想开發一種可以從Chainlink的分散式預言中受益的產品,或者想協助Chainlink網絡的开發,則需要參考开發人員文檔或參與有關Discord的技術討論。

鄭重聲明:本文版權歸原作者所有,轉載文章僅為傳播信息之目的,不構成任何投資建議,如有侵權行為,請第一時間聯絡我們修改或刪除,多謝。

推薦文章

btc日內再次下跌 短线應當如何處理?

盡管以太坊現貨ETF獲批是個好消息,但市場反應卻不如預期。在消息公布後,以太坊價格出現了小幅下跌,...

加密蓮
107 3個月前

7月23日、BTC(合約)ETH(合約)行情分析及操作策略

昨日收益還是不錯的,日內給出的現價空單分別止盈我們目標點位,恭喜跟上的朋友喫肉。時間一晃到月底了,...

倪老師
107 3個月前

幣圈院士:血與淚的教訓!交易者為何總是撞死在同一棵樹上?

幣圈院士談。交易市場中的幾種“死法” 在幣圈市場鱗次櫛比的海洋,風起雲湧,時常讓人感到驚手不及。在...

幣圈院士
111 3個月前

7月23:Mt. Gox 比特幣錢包在市場緊縮的情況下轉移了價值 28.2 億美元的 BTC

7月23:Mt. Gox 比特幣錢包在市場緊縮的情況下轉移了價值 28.2 億美元的 BTC一個引...

168超神
106 3個月前

悅盈:比特幣68000的空完美落地反彈繼續看跌 以太坊破前高看回撤

一個人的自律中,藏着無限的可能性,你自律的程度,決定着你人生的高度。 人生沒有近路可走,但你走的每...

我是周悅盈
88 3個月前

btc完美盈利 晚間波動較大注意

昨日btc空單完美給到,最大化走出一千七百點空間~ btc: 日內开盤下跌繼續測試66000一线,...

加密蓮
95 3個月前