Hi 游客

更多精彩,请登录!

比特池塘 区块链技术 正文
业务场景:) B) E, S- j/ d( X, t" L
1.在自己的钱包节点上根据txId获取交易明细
0 ~. \, g8 n9 F2 X2.通过原始交易递归计算手续费: 公式[ 手续费  sum(vin)- sum(vout) ]7 i' k9 M7 E- s7 J& n
要求:% k6 x+ J3 i0 i2 |; W
需要对utxo有一定的了解~~~1 l; W0 S! R* B8 g) M, d
直接low代码:
9 m! p9 }$ Y* Q' J9 H//交易信息- [: E9 [( E; T# `/ A
public class BtcTransactionInfo implements Serializable {$ y  v( L) E/ h: E! l9 t" |" ]8 a
' l% t; ?+ Q7 h* q
        private static final long serialVersionUID = 1L;
/ u7 \3 w5 L3 L. d  z       1 a$ C( P2 a: p7 i4 m; D- X
        private String txId;% r6 f" }1 x) H
        private String hash;) O% Z: R3 \1 g2 P9 ?) s
        private String blockheight;! s( I$ M$ g6 D0 Z, K2 W# u; W. E% O
        private String blockweight;
* s( I6 ], q/ c9 C2 a/ l- y        private String blockconfirmations;  @/ H* @8 U3 i& Q9 r3 j* j1 X" K, G
        private String blockversion;
& b( n+ b, V" L) x* F        private String previousblockhash;2 A- _) t+ ?  m) p
        private String nextblockhash;
8 b" l$ m9 a( y' L/ b  P+ }% j        private String version;$ @9 N; G# l& X- y8 R* k3 |& i
        private String size;
: ~0 o* `: q) Q* L; u        private String vsize;3 I2 ^8 _# y2 E0 a$ w6 O
        private String locktime;& p1 y* x/ |$ t
        private String hex;
0 F; p# g: @# n2 I! @! w9 [        private String blockhash;. V* ]) G& G. f+ e, p8 w! S
        private String confirmations;! a6 N: j- v: w& Q+ b# f# o) o
        private String time;
+ p; t# j) E% w; m        private String blocktime;) v  S( b6 M, G: m" D! m
        private BigDecimal amount;. a9 t3 `& B  a
        private BigDecimal free;
1 I* U: S7 t. h4 z* [/ ^6 J8 Z  D        private String from;! _: v* a! C% s" Z8 u
        private String to;# h5 U! z0 M; v
      
8 ~+ t/ x4 K+ r& z' a6 {: z         
# n3 L5 z$ g' M, R  ^}
' ]2 m1 D1 n9 A* m4 `5 F        ) i" Q# x* O" h$ }
//根据交易的txid调用钱包api获取相应信息! w3 b( o1 I6 L! t1 J  F5 O# g4 u
public Object getrawTransactionByTxIdFromWallet(String txId) throws CoinException {" c9 K( N- X3 _$ w; f  G
                BtcTransactionInfo         tranc = new BtcTransactionInfo();
5 F9 t/ V/ w! o1 V                try {
. a1 C2 c/ [% [7 ]& p) E                        //调用原始交易接口5 w9 a. r5 c: h" `. v# K. F
                        Map transaction = (Map) btService.getTrawtransaction(txId, 1);
. @& c' Y- w9 s: I7 N                        JSONObject info = JSONObject.parseObject(JSON.toJSONString(transaction));
4 @; V' G& C5 v; k                        String blockHash = info.getString("blockhash");' l/ Y) V4 ]: x' X  ]. A
                        /*block*/
' t1 i8 V$ g) L& n. z                        //调用根据blockhash 获取块信息接口
/ R! E- N! f* i; e- Q                        Map blockInfo = (Map)btService.getblock(blockHash);6 V" \4 N0 G) }
                        JSONObject block = JSONObject.parseObject(JSON.toJSONString(blockInfo));
8 C2 m1 t8 n$ T% a" Y" o                        tranc.setBlockconfirmations(block.getString("confirmations"));
4 j0 B" {, y+ p" U( _9 h4 V                        tranc.setBlocktime(block.getString("time"));
" s" e! I1 F. m8 T; T- k                        tranc.setBlockversion(block.getString("version"));# o" Q! ]1 T: N$ \. `2 }
                        tranc.setBlockheight(block.getString("height"));
& w- P' E  z$ k( i& U9 `) N                        tranc.setBlockweight(block.getString("weight"));" W# r/ e& m* L& |. k1 i
                        tranc.setPreviousblockhash(block.getString("previousblockhash"));+ J" W+ K$ J% g
                        tranc.setNextblockhash(block.getString("nextblockhash"));5 \* B  W+ _% l$ M5 T* B! D
                       
* O7 z, j' w$ p4 i                        tranc.setTxId(info.getString("txid"));
2 y1 {/ q6 l. U) O% R                        tranc.setHash(info.getString("hash"));
' t5 V* [. C7 Q  a- M                        tranc.setVersion(info.getString("version"));  Y! I/ c8 J- Q% d/ v
                        tranc.setSize(info.getString("size"));
6 z! j( f. g& J3 u9 ^! B                        tranc.setVsize(info.getString("vsize"));- f; }, G2 f  W6 t( `
                        tranc.setLocktime(info.getString("locktime"));, @: j6 {5 ]6 X/ h6 g. o
                        tranc.setHex(info.getString("hex"));
# t* W4 [4 v# |; J4 ^+ V) R                        tranc.setBlockhash(blockHash);/ J# C) {4 V& |$ P
                        tranc.setConfirmations(info.getString("confirmations"));& _/ _( S8 X; V! c
                        tranc.setTime(info.getString("time"));
! q0 a0 t  t; |4 e: x/ k                        tranc.setBlocktime(info.getString("blocktime"));1 b7 A) v3 o+ Q* z5 `1 U% J& R
                       
# a& c, A4 q; x                        JSONArray vins = JSONArray.parseArray(info.getString("vin"));6 o+ ]4 ~% _/ p
                        double sumvin = 0 ;( w0 t6 G4 t0 B8 M2 s' a
                        List formAddress = new ArrayList();: A6 D% q* g+ [7 s
                        for (int i = 0,len = vins.size(); i
BitMere.com 比特池塘系信息发布平台,比特池塘仅提供信息存储空间服务。
声明:该文观点仅代表作者本人,本文不代表比特池塘立场,且不构成建议,请谨慎对待。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

成为第一个吐槽的人

V刘晨曦 初中生
  • 粉丝

    0

  • 关注

    3

  • 主题

    14