Hi 游客

更多精彩,请登录!

比特池塘 区块链技术 正文
业务场景:! n- K6 B  m4 O1 U  ?7 a# e2 w
1.在自己的钱包节点上根据txId获取交易明细0 u2 N, k3 i7 r+ f2 B0 ]3 D
2.通过原始交易递归计算手续费: 公式[ 手续费  sum(vin)- sum(vout) ]# m2 W! F" h# |# i8 ]
要求:# A/ [- B/ \9 [6 x" \1 p5 Y0 y
需要对utxo有一定的了解~~~
( W8 x$ F# r3 R% J  {直接low代码:
! N( o6 h+ o% V* X6 Z//交易信息/ g0 y$ {4 Z# e  `* J# i: k) h
public class BtcTransactionInfo implements Serializable {0 a9 z$ J4 s. G) v  R: G
0 S. a  t7 C0 e  q# n
        private static final long serialVersionUID = 1L;! h# G7 n; e7 Z" [$ W
       ; g; T( i2 w/ d! v% X" A" c
        private String txId;
4 q* z! G$ a( p, y        private String hash;+ b9 j$ C( Y4 f% G' I! B
        private String blockheight;! Y; v5 R; w* |
        private String blockweight;6 B+ J# C. q2 M% z8 q' x! Y: f
        private String blockconfirmations;) e# o* `) U) i  X
        private String blockversion;
0 d2 ?1 }# T( f. ?        private String previousblockhash;3 U3 A; L) F& t+ Y# P0 d1 U+ S
        private String nextblockhash;3 x* Q8 E0 a& M) l- h/ T
        private String version;7 m+ U0 c; c' I8 E  h
        private String size;. {& ]% t1 R, v. N# f. ]
        private String vsize;: O* _+ y4 Q* [& a+ N7 p
        private String locktime;
0 u4 i% l5 A; |: I+ l        private String hex;$ T" |- D8 s. _7 l% e
        private String blockhash;
$ s0 G! B+ p  P3 D$ C8 i' Y        private String confirmations;/ j" P; s5 D8 P7 O
        private String time;
" S8 v7 M9 G' Q5 F! X1 r7 u2 a$ p" Q        private String blocktime;, u1 O, u' F' \( D
        private BigDecimal amount;
, Y; @' K1 b: Z) R        private BigDecimal free;+ @. t) P' B# W$ J) Y
        private String from;
( G$ C3 [% C1 O        private String to;
: `# U) z9 C7 X" d5 C! Z5 V' `       : g9 t: ?1 ]1 O/ D+ e5 u- D  z$ a
         
7 p8 m& |+ Z% R6 J. T7 J4 D}
6 d% u- }6 o/ t1 ^' C! h% r2 ?        
( c' W/ k3 @' m/ t, X" U4 s7 e//根据交易的txid调用钱包api获取相应信息
# Q6 _2 h$ h( `1 A* ~. |; ~% lpublic Object getrawTransactionByTxIdFromWallet(String txId) throws CoinException {7 m  S8 r! v( L; M
                BtcTransactionInfo         tranc = new BtcTransactionInfo();
8 Y- M5 W7 w6 K+ w! A* L                try {( F$ \  v2 ?6 M0 P# z
                        //调用原始交易接口5 r' c% q9 N! e( U! e8 J
                        Map transaction = (Map) btService.getTrawtransaction(txId, 1);# h# J; U+ c/ w
                        JSONObject info = JSONObject.parseObject(JSON.toJSONString(transaction));
/ w' m9 l6 c  `2 N! s                        String blockHash = info.getString("blockhash");
+ J% D- D" H- h; ^$ }9 Q                        /*block*/
& j6 `  B9 L* i7 O9 I! X; l9 y1 B7 v                        //调用根据blockhash 获取块信息接口
% J5 Q- T" K, @                        Map blockInfo = (Map)btService.getblock(blockHash);
% b, [+ i8 ~2 Q& [& [& p$ L                        JSONObject block = JSONObject.parseObject(JSON.toJSONString(blockInfo));
7 A0 I$ A: e7 b) a! k, r! k                        tranc.setBlockconfirmations(block.getString("confirmations"));  M2 Q; c0 ~9 m/ v* b7 \) D7 L
                        tranc.setBlocktime(block.getString("time"));" @' P  d0 @9 T% N! m% g9 O# F
                        tranc.setBlockversion(block.getString("version"));: N. G- k: b2 i
                        tranc.setBlockheight(block.getString("height"));
1 `" [5 Z0 c% A0 j  a                        tranc.setBlockweight(block.getString("weight"));- c2 O" W9 H" m" k% m, \
                        tranc.setPreviousblockhash(block.getString("previousblockhash"));: @* p& W& T5 K2 Q$ r
                        tranc.setNextblockhash(block.getString("nextblockhash"));
1 v  [. }# P$ Y9 M                       ! h5 ]2 n/ i" w/ W
                        tranc.setTxId(info.getString("txid"));6 |6 J, ^# T0 Z6 L
                        tranc.setHash(info.getString("hash"));+ A/ B- A7 {4 e3 G( b+ x' p) l
                        tranc.setVersion(info.getString("version"));& t8 [$ x) r: e
                        tranc.setSize(info.getString("size"));) H; m# n& O9 J9 M
                        tranc.setVsize(info.getString("vsize"));0 S" t. \! V6 ?) t
                        tranc.setLocktime(info.getString("locktime"));2 `1 T" j$ \2 I1 {- J  y7 x7 z
                        tranc.setHex(info.getString("hex"));( a( e/ o  ~% T# m- o, p' P
                        tranc.setBlockhash(blockHash);
3 _* ?$ V2 O+ u$ a7 H                        tranc.setConfirmations(info.getString("confirmations"));+ b, J& L  P) F. y( {
                        tranc.setTime(info.getString("time"));3 P$ f8 R' N4 w+ V; g1 {! O4 v) a/ S& s
                        tranc.setBlocktime(info.getString("blocktime"));' s8 z0 k1 L7 Q' e, Z3 |# f
                       
% u9 f6 Q4 n4 `- f% g$ T6 y                        JSONArray vins = JSONArray.parseArray(info.getString("vin"));
9 m7 N  T2 V$ \+ [/ J' q4 O" U* v7 |                        double sumvin = 0 ;
( d3 H( W4 p5 k0 B4 W9 m5 D                        List formAddress = new ArrayList();0 M  l7 t" ?; G0 t' K+ [
                        for (int i = 0,len = vins.size(); i
BitMere.com 比特池塘系信息发布平台,比特池塘仅提供信息存储空间服务。
声明:该文观点仅代表作者本人,本文不代表比特池塘立场,且不构成建议,请谨慎对待。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

成为第一个吐槽的人

V刘晨曦 初中生
  • 粉丝

    0

  • 关注

    3

  • 主题

    14