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

如何在R中通过API获取智能合约的余额、代币信息等有效数据

R环境下获取智能合约数据操作步骤

你已经完成合约地址获取、R环境导入的前置操作后,可按以下流程获取余额、代币信息等数据:

  • 首先申请Etherscan开放平台的API密钥,基础调用额度免费,可直接在平台开发者板块申领
  • 推荐使用R的ether包封装接口请求,无需手动编写原生HTTP逻辑,安装&加载命令如下:
install.packages("ether")
library(ether)
  • 获取合约地址ETH余额示例代码:
# 替换为你自己的API密钥和目标合约地址
etherscan_api_key <- "你的API密钥"
target_contract_addr <- "已获取的合约哈希地址"

# 调用接口获取余额,返回值单位为wei
balance_wei <- eth_get_balance(address = target_contract_addr, api_key = etherscan_api_key)
# 换算为ETH单位
balance_eth <- balance_wei / 10^18
  • 获取ERC20代币基础信息、持仓余额示例:
    代币相关信息需要调用合约的公开读取方法,对应方法的函数选择器可直接在Etherscan的合约详情页查询,常用调用示例如下:
    # 1. 查询代币符号,symbol()方法的函数选择器固定为0x95d89b41
    token_symbol_hex <- eth_call(
      to = target_contract_addr,
      data = "0x95d89b41",
      api_key = etherscan_api_key
    )
    # 将返回的十六进制结果转码为字符串即可得到代币符号
    
    # 2. 查询指定地址在该合约下的代币余额,balanceOf()方法的函数选择器固定为0x70a08231
    # data参数规则:函数选择器 + 去掉0x前缀、补零到64位的待查询地址
    query_addr <- "要查询持仓的用户地址"
    data_param <- paste0("0x70a08231", str_pad(str_remove(query_addr, "0x"), 64, side = "left", pad = "0"))
    token_balance_hex <- eth_call(
      to = target_contract_addr,
      data = data_param,
      api_key = etherscan_api_key
    )
    # 将返回的十六进制结果转为十进制,再除以代币精度即可得到实际余额
    
  • 如果你要查询的是ERC721、ERC1155等NFT类合约,替换对应方法的函数选择器即可获取NFT余额、元数据等相关数据。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 14:15:07