Hi 游客

更多精彩,请登录!

比特池塘 区块链技术 正文
业务场景:
. U" ]% D& m1 }0 [& |1.在自己的钱包节点上根据txId获取交易明细
% f6 |5 P* B6 ?4 {6 p/ i5 f0 ^2.通过原始交易递归计算手续费: 公式[ 手续费  sum(vin)- sum(vout) ]
9 H9 y7 X; k9 V! W* }要求:
& `9 F' f) l2 u* V需要对utxo有一定的了解~~~
- m( b! K7 d8 N; N直接low代码:
: ^) x  C* m8 n3 U  l" O4 U//交易信息2 |" Y  ?* ]: s6 p& Y
public class BtcTransactionInfo implements Serializable {
3 [! d* g/ U( S  y% [  q
5 q% [: k: R6 k( R  Z0 }$ ]        private static final long serialVersionUID = 1L;  F; y4 Y2 f- W! S% s) @
      
( B6 A1 L2 c! W2 M0 T$ L        private String txId;! n9 {! O. Z3 x
        private String hash;
# w5 E  f% r7 a" Q% w        private String blockheight;# p" e0 F( @4 F" y$ N
        private String blockweight;
" h+ s9 e+ r% F6 G9 q: m6 f        private String blockconfirmations;( g: n( i* l# F$ q" ~8 A. i1 u
        private String blockversion;
# j% Y$ I; ~& Q, b        private String previousblockhash;- n% }0 L3 R& Z. |8 ^3 ~
        private String nextblockhash;: j' A; r  S3 W: c/ V
        private String version;
! Q$ s2 R3 z, }- x# J# e% e        private String size;
. `4 c9 \. a+ W8 a" h( {2 S        private String vsize;
# \; ]3 L! J4 s. Z        private String locktime;
6 @! A3 J- S( C* |9 z        private String hex;
  a& Z5 U) }% M  K$ E        private String blockhash;8 Y, D8 i3 z( |1 x- t" G4 e; u
        private String confirmations;$ y. r% [8 d6 Y
        private String time;2 p, l% [$ I' _7 g- X
        private String blocktime;
* E" t: C* Y! J, k0 ^& ^# q# J        private BigDecimal amount;
$ N' j+ p6 e$ x5 C( H        private BigDecimal free;" A. b! ~, T; m9 c# t
        private String from;
7 g, ~1 \: `4 Q, V% v7 ^        private String to;
' C* M1 S* m* ^: C  t) A       $ f- |) r' p2 H, `) [
         
! D: S' I1 u& N+ z. v( ^# Z/ P3 q9 g& e1 L}( m9 M2 E, s* e' k$ ]- I& N- M
        
' _; A+ P0 i( G, j& y. b//根据交易的txid调用钱包api获取相应信息% {3 I; k; [0 K& o6 x
public Object getrawTransactionByTxIdFromWallet(String txId) throws CoinException {. H* T  e( z8 e2 B7 z, e
                BtcTransactionInfo         tranc = new BtcTransactionInfo();
2 o7 k, u" l2 L& f                try {9 |3 }5 }/ M/ v5 D9 B, J& h! T3 L
                        //调用原始交易接口
" N+ v" F7 l/ ?2 G' z5 F- E                        Map transaction = (Map) btService.getTrawtransaction(txId, 1);
6 E1 U. c! ^/ h3 r$ R0 B' _3 V' P                        JSONObject info = JSONObject.parseObject(JSON.toJSONString(transaction));
5 g3 {" q& G5 l; g" }  ^6 d  N                        String blockHash = info.getString("blockhash");$ {+ Y6 z) ]/ q- U7 r* w+ S
                        /*block*/
& `; [9 i# U1 Q- Q                        //调用根据blockhash 获取块信息接口( R9 Y' t" I- R# ?$ }  M
                        Map blockInfo = (Map)btService.getblock(blockHash);" d  ~& b3 p) ~. F
                        JSONObject block = JSONObject.parseObject(JSON.toJSONString(blockInfo));
3 x$ b! I# O$ F* a5 d2 V- G0 s                        tranc.setBlockconfirmations(block.getString("confirmations"));5 A  o. m6 H* N' c" ?, w( B
                        tranc.setBlocktime(block.getString("time"));7 L1 P% d% Y( L) ]/ K
                        tranc.setBlockversion(block.getString("version"));& f  z% p+ w( u. u0 a: |" |
                        tranc.setBlockheight(block.getString("height"));" V9 _, M9 l- a. x6 c* C) k+ N; ^
                        tranc.setBlockweight(block.getString("weight"));
5 G* U" \% m) P                        tranc.setPreviousblockhash(block.getString("previousblockhash"));
4 u  |8 I& z) I& o6 ?: X& K; j                        tranc.setNextblockhash(block.getString("nextblockhash"));
3 ~4 y; A1 ?1 O2 M3 m" B; Y                       
2 O4 ]' W. `5 ~: r                        tranc.setTxId(info.getString("txid"));
5 T) u$ N# E1 ~1 I$ x                        tranc.setHash(info.getString("hash"));
& V% ]" }/ g- L" H1 o                        tranc.setVersion(info.getString("version"));: N+ k, {( l- c$ f3 t
                        tranc.setSize(info.getString("size"));
! I, @! Y/ V) j                        tranc.setVsize(info.getString("vsize"));
+ k) i/ x% Q& b" D5 Y  O3 b                        tranc.setLocktime(info.getString("locktime"));, k# b( J# |0 t
                        tranc.setHex(info.getString("hex"));% S, D9 k+ H5 n& y( `9 S
                        tranc.setBlockhash(blockHash);
  E  k8 L( \; U7 S/ C                        tranc.setConfirmations(info.getString("confirmations"));, `* G7 y% P. K! I: B" w
                        tranc.setTime(info.getString("time"));& g, ?" a  [  ~3 @
                        tranc.setBlocktime(info.getString("blocktime"));
' N( m0 O% Q# ?                       0 o- ~  o' }- K6 Z3 D4 c5 I: l, k* U2 |
                        JSONArray vins = JSONArray.parseArray(info.getString("vin"));/ {( u* ]# K8 R
                        double sumvin = 0 ;9 j4 `, G- b& W  m% [5 I3 R# S7 [$ q
                        List formAddress = new ArrayList();
" H$ z( j0 t( M( T6 r/ m                        for (int i = 0,len = vins.size(); i
BitMere.com 比特池塘系信息发布平台,比特池塘仅提供信息存储空间服务。
声明:该文观点仅代表作者本人,本文不代表比特池塘立场,且不构成建议,请谨慎对待。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

成为第一个吐槽的人

V刘晨曦 初中生
  • 粉丝

    0

  • 关注

    3

  • 主题

    14