比特幣價格 比特幣價格
Ctrl+D 比特幣價格
ads
首頁 > TRX > Info

區塊鏈:區塊鏈研究實驗室 | 使用MySQL存儲以太坊事件_區塊鏈專業是什么意思

Author:

Time:1900/1/1 0:00:00

在本文中,我將演示一種緩存以太坊事件的簡單方法。我只想說,通常我們將事務用于鏈下操作,例如跟蹤令牌的傳輸或檢索特定事務的篩選列表,就像一個SQL查詢一樣。

假設我們想要創建一個跟蹤令牌傳輸的網站,Etherscan。我們只需要一波簡單的操作,比如:

取得所有令牌轉移信息

取得以太坊轉賬來源地址

取得以太坊轉賬目標地址

獲得特定金額的轉賬信息

在特定時間范圍內獲得轉移信息

在web3中是有getPastEvents方法,其示例用法是:

這種方法的主要問題是,隨著區塊鏈的增長,速度可能會變慢,尤其是如果您不運行自己的以太坊節點,并且使用像infura或MyEtherApi這樣的公共提供者。

動態 | 區塊鏈商業支付公司Paystand完成2000萬美元B輪融資:金色財經報道,區塊鏈商業支付公司Paystand完成2000萬美元B輪融資,參投方包括新投資者DNX Ventures、Battery Ventures、Epic Ventures、Commerce Ventures和Wildcat Ventures,以及現有投資者Leap Global Partners和BlueRun Ventures。Paystand聲稱,其付費即服務(Payments-as-a-Service)模型和基于區塊鏈的技術使復雜的商業交易和支付對企業來說就像Venmo于消費者而言一樣便捷。其提供了一個經過資金驗證的區塊鏈實時支付網絡,可以立即在企業之間轉移資金,并承諾為用戶節省50%的接受付款和處理發票的費用,同時將未付天數減少逾60%。[2020/2/7]

接下來,幾乎不可能實現一些比較復雜的查詢,因為篩選對象的功能非常有限。

聲音 | 諾獎得主托馬斯·薩金特:中國央行的區塊鏈技術已經做得很好:據21世紀經濟報道消息,12月5日,在“2019南方財經國際論壇”上,經濟學諾獎得主托馬斯·薩金特表示,講到區塊鏈,人們覺得這是很驚天動地的想法。但如果開一家大公司,其實也需要在公司不同的部門之間進行分享。我們用計算機的時候,其實電腦程序內部也做了計算機本身的分享和驗證。如果你深挖下去,區塊鏈的想法沒有一開始說的那么驚天動地,其實不同的公司或者國家本身也有這樣分享的機制。現在我們面臨的一個情形,是可以把事情做得更好、更有效率,交易更簡便,可是有很多的國家不愿意做,這是他們自己掌控的一個權力。事實上,有很多金融管理機構對這個技術感興趣,我覺得中國央行的技術已經做得很好,他們對區塊鏈也比我更加了解。他還指出,數字貨幣是和信用體系息息相關的,比如存款或者買保險,還是會有自己的一些存款信息和其他的信用信息。美國的銀行,還有美國的金融機構都在做這個事情,政府機構也在研究這個問題,我們能不能有相關的管理系統、管理流程體系和這個技術匹配。[2019/12/6]

此外,已經寫入區塊鏈的事件無法更改,只能隨時間添加新記錄。這個和其他事實使事件成為緩存的完美目標。

科羅拉多州通過支持利用區塊鏈保管政府記錄和網絡安全的法案:據cointelegraph消息,美國科羅拉多州參議院5月7日通過了一項法案,涉及利用區塊鏈技術進行政府記錄的保管及網絡安全。參議院法案(SB)18-086要求州長信息技術辦公室(OIT),州政府部門和監管機構部門考慮使用加密技術和區塊鏈技術,以保護機密狀態的記錄免受犯罪,未經授權,無意的操縱或盜竊。[2018/5/9]

