Robinhood Chain 股票代币:乘数怎么换算,持有人与每日活跃怎么查
了解 Robinhood Chain 股票代币乘数原理与换算方式,通过 JSON-RPC eth_call 查询 uiMultiplier,并使用 Data API 检索持有人数量与每日活跃数据。
数据来自链上公开记录与智能合约状态,仅供参考,不构成投资建议。股票代币在部分国家与地区受到法律限制。
Robinhood Chain 支持代币化现实世界资产(RWA),涵盖美股与交易型开放式指数基金(ETF)。普通 ERC-20 代币的余额通常与底层资产保持 1:1 对应,但股票代币引入了公司行动乘数(multiplier),用于在拆股或股息再投资时动态调整对应股数,而无需变动持币地址的原始代币余额。
本文介绍股票代币乘数的工作机制、如何把代币余额换算为实际底层股票份额、如何通过 JSON-RPC eth_call 读取链上 uiMultiplier,以及如何使用 BlockVectra Data API 查询每日持有人与转账活跃数据。
关于 Robinhood Chain 的基础网络参数、方法策略与 RPC 接入,请参阅 Robinhood Chain 指南;关于股票数据集的通用字段定义与 CU(计算单元)用量模型,请参阅股票代币指南。
什么是股票代币乘数
Robinhood Chain 上的股票代币是由 Robinhood Assets (Jersey) Limited(RHJ)发行的标准 ERC-20 代币(精度为 18 位小数)。为了支持股票拆股与股息调整等公司行动,这些合约遵循 ERC-8056(Scaled UI Amount Extension) 规范。
乘数(uiMultiplier)定义了「每代币对应的底层股票份额」(shares-per-token):
- 返回精度:
uiMultiplier()采用 18 位定点数表示,数值1e18代表1.0。 - 初始数值:在代币初次发行时,乘数初始为
1e18(即 1 个代币对应 1 股底层股票)。 - 公司行动触发:当发生公司行动(例如股票拆股或股息再投资)时,合约更新
uiMultiplier,并抛出UIMultiplierUpdated(uint256 oldMultiplier, uint256 newMultiplier, uint256 effectiveAtTimestamp)事件。
拆股时余额不变而乘数调整
股票代币不是弹性供应(rebasing)代币。在公司行动发生时:
- 用户的原始持币余额(
balanceOf(account))以及代币总发行量(totalSupply())保持固定不变。 - 合约仅调整缩放乘数。
举个例子:某底层股票实施 2 拆 1 的正向拆股(2-for-1 forward split):
- 持有 10 个代币的用户,其链上
balanceOf依旧显示为 10。 - 合约内的
uiMultiplier由1.0(1e18)变更为2.0(2e18)。 - 每个代币现在代表 2 股底层股票,该用户所代表的实际底层持仓为 20 股。
怎样换算成「股数」
换算为底层股票数量遵循 Robinhood 官方文档给出的公式:
underlying shares = raw token amount × uiMultiplier ÷ 1e18ERC-8056 合约还在链上提供了辅助读取函数:
balanceOfUI(address account):直接返回指定账户对应的底层股票份额(已按uiMultiplier缩放,精度为 18 位)。totalSupplyUI():直接返回按底层股票份额计量的总供应量。
此外,代币转账时会触发 TransferWithScaledUI(address indexed from, address indexed to, uint256 value, uint256 uiValue) 事件,同时记录原始转账数值与换算后的底层股数。
乘数与预言机价格的关系
Robinhood Chain 为每个股票代币部署了专属的 Chainlink 价格预言机(AggregatorV3Interface):
- Chainlink 喂价(
latestRoundData())返回的价格已经预先包含了乘数调整(底层股票价格乘以乘数)。 - 读取链上 Chainlink 预言机时,拿到的是代币的完整实际单价,切勿重复乘以乘数。
- 若需通过链下接口获取元数据,Robinhood 提供了 REST 端点
GET https://api.robinhood.com/rhj/assets,返回各代币的currentMultiplier、pendingMultiplier以及待生效时间戳。
用 JSON-RPC eth_call 读取乘数
可以通过 BlockVectra 提供的 Robinhood Chain JSON-RPC 端点,发起标准 eth_call 调用合约读取乘数:
- 函数名称:
uiMultiplier() - 4 字节函数选择器:
0xa60bf13d(即bytes4(keccak256("uiMultiplier()"))) - 返回格式:32 字节十六进制编码的
uint256(18 位定点数)
BlockVectra 在 https://api.blockvectra.com/v1/robinhood_mainnet 提供 Robinhood Chain 的 JSON-RPC 服务。可通过 x-api-key 请求头传入 API key,或把 key 拼入路径(https://api.blockvectra.com/v1/robinhood_mainnet/{api_key})。
代码示例
以下示例对 Robinhood Chain 上的 Everpure 股票代币合约(0x1Cdad396DB64BDa184d5182A97Dd9B3C62100b7D)查询 uiMultiplier():
curl -s "https://api.blockvectra.com/v1/robinhood_mainnet" \
-H "Content-Type: application/json" \
-H "x-api-key: $BLOCKVECTRA_API_KEY" \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "eth_call",
"params": [
{
"to": "0x1Cdad396DB64BDa184d5182A97Dd9B3C62100b7D",
"data": "0xa60bf13d"
},
"latest"
]
}'用 Data API 查股票代币持有人与每日活跃
JSON-RPC 适合获取单点实时状态,而若要汇总跨区块的每日转账笔数、净供应量变化以及持币人分布,直接扫描区块比较繁重。BlockVectra Data API 提供了预先聚合的股票代币每日数据。
相关的股票数据路径
在 OpenAPI 规范(data.yaml)中,/v1/data/robinhood_mainnet/ 下与股票代币相关的接口共有两个:
GET /v1/data/robinhood_mainnet/stocks:代币化股票每日活跃榜单,按每日转账笔数降序排列。GET /v1/data/robinhood_mainnet/stocks/{token}:查询单个代币化股票的合约元数据,以及近 30 天的历史每日指标。
每日活跃榜单(GET /v1/data/robinhood_mainnet/stocks)
该接口返回指定 UTC 日期的股票活跃榜单,包含持币地址数、参与转账的独立地址数、铸造销毁与交易数据。
请求参数
chain(路径参数,必填):链标识,填robinhood_mainnet。day(查询参数,可选):UTC 日期,格式YYYY-MM-DD。省略时默认为近期的有记录日期。若该日期无活动记录,返回 HTTP200与空数组data: []。格式错误返回 HTTP400(error.code = "bad_request")。limit(查询参数,可选):返回条数上限,默认 50,超过 500 会被截断至 500。
返回字段说明(StockDailyListEnvelope)
返回外层为包含 data(StockDaily 数组)和 meta 的结构体,无分页游标:
| 字段名 | 类型 | 说明 |
|---|---|---|
day | string (date) | 汇总的 UTC 日期(YYYY-MM-DD)。 |
token | string (address) | 20 字节代币合约地址(0x 开头 40 位小写十六进制字符)。 |
symbol | string | 代币代号。 |
name | string | 代币显示名称(不可用时为空字符串 "")。 |
transfers | integer (int64) | 该 UTC 日期内链上转账总笔数。 |
unique_senders | integer (int64) | 当日发起转账的独立发送方地址数。 |
unique_receivers | integer (int64) | 当日接收转账的独立接收方地址数。 |
mint_raw_amount | string (decimal) | 当日铸造的原始代币数量(UInt256 字符串)。 |
burn_raw_amount | string (decimal) | 当日销毁的原始代币数量(UInt256 字符串)。 |
net_supply_change | string (decimal) | 当日净供应量变化量(带符号的 Int256 字符串)。 |
holder_count | integer (int64) | 持币地址总数。 |
top10_holder_share_bps | integer | 前 10 名持币人总持仓份额,单位为基点(bps,0–10000,100 bps = 1%)。 |
dex_swap_count | integer (int64) | 当日涉及该代币的 DEX 兑换笔数。 |
dex_raw_volume | string (decimal) | 当日 DEX 原始交易额(UInt256 字符串)。 |
refreshed_at | string (timestamp) | 该记录的 ISO-8601 UTC 刷新时间戳。 |
curl -s "https://api.blockvectra.com/v1/data/robinhood_mainnet/stocks?day=2026-09-30&limit=10" \
-H "x-api-key: $BLOCKVECTRA_API_KEY"查询单个代币历史指标(GET /v1/data/robinhood_mainnet/stocks/{token})
该接口返回特定股票代币的合约元数据,并在 daily 数组中附带至多 30 天的每日历史指标,按日期降序排列。
请求参数
chain(路径参数,必填):链标识,填robinhood_mainnet。token(路径参数,必填):20 字节代币合约地址,不区分大小写,0x前缀可选。代币不存在返回 HTTP404(error.code = "not_found")。
返回字段说明(StockTokenEnvelope)
返回外层包含 data(StockToken 对象)与 meta:
- 合约元数据:
address:合约地址。symbol:代币代号。name:代币名称。decimals:代币精度(0–255,或null)。created_block:合约创建时的区块高度。created_tx_hash:创建合约的交易哈希。factory:工厂合约地址。creator:部署者地址(或null)。mint_address:授权铸造地址(或null)。burn_address:授权销毁地址(或null)。refreshed_at:元数据刷新时间戳。
daily数组:包含至多 30 天的历史每日记录(StockDailyMetric),字段与榜单结构一致:day、transfers、unique_senders、unique_receiversmint_raw_amount、burn_raw_amount、net_supply_changeholder_count(持币人总数)、top10_holder_share_bps(前 10 持仓基点)dex_swap_count、dex_raw_volume、refreshed_at
curl -s "https://api.blockvectra.com/v1/data/robinhood_mainnet/stocks/0x1Cdad396DB64BDa184d5182A97Dd9B3C62100b7D" \
-H "x-api-key: $BLOCKVECTRA_API_KEY"合规说明与地区限制
- 链上活动数据说明:Data API 与 JSON-RPC 返回的指标(包括
holder_count、transfers、dex_swap_count与uiMultiplier)反映的是区块链公开账目与智能合约状态,不代表证券二级市场股价,不构成任何投资建议或资产评估。 - 非投资建议:本技术指南不构成对任何金融产品的要约、招揽或购买建议。
- 地域法律限制:Robinhood 股票代币属于由在泽西岛注册的 Robinhood Assets (Jersey) Limited(RHJ,注册编号 162428)发行的代币化债务证券。该产品提供对底层美股与 ETF 的经济敞口,但并不赋予投资者对底层证券发行公司的法律权益或直接股东权利。股票代币未根据美国 1933 年《证券法》进行注册,严禁在美国境内或向美国人(U.S. Persons)直接或间接进行发售、转让或交付;在英国、加拿大、瑞士等地区亦存在限制。完整的发售说明书与适用地区的法律声明,请参阅 Robinhood RHJ 官方说明 与 Robinhood Chain 股票代币概览。
下一步
最后更新: