btc、usdt 根据交易hash如何得到交易明细和手续费
V刘晨曦
发表于 2022-12-20 00:43:20
158
0
0
1.在自己的钱包节点上根据txId获取交易明细
2.通过原始交易递归计算手续费: 公式[ 手续费 sum(vin)- sum(vout) ]
要求:
需要对utxo有一定的了解~~~
直接low代码:3 }% C0 ?3 b5 P/ b
//交易信息
public class BtcTransactionInfo implements Serializable {
private static final long serialVersionUID = 1L;
private String txId;" ?- `2 b- k3 }
private String hash;
private String blockheight;
private String blockweight;
private String blockconfirmations;8 G& k7 i$ h( h8 {2 z
private String blockversion;
private String previousblockhash;
private String nextblockhash;
private String version;% T! ^/ u% V1 Y6 O) h+ P, N
private String size;) W' t/ L8 |$ o' b; H3 I4 [4 e
private String vsize;. C/ L: V0 S6 G/ t# W; u
private String locktime;
private String hex;
private String blockhash;4 o& [( z# T5 K& f! T1 E8 M" L7 e
private String confirmations;( h: I0 t, l2 f
private String time;
private String blocktime;7 J/ ]6 n* H$ A4 m8 A9 N$ X
private BigDecimal amount;2 I8 r0 W: u C4 ]1 q% q
private BigDecimal free;
private String from;" k! x- q! u' h0 r# {( |6 s
private String to;% A$ k* ^' y9 b& t9 G
}
/ |2 n# j1 x T( B8 q( D
//根据交易的txid调用钱包api获取相应信息( R. j+ j' W6 ?8 u* f, Q
public Object getrawTransactionByTxIdFromWallet(String txId) throws CoinException {
BtcTransactionInfo tranc = new BtcTransactionInfo();- |) M+ T& [' R$ l( K
try {
//调用原始交易接口
Map transaction = (Map) btService.getTrawtransaction(txId, 1);
JSONObject info = JSONObject.parseObject(JSON.toJSONString(transaction));3 _: f5 p+ `# l0 |) Q
String blockHash = info.getString("blockhash");7 _. n8 P* m" z5 z- M3 s9 P1 ]% \
/*block*/
//调用根据blockhash 获取块信息接口( e% ~7 M" O- O; v, S3 Q
Map blockInfo = (Map)btService.getblock(blockHash);1 C! F- H9 W; ]9 _; j
JSONObject block = JSONObject.parseObject(JSON.toJSONString(blockInfo));
tranc.setBlockconfirmations(block.getString("confirmations"));0 ]& l+ g! N$ C7 a$ v
tranc.setBlocktime(block.getString("time"));1 p$ w: h2 s) E& L1 P# Y3 s$ b5 O
tranc.setBlockversion(block.getString("version"));
tranc.setBlockheight(block.getString("height"));8 F9 a) f9 V; H* S9 J6 |; {
tranc.setBlockweight(block.getString("weight"));
tranc.setPreviousblockhash(block.getString("previousblockhash"));
tranc.setNextblockhash(block.getString("nextblockhash"));
) {# _' q$ i% h. H
tranc.setTxId(info.getString("txid"));3 M$ z$ X r# {. j0 w5 U( h& H
tranc.setHash(info.getString("hash"));& z3 a$ j* `3 z# D# R
tranc.setVersion(info.getString("version"));; v" P' _/ ~0 N- n! `1 ?9 m
tranc.setSize(info.getString("size"));
tranc.setVsize(info.getString("vsize"));2 b. I6 L9 I- Z
tranc.setLocktime(info.getString("locktime"));
tranc.setHex(info.getString("hex"));
tranc.setBlockhash(blockHash);
tranc.setConfirmations(info.getString("confirmations"));* O. [& Y& ^* `: Q
tranc.setTime(info.getString("time"));
tranc.setBlocktime(info.getString("blocktime"));
JSONArray vins = JSONArray.parseArray(info.getString("vin"));
double sumvin = 0 ;
List formAddress = new ArrayList();
for (int i = 0,len = vins.size(); i
成为第一个吐槽的人