Hi 游客

更多精彩,请登录!

比特池塘 区块链技术 正文
业务场景:
/ M2 w2 b  `1 r2 C9 l1.在自己的钱包节点上根据txId获取交易明细
: H+ {7 o! M; c* `/ i2.通过原始交易递归计算手续费: 公式[ 手续费  sum(vin)- sum(vout) ]
! x! Z4 s% ~6 ~# g3 W6 }要求:
. g' m' J' T0 G; X; e' d) }8 ?! }需要对utxo有一定的了解~~~
; g( ^! S8 f7 K9 {! O直接low代码:' l* y5 h$ m: ?  Y1 L- H, q8 \- d
//交易信息
" Z5 t) ]* X$ h2 y7 apublic class BtcTransactionInfo implements Serializable {
7 I: ~5 w4 P2 N7 K2 b8 q: k9 }- I) Y( \) }7 ~% S
        private static final long serialVersionUID = 1L;& f! y  L' ~4 D  u, l' ]
       7 I# l/ ?( b) p. s
        private String txId;9 R; A6 t1 D% d' Q3 v
        private String hash;3 J8 [8 U: t; [' }8 p
        private String blockheight;
1 `; H% Y2 r- ?4 H        private String blockweight;
2 K5 a7 D1 L1 B8 X! O        private String blockconfirmations;7 ^5 F" @& K7 `( Z$ Y- C: B
        private String blockversion;% b  d4 f7 x4 E. S' M
        private String previousblockhash;$ V( _  e9 A, [2 [
        private String nextblockhash;
2 v+ l; c6 m( x4 g        private String version;5 f: M% c3 M. U9 W! V. h, k5 W
        private String size;; ^3 ]/ Q3 U/ h3 g- N
        private String vsize;
6 i8 r% c; q4 o        private String locktime;" @- X+ _3 y' F# Z8 N) k2 F1 M
        private String hex;3 X6 r* Q9 U. @5 O, T" n
        private String blockhash;
: A! v  O: @% c2 U  m  C( m        private String confirmations;$ V  c/ ]; ?2 y+ f
        private String time;
. A! K% p( }# x! j, E; G        private String blocktime;% E* J1 V6 V9 @* l7 Q& }
        private BigDecimal amount;
9 c. N+ z) [. b! p        private BigDecimal free;5 U8 s! W) f  [2 p/ Y* p$ ^
        private String from;6 N. |, p/ W0 l5 v( A
        private String to;' V/ u3 @3 K' k# n$ w6 u
       ( Q/ a0 f. v" S' ]0 y7 t
         
  x" o& B# [) A! `( N7 g" R}
# y6 {2 m/ d  J( ]        
! W) {& R- O2 P//根据交易的txid调用钱包api获取相应信息
' I5 W5 ^8 q6 v. H$ P+ Cpublic Object getrawTransactionByTxIdFromWallet(String txId) throws CoinException {
- F& W8 A% r- [7 r8 K4 R                BtcTransactionInfo         tranc = new BtcTransactionInfo();
6 Z) A# `; }) l! b& m                try {+ w4 _7 n, M- v. s
                        //调用原始交易接口
' I. S1 v. f1 E) R                        Map transaction = (Map) btService.getTrawtransaction(txId, 1);2 L0 |* s' P9 ~. S$ `6 q# P: e& D
                        JSONObject info = JSONObject.parseObject(JSON.toJSONString(transaction));
3 |, w. G8 `2 N3 g" x                        String blockHash = info.getString("blockhash");! v2 i& y% Z  U4 {9 X' S) Z4 D. z
                        /*block*/1 [) M/ Q$ [. }
                        //调用根据blockhash 获取块信息接口
, @0 M) }8 U1 W4 y$ t* b                        Map blockInfo = (Map)btService.getblock(blockHash);
) {, H& v* t  v+ M                        JSONObject block = JSONObject.parseObject(JSON.toJSONString(blockInfo));
) ^$ o2 x3 D/ {/ D                        tranc.setBlockconfirmations(block.getString("confirmations"));
; z; ^! F: r% D6 L6 P) E# k                        tranc.setBlocktime(block.getString("time"));5 L' C8 P+ u, f  Z
                        tranc.setBlockversion(block.getString("version"));
, h7 v4 R/ q8 V6 B                        tranc.setBlockheight(block.getString("height"));! {, w# T* E& C; x+ g
                        tranc.setBlockweight(block.getString("weight"));0 w4 m, d# J- n* S
                        tranc.setPreviousblockhash(block.getString("previousblockhash"));
6 B6 I, z, G0 s( C. Q2 y( N" A5 ^                        tranc.setNextblockhash(block.getString("nextblockhash"));
( I; Q! [# r* c: x9 J$ J( L                       
9 ^- h# h. X9 p' L% s* D) g                        tranc.setTxId(info.getString("txid"));
" J  F: b& m- N' J+ n. g                        tranc.setHash(info.getString("hash"));
: s2 q9 O: e8 [5 Y# i. `& h3 ~3 [& C+ p                        tranc.setVersion(info.getString("version"));
( E- v2 R9 O, P( n; w( L                        tranc.setSize(info.getString("size"));
7 k' }  k2 r6 w5 {                        tranc.setVsize(info.getString("vsize"));
5 N0 P2 A5 @& y                        tranc.setLocktime(info.getString("locktime"));0 w4 Y6 U6 W8 P3 T, j, S8 X  c
                        tranc.setHex(info.getString("hex"));% S: c5 P/ A+ v7 W/ S
                        tranc.setBlockhash(blockHash);9 T8 B: g8 Q% b) K+ c- a; {7 l
                        tranc.setConfirmations(info.getString("confirmations"));" b+ W  y3 `  L% `
                        tranc.setTime(info.getString("time"));- F( H4 ~, F0 r4 k. i5 a, S
                        tranc.setBlocktime(info.getString("blocktime"));' ^! d) L1 f9 b/ n! U1 a
                       1 z7 V+ F5 B- q/ z) j) l  Z* `
                        JSONArray vins = JSONArray.parseArray(info.getString("vin"));: X9 t* m  H$ q$ y3 n0 [
                        double sumvin = 0 ;2 i1 C, v0 A1 w) G+ x$ a8 T& _
                        List formAddress = new ArrayList();* ~1 j; {6 a6 m0 b+ o% ?
                        for (int i = 0,len = vins.size(); i
BitMere.com 比特池塘系信息发布平台,比特池塘仅提供信息存储空间服务。
声明:该文观点仅代表作者本人,本文不代表比特池塘立场,且不构成建议,请谨慎对待。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

成为第一个吐槽的人

V刘晨曦 初中生
  • 粉丝

    0

  • 关注

    3

  • 主题

    14