btc、usdt 根据交易hash如何得到交易明细和手续费
V刘晨曦
发表于 2022-12-20 00:43:20
193
0
0
1.在自己的钱包节点上根据txId获取交易明细
2.通过原始交易递归计算手续费: 公式[ 手续费 sum(vin)- sum(vout) ]
要求:* z2 h' C* l. T' d2 S7 }5 P
需要对utxo有一定的了解~~~1 a8 F, S0 c" Y5 _2 v% l2 O
直接low代码:
//交易信息9 X6 @9 W( l/ o, |2 C: E$ W5 K
public class BtcTransactionInfo implements Serializable {4 ^6 h" y1 g) e9 `
* p1 ^* U* R" t4 r# }- L8 Q
private static final long serialVersionUID = 1L;9 |( B* t8 H6 j; a9 C7 t( j
- c, a% V0 k2 w/ A5 x% L( h. c
private String txId;; M; r8 s" b/ }4 Q5 z
private String hash;- ~0 [! L; k. X0 @4 Y- }; K
private String blockheight;% g: Y* e6 S2 x5 L
private String blockweight;7 ~5 r; c# ~) C9 Q/ q
private String blockconfirmations;6 R b9 N. s/ ^
private String blockversion;
private String previousblockhash; ]; N2 n% t9 g0 Z# ^5 K
private String nextblockhash;
private String version;6 g$ ^- S( n1 V% Q8 C v
private String size;
private String vsize;$ F1 ^! V* e6 t! ?6 o
private String locktime;
private String hex;
private String blockhash;
private String confirmations;
private String time;
private String blocktime;
private BigDecimal amount;
private BigDecimal free;3 a: P9 n! @% x- V6 M
private String from;; ^# P4 v; h/ a+ [/ G$ p
private String to; w7 l0 S; l8 V* e7 n
) b9 R7 Q2 I! \
}. n: p; u. `9 ?. `
//根据交易的txid调用钱包api获取相应信息
public Object getrawTransactionByTxIdFromWallet(String txId) throws CoinException {3 g. C) x: E; t' j" c1 q6 V7 i" d
BtcTransactionInfo tranc = new BtcTransactionInfo();
try {" _& ]; a E5 r# s
//调用原始交易接口+ p4 Z v. S7 f |5 g% _, u' ^
Map transaction = (Map) btService.getTrawtransaction(txId, 1);$ n: F9 A! O* _
JSONObject info = JSONObject.parseObject(JSON.toJSONString(transaction));
String blockHash = info.getString("blockhash");
/*block*/
//调用根据blockhash 获取块信息接口/ d+ T9 h7 o' S) a3 q e9 e
Map blockInfo = (Map)btService.getblock(blockHash);
JSONObject block = JSONObject.parseObject(JSON.toJSONString(blockInfo));) e" ?) [ G+ J
tranc.setBlockconfirmations(block.getString("confirmations"));
tranc.setBlocktime(block.getString("time"));
tranc.setBlockversion(block.getString("version"));% o3 F) g9 J( P$ \4 Z: H9 C
tranc.setBlockheight(block.getString("height"));
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"));1 s7 C4 w" B7 X1 f7 R; K7 @6 y
tranc.setVersion(info.getString("version"));& L$ ~: _$ C `! G- J" {
tranc.setSize(info.getString("size"));
tranc.setVsize(info.getString("vsize"));
tranc.setLocktime(info.getString("locktime"));$ w% t( B/ Z( b, T8 Y' D S9 @
tranc.setHex(info.getString("hex"));2 I9 j7 h9 h0 w- s3 `- L: z1 |6 J
tranc.setBlockhash(blockHash); O7 x7 ?$ g$ b; a* ^8 N* A5 T
tranc.setConfirmations(info.getString("confirmations"));
tranc.setTime(info.getString("time"));9 a; B% A$ K" U- \" u
tranc.setBlocktime(info.getString("blocktime"));
( ^/ N' Y& t- Q9 h4 L/ c
JSONArray vins = JSONArray.parseArray(info.getString("vin"));
double sumvin = 0 ;1 z* P& H! p$ ~6 f; W1 ^
List formAddress = new ArrayList();4 C1 n8 g% q( H! t$ ]
for (int i = 0,len = vins.size(); i
成为第一个吐槽的人



