Arbitrum 是與一個以太坊的二層樓,通過Arbit 的智能合約開發者可以快速開發和部署鏈上的智能合約,輕鬆部署他們的智能合約開發。數據連接起來,包括用於構建大量DeFi 應用的高度可靠的資產價格。
在本篇技術教程中,我們將解釋什麼是Arbitrum,如何在Arbitrum Rinke 通過測試開發,並給出如何在Arbitrum 中使用Chainlink Price Feed 的步驟說明。網絡環境中的開發和部署,但對於Arbitrum One 主網來說,步驟是一樣的。
什麼是仲裁?
Arbitrum 是一個基於樂觀匯總為了在以太坊上提供當前的付款和第二層等解決方案,湧現了一些擴容能力,包括2卷、、(和)有效鏈、等離子和有效的。這些解決方案之間最重要的區別是,匯總和通道繼承以太坊區塊鏈(Layer 1)的安全性,開發者可以在以太坊第一層移除進行開發。
Layer Optimistic rollup 2 執行上卷交易。此時是“真正的它們的第二層解決方案”,其中包含高速、高地層數的交易,然後在第1 層驗證交易量。樂觀的匯總,我們會“樂觀地相信”這些交易實際上在第2 層。這些匯總是“樂觀的”,因為打包交易被認為是“無罪的”,直到通過欺詐證明來證明“有發生” ;也樂觀地認為在發佈到第1 層時是正確的,在7 天的挑戰表態我們提交了。
開始使用仲裁
在本教程中,我們將在Arbitrum Rinkeby 測試網上開發和部署一個智能合約,這是Rinkeby 測試步驟網的第二層。同樣的也適用於Arbitrum One,它是以太坊主網的第二層。為了使用Arbitrum Rinkeby測試網,我們需要一些Rinkeby 測試網的ETH。可以通過鏈環水龍頭你的Rinke LINK——只要找到你的錢包地址,選擇Rinkeby Ethereum,並獲得測試獲得ETH。
然後,我們需要從Rinkeby 存入測試ETH,以便在Arbitrum Rinkeby 測試網上支付費用。導航到仲裁橋,連接一下錢包,輸入Rinkeby ETH 數量,然後點擊進入存款。大約需要10 分鐘才能看到記錄餘額第二層網絡——可以喝杯咖啡休息一下。
在二層上收到ETH之後,就可以在Metamask錢包中配置Arbitrum Rinkeby測試網了。導航到鍊錶並找到Arbitrum Rinkeby Network 的詳細信息,或導航到Etherscan瀏覽器並在網站頁腳中找到添加仲裁網絡 或選擇設置-> 網絡-> 在Metamask 中添加網絡,然後手動輸入詳細信息。
網絡名稱:Arbitrum Rinkeby 測試網
網絡網址:https://rinkeby.arbitrum.io/rpc
鏈號:421611
貨幣符號:ETH
區塊瀏覽器URL:https://testnet.arbiscan.io/
最後,回到鏈環水龍頭,選擇Arbitrum Rinkeby,領取10個測試網LINK。
準確可靠的數據在智能合約中的價格數據
為了拓展二層上各種智能和連接的支持,開發者需要到鏈下資源。結合來自Chainlink 價格機的高度準確可靠的數據,開發者可以開始在Arbitrum 上開發和測試擴展DeFi 應用程序,這些應用程序依賴於ETH 和其他通證的價格,例如協議協議、去化交易所、預測市場等。
這些DeFi 用例需要數據,但鍊和外部解決方案無法本地直接外部的數據。當向區塊鏈提供數據以高級DeFi 用例時,必須保證數據的安全性和一流服務預防價格機攻擊。
Chainlink 提供了來自各種優質的數據中心,將這些數據源的聚合化數據中心化為網絡攻擊,在上鍊的網絡中,Chainlink 並通過機鏈去化了有機機器機制的風險。最終反映的覆蓋範圍,這意味著在聚合市場的最終結果確定後確定不同的價格而不同的價格部分和市場不同方面,還考慮了流動性等。 Price Feed,開發者能夠開發不影響安全性的高級DeFi 應用程序。
現在了解了Solidity智能合約中準確可靠的需求以及Chainlink價格我們最新價格我們所使用的價格的示例。
在仲裁上使用Chainlink Price Feed
首先在你最喜歡的代碼編輯器中創建一個新的Solidity 項目。使用Hardhat 和Typescript 的完整示例可以在Github上找到。我們將使用Solidity 和Chainlink 的最新版本。
import "@chainlink/contracts/src/v0.8/interfaces/AggregatorV3Interface.sol";
現在要寫一個函數來檢索我們Chainlink網絡中的Price Feed數據。導航到Chainlink官方文檔中的數據饋送部分。我們以“get Price”的函數為例,並稍作修改。
function getThePrice(address _priceFeedAddress) public view returns (int) { AggregatorV3Interface priceFeed = AggregatorV3Interface(_priceFeedAddress); ( uint80 roundID, int price, uint startedAt, uint updatedAt, uint80 answeredInRound ) = priceFeed.latestRoundData(); return price; }
你看到把“價格”作為“價格”,讓這個價格可以給我們提供一個可以給我們添加的地址。這裡查看Arbitrum Rinkeby 測試網上的所有價格信息地址的完整列表。
例如,如果我們想知道BTC 的美元價格,我們可以將“0x0c9973e7a27d00e656B9f153348dA46CaD70d03d”作為“_priceFeedAddress”參數傳遞給我們的函數。
幾乎完成了!認識L2定序器的健康標誌
Arbitrum 中的交易是高速確認的。這是因為有其他的定序器。定序是一個鏈外的組件,能夠高速為用戶交易測試器並給用戶提供收據。然而,如果定序器不可用,用戶必須通過以太坊提交他們的交易,以便讓它們在Arbitrum 中進行處理。用戶在體驗中是有利的。許多dApps 仍然沒有能力處理需要同時Ethereum 和Arbitrum 的情況。
如果你不想在應用程序中擔心這個,可以使用鏈接網絡來確保確定器對用戶可用。下面是你處理問題的步驟。
首先,需要在我們的Solidity 代碼中添加下面我們的導入語句:
import "@chainlink/contracts/src/v0.8/interfaces/FlagsInterface.sol";
根據Chain的文檔,L2定序器健康標誌由三個角色組成:
- Chainlink Cluster(一組驗證更新器節點)–它在每個時間週期“T”(Chainlink 配置的最小頻率)執行OCR Job
- 報告定序器狀態的實際OCR 提要——這可用於第1 層的外部用戶檢查或協議(如Arbitrum)的狀態。
- 驗證器——由OCR feed觸發,如果當前答案與之前的不同,則執行升起或放下標誌的動作。
現在,需要用以下幾行來擴展我們的合同:
// Identifier of the Sequencer offline flag on the Flags contract address constant private FLAG_ARBITRUM_SEQ_OFFLINE = address(bytes20(bytes32(uint256(keccak256("chainlink.flags.arbitrum-seq-offline")) - 1))); FlagsInterface internal chainlinkFlags; constructor() { chainlinkFlags = FlagsInterface(0x491B1dDA0A8fa069bbC1125133A975BF4e85a91b); }
“0x491B1dDA0A8fa069bbC1125133A975BF4e85a91b”是Arbitrum Rinkeby Flags 合同的地址。要檢查其他的地址,請到Chainlink文檔中查看。
有跡象表明,在“T”日期的數據可以被認為是過時的更新的,它的升序,你定序的啟動順序不應該是定序的。再次恢復,第二層像上鍊數據源更新後,你可以繼續往常一樣使用你的合同。我們增加了這個額外的檢查。
function getThePrice(address _priceFeedAddress) public view returns (int) { bool isRaised = chainlinkFlags.getFlag(FLAG_ARBITRUM_SEQ_OFFLINE); if (isRaised) { // If flag is raised we shouldn't perform any critical operations revert("Chainlink feeds are not being updated"); } AggregatorV3Interface priceFeed = AggregatorV3Interface(_priceFeedAddress); ( uint80 roundID, int price, uint startedAt, uint updatedAt, uint80 answeredInRound ) = priceFeed.latestRoundData(); return price; }
部署和測試智能合約
現在我們準備部署和測試我們的合同。混音中編譯合同,然後在部署標籤中,將環境改為“Injected Web3”。確保將錢包連接到Arbitrum Rinkeby 測試網,然後下面的錢包地址是MetaMask 的錢包,包含之前獲得的ETH。 ,點擊按鈕,按照步驟進行。
最終的結果是交易成功,智能合約部署到Arbitrum Rinkeby測試網。
為了測試這個網上協議,我們只需要調用我們的ThePrice”函數,並將Arbitrum Rinkeby測試的一個Chainlink作為“_priceFeAddress”參數進行傳遞。記住,你可以在Chainlink文檔中查看所有可用的價格合約地址。
總結
Chainlink 中的價格數據,以及LINK/USD、AAVE/USD 和BTCUSD 的價格數據都可以在Arbitrum 上流行使用。 Chainlink Price Feed 建立在去中心化的雞肉基礎設施上,由數據源的安全性本身的運營商和優質數據,既定高度、可以和防篡改的數據源數據饋送,就可以公平地審查這些數據饋送,就可以公平地審查這些數據饋送,就可以對此類漏洞進行審查。
有了這些知識,你就可以利用Arbitrum 的Arbitrum 的價格和高速度以及Chainlink Price Feed 所收購朗姆酒的應用,開始開發你的應用,開始開發你的應用程序。自己的智能合約,。
獲取更多關於Chainlink的信息,請訪問鏈環或者在docs.chain.link閱讀文檔。要討論集成問題,請聯繫專家。
帖子 如何在仲裁上開發和部署智能合約 首先出現在 Chainlink 博客.