The quickest way to start building on Katana with Quicknode is by sending a JSON-RPC request to your endpoint. In this quickstart, you’ll create an endpoint, copy its provider URL, and make your first request. Code samples are available in cURL as well as popular SDKs and programming languages.
Get Your Katana Endpoint
如需了解 Quicknode 仪表盘的详细操作指南,请参阅我们的 指南
发送您的第一个请求
Your endpoint is ready. Now, let's make your first call to the Katana blockchain. We’ll use the eth_blockNumber 该方法返回最新的区块号。 选择您首选的语言或 SDK,并按照以下步骤发送您的第一个请求.
- cURL
- Quicknode SDK
Python
- JavaScript
- Ruby
- 去
- Ethers.js
Web3.py
- Eth.rb
- Ethgo
检查 cURL 的安装情况
大多数基于 *nix 的系统默认都支持 cURL。打开终端,运行以下命令检查 cURL 的版本:
curl --version
发送一个 JSON-RPC 请求
在终端中,复制并粘贴以下 cURL 命令以获取最新的区块号:
curl -X POST YOUR_QUICKNODE_ENDPOINT_URL/ \
-H "Content-Type: application/json" \
-d '{"jsonrpc":"2.0","method":"eth_blockNumber","params":[],"id":1}'
示例回答
{
"jsonrpc": "2.0",
"id": 1,
"result": "0x1234567"
}
设置您的项目
首先,使用 `node --version` 命令验证 Node.js 是否已安装。如果尚未安装,请从 https://nodejs.org 下载。然后创建一个新目录并初始化一个 Node.js 项目:
mkdir katana-api-quickstart
cd katana-api-quickstart
npm init -y
安装 Quicknode SDK
安装 Quicknode SDK 软件包:
npm 安装 @quicknode/sdk
创建主文件
为您的代码创建一个 index.js 文件:
touch index.js
将此代码添加到你的 index.js 文件中
将以下代码复制并粘贴到你的 index.js 文件中:
const { Core } = require('@quicknode/sdk');
const main = async () => {
const core = new Core({
endpointUrl: 'YOUR_QUICKNODE_ENDPOINT_URL/',
});
const blockNumber = await core.client.request({
method: 'eth_blockNumber',
});
console.log('Block number:', parseInt(blockNumber, 16));
};
main();
运行你的项目
运行您的脚本以查看最新的区块号:
node index.js
设置您的项目
为您的 Python 项目创建一个新目录:
mkdir katana-python-quickstart
cd katana-python-quickstart
创建并激活虚拟环境
创建一个虚拟环境来管理依赖项:
python3 -m venv venv
source venv/bin/activate
安装请求
安装 requests 库以进行 HTTP 请求:
pip 安装 requests
编写一个 Python 脚本(app.py)
创建一个包含以下代码的 Python 文件:
import requests
import json
# Your Quicknode endpoint URL
endpoint_url = "YOUR_QUICKNODE_ENDPOINT_URL/"
# JSON-RPC request payload
payload = {
"jsonrpc": "2.0",
"id": 1,
"method": "eth_blockNumber",
"params": []
}
# Make the request
response = requests.post(endpoint_url, json=payload)
result = response.json()
print("Latest block number (hex):", result["result"])
print("Latest block number (decimal):", int(result["result"], 16))
运行该脚本
运行您的 Python 脚本:
python app.py
设置您的项目
创建一个新目录并初始化一个 Node.js 项目:
mkdir katana-js-quickstart
cd katana-js-quickstart
npm init -y
创建一个 JavaScript 文件(app.js)
创建一个名为 app.js 的文件,并输入以下代码(使用 Node.js 18 及以上版本中提供的原生 fetch 功能):
const url = 'YOUR_QUICKNODE_ENDPOINT_URL/';
const options = {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({
jsonrpc: '2.0',
method: 'eth_blockNumber',
params: [],
id: 1
})
};
async function main() {
try {
const response = await fetch(url, options);
const data = await response.json();
console.log('Block Number (hex):', data.result);
console.log('Block Number (decimal):', parseInt(data.result, 16));
} catch (error) {
console.error('Error:', error);
}
}
main();
运行该脚本
执行您的 JavaScript 脚本:
node app.js
设置您的项目
为您的 Ruby 项目创建一个新目录:
mkdir katana-ruby-quickstart
cd katana-ruby-quickstart
检查 Ruby 安装情况
请确认您的系统上已安装 Ruby。如果尚未安装,请从 https://ruby-lang.org 安装:
ruby --version
创建一个 Ruby 脚本(main.rb)
创建一个名为 main.rb 的文件,并输入以下代码:
require "uri"
require "json"
require "net/http"
url = URI("YOUR_QUICKNODE_ENDPOINT_URL/")
https = Net::HTTP.new(url.host, url.port)
https.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Content-Type"] = "application/json"
request.body = JSON.dump({
"method": "eth_blockNumber",
"params": [],
"id": 1,
"jsonrpc": "2.0"
})
response = https.request(request)
result = JSON.parse(response.read_body)
hex_result = result["result"]
decimal_result = hex_result.to_i(16)
puts "Block number (hex): #{hex_result}"
puts "Block number (decimal): #{decimal_result}"
运行该脚本
运行您的 Ruby 脚本以查看最新的区块编号:
ruby main.rb
设置您的项目
为您的 Go 项目创建一个新目录:
mkdir katana-go-quickstart
cd katana-go-quickstart
检查围棋布局
请确认您的系统上已安装 Go。如果尚未安装,请从 https://golang.org 安装:
go version
创建一个 Go 脚本(main.go)
创建一个名为 main.go 的文件,并输入以下代码:
package main
import (
"encoding/json"
"fmt"
"strings"
"net/http"
"io/ioutil"
"strconv"
)
type Response struct {
Result string `json:"result"`
}
func main() {
url := "YOUR_QUICKNODE_ENDPOINT_URL/"
method := "POST"
payload := strings.NewReader(`{"method":"eth_blockNumber","params":[],"id":1,"jsonrpc":"2.0"}`)
client := &http.Client{}
req, err := http.NewRequest(method, url, payload)
if err != nil {
fmt.Println(err)
return
}
req.Header.Add("Content-Type", "application/json")
res, err := client.Do(req)
if err != nil {
fmt.Println(err)
return
}
defer res.Body.Close()
body, err := ioutil.ReadAll(res.Body)
if err != nil {
fmt.Println(err)
return
}
var response Response
err = json.Unmarshal(body, &response)
if err != nil {
fmt.Println("Error parsing JSON:", err)
return
}
// Convert hex to decimal
blockNumber, err := strconv.ParseInt(response.Result, 0, 64)
if err != nil {
fmt.Println("Error converting hex to decimal:", err)
return
}
fmt.Printf("Block number (hex): %s\n", response.Result)
fmt.Printf("Block number (decimal): %d\n", blockNumber)
}
运行该脚本
运行您的 Go 脚本以查看最新的区块号:
运行 main.go
设置您的项目
创建一个新目录并初始化一个 Node.js 项目(假设已安装 Node.js):
mkdir katana-ethers-quickstart
cd katana-ethers-quickstart
npm init -y
npm pkg set type=module
安装 ethers.js
安装用于与以太坊交互的 ethers.js 库:
npm 安装 ethers
创建主文件(index.js)
创建一个名为 index.js 的文件,并输入以下代码:
import { ethers } from "ethers";
(async () => {
const provider = new ethers.JsonRpcProvider("YOUR_QUICKNODE_ENDPOINT_URL/");
const blockNum = await provider.getBlockNumber();
console.log('Current block number (decimal):', blockNum);
console.log('Block number (hex):', '0x' + blockNum.toString(16));
})();
运行你的项目
运行您的脚本以查看最新的区块号:
node index.js
设置您的项目
为您的 web3.py 项目创建一个新目录:
mkdir katana-web3py-quickstart
cd katana-web3py-quickstart
安装 web3.py(如果尚未安装)
使用 `pip list | grep web3` 检查是否已安装 web3.py。如果未找到,请安装它:
pip 安装 web3
编写一个 Python 脚本(main.py)
创建一个名为 main.py 的文件,并输入以下代码:
from web3 import Web3
w3 = Web3(Web3.HTTPProvider("YOUR_QUICKNODE_ENDPOINT_URL/"))
try:
latest_block_number = w3.eth.block_number
print(f"Latest Block Number: {latest_block_number}")
print(f"Block number (hex): {hex(latest_block_number)}")
except Exception as e:
print(f"Error: {e}")
设置您的项目
为您的 eth.rb 项目创建一个新目录:
mkdir katana-ethrb-quickstart
cd katana-ethrb-quickstart
安装 eth.rb(如果尚未安装)
使用 `gem list eth` 检查 eth.rb 是否已安装。如果未找到,请安装它:
gem 安装 eth
创建一个 Ruby 脚本(main.rb)
创建一个名为 main.rb 的文件,并输入以下代码:
require 'eth'
client = Eth::Client.create "YOUR_QUICKNODE_ENDPOINT_URL/"
begin
block_number = client.eth_block_number
hex_result = block_number["result"]
decimal_result = hex_result.to_i(16)
puts "Block number (hex): #{hex_result}"
puts "Block number (decimal): #{decimal_result}"
rescue => e
puts "Error: #{e.message}"
end
运行该脚本
运行您的 Ruby 脚本以查看最新的区块编号:
ruby main.rb
设置您的项目
为您的 Ethgo 项目创建一个新目录:
mkdir katana-ethgo-quickstart
cd katana-ethgo-quickstart
初始化 Go 模块并安装 ethgo
初始化一个 go.mod 文件以跟踪依赖项,然后安装 ethgo SDK:
go mod init katana-ethgo-quickstart
go get github.com/umbracle/ethgo
go mod tidy
创建一个 Go 脚本(main.go)
创建一个名为 main.go 的文件,并输入以下代码:
package main
import (
"fmt"
"log"
"github.com/umbracle/ethgo/jsonrpc"
)
func main() {
client, err := jsonrpc.NewClient("YOUR_QUICKNODE_ENDPOINT_URL/")
if err != nil {
log.Fatalf("Failed to connect to Ethereum: %v", err)
}
blockNumber, err := client.Eth().BlockNumber()
if err != nil {
log.Fatalf("Failed to get latest block number: %v", err)
}
fmt.Printf("Latest block number (decimal): %d\n", blockNumber)
fmt.Printf("Latest block number (hex): 0x%x\n", blockNumber)
}
运行该脚本
运行您的 Go 脚本以查看最新的区块号:
运行 main.go
我们 ❤️ 您的反馈!
如果您对本文档有任何反馈或疑问,请告诉我们。我们非常期待您的反馈!