btc、usdt 根据交易hash如何得到交易明细和手续费
V刘晨曦
发表于 2022-12-20 00:43:20
86
0
0
1.在自己的钱包节点上根据txId获取交易明细. s% U$ n9 P. u9 e+ |. }
2.通过原始交易递归计算手续费: 公式[ 手续费 sum(vin)- sum(vout) ]
要求:
需要对utxo有一定的了解~~~8 D0 D$ g1 W; Z: z
直接low代码:
//交易信息
public class BtcTransactionInfo implements Serializable {5 `! _( A* C L9 A J/ ~4 F$ }
private static final long serialVersionUID = 1L;
private String txId; Z. L; h a9 T% u7 |5 L- W% j' k
private String hash;! Y, k! |/ c9 L+ j [& v
private String blockheight;
private String blockweight;2 q$ N$ G9 ~. S' `5 |* {, ?# U
private String blockconfirmations;( A' L. M7 K9 g1 P3 _8 o
private String blockversion;- b1 z: u" A9 y9 g& o
private String previousblockhash;
private String nextblockhash;: ]$ J4 t. q# B+ j( [0 g/ t7 Q
private String version;
private String size;
private String vsize;; V& k) J: u# {5 s- v9 `) u- X
private String locktime;1 @ Y8 k7 h) Q2 t1 h1 y
private String hex;- E+ I6 }) u7 ^$ k6 e+ c) T
private String blockhash;
private String confirmations;) j& b. u8 ~5 w5 [9 j+ a
private String time;
private String blocktime;
private BigDecimal amount;
private BigDecimal free;; z8 j5 p0 }; Z1 [; z
private String from; O- H$ k9 z V: b1 V! D7 i
private String to;
- M. N) C5 R N4 q9 Z5 T
}
0 C+ R- @8 @# i/ H3 h! \0 @# i" F
//根据交易的txid调用钱包api获取相应信息
public Object getrawTransactionByTxIdFromWallet(String txId) throws CoinException {
BtcTransactionInfo tranc = new BtcTransactionInfo();
try {
//调用原始交易接口; ?7 {% g: L5 g2 [7 V* \
Map transaction = (Map) btService.getTrawtransaction(txId, 1);
JSONObject info = JSONObject.parseObject(JSON.toJSONString(transaction));
String blockHash = info.getString("blockhash");6 R6 V3 P* v) u, a
/*block*/
//调用根据blockhash 获取块信息接口
Map blockInfo = (Map)btService.getblock(blockHash);
JSONObject block = JSONObject.parseObject(JSON.toJSONString(blockInfo));# Z! |0 U! j k6 ^5 I
tranc.setBlockconfirmations(block.getString("confirmations"));
tranc.setBlocktime(block.getString("time"));3 ~- Q3 s! ^' Q& x
tranc.setBlockversion(block.getString("version"));
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"));% t4 \1 a$ O8 K6 j0 m+ {
tranc.setVersion(info.getString("version"));
tranc.setSize(info.getString("size"));/ L4 \+ ~; T% U: A6 p
tranc.setVsize(info.getString("vsize"));4 Q7 R9 G+ m- q! C7 Z- B& G3 q2 C
tranc.setLocktime(info.getString("locktime"));
tranc.setHex(info.getString("hex"));4 z9 Z0 @: H0 j8 K/ e. r9 c
tranc.setBlockhash(blockHash);
tranc.setConfirmations(info.getString("confirmations"));
tranc.setTime(info.getString("time"));
tranc.setBlocktime(info.getString("blocktime"));7 G& T- c; n" c W! |2 r/ @) R
8 g" L) h+ ]! K6 V3 }
JSONArray vins = JSONArray.parseArray(info.getString("vin"));1 p W5 M+ n Q9 H& ]+ A
double sumvin = 0 ;) e& q0 E# W9 }3 j% r. ^
List formAddress = new ArrayList();6 r4 p* e$ ]0 B+ D
for (int i = 0,len = vins.size(); i
成为第一个吐槽的人