www.久久久久|狼友网站av天堂|精品国产无码a片|一级av色欲av|91在线播放视频|亚洲无码主播在线|国产精品草久在线|明星AV网站在线|污污内射久久一区|婷婷综合视频网站

當前位置:首頁 > 物聯(lián)網 > 區(qū)塊鏈
[導讀] 智能合約本身沒有訪問區(qū)塊鏈外部數據的能力。而外部的數據對于大多數智能合約應用場景來說都是至關重要的,所以這一功能的缺失限制了智能合約的更進一步的發(fā)展。比如涉及金融,供應鏈,保險,安全等諸多領域的

智能合約本身沒有訪問區(qū)塊鏈外部數據的能力。而外部的數據對于大多數智能合約應用場景來說都是至關重要的,所以這一功能的缺失限制了智能合約的更進一步的發(fā)展。比如涉及金融,供應鏈,保險,安全等諸多領域的智能合約都依賴于外部事件。智能合約無法獲取關鍵的鏈下事件信息,比如價格變動,物流日期,以及支付能力。沒有這些外部的信息,大多數智能合約的應用都是沒有實際應用價值的。

為什么智能合約無法自主獲取外部數據?

因為區(qū)塊鏈網絡是確定性的。智能合約在區(qū)塊鏈這種去中心化的,自我調節(jié)的基礎設施上運行,其中的任何信息都是確定的,可驗證的。區(qū)塊鏈可以正常運行,必須在各個參與方之間達成共識。為了實現這個目標,人們設計了[各種]*共識機制*,比如工作量證明(Proof of Work),權益證明(Proof of Stake),行動證明(Proof of Activity)。這些共識機制使得區(qū)塊鏈這一分布式的系統(tǒng)形成一個統(tǒng)一的狀態(tài)。

有了這些共識機制,就可以驗證網絡上的交易,確定統(tǒng)一公開賬本的狀態(tài)。這種設計允許區(qū)塊鏈以公平和安全的方式運行,而無需使用集中式身份驗證。因此,區(qū)塊鏈整體上是*確定性狀態(tài)機*。

但是區(qū)塊鏈外部的數據是非確定性的,因為從某種意義上說,它是通過區(qū)塊鏈的歷史無法驗證的值。外部數據會受各種因素的影響動態(tài)變化。價格的頻繁變化,公司實時更新物流信息,物流變化的更新,等等。因為這些信息是不確定的,智能合約沒有一種方式可以驗證這些數據進而達成共識。因此,無法確認為真實的數據對區(qū)塊鏈沒有任何意義。

如何把外部數據提供給智能合約?

通過區(qū)塊鏈中間件,特別是安全可靠的預言機可以實現。預言機扮演者數據代理人的角色,連接外部數據與智能合約。它充當區(qū)塊鏈數據API之間的中間層,將數據轉換為區(qū)塊鏈可以讀取的格式。此外,預言機還負責驗證外部數據的正確性,因此可信賴的來源(信任最小化)至關重要。

但是,在中心化的預言機服務中,預言機會有被攻擊的可能性(被黑客攻擊,服務停機,數據篡改等),這導致智能合約丟失了確定性和可靠性這一最關鍵的特性,從而使大多數基于現實場景的智能合約用例的不可用。如何解決這一問題呢,答案是去中心化的預言機網絡?;蛘哒f是Chainlink。

Chainlink通過提供與智能合約開發(fā)者的安全性和可靠性相匹配的去中心化的預言機網絡來解決聯(lián)通性問題。通過外部適配器(也被稱為chainlinks),區(qū)塊鏈可以安全地與chainlinked API連接。開發(fā)人員可以方便地將他們自己的智能合約與預先編寫的Chainlink API套件連進行連接,從而建立一個鏈下的預言機連接。

例如,假設您開發(fā)了一個智能合約,可以把代幣發(fā)送到一個地址。Chainlink(輸出預言機)通過PayPal發(fā)送離線支付。然后,預言機可以基于離線支付在鏈上提供收據,從而完成區(qū)塊鏈系統(tǒng)中的交易循環(huán)。

有了Chainlink,智能合約現在能夠通過一個去中心化的預言機網絡在大多數現實世界的應用場景中正常運行。Chainlink通過安全可靠得方式滿足智能合約的預設條件,因此所有相關方都可以從智能合約生態(tài)系統(tǒng)的巨大潛力中受益。

