如何創建通用的區塊鏈智能合約

2020-12-18 51CTO

區塊鏈智能合約能夠通過集成去中心化的Oracle來訪問鏈外數據。用戶在深入研究如何使用它們之前,重要的是要了解區塊鏈智能合約在全局中的重要性以及為什麼需要Oracle來訪問數據的原因。

如今,全球每天都在發生大量交易,並且它們通常受到協議或合同的約束。這可能是由供應商的服務條款、監管框架或兩者的組合所驅動的。這些協議的參數並不總是明確或透明的,它們最終取決於組織以及它是否願意按照事先商定的條款行事。

越來越多的合同正在實現數位化。區塊鏈技術的興起引入了智能合約,這是一種防止篡改、透明、公平的管理此類協議的系統。智能合約是由數學而不是組織來管理的。一旦合同生效,它們會自動執行合同的參數,為各方創造一個更加公平的結構。

智能合約的挑戰在於,它們通常依賴於將現實世界數據與區塊鏈(或數據從一個區塊鏈轉移到另一個區塊鏈)進行橋接的能力,以便智能合約能夠識別質量、評估可靠數據並觸發商定的結果滿足條件。而在以往這是一個過於複雜和困難的過程,限制了更廣泛的採用。

關於Chainlink

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

智能合約可以徹底改變業務中信任和自動化的處理方式,但是它們對區塊鏈事件應用範圍的限制嚴重限制了其潛力。開發人員希望與之交互的大部分內容都存在於「真實世界」中,例如定價數據、航運條件、全球事件等,以創建通用智能合約。這些合約具有外部意識,因此可以在掌握世界數據的情況下處理廣泛而通用的工作,Chainlink網絡為Solidity和其他區塊鏈開發人員提供了一個用於構建分散式Oracle的框架。

可以使用這些Oracle在以太坊網站上實時檢索分散應用程式(dApp)的數據。

Chainlink適配器

適配器是每個Chainlink節點默認支持的數據操作功能。節點在這種情況下是分散的。它們滿足數據請求,而Chainlink網絡由數量不斷增長的節點組成。其節點由眾多獨立的運營商運營。通過適配器,所有開發人員都具有用於發出數據請求的標準接口,而節點操作人員將遵循用於處理該數據的標準。這些適配器包括HTTP GET、HTTP POST、比較,複製等功能。適配器是dApp與外部世界數據的連接。

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

Get:獲取包含API URL的字符串以向Get請求。headers:將包含鍵作為字符串,將值作為字符串數組的對象。queryParams:獲取URL的查詢參數的字符串或字符串數組。extPath:採用斜槓分隔的字符串或字符串數組,以附加到作業的URL。Chainlink請求

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

//設置網址以在上執行Get請求

request.add("get", "https://min-api.cryptocompare.com/data/price?fsym=ETH&tsyms=USD");

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

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

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

這一示例來自完整的CoinGecko Consumer API:

Chainlink.Request memory req = build Chainlink Request(jobId, address(this),this. fulfill Ethereum Price.selector);send Chainlink Request To(oracle, req, fee);

可以使用分散的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構建外部適配器頁面上訪問創建外部適配器的完整示例。

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

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

使用Chainlink進行構建

如果是智能合約開發人員,希望通過外部數據增加智能合約的實用性,需要嘗試此Chainlink示例演練,以部署與鏈外數據進行交互的通用智能合約。

Chainlink是根據MIT許可證開放的原始碼,因此,如果要開發一款可以從Chainlink分散式預言中受益的產品,或者想協助開發Chainlink網絡,需要參考開發人員文檔或參加有關Discord的技術討論。還可以在Chainlink的網站、Twitter、Reddit、YouTube、Telegram和GitHub上了解更多信息。

