Infura 推出免費訪問以太坊存檔數據和所有網絡API

您在Infura 的構建之旅將變得更加輕鬆和美好。從今天開始,我們將推出簡化的定價計劃,讓您可以專注於構建和擴展您的產品,而不必擔心基礎設施。

我們將為所有用戶自動啟用支持的網絡。網絡啟動後,您將立即無縫訪問在該網絡上發送請求所需的端點。無需附加組件或信用卡。目前,Infura 支持Ethereum、Polygon、Arbitrum、Optimism、Filecoin、NEAR 和Aurora 網絡。有關如何在Infura 儀表板上訪問這些網絡的更多信息,請參閱我們的文檔

以太坊存檔請求現在是免費的,對於Core Free 用戶,每天的存檔數據最多佔您每天總請求的25%,對於開發者計劃用戶,每天最多佔您每天總請求的50%,對於團隊和成長用戶,最多不超過您的請求限制。這將允許您更好地使用請求來為您的項目提供您和您的用戶所需的數據。要了解有關存檔數據以及使用用途,請閱讀本文的其餘部分。

核心(Core)
開發(Developer)
團隊(Team)
增長(Growth)
Free
$50/mo
$225/mo
$1000/mo
Multiple Blockchain Mainnet and Testnets
All core tier benefits, plus:
All developer tier benefits, plus:
All team tier benefits, plus:
100,000 Requests/Day
200,000 Requests/Day
1,000,000 Requests/Day
5,000,000 Requests/Day
25,000 Archive Requests/Day
100,000 Archive Requests/Day
Unlimited Archive Requests
Unlimited Archive Requests
Community Support Forum
Direct Customer Support

Direct Customer Support

在Infura 計劃中使用存檔數據

如果您正在編寫與歷史數據交互的智能合約,那麼您可能已經熟悉或使用集成的區塊鏈開發套件,例如Truffle 或Hardhat。它們都有各種各樣的內置工具,可以讓你的dApp 的整個開發生命週期變得更加容易。連接到存檔節點就像將提供的API URL 端點設置為要在前端代碼中使用的變量一樣簡單。

Infura 使用的Ethereum JSON-RPC 和Websocket API 包括幾種可能需要訪問存檔節點的方法。這些方法包括一個額外的參數,用於指定請求的塊號。如果您有興趣檢查下面列出的任何方法的歷史數據(最近128 個塊之外的數據),您的請求需要訪問存檔數據。

  • eth_getBalance
    • Returns the balance of the account of the given address.
    • -d '{"jsonrpc":"2.0","method":"eth_getBalance","params": ["0xc94770007dda54cF92009BFF0dE90c06F603a09f", "latest"],"id":1}'
  • eth_getCode
    • Returns the compiled smart contract code, if any, at a given address.
    • -d '{"jsonrpc":"2.0","method":"eth_getCode","params": ["0x06012c8cf97bead5deae237070f9587f8e7a266d", "0x65a8db"],"id":1}'
  • eth_getTransactionCount
    • Returns the number of transactions sent from an address.
    • -d '{"jsonrpc":"2.0","method":"eth_getTransactionCount","params": ["0xc94770007dda54cF92009BFF0dE90c06F603a09f","0x5bad55"],"id":1}'
  • eth_getStorageAt
    • Returns the value from a storage position at a given address.
    • -d '{"jsonrpc":"2.0","method":"eth_getStorageAt","params": ["0x295a70b2de5e3953354a6a8344e616ed314d7251", "0x6661e9d6d8b923d5bbaab1b96e1dd51ff6ea2a93520fdc9eb75d059238b8c5e9", "0x65a8db"],"id":1}'
  • eth_call
    • Executes a new message call immediately without creating a transaction on the blockchain
    • -d '{"jsonrpc":"2.0","method":"eth_call","params": [{"from": "0xb60e8dd61c5d32be8058bb8eb970870f07233155","to": "0xd46e8dd67c5d32be8058bb8eb970870f07244567","gas": "0x76c0", "gasPrice": "0x9184e72a000","value": "0x9184e72a","data": "0xd46e8dd67c5d32be8d46e8dd67c5d32be8058bb8eb970870f072445675058bb8eb970870f072445675"}, "latest"],"id":1}'

我們為不熟悉存檔節點的, 請留意下一部分。如果您想跳到使用存檔數據的示例教程,請單擊此處。

什麼是歸檔節點?

