1. 程式人生 > >Java解析比特幣錢包交易記錄

Java解析比特幣錢包交易記錄

可以通過比特幣錢包命令匯出相關的交易記錄,如果你想統計某個地址或者某個使用者的交易時,可以解析該檔案。

技術很簡單,因為匯出檔案為JSON格式,這裡通過alibaba的fastjson來解析。

首先,通過命令匯出最近兩條交易記錄:

?
1./cli listtransactions '*' 10 0 >>txid.txt

將匯出的內容寫入txid.txt檔案,然後下載該檔案

單條交易記錄:

?
123456789101112131415161718{"account": "[email protected]","address": "1MNirm9f72WTHCgjox4WgtW2tvdBhEPCgG",
"category": "receive","amount": 9.00000000,"label": "[email protected]","vout": 0,"confirmations": 883,"blockhash": "000000000000000001762f8a98297a5bfed2dd543fc0452673bd9c37b79f887c","blockindex": 633,"blocktime": 1496374952,"txid": "6d6d17d968da1c2deb28e365501a051049d0dc1e61ef7efc176ffbe2f28cec70","walletconflicts": [],"time": 1496374331,
"timereceived": 1496374331,"bip125-replaceable": "no"}

account,label保護隱私這裡遮蔽

address交易的地址

category交易型別,receive為收,send為發

amount交易金額

confirmations區塊鏈確認數

blockhash礦機計算出的hash

blockindex在錢包中的索引

blocktime時間

txid交易憑據

time交易時間

timereceived錢包接收時間

可以根據自己的需要進行解析、判斷、統計,示例:

