智能合約怎麼開發的
『壹』 區塊鏈要什麼技術開發
區塊鏈要什麼技術開發:
一、區塊鏈理論:區塊鏈開發者要對區塊鏈的理論知識具備熟悉的掌握能力,這是作為一名區塊鏈開發者最基本的要求。在裡面的內容包括了區塊鏈網路架構、去中心化等相關應用技術。拓展技術理論是對以太坊開發的掌握。
二、智能合約:智能合約是需要區塊鏈開發者用區塊鏈編程語言寫出來的一串代碼,根據不同場景構思邏輯後開發出來的信任機制,旨在消除第三方的介入,創造出高效、高信任的區塊鏈網路。區塊鏈開發者要實現這串代碼自動執行,且是不可逆的操作效果。
三、密碼學:區塊鏈應用場景很多都是具備高加密性的,點對點的加密模式是密碼學的特點。區塊鏈開發者通過研究密碼學,了解到錢包、密鑰、廣泛的加密和解密技術等加密概念
四、分布式架構:區塊鏈開發人者必須懂得分布式架構和網路的功能。去中心化網路是區塊鏈架構的基礎,在區塊鏈網路中信息的傳遞要遵循去中心化的方式,這樣每個人才能享受到同等的網路權益。
『貳』 用Go來做以太坊開發④智能合約
在這個章節中我們會介紹如何用Go來編譯,部署,寫入和讀取智能合約。
與智能合約交互,我們要先生成相應智能合約的應用二進制介面ABI(application binary interface),並把ABI編譯成我們可以在Go應用中調用的格式。
第一步是安裝 Solidity編譯器 ( solc ).
Solc 在Ubuntu上有snapcraft包。
Solc在macOS上有Homebrew的包。
其他的平台或者從源碼編譯的教程請查閱官方solidity文檔 install guide .
我們還得安裝一個叫 abigen 的工具,來從solidity智能合約生成ABI。
假設您已經在計算機上設置了Go,只需運行以下命令即可安裝 abigen 工具。
我們將創建一個簡單的智能合約來測試。 學習更復雜的智能合約,或者智能合約的開發的內容則超出了本書的范圍。 我強烈建議您查看 truffle framework 來學習開發和測試智能合約。
這里只是一個簡單的合約,就是一個鍵/值存儲,只有一個外部方法來設置任何人的鍵/值對。 我們還在設置值後添加了要發出的事件。
雖然這個智能合約很簡單,但它將適用於這個例子。
現在我們可以從一個solidity文件生成ABI。
它會將其寫入名為「Store_sol_Store.abi」的文件中
現在讓我們用 abigen 將ABI轉換為我們可以導入的Go文件。 這個新文件將包含我們可以用來與Go應用程序中的智能合約進行交互的所有可用方法。
為了從Go部署智能合約,我們還需要將solidity智能合約編譯為EVM位元組碼。 EVM位元組碼將在事務的數據欄位中發送。 在Go文件上生成部署方法需要bin文件。
現在我們編譯Go合約文件,其中包括deploy方法,因為我們包含了bin文件。
在接下來的課程中,我們將學習如何部署智能合約,然後與之交互。
Commands
Store.sol
solc version used for these examples
如果你還沒看之前的章節,請先學習 編譯智能合約的章節 因為這節內容,需要先了解如何將智能合約編譯為Go文件。
假設你已經導入從 abigen 生成的新創建的Go包文件,並設置ethclient,載入您的私鑰,下一步是創建一個有配置密匙的交易發送器(tansactor)。 首先從go-ethereum導入 accounts/abi/bind 包,然後調用傳入私鑰的 NewKeyedTransactor 。 然後設置通常的屬性,如nonce,燃氣價格,燃氣上線限制和ETH值。
如果你還記得上個章節的內容, 我們創建了一個非常簡單的「Store」合約,用於設置和存儲鍵/值對。 生成的Go合約文件提供了部署方法。 部署方法名稱始終以單詞 Deploy 開頭,後跟合約名稱,在本例中為 Store 。
deploy函數接受有密匙的事務處理器,ethclient,以及智能合約構造函數可能接受的任何輸入參數。我們測試的智能合約接受一個版本號的字元串參數。 此函數將返回新部署的合約地址,事務對象,我們可以交互的合約實例,還有錯誤(如果有)。
就這么簡單:)你可以用事務哈希來在Etherscan上查詢合約的部署狀態: https://rinkeby.etherscan.io/tx/
Commands
Store.sol
contract_deploy.go
solc version used for these examples
這寫章節需要了解如何將智能合約的ABI編譯成Go的合約文件。如果你還沒看, 前先讀 上一個章節 。
一旦使用 abigen 工具將智能合約的ABI編譯為Go包,下一步就是調用「New」方法,其格式為「New<contractname style="box-sizing: border-box; font-size: 16px; -ms-text-size-adjust: auto; -webkit-tap-highlight-color: transparent;">」,所以在我們的例子中如果你 回想一下它將是 NewStore 。 此初始化方法接收智能合約的地址,並返回可以開始與之交互的合約實例。</contractname>
Commands
Store.sol
contract_load.go
solc version used for these examples
這寫章節需要了解如何將智能合約的ABI編譯成Go的合約文件。如果你還沒看, 前先讀 上一個章節 。
在上個章節我們學習了如何在Go應用程序中初始化合約實例。 現在我們將使用新合約實例提供的方法來閱讀智能合約。 如果你還記得我們在部署過程中設置的合約中有一個名為 version 的全局變數。 因為它是公開的,這意味著它們將成為我們自動創建的getter函數。 常量和view函數也接受 bind.CallOpts 作為第一個參數。了解可用的具體選項要看相應類的 文檔 一般情況下我們可以用 nil 。
Commands
Store.sol
contract_read.go
solc version used for these examples
這寫章節需要了解如何將智能合約的ABI編譯成Go的合約文件。如果你還沒看, 前先讀 上一個章節 。
寫入智能合約需要我們用私鑰來對交易事務進行簽名。
我們還需要先查到nonce和燃氣價格。
接下來,我們創建一個新的keyed transactor,它接收私鑰。
然後我們需要設置keyed transactor的標准交易選項。
現在我們載入一個智能合約的實例。如果你還記得 上個章節 我們創建一個名為 Store 的合約,並使用 abigen 工具生成一個Go文件。 要初始化它,我們只需調用合約包的 New 方法,並提供智能合約地址和ethclient,它返回我們可以使用的合約實例。
我們創建的智能合約有一個名為 SetItem 的外部方法,它接受solidity「bytes32」格式的兩個參數(key,value)。 這意味著Go合約包要求我們傳遞一個長度為32個位元組的位元組數組。 調用 SetItem 方法需要我們傳遞我們之前創建的 auth 對象(keyed transactor)。 在幕後,此方法將使用它的參數對此函數調用進行編碼,將其設置為事務的 data 屬性,並使用私鑰對其進行簽名。 結果將是一個已簽名的事務對象。
現在我就可以看到交易已經成功被發送到了以太坊網路了: https://rinkeby.etherscan.io/tx/
要驗證鍵/值是否已設置,我們可以讀取智能合約中的值。
搞定!
Commands
Store.sol
contract_write.go
solc version used for these examples
有時您需要讀取已部署的智能合約的位元組碼。 由於所有智能合約位元組碼都存在於區塊鏈中,因此我們可以輕松獲取它。
首先設置客戶端和要讀取的位元組碼的智能合約地址。
現在你需要調用客戶端的 codeAt 方法。 codeAt 方法接受智能合約地址和可選的塊編號,並以位元組格式返回位元組碼。
你也可以在etherscan上查詢16進制格式的位元組碼 https://rinkeby.etherscan.io/address/#code
contract_bytecode.go
首先創建一個ERC20智能合約interface。 這只是與您可以調用的函數的函數定義的契約。
然後將interface智能合約編譯為JSON ABI,並使用 abigen 從ABI創建Go包。
假設我們已經像往常一樣設置了以太坊客戶端,我們現在可以將新的 token 包導入我們的應用程序並實例化它。這個例子里我們用 Golem 代幣的地址.
我們現在可以調用任何ERC20的方法。 例如,我們可以查詢用戶的代幣余額。
我們還可以讀ERC20智能合約的公共變數。
我們可以做一些簡單的數學運算將余額轉換為可讀的十進制格式。
同樣的信息也可以在etherscan上查詢: https://etherscan.io/token/?a=
Commands
erc20.sol
contract_read_erc20.go
solc version used for these examples
『叄』 以太坊的智能合約
智能合約是運行在計算機裡面的,用於保證讓參與方執行承諾的代碼,般情況下,普通合約上記錄了甲方與乙方各方面的關系條款,並通常是通過法律強制執行或保護的,而「智能合約」則是用密碼或密鑰來執行關系。以更加直接的角度來理解的話,即「智能合約」的程序內容將同-開始大家一起設定好的那樣百分百執行,並且零差錯。
舉個例子,以太坊用戶可以使用智能合約在特定日期向朋友發送10個以太幣。在這種情況下,用戶可以操作創建一個合約,然後將程序推人該合約中進行特殊計算,以便它能夠執行所需的命令。而以太坊就是專門把精力集中在這件事上的這么一個平台。
比特幣是第一個支持「智能契約」的資源幣種,因為網路的價值在於把價值或數據從一個點或人轉移到另一個點或人身上。節點網路只在滿足某些條件時才會進行驗證,但是,比特幣僅限於貨幣用例。相反,以大坊取代了比特幣那種帶有不小限制性的編程語言,取而代之的是一種允許開發人員編寫自己程序的語言。以太坊允許開發人員編寫他們自己的「智能契約」,即「自主代理」或「自治代理」,正如ETH白皮書所稱的那樣。該編程語言是「圖靈完備」語言,這意味著它支持一組更廣泛的計算指令。智能合約能做些什麼呢?
1.「多簽名」賬戶功能,只有在一定比例的人同意時才能使用資金。這個功能經常用在與眾籌或募捐類似的活動中。
2.管理用戶之間所簽訂的協議。例如,一方從另一方購買保險服務3.為其他合同提供實用程序。
4.存儲有關應用程序的信息,如「域注冊信息」或「會員信息記錄」。概念有時候比較晦澀,我們舉一個募捐的智能合約的例子來幫助理解:假設我們想向全網用戶發起募捐,那就可以先定義一個智能賬戶,它有三個狀態:當前募捐總量,捐款目標和被捐贈人的地址,然後給它定義兩個函數:接收募捐函數和捐款函數。
接收募捐函數每次收到發過來的轉賬請求,先核對下發送者是否有足夠多的錢(EVM會提供發送請求者的地址,程序可以通過地址獲取到該人當前的區塊鏈財務狀況),然後每次募捐麗數調用時,都會比較下當前募捐總量跟捐款目標的比較,如果超過目標,就把當前收到的捐款全部發送到指定的被捐款人地址,否則的話,就只更新當前募捐總量狀態值。
捐款函數將所有捐款發送到保存的被捐贈人地址,並且將當前捐款總量清零。每一個想要募捐的人,用自己的ETH地址向該智能賬戶發起一筆轉賬,並且指明了要調用接受其募捐函數。於是我們就有一個募捐智能合約了,人們可以往裡面捐款,達到限額後錢會自動發送到指定賬戶,全世界的礦工都在為這個合約進行計算和擔保,不再需要人去盯著看有沒有被挪用,這就是智能合約的魅力所在。
『肆』 長安鏈--智能合約的開發、編譯、安裝、調用、查詢(二)
官方參考文檔: https://docs.chainmaker.org.cn/dev/%E6%99%BA%E8%83%BD%E5%90%88%E7%BA%A6.html
學習智能合約的鄭喚開發,通常需要有Demo來學習API的使用方式,項目組織方式。在長安鏈學習過程中也是如此,所以第一步獲取合約模塊。
1.1) 拉取鏡像: docker pull chainmakerofficial/chainmaker-go-contract:1.1.1
長安鏈為我們提供合約開發的鏡像,內部包含合約模板。
1.2) 啟動並進入容器: docker run -it --name chainmaker-go-contract -v ${PWD}:/home chainmakerofficial/chainmaker-go-contract:1.1.1 bash
啟動 chainmaker-go-contract 容器並進入,同時將當前目錄掛載到滾睜容器的 /home 目錄下
1.3) 解壓並分析合約模板
cp /home
tar xzvf contract_go_template.tar.gz
按照大叢歲官方參考文檔方式 在 chainmaker-go-contract 容器中執行 ./build.sh
生成main.wasm文件
2)執行TestUserContractHash Test方法
這里使用的是默認配置文件,如果需要改變埠、連接數、TLS使能等等,需要修改 chainmaker-sdk-go/testdata/sdk_config.yml
『伍』 Defi中的關鍵 什麼是智能合約
常有人問,什麼是智能合約? 那麼一定得先了解什麼是「合約」。
什麼是智能合約?
智能合約(Smart Contract)是上世紀90年代由密碼學家尼克·薩博提出的理念,由於當時缺乏可信的執行環境,智能合約沒有被應用和發展, 直到 以太坊 的出現,才讓智能合約得以「復活」。
那智能合約到底是什麼呢?簡單來說智能合約就是用計算機語言取代了法律語言記錄條款並由程序自動執行的合約。換句話說,智能合約就是傳統合約的數字化版本,跑在區塊鏈網路上,由程序自動執行。
自動售貨機、ATM取款機, 在某種程度上都可以被理解為執行智能合約的機器 ,但這都不是真正意義上的智能合約
設計階段的智能合約安全注意事項
考慮威脅建模和安全設計
What:從開發生命周期的一開始就實施識別系統的潛在威脅並確定其優先順序的具體方案是很重要的 —— 智能合約開發人員應確定要在開發中實施的所有安全控制以及應在開發中檢查的所有威脅測試、審計和監控。所有的安全假設,包括攻擊的預期復雜程度和手段,都應在設計階段明確定義和闡明。
How:遵循已知的威脅建模實踐。如果開發團隊沒有內部安全專業知識,那麼它應該在設計階段的早期與安全顧問合作。在設計系統時採用「攻擊者」的心態,並假設任何個人、硬體或服務都可能受到攻擊。
智能合約有哪些特點
與傳統的合約相比,智能合約有三大特點:
1、合約內容公開透明
智能合約部署在區塊鏈上,其合約內容自然是公開透明的。
2、合約內容不可篡改
同樣,因為部署在區塊鏈上原因,智能合約的內容是無法被修改的。
3、永久運行
運行在區塊鏈上的智能合約,同樣被區塊鏈上網路節點共同維護,只要區塊鏈在,智能合約就能永久的運行下去。有種「鏈在合約就在」的兄弟情義之感。
有區塊鏈三大特點加持的智能合約,與傳統的合約相比主要有如下優勢
智能合約是用計算機語言取代了法律語言記錄條款、由程序自動執行的合約。 部署在區塊上的它,也具備了區塊鏈的數據公開透明、不可篡改、永久運行的特點。
與傳統的合約相比, 智能合約有去信任、安全、高效、無需第三方仲裁的優點 。但智能合約並不完美,而且也不智能或者說它的智能程度很低。
文章中提到智能合約的執行無需第三方機構裁決,同時又提到,當執行條件涉及到外部信息時,智能合約無法感知 ,需要對智能合約輸入相關的信息,才能觸發智能合約去執行裁決
『陸』 FIL智能合約解讀
這可以通過幾個關鍵的方式實現,都可以通過定製的Chainlink外部適配器實現:
1. 智能合約輸入—使用Chainlink口令將存儲在星際文件系統上的經過密碼學證明的數據橋接到區塊鏈上。然後,這些數據可以作為輸入,在Ethereum等網路上觸發智能合約應用程序的執行。
2. 智能合約輸出—允許智能合約向星際文件系統發送輸出,作為數據存儲的命令,由Chainlink口令橋接這兩個環境。
3. 智能合約自動化—利用Chainlink Keepers,根據預先定義的條件,如定期的時間間隔或市場活動,觸判嘩發輸入或輸出的預言機工作。
鑒於混合智能合約應用的快速增長,它們將繼續產生和消耗更多的數據,這是合乎邏輯的—需要更大的存儲需求,同時保持區塊鏈的防篡源隱改和可用性保證。Chainlink中間件的雙向通信能力使星際文件系統和外部區塊鏈之間的通信成為可能,這擴展了智能合約的不可更改的數據存儲能力。
申請Chainlink和星際文件系統的聯合資助
Chainlink和星際文件系統的聯合資助計劃正在支持最多五個團隊建立由防篡改文件存儲和通用連接驅動的卓越混合智能合約應用。從本質上講,這些聯合資助是為那些將Web3.0堆棧擴展到鏈上計算之外,並擴展到去中心化的鏈下計算、數據和存儲的開發者准備的。
以下是一些可能的混合智能合約應用的例子,但我們鼓勵所有結合Chainlink和星際文件系統的提案:
星際文件系統存儲提供者保險
當星際文件系統存儲提供者不可靠時,Chainlink預言機可以通知外部智能合約。如果預言機不能從存儲中檢索數據或確定存儲提供者離線,可以自動向另一個區塊鏈上的投保人發放保險賠付。
數據賞金
智能合約可以匯集資金,用於存儲特定的數據,如其獨特的內容標識符(CID)的特徵。一旦證明它已被存儲在星際文件系統網路上的證據從Chainlink預言機處轉達,就會觸發支付。
永久存儲
由於Chainlink的雙向連接,其他區塊鏈上的智能合約可以在星際文件系統上驗證存儲。可以在Ethereum等網路上建立合約,任何人都可以在星際文件系統上以特定的時間間隔存入和資助數據的存儲。
DeFi數據
智能合約可以使用Chainlink預言機,以防篡改的方式在星際文件系統上存儲大量的金融數據,這些數據可以按需交付給各種區塊鏈上的智能合約,以創造更多的互操作性。
如果你想參加Chainlink-星際文件系統資助項掘裂行目,請在2021年9月17日之前在這里申請。最多五個團隊將被選為共同贊助的贈款,這些贈款將用於進一步開發他們的項目。
『柒』 利用python的flask框架開發智能合約
開發智能合約的框架有很多,比如:
但我是一個pythoner,顯然上述都不合適
3.6
ganache是以太坊的本地測試鏈
web3是一個用於和以太坊交互的python庫。
flask的插件,可快速構建restful風格的api
flask的插件,用於序列化/反序列化
啟動一個區塊鏈,用於測試智能合約的發布
先查看本地的solidity版本是多少
使用solidity編寫智能合約。
solidity是用於編寫以太坊智能合約的語言。
編寫user.sol文件
官方的版本中要連接 stringUtils 和 主文件 ,因為我是一個菜雞,不知道怎麼導入外部包,所以直接省掉了這部分操作。
合約部署成功以後(僅部署一次即可),然後可以通過flaskapi來做數據 「存」,「取」 操作。
『捌』 如何做智能合約開發需要多長時間
找一家專業的公司做,專業的事交給專業的人。他們做的很快的,像鑫宏攔世通網路悄昌就啟絕扒聽專業的,報價比較實惠! 你也可以網路下。
『玖』 以太坊智能合約開發:讓合約接受轉賬
在以太坊智能合約開發中,通常會有向合約地址進行轉賬的需求,那麼有幾種向合約地址進行轉賬的方式呢?
有三種方式:
部署合約時轉賬
調用合約提供的方法
直接向合約地址進行轉賬
但有一個問題,以太坊的智能合約默認是拒絕來自任何地址的轉賬,那麼如何讓合約能夠支持接收轉賬呢?
1、部署轉賬
在進行合約開發時,如果想要在部署時,直接向該合約進行轉賬,只需要給構造函數中添加payable修飾符。
示例:
2、執行合約轉賬
執行合約轉賬,則需要給你需要支持轉賬功能的方法添加payable修飾符
示例:
3、直接轉賬
支持直接轉賬,需要藉助後備函數(fallback function),只需要為後備函數添加 payable 修飾符
示例:
『拾』 一文讀懂混合型智能合約:如何結合鏈上與鏈下計算資源
混合型智能合約包含鏈上運行的代碼和鏈下數據、計算資源,預言機可為其提供喂價、儲備金證明、可擴展計算等功能。
撰文:Chainlink
混合型智能合約包含區塊鏈上運行的代碼以及區塊鏈下的數據和計算資源,這些資源由去中心化預言機網路傳輸至鏈上。混合型智能合約可以協調復雜的經濟和 社會 活動,具有區塊鏈防篡改的特質,並且可以安全地接入鏈下預言機服務,實現各種創新功能,如可擴展性、保密性、公允排序以及接入任何鏈下數據源或系統。
本文將明確定義混合型智能合約在區塊鏈信任模式中的作用,並闡述 Chainlink 預言機為混合型智能合約提供的各種去中心化服務,以及這一發展將如何催生出新一代的混合型智能合約應用。這些連通了鏈下資源的混合型智能合約將在未來席捲幾乎所有主流行業,並改變整個 社會 的合作方式。
預言機如何擴展區塊鏈上的合作方式
區塊鏈在本質上是促進可信合作的計算基礎架構,這是它的關鍵功能。參與者有了信任,才會堅定地認為合作關系是可靠、真實且有效的。在合作中建立信任最常見的方式就是簽署合約。合約定義了各方的法律和商業義務,以及他們行為會受到的獎勵和懲罰。然而,如今的合約義務執行機制卻漏洞百出。甚至一些情況下,某個參與者會擁有絕對優勢,比如操縱和影響合約執行機制,比對手方得知更多消息,或擁有更多時間和資本延長仲裁過程。因此,現在的合約系統變成了:你必須相信對手方的品牌背書,才能信任你們之間的合作關系是牢靠的。
區塊鏈技術的出現使合作從品牌背書轉向了基於演算法的信任(math-based trust)。合約的存放、執行和託管都轉移到了去中心化網路中運行的代碼邏輯中,個人完全無法干預和篡改。區塊鏈就像一台沒有聯網的計算機,可信度非常高,因為它是一個封閉的環境,並且只能實現幾種容易執行的功能,比如在一個封閉賬本中的多個地址之間轉移通證。這種設置是有意而為。雖然區塊鏈的封閉性和功能的單一性為它帶來了防篡改性和高度的確定性(這也是區塊鏈最有價值的地方),但同時也排除了任何需要接入鏈下數據、計算或功能的合作方式。
由於用戶希望擴展區塊鏈上可行的合作方式,因此預言機以及混合型智能合約相繼出現。預言機為區塊鏈接入外部世界提供了安全的門戶,讓智能合約應用可以驗證外部事件,基於外部系統觸發操作,並完成在鏈上無法實現的計算任務。
Chainlink2.0 白皮書中提到,去中心化預言機網路(DONs)極大擴展了智能合約可以實現的鏈上合作方式。去中心化金融(DeFi)的快速崛起就是一個很好的例子。Chainlink 去中心化預言機網路將金融市場數據傳輸到區塊鏈,支持 Aave 貨幣市場、Synthetix 衍生品平台、dYdX 杠桿交易市場以及 Ampleforth 演算法穩定幣等各種混合型智能合約協議,因此加速了 DeFi 的發展。
混合型智能合約的構成要素
混合型智能合約應用包含兩個部分,即:1)智能合約——這是專門在區塊鏈上運行的代碼;2)去中心化的預言機網路——這是為智能合約提供的安全鏈下服務。這兩個模塊安全地無縫交互,共同形成了混合型智能合約應用。最後,鏈上代碼通過許多獨特的方式得到增強,並且激活了一系列全新的應用場景,突破了之前鏈上代碼在技術、法律或金融等方面的限制。
混合型智能合約將兩個完全不同的計算環境同步在一起,打造出區塊鏈或預言機網路單獨無法實現的應用功能,並且將這兩個環境中獨一無二的優勢結合在一起。鏈上代碼在極其安全且功能受限的區塊鏈環境中運行,攻擊表面較小,因此用戶在執行和儲存時可以獲得極高的確定性,代碼一定會嚴格執行,結果將被永遠儲存在鏈上,不可篡改。而 DON 則在鏈下運行,因此可以更靈活地實現更多功能並訪問更多數據。
值得注意的是,DON 也具有非常高的防篡改性和可靠性,可以與智能合約相媲美,但不同的是,DON 是在封閉的鏈下環境中運行,並且採用了多種安全機制。每個 DON 都會為一個應用提供定製化的去中心化服務,也就是說同一條區塊鏈上的其他智能合約與這個 DON 的性能沒有任何關聯,而且保障所有智能合約安全的底層區塊鏈共識機制也不會有任何風險。DON 作為獨立的服務,不僅在安全上具有優勢,而且還兼具靈活性,可以驗證並計算更復雜且開放式的鏈下數據。
比如,一些智能合約選擇接入 DON 的標準是去中心化水平以及加密經濟安全性,而另一些智能合約則會選擇節點聲譽高且採用了高級加密技術展開可驗證隱私計算的 DON。在這些異構網路中,可以並行幾千個或甚至幾百萬個 DON,每個 DON 之間不會相互依賴,並可以為具體應用提供專門的去中心化服務。同一個 DON 的用戶也可以共攤服務成本(如:目前眾多 DeFi 協議共同使用 Chainlink ETH/USD 喂價預言機,並分攤成本)。這個框架非常重要,可以同時為所有區塊鏈和應用提供服務,比如為高速區塊鏈上運行的應用接入鏈下數據並保障隱私。另外,去中心化程度較高的區塊鏈上的應用也需要接入可擴展的計算資源。
混合型智能合約如何結合鏈上和鏈下計算資源
為了進一步了解鏈上和鏈下模塊的差異,我們先為每個模塊明確定義:
鏈上模塊:區塊鏈
維護賬本,可靠地託管用戶資產,並與私鑰交互。
處理用戶之間不可逆的轉賬交易,執行最終結算。
解決分歧,建立安全護欄,保障 DON 的鏈下服務正常運行。
鏈下:去中心化的預言機網路
從鏈下 API 安全地獲取和驗證數據,並傳輸到區塊鏈和 layer-2 網路中的智能合約。
為區塊鏈和 layer-2 網路中的智能合約展開各種計算任務。
將智能合約輸出的數據傳輸至其他區塊鏈或鏈下系統。
混合型智能合約結合了鏈上代碼和鏈下去中心化預言機網路,實現更高級的區塊鏈應用
Chainlink 去中心化服務為混合型智能合約保駕護航
定義了混合型智能合約之後,我們來討論一下 Chainlink DON 為智能合約提供的各種去中心化服務。這些去中心化服務可以大致分為兩類,即:鏈下數據和鏈下計算。
鏈下數據
DON 可以在各種鏈下數據和區塊鏈之間搭起連通橋梁,為混合型智能合約輸入所需數據。以下是初步可以訪問的數據類型:
喂價——從幾百家交易平台聚合的資產價格數據,數據基於交易量加權計算,並剔除了異常值和虛假交易。
儲備金證明——關於通證資產當前儲備金余額的最新數據,比如 WBTC 的比特幣抵押資產,或 TUSD 的美元抵押資產。
任何 API——來自受密碼保護 API 介面的付費數據,數據類型涵蓋天氣預報、 體育 比賽結果、企業後台數據以及物聯網數據。
區塊鏈中間件——區塊鏈抽象層,使鏈下系統可以接入任何區塊鏈網路中的智能合約,雙向讀寫數據。
鏈下計算
DON 可以代表智能合約執行一系列鏈下計算,幫助智能合約獲取某些數據,或者打造原生區塊鏈上無法實現的功能,比如隱私保護、可擴展性以及公允排序。以下是目前已經實現和未來即將實現的部分 DON 計算功能:
Keeper 網路——指定期維護智能合約的自動化 bot,在適當的時間點啟動合約,執行關鍵的鏈上功能。
鏈下報告(OCR)——以可擴展的方式聚合 DON 預言機節點響應的數據,然後將聚合數據在單筆交易中發送至鏈上,以降低鏈上成本。
可擴展的計算——為智能合約執行實現高吞吐量和低成本,採用現成的 layer-2 技術定期與鏈上同步。
可驗證隨機函數(VRF)——安全地生成可驗證的隨機數,採用加密證明技術,證明過程的完整性。
數據和計算隱私——保護隱私的預言機計算功能採用零知識證明(DECO)、可信硬體(Town Crier)、安全的多方計算以及特定的 DON 委員會制度,將敏感數據保密地傳輸至智能合約。
公允排序服務(FSS)——根據預定義的公平原則開展去中心化的交易排序,避免搶跑攻擊和礦工可提取價值(MEV)。
鏈上合約隱私——將合約邏輯與結算結果解綁,保護智能合約交易隱私,比如通過 DON 的 Mixicles 功能在兩方之間傳輸數據。
Chainlink 去中心化的預言機網路提供一系列豐富的服務,拓展了混合型智能合約應用的功能
混合型智能合約對全球各個行業帶來的影響
DON 可以實現高級的混合型智能合約框架,將不同系統和區塊鏈上的各個獨立實體無縫連接,實現安全和通用的自動化交互。Chainlink 為開發者克服了智能合約的技術壁壘,開發者可以利用區塊鏈的高確定性,並通過 DON 實現外部連接、隱私保障、可擴展性以及公允排序等各種關鍵功能。混合型智能合約不僅為網路中各個參與者創造了更可信和高效的合作空間,還將區塊鏈網路接入傳統鏈下基礎架構,並且無需在後端做任何修改。
DON 將為眾多智能合約應用提供所需的隱私保障和可擴展性,並涵蓋大多數企業應用場景和眾多 游戲 和金融應用,為其實現高吞吐量和實時決策。混合型智能合約還將激活一系列前所未有的全新應用場景,比如通過可驗證隨機數和去中心化交易排序實現基於演算法的經濟公平性和透明性。
已經感受到,或即將感受到混合型智能合約影響的部分主流行業:
身份信息——身份信息可自動驗證,並保護信息隱私。智能合約可以定義所需的個人信息以及所需操作。DON 對這些數據展開計算,驗證用戶個人信息,並同時保護信息不透露給對手方,並且不會儲存在鏈下系統。
金融——抗審查的開放式金融市場,訪問不設門檻,信息透明。智能合約可以為買家和賣家定義交易規則,DON 可以使用鏈下數據定價和結算,並實現額外的功能,如:隱藏交易、KYC 驗證、公允交易排序以及高速鏈下處理等。
供應鏈——在共享賬本上運行的多方交易協議,將產品線數字化,基於驗證過的數據跨多個系統進行自動化操作。智能合約可以定義合約義務、支付條款和懲罰機制。DON 可以利用隱私計算和物聯網數據追蹤運輸信息、監控質量控制、驗證客戶身份並觸發結算付款。
保險——基於預定義事件建立雙邊預測市場,並在此基礎上創建參數型保險。智能合約可以定義保費和理賠流程,DON 可以將合約接入鏈下數據,獲得報價並處理理賠申請。DON 還可以開展風險評估計算,從雲平台等數據源獲取復雜的風險評估結果,並以保密的方式驗證用戶身份。
游戲 ——自動發放 游戲 獎勵,用戶可以通過 NFT 完全擁有 游戲 內資產,並提供權威證明,證明所有參與者都有同樣的獲勝概率。智能合約可以定義 游戲 規則和獎勵發放模式,DON 可以提供防篡改的隨機數,保障 游戲 的公平性可以得到驗證,並且獎勵發放過程是公平的。 游戲 dApp 接入 DON 後,還可以接入增強現實的物聯網感測器等一系列鏈下數據源,並在鏈下處理部分 游戲 功能,以提高 游戲 性能。
市場營銷——營銷活動基於各種參數和指標自動實時發放獎勵。智能合約可以定義階梯式的獎勵發放模式,並設置具體的里程碑目標。DON 可以驗證目標是否達成,並對客戶數據和市場趨勢展開保密計算,以更有效地評估營銷活動。
治理——分布式社區可以安全公平地管理共享系統和資金池。智能合約可以定義完整的治理框架,DON 可以提供鏈下數據和計算資源,觸發利潤分發、費用分攤和身份認證等各種操作,有效抵禦女巫攻擊,驗證各成員的參與度,或甚至實現自動化的決策流程。
最終,DON 可以提供所有無法在鏈上實現的服務,並為現有數據和系統帶來更強大的加密安全保障,以啟動鏈下服務生態。混合型智能合約基礎架構可以豐富去中心化系統的合作方式,讓各個區塊鏈和非區塊鏈基礎設施可以安全可靠地無縫交互,並保障可擴展性、保密性、定製化和通用連接性。雖然目前加密貨幣資產規模已達數萬億美元,且 DeFi 經濟規模逼近 1000 億美元,但是區塊鏈生態仍處於發展初期,還有巨大潛力未被挖掘,因此混合型智能合約和 Chainlink 去中心化預言機網路擁有巨大的應用空間和潛力。
如果你想立刻著手開發混合型智能合約應用,並需要接入鏈下數據或計算資源,請查看我們的開發者文檔,你也可以在 Discord 頻道詢問技術問題或與 Chainlink 專家透過電話溝通。