Gate 廣場|3/5 今日話題: #比特币创下近一月新高
🎁 解讀行情走勢,抽 5 位錦鯉送出 $2,500 仓位體驗券!
隨著白宮表示已向參議院提交凱文·沃什擔任美聯儲主席的提名,美國參議院未通過叫停特朗普打擊伊朗的投票,比特幣於今日凌晨創下 2 月 5 日以來新高,最高觸及 74,050 美元,加密貨幣總市值回升突破 2.538 萬億美元。
💬 本期熱議:
1️⃣ 凱文·沃什的提名是否意味著降息預期升溫?
2️⃣ 當前關口,你是持幣待漲、順勢追多,還是反手布局回調?
分享觀點,瓜分好禮 👉️ https://www.gate.com/post
📅 3/6 15:00 - 3/8 12:00 (UTC+8)
區塊鏈的預言機:理解Chainlink的運作機制
隨著區塊鏈技術的發展,智能合約功能不斷擴展,預言機(オラクルマシン)作為解決最大挑戰的工具受到關注。簡而言之,預言機是連接智能合約與區塊鏈外現實世界的中介軟體。運行於區塊鏈上的智能合約本質上只能存取鏈內資料,但卻需要現實世界的資訊。此時,預言機的角色便是安全取得鏈外實時資料,並將其記錄到鏈上,扮演重要的基礎設施角色。
預言機與智能合約
讓我們具體思考智能合約需要存取外部資訊的情境。例如,在以太坊網路上,想建立一個根據特定日期原油交易量自動執行條件的智能合約。然而,智能合約本身無法取得鏈外的這些資訊,因此需要透過預言機來實現。
此流程始於智能合約將所需資料寫入事件日誌。之後,鏈外的流程監控這些事件,取得實際資料,再透過交易將資訊傳送回合約。這一連串流程,實現了即時性與信任性兼具的資料提供。
Chainlink採用的ERC677代幣標準
在區塊鏈界,Chainlink是分散式預言機的最大專案。Chainlink的核心是以LINK代幣為中心的經濟激勵體系。用戶支付報酬給服務提供者,建立合理的激勵機制,是Chainlink的設計哲學。
Chainlink提出的ERC677,是在標準ERC20基礎上擴展的規範。最大差異在於新增了「transferAndCall」方法。此方法允許在一次函數呼叫中完成代幣轉移與服務請求。傳統ERC20需用戶先授權代幣,再執行服務請求,步驟較繁瑣;而ERC677將此合併為一步。
當執行transferAndCall時,系統會判斷轉入地址是否為合約地址,若是,則自動呼叫該合約的onTokenTransfer方法。此設計使得代幣轉移與服務請求原子性(不可分割)處理,完全符合預言機商業場景需求。
鏈上端的請求處理
用戶透過transferAndCall向預言機發出服務請求時,預言機合約內的onTokenTransfer方法即被觸發。此方法會進行多重安全檢查。
首先,驗證轉出地址確實為LINK代幣合約(onlyLINK檢查)。接著,確認請求資料大小未超過上限,並驗證函數選擇子(function selector)格式正確。通過檢查後,預言機合約會透過delegatecall來處理請求。
請求處理的核心是產生requestId。將請求者資訊與nonce(一次性值)組合並哈希,為每個請求分配唯一ID。此requestId會確認是否重複,並註冊到承諾映射中。
最重要的是,觸發OracleRequest事件。此事件記錄回調函數資訊、支付金額、有效期限等詳細資料,採用CBOR格式(二進位編碼格式)。鏈外節點監控此事件日誌,解析內容並作出回應。
鏈外節點的回應機制
鏈外節點偵測到OracleRequest事件後,會透過網路API取得請求資料,並呼叫fulfillOracleRequest方法,將資料送回鏈上。
此方法執行時,會進行多重驗證。首先,確認呼叫者為授權節點(onlyAuthorizedNode);再確認requestId有效(isValidRequest),以及支付資訊與有效期限一致。
驗證完成後,系統會計算所需的Gas量。呼叫回調函數需最低Gas(MINIMUM_CONSUMER_GAS_LIMIT),此檢查可預防交易失敗。所有驗證通過後,會以call方式呼叫請求合約的回調函數,最終將預言機資料傳遞給用戶。
價格資訊:實用的預言機應用
對開發者而言,每次指定不同API端點來請求預言機,較為繁瑣。Chainlink提供的解決方案是,針對各貨幣對的價格資訊,提供所謂的Aggregator(聚合器)價格資訊源。實作中,會用到AggregatorProxy,將多個預言機節點的資料進行整合。
主要介面方法如下:
大多數應用只需呼叫latestRoundData(),即可獲得最新資料。美元基礎的價格資訊,標準為8位精度,跨Token的精度調整幾乎不需額外處理。
如此一來,利用Chainlink預言機,開發者能輕鬆整合高信賴度的外部資料到智能合約中。