透過 BlockChain RPC 調用 Pharos 合約
取得 RPC 地址
首先,請造訪 https://zan.top/service/apikeys 以取得 Pharos 鏈的 RPC 地址:
您需要登入 ZAN,系統會自動為您建立一個免費的 Access Key。大多數其他區塊鏈 RPC 服務供應商的流程也類似,您需要先取得一個地址,這個地址就是呼叫 RPC 服務的端點(Endpoint)。
透過命令列存取
您可以使用以下程式碼直接在 Shell 命令列中測試 RPC 連線是否正常:
curl --location 'https://api.zan.top/node/v1/pharos/testnet/${YOUR_ACCEEE_KEY}' \
--header 'Content-Type: application/json' \
--data '{"jsonrpc":"2.0","method":"eth_blockNumber","params":[],"id":1}'
請注意,${YOUR_ACCEEE_KEY}
需要替換為您自己的金鑰。您也可以直接使用 ZAN 網站上提供的程式碼來執行。
執行後,您將看到類似以下的輸出:
{"result":"0xdfedf7","id":1,"jsonrpc":"2.0"}
這表示 RPC 呼叫成功。
透過 JS SDK 呼叫合約
Pharos 是一條相容於 EVM 的 Layer 1 區塊鏈,因此完全可以直接使用以太坊的生態系統。您可以使用 Viem、Ethers 等 SDK 來呼叫合約。如果是前端開發(例如使用 React),還可以使用 wagmi 和 Ant Design Web3 這類 SDK 和元件庫。
舉例來說,使用 Viem,您可以透過以下方式初始化 SDK 並呼叫 getBlockNumber
方法:
import { createPublicClient, http, defineChain } from 'viem'
// 1. 定義 Pharos 鏈配置
const pharos = defineChain({
id: 688688, // Pharos 測試網的 chainId
name: 'Pharos Testnet',
nativeCurrency: {
name: 'Ether',
symbol: 'ETH',
decimals: 18,
},
rpcUrls: {
default: { http: ['https://api.zan.top/node/v1/pharos/testnet/${YOUR_ACCEEE_KEY}'] },
},
blockExplorers: {
default: { name: 'Pharos Explorer', url: 'https://pharos-testnet.socialscan.io/' },
},
})
// 2. 建立 PublicClient
const publicClient = createPublicClient({
chain: pharos,
transport: http(), // 若不傳入 URL,預設使用 pharos.rpcUrls.default.http[0]
})
// 3. 使用
const blockNumber = await publicClient.getBlockNumber()
console.log('Pharos 區塊高度:', blockNumber)
有關 Pharos 鏈的詳細資訊,請參考:
https://docs.pharosnetwork.xyz/network-overview/pharos-networks
若要呼叫合約,可以使用 SDK 的 readContract
、simulateContract
和 writeContract
方法。
readContract
:底層呼叫的是 Ethereum JSON-RPC 的eth_call
方法。不會消耗 Gas 且不會上鏈,適用於呼叫合約中的唯讀方法。writeContract
:呼叫的是eth_sendTransaction
,用於執行會修改合約狀態的操作。simulateContract
:Viem 透過呼叫eth_call
+eth_estimateGas
來模擬寫入操作。
對於 writeContract
,由於需要簽署交易,您需要按照以下方式初始化錢包客戶端:
import { wagmiAbi } from './abi'
import { createWalletClient, custom } from 'viem'
// ...
const { request } = await publicClient.simulateContract({
address: '0xFBA3912Ca04dd458c843e2EE08967fC04f3579c2',
abi: wagmiAbi,
functionName: 'mint',
args: [69420],
account
})
await walletClient.writeContract(request)
設定錢包的 RPC
錢包也需要與鏈互動,您可以透過設定自訂網路來使用自訂的 RPC 服務。以下以 MetaMask 為例:
- 點擊錢包左上角的網路選單。
- 編輯現有網路或新增自訂網路。
- 將 Pharos 測試網新增至 MetaMask:
這樣,錢包發起的交易和請求就會使用 ZAN 的 RPC 服務。這對於有特殊速度和效能需求的用戶非常有用。此外,若錢包尚未內建支援某些鏈,也可以透過這種方式新增至錢包。