以太幣交易所 以太幣交易所
Ctrl+D 以太幣交易所
ads
首頁 > FIL幣 > Info

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

Author:

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

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

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

取得所有令牌轉移信息

取得以太坊轉賬來源地址

取得以太坊轉賬目標地址

獲得特定金額的轉賬信息

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

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

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

AGM Group宣布與Meten就區塊鏈和加密貨幣采礦業務建立戰略合作關系:金色財經報道,專注于提供金融科技軟件服務和生產高性能硬件和計算設備公司AGM Group Holdings Inc今天宣布已與Meten Holding Group Ltd建立戰略合作伙伴關系。該合作伙伴關系將主要專注于區塊鏈應用的研發支持,以及建立加密貨幣挖礦的供應鏈。該協議包括一份來自 Meten 的價值1,200 萬美元的1,500 臺比特幣礦機的初始訂單。Meten 還可以選擇購買額外的機器。 (prnewswire)[2021/10/26 20:59:03]

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

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

聲音 | 深圳軟件園王輝:區塊鏈應用場景基本實現向金融服務延伸:日前 “第十四屆深圳新興技術創新交流會”在在深圳舉辦。深圳軟件園管理中心主任王輝表示,區塊鏈技術就像更先進的“基因改造技術”,開創了一種在不可信的競爭環境中低成本建立信任的新型計算范式和協作模式,憑借其獨有的信任建立機制,實現了穿透式監管和信任逐級傳遞。從全球來看,區塊鏈應用場景已基本實現從最初的數字貨幣和礦機制造向金融服務的延伸,目前正在向供應鏈、數字版權、食藥可追溯等多領域持續滲透,在政策、資金和市場的多重推動之下,未來產業發展動力充足。(寶安日報)[2019/12/18]

數據庫選擇

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

聲音 | 內羅畢大學Bitange Ndemo:非洲不應該錯過區塊鏈技術:肯尼亞內羅畢大學商學院副教授Bitange Ndemo發文談論區塊鏈的發展以及其主持經合組織全球區塊鏈政策論壇小組討論的收獲。他提到,根據歐盟區塊鏈天文臺和論壇2019年5月的報告《區塊鏈和數字》,加泰羅尼亞身份識別項目符合歐盟為鼓勵數字身份而開發的標準。該報告旨在通過利用DLT將違規行為降至最低,幫助簡化歐盟使用的身份系統。他們已經確定,區塊鏈是發展數字身份系統、提高憑證和促進智能支付的強大工具。

他表示,在這些新興技術中,非洲有最后一次機會看到在不具備傳統系統、年輕人口和通過互聯網獲取知識情況下的優勢,以促進非洲大陸的經濟發展,實現更大的繁榮。為了實現這一點,非洲聯盟必須帶頭制定充滿活力的政策,個別國家必須做出正確的決定,投資于信息和通信技術(ICTS),并促進其可及性和可負擔性。毫無疑問,區塊鏈和其他指數級技術正在全世界獲得認可。我們不能再落后了。(The New Tmes)[2019/9/22]

我們應該儲存什么?

動態 | 區塊鏈技術公司Bitfury發布比特幣閃電網絡支付工具:據coindesk消息,區塊鏈技術公司Bitfury發布了一套用于比特幣閃電網絡支付的工具。雖然該網絡仍在開發中,但Bitfury今日宣布了一個全面的產品清單以支持該技術,包括開源閃電錢包和商家接受付款的支付處理器。它還發布了一個名為“The Peach”的公共閃電網絡節點,讓比特幣用戶打開或創建支付渠道。[2019/1/23]

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

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

聲音 | 張建華:區塊鏈有希成為綜合能源服務市場交易平臺的支撐技術:據中國經濟網消息,國家973計劃能源專家咨詢組成員、中國微能源網產業發展聯盟專家指導委員會主任張建華近日表示,區塊鏈技術能夠支撐海量用戶點對點交易,在去中心化的條件下,實現可信交易。有希望成為未來綜合能源服務市場交易平臺的支撐技術。可以用來碳排放權認證,去中心化多能源系統協同,在微能源網群中,采用區塊鏈技術,不同能源技術實現信息、技術、成本,實時生成各個地區各類能源的邊際交割。去中心化分布式記賬,用戶側法典,用戶側占能怎么在去中心化情況下實現超大規模的交易。人工智能深度機器學習結合區塊鏈技術能夠支撐海量用戶的點對點的交易,能夠在區域交易中心的條件下實現可信交易。[2018/12/6]

我們的目標是將這些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:區塊鏈MYSSTESON區塊鏈dapp開發語言MYST幣stETHGSONIC價格

FIL幣
ZG.COM 于6月11日14:00開啟TSR/CNZ交易對公告

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

1900/1/1 0:00:00
ZG.COM NEW 打新計劃第7期項目PLD申購規則(6月3日12:00開啟公開申購)

總體原則: 申購金額越大,分配額度越多;參與活動越多,分配額度越多。 一、申購流程 1.16月3日12點-14點期間可以認購,用戶選擇申購額度,扣除申購資金; 1.214點結束下單; 1.316.

1900/1/1 0:00:00
分析:比特幣和黃金在過去三個月走勢相似,相關性飆升至0.827_比特幣

據BNNBloomberg報道,隨著金價攀升至1500美元的心理關口,另一種投機性資產也在上演復蘇。比特幣距離其歷史峰值還有很長一段路要走;事實上,它低于最近6月份的高點.

1900/1/1 0:00:00
?支撐POW安全性的不是算力 而是信仰_POW

支撐POW安全性的不是算力,而是信仰;人們嚴重高估了POW的安全性;POS的存在只需要一個理由:它能解決POW51%攻擊的隱患;StakingEconomy對POS是有害的.

1900/1/1 0:00:00
EtherDelta以德“羅生門”:內訌與金融詐騙_ETH

時隔一年之久,去中心化交易所EtherDelta實際控制人陳軍跑路事件終于有了新的進展——已在江蘇省常州市依法立案.

1900/1/1 0:00:00
ZG.COM 于6月25日14:00開啟BTH/USDT和BTH/CNZ交易對公告

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

1900/1/1 0:00:00
ads