btc、usdt 根据交易hash如何得到交易明细和手续费
V刘晨曦
发表于 2022-12-20 00:43:20
87
0
0
1.在自己的钱包节点上根据txId获取交易明细9 f4 I3 l; ]9 D8 w/ t6 \" {
2.通过原始交易递归计算手续费: 公式[ 手续费 sum(vin)- sum(vout) ]7 Y8 h; c% a8 x8 V
要求:
需要对utxo有一定的了解~~~
直接low代码:
//交易信息 X2 s' o. r+ _
public class BtcTransactionInfo implements Serializable {+ @) H0 o# N/ l \4 b
6 v1 s' ~4 g: ?* E* b0 j
private static final long serialVersionUID = 1L;' `8 O! m4 e& }8 w7 r& L
private String txId;" w _& P# g) ~) \: \+ j8 Z
private String hash;
private String blockheight;
private String blockweight;
private String blockconfirmations;
private String blockversion;
private String previousblockhash;) t! C# u1 ^9 ~; B6 n
private String nextblockhash;
private String version;; M( T+ Y9 k. O: o
private String size;7 ]# |1 A4 h( t: d- E3 }$ k
private String vsize;
private String locktime;" H- j5 S# `8 m( `5 a- [
private String hex;+ J' k! Y$ b+ ^7 r* A
private String blockhash;
private String confirmations;' w. C9 ?& T q$ U+ h6 d
private String time;
private String blocktime;9 S: s& Z7 o9 H# Y
private BigDecimal amount;
private BigDecimal free;
private String from;
private String to;
) ]' e! S3 n& `3 N: [5 s. I
& a) [( K+ l2 C; A( b. u
}
( K3 a3 C$ z9 V( i* m' H
//根据交易的txid调用钱包api获取相应信息
public Object getrawTransactionByTxIdFromWallet(String txId) throws CoinException {
BtcTransactionInfo tranc = new BtcTransactionInfo();
try {
//调用原始交易接口. k& h k' P% o
Map transaction = (Map) btService.getTrawtransaction(txId, 1);% {- N8 R% } d' k+ |0 C$ u
JSONObject info = JSONObject.parseObject(JSON.toJSONString(transaction));3 w( T6 U* S1 A( W/ Z2 R
String blockHash = info.getString("blockhash");
/*block*/
//调用根据blockhash 获取块信息接口6 o2 r: K7 m6 F6 @- ?2 f0 E% Z
Map blockInfo = (Map)btService.getblock(blockHash);
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"));6 ^& p# k" m$ z. D/ `9 k0 d
tranc.setBlockweight(block.getString("weight"));1 a& }% {$ a( V& _2 D
tranc.setPreviousblockhash(block.getString("previousblockhash"));
tranc.setNextblockhash(block.getString("nextblockhash"));% K9 _& J D" R& @3 Z
tranc.setTxId(info.getString("txid"));: D4 I: a8 }5 @) }* H
tranc.setHash(info.getString("hash"));/ s. V3 m2 s9 r3 |! B" a% K
tranc.setVersion(info.getString("version"));+ ?/ l2 Q- M2 ~
tranc.setSize(info.getString("size"));
tranc.setVsize(info.getString("vsize"));6 H9 Y% b8 _) u& p! u# K4 \
tranc.setLocktime(info.getString("locktime"));8 z/ y2 [0 c4 x- C3 s( b6 N7 |
tranc.setHex(info.getString("hex"));% U( H8 d! q+ n8 v* r5 [
tranc.setBlockhash(blockHash);
tranc.setConfirmations(info.getString("confirmations"));% E- a% ^) p% i0 t, h
tranc.setTime(info.getString("time"));% ~( Z# w& u2 F& [
tranc.setBlocktime(info.getString("blocktime"));
0 G% x$ E" ?5 W+ o, }8 `* I+ |! V: }
JSONArray vins = JSONArray.parseArray(info.getString("vin"));
double sumvin = 0 ;9 @* d' T: Z& A# u
List formAddress = new ArrayList(); [1 \; {% f3 Z [
for (int i = 0,len = vins.size(); i
成为第一个吐槽的人