Hi 游客

更多精彩,请登录!

比特池塘 区块链技术 正文
业务场景:
/ m8 Y& Y3 r+ Z) @1.在自己的钱包节点上根据txId获取交易明细
8 X3 c  k' A0 p$ `2.通过原始交易递归计算手续费: 公式[ 手续费  sum(vin)- sum(vout) ]- h1 o) Y% r+ h5 R6 E
要求:
7 m2 q, P8 }0 d0 K需要对utxo有一定的了解~~~5 d) u$ X- K% T$ R' ?9 h7 q/ f  Q2 u! y
直接low代码:) X: ?* b' r7 t) [6 ?/ Y
//交易信息
8 {& X2 U) ?# }, l; Z1 wpublic class BtcTransactionInfo implements Serializable {
/ Q% {# {4 S6 e& Q- N3 C
* U7 J7 o' ?; W( g. L        private static final long serialVersionUID = 1L;
) x& q2 e6 h/ V+ V- O0 T       0 D4 L7 D  m: m6 M) @, i, F! `$ U
        private String txId;" x. \+ d' P  ]# J! T0 E- N9 Y
        private String hash;
* y0 z! A: {3 N        private String blockheight;$ D* ?0 M6 K- C1 r  M+ g
        private String blockweight;. @* z  ?+ ^- q7 B
        private String blockconfirmations;% a3 K' y6 ~; d' E0 L2 L  Y) f
        private String blockversion;
* P2 B- D7 G6 g$ V        private String previousblockhash;0 h) N0 }6 {3 l2 ~8 _) V  s7 p
        private String nextblockhash;
5 J$ ?6 c4 H; {, N$ Y8 v; V        private String version;8 Z! I: K* K. z6 E6 \, ^/ P
        private String size;
9 x9 w8 Y7 T9 l. E4 }' y) c        private String vsize;
6 P0 \& v8 ^% V, S        private String locktime;/ e8 |" D5 Z  B4 G
        private String hex;
' q- c/ M6 |# [# Y        private String blockhash;
& }# o5 R3 H* f& i5 f7 ?/ G; @        private String confirmations;
9 V9 q# q- T- a/ {        private String time;
" @: `( q3 S- I        private String blocktime;* C2 ^6 ?! {0 l7 w, I% |
        private BigDecimal amount;! I; s- b1 Z0 r4 c
        private BigDecimal free;
5 a7 e& j" g$ [' _- ^        private String from;
: V2 _2 X8 j, O) S        private String to;" o3 \* c5 _0 m3 w/ |2 F
       : K5 F  B# j8 s, }1 l" `
         5 N$ s9 ^0 P9 W: K/ f4 E+ C
}
; y5 T2 J/ M7 H# B7 ?        % d9 s) @" }4 }/ }1 B
//根据交易的txid调用钱包api获取相应信息+ o8 c2 ]0 Z: C! ]0 T3 `7 s
public Object getrawTransactionByTxIdFromWallet(String txId) throws CoinException {
4 e' v/ e( K3 s% q6 A  V0 c/ o8 `5 U                BtcTransactionInfo         tranc = new BtcTransactionInfo();' R- K5 O6 L- `: A! L. `; f3 _
                try {
7 Z: x1 b9 W3 ?) k+ K                        //调用原始交易接口
" L- D) b8 I% g; {' y0 d0 c( {* w  q                        Map transaction = (Map) btService.getTrawtransaction(txId, 1);5 t; G$ Z' M4 t
                        JSONObject info = JSONObject.parseObject(JSON.toJSONString(transaction));
6 x4 p; P2 P* S9 ?9 g                        String blockHash = info.getString("blockhash");4 f- V1 g2 t3 H' E# ^
                        /*block*/
3 l+ {  ?3 J0 y; h. |) U/ n5 J3 X                        //调用根据blockhash 获取块信息接口7 G$ M: I' v4 z- K0 t
                        Map blockInfo = (Map)btService.getblock(blockHash);
2 L: o' G9 W. c6 C$ [# L8 }# x                        JSONObject block = JSONObject.parseObject(JSON.toJSONString(blockInfo));7 I" a' Q' t1 _7 ]2 d  n
                        tranc.setBlockconfirmations(block.getString("confirmations"));
6 \! P8 ]# {6 D4 q& N( n; [8 h                        tranc.setBlocktime(block.getString("time"));
6 }  n, Z4 K" r" I. ]1 @8 T" o: R                        tranc.setBlockversion(block.getString("version"));
( p, l5 @7 w6 f) ]                        tranc.setBlockheight(block.getString("height"));
9 P" L" x9 Q3 |! B$ X6 o                        tranc.setBlockweight(block.getString("weight"));
0 v, d# ^$ w- u1 h8 Q- Q, v                        tranc.setPreviousblockhash(block.getString("previousblockhash"));
( f  l+ V0 f, Z- n+ o                        tranc.setNextblockhash(block.getString("nextblockhash"));) m! H; V- G: g1 N# M5 {3 p
                       5 T$ ]) [+ f1 a! w
                        tranc.setTxId(info.getString("txid"));5 s0 R7 F/ O2 a3 G; B, v
                        tranc.setHash(info.getString("hash"));  X* j; s6 d9 [5 x& ?4 D5 y/ v* y
                        tranc.setVersion(info.getString("version"));6 P  D/ J$ X$ b, l4 [/ H
                        tranc.setSize(info.getString("size"));/ w7 D5 ^& g+ V; r
                        tranc.setVsize(info.getString("vsize"));
6 E# O4 l5 x% L+ p                        tranc.setLocktime(info.getString("locktime"));: S# ~) `2 E6 S& d
                        tranc.setHex(info.getString("hex"));
& e* r" f! W3 U# c& S4 z                        tranc.setBlockhash(blockHash);
# E1 h* w. j4 E0 {, L                        tranc.setConfirmations(info.getString("confirmations"));
$ k9 N+ l8 U  g9 E. I                        tranc.setTime(info.getString("time"));
; k7 @% s: L' A, Z: R                        tranc.setBlocktime(info.getString("blocktime"));
7 H* Z# S7 H" m6 }6 {7 b                       0 T1 |0 _( ~+ X% g
                        JSONArray vins = JSONArray.parseArray(info.getString("vin"));& X% [+ Y8 U, d$ i. q  C
                        double sumvin = 0 ;
( m& I. z# U/ W                        List formAddress = new ArrayList();3 P. }+ Y/ @* |, ~* {
                        for (int i = 0,len = vins.size(); i
BitMere.com 比特池塘系信息发布平台,比特池塘仅提供信息存储空间服务。
声明:该文观点仅代表作者本人,本文不代表比特池塘立场,且不构成建议,请谨慎对待。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

成为第一个吐槽的人

V刘晨曦 初中生
  • 粉丝

    0

  • 关注

    3

  • 主题

    14