📢 Gate廣場 #NERO发帖挑战# 秀觀點贏大獎活動火熱開啓!
Gate NERO生態周來襲!發帖秀出NERO項目洞察和活動實用攻略,瓜分30,000NERO!
💰️ 15位優質發帖用戶 * 2,000枚NERO每人
如何參與:
1️⃣ 調研NERO項目
對NERO的基本面、社區治理、發展目標、代幣經濟模型等方面進行研究,分享你對項目的深度研究。
2️⃣ 參與並分享真實體驗
參與NERO生態周相關活動,並曬出你的參與截圖、收益圖或實用教程。可以是收益展示、簡明易懂的新手攻略、小竅門,也可以是行情點位分析,內容詳實優先。
3️⃣ 鼓勵帶新互動
如果你的帖子吸引到他人參與活動,或者有好友評論“已參與/已交易”,將大幅提升你的獲獎概率!
NERO熱門活動(帖文需附以下活動連結):
NERO Chain (NERO) 生態周:Gate 已上線 NERO 現貨交易,爲回饋平台用戶,HODLer Airdrop、Launchpool、CandyDrop、餘幣寶已上線 NERO,邀您體驗。參與攻略見公告:https://www.gate.com/announcements/article/46284
高質量帖子Tips:
教程越詳細、圖片越直觀、互動量越高,獲獎幾率越大!
市場見解獨到、真實參與經歷、有帶新互動者,評選將優先考慮。
帖子需原創,字數不少於250字,且需獲得至少3條有效互動
預言機如何成爲區塊鏈與現實世界的數據橋梁
預言機:連接區塊鏈與現實世界的橋梁
在區塊鏈技術中,預言機扮演着至關重要的基礎設施角色。它是一種能夠爲鏈上智能合約提供外部信息的系統,充當了區塊鏈與外部世界之間的中間件。預言機的主要功能是爲區塊鏈上的智能合約提供所需的外部數據。
舉個例子,假設我們在以太坊網路上創建了一個需要獲取某天原油交易量數據的智能合約。由於智能合約本身無法直接獲取這種鏈下的現實世界數據,因此需要通過預言機來實現。在這種情況下,智能合約會將所需的原油交易量數據寫入事件日志。隨後,鏈下會啓動一個進程來監控並訂閱這個事件日志。當檢測到交易中的請求時,該進程會通過提交鏈上交易,調用合約的相關方法,將指定日期的原油交易量信息上傳到智能合約中。
Chainlink:區塊鏈預言機的領軍者
在預言機領域,Chainlink無疑是市場佔有率最大的項目。作爲一個去中心化的預言機解決方案,Chainlink的目標是以最安全的方式向區塊鏈提供現實世界中產生的數據。在基本預言機原理的基礎上,Chainlink圍繞LINK代幣建立了一個通過經濟激勵形成良性循環的生態系統。
Chainlink預言機的觸發需要通過LINK代幣的轉帳來實現。LINK是基於以太坊網路的ERC677合約代幣。基於LINK ERC677代幣完成的預言機功能屬於請求/響應模式。
ERC677代幣中的transferAndCall
ERC677標準是Chainlink爲適應預言機服務場景而提出的。它在標準ERC20的基礎上增加了transferAndCall方法,將支付和服務請求合二爲一,滿足了預言機業務場景的需求。
當用戶使用transferAndCall進行轉帳時,除了常規的ERC20轉帳外,還會判斷接收地址是否爲合約地址。如果是,則調用該地址的onTokenTransfer方法。需要注意的是,在請求預言機服務之前,用戶應當先確認該預言機的可信度,因爲預言機服務需要預先付款。
鏈上oracle請求流程
當預言機消費者使用transferAndCall方法支付費用並請求服務時,預言機合約中的onTokenTransfer方法會首先進行一系列安全檢查。這包括驗證轉帳是否爲LINK代幣、檢查數據長度是否超過限制、驗證數據是否包含正確的功能選擇器等。
通過安全檢查後,合約會生成一個唯一的requestId,並設置請求的過期時間。最後,合約會發出一個OracleRequest事件,該事件包含了請求的詳細數據。
鏈下節點響應機制
鏈下節點在接收到OracleRequest事件後,會解析出請求的具體信息,通過網路API調用獲取所需數據。隨後,節點會調用fulfillOracleRequest方法,將數據提交到鏈上。
這個方法會進行一系列驗證,包括檢查調用者是否授權、驗證請求的有效性等。驗證通過後,合約會記錄可提取的代幣數額,並從commitments映射中刪除該requestId。最後,合約會調用請求者合約的回調函數,將數據返回給消費者。
價格預言機的實際應用
對於開發者來說,如果只需要使用已有的幣對價格數據,可以直接使用Chainlink提供的Price Feed接口。每個交易對都有一個單獨的Price Feed(也稱爲Aggregator),實際上是一個AggregatorProxy合約。
這些接口通常提供以下幾個查詢方法:
在大多數應用場景中,合約可能只需要讀取最新價格,即調用latestRoundData()方法。返回的answer參數即爲最新價格。
值得注意的是,大部分應用讀取的token價格都是以USD爲計價單位的。在這種情況下,精度通常統一爲8位,這簡化了不同token間的精度處理問題。