譯文出自:登鏈翻譯計劃
譯者:Tiny熊
序言:先閱讀一下以太坊虛擬機,可能會有所幫助,在本文中,我會跳過基礎知識直接研究。
在傳統編程中,應用程序經常使用日志來捕獲和描述特定時刻的情況。這些日志通常用于調試應用程序,檢測特定事件或將日志中發生的事情通知查看者。事實證明,在編寫智能合約或與智能合約進行交互時,日志也非常有用!那么以太坊是如何做的呢?
以太坊上的日志
EVM當前有5個操作碼用于觸發事件日志:LOG0,LOG1_,LOG2,_LOG3和LOG4。
這些操作碼可用于創建“日志記錄”。日志記錄就是用于描述智能合約中的事件,例如代幣轉移、所有權變更等。
以太坊黃皮書-拜占庭版本69351d5(2018-12-10)
每個日志記錄都包含“主題(topics)”和“數據”。主題是32字節(256位)的“詞”,用于描述事件中發生的事情。不同的操作碼(LOG0…LOG4)來描述需要包含在日志記錄中的主題數。例如,“LOG1”包括“一個主題”,而“LOG4”包括“四個主題”。因此,單個日志記錄中可以包含的最大主題數是四個。
Infosys與VMware合作推出基于區塊鏈的個人記錄管理解決方案:8月26日消息,印度 IT 咨詢公司 Infosys 已基于 VMware Blockchain for Ethereum(測試版)推出個人記錄管理解決方案,用于驗證出生證、結婚證和其他重要個人記錄。數字形式的記錄可以通過使用區塊鏈賬本以完全安全的方式進行無縫驗證和認證,確保記錄的不可更改性和驗證過程的透明度。
VMware Blockchain 具有數據完整性、隱私性、加密身份驗證和所有交易的跟蹤,以及高性能、簡化的部署升級和企業級支持。它支持面向未來的架構,與 DAML、Solidity 等各種去中心化應用兼容。[2022/8/26 12:49:38]
以太坊日志記錄中的主題
日志記錄的第一部分由一組主題組成。這些主題用于描述事件。第一個主題通常為事件名稱及其參數類型(uint256,string等)簽名(keccak256哈希)。一個例外是觸發“匿名事件”沒有事件簽名。由于主題只能容納32個字節的數據,因此無法將數組或字符串等的內容用作主題。而是應將其作為數據包括在日志記錄中,而不是作為主題。如果要嘗試包含大于32個字節的主題,則該主題需要被hash計算。因此,僅當你知道原始輸入時,才可以知道此哈希表示的內容。
加密社區回應查理·芒格抨擊加密貨幣:在他這個年齡無法理解新技術并不奇怪:12月3日消息,億萬富翁投資者查理·芒格 (Charlie Munger) 周五在Sohn Hearts and Minds會議上發表講話,強調了他對加密貨幣的普遍厭惡及其在市場上造成的淘金熱。他永遠不會參與這個市場,并希望加密貨幣沒有被發明。他表示贊同中國的加密禁令,認為這做出了正確的決定。
加密社區的許多人隨后對芒格對比特幣的最新評論做出了反應,許多人指出,在他這個年齡無法理解像比特幣這樣的新技術并不奇怪。Synthetix創始人Kain Warwick還強調,盡管芒格愿意通過賣好東西賺錢,但伯克希爾哈撒韋公司是可口可樂的最大股東,可口可樂被認為是“許多健康問題的重要貢獻者”。加密和區塊鏈播客系列The Crypto Corner的項目總監Jamil Hasan指出,芒格不投資加密不應該讓這個行業感到困擾:“如果查理芒格不購買加密,我沒關系。我敢肯定,查理也買了一些我不需要的東西。”(Cointelegraph)[2021/12/3 12:49:39]
總之,主題應該僅用于需要搜索查詢(例如:地址)的數據。可以將主題視為事件的索引鍵,它們都映射到相同的值,接下來將討論。
動態 | 零售巨頭目標正在研究基于區塊鏈的供應鏈管理解決方案:據CoinDesk 6月10日消息,零售巨頭Target正致力于區塊鏈驅動的供應鏈管理解決方案。根據該公司自己的企業博客,它最近開放該項目作為供應商認證的區塊鏈解決方案,稱為ConsenSource。它還承諾支持Hyperledger Grid項目——一個供應鏈框架,參與者包括Target的供應商之一Cargill以及Intel和Bitwise IO。Target一直在研究這項技術,并試圖弄清楚哪些數據可以在分布式分類賬上共享。[2019/6/10]
以太坊日志記錄中的數據
日志記錄的第二部分包含額外的數據。主題和數據在一起組成日志記錄,主題和數據每自有其優點和缺點。例如,主題是可搜索的,但數據卻不能。而數據比主題“便宜得多”。此外,盡管主題最多有4個,但數據卻沒有限制,這意味著它可以包括大量或復雜數據,例如數組或字符串。因此,事件數據(如果有)可以視為_值_。
讓我們看一些示例,看看主題,數據和日志記錄是如何使用的。
觸發事件
以下實現了ERC20的代幣合約,使用了Transfer事件:
德國柯萊特咨詢集團推出區塊鏈醫療信息管理解決方案:據cointelegraph報道稱,德國柯萊特咨詢集團宣布推出基于區塊鏈技術的敏感醫療數據管理解決方案。利用該集團的Hypertrust X-Chain數據管理系統,柯萊特咨詢集團希望為整個醫療行業提供一個安全的數字平臺,便于交換患者數據。基于區塊鏈技術的去中心化數據存儲,該系統能夠讓所有參與治理過程的各方在授權的條件下獲得患者信息。[2018/4/11]
由于這不是匿名事件,因此第一個主題將包括事件簽名:
現在,讓我們看一下此Solidity事件的參數(from_,to,_value):
由于前兩個參數聲明為indexed,因此被視為主題。最后一個參數沒有indexed,它將作為數據(而不是單獨的主題)。這意味著我們可以進行這樣的搜索:查找所有從地址0x0000...到地址0x0000…的轉賬日志,或者是“所有轉賬到地址0x0000…的日志”,但沒法搜索“轉賬金額為x的轉賬。我們知道了此事件將具有3個主題,這意味著此日志記錄操作將使用LOG3操作碼。
現在,我們只需要了解如何包含數據(即最后的參數)即可。LOG3需要5個參數:
中國紀檢監察報:中國區塊鏈發展的最大挑戰是“如何讓監管理解區塊鏈并適度監管”: 中國紀檢監察報發文表示,區塊鏈底層技術獲得實質性突破之前的這個階段,恰恰是一個戰略機遇期。如果中國區塊鏈行業能緊密合作,監管能夠適當包容、鼓勵,中國在區塊鏈領域引領全球指日可待。實際上,區塊鏈技術最終必然演化為“監管融入技術”的模式,區塊鏈的難以篡改、共享賬本和分布式的特性,更易于監管介入,獲得更加全面實時的監管數據。讓監管機構本身也參與到技術中去,通過技術本身實現對技術的監管,最終化解區塊鏈與監管的沖突。[2018/3/6]
LOG3(memoryStart,memoryLength,topic1,topic2,topic3)
通過以下方式從內存中讀取事件數據:
memory
幸運的是,像Solidity,Vyper或Bamboo這樣的高級智能合約程序設計語言將為我們處理將事件數據寫入內存的過程,我們可以在觸發日志時直接將數據作為參數傳遞。
檢索事件日志
通過使用web3JavaScript庫,可用于與本地或遠程以太坊節點進行交互,我們能夠訂閱新的事件日志:
每當發生新的SAI代幣轉賬時,此代碼都會通知我們,接收到事件通知,這對很多應用程序都很有用。例如,一旦你在以太坊地址上收到代幣,錢包界面就可以提醒你。
日志的gas成本
根據黃皮書、日志的基礎成本是375gas。另外每個的主題需要額外支付375gas的費用。最后,每個字節的數據需要8個gas。
這實際上是很便宜!可以計算一下一個ERC-20代幣轉移事件的成本。首先,基本成本為375gas。其次,“轉移”事件包含3個主題,這是另外的375_3=1125gas。最后,我們為所包含的每個數據字節添加8gas。由于數據僅包含ERC-20轉賬的數量,最大為32字節,因此用于記錄日志數據所需的最大gas量為8_32=256gas。這總計要花費1756gas的總gas成本。作為對比參考,標準的以太幣(非代幣)轉賬要花費21000gas,是事件成本的十倍以上了!
如果我們假設gas價格為1gwei,那么操作的總成本將為1756gwei,相當于0.000001756ETH。如果以太坊的當前價格在200美元左右,那么總計為$0.0003512。請記住,這是在全球范圍內將數據永久存儲的費用。
聲明:這只是日志記錄操作本身的成本。任何以太坊交易至少需要21000gas,并且交易的輸入數據每字節最多花費16gas。通常,要轉賬和日志記錄ERC-20代幣,費用在40,000–60,000gas。
結論
日志是一種以少量價格將少量數據存儲在以太坊區塊鏈上的優雅方法。具體來說,事件日志有助于讓其他人知道發生了什么事情,而無需他們單獨查詢合約。
參考文獻
Wood,G.(2014)。以太坊:一個安全的去中心化通用交易賬本
以太坊基金會Solidity文檔
Web3文檔
本翻譯由CellNetwork贊助支持。
來源:https://medium.com/mycrypto/understanding-event-logs-on-the-ethereum-blockchain-f4ae7ba50378
參考資料
登鏈翻譯計劃:https://github.com/lbc-team/Pioneer
Tiny熊:https://learnblockchain.cn/people/15
以太坊虛擬機:https://medium.com/mycrypto/the-ethereum-virtual-machine-how-does-it-work-9abac2b7c9e
以太坊黃皮書:https://ethereum.github.io/yellowpaper/paper.pdf
keccak256:https://en.wikipedia.org/wiki/SHA-3
Solidity:https://learnblockchain.cn/docs/solidity/
Vyper:https://github.com/ethereum/vyper
Bamboo:https://github.com/cornellblockchain/bamboo
web3:https://learnblockchain.cn/docs/web3.js/
Wood,G.(2014)。以太坊:一個安全的去中心化通用交易賬本:https://ethereum.github.io/yellowpaper/paper.pdf
以太坊基金會Solidity文檔:https://solidity.readthedocs.io/en/latest/
Web3文檔:https://learnblockchain.cn/docs/web3.js/
CellNetwork:https://www.cellnetwork.io/?utm_souce=learnblockchain
本文來源于非小號媒體平臺:
登鏈社區
現已在非小號資訊平臺發布105篇作品,
非小號開放平臺歡迎幣圈作者入駐
入駐指南:
/apply_guide/
本文網址:
/news/9558537.html
免責聲明:
1.資訊內容不構成投資建議,投資者應獨立決策并自行承擔風險
2.本文版權歸屬原作所有,僅代表作者本人觀點,不代表非小號的觀點或立場
上一篇:
幣安為何推出第三條鏈?這對BNB意味著什么?
近期可謂一路交易一路順,行情好,感覺也對了,每日交易的次數也在增加。以太坊一天幾十個點的利潤也不再那么艱難,前提是你要有專業技術能力做支撐輔助.
1900/1/1 0:00:00為了使閃電網絡成為一個強大、可靠和可擴展的支付系統,正義機制需要有效地威懾和防止盜竊。然而,最佳正義率很難確定,如果值太高,表明盜竊成功率很高,而正義的威懾作用可能還不夠.
1900/1/1 0:00:00為了慶祝Cashaa(CAS)在庫幣重磅上線,庫幣和Cashaa團隊將提供2,000,000CAS(約40,000USDT)豪華獎池.
1900/1/1 0:00:00Filecoin中的質押機制是指礦工算力增長過程、區塊獎勵釋放過程及市場數據交易過程中涉及到的代幣質押與釋放機制.
1900/1/1 0:00:00目前100000人已關注加入我們掃一掃下載全網最新數據報告IBM商業價值研究院:推進工業機械供應鏈數字化—提高透明度、運行效率以及盈利能力http://www.mouse0232.
1900/1/1 0:00:00鏈聞邀請了stake.fish、Wetez、ping.pub、節點易在內的專業節點服務商來聊聊一下PoS領域的一線工作者們對于2019年的總結和對2020年的展望.
1900/1/1 0:00:00