You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

web3.py如何连接Solana、比特币等非以太坊链节点

问题根因

web3.py是专为EVM兼容链设计的开发SDK,原生仅支持遵循以太坊JSON-RPC规范的节点接口,完全不兼容比特币、Solana这类非EVM公链的接口协议,代码无法运行是底层适配逻辑不匹配导致的,和节点地址填写、参数传值没有关系。
具体不匹配的点包括:

  • 代码传入比特币主网节点地址,却调用eth命名空间下的eth_chainId、eth_getBalance等以太坊标准RPC方法,比特币节点无法识别这类请求,会直接返回接口不存在的报错。
  • 代码中传入的1GNgwA8JfG7Kc8akJ8opdNWJUihqUztfPe是比特币Legacy格式地址,和以太坊要求的0x开头地址格式完全不兼容,即使是EVM链节点也无法识别该类地址。
  • 比特币、Solana都有独立设计的账户模型、RPC规范、加密算法逻辑,web3.py没有内置这些非EVM链的适配逻辑,不可能通过单纯切换HTTPProvider节点地址的方式实现跨链连接。
解决方案

针对不同公链选择生态原生适配的SDK即可,不要尝试用web3.py直接连接非EVM链节点。

比特币节点交互

使用比特币生态原生Python SDK python-bitcoinlib,该库原生适配比特币节点RPC规范,支持余额查询、交易构造签名、区块查询等全量比特币链上操作。
基础调用示例:

from bitcoinrpc.authproxy import AuthServiceProxy

# 连接本地开启RPC服务的比特币节点,替换为自己节点配置的rpc用户名、密码
btc_rpc = AuthServiceProxy("http://%s:%s@127.0.0.1:8332" % ("your_rpc_user", "your_rpc_password"))
# 查询当前区块高度
print(btc_rpc.getblockcount())
# 地址余额查询需要节点开启txindex索引,或搭配第三方链上索引服务使用

Solana节点交互

使用Solana官方维护的Python SDK solana-py,该库完全适配Solana JSON-RPC规范,支持Solana账户查询、交易发送、程序交互等全量操作。
基础调用示例:

from solana.rpc.api import Client
from solana.publickey import PublicKey

# 连接Solana主网公开节点
sol_client = Client("https://api.mainnet-beta.solana.com")
# 查询当前链上slot高度
print(sol_client.get_slot())
# 查询指定地址余额
address = PublicKey("替换为要查询的Solana钱包地址")
balance_res = sol_client.get_balance(address)
print(balance_res.value)

如果需要统一入口交互多链,可以选择封装了多链适配逻辑的多链抽象SDK,这类SDK底层也是针对不同公链单独封装了原生调用逻辑,并非通过web3.py直接对接非EVM节点实现。

内容的提问来源于stack exchange,提问作者Akash Pattnaik

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.30 09:00:52