代碼層面,預言機是如何工作的?

使用預言機需要由足夠數量的LINK代幣,以及一些基本的Solididy知識,Solidity是編寫智能合約的語言。請參考Chainlink的[Solidity接口文檔]來了解Chainlink的所有方法。最后,wield能從Chainlink的預言機請求數據,你需要首先在你的合約中繼承ChainlinkClient合約。你可以通過[這里]的例子作為指導來創(chuàng)建合約,也可以參考[文檔]。

預言機可以幫助智能合約請求和獲取區(qū)塊鏈的外部數據。我們通過jobs來執(zhí)行預言機任務來完成請求。這些jobs有與預言機地址相對應的JobID。這些Job由一系列任務,或稱為[適配器],所組成,在指定JobID發(fā)送請求時, 這些任務或適配器定義了要完成的工作。

為了更好地展示預言機如何在代碼層面運行,我們通過一個請求以太網價格的示例智能合約來解釋:

contract MyContract is ChainlinkClient {

address owner;

constructor() public {

// Set the address for the LINK token on the public network

// 設置公共網絡的LINK代幣發(fā)行地址

setPublicChainlinkToken();

owner = msg.sender;

}

// AddiTIonal funcTIons here.。.

// 其他的函數。..

}

首先,為了能使用Chainlink網絡,你需要在你的合約中繼承ChainlinkClient合約。這是一個測試網和正式網通用的構造函數體。這是因為我們使用了setPublicChainlinkToken()方法,這個方法會根據合約部署的網絡環(huán)境,自動的獲取LINK代幣的發(fā)行地址。

所有當前的預言機和LINK代幣地址都可以在[這里]。存儲LINK代幣地址后,您可以指定預言機合約地址及其相應的JobID來創(chuàng)建請求。

// Creates a Chainlink request to the specified oracle with a given Job ID

// 通過給定預言機地址和JobID來創(chuàng)建Chainlink請求

funcTIon requestEthereumPrice(address _oracle, bytes32 _jobId)

public

onlyOwner

{

// newRequest takes a JobID, a callback address, and callback funcTIon as input

// 新的請求需要JobID,回調地址和回調函數作為輸入

Chainlink.Request memory req = buildChainlinkRequest(_jobId, this, this.fulfill.selector);

// Adds a URL with the key “get” to the request parameters

// 添加一個URL設置“get”作為key來請求參數

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

// Uses input param (dot-delimited string) as the “path” in the request parameters

// 使用點分隔的字符串作為請求參數中的path

req.add(“path”, “USD”);

// Adds an integer with the key “times” to the request parameters

// 為請求參數設置倍數

req.addInt(“times”, 100);

// Sends the request with 1 LINK to the oracle contract

// 向預言機還有發(fā)送1 LINK

sendChainlinkRequestTo(_oracle, req, ORACLE_PAYMENT);

}

請求通過buildChainlinkRequest()方法創(chuàng)建,接受相應的參數填寫到Chainlink.Request結構體中作為負載。你可以使用req.add()向請求添加參數,比如URL。一旦你準備好了所有的必須參數,可以通過sendChainlinkRequestTo()方法發(fā)送到特定的預言機合約地址,并支付1 LINK的代幣,作為給節(jié)點運營方的獎勵。請注意,在主網上,支付金額是各不相同的,但是為了方便大家理解,我們目前設置了為每次請求花費1 LINK。由于測試網絡上這些代幣沒有任何價值,所以我們可以通過[水龍頭]來獲取。

uint256 constant private EXPECTED_RESPONSES = 3;

uint256[] private prices;

uint256 public avgPrice;

function fulfillEthereumPrice(bytes32 _requestId, uint256 _price)

public

recordChainlinkFulfillment(_requestId)

{

if(prices.push(_price) == EXPECTED_RESPONSES) {

uint256 sum;

for(uint i = 0; i 《 prices.length; i++) {

sum = sum.add(prices[i]);

delete prices[i];

}

avgPrice = sum.div(EXPECTED_RESPONSES);

}

}

