Hi 游客

更多精彩,请登录!

比特池塘 区块链技术 正文
业务场景:1 R+ l6 X6 [+ [$ M% h/ {
1.在自己的钱包节点上根据txId获取交易明细
& ?0 H( p' i- ~/ z) t% Q0 J2 Q4 e2.通过原始交易递归计算手续费: 公式[ 手续费  sum(vin)- sum(vout) ]
8 S3 m4 W" j7 z0 g; U要求:
+ O8 O0 W$ K' [( [. z8 r& G# x需要对utxo有一定的了解~~~
- O% y1 [3 b& X% ]' g8 I直接low代码:3 }% C0 ?3 b5 P/ b
//交易信息
: e; q% [# {8 G1 i/ lpublic class BtcTransactionInfo implements Serializable {
, E$ `# ?4 L" ^3 I! A/ @; H2 U& o
  w. [, W# y, Z1 R) P) |- x        private static final long serialVersionUID = 1L;
8 L5 m. ]  E& r      
) L5 G6 f9 {8 @        private String txId;" ?- `2 b- k3 }
        private String hash;
  g5 e6 C# g8 Z' Q5 B        private String blockheight;
5 w+ P% z3 H3 g6 W1 F; b        private String blockweight;
. |# N2 r: B8 {; x6 W- t# C2 \        private String blockconfirmations;8 G& k7 i$ h( h8 {2 z
        private String blockversion;
: J: b' }) b" u2 e$ X% ]        private String previousblockhash;
& t7 E4 N# A9 t2 j        private String nextblockhash;
0 a4 b& _7 A) J3 U) K3 }3 N: J        private String version;% T! ^/ u% V1 Y6 O) h+ P, N
        private String size;) W' t/ L8 |$ o' b; H3 I4 [4 e
        private String vsize;. C/ L: V0 S6 G/ t# W; u
        private String locktime;
6 `: C" c1 K; ?  m9 `8 ?3 h        private String hex;
" d- L& M! M# `$ m. F        private String blockhash;4 o& [( z# T5 K& f! T1 E8 M" L7 e
        private String confirmations;( h: I0 t, l2 f
        private String time;
- ?9 [! U- `8 o6 C# w8 j0 v        private String blocktime;7 J/ ]6 n* H$ A4 m8 A9 N$ X
        private BigDecimal amount;2 I8 r0 W: u  C4 ]1 q% q
        private BigDecimal free;
+ l' [% x7 h2 u; K        private String from;" k! x- q! u' h0 r# {( |6 s
        private String to;% A$ k* ^' y9 b& t9 G
      
9 d* P! J3 g7 ]. S/ }         
0 V* b  n0 O( e: r( g}
" ?) M2 l4 M6 z4 s: I, H        / |2 n# j1 x  T( B8 q( D
//根据交易的txid调用钱包api获取相应信息( R. j+ j' W6 ?8 u* f, Q
public Object getrawTransactionByTxIdFromWallet(String txId) throws CoinException {
( O. ]( ]! n' L- b- z                BtcTransactionInfo         tranc = new BtcTransactionInfo();- |) M+ T& [' R$ l( K
                try {
( E7 u9 C& L5 e- t3 g                        //调用原始交易接口
4 B  {1 D) i) |, E                        Map transaction = (Map) btService.getTrawtransaction(txId, 1);
, N0 K. {7 P2 y& ?! y) w, F* J                        JSONObject info = JSONObject.parseObject(JSON.toJSONString(transaction));3 _: f5 p+ `# l0 |) Q
                        String blockHash = info.getString("blockhash");7 _. n8 P* m" z5 z- M3 s9 P1 ]% \
                        /*block*/
4 Y% @  W# V9 D                        //调用根据blockhash 获取块信息接口( e% ~7 M" O- O; v, S3 Q
                        Map blockInfo = (Map)btService.getblock(blockHash);1 C! F- H9 W; ]9 _; j
                        JSONObject block = JSONObject.parseObject(JSON.toJSONString(blockInfo));
9 F6 `& }" O8 d; z% u                        tranc.setBlockconfirmations(block.getString("confirmations"));0 ]& l+ g! N$ C7 a$ v
                        tranc.setBlocktime(block.getString("time"));1 p$ w: h2 s) E& L1 P# Y3 s$ b5 O
                        tranc.setBlockversion(block.getString("version"));
% |3 M( M: C- A: T9 V5 Z                        tranc.setBlockheight(block.getString("height"));8 F9 a) f9 V; H* S9 J6 |; {
                        tranc.setBlockweight(block.getString("weight"));
3 n  Z9 {3 T* p" A( c                        tranc.setPreviousblockhash(block.getString("previousblockhash"));
: ^* h& H/ a  D9 a- u                        tranc.setNextblockhash(block.getString("nextblockhash"));
) k% m' _; o  [6 u* n                       ) {# _' q$ i% h. H
                        tranc.setTxId(info.getString("txid"));3 M$ z$ X  r# {. j0 w5 U( h& H
                        tranc.setHash(info.getString("hash"));& z3 a$ j* `3 z# D# R
                        tranc.setVersion(info.getString("version"));; v" P' _/ ~0 N- n! `1 ?9 m
                        tranc.setSize(info.getString("size"));
/ i& E) ?! n0 c: M7 ~) q8 [                        tranc.setVsize(info.getString("vsize"));2 b. I6 L9 I- Z
                        tranc.setLocktime(info.getString("locktime"));
. ?; j6 R9 [" @# k3 N1 ^! b                        tranc.setHex(info.getString("hex"));
3 [! F2 d/ B. `/ p                        tranc.setBlockhash(blockHash);
( k- x9 I1 {8 _                        tranc.setConfirmations(info.getString("confirmations"));* O. [& Y& ^* `: Q
                        tranc.setTime(info.getString("time"));
6 v' f$ W1 _7 K. X                        tranc.setBlocktime(info.getString("blocktime"));
; D. Z* ?5 X2 }- _* `1 _                       
+ |5 M2 E' _& T, g( W6 U                        JSONArray vins = JSONArray.parseArray(info.getString("vin"));
" H1 v" y% O/ {                        double sumvin = 0 ;
7 M% V3 d- c- c1 [* J                        List formAddress = new ArrayList();
1 T4 N9 G& q4 t+ n                        for (int i = 0,len = vins.size(); i
BitMere.com 比特池塘系信息发布平台,比特池塘仅提供信息存储空间服务。
声明:该文观点仅代表作者本人,本文不代表比特池塘立场,且不构成建议,请谨慎对待。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

成为第一个吐槽的人

V刘晨曦 初中生
  • 粉丝

    0

  • 关注

    3

  • 主题

    14