Hi 游客

更多精彩,请登录!

比特池塘 区块链技术 正文
业务场景:
7 O' ?. x& Z, l* e( j1.在自己的钱包节点上根据txId获取交易明细  r0 J9 P1 I0 k: }: L
2.通过原始交易递归计算手续费: 公式[ 手续费  sum(vin)- sum(vout) ]$ x4 _9 p) S9 V( T4 d8 x5 k; E
要求:8 E: v/ y+ ?" H6 d  Y  w0 G& w8 K
需要对utxo有一定的了解~~~% K8 a/ d" F* G3 E
直接low代码:7 F+ r& @% z. o7 X
//交易信息
! T; E1 N# d) ?) tpublic class BtcTransactionInfo implements Serializable {1 F- V# h1 |+ X
% a# N, K2 N8 a6 c# ~. }
        private static final long serialVersionUID = 1L;
. H4 ?$ `4 U2 u# J# t      
, f1 K( M) ~0 D! S        private String txId;
8 g" S( K7 c# D6 b! H        private String hash;; W. ^9 e0 e: ~9 H$ p0 e
        private String blockheight;
) L0 G0 a5 `# X; F) Q. F4 _" _        private String blockweight;
' X  w6 Z. ]0 b" t/ D        private String blockconfirmations;, p$ [0 ^4 H9 [% v
        private String blockversion;  w4 H2 d. X5 v2 h7 ~4 j! ?! {
        private String previousblockhash;
! R8 C4 p9 j) F7 T        private String nextblockhash;7 k8 H! V0 I1 }; U- S& B0 n
        private String version;4 }& D# c) }: A4 p% u. f! n0 r9 t. b
        private String size;" Q7 A0 N' [' {2 k1 P; u+ S
        private String vsize;
7 L/ d3 K& J2 a7 c        private String locktime;4 S0 x" ]9 m* O8 O0 i
        private String hex;' k/ C& m2 C: t# b
        private String blockhash;
# x" R* |! }  W" P: F- F        private String confirmations;
9 K) j6 a- u$ X9 n! S: f; T        private String time;% Z* ?: Y# R5 J) i8 O6 G0 P. N  h
        private String blocktime;
# O; G! S4 }! B- R7 R$ }$ N        private BigDecimal amount;* A2 _7 q9 ~* l$ \* v$ l% q
        private BigDecimal free;
7 o6 G' k9 M; M        private String from;$ K6 y* P  j9 n/ S9 B
        private String to;! }, H% ]" e' I9 D9 ?( b  B0 z9 i
       & E  W* K  P( j7 q0 @4 h* f- w
         
7 c  e/ Y1 w  g8 d) X4 Q8 q3 j}
* N* R; Y1 A5 q/ D, G        
' y, e" H: S4 i0 l  a" _; E# }//根据交易的txid调用钱包api获取相应信息# A9 U& m4 w$ N) [/ s& Z/ o' f
public Object getrawTransactionByTxIdFromWallet(String txId) throws CoinException {
: J/ I1 q: o2 a3 _9 e2 C) M. U                BtcTransactionInfo         tranc = new BtcTransactionInfo();
+ }2 u7 x4 b+ `0 [# D& b& o; D5 f                try {
3 G5 f. D& v' y& T                        //调用原始交易接口$ K9 L; U2 |: }
                        Map transaction = (Map) btService.getTrawtransaction(txId, 1);
( j7 |$ C7 j+ z                        JSONObject info = JSONObject.parseObject(JSON.toJSONString(transaction));
. `2 q2 A* }7 V( Q9 |4 V                        String blockHash = info.getString("blockhash");
2 x) s# x( D; I0 m+ Y+ y' B3 O                        /*block*/) d! E5 {) U+ g1 ~* Q0 c+ T
                        //调用根据blockhash 获取块信息接口
. U' a% M  y$ p. j. R  |4 ]                        Map blockInfo = (Map)btService.getblock(blockHash);3 m( F8 X" q$ a( W
                        JSONObject block = JSONObject.parseObject(JSON.toJSONString(blockInfo));
) R+ }- V2 [: |* m8 m. m' S' I* g                        tranc.setBlockconfirmations(block.getString("confirmations"));
. e! }+ r" ~: W' g1 e0 M                        tranc.setBlocktime(block.getString("time"));
1 `! U! ]" I2 ~6 V                        tranc.setBlockversion(block.getString("version"));
( A* a" e" e& ^, [! p+ H, d! W                        tranc.setBlockheight(block.getString("height"));
+ p8 X# C% T3 B9 v                        tranc.setBlockweight(block.getString("weight"));; c' b8 W  h; A) F4 }0 g
                        tranc.setPreviousblockhash(block.getString("previousblockhash"));
" j! S& Q8 Q3 D! D                        tranc.setNextblockhash(block.getString("nextblockhash"));% V- G" {( N0 y9 t% ~. {4 J; Z* C0 R
                       
4 S8 z2 V: _! M: s* x9 G2 P                        tranc.setTxId(info.getString("txid"));
: b( g% F9 H' d6 u" r7 j  j$ S2 P                        tranc.setHash(info.getString("hash"));- E- J6 N0 u3 x4 V: |
                        tranc.setVersion(info.getString("version"));
; Y6 l5 j+ g5 H! m                        tranc.setSize(info.getString("size"));
0 g. m9 D8 P4 o- l: Y  {                        tranc.setVsize(info.getString("vsize"));
, ?& }) Z: r+ q4 N- f                        tranc.setLocktime(info.getString("locktime"));7 e& [2 e" B3 h* Z" G+ m
                        tranc.setHex(info.getString("hex"));
# S$ g& l3 T4 n, H( [& i                        tranc.setBlockhash(blockHash);
' z0 J4 Q& t& Z% a+ O+ c  N' q0 z- o                        tranc.setConfirmations(info.getString("confirmations"));
, X$ D9 l" R1 R0 z. o& o* `                        tranc.setTime(info.getString("time"));
5 B8 |5 @  W% @" S( m                        tranc.setBlocktime(info.getString("blocktime"));
* s( G2 q/ Q6 J                       3 V/ F+ A" Y$ y5 Z: G
                        JSONArray vins = JSONArray.parseArray(info.getString("vin"));0 R! D) y, J* {+ N, c6 N
                        double sumvin = 0 ;
! o& l" F3 j9 @2 @5 `                        List formAddress = new ArrayList();
# Y5 ]$ O% A# ]0 p' |6 E2 ]2 Q                        for (int i = 0,len = vins.size(); i
BitMere.com 比特池塘系信息发布平台,比特池塘仅提供信息存储空间服务。
声明:该文观点仅代表作者本人,本文不代表比特池塘立场,且不构成建议,请谨慎对待。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

成为第一个吐槽的人

V刘晨曦 初中生
  • 粉丝

    0

  • 关注

    3

  • 主题

    14