btc、usdt 根据交易hash如何得到交易明细和手续费
V刘晨曦
发表于 2022-12-20 00:43:20
84
0
0
1.在自己的钱包节点上根据txId获取交易明细
2.通过原始交易递归计算手续费: 公式[ 手续费 sum(vin)- sum(vout) ]
要求:
需要对utxo有一定的了解~~~
直接low代码:
//交易信息2 |" Y ?* ]: s6 p& Y
public class BtcTransactionInfo implements Serializable {
private static final long serialVersionUID = 1L; F; y4 Y2 f- W! S% s) @
private String txId;! n9 {! O. Z3 x
private String hash;
private String blockheight;# p" e0 F( @4 F" y$ N
private String blockweight;
private String blockconfirmations;( g: n( i* l# F$ q" ~8 A. i1 u
private String blockversion;
private String previousblockhash;- n% }0 L3 R& Z. |8 ^3 ~
private String nextblockhash;: j' A; r S3 W: c/ V
private String version;
private String size;
private String vsize;
private String locktime;
private String hex;
private String blockhash;8 Y, D8 i3 z( |1 x- t" G4 e; u
private String confirmations;$ y. r% [8 d6 Y
private String time;2 p, l% [$ I' _7 g- X
private String blocktime;
private BigDecimal amount;
private BigDecimal free;" A. b! ~, T; m9 c# t
private String from;
private String to;
$ f- |) r' p2 H, `) [
}( m9 M2 E, s* e' k$ ]- I& N- M
//根据交易的txid调用钱包api获取相应信息% {3 I; k; [0 K& o6 x
public Object getrawTransactionByTxIdFromWallet(String txId) throws CoinException {. H* T e( z8 e2 B7 z, e
BtcTransactionInfo tranc = new BtcTransactionInfo();
try {9 |3 }5 }/ M/ v5 D9 B, J& h! T3 L
//调用原始交易接口
Map transaction = (Map) btService.getTrawtransaction(txId, 1);
JSONObject info = JSONObject.parseObject(JSON.toJSONString(transaction));
String blockHash = info.getString("blockhash");$ {+ Y6 z) ]/ q- U7 r* w+ S
/*block*/
//调用根据blockhash 获取块信息接口( R9 Y' t" I- R# ?$ } M
Map blockInfo = (Map)btService.getblock(blockHash);" d ~& b3 p) ~. F
JSONObject block = JSONObject.parseObject(JSON.toJSONString(blockInfo));
tranc.setBlockconfirmations(block.getString("confirmations"));5 A o. m6 H* N' c" ?, w( B
tranc.setBlocktime(block.getString("time"));7 L1 P% d% Y( L) ]/ K
tranc.setBlockversion(block.getString("version"));& f z% p+ w( u. u0 a: |" |
tranc.setBlockheight(block.getString("height"));" V9 _, M9 l- a. x6 c* C) k+ N; ^
tranc.setBlockweight(block.getString("weight"));
tranc.setPreviousblockhash(block.getString("previousblockhash"));
tranc.setNextblockhash(block.getString("nextblockhash"));
tranc.setTxId(info.getString("txid"));
tranc.setHash(info.getString("hash"));
tranc.setVersion(info.getString("version"));: N+ k, {( l- c$ f3 t
tranc.setSize(info.getString("size"));
tranc.setVsize(info.getString("vsize"));
tranc.setLocktime(info.getString("locktime"));, k# b( J# |0 t
tranc.setHex(info.getString("hex"));% S, D9 k+ H5 n& y( `9 S
tranc.setBlockhash(blockHash);
tranc.setConfirmations(info.getString("confirmations"));, `* G7 y% P. K! I: B" w
tranc.setTime(info.getString("time"));& g, ?" a [ ~3 @
tranc.setBlocktime(info.getString("blocktime"));
0 o- ~ o' }- K6 Z3 D4 c5 I: l, k* U2 |
JSONArray vins = JSONArray.parseArray(info.getString("vin"));/ {( u* ]# K8 R
double sumvin = 0 ;9 j4 `, G- b& W m% [5 I3 R# S7 [$ q
List formAddress = new ArrayList();
for (int i = 0,len = vins.size(); i
成为第一个吐槽的人