數據庫選擇

在這個例子中,我們將使用mysql作為保存事件記錄的數據庫。MySQL有能力存儲原始JSON,然后使用JSON對象的屬性編寫查詢,就好像它們是普通的SQL列一樣。

我們應該儲存什么?

讓我們仔細看看getPastEvents方法的結果,以實現我們使用的數據。我以Binance代幣轉移為例。每個事件對象都具有以下結構:

中組部“千人計劃”專家蔡維德:區塊鏈技術引起的變革需要接受過程:中組部“千人計劃”專家、北航數字社會與區塊鏈實驗室主任、美國亞利桑那州立大學榮譽終身教授蔡維德日前在接受《人民創投·區塊鏈》采訪時說,區塊鏈技術有可能會是一場改變生活的應用革命,就像之前燈泡、汽車、火車、飛機等技術文明類似,會逐漸滲入到人類社會的各個方面。但正如每次社會技術革命都需要時間過程一樣,區塊鏈技術引起的變革也將需要一個長遠的接受過程。眼下,區塊鏈技術遠未成熟,至少還需要10至20年的研究。[2018/4/11]

如您所見,事件參數存儲在returnValues屬性中。blockNumber,transactionHash,logIndex也可能有用,我稍后會告訴你。

我們的目標是將這些JSON對象編寫到數據庫中,并實現可以無縫替換標準web3的getPastEvents方法的簡單訪問方法。

谷歌宣布將利用區塊鏈技術增強其安全系統:據SC Media US報道,谷歌宣布將增強其安全系統,該系統囊括DDoS保護、高透明度、區塊鏈技術等一系列特點。據悉,谷歌將會發布超過20份與安全相關的新聲明,將涵蓋整個Google Cloud產品。[2018/3/23]

以下是用于創建Transfer表的SQL腳本。

需要說明的一些重要事項:

json列創建為JSON類型。這允許我們使用特殊語法創建自動生成的列。

from,to,value?-這些是自動生成的列。這個表達式起初看起來很復雜,但實際上它很簡單。例如,從列值等于存儲在json列中的對象的returnValues.from屬性。

txHash和logIndex。這些屬性組合在一起可識別每個事件對象我們需要那些為行創建唯一索引,從而防止偶爾重復事件。

我們還可以選擇添加數據庫索引來提高性能。例如,對于to列

案例實踐

先決條件

Node.js的我使用的是8.4.0版。

Web3npm包與區塊鏈進行交互。我們需要特定版本1.0.0-beta.35。在嘗試檢索某些事件時,最新版本beta.36的使用導致“返回值無效,是否運行OutofGas”錯誤。

3.要在JavaScript中使用MySQL數據庫,我們應該安裝mysql包?

?4.最后一個-?MySQL服務器。值得一提的是,我們將使用MySQL5.7作為最新的8.0版本似乎與mysql包兼容。

MySQL交互

我們將利用連接池對此示例進行查詢。

使用promisified版本的查詢方法會更方便?

現在我們可以使用以下代碼將記錄插入之前創建的傳輸表中。?

在這里,我們還檢查可能的重復行插入。現在我們不希望在這種情況下做任何特別的事情,可能我們已經提前寫過這些重復事件或類似的事情。所以我們只考慮處理這種異常。

緩存功能

讓我們構造一個智能合約對象來從中檢索事件

?我們只能在abi參數中包含Transfer事件接口,如下所示:

這是緩存功能的基本版本。首先,我們獲取事件對象,然后逐個將它們寫入數據庫。?

定期區塊鏈掃描

現在讓我們將其擴展為一個簡單的后臺腳本,該腳本不斷掃描區塊鏈以查找發出的事件。

一些實用功能:

第一個是setTimeout的簡單異步/等待實現。第二個用于fn的無限周期調用-工作函數。

有了這些輔助功能,我們的后臺掃描儀看起來非常簡單