相關焦點

  • 從Android調用區塊鏈智能合約
    介紹在上一篇文章中,我寫了關於使用Eclipse從Java調用部署了區塊鏈的智能合約的信息。 本教程將展示如何直接從Android開發環境-Android Studio中調用智能合約。區塊鏈研究實驗室|使用Java與區塊鏈智能合約進行交互環境要求我們將使用Tezos區塊鏈。
  • 區塊鏈世界裡程碑式升級——智能合約與區塊鏈結合
    在中國,區塊鏈也被看作核心技術自主創新的重要突破口,各行業相繼開始尋找區塊鏈賦能本領域的方法,以求助力解決發展痛點和難點。區塊鏈到底是什麼?如何運作?它的價值又如何體現?我們將以GISer的視角,陸續推出「區塊鏈」科普系列文章,為大家普及相關知識,分享區塊鏈和IPFS的相關應用,後續更新敬請關注!
  • 區塊鏈鏈改創建實體生態系統
    無論企業如何,技術都在不斷發展,因此對於IT部門而言,保持其當前記錄系統和企業應用程式以及由區塊鏈技術帶來的新應用程式至關重要。在已經建立的業務技術堆棧中採用區塊鏈將為已經多層的企業架構增加更多層。這將給企業系統的集成方式帶來巨大的變化。
  • 開發區塊鏈Dapp智能合約系統的前瞻
    智能合約相當於應用程式編程接口(API),但它不是在通常的web平臺上使用,而是在區塊鏈上應用。應用程式編程接口(API)允許用戶在他們使用的平臺上進行交互並引入某些特性。智能合約的作用智能合約允許去中心化應用程式(dApp)的前端用戶訪問分散在區塊鏈資料庫的某些信息。一個dApp可以有多個智能合約,當它們與區塊鏈交互時可以完成不同的功能。
  • 區塊鏈智能合約解析
    所謂「智能合約」就是「可編程合約」,或者叫做「合約智能化」。1994年,密碼學家尼克薩博首次提出了智能合約的概念。但是在過去中心化的體系下,受制於保具備中心化體系中的合約可以被系統隨時修改或者刪除,智能合約幾乎無意義。自從區塊鏈問世之後,智能合約發揮極大意義,可以被事先寫入到區塊鏈的分布式網絡體系中。
  • CY-Chain區塊鏈作業系統之智能合約
    智能合約又稱智能合同,由事件驅動的、具有狀態的、獲得多方承認的、運行在區塊鏈之上的且能夠根據預設條件自動處理資產的程序。智能合約最大的優勢是利用程序算法替代人為溝通、執行和監督成本。 交易數據上鏈後,根據預設條件自動執行智能合約,實現業務應用管理。
  • 區塊鏈中的智能合約是什麼
    最開始的智能合約是中心化智能合約,如信用卡自動還款、自動售貨機等,不過中心化智能合約因為信任問題導致難以廣泛應用。而區塊鏈天然適合承載智能合約,區塊鏈去中心化,不可篡改,透明可追溯,永久運行,互相印證這些特徵令智能合約有了廣泛應用的可能。到底智能合約是什麼?
  • 【跨國直播】美國智能合約方案商CyberMiles:如何落地區塊鏈商業...
    在本次【區塊鏈專題】,我們將邀請國內外已經或者正在推進區塊鏈商業應用案例的企業參與分享,內容包括前沿密碼學、智能合約技術、區塊鏈保險應用、商業智能合約的實踐等。信息不對稱、交易成本高,是移動互聯時代繞不開的難題。目前的商業貿易中,有極大一部分都需要第三方機構作為信用中介來處理支付信息。這時,具備去中心化、開放性、自治性等優點的區塊鏈闖入業界的視線。
  • 時代區塊鏈 | 什麼是智能合約?
    今天,時代區塊鏈要帶大家了解的,是智能合約。我們大概知道合約是什麼,但智能合約又是什麼呢?其實,合約的核心層面就是一個要約、一個承諾以及一種價值交換的行為。傳統合約是指雙方或多方通過協議來進行等值交換,雙方或者多方必須信任彼此,才能履行交易。而智能合約指的是一種資產的數位化協議,無需彼此信任。
  • 區塊鏈合約層是一種自動執行的數字協議
    過去的幾十年,計算機代碼已讓各類設備變得更智能、更先進,無數任務可被自動化執行,徹底改變了人們開展業務的方式。「智能合約」作為一種數位化契約,不需要外加人為幹預,即可實現自我執行和自我驗證。那它們究竟是如何運作的?又為何在區塊鏈時代才得以蓬勃發展?
  • E鏈信通用區塊鏈賦能企業升級|鏈信|智能合約|供應鏈|區塊鏈金融
    e鏈信通區塊鏈數據服務平臺擁有三大業務板塊,實現了投融撮合去中心化應用服務、還集合供應鏈金融的智能風控,智能合約,智能審批,專業數據分析和金融機構適配接口於一體,解決中小企業供應鏈資金難管理的問題。智能合約是一個區塊鏈上合約條款的電腦程式,在滿足執行條件時可自動執行。智能合約技術使得企業債權在供應鏈上的流轉都被區塊鏈記錄下來,加上,區塊鏈的不可篡改性,其具有強可信度。一旦核心企業付款,智能合約就可以自動清算。除此之外,信用在區塊鏈上傳遞的不衰減特性,使得核心企業的信用可以被多級節點企業應用。
  • 區塊鏈以太坊智能合約玩家盛宴
    PGB是以太坊2015到2017年以太坊開發人員內部使用智能合約失敗以來即2018年DeFi隨後出現的智能合約Players&39;Grand Banquet,簡稱PGB)最大的特點就是去中心化,即區塊鏈以太坊網絡不受中央集權控制。
  • 區塊鏈智能合約Smart contract原理及發展歷程科普
    二、區塊鏈+智能合約的融合發展從上面智能合約的定義和發展歷史來看,智能合約是先於區塊鏈出現的,在區塊鏈發展初期如比特幣並沒有引入智能合約的技術,同樣在區塊鏈之前,智能合約也並沒有廣為使用。智能合約是在區塊鏈2.0階段才引入的,或者應該反過來說,引入智能合約後的區塊鏈標誌著區塊鏈2.0時代的開啟。
  • 區塊鏈技術智能合約有哪些實際的應用場景
    智能合約同時也比區塊鏈概念發生得早一直到2008年為止才創造了採用智能合約所需的區塊鏈技術,並於2013年作為以太坊智能合約系統的一部分受到了關注。新的智能合約平臺為用戶提供了新的去中心化世界。基於區塊鏈的智能合約構建及執行過程如下:1.首先,您必須是區塊鏈的使用者。註冊用戶有一對公鑰和私鑰。公鑰是用戶在區塊鏈中的帳戶地址,私鑰是登錄該帳戶的唯一鑰匙或者也可以說是密碼。
  • DAML被選為區塊鏈服務網絡BSN的專用智能合約語言
    摘要: 由國家信息中心、中國移動、中國銀聯和北京紅棗科技創建的國家區塊鏈基礎設施BSN選擇了由Digital Asset創建的DAML(統一智能合約)。同時,預計在2021年普遍實現讓開發者在BSN上使用DAML進行智能合約開發的目標。目前,每個區塊鏈底層框架都有自己的智能合約開發語言,這意味著不同底層框架開發的DApp間無法正常交互。而BSN為企業提供了跨底層框架的低成本區塊鏈應用部署環境。
  • 區塊鏈服務網絡 BSN 選擇 DAML 作為智能合約開發語言
    由國家信息中心、中國移動、中國銀聯和北京紅棗科技創建的國家區塊鏈基礎設施 BSN 選擇由 Digital Asset 創建的 DAML 作為智能合約開發語言。「BSN 是中國最大的區塊鏈基礎設施項目,」區塊鏈服務網絡 BSN 發展聯盟理事長單志廣先生表示,「從創立之初,我們的目標就是打破區塊鏈的信息孤島,創建一個開放、可交互操作和所有人都可訪問的生態系統。這是一個中國區塊鏈發展史上激動人心的時刻,我們很榮幸能夠將 Digital Asset 的 DAML 集成到自己的生態中,推動 BSN 的繁榮發展。」
  • 區塊鏈的常識之,什麼是區塊鏈,智能合約是什麼?
    就是用計算機語言取代了法律語言記錄條款並由程序自動執行的合約。 換句話說,智能合約就是傳統合同的數位化版本,它跑在區塊鏈網絡上,程序自動執行。由於區塊鏈的去中心化,不可篡改,透明可追溯等特性,因此一旦觸發協議條款,不用擔心其不會執行命令。 它實現了用戶從信任第三方機構到信任合同本身,從信任參與方到信任代碼的轉變。
  • 幣小寶區塊鏈公開課16 | 什麼是智能合約?
    一、智能合約簡介智能合約是區塊鏈的核心技術之一,這個概念最早在1995年被尼克·薩博(Nick Szabo)提出。智能合約,就是一個在一定條件下自動執行命令的電腦程式。尼克·薩博提出的智能合約是十分廣泛的概念。
  • 幣小寶區塊鏈公開課16 | 什麼是智能合約?
    一、智能合約簡介智能合約是區塊鏈的核心技術之一,這個概念最早在1995年被尼克·薩博(Nick Szabo)提出。智能合約,就是一個在一定條件下自動執行命令的電腦程式。尼克·薩博提出的智能合約是十分廣泛的概念。
  • 小白課堂|區塊鏈裡的智能合約VS傳統合約
    智能合約,如果去掉智能,就能很好地理解他是一份合約,之所以前綴加上智能,是因為合約的條款可以以代碼的形式表現出來,並且保存在區塊鏈裡。如果合約的某個條款觸發了某個條件,那麼代碼就會自動執行,也就很難違約,這樣能很好地節省人為溝通和監督成本。傳統合約指雙方或多方通過協議來進行等值交換,雙方或多方必須彼此信任才能履行交易。