在最近的128 個區塊之前,需要一個存檔節點來訪問來自以太坊區塊鏈的數據。以太坊的全節點不會存儲每個區塊驗證生成的世界狀態。它們只需要存儲諸如標題和塊內容之類的信息。

一般需要將這些信息保留足夠長的時間,以便能夠按需建立區塊鏈歷史狀態(最近128 個區塊之外的數據)。與整個區塊鏈狀態相比,僅存儲少量數據可以使全節點能夠最小化存儲和計算成本以及同步時間。

另一方面,存檔節點除了具有完整節點的所有功能外,還存儲TB 的歷史數據,從而可以在任何時間點查詢任何塊。在撰寫本文時,以太坊存檔節點現在佔用了12 TB 的空間,完全同步和存檔可能需要6 個多月的時間。使用Infura 訪問存檔數據有助於節省您運行自己的節點的時間和計算成本。

為什麼要訪問存檔數據?

存檔節點是以太坊網絡上存儲歷史區塊鏈數據的特定節點。因為它們提供了這些歷史信息,所以當您需要審計過去的交易歷史或收集數據時,它們會很有幫助。在歸檔模式下運行的完整節點對於了解事務的歷史結果是必要的。您可以在任何時間點的任何區塊回答與賬戶餘額、智能合約代碼、交易計數、代幣供應、代幣價格等相關的問題。

此狀態包含每個錢包的餘額和所有智能合約內部變量的值。這是向以太坊區塊鏈添加新區塊所必需的,因為新交易可能會執行智能合約。這些交易的結果將取決於這些內部變量的內容。

存檔節點還可以在無需在區塊鏈上創建交易的情況下測試智能合約。例如,如果您使用Ganache,它是Truffle 開發工具套件中的個人區塊鏈模擬器,它使您能夠在完全存檔模式下在以太坊分叉,以便在部署到實時區塊鏈之前測試智能合約。

常見用例

Etherscan 和Dune Analytics 等服務使用存檔節點為其用戶提供對區塊鏈交易的可見性。任何人都可以自己運行或通過他們的Infura API 端點訪問存檔數據。以下是我們從Infura 客戶的歸檔請求中看到的一些常見用例:

獲取並檢查過去超過128 個區塊的任何地址(無論是外部擁有的賬戶還是智能合約)的餘額信息。這可能是最常見的用例,也是我們的大型以太坊客戶(例如去中心化交易所、流動性池和錢包)啟用存檔的原因。

調用特定的智能合約函數以通過該函數讀取數據(如ERC-20 和ERC-721 令牌標準中的eth_balanceOf)。出於以下目的,您可能需要閱讀有關用戶的外部擁有帳戶的信息並檢查他們是否有某個代幣的餘額:

  • 去中心化交易所和流動資金池
  • 錢包
  • 使用ERC-20 代幣或ERC-721 或任何其他具有eth_balanceOf 功能的代幣標準構建在以太坊上的遊戲
  • 任何NFT 市場(由於需要調用eth_balanceOf)

如果您是以下情況,需要 獲取“時間點數據”(特別是從特定的塊)

  • 索引器
  • 任何試圖為其用戶顯示帳戶歷史記錄的公司
  • 審計員、測試員或任何對智能合約進行取證分析的人,目的是弄清智能合約為何如此行事

教程:存檔數據遊樂場

我們創建了一個全棧應用程序,它為通過訪問以太坊存檔數據啟用的各種用例提供參考實現和概念驗證。


在此處查看存儲庫:https://github.com/anataliocs/Archive-Data-Playground

使用的技術:

• Java 11

• Spring Boot
• Gradle
• Typescript
• React/Redux
• node/npm

設置和配置

該項目使用Java/Spring Boot 後端和React 前端構建。您需要在本地安裝以下依賴項才能運行此項目:


獲取您的API 端點URL 和項目ID

前往https://infura.io/並轉到您的項目設置頁面:

Infura 推出免費訪問以太坊存檔數據和所有網絡API

現在讓我們設置我們的外部化配置,以便我們可以使用我們的項目ID 而不會在Github 上暴露這些細節。 Spring Boot 應用程序在本地運行時使用Spring Dev Tools,因此我們可以使用本地“.spring-boot-devtools.properties”文件來配置屬性。


MacOS 用戶的配置:

創建屬性文件:

touch~/.spring-boot-devtools.properties

打開屬性文件:

vi ~/.spring-boot-devtools.properties

將以下行添加到屬性文件:

