日本黄色一级经典视频|伊人久久精品视频|亚洲黄色色周成人视频九九九|av免费网址黄色小短片|黄色Av无码亚洲成年人|亚洲1区2区3区无码|真人黄片免费观看|无码一级小说欧美日免费三级|日韩中文字幕91在线看|精品久久久无码中文字幕边打电话

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

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

為什么智能合約無法自主獲取外部數(shù)據(jù)?

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

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

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

如何把外部數(shù)據(jù)提供給智能合約?

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

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

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

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

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

代碼層面,預(yù)言機(jī)是如何工作的?

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

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

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

contract MyContract is ChainlinkClient {

address owner;

constructor() public {

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

// 設(shè)置公共網(wǎng)絡(luò)的LINK代幣發(fā)行地址

setPublicChainlinkToken();

owner = msg.sender;

}

// AddiTIonal funcTIons here.。.

// 其他的函數(shù)。..

}

首先,為了能使用Chainlink網(wǎng)絡(luò),你需要在你的合約中繼承ChainlinkClient合約。這是一個測試網(wǎng)和正式網(wǎng)通用的構(gòu)造函數(shù)體。這是因?yàn)槲覀兪褂昧藄etPublicChainlinkToken()方法,這個方法會根據(jù)合約部署的網(wǎng)絡(luò)環(huán)境,自動的獲取LINK代幣的發(fā)行地址。

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

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

// 通過給定預(yù)言機(jī)地址和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,回調(diào)地址和回調(diào)函數(shù)作為輸入

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

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

// 添加一個URL設(shè)置“get”作為key來請求參數(shù)

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

// 使用點(diǎn)分隔的字符串作為請求參數(shù)中的path

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

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

// 為請求參數(shù)設(shè)置倍數(shù)

req.addInt(“times”, 100);

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

// 向預(yù)言機(jī)還有發(fā)送1 LINK

sendChainlinkRequestTo(_oracle, req, ORACLE_PAYMENT);

}

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

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);

}

}

當(dāng)Chainlink節(jié)點(diǎn)從指定的端點(diǎn)取回結(jié)果后,預(yù)言機(jī)合約會調(diào)用回填方法(fulfillment method)?;靥罘椒☉?yīng)該通過recordChainlinkFulfillment()修改器或validateChainlinkCallback()方法保護(hù)起來。這樣可以防止無關(guān)的人調(diào)用該方法,并且只能根據(jù)你的請求填寫相應(yīng)的結(jié)果。

將所有這些組合到一起,就可以完成一個可以在以太坊測試網(wǎng)絡(luò)上可以獲取外部數(shù)據(jù)的預(yù)言機(jī)合約了。完整代碼見[這里]。

我如何開始使用Chainlink?

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

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

LED驅(qū)動電源的輸入包括高壓工頻交流(即市電)、低壓直流、高壓直流、低壓高頻交流(如電子變壓器的輸出)等。

關(guān)鍵字: 驅(qū)動電源

在工業(yè)自動化蓬勃發(fā)展的當(dāng)下,工業(yè)電機(jī)作為核心動力設(shè)備,其驅(qū)動電源的性能直接關(guān)系到整個系統(tǒng)的穩(wěn)定性和可靠性。其中,反電動勢抑制與過流保護(hù)是驅(qū)動電源設(shè)計中至關(guān)重要的兩個環(huán)節(jié),集成化方案的設(shè)計成為提升電機(jī)驅(qū)動性能的關(guān)鍵。

關(guān)鍵字: 工業(yè)電機(jī) 驅(qū)動電源

LED 驅(qū)動電源作為 LED 照明系統(tǒng)的 “心臟”,其穩(wěn)定性直接決定了整個照明設(shè)備的使用壽命。然而,在實(shí)際應(yīng)用中,LED 驅(qū)動電源易損壞的問題卻十分常見,不僅增加了維護(hù)成本,還影響了用戶體驗(yàn)。要解決這一問題,需從設(shè)計、生...

關(guān)鍵字: 驅(qū)動電源 照明系統(tǒng) 散熱

根據(jù)LED驅(qū)動電源的公式,電感內(nèi)電流波動大小和電感值成反比,輸出紋波和輸出電容值成反比。所以加大電感值和輸出電容值可以減小紋波。

關(guān)鍵字: LED 設(shè)計 驅(qū)動電源

電動汽車(EV)作為新能源汽車的重要代表,正逐漸成為全球汽車產(chǎn)業(yè)的重要發(fā)展方向。電動汽車的核心技術(shù)之一是電機(jī)驅(qū)動控制系統(tǒng),而絕緣柵雙極型晶體管(IGBT)作為電機(jī)驅(qū)動系統(tǒng)中的關(guān)鍵元件,其性能直接影響到電動汽車的動力性能和...

關(guān)鍵字: 電動汽車 新能源 驅(qū)動電源

在現(xiàn)代城市建設(shè)中,街道及停車場照明作為基礎(chǔ)設(shè)施的重要組成部分,其質(zhì)量和效率直接關(guān)系到城市的公共安全、居民生活質(zhì)量和能源利用效率。隨著科技的進(jìn)步,高亮度白光發(fā)光二極管(LED)因其獨(dú)特的優(yōu)勢逐漸取代傳統(tǒng)光源,成為大功率區(qū)域...

關(guān)鍵字: 發(fā)光二極管 驅(qū)動電源 LED

LED通用照明設(shè)計工程師會遇到許多挑戰(zhàn),如功率密度、功率因數(shù)校正(PFC)、空間受限和可靠性等。

關(guān)鍵字: LED 驅(qū)動電源 功率因數(shù)校正

在LED照明技術(shù)日益普及的今天,LED驅(qū)動電源的電磁干擾(EMI)問題成為了一個不可忽視的挑戰(zhàn)。電磁干擾不僅會影響LED燈具的正常工作,還可能對周圍電子設(shè)備造成不利影響,甚至引發(fā)系統(tǒng)故障。因此,采取有效的硬件措施來解決L...

關(guān)鍵字: LED照明技術(shù) 電磁干擾 驅(qū)動電源

開關(guān)電源具有效率高的特性,而且開關(guān)電源的變壓器體積比串聯(lián)穩(wěn)壓型電源的要小得多,電源電路比較整潔,整機(jī)重量也有所下降,所以,現(xiàn)在的LED驅(qū)動電源

關(guān)鍵字: LED 驅(qū)動電源 開關(guān)電源

LED驅(qū)動電源是把電源供應(yīng)轉(zhuǎn)換為特定的電壓電流以驅(qū)動LED發(fā)光的電壓轉(zhuǎn)換器,通常情況下:LED驅(qū)動電源的輸入包括高壓工頻交流(即市電)、低壓直流、高壓直流、低壓高頻交流(如電子變壓器的輸出)等。

關(guān)鍵字: LED 隧道燈 驅(qū)動電源
關(guān)閉