Hi 游客

更多精彩,请登录!

比特池塘 区块链技术 正文
业务场景:* g9 Y$ X8 ~& `8 p. U. v7 v0 X- J4 `
1.在自己的钱包节点上根据txId获取交易明细. s% U$ n9 P. u9 e+ |. }
2.通过原始交易递归计算手续费: 公式[ 手续费  sum(vin)- sum(vout) ]
1 u7 c; k7 v, {& N, P2 E要求:
+ P, c( j+ X$ x, z5 u: T需要对utxo有一定的了解~~~8 D0 D$ g1 W; Z: z
直接low代码:
4 D% ]; p3 r9 `6 ?//交易信息
- U5 J0 d& b& o3 x* q# zpublic class BtcTransactionInfo implements Serializable {5 `! _( A* C  L9 A  J/ ~4 F$ }

8 [- V3 X4 a) M* R8 K        private static final long serialVersionUID = 1L;
* D* P& c: f8 n. |* K0 n      
8 d4 y& j2 E. c  g        private String txId;  Z. L; h  a9 T% u7 |5 L- W% j' k
        private String hash;! Y, k! |/ c9 L+ j  [& v
        private String blockheight;
; ?7 ^8 S$ O. Q" Q        private String blockweight;2 q$ N$ G9 ~. S' `5 |* {, ?# U
        private String blockconfirmations;( A' L. M7 K9 g1 P3 _8 o
        private String blockversion;- b1 z: u" A9 y9 g& o
        private String previousblockhash;
" {+ A1 s3 c0 o' ~1 r+ g. |& c" L        private String nextblockhash;: ]$ J4 t. q# B+ j( [0 g/ t7 Q
        private String version;
" C! O+ Y7 J8 Z# I; M0 c! t$ P& S        private String size;
9 I$ N5 M* Y  ^        private String vsize;; V& k) J: u# {5 s- v9 `) u- X
        private String locktime;1 @  Y8 k7 h) Q2 t1 h1 y
        private String hex;- E+ I6 }) u7 ^$ k6 e+ c) T
        private String blockhash;
: O, T( g! f$ R& j& @" D$ F        private String confirmations;) j& b. u8 ~5 w5 [9 j+ a
        private String time;
2 K% r0 h6 `; m# v: b  {7 ~1 F% c+ ^        private String blocktime;
8 _* H) K6 {7 H% f3 a8 o2 Y        private BigDecimal amount;
7 P9 k! y4 s" Z! Z        private BigDecimal free;; z8 j5 p0 }; Z1 [; z
        private String from;  O- H$ k9 z  V: b1 V! D7 i
        private String to;
. H8 ]+ z3 |: ~' G! Y       - M. N) C5 R  N4 q9 Z5 T
         
% @. m% k# C8 P1 F1 H, ]5 s}
6 ]% S' }2 }0 `" m' v& _/ |        0 C+ R- @8 @# i/ H3 h! \0 @# i" F
//根据交易的txid调用钱包api获取相应信息
% N2 e; p( x; h/ }1 g0 dpublic Object getrawTransactionByTxIdFromWallet(String txId) throws CoinException {
) ~9 I9 e" p: ^/ }                BtcTransactionInfo         tranc = new BtcTransactionInfo();
$ @9 i+ k2 D5 d' k: a' W5 J/ H                try {
: f, {+ g4 J9 Z0 m2 {  M0 b  c2 C0 G                        //调用原始交易接口; ?7 {% g: L5 g2 [7 V* \
                        Map transaction = (Map) btService.getTrawtransaction(txId, 1);
7 f3 Y; `- S8 @* H: g- G4 ]4 S                        JSONObject info = JSONObject.parseObject(JSON.toJSONString(transaction));
$ R3 Q7 |) R' E1 w+ p& Q% R                        String blockHash = info.getString("blockhash");6 R6 V3 P* v) u, a
                        /*block*/
% _4 F# w1 K2 R4 Z) @                        //调用根据blockhash 获取块信息接口
# _; g( g1 A5 l# q8 H                        Map blockInfo = (Map)btService.getblock(blockHash);
2 l" S# W, P6 n7 c1 N. D4 y                        JSONObject block = JSONObject.parseObject(JSON.toJSONString(blockInfo));# Z! |0 U! j  k6 ^5 I
                        tranc.setBlockconfirmations(block.getString("confirmations"));
5 \0 ]% g5 u$ m! y1 V% C: ?) ]9 K                        tranc.setBlocktime(block.getString("time"));3 ~- Q3 s! ^' Q& x
                        tranc.setBlockversion(block.getString("version"));
: \' ^' U3 ]7 X                        tranc.setBlockheight(block.getString("height"));
: v! Z) V2 `- N. l6 J9 h. h                        tranc.setBlockweight(block.getString("weight"));
+ e9 Q' |. `! P8 _+ n                        tranc.setPreviousblockhash(block.getString("previousblockhash"));
; D. a* D0 ~7 ?+ W                        tranc.setNextblockhash(block.getString("nextblockhash"));
7 ]4 j5 _0 m" \& |5 j' ]0 Q                       
! `4 t$ q' s+ o4 t. j                        tranc.setTxId(info.getString("txid"));
" r( I+ D1 G; v8 X9 M  N                        tranc.setHash(info.getString("hash"));% t4 \1 a$ O8 K6 j0 m+ {
                        tranc.setVersion(info.getString("version"));
; i1 T7 v1 ]+ }0 e1 [+ R- l                        tranc.setSize(info.getString("size"));/ L4 \+ ~; T% U: A6 p
                        tranc.setVsize(info.getString("vsize"));4 Q7 R9 G+ m- q! C7 Z- B& G3 q2 C
                        tranc.setLocktime(info.getString("locktime"));
) s6 p- s5 n2 V& Z. r                        tranc.setHex(info.getString("hex"));4 z9 Z0 @: H0 j8 K/ e. r9 c
                        tranc.setBlockhash(blockHash);
! x1 t' q6 i+ c$ X9 V2 l5 W                        tranc.setConfirmations(info.getString("confirmations"));
* C; a+ {! ]5 @; u+ B% b. N                        tranc.setTime(info.getString("time"));
7 B5 m6 e* C( @% Y. v, l% L9 ^+ V                        tranc.setBlocktime(info.getString("blocktime"));7 G& T- c; n" c  W! |2 r/ @) R
                       8 g" L) h+ ]! K6 V3 }
                        JSONArray vins = JSONArray.parseArray(info.getString("vin"));1 p  W5 M+ n  Q9 H& ]+ A
                        double sumvin = 0 ;) e& q0 E# W9 }3 j% r. ^
                        List formAddress = new ArrayList();6 r4 p* e$ ]0 B+ D
                        for (int i = 0,len = vins.size(); i
BitMere.com 比特池塘系信息发布平台,比特池塘仅提供信息存储空间服务。
声明:该文观点仅代表作者本人,本文不代表比特池塘立场,且不构成建议,请谨慎对待。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

成为第一个吐槽的人

V刘晨曦 初中生
  • 粉丝

    0

  • 关注

    3

  • 主题

    14