Hi 游客

更多精彩,请登录!

比特池塘 区块链技术 正文
业务场景:
4 ?! ^# k. }. [- m4 u+ y1.在自己的钱包节点上根据txId获取交易明细
$ Z' r1 ]+ f! l9 c4 E  q4 ^' ?2.通过原始交易递归计算手续费: 公式[ 手续费  sum(vin)- sum(vout) ]
0 ]8 H  q: r, V% g- a% E要求:* z2 h' C* l. T' d2 S7 }5 P
需要对utxo有一定的了解~~~1 a8 F, S0 c" Y5 _2 v% l2 O
直接low代码:
, x5 J! O" j5 i2 k$ \//交易信息9 X6 @9 W( l/ o, |2 C: E$ W5 K
public class BtcTransactionInfo implements Serializable {4 ^6 h" y1 g) e9 `
* p1 ^* U* R" t4 r# }- L8 Q
        private static final long serialVersionUID = 1L;9 |( B* t8 H6 j; a9 C7 t( j
       - c, a% V0 k2 w/ A5 x% L( h. c
        private String txId;; M; r8 s" b/ }4 Q5 z
        private String hash;- ~0 [! L; k. X0 @4 Y- }; K
        private String blockheight;% g: Y* e6 S2 x5 L
        private String blockweight;7 ~5 r; c# ~) C9 Q/ q
        private String blockconfirmations;6 R  b9 N. s/ ^
        private String blockversion;
3 `' I1 h# e. P$ K% e8 Y) D4 {        private String previousblockhash;  ]; N2 n% t9 g0 Z# ^5 K
        private String nextblockhash;
0 e6 V; n3 W1 n* b  z( s7 D7 D        private String version;6 g$ ^- S( n1 V% Q8 C  v
        private String size;
9 a. V% F) z* x7 u% y0 E3 B, u        private String vsize;$ F1 ^! V* e6 t! ?6 o
        private String locktime;
  g. B# m2 O/ D        private String hex;
: u5 S! Y8 ~  J& a- Q; A        private String blockhash;
7 _# n' I& M. \$ m* h. i        private String confirmations;
; L& i& H5 \5 E9 E/ S3 J        private String time;
5 |- A5 K) q9 J( g        private String blocktime;
6 D, \3 Q1 D: W9 v/ T        private BigDecimal amount;
4 X% H+ ]+ ?' @! `0 l8 F: @8 N        private BigDecimal free;3 a: P9 n! @% x- V6 M
        private String from;; ^# P4 v; h/ a+ [/ G$ p
        private String to;  w7 l0 S; l8 V* e7 n
      
" j- ^3 g3 o; F# G5 Q         ) b9 R7 Q2 I! \
}. n: p; u. `9 ?. `
        
: A2 f( O0 {3 n0 [//根据交易的txid调用钱包api获取相应信息
) R$ I0 U+ l0 @  Vpublic Object getrawTransactionByTxIdFromWallet(String txId) throws CoinException {3 g. C) x: E; t' j" c1 q6 V7 i" d
                BtcTransactionInfo         tranc = new BtcTransactionInfo();
& J9 X  u% u0 N9 r1 Z% S( O( |  ^                try {" _& ]; a  E5 r# s
                        //调用原始交易接口+ p4 Z  v. S7 f  |5 g% _, u' ^
                        Map transaction = (Map) btService.getTrawtransaction(txId, 1);$ n: F9 A! O* _
                        JSONObject info = JSONObject.parseObject(JSON.toJSONString(transaction));
/ C4 n. W1 r. [                        String blockHash = info.getString("blockhash");
4 z- Q7 F$ O1 e; w                        /*block*/
/ C3 H% k: ?+ n                        //调用根据blockhash 获取块信息接口/ d+ T9 h7 o' S) a3 q  e9 e
                        Map blockInfo = (Map)btService.getblock(blockHash);
8 q' N  d5 V; s% @6 R                        JSONObject block = JSONObject.parseObject(JSON.toJSONString(blockInfo));) e" ?) [  G+ J
                        tranc.setBlockconfirmations(block.getString("confirmations"));
0 l; x3 d+ Z" _                        tranc.setBlocktime(block.getString("time"));
) F* m3 U7 D# `8 T                        tranc.setBlockversion(block.getString("version"));% o3 F) g9 J( P$ \4 Z: H9 C
                        tranc.setBlockheight(block.getString("height"));
- N% I% T' X# U) l. j$ H6 ?                        tranc.setBlockweight(block.getString("weight"));
! J- k) B( c+ P. Z2 d* m5 o. t                        tranc.setPreviousblockhash(block.getString("previousblockhash"));
. W& f( P4 @. I                        tranc.setNextblockhash(block.getString("nextblockhash"));
( o& g# b  B; t- F) D  j& \                       
4 L0 Z8 F0 E! A( z& i! ]# E                        tranc.setTxId(info.getString("txid"));
- a9 E; d) }3 s2 U( [9 F+ b# o# c                        tranc.setHash(info.getString("hash"));1 s7 C4 w" B7 X1 f7 R; K7 @6 y
                        tranc.setVersion(info.getString("version"));& L$ ~: _$ C  `! G- J" {
                        tranc.setSize(info.getString("size"));
/ e) g6 {6 }  h9 I; J3 B1 A  i0 B                        tranc.setVsize(info.getString("vsize"));
, g; u# j& @. Z0 [                        tranc.setLocktime(info.getString("locktime"));$ w% t( B/ Z( b, T8 Y' D  S9 @
                        tranc.setHex(info.getString("hex"));2 I9 j7 h9 h0 w- s3 `- L: z1 |6 J
                        tranc.setBlockhash(blockHash);  O7 x7 ?$ g$ b; a* ^8 N* A5 T
                        tranc.setConfirmations(info.getString("confirmations"));
, I9 v* v+ F% f                        tranc.setTime(info.getString("time"));9 a; B% A$ K" U- \" u
                        tranc.setBlocktime(info.getString("blocktime"));
* F5 ~7 b6 \0 Y) f( Y                       ( ^/ N' Y& t- Q9 h4 L/ c
                        JSONArray vins = JSONArray.parseArray(info.getString("vin"));
9 w' P4 @) F0 d% s$ `: b1 w# a/ f6 Q                        double sumvin = 0 ;1 z* P& H! p$ ~6 f; W1 ^
                        List formAddress = new ArrayList();4 C1 n8 g% q( H! t$ ]
                        for (int i = 0,len = vins.size(); i
BitMere.com 比特池塘系信息发布平台,比特池塘仅提供信息存储空间服务。
声明:该文观点仅代表作者本人,本文不代表比特池塘立场,且不构成建议,请谨慎对待。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

成为第一个吐槽的人

V刘晨曦 初中生
  • 粉丝

    0

  • 关注

    3

  • 主题

    14