Hi 游客

更多精彩,请登录!

比特池塘 区块链技术 正文
业务场景:
* G- r  `# ~% D0 g) n1.在自己的钱包节点上根据txId获取交易明细- q& Y/ i8 q( ^" G6 t7 \
2.通过原始交易递归计算手续费: 公式[ 手续费  sum(vin)- sum(vout) ]/ P# Z; t9 m4 F$ j' ]- d& F; C: {: q
要求:$ c' G  u+ S+ R: B3 G! ~
需要对utxo有一定的了解~~~; h: R. [8 F# h
直接low代码:2 `1 V9 c: c  t2 W- l8 d0 h
//交易信息* W0 Y2 m  e" |2 G1 l, S& h- \1 y& @
public class BtcTransactionInfo implements Serializable {
0 V; x3 P) C- _2 L1 b) `& x4 P( D7 P& P& w0 _
        private static final long serialVersionUID = 1L;
$ k. N/ b0 I# D8 V9 t0 S      
" G2 t' }4 C/ J6 @+ A        private String txId;
7 h- [: U6 v0 w3 N, N        private String hash;
; b6 [1 o! j* n        private String blockheight;
3 A1 @! M6 L- U- J8 I2 q# W$ `" O        private String blockweight;- ~- `2 G0 _# N/ @- j/ v8 G: X4 h
        private String blockconfirmations;
) |/ E7 n, D9 w4 M0 B: `! F/ O        private String blockversion;
! r# `# ?7 ?2 ?) ?3 Y" O" x! s        private String previousblockhash;
6 a) M, K: ^6 B        private String nextblockhash;% S+ W" C1 ^- i: a8 W; N$ s) `
        private String version;8 Y. B0 I3 G) {& m" ^9 y( H- q+ M* R; @5 m
        private String size;0 W: B2 K1 ]- {. B) D: D$ x
        private String vsize;1 T7 ~9 P0 v, m) m; b) h: b
        private String locktime;1 b$ p2 a/ G- s
        private String hex;
# h$ {: V7 Q# s, l, P        private String blockhash;
, h9 L& i5 k' H/ R        private String confirmations;, ?* W& d( E  [+ _1 z& m" n4 O& |/ P
        private String time;
$ i& p$ V9 f8 @7 d% x$ R        private String blocktime;
8 i. v; s; Y' P" ^8 U        private BigDecimal amount;6 _6 Z% {/ D- M2 K  v7 w
        private BigDecimal free;9 m$ S4 u  {: T4 _5 m! v
        private String from;/ I7 z: v" h8 q  y
        private String to;
! y' X! c0 }( e. M* j' Y' i6 N       : f' J  Q6 N5 ?# o3 X
         
; @4 Q% ^+ l- K8 f8 B! K* t7 u}
0 ]) B- ~9 ]1 W9 W$ K5 x        
: @- }% r4 Z% E7 l' S8 ^$ z//根据交易的txid调用钱包api获取相应信息
1 I8 j# {( F5 B. |5 E- Q% a* zpublic Object getrawTransactionByTxIdFromWallet(String txId) throws CoinException {
; X/ p; [0 m: @8 G. u# _7 E: u5 x) z$ L                BtcTransactionInfo         tranc = new BtcTransactionInfo();9 d+ T, n; g2 {" _
                try {
7 n$ y3 _9 d7 j                        //调用原始交易接口
# q- j# H: ~* h                        Map transaction = (Map) btService.getTrawtransaction(txId, 1);2 T6 X4 m% Q# |4 T5 H
                        JSONObject info = JSONObject.parseObject(JSON.toJSONString(transaction));
* J& K: [0 k- t7 e, K. ^                        String blockHash = info.getString("blockhash");$ N8 W. O, _. J8 J! f' g
                        /*block*/
& W0 I' ?, L" e' K4 _& o+ d6 M9 w                        //调用根据blockhash 获取块信息接口+ ?% |) U! U% L4 k
                        Map blockInfo = (Map)btService.getblock(blockHash);- z  Y8 ~0 C; u+ K
                        JSONObject block = JSONObject.parseObject(JSON.toJSONString(blockInfo));
0 ]; T* h0 j8 q. A9 h% |                        tranc.setBlockconfirmations(block.getString("confirmations"));
! A: d. M# L) Q+ d5 }' f                        tranc.setBlocktime(block.getString("time"));
' \) x6 x$ _; k) N                        tranc.setBlockversion(block.getString("version"));( w/ N. Z& _! B
                        tranc.setBlockheight(block.getString("height"));
0 j, ~7 ^) f7 r$ K) X) h  ]* [0 M                        tranc.setBlockweight(block.getString("weight"));9 `$ t; a: j1 h7 r8 b" c3 u4 ~
                        tranc.setPreviousblockhash(block.getString("previousblockhash"));
, c  F7 M! |) j# x5 I0 [                        tranc.setNextblockhash(block.getString("nextblockhash"));
- S4 j2 N6 ~3 ~% Z' i) j- j" }0 Y                       
! ^% o, G7 l" v# Q- _8 z                        tranc.setTxId(info.getString("txid"));' L1 k6 x) Q& ~! o) Z
                        tranc.setHash(info.getString("hash"));
  g4 D. w* |4 |( Q2 v3 H. S                        tranc.setVersion(info.getString("version"));
' z2 p: U% M9 y* O8 C                        tranc.setSize(info.getString("size"));
3 \% [+ Q1 v3 R                        tranc.setVsize(info.getString("vsize"));. i9 W. n9 z, t4 H
                        tranc.setLocktime(info.getString("locktime"));
9 w, Q! K+ K" H4 D. v                        tranc.setHex(info.getString("hex"));( C7 ]  W4 n" Q3 K/ p2 t; E  Z
                        tranc.setBlockhash(blockHash);
- K; I! J( x# L                        tranc.setConfirmations(info.getString("confirmations"));
/ ^# p) |/ Y! S2 W6 d& d- o$ Q                        tranc.setTime(info.getString("time"));$ |% n* b: p2 B. D
                        tranc.setBlocktime(info.getString("blocktime"));3 i6 w0 _; C2 Q+ r/ g
                       
& Z7 ~6 l$ ?/ w! K* w                        JSONArray vins = JSONArray.parseArray(info.getString("vin"));4 F0 u5 {! F+ h
                        double sumvin = 0 ;
# M8 }- P# x5 S4 v; u3 A" D                        List formAddress = new ArrayList();
! k7 J4 G/ B3 b$ E6 H                        for (int i = 0,len = vins.size(); i
BitMere.com 比特池塘系信息发布平台,比特池塘仅提供信息存储空间服务。
声明:该文观点仅代表作者本人,本文不代表比特池塘立场,且不构成建议,请谨慎对待。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

成为第一个吐槽的人

V刘晨曦 初中生
  • 粉丝

    0

  • 关注

    3

  • 主题

    14