Hi 游客

更多精彩,请登录!

比特池塘 区块链技术 正文
业务场景:
6 {5 p- j9 K% ~+ q$ ]6 @% q1.在自己的钱包节点上根据txId获取交易明细: G7 R5 b3 d  [: q- C
2.通过原始交易递归计算手续费: 公式[ 手续费  sum(vin)- sum(vout) ]
9 [0 g: k# M5 _0 S+ s要求:$ r( T% H3 B" T1 T3 ]
需要对utxo有一定的了解~~~
2 p2 d" r2 M3 k3 X# `: B# u直接low代码:2 Q$ U3 ]* m. d) Q3 i
//交易信息6 c2 q; _7 N' a
public class BtcTransactionInfo implements Serializable {2 @1 p, |8 Q* t
: k' H  Y' ~0 ~: P
        private static final long serialVersionUID = 1L;, l/ b  |6 ?# S0 t* b" d) S
       . s' F$ p# M3 \. n- V
        private String txId;
0 k& L0 M& ?4 {; m* T* ?  L        private String hash;' h0 t( k+ F, V$ f
        private String blockheight;
8 \& Q9 t3 h9 e, A6 h$ e        private String blockweight;3 }+ S3 [- U1 N6 D% \/ \2 v; \2 E9 M+ a
        private String blockconfirmations;: C  g" \* t  B7 y: s
        private String blockversion;
# Z  i! q9 z8 W) s  ]! A# v        private String previousblockhash;
9 b1 y1 e& W% h8 M8 i9 q        private String nextblockhash;
4 K2 ]: O% p$ y7 K; P% f5 k        private String version;: l1 ?1 p( K1 j! |5 ]
        private String size;
6 G9 C$ j) K* D& S5 K        private String vsize;
9 o: I- V, O1 |, H        private String locktime;1 o: R6 U! G9 W" ~) `2 V# F) Q5 Z
        private String hex;
, W9 F8 A2 D3 \6 r        private String blockhash;" _& M( C: _% b
        private String confirmations;
/ {. d! v- m* p: w8 x4 z        private String time;) y. Z6 H) t& a% [2 e* ~  O! j
        private String blocktime;
" y' o. r- \: ?/ c1 b        private BigDecimal amount;+ a5 h) ~# f& j4 Z3 P  R
        private BigDecimal free;
# D& Q+ t- D6 k2 }5 x8 ^1 R: K        private String from;9 W7 W4 q5 K% {: n7 x/ z
        private String to;$ ?% p, b) I+ T" M& T
       ; o8 a, K# J9 p3 G6 {  ~
         . c2 ~9 ~7 y5 c! T6 V# o4 v) G
}3 Q8 `  Z: T2 M. ^" P( `
          C( ]( z; J; |  F6 Z% Y! S& H
//根据交易的txid调用钱包api获取相应信息, c% o9 H5 P$ N
public Object getrawTransactionByTxIdFromWallet(String txId) throws CoinException {) e# h1 Z9 J  C" @- A$ {+ y6 {
                BtcTransactionInfo         tranc = new BtcTransactionInfo();$ a0 s1 v! P, S4 k
                try {
0 }. e8 _% N& s. B. p                        //调用原始交易接口
3 P$ Z$ n4 B; e- q                        Map transaction = (Map) btService.getTrawtransaction(txId, 1);  D0 e5 I7 @2 w$ z4 b
                        JSONObject info = JSONObject.parseObject(JSON.toJSONString(transaction));  `+ v3 \4 q3 \4 H) G: ~: ~
                        String blockHash = info.getString("blockhash");
) h4 _: M8 D9 d  Z5 |7 s                        /*block*/0 r9 {, l! U+ {- U# `. b' z" Q
                        //调用根据blockhash 获取块信息接口
1 N* d& l/ L- J0 V, H0 Y  O* D: _                        Map blockInfo = (Map)btService.getblock(blockHash);
) B& \" C* x) h9 |0 C- w( G- H& N                        JSONObject block = JSONObject.parseObject(JSON.toJSONString(blockInfo));
8 _. \9 k6 q! ^  w) V, M; [* ]# i$ t  E                        tranc.setBlockconfirmations(block.getString("confirmations"));! Z" B1 p; j6 Q
                        tranc.setBlocktime(block.getString("time"));9 ]. d$ G3 l( M, H: g! E9 N. c
                        tranc.setBlockversion(block.getString("version"));
/ [# ~7 E4 u. o                        tranc.setBlockheight(block.getString("height"));- F7 r+ d1 r# {( n% ^1 V
                        tranc.setBlockweight(block.getString("weight"));! ]  P1 C0 @9 x! h% \
                        tranc.setPreviousblockhash(block.getString("previousblockhash"));4 ]" R" r6 D: l9 g& \) |
                        tranc.setNextblockhash(block.getString("nextblockhash"));9 e% `/ T+ E$ ^
                       
! t9 ?8 i0 [  [4 x                        tranc.setTxId(info.getString("txid"));
, {9 a% g, z* ~5 P) x* i. q3 |                        tranc.setHash(info.getString("hash"));
, _0 N% @7 I* y, g                        tranc.setVersion(info.getString("version"));* q4 J) L" e) v& H1 l
                        tranc.setSize(info.getString("size"));  R) p1 _% l, p# r! m8 E% @' d* h3 @- V
                        tranc.setVsize(info.getString("vsize"));( i5 ~# F% W3 D2 d
                        tranc.setLocktime(info.getString("locktime"));( A# V3 P2 |- M: Y( L& k0 S; ^
                        tranc.setHex(info.getString("hex"));
6 M' r9 s5 I) z3 u8 ~+ p7 m: g; P$ y                        tranc.setBlockhash(blockHash);# G) d. @# W  p+ N+ G
                        tranc.setConfirmations(info.getString("confirmations"));
1 ?4 p/ F9 C+ b( t8 ~" X" ~                        tranc.setTime(info.getString("time"));4 D( W+ S: P' e5 H" b& P
                        tranc.setBlocktime(info.getString("blocktime"));, b; J; C" p4 d, d
                       
, X$ f4 X6 F# l$ n. ]+ O6 C' E$ M                        JSONArray vins = JSONArray.parseArray(info.getString("vin"));% @3 P6 f. F1 c$ ^. n, U
                        double sumvin = 0 ;
0 A, Z, f& v' B3 Y0 u                        List formAddress = new ArrayList();% z1 b1 l& w  b: j$ N3 ~5 f
                        for (int i = 0,len = vins.size(); i
BitMere.com 比特池塘系信息发布平台,比特池塘仅提供信息存储空间服务。
声明:该文观点仅代表作者本人,本文不代表比特池塘立场,且不构成建议,请谨慎对待。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

成为第一个吐槽的人

V刘晨曦 初中生
  • 粉丝

    0

  • 关注

    3

  • 主题

    14