在本文中,我將演示一種緩存以太坊事件的簡單方法。我只想說,通常我們將事務用于鏈下操作,例如跟蹤令牌的傳輸或檢索特定事務的篩選列表,就像一個SQL查詢一樣。
假設我們想要創建一個跟蹤令牌傳輸的網站,Etherscan。我們只需要一波簡單的操作,比如:
取得所有令牌轉移信息
取得以太坊轉賬來源地址
取得以太坊轉賬目標地址
獲得特定金額的轉賬信息
在特定時間范圍內獲得轉移信息
在web3中是有getPastEvents方法,其示例用法是:
這種方法的主要問題是,隨著區塊鏈的增長,速度可能會變慢,尤其是如果您不運行自己的以太坊節點,并且使用像infura或MyEtherApi這樣的公共提供者。
美股區塊鏈板塊普跌 Marathon Patent跌近10%:行情顯示,美股區塊鏈板塊普跌,Marathon Patent跌近10%,Riot Blockchain跌8.54%,SOS跌6.38%,Square跌5.62%,Coinbase跌5.26%,迅雷跌3.66%。[2021/5/13 21:55:35]
接下來,幾乎不可能實現一些比較復雜的查詢,因為篩選對象的功能非常有限。
此外,已經寫入區塊鏈的事件無法更改,只能隨時間添加新記錄。這個和其他事實使事件成為緩存的完美目標。
數據庫選擇
在這個例子中,我們將使用mysql作為保存事件記錄的數據庫。MySQL有能力存儲原始JSON,然后使用JSON對象的屬性編寫查詢,就好像它們是普通的SQL列一樣。
齊魯晚報:山東能否造出區塊鏈領域的阿里:齊魯晚報今日撰文《山東能否造出區塊鏈領域的阿里》,文章指出2018年9月,濟南市高新區探索了區塊鏈技術在政務服務中的應用,誕生了全國第一張基于區塊鏈技術的數字營業執照,創造了企業開辦最短35分鐘,平均113分鐘的“濟南速度”。今年青島提出要建設世界工業互聯網之都,青島市市長孟凡利在全國兩會上表示,今年青島將發布500個工業賦能場景和200個未來城市場景,通過開放場景吸引頭部平臺廠商入局。現在,華為、騰訊都在開發基于區塊鏈技術的可信傳遞平臺和產品,而一些地方政府動作慢背后的深層原因,在于觀念和意識上的“南北差異”——北方人總是想,這件事別人做過沒有,別人沒做過,我不做;南方人在想,這件事該不該做?有沒有可行之道?如果這兩個OK,那就做吧。現在區塊鏈產業發展藍圖上,數字保險箱已在廢鋼交易、區塊鏈金融、供應鏈金融、信用證通知、數字證書、政務材料可信傳遞、電子病歷、企業開辦一次辦成、適齡兒童入學、成品油溯源、農民工欠薪、勞動人事仲裁、營業執照可信流轉、農產品溯源等30多個領域廣泛應用。[2020/7/18]
我們應該儲存什么?
動態 | 中裝建設與農行簽訂合作協議 對接區塊鏈供應鏈金融平臺:中裝建設與農業銀行深圳市分行于近日簽署《戰略合作協議》,農業銀行同意向公司提供人民幣60億元的意向性信用額度,并與公司進行區塊鏈金融方面的合作。農行通過系統對接方式接入玳鴿信息相關區塊鏈供應鏈金融平臺,基于平臺數據對公司子公司、參控公司、上下游客戶提供供應鏈金融相關融資支持;公司子公司、參控公司能在農行的授權范圍內選擇相關貸款信用品種。[2020/1/9]
讓我們仔細看看getPastEvents方法的結果,以實現我們使用的數據。我以Binance代幣轉移為例。每個事件對象都具有以下結構:
如您所見,事件參數存儲在returnValues屬性中。blockNumber,transactionHash,logIndex也可能有用,我稍后會告訴你。
聲音 | 福建區塊鏈協會會長陳意斌:中國未來的市場會更多更迅速的產生區塊鏈應用:金色財經訊,2019年5月31日,“2019中國國際區塊鏈+商業未來發展峰會”在福建廈門國際會展中心開幕。福建省區塊鏈協會會長陳意斌在會中表示,前段時間看到一組來自國際數據公司IDC的一個數據,提到了2019年全球區塊鏈支出將超過29億美金,接下來的5年這一數字將會以76%的速度增長,預計2020年整個全球的區塊鏈的支出為124億美元。從這個數據中可以看出,各行各業在區塊鏈的投入不斷的增加。一個行業支出不斷的增加,也意味著這個行業將進入迅速的發展階段。目前中國排名第三,我們可以看到中國未來的市場會更多更迅速的產生區塊鏈應用。[2019/5/31]
我們的目標是將這些JSON對象編寫到數據庫中,并實現可以無縫替換標準web3的getPastEvents方法的簡單訪問方法。
普京經濟顧問:俄羅斯正在考慮采用區塊鏈技術協理政務:區塊鏈領導人峰會近日在蘇黎世召開,俄羅斯總統普京經濟顧問Sergey Glazyev做主旨演講,他表示俄羅斯正在考慮采用區塊鏈技術協理政務,打擊腐敗、各類金融詐騙。俄羅斯作為歐亞經濟聯盟的一員,正在討論加密技術在本國法幣上的應用。[2018/3/17]
以下是用于創建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:區塊鏈MYSENTSON區塊鏈專業畢業后到底做什么MAMYSHIBA幣Yf.agreementboson幣v2
視頻談話類欄目《知行區塊鏈》由中國區塊鏈測評聯盟、藍石科技出品,專注“區塊鏈產業落地應用“,探明有效路徑,與行家里手一起,圍繞傳統產業如何與區塊鏈融合發展進行探討研究.
1900/1/1 0:00:00近日幣安交易所首席執行官趙長鵬接受了coindesk的采訪,他在采訪中提到了幣安在倫敦開設辦事處的設想、英國脫歐的影響以及Libra.
1900/1/1 0:00:00親愛的用戶:您好!ZG.COM將于2019年7月18日14:00開放VT的充提業務,于7月19日14:00開啟VT/USDT交易對.
1900/1/1 0:00:00在區塊鏈技術急速發展,行業參與者越來越多,競爭日益激烈的當下,如何打破傳統思維定式,積極利用業內資源優勢,不斷提升企業的創新能力、核心競爭力、行業帶動力,是當下每一個行業參與者都要思考的問題.
1900/1/1 0:00:00尊敬的IDAX用戶:??IDAX即將上線MACH,并開放MACH/BTC、MACH/ETH、MACH/USDT交易市場.
1900/1/1 0:00:00在老美上次降息后我們并沒有追隨其步伐,仍然堅持穩健的貨幣政策,然而人民幣開始了持續下跌,在8月5日上午美元兌人民幣在岸匯率和離岸匯率雙雙“破7”,很快引發了恐慌,市場避險情緒上升.
1900/1/1 0:00:00