如何通过Blockfrost.io API获取Cardano交易的收发地址等核心信息?
解决Blockfrost API获取Cardano交易收发地址的问题
你用的txs/{hash}接口本身确实不会直接返回from/to地址——这是因为Cardano采用UTXO模型,交易没有传统意义上的“转出/转入地址”字段,得通过交易的输入输出UTXO来推导。下面是具体的获取方法:
1. 手续费(Fees)
这个很简单,txs/{hash}接口返回的fees字段就是手续费,单位是lovelace(1 ADA = 1e6 lovelace),直接提取即可。
2. 转出地址(Address from)
交易的inputs是被消耗的UTXO列表,每个UTXO都属于某个地址(也就是转出方)。你需要:
- 调用
txs/{hash}/utxos接口,或者对每个输入的transaction_hash和index,单独调用utxos/{tx_hash}/{index}接口,获取该UTXO的address字段。 - 收集所有这些地址(去重后就是转出方地址列表)——因为一个交易可能有多个转出方(比如合并多个UTXO)。
3. 转入地址(Address to)
交易的outputs里的address字段是所有接收地址,但其中包含找零地址(属于转出方的地址,用来接收未花完的余额),需要过滤掉:
- 先拿到所有转出地址列表(步骤2的结果)
- 遍历
outputs里的每个address,排除掉在转出地址列表里的地址,剩下的就是实际转入地址。
4. 转移资产(类型+数量)
同样从outputs里提取,但要排除找零部分:
- 对每个非找零的output,提取
amount数组里的内容:- ADA的资产类型是
lovelace,数量直接对应; - 原生代币的类型是
policy_id.asset_name(比如618417d7471112e637f99a016a0ded7a703380a59ed4e581aeb4e053.myasset),数量是对应的数值。
- ADA的资产类型是
- 把这些资产汇总,就是实际转移的资产。
另外要注意:如果是涉及脚本地址的交易(比如合约交互),逻辑会更复杂,但普通用户转账的场景按上面的方法就能搞定。
内容的提问来源于stack exchange,提问作者AGuismo
相关产品推荐
相关产品推荐