讓我解釋'latestEthBlock1'的事情。Web3的getPastEvents返回在范圍內寫入的事件,包括邊界。因此,如果沒有這個遞增,下一個cacheEvents調用將再次將寫入latestEthBlock的事件作為結果的一部分返回。

雖然由于實現了唯一索引,重復事件不會插入到數據庫中,但我們仍然不希望完成這些多余的工作。

對于簡單的后臺掃描程序,此實現應該足夠了。但是,總有改進的余地。稍后我們會回到它。現在讓我們快速了解一下我們現在可以利用這些數據做些什么。

事件檢索

以下是選擇從特定地址進行的轉移的功能示例:

我們使用生成的列查詢數據庫。這里最值得注意的部分是函數的結果看起來就像web3的getPastEvents的結果。它使得重構當前代碼變得更加容易。

進一步改進

事件對象包含許多可能對您的應用程序完全無用的屬性。在寫入數據庫之前刪除多余部分會更好。這樣我們就節省了很多空間。

您可能還注意到,當前版本的掃描程序在每次重新啟動時都以區塊#0開始。在一直掃描到當前塊時,它會嘗試將重復記錄插入數據庫。我們可以通過查詢數據庫中的最新緩存塊來消除那些多余的工作。

不是從塊#0開始掃描也是很好的,但至少從部署合同時的塊開始掃描。為簡單起見,您可以使用etherscan.io獲取此信息。

這里我們再次使用MySQLjson函數來獲取事件對象的blockNumber屬性。

然后更換舊的掃描功能

新的掃描功能?

?結論

最后,我們創建了一個簡單但有效的事件掃描程序,可以將事件連續緩存到MySQL數據庫中。

本文轉載公眾號:區塊鏈研究實驗室,專注區塊鏈技術,產品社群,經濟模型等全方位的知識體系輸出,為大家帶來不一樣的社群學習體驗。歡迎聯系作者微信加入社群:csschan1120???

Tags:區塊鏈ENTVENVENT區塊鏈專業是什么意思Talent Coinbitvenus交易所那國的Juventus Fan Token

TRX
Aeron 航空鏈慶祝成立兩周年: CBM獲得廣泛應用、航空鏈游戲以及其他重要成就

兩年多來,Aeron航空鏈一直在成功地開發軟件,以提高通用航空的安全性和便利性。過去一年的重大事件,包括促進通用航空安全的航空鏈飛行員應用程序新版本,以及CryptoBonusMiles(CBM.

1900/1/1 0:00:00
KAN:關于開放KAN充值及其交易的公告_TKA

尊敬的EXX用戶: ?????您好!根據市場的情況及用戶的建議,EXX將于香港時間2019年7月4日15:00開放KAN的充值業務.

1900/1/1 0:00:00
ZG.COM 于5月28日14:00開啟IWD/USDT交易對公告

親愛的用戶: 您好! ZG.COM將于2019年5月27日14:00開放IWD的充提業務,于5月28日14:00開啟IWD/USDT交易對.

1900/1/1 0:00:00
ZG.COM 于7月4日14:00開啟LTK/USDT和LTK/CNZ交易對公告

親愛的用戶: 您好! ZG.COM將于2019年7月3日14:00開放LTK的充提業務,于7月4日14:00開啟LTK/USDT和LTK/CNZ交易對.

1900/1/1 0:00:00
NNP:關于全球首發上線NNP及其交易的公告_NNP幣

尊敬的EXX用戶: ?????您好!根據市場的情況及用戶的建議,EXX將于香港時間2019年7月13日13:00開放NNP的充值業務.

1900/1/1 0:00:00
ZG.COM 于6月1日15:00開啟VDS/USDT交易對公告

親愛的用戶: 您好! ZG.COM將于2019年5月31日15:00開放VDS的充提業務,于6月1日15:00開啟VDS/USDT交易對.

1900/1/1 0:00:00
ads