買以太坊 買以太坊
Ctrl+D 買以太坊
ads
首頁 > Filecoin > Info

區塊鏈:區塊鏈研究實驗室 | 使用MySQL存儲以太坊事件_MYS

Author:

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

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

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

取得所有令牌轉移信息

取得以太坊轉賬來源地址

取得以太坊轉賬目標地址

獲得特定金額的轉賬信息

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

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

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

李軍:雄安區塊鏈實驗室將成為區塊鏈研究與應用新高地:3月31日上午,雄安區塊鏈實驗室正式揭牌。雄安區塊鏈實驗室副主任李軍在揭牌時表示,雄安區塊鏈實驗室標志著雄安新區區塊鏈創新實踐進入了組織化、規模化落地階段;定位是優先研究服務于雄安新區新型智慧城市建設與數字經濟發展需要的區塊鏈技術、應用場景與運用理念。同時,聚集人氣,充分地開展交流合作,做連接地氣的應用示范,做出好的技術、好的產品,把好的經驗再向雄安以外推廣,服務更廣大的地域。主要工作包括區塊鏈技術攻關與研發、區塊鏈應用實踐、哲科與行業研究。據介紹,雄安區塊鏈實驗室的三個目標包括:1、成為區塊鏈研究與應用的新高地;2、成為一個開放的前沿創新基地;3、探索出實驗室經濟的新模式。(中國雄安官網)[2020/4/2]

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

聲音 | 環球印務:區塊鏈子公司正進行研發團隊的搭建:環球印務(002799.SZ)在互動平臺回復投資者時表示,公司與北京愛斯瑞特共同出資設立的涉及區塊鏈領域的新公司,旨在充分利用雙方股東在互聯網和供應鏈領域的數據優勢、平臺優勢、資源優勢、技術優勢和經驗優勢,促成區塊鏈技術在醫藥溯源、醫藥物流、供應鏈平臺等領域的開發和應用,共同培育和打造新一代區塊鏈技術產品和服務。目前新公司正在進行研發團隊的搭建及未來研發方向的確定,2020年將會進入實質研發階段。(新浪財經)[2020/2/25]

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

數據庫選擇

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

聲音 | 中國知識產權報:區塊鏈等新技術可在應對版權保護挑戰中發揮重要作用:《中國知識產權報》今日刊發題為“新技術為版權保護添動力”的評論文章。文章表示,5G、區塊鏈、人工智能等新技術的迅速發展,豐富了作品的傳播方式,新的商業模式和新的平臺應運而生。然而,網絡版權保護也因此面臨更為嚴峻的挑戰,網絡侵權盜版呈現片段化、階段化、分散化、規模化、國際化等特點,網絡已成版權保護的主戰場。面對不斷變化的盜版方式和不斷升級的侵權手段,如何保護版權人的合法權益,已經成為全球性難題。業內人士認為,要應對數字發展帶來的版權保護挑戰,除政府相關部門應加強跨區域合作外,區塊鏈、大數據和人工智能等新技術的運用也可以發揮重要作用。[2019/12/17]

我們應該儲存什么?

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

動態 | 廣發證券等券商已進軍區塊鏈:在第四屆智能金融國際論壇暨2019“領航中國”年度盛典上,廣發證券(000776.HK)首席風險官兼首席信息官辛治運表示,廣發非常重視區塊鏈對于證券行業的賦能,已成立以區塊鏈作為主攻方向的金融科技創新實驗室。據悉,廣發證券已于2018年10月研發出基于區塊鏈技術的ABS云平臺,以解決資產證券化業務中基礎資產數據不透明、難以驗證、流程復雜、信息化程度差等痛點,該平臺是國內首個基于區塊鏈技術管理和監控基礎資產運營情況的CMBS項目,每月大約有6000條數據上鏈存證。此外,中信證券(600030.SH)也在近期明確表示,在區塊鏈方面已經嘗試研發。頭部券商紛紛布局,區塊鏈或成未來行業發展的核心競爭力。(金融界)[2019/12/10]

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

工信部劉權:區塊鏈在法律領域的落地可與電子認證相結合:工信部賽迪區塊鏈研究院院長劉權稱,區塊鏈發展到現在,底層的技術和CA電子認證是一樣,電子認證是2006年中國工信部發出第一張牌子,到現在已經經過了十二三年,應該說這個行業非常成熟,區塊鏈經過一段時間的發展前景也非常好。區塊鏈發展到現在,最大的一個問題,就是經常會出現私鑰丟失或者密碼忘記的情況,要解決這個問題就可以把區塊鏈和電子認證結合起來,就可以得到迎刃而解。[2018/5/31]

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

以下是用于創建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:區塊鏈MYSSONSTE區塊鏈工程專業學什么及就業方向MAMYSHIBA價格Bart Simpson CoinSTEER

Filecoin
ANC:Perlin(PERL)項目上線Binance Launchpad_PERL

親愛的用戶: Binance即將上線第八期Launchpad項目-Perlin,并開啟BNB專場!此次將基于搖號抽簽和空投模式,BNB持倉快照將從2019年08月09日上午08:00開始計算.

1900/1/1 0:00:00
USD:ZG.com“二十城計劃”北京站?將于7月13日舉辦_RHOUSDT

親愛的用戶: 您好! 由ZG.com主辦的“二十城計劃”北京站將于7月13日舉行,本次活動旨在分享區塊鏈領域發展最前沿的理念和成果,洞悉金融科技最新發展趨勢,聚焦探討熱點話題.

1900/1/1 0:00:00
ZG.COM 于8月7日14:00開啟EDH/USDT交易對公告

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

1900/1/1 0:00:00
MEX:FMex提案眾議小組成員招募公告_mex幣簡介

親愛的社區用戶: 經過FMex工作組多次探討,FMex工作組整體上已對初期的社區定位達成共識。依據FMex工作組成員表決結果,在社區發展初期,將盡可能地發揮團隊的中心化效率優勢,社區則進行輔助推.

1900/1/1 0:00:00
SDT:JEX上線月LTC期權0910公告_PUSD幣

LTC看漲期權 代碼月LTC看漲0910期權標的LTC合約類型歐式看漲期權計價單位USDT最小價格單位0.0001USDT合約比例20:1.

1900/1/1 0:00:00
IBOX:向丹:我們在聊去中心化時都在聊什么?_BOX

關于去中心化這個話題已經討論了很久,很多想法、很多邏輯以及框架都很有意思,每個人有每個人的看法,在我也分享一下我對去中心化的一些思考和感悟.

1900/1/1 0:00:00
ads