介紹
API 可幫助您建立與區塊鏈互動的高質量且可維護的去中心化應用程式 (dApp),以獲取有關塊、交易、元資料、代幣定價等的資訊。
在本文中,我們將討論不同的 web3 平臺,這些平臺提供高效的 API 來支援您的 dApp 和區塊鏈之間的通訊。
dApps 如何與區塊鏈通訊?
DApp 是基於區塊鏈的應用程式,允許使用者與部署在區塊鏈上的智慧合約進行互動。
每個 dApp 都需要一個遠端過程呼叫 (RPC) 節點來執行其功能,因為它促進了 dApp 和區塊鏈之間的通訊。
這意味著如果沒有 RPC,您的 dApp 將無法在區塊鏈上執行交易。
什麼是 RPC 節點?
節點:計算機或伺服器
RPC 是在不同位置的兩個或多個系統之間建立通訊通道的傳統方式。
RPC 節點也被稱為
加密的大腦盒
,因為它管理系統之間的互動。在分散式系統(比如你的 dApp)中,子程式在不同地方的執行是很頻繁的。
RPC 可以與您自己託管的
Rest API[1]
進行比較,但它們僅在兩個不同系統(您的 dApp 和區塊鏈)之間提供
GET
和
POST通訊方法。
另一方面,Rest API 支援
GET
、
POST
、
PATCH
、
PUT
和
DELETE
方法。
你應該開發一個 RPC 節點嗎?
簡短的回答
:不!不要這樣做。
答案
:RPC 節點可能很難自己開發和維護,特別是如果您正在為您的 dApp 構建一個節點,而幾乎不知道何時以及如何正確使用它們。
以下是開發和自託管 RPC 節點的一些限制:
• RPC 不是標準的,這個概念可以以不同的方式實現。
• RPC 需要複雜的基礎架構才能正常工作。
• RPC 由於其複雜的基礎架構而非常耗時。
• RPC 的建立和維護成本很高。
• RPC 需要大量資源。
• RPC 只是基於互動的。
• 圍繞 RPC 節點構建並不是一個長期的解決方案。
RPC 限制可能會讓人筋疲力盡。您甚至可能不需要自己開發或託管 RPC 節點,因為現在有許多 web3 平臺提供了這些限制的解決方案。
RPC 服務提供商提供 web3 後端服務和一些最好的
web3
和
NFT API
,以支付少量費用為您的 dApp 提供動力。
什麼是 Web3 API?
Web3 API 是由
Moralis[2]
、
Alchemy[3]
和
QuickNode[4]
等 web3 平臺提供的區塊鏈 API 。這些平臺解決了 RCP 節點的限制,允許任何人以一種節省時間和資源的簡單方式跨多個區塊鏈專案查詢資料。
透過一行程式碼,web3 API 可用於驗證使用者並檢索有關塊、交易、NFT 元資料、代幣價格等的資訊。
在從頭開始建立 RPC 之前,您應該檢視這些 web3 平臺,看看它們是否提供了滿足您的 dApp 要求的 API。
以下是一些可以使用 web3 和 NFT API 建立的 dApp 示例:
• NFT 市場
• 鏈上 NFT 遊戲
• 數字資產所有權驗證者
• NFT 鑄幣廠
•
Web3 身份驗證[5]
。
•
NFT 瀏覽器[6]
。
下面列出了 Moralis、Alchemy 和 QuickNode 提供的一些 web3 API 和 NFT API:
1。 Moralis Web3 API
Moralis[7]
是一個為區塊鏈專案提供後端服務的 web3 平臺。他們提供最多數量的 web3 和 NFT API 用於身份驗證、區塊鏈帳戶資訊等。
Moralis Web3 API - 身份驗證
Moralis 允許您只用一行程式碼對任何區塊鏈上的使用者進行身份驗證:
Moralis。authenticate()
Moralis Web3 API - 賬戶資訊
• 使用 Moralis web3 API 獲取使用者的賬戶交易歷史:
const transactions = await Moralis。Web3API。account。getTransactions();
• 使用 Moralis web3 API 獲取使用者的代幣餘額:
const balances = await Moralis。Web3API。account。getTokenBalances();
• 使用 Moralis web3 API 為當前使用者獲取 ERC20 代幣傳輸:
const userTrans = await Moralis。Web3API。account。getTokenTransfers();
Moralis Web3 API - 原生資產轉移
• 使用 Moralis web3 API 在 ETH(以太坊)、BNB(幣安智慧鏈)和 MATIC(多邊形)區塊鏈中的賬戶之間轉移代幣:
// sending 0。5 ETHconst options = { type: “native”, amount: Moralis。Units。ETH(“0。5”), receiver: “0x。。”};let result = await Moralis。transfer(options);
Moralis Web3 API - 檔案上傳 (IPFS)
Moralis 提供了一個端點來儲存和共享區塊鏈上的檔案。該系統被稱為**IPFSInterPlanetary File System (IPFS)**。
• 在區塊鏈上上傳多個檔案,並使用 Moralis web3 API 將它們放置在 Moralis 資料夾目錄中:
const options = { abi: [ { path: “moralis/logo。jpg”, content: “iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAAApgAAAKYB3X3”, }, ],};const path = await Moralis。Web3API。storage。uploadFolder(options);
程式碼片段示例來自
Moralis Web3 API 文件[8]
。
2。 Moralis NFT API
• 使用 Moralis NFT API 獲取當前使用者擁有的所有 NFT:
const userEthNFTs = await Moralis。Web3API。account。getNFTs();
• 使用 Moralis NFT API 獲取當前使用者的任何 NFT 轉賬:
const transfersNFT = await Moralis。Web3API。account。getNFTTransfers();
• 使用 Moralis NFT API 獲得過去 X 天內任何 NFT 的最低價格(以 Eth 計):
const options = { address: “0xd。。。07”, days: “3” };const NFTLowestPrice = await Moralis。Web3API。token。getNFTLowestPrice(options);
• 使用 Moralis NFT API 基於元資料搜尋獲取 NFT 資料:
const options = { q: “Pancake”, chain: “bsc”, filter: “name” };const NFTs = await Moralis。Web3API。token。searchNFTs(options);
• 使用 Moralis NFT API 獲取給定代幣合約地址的 NFT 所有者和陣列及其 NFT 元資料(名稱、符號):
const options = { address: “0xd。。。07”, chain: “bsc” };const nftOwners = await Moralis。Web3API。token。getNFTOwners(options);
• 使用 Moralis NFT API 將 NFT 從一個賬戶轉移到另一個賬戶:
// sending a token with token id = 1const options = { type: “erc721”, receiver: “0x。。”, contractAddress: “0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2”, tokenId: 1,};let transaction = await Moralis。transfer(options);
• 使用 Moralis NFT API 在 Solana 網路上獲取 NFT 元資料:
// get devnet metadata for a given SPL NFT addressconst options = { network: “devnet”, address: “6XU36wCxWobLx5Rtsb58kmgAJKVYmMVqy4SHXxENAyAe”,};const nftMetadata = await Moralis。SolanaAPI。nft。getNFTMetadata(options);
程式碼片段示例來自
Moralis NFT 文件[9]
。
3。 Alchemy NFT API
Alchemy Web3 API[10]
是
web3。js[11]
的替代品,它的建立是為了與 Alchemy 一起輕鬆操作。它還提供了強大的 API 來為 dApp 提供普通節點所不具備的功能。
• 使用 Alchemy NFT API 獲取當前由給定地址擁有的所有 NFT:
const nfts = await web3。alchemy。getNfts({owner: “0xC33881b8FD07d71098b440fA8A3797886D831061”})
• 使用 Alchemy NFT API 獲取與給定 NFT 關聯的元資料:
const response = await web3。alchemy。getNftMetadata({ contractAddress: “0x5180db8F5c931aaE63c74266b211F580155ecac8”, tokenId: “1590”})
• 使用 Alchemy NFT API 獲取 ERC721 和 ERC1155 合約的代幣所有者:
import fetch from ‘node-fetch’;var requestOptions = { method: ‘GET’, redirect: ‘follow’};const apiKey = “demo”const baseURL = `https://eth-mainnet。alchemyapi。io/v2/${apiKey}/getOwnersForToken`;const contractAddr = “0x04b14e3383d42685ae16af3c47b21b2d5941d27e”;const tokenId = “867”;const fetchURL = `${baseURL}?contractAddress=${contractAddr}&tokenId=${tokenId}`;fetch(fetchURL, requestOptions)。then(response => response。json())。then(response => JSON。stringify(response, null, 2))。then(result => console。log(result))。catch(error => console。log(‘error’, error));
程式碼片段示例來自
Alchemy 的文件[12]
。
4。 QuickNode NFT API
QuickNode[13]
是一個 web3 平臺,允許使用者透過他們的 RPC 端點為包括以太坊和 Solana 在內的 10 多個網路構建和發展 dApp。
• 使用 QuickNode NFT API 驗證以太坊區塊鏈上的 NFT 所有者:
const heads = await provider。send( “qn_verifyNFTsOwner”,[ “0x8ae6422631292c31aeeb2efe154d6326f703f46b”, [ “0x60e4d786628fea6478f785a6d7e704777c86a7c6:1090”, ]]
• 使用 QuickNode NFT API 從以太坊和 Solana 網路中獲取和過濾 NFT:
const heads = await provider。send(“qn_fetchNFTs”, [ “0x63a63d7b0a4da84e095bac389845615a09e05546”, [ “0xba30e5f9bb24caa003e9f2f0497ad287fdf95623”, ],]);
• 使用 QuickNode NFT API 查詢具有建立者地址的 NFT:
// not currently supported by solanaJSconst axios = require(“axios”);(() => { const url = “https://quick-infra-structure。solana-mainnet。quiknode。pro/4456aaba19e98f28c900e9d5f997d6f39728f551/”; const config = { headers: { “Content-Type”: “application/json”, }, }; const data = { jsonrpc: “2。0”, id: 1, method: “qn_fetchNFTsByCreator”, params: [{ creator: “5GUrnehPCrVeAeo29sgH3KbPhTvEDaH8HJqonYUceVM”, page: 1, perPage: 3 }] }; axios 。post(url, data, config) 。then(function (response) { // handle success console。log(response。data); }) 。catch((err) => { // handle error console。log(err); });})();
• 使用 QuickNode NFT API 獲取 gas 價格:
const ethers = require(“ethers”);(async () => { const provider = new ethers。providers。JsonRpcProvider(“http://sample-endpoint-name。network。quiknode。pro/token-goes-here/”); const gasPrice = await provider。getGasPrice(); console。log(gasPrice);})();
• 使用 QuickNode NFT API 獲取使用者錢包餘額:
const ethers = require(“ethers”);(async () => { const provider = new ethers。providers。JsonRpcProvider(“http://sample-endpoint-name。network。quiknode。pro/token-goes-here/”); const balance = await provider。getBalance( “0x8D97689C9818892B700e27F316cc3E41e17fBeb9”, “latest” ); console。log(balance);})();
程式碼片段示例來自
QuickNode 文件[14]
。
總結
您可能已經意識到為什麼從頭開始構建 RPC 可能不是您的 dApp 的最佳解決方案。相反,利用來自 Web3 API 提供商(如 Moralis、Alchemy 和 Quicknode)的 web3 和 NFT API 可能更容易。
使用 web3 和 NFT API 可以加快開發速度並確保開發的可靠性。您還應該探索每個 web3 和 NFT API 提供商,看看哪一個為您的 dApp 提供了最佳解決方案。
你下一步要去哪裡?
現在您已經瞭解了支援 dApp 的 web3 和 NFT API:
•
在此處[15]
瞭解如何使用 Moralis React SDK 構建您自己的 NFT Explorer 。
•
在此處[16]
瞭解如何使用 Web3。js 庫構建 Web3 登入。
•
Solidity 教程 -在此處[17]
瞭解如何構建您的第一個智慧合約 。
引用連結
[1] Rest API:
https://www。redhat。com/en/topics/api/what-is-a-rest-api
[2] Moralis:
https://moralis。io/
[3] Alchemy:
https://www。alchemy。com/
[4] QuickNode:
https://www。quicknode。com/
[5] Web3 身份驗證:
https://web3。hashnode。com/how-to-build-a-web3-login-with-web3js-library
[6] NFT 瀏覽器:
https://web3。hashnode。com/how-to-build-your-own-nft-explorer-with-moralis-react-sdk
[7] Moralis:
https://moralis。io/
[8] Moralis Web3 API 文件:
https://docs。moralis。io/moralis-dapp/web3-sdk
[9] Moralis NFT 文件:
https://docs。moralis。io/moralis-dapp/web3-sdk/nft-api
[10] Alchemy Web3 API:
https://alchemy。com/
[11] web3。js:
https://web3。hashnode。com/what-is-web3js-an-introduction-into-the-web3js-libraries
[12] Alchemy 的文件:
https://docs。alchemy。com/alchemy/enhanced-apis/nft-api
[13] QuickNode:
https://quicknode。com/
[14] QuickNode 文件:
https://www。quicknode。com/docs/ethereum
[15] 在此處:
https://web3。hashnode。com/how-to-build-your-own-nft-explorer-with-moralis-react-sdk
[16] 在此處:
https://web3。hashnode。com/how-to-build-a-web3-login-with-web3js-library
[17] Solidity 教程 -在此處:
https://web3。hashnode。com/solidity-tutorial-how-to-build-your-first-smart-contract