btc、usdt 根据交易hash如何得到交易明细和手续费
V刘晨曦
发表于 2022-12-20 00:43:20
109
0
0
1.在自己的钱包节点上根据txId获取交易明细 r0 J9 P1 I0 k: }: L
2.通过原始交易递归计算手续费: 公式[ 手续费 sum(vin)- sum(vout) ]$ x4 _9 p) S9 V( T4 d8 x5 k; E
要求:8 E: v/ y+ ?" H6 d Y w0 G& w8 K
需要对utxo有一定的了解~~~% K8 a/ d" F* G3 E
直接low代码:7 F+ r& @% z. o7 X
//交易信息
public class BtcTransactionInfo implements Serializable {1 F- V# h1 |+ X
% a# N, K2 N8 a6 c# ~. }
private static final long serialVersionUID = 1L;
private String txId;
private String hash;; W. ^9 e0 e: ~9 H$ p0 e
private String blockheight;
private String blockweight;
private String blockconfirmations;, p$ [0 ^4 H9 [% v
private String blockversion; w4 H2 d. X5 v2 h7 ~4 j! ?! {
private String previousblockhash;
private String nextblockhash;7 k8 H! V0 I1 }; U- S& B0 n
private String version;4 }& D# c) }: A4 p% u. f! n0 r9 t. b
private String size;" Q7 A0 N' [' {2 k1 P; u+ S
private String vsize;
private String locktime;4 S0 x" ]9 m* O8 O0 i
private String hex;' k/ C& m2 C: t# b
private String blockhash;
private String confirmations;
private String time;% Z* ?: Y# R5 J) i8 O6 G0 P. N h
private String blocktime;
private BigDecimal amount;* A2 _7 q9 ~* l$ \* v$ l% q
private BigDecimal free;
private String from;$ K6 y* P j9 n/ S9 B
private String to;! }, H% ]" e' I9 D9 ?( b B0 z9 i
& E W* K P( j7 q0 @4 h* f- w
}
//根据交易的txid调用钱包api获取相应信息# A9 U& m4 w$ N) [/ s& Z/ o' f
public Object getrawTransactionByTxIdFromWallet(String txId) throws CoinException {
BtcTransactionInfo tranc = new BtcTransactionInfo();
try {
//调用原始交易接口$ K9 L; U2 |: }
Map transaction = (Map) btService.getTrawtransaction(txId, 1);
JSONObject info = JSONObject.parseObject(JSON.toJSONString(transaction));
String blockHash = info.getString("blockhash");
/*block*/) d! E5 {) U+ g1 ~* Q0 c+ T
//调用根据blockhash 获取块信息接口
Map blockInfo = (Map)btService.getblock(blockHash);3 m( F8 X" q$ a( W
JSONObject block = JSONObject.parseObject(JSON.toJSONString(blockInfo));
tranc.setBlockconfirmations(block.getString("confirmations"));
tranc.setBlocktime(block.getString("time"));
tranc.setBlockversion(block.getString("version"));
tranc.setBlockheight(block.getString("height"));
tranc.setBlockweight(block.getString("weight"));; c' b8 W h; A) F4 }0 g
tranc.setPreviousblockhash(block.getString("previousblockhash"));
tranc.setNextblockhash(block.getString("nextblockhash"));% V- G" {( N0 y9 t% ~. {4 J; Z* C0 R
tranc.setTxId(info.getString("txid"));
tranc.setHash(info.getString("hash"));- E- J6 N0 u3 x4 V: |
tranc.setVersion(info.getString("version"));
tranc.setSize(info.getString("size"));
tranc.setVsize(info.getString("vsize"));
tranc.setLocktime(info.getString("locktime"));7 e& [2 e" B3 h* Z" G+ m
tranc.setHex(info.getString("hex"));
tranc.setBlockhash(blockHash);
tranc.setConfirmations(info.getString("confirmations"));
tranc.setTime(info.getString("time"));
tranc.setBlocktime(info.getString("blocktime"));
3 V/ F+ A" Y$ y5 Z: G
JSONArray vins = JSONArray.parseArray(info.getString("vin"));0 R! D) y, J* {+ N, c6 N
double sumvin = 0 ;
List formAddress = new ArrayList();
for (int i = 0,len = vins.size(); i
成为第一个吐槽的人