Hi 游客

更多精彩,请登录!

比特池塘 区块链技术 正文
业务场景:
0 L  f% N4 Y: N: d  O1.在自己的钱包节点上根据txId获取交易明细2 z0 J3 c8 @3 \
2.通过原始交易递归计算手续费: 公式[ 手续费  sum(vin)- sum(vout) ]; n% D% u1 s# m) k; T7 e) a
要求:: c6 H4 D0 b2 Z3 J1 V7 s3 X
需要对utxo有一定的了解~~~
  t  c+ z; Y  y8 }( x! R直接low代码:
8 a' n6 q& u' N& c9 u" z6 U/ F* i' P//交易信息: F5 r7 M8 \# }1 K% J
public class BtcTransactionInfo implements Serializable {$ T" Q# s  Y, p4 v
5 ~! y: h6 N  b5 q+ N7 h
        private static final long serialVersionUID = 1L;
5 e& D8 @+ i2 x$ Y       6 U0 N) `0 \/ M/ n6 O; @
        private String txId;/ p, f) Z# x; G( H& d2 n
        private String hash;( R. u) f: G) C9 f4 t
        private String blockheight;
) [1 C+ Y, c  e! n1 \+ n' B3 \        private String blockweight;: C) `$ ~# Y* C5 p0 W& {
        private String blockconfirmations;
" \, s/ U) t  r& r7 E* w( B        private String blockversion;% D' k6 O: r1 y3 w( K$ J2 a
        private String previousblockhash;
: q$ V4 f1 T0 B1 B. T. |        private String nextblockhash;
- M* z* ~9 S3 [' [        private String version;7 E  T7 N! K0 \. a: p+ _+ K
        private String size;
6 @* j0 T) @% h) H- u6 z        private String vsize;* a- L( b% N7 I* s& h/ O
        private String locktime;1 h+ b8 e+ D6 w3 o3 W4 Z
        private String hex;
3 ~' h: r) D  W; @        private String blockhash;
% C% j$ p! e/ i' @$ h% Z  q7 {        private String confirmations;, z2 D/ ^0 l5 ^  ^
        private String time;
! z* D5 E; L! x- Y3 Y2 Y$ a        private String blocktime;1 u( h0 r6 w6 z( \4 W5 D* t$ ]
        private BigDecimal amount;
/ F& b# d$ T: U- S2 x+ ^9 E        private BigDecimal free;
: A5 j& ]; \( u% l        private String from;
" R7 E. V9 `0 c1 K6 \4 v        private String to;0 n+ u( M2 p/ p
      
1 z6 [, m  |/ U) o# W. A         / E. P9 X* T% Y, s3 k) }
}" Y0 I$ Q" B: |- P" g7 V
        
, u+ F# n1 P6 ]; T2 N//根据交易的txid调用钱包api获取相应信息( k/ \+ F; ]8 [$ c* F
public Object getrawTransactionByTxIdFromWallet(String txId) throws CoinException {
, c  D& m" s  v                BtcTransactionInfo         tranc = new BtcTransactionInfo();" M  Q7 P" m+ ~- b' \. {
                try {1 t, {! X) [& B4 P* o5 Z; P1 T4 }
                        //调用原始交易接口
$ p. j) D) S1 P7 b) d$ d                        Map transaction = (Map) btService.getTrawtransaction(txId, 1);
# {) k2 j2 w% {4 n+ K# D4 o                        JSONObject info = JSONObject.parseObject(JSON.toJSONString(transaction));1 m; O0 V' t9 z- ~! m6 z
                        String blockHash = info.getString("blockhash");& q3 e7 L( l  }
                        /*block*/
* E2 R  n, N2 w! Y% c                        //调用根据blockhash 获取块信息接口
) x9 J/ X& u/ N7 f) |                        Map blockInfo = (Map)btService.getblock(blockHash);
: ^5 J( Z9 D( X# H                        JSONObject block = JSONObject.parseObject(JSON.toJSONString(blockInfo));/ U, f7 T& C3 O' }
                        tranc.setBlockconfirmations(block.getString("confirmations"));. c9 o6 e( ^5 @& L1 M" O
                        tranc.setBlocktime(block.getString("time"));
3 P+ j/ `/ i+ K5 u- t2 T, S                        tranc.setBlockversion(block.getString("version"));
8 @+ D9 m2 ]/ n& }1 m                        tranc.setBlockheight(block.getString("height"));
0 y! H- \% o: o                        tranc.setBlockweight(block.getString("weight"));
: C# s: k. i: m/ `* c, W, r                        tranc.setPreviousblockhash(block.getString("previousblockhash"));
+ }& V" C4 I/ n$ \- M4 A$ x4 O1 U                        tranc.setNextblockhash(block.getString("nextblockhash"));: r3 N" F# z  K# b* H' x  p
                       
' M: p, e* p5 T3 ~, F1 e* C! p1 \  G                        tranc.setTxId(info.getString("txid"));
2 u7 E" c8 T7 }: F                        tranc.setHash(info.getString("hash"));, O6 }  m5 s3 N/ Y2 W! O' v
                        tranc.setVersion(info.getString("version"));
4 V; d$ p' p$ {8 W  ^! T* C                        tranc.setSize(info.getString("size"));
/ P* l" G: s$ T4 T( o                        tranc.setVsize(info.getString("vsize"));* C4 S9 \* a/ u9 Y- l% u+ N
                        tranc.setLocktime(info.getString("locktime"));/ ]& c. v2 J  [  E) y
                        tranc.setHex(info.getString("hex"));( E, e# m- ~; n3 [8 A5 _; I, }) |# _
                        tranc.setBlockhash(blockHash);6 X  w. P% i: O+ A
                        tranc.setConfirmations(info.getString("confirmations"));8 Q* Y; h7 e" U  [  j4 c
                        tranc.setTime(info.getString("time"));% x* ]' ]9 O( Y9 o  A
                        tranc.setBlocktime(info.getString("blocktime"));. x+ I% N& o: {; q. A; ^$ r
                       4 k9 }0 c* V" w' \" I0 \2 c
                        JSONArray vins = JSONArray.parseArray(info.getString("vin"));
: ~7 \2 H( r/ u0 y. X& ]                        double sumvin = 0 ;% Q) w! D8 o3 u4 H8 I+ Y8 o
                        List formAddress = new ArrayList();
% @; Q8 P: x) |9 F* _                        for (int i = 0,len = vins.size(); i
BitMere.com 比特池塘系信息发布平台,比特池塘仅提供信息存储空间服务。
声明:该文观点仅代表作者本人,本文不代表比特池塘立场,且不构成建议,请谨慎对待。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

成为第一个吐槽的人

V刘晨曦 初中生
  • 粉丝

    0

  • 关注

    3

  • 主题

    14