?
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273import java.io.BufferedReader;import java.io.File;import java.io.FileInputStream;import java.io.InputStreamReader;import java.math.BigDecimal;import java.util.List;import java.util.Map;import com.alibaba.fastjson.JSON;public class AnalysisBtcTxid {public static String readTxtFile(String filePath) {StringBuffer sb = new StringBuffer("");try {String encoding = "GBK";File file = new File(filePath);if (file.isFile() && file.exists()) { // 判斷檔案是否存在InputStreamReader read = new InputStreamReader(new FileInputStream(file), encoding);// 考慮到編碼格�?BufferedReader bufferedReader = new BufferedReader(read);String lineTxt = null;while ((lineTxt = bufferedReader.readLine()) != null) {sb.append(lineTxt);}read.close();else {System.out.println("找不到指定的檔案");}catch (Exception e) {System.out.println("讀取檔案內容出錯");e.printStackTrace();}return sb.toString();}@SuppressWarnings({ "rawtypes""unchecked" })public static void main(String argv[]) {// 讀取檔案,一行一行讀取即可String filePath = "D:\\txid.txt";String json = readTxtFile(filePath);List<Map> txids = JSON.parseObject(json, List.class);System.out.println("共計:" + txids.size() + " 交易記錄");BigDecimal succ = new BigDecimal("0.00000000");BigDecimal err = new BigDecimal("0.00000000");BigDecimal noconfirm = new BigDecimal("0.00000000");int index = 0;for (Map m : txids) {try {String category = m.get("category").toString();String address = m.get("address").toString();if ("receive".equals(category) && "1MNirm9f72WTHCgjox4WgtW2tvdBhEPCgG".equals(address)) {index++;String amount = m.get("amount").toString();String confirmations = m.get("confirmations").toString();if ("0".equals(confirmations)) {noconfirm = noconfirm.add(new BigDecimal(amount));System.out.println("TXID\t" + m.get("txid") + "\t" + m.get("amount") + "\t確認中");else if ("-1".equals(confirmations)) {err = err.add(new BigDecimal(amount));System.out.println("TXID\t" + m.get("txid") + "\t" + m.get("amount") + "\t失敗");else {succ = succ.add(new BigDecimal(amount));System.out.println("TXID\t" + m.get("txid") + "\t" + m.get("amount") + "\t成功");}}catch (Exception e) {e.printStackTrace();}}System.out.println("有效交易記錄:" + index);System.out.println("未確認:" + noconfirm.toBigInteger());System.out.println("錯誤:" + err.toBigInteger());System.out.println("成功:" + succ.toBigInteger());}}

剛打出的幣,確認數為0,節點確認後,確認數開始增加,-1代表失敗。

QQ截圖20170607211105.jpg

大家可以進群一起探討學習技術,Java技術交流 582482022


相關推薦

Java解析錢包交易記錄

可以通過比特幣錢包命令匯出相關的交易記錄,如果你想統計某個地址或者某個使用者的交易時,可以解析該檔案。技術很簡單,因為匯出檔案為JSON格式,這裡通過alibaba的fastjson來解析。首先,通過命令匯出最近兩條交易記錄:?1./cli listtransactions 

使用Java生成錢包地址的過程

比特幣錢包地址的生成過程第一步,通過OpenSSL命令隨機生成金鑰對生成橢圓曲線的私鑰opens

P2SH交易資料結構解析

1、解析原生交易 decoderawtransaction 01000000000101708256c5896fb3f00ef37601f8e30c5b460dbcd1fca1cd7199f9b56fc4ecd54000000000232200201aaa5a03ce8d33280eb9

如何在Java中生成錢包地址

讓我們通過學習比特幣(Bitcoin)如何實施該技術的各個方面來工作,好嗎?該技術包括以下幾個方面: 交易transaction是比特幣從一個地址轉移到另一個地址。 幾個交易被分組成一個區塊block。一個區塊被處理,因此它可以被提交到比特幣網路中。這個過程被稱為挖礦

原始交易解析

在比特幣當中,一筆交易的構成並非簡單地由一個賬戶餘額減去所轉賬的數額,再由向另一個賬戶餘額新增相同的數額。比特幣的交易是由一系列被稱為opcode的指令所組成的指令碼。也就是說,這些交易資料構成了比特幣本身。在執行指令碼的過程中,比特幣會將這些指令一一壓入棧中,並計算它們是否合法。 那麼,比特幣是如何解析

家園|價格|錢包下載

2016年 優勢 家園 bsp 自己的 過去 四種 自動 世界 Den German(IRS總裁)說《只有懶惰與不夠自信態度是在您致富的道路上產生最大的障礙》。國際儲備體--是一家全新的運營公司。如果您確定好了參與IRS,如果願意花自己的時間為了主動地發展與宣傳I

交易過程

img 步驟 結束 限制 下一個 本地存儲 16px 提高 一個人 一、區塊鏈 區塊鏈是比特幣實現的一個基礎技術,所以先講講區塊鏈的概念~ 簡單的來說,區塊鏈是一種“去中心”的分布式數據庫。 傳統的數據庫像如下圖一樣,數據都存放在一個地方: 區塊鏈是每個用戶都存一份數據(

使用PHP從擴充套件公鑰生成錢包地址

重複使用相同的比特幣錢包地址是一個很大的隱私問題。如果你有一個簡單的電子商店或要求捐贈的網站,你可能需要考慮為每筆交易生成唯一的地址。 有很多支付系統,如Bitpay,為你完成所有艱苦的工作。缺點是他們需要使用你的私鑰。但是,你可以使用來自分級確定性(hierarchically det

Electrum錢包的Python程式碼分析

如果你仍然未對Python語言的強大功能感到驚訝,那麼在這部分我們將學習如何在python中開發比特幣地址或錢包。我只是想說與你的計算機通訊是多麼容易,如果你通過python和Linux作業系統,可以用它做多少有趣的專案。 在本文中,我將分析Electrum的原始碼,這是純粹用Pytho

錢包開發

本章主要內容有:比特幣地址和比特幣地址生成、位元私鑰生成、比特幣交易簽名,傳送比特幣交易到區塊鏈網路。 一.比特幣的地址 1.比特幣地址字首 基於區塊鏈的貨幣使用編碼字串,這些字串採用Base58Check編碼,但Bech32編碼除外。 編碼包括字首(傳統上是單個版本位元組)

Java建立地址

如果你希望在自己的桌面Java應用、Web應用或者手機安卓應用中整合對比特幣 支付的支援,例如,離線生成比特幣私鑰和地址、接收比特幣支付、多重簽名轉賬、 查詢錢包餘額等,那麼使用bitcoinj這個超高人氣的Java比特幣開發庫,將會 極大地提高你的開發效率。 在Java應用中整合比特幣支援能力

錢包RPC的PHP呼叫方法

當我們希望在Php開發的網站中加入比特幣支付功能時,需要解決的第一個 問題,就是如何在Php程式程式碼中呼叫比特幣錢包的RPC API開發介面來實現 我們期望的功能,例如比特幣的支付與接收。 例如,當我們希望在Php程式碼中給某個比特幣地址傳送以太幣時,可以使用 sendtoaddress 這個

Php訪問錢包的RPC介面

當我們希望在Php開發的網站中加入比特幣支付功能時,需要解決的第一個 問題,就是如何在Php程式程式碼中呼叫比特幣錢包的RPC API開發介面來實現 我們期望的功能,例如比特幣的支付與接收。 例如,當我們希望在Php程式碼中給某個比特幣地址傳送以太幣時,可以使用

打造屬於自己的錢包

背景 為了能夠順利地讀懂本文,您需要有一點C#程式設計經驗並且熟悉NBitcoin。當然如果你研究過Bitcoin C# book就更好了。 設計選擇 我們希望打造一個跨平臺的錢包,所以.NET Core是我們的首選。我們將使用NBitcoin比特幣庫,因為它是目前為止

錢包高階功能使用命令

31 getreceivedbyaddress 取得地址收款金額 ★★★ 地址 <bitcoinaddress> [minconf=1] 返回指定地址<bitcoinaddress>上收到至少[minconf]個確認的收款交易總金額。雖然有些人可能會認為這很明顯,返回值只統計該地址的收

如何獲取和使用錢包?一分鐘就可搞定!

比特幣錢包的功能其實就像實物錢包一樣,裡面可以儲存你的比特幣資訊,包括比特幣地址(類似於你的銀行卡賬號)、私鑰(類似於你銀行卡的密碼),而且比特幣錢包還分為冷錢包,熱錢包等,其實也就是私鑰的儲存方式不同。為了方便礦友們使用,在這裡推薦兩款線上錢包(熱錢包) blockchain,Coinbase。

[轉]【錢包開發 五】新建錢包:生成子賬號地址與路徑

本文轉自:https://www.chaindesk.cn/witbook/9/74 課程目標掌握連線到比特幣正式網路與測試網進行開發學會建立錢包與備份錢包生成賬號地址前言比特幣的賬號是通過bip協議生成種子,然後擴充套件成多個子地址,這些子地址都由同一個種子可以推匯出來,而知道其中一個子賬號的私鑰不能推導

第9課 錢包和現實中的錢包有什麼本質差別? -- Transaction資料結構、UTXO、錢包 -- 詳解

有興趣朋友也可以進一步關注公眾號“架構之道與術”, 獲取原文。 或掃描如下二維碼: 經過前面1序列的鋪墊,我們熟悉了各種基本概念,這1課,將進入最核心的原理的講解:Transaction與UTXO。這2個東西,是整個區塊鏈的核心的核心,後續一切,都基

ChainDesk : 二十四小時玩轉錢包開發

ChainDesk : 二十四小時玩轉比特幣錢包開發 第一章:【比特幣錢包開發一】開發比特幣錢包不得不瞭解的概念 http://www.chaindesk.cn/witbook/9/70?20190104meiti 第二章:【比特幣錢包開發二】通過助記詞擴充套件子地址的原理與編

交易延展性問題

修改自 交易延展性 (Transaction Malleability) 當交易被簽名時,簽名並沒有覆蓋交易中所有的資料 (比如位於 txin 中的 scriptSig,由於 scriptSig 中包含公鑰和簽名資料,不可能對自身自簽名),而交易中所有的