當Chainlink節(jié)點從指定的端點取回結果后,預言機合約會調用回填方法(fulfillment method)?;靥罘椒☉撏ㄟ^recordChainlinkFulfillment()修改器或validateChainlinkCallback()方法保護起來。這樣可以防止無關的人調用該方法,并且只能根據你的請求填寫相應的結果。

將所有這些組合到一起,就可以完成一個可以在以太坊測試網絡上可以獲取外部數據的預言機合約了。完整代碼見[這里]。

我如何開始使用Chainlink?

想要快速上手,你可以通過[這里]的幫助,通過Truffle部署智能合約。如果你已熟悉智能合約開發(fā),歡迎您隨時查看我們最新的博客文章“[44種通過Chainlink增強您的智能合約的方法]”。

本站聲明: 本文章由作者或相關機構授權發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點,本站亦不保證或承諾內容真實性等。需要轉載請聯(lián)系該專欄作者,如若文章內容侵犯您的權益,請及時聯(lián)系本站刪除。
換一批
延伸閱讀

9月2日消息,不造車的華為或將催生出更大的獨角獸公司,隨著阿維塔和賽力斯的入局,華為引望愈發(fā)顯得引人矚目。

關鍵字: 阿維塔 塞力斯 華為

加利福尼亞州圣克拉拉縣2024年8月30日 /美通社/ -- 數字化轉型技術解決方案公司Trianz今天宣布,該公司與Amazon Web Services (AWS)簽訂了...

關鍵字: AWS AN BSP 數字化

倫敦2024年8月29日 /美通社/ -- 英國汽車技術公司SODA.Auto推出其旗艦產品SODA V,這是全球首款涵蓋汽車工程師從創(chuàng)意到認證的所有需求的工具,可用于創(chuàng)建軟件定義汽車。 SODA V工具的開發(fā)耗時1.5...

關鍵字: 汽車 人工智能 智能驅動 BSP

北京2024年8月28日 /美通社/ -- 越來越多用戶希望企業(yè)業(yè)務能7×24不間斷運行,同時企業(yè)卻面臨越來越多業(yè)務中斷的風險,如企業(yè)系統(tǒng)復雜性的增加,頻繁的功能更新和發(fā)布等。如何確保業(yè)務連續(xù)性,提升韌性,成...

關鍵字: 亞馬遜 解密 控制平面 BSP

8月30日消息,據媒體報道,騰訊和網易近期正在縮減他們對日本游戲市場的投資。

關鍵字: 騰訊 編碼器 CPU

8月28日消息,今天上午,2024中國國際大數據產業(yè)博覽會開幕式在貴陽舉行,華為董事、質量流程IT總裁陶景文發(fā)表了演講。

關鍵字: 華為 12nm EDA 半導體

8月28日消息,在2024中國國際大數據產業(yè)博覽會上,華為常務董事、華為云CEO張平安發(fā)表演講稱,數字世界的話語權最終是由生態(tài)的繁榮決定的。

關鍵字: 華為 12nm 手機 衛(wèi)星通信

要點: 有效應對環(huán)境變化,經營業(yè)績穩(wěn)中有升 落實提質增效舉措,毛利潤率延續(xù)升勢 戰(zhàn)略布局成效顯著,戰(zhàn)新業(yè)務引領增長 以科技創(chuàng)新為引領,提升企業(yè)核心競爭力 堅持高質量發(fā)展策略,塑強核心競爭優(yōu)勢...

關鍵字: 通信 BSP 電信運營商 數字經濟

北京2024年8月27日 /美通社/ -- 8月21日,由中央廣播電視總臺與中國電影電視技術學會聯(lián)合牽頭組建的NVI技術創(chuàng)新聯(lián)盟在BIRTV2024超高清全產業(yè)鏈發(fā)展研討會上宣布正式成立。 活動現場 NVI技術創(chuàng)新聯(lián)...

關鍵字: VI 傳輸協(xié)議 音頻 BSP

北京2024年8月27日 /美通社/ -- 在8月23日舉辦的2024年長三角生態(tài)綠色一體化發(fā)展示范區(qū)聯(lián)合招商會上,軟通動力信息技術(集團)股份有限公司(以下簡稱"軟通動力")與長三角投資(上海)有限...

關鍵字: BSP 信息技術
關閉
關閉