- 原文地址:Bitcoin in BigQuery: blockchain analytics on public data
- 原文作者:Allen Day
- 譯文出自:掘金翻譯計劃
- 本文永久連結:github.com/xitu/gold-m…
- 譯者:LeopPro
- 校對者:ALVINYEH SergeyChang
雲主導開發者 Allen Day、雲服務開發者 Colin Bookman。
加密貨幣已經吸引了技術專家、金融家和經濟學家的想象力。或許更有趣的是長期多樣化的區塊鏈應用。通過提高加密貨幣系統的透明度,其所包含的資料變得越來越易於訪問和使用。
現在比特幣區塊鏈資料可以通過 BigQuery 探索。所有的歷史資料都在 bigquery-公共資料:比特幣區塊鏈資料集中,該資料集每 10 分鐘更新一次。
我們希望通過使資料更加透明化,使資料使用者可以對加密貨幣系統運作有一個更深刻的理解,以及如何更好的利用他們造福社會。
有趣的查詢和分析
下面,我們將根據比特幣資料集展示一些有趣的查詢和視覺化資料。我們將著眼分析以下兩個熱門話題:
- 網路基礎(塊困難度)
- 交易視覺化(第一次易物交易)
區塊鏈網路統計資訊彙總
比特幣網路引數為基本的網路分析提供了基礎。例如,比特幣日傳送總數以及比特幣日接收總數表明網路中的經濟活動,並且這和比特幣的均價有關,根據梅特卡夫定律推測,一個網路的價值與其使用者數的平方成正比。
下圖顯示了比特幣網路日交易量趨勢:
下圖顯示了比特幣地址日接收量趨勢:
以下根據根據區塊鏈網路的第一原則,網路價值與交易比或 NVT 比制定的評估指標。該圖表顯示了隨時間的每日 NVT 比率:
例如比特幣挖礦演算法困難度等其他的比特幣引數,也可能具有基本的經濟重要性。下圖顯示了比特幣挖礦困難度與“比特幣”搜尋量的關係。
譯者注:以上 4 個實時資料圖可以在 Google 資料洞察中檢視。
交易視覺化
使用電子貨幣進行交易的一個後果是交易記錄公開且完備。據信,第一次用比特幣購買物品是在 2010 年 5 月 17 日。Laszlo Hanyecz 花了 10,000 BTC 買了兩個批薩,從地址 1XPT…rvH4 到地址 17Sk…xFyQ 的交易記錄在交易 ID 為 a107…d48d 的區塊鏈中。我們對 Hanyecz 地址購買批薩之前的 4 層比特幣轉移資料進行了視覺化分析。我們用這段程式碼生成了下圖。Hanyecz 的付款地址為紅色圓圈,而其他地址為藍色圓圈。箭頭表示披薩購買交易之前比特幣流動的方向。筆畫寬度大致與地址間比特幣移動量成正比。
區塊鏈勘探和異常檢測
在比特幣區塊鏈中,存在被新增到兩個區塊的交易。這不應該發生。這個查詢可以發現這種異常交易:
# 標準 SQL
SELECT
*
FROM (
SELECT
transaction_id,
COUNT(transaction_id) AS dup_transaction_count
FROM
`bigquery-public-data.bitcoin_blockchain.transactions`
GROUP BY
transaction_id)
WHERE
dup_transaction_count > 1
複製程式碼
怎麼會發生這種事情? 比特幣最初構建於 BerkeleyDB,它可以處理非唯一鍵。後來中本聰離開了比特幣專案組,新的開發團隊使用 LevelDB 替代了 BerkeleyDB。然而 LevelDB 無法處理唯一鍵,這使得開發者根據比特幣改善提案 BIP_0030 修改 比特幣原始碼。
儘管交易不再可能存在與多個塊中,但仍然有一些過往的交易存在這個問題。
為什麼 Google Cloud 上比特幣區塊鏈資料不可不看?
區塊鏈一般為低信任環境中的平等節點之間的溝通和協調提供解決方案。在金融服務,供應鏈,媒體和其他高度數字化行業中,區塊鏈正在嶄露頭角。比特幣區塊鏈旨在彌補金融業的缺陷,如中本聰寫的 Bitcoin genesis block。
比特幣可以被描述為一個不可變的分散式賬本,雖然它提供了 OLTP 功能(原子交易,資料永續性),但它對於定期儲存的具體或彙總資金流進行短週期報告的 OLAP (分析)能力非常有限。難以輕易地從區塊鏈構建報告可能會降低透明度並增加 BTC-USD 價格分析的難度以及 NVT 比等其他基本評估指標。
相比之下,BigQuery 具有強大的 OLAP 功能。, 我們在 Google Cloud 上構建了一個軟體系統:
- 從比特幣區塊鏈賬中實時提取資料
- 將資料儲存到 BigQuery 並將其解除規範化,以便更輕鬆地進行探索
- 使用 Data Studio 從資料中匯出分析報告
比特幣區塊鏈資料也可以通過 Kaggle 獲取。你可以使用 BigQuery Python 客戶端庫查詢 Kernel(Kaggle 的免費瀏覽器內開發環境) 中的實時資料。你可以 fork 一份這個例項 kernel 並用你自己的 Python 程式碼副本來進行試驗。
BigQuery 公共資料集
所有比特幣區塊鏈資料都批量載入到兩個 BigQuery 表:blocks_raw 和 transactions。新塊被廣播到比特幣網路時被追加到表中,因此這些表中的資料是最新的。
鳴謝
我們想感謝盡心盡力發表這篇博文的 Google 同事們。感謝 Minhaz Kazi(Data Studio 主導開發者),Megan Risdal(Kaggle 資料科學家),Sohier Dane(Kaggle資料科學家)和Hatem Nawar(雲服務工程師)
掘金翻譯計劃 是一個翻譯優質網際網路技術文章的社群,文章來源為 掘金 上的英文分享文章。內容覆蓋 Android、iOS、前端、後端、區塊鏈、產品、設計、人工智慧等領域,想要檢視更多優質譯文請持續關注 掘金翻譯計劃、官方微博、知乎專欄。