infura.projectid=[YOUR_PROJECT_ID]

運行應用程序:

拉取源代碼:

git clone git@github.com:anataliocs/Archive-Data-Playground.git

將項目導入您的IDE,它應該會自動構建。我們的項目使用gradle 構建後端,使用npm 構建前端UI。

將目錄更改為項目文件夾:

cd archivedataplayground/

然後要運行完整堆棧,調用Gradle 包裝器:

./gradlew

此命令將在開發模式下啟動Spring Boot 後端,並在一個命令中啟動React 前端!

應用程序啟動後,您應該看到以下內容:

Infura 推出免費訪問以太坊存檔數據和所有網絡API

在瀏覽器中通過http://localhost:8080/ 導航到本地服務器

Infura 推出免費訪問以太坊存檔數據和所有網絡API

在右上角單擊帳戶-> 登錄並使用預設的登錄名和密碼“admin/admin”

Infura 推出免費訪問以太坊存檔數據和所有網絡API

然後,您將有權訪問該應用程序。登錄流程來自用於創建基本項目骨架的基本Jhipster 項目腳手架工具。

如果導航到http://localhost:8080/admin/docs或單擊Administration -> API,則可以直接查詢Infura JSON-RPC 端點

這將帶您進入Swagger UI 界面,您可以在其中調用JSON-RPC 端點,例如獲取超過128 個塊的塊,這些塊可通過具有水合事務的存檔節點獲得。然後可以在Block Explorer 風格的應用程序或其他用例中使用這些調用。

Infura 推出免費訪問以太坊存檔數據和所有網絡API

一些有助於啟用此功能的特定代碼塊包括:

https://github.com/anataliocs/Archive-Data-Playground/blob/main/src/main/java/io/infura/archivedataplayground/config/InfuraConfig.java

InfuraConfig.java

Infura 推出免費訪問以太坊存檔數據和所有網絡API

這段代碼提供了一個“RestTemplate”單例,可以將它注入到需要它的類中,並幫助抽像出對Infura 進行JSON-RPC 調用的複雜性。

“dto.infura”包包含POJO 對象,表示Infura RPC 調用中使用的請求和響應JSON。

https://github.com/anataliocs/Archive-Data-Playground/tree/main/src/main/java/io/infura/archivedataplayground/service/dto/infura

例如,以下3 個DTO 對象包含來自eth_getBlockByNumber JSON-RPC 調用的塊和水合交易響應,可用於從以太坊歷史中獲取存檔塊。

GetBlockByNumberResponse.java

Infura 推出免費訪問以太坊存檔數據和所有網絡API

Infura POJO 響應JSON的反序列化

GetBlockByNumberResult.java

Infura 推出免費訪問以太坊存檔數據和所有網絡API

Infura POJO 響應JSON的反序列化

Transaction.java

Infura 推出免費訪問以太坊存檔數據和所有網絡API

包含的“RestTemplate”將自動將響應編組/解組到這些對像類型中。

您還可以考慮使用https://github.com/web3j/web3j 來幫助促進使用Spring Boot 後端進行的Infura JSON–RPC 調用。

前端

存檔數據啟用的一項功能是塊探索。

Infura 推出免費訪問以太坊存檔數據和所有網絡API

此區塊瀏覽器顯示有關以太坊歷史上著名區塊的信息,例如:

前沿(Frontier)

塊高度:0

創世區塊

2015 年7 月30 日

前沿解凍(Frontier Thawing)

區塊高度:200000

以太坊價格:1.24 美元

2015 年9 月7 日

Homestead

區塊高度:1,150,000

以太坊價格:12.50 美元

2016 年3 月14 日

前端是使用React 和Typescript 實現的。此表單允許您提交區塊編號並查找該區塊的數據和水合交易。

infura.tsx

Infura 推出免費訪問以太坊存檔數據和所有網絡API

提交表單會向Spring Boot API 發送一個請求,並使用reducer 解析從後端返回的JSON。

Infura 推出免費訪問以太坊存檔數據和所有網絡API

這只是訪問存檔數據啟用的功能的一個簡單示例。使用這個基本框架,您可以創建以太坊區塊分析、更詳細的區塊瀏覽器、交易算法的回溯測試和區塊鏈取證應用程序!

立即註冊免費帳戶,開始在Infura 上使用免費的以太坊存檔數據進行構建。

要獲取有關如何為您的項目使用存檔數據的更多信息,請通過support@infura.io與我們聯繫。