Hi 游客

更多精彩,请登录!

比特池塘 区块链技术 正文
业务场景:7 @# M! j% R; n- i/ E! H  b( I1 n
1.在自己的钱包节点上根据txId获取交易明细9 f4 I3 l; ]9 D8 w/ t6 \" {
2.通过原始交易递归计算手续费: 公式[ 手续费  sum(vin)- sum(vout) ]7 Y8 h; c% a8 x8 V
要求:
+ n5 @2 v$ I* L2 X; o* p) s需要对utxo有一定的了解~~~
) [+ }5 Y0 X7 ~7 T0 [" |  l直接low代码:
0 r, C9 X/ D# G& D; `' I2 ?5 K0 T//交易信息  X2 s' o. r+ _
public class BtcTransactionInfo implements Serializable {+ @) H0 o# N/ l  \4 b
6 v1 s' ~4 g: ?* E* b0 j
        private static final long serialVersionUID = 1L;' `8 O! m4 e& }8 w7 r& L
      
4 ]& r% ?( F) l4 T        private String txId;" w  _& P# g) ~) \: \+ j8 Z
        private String hash;
* h8 L' b, H, D+ h" T        private String blockheight;
; v1 Q  P" \4 K6 j% |$ {        private String blockweight;
0 P* U+ S' @" r% F$ C; c        private String blockconfirmations;
: ?8 W3 c4 J: k" ^/ K$ d5 `# k        private String blockversion;
& J+ Y5 U7 u" f2 Q        private String previousblockhash;) t! C# u1 ^9 ~; B6 n
        private String nextblockhash;
- ~, F+ h' Q3 D9 S        private String version;; M( T+ Y9 k. O: o
        private String size;7 ]# |1 A4 h( t: d- E3 }$ k
        private String vsize;
( V: F! b- |0 z' ]( [        private String locktime;" H- j5 S# `8 m( `5 a- [
        private String hex;+ J' k! Y$ b+ ^7 r* A
        private String blockhash;
% S7 X3 }; Q9 d        private String confirmations;' w. C9 ?& T  q$ U+ h6 d
        private String time;
9 u- C+ M* O6 h0 _; x: m        private String blocktime;9 S: s& Z7 o9 H# Y
        private BigDecimal amount;
" K8 X! P2 Z5 ?' s# L        private BigDecimal free;
" c) N& O3 ?1 q+ B        private String from;
4 x1 t# |" N6 P$ y5 y* [        private String to;
0 f( `5 E3 d) l( C# f8 E       ) ]' e! S3 n& `3 N: [5 s. I
         & a) [( K+ l2 C; A( b. u
}
& v4 p- K( ^6 }; {& p        ( K3 a3 C$ z9 V( i* m' H
//根据交易的txid调用钱包api获取相应信息
/ e2 }4 J: |7 A* B* l/ J9 ]5 Ipublic Object getrawTransactionByTxIdFromWallet(String txId) throws CoinException {
. y7 I. W" Z5 W7 Z: Q0 R                BtcTransactionInfo         tranc = new BtcTransactionInfo();
$ ?$ ?- G  ~: V. L8 A4 b' w3 N) J                try {
; q' `. e1 I8 h3 G3 u                        //调用原始交易接口. k& h  k' P% o
                        Map transaction = (Map) btService.getTrawtransaction(txId, 1);% {- N8 R% }  d' k+ |0 C$ u
                        JSONObject info = JSONObject.parseObject(JSON.toJSONString(transaction));3 w( T6 U* S1 A( W/ Z2 R
                        String blockHash = info.getString("blockhash");
* n8 [" X; G! p' M& J                        /*block*/
: N2 S9 H4 N7 k                        //调用根据blockhash 获取块信息接口6 o2 r: K7 m6 F6 @- ?2 f0 E% Z
                        Map blockInfo = (Map)btService.getblock(blockHash);
  y3 s' w/ Y3 S) i: U) T" O3 ~                        JSONObject block = JSONObject.parseObject(JSON.toJSONString(blockInfo));
' {2 h; f0 X! J4 \                        tranc.setBlockconfirmations(block.getString("confirmations"));
% W; ?: k) Y3 r  u                        tranc.setBlocktime(block.getString("time"));
" }3 n1 N+ P& A: ~) u                        tranc.setBlockversion(block.getString("version"));
3 d6 \# `) g9 I. J$ S8 t6 @9 h5 S                        tranc.setBlockheight(block.getString("height"));6 ^& p# k" m$ z. D/ `9 k0 d
                        tranc.setBlockweight(block.getString("weight"));1 a& }% {$ a( V& _2 D
                        tranc.setPreviousblockhash(block.getString("previousblockhash"));
" s& U3 w; n+ [: x4 S/ L1 s( o                        tranc.setNextblockhash(block.getString("nextblockhash"));% K9 _& J  D" R& @3 Z
                       
5 [7 j7 l* d* h. |0 f                        tranc.setTxId(info.getString("txid"));: D4 I: a8 }5 @) }* H
                        tranc.setHash(info.getString("hash"));/ s. V3 m2 s9 r3 |! B" a% K
                        tranc.setVersion(info.getString("version"));+ ?/ l2 Q- M2 ~
                        tranc.setSize(info.getString("size"));
9 y5 |9 N2 g; F                        tranc.setVsize(info.getString("vsize"));6 H9 Y% b8 _) u& p! u# K4 \
                        tranc.setLocktime(info.getString("locktime"));8 z/ y2 [0 c4 x- C3 s( b6 N7 |
                        tranc.setHex(info.getString("hex"));% U( H8 d! q+ n8 v* r5 [
                        tranc.setBlockhash(blockHash);
0 N: Z$ W0 f1 e3 g) `) L" s                        tranc.setConfirmations(info.getString("confirmations"));% E- a% ^) p% i0 t, h
                        tranc.setTime(info.getString("time"));% ~( Z# w& u2 F& [
                        tranc.setBlocktime(info.getString("blocktime"));
+ ?  ~" {2 \! q4 f- [0 o                       0 G% x$ E" ?5 W+ o, }8 `* I+ |! V: }
                        JSONArray vins = JSONArray.parseArray(info.getString("vin"));
; Q6 d, ~2 w9 ]' X. j  J                        double sumvin = 0 ;9 @* d' T: Z& A# u
                        List formAddress = new ArrayList();  [1 \; {% f3 Z  [
                        for (int i = 0,len = vins.size(); i
BitMere.com 比特池塘系信息发布平台,比特池塘仅提供信息存储空间服务。
声明:该文观点仅代表作者本人,本文不代表比特池塘立场,且不构成建议,请谨慎对待。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

成为第一个吐槽的人

V刘晨曦 初中生
  • 粉丝

    0

  • 关注

    3

  • 主题

    14