第一部分·前言
想象一下,你正在駕駛著1969年的MustangMach在美國西部的公路上快速行駛,陽光照耀在華麗的鍍金輪輞上,整條道路只有你和沙漠,一望無際的地平線見證著你和落日的追逐......心曠神怡間,突然一身巨響,你335馬力的快馬被滾滾的白煙吞沒,瞬間變成了蒸汽機車,于是你被迫停在路邊。你打算看看出現了什么問題,當你翻開前車蓋,發現自己完全看不懂。你根本就不知道這該死的機器是怎么工作的,于是你拿起手機準備求救,發現附近沒有信號......
上面描述的情形是不是和你正在做的DApp開發很像?在開發Dapp的過程中,在類比中,豪車是你的智能合約,輪輞和改造過的地方是那些經過深思熟慮的小細節。而一旦出現問題,你就需要在智能合約EVM字節碼中尋找答案,大部分情況下你都完全不知道發生了什么。如果你是Dapp的開發者,并且遇到過上面的尷尬狀況的話,那么以后再也不用擔心了!因為,本系列文章的目的就是解構一個簡單的Solidity合約,查看其字節碼,并將其分解為可識別的結構,直至最低級別。我們將打開Solidity這臺跑車的引擎蓋。在本系列的最后,您在查看或調試EVM字節碼時應該感覺很舒服。本系列的重點是揭開Solidity編譯器生成的EVM字節碼的神秘面紗,它真的比它看起來簡單得多。以下是我們解構時要使用到的智能合約代碼:pragmasolidity^0
SushiSwap CEO:Lido社區部分用戶認為Lido沒有義務或權力歸還被盜資金:5月22日消息,SushiSwap CEO Jared Grey 發推表示,最近 SushiSwap 攻擊致使一些在 Lido 的人獲得數百枚 ETH。Sushi 已經對用戶進行補償,并與其他第三方合作,歸還其因攻擊而獲得的被盜資金。不幸的是,我們已經與 Lido 團隊合作尋找解決方案來追回他們已經支付的被盜資金,但是一些人認為 Lido 沒有義務或權力將這些資金退還,實質上是為向多個 Lido DAO 參與者發放被盜資金開綠燈。
具有爭議性的是,Flashbots 戰略總監、Lido 戰略顧問 Hasu 表示支持對 Lido 歸還資金不聞不問的做法。在 Sushi,我們相信在這種情況下,所有受影響的用戶都應該被歸還資金,試圖利用 DAO 的官僚程序來混淆和阻礙這一過程是虛偽的,也是完全錯誤的。我們希望能與 Lido DAO 及其支持者達成友好的解決方案,以歸還有關資金。[2023/5/22 15:17:41]
functiontotalSupply()publicviewreturns(uint256){returntotalSupply_;}functiontransfer(address_to,uint256_value)publicreturns(bool){require(_to!=address(0));require(_value<=balances);balances=balances-_value;balances=balances+_value;returntrue;}functionbalanceOf(address_owner)publicviewreturns(uint256){returnbalances;}}注意:此合約容易受到溢出攻擊,我們只是為了說明問題,所以力求簡潔。
Chainlink Functions 已上線 Avalanche Fuji 測試網:金色財經報道,Chainlink 發文稱,無服務器開發平臺 Chainlink Functions 已在 Avalanche Fuji 測試網上線,在 Avalanche 生態系統中構建的智能合約開發者現在可以使用 Chainlink Functions 在其智能合約中輕松連接 Web2 API 和云服務。
此前報道,Chainlink 將推出旨在將 DApp 或智能合約連接到 Web2 API 的自助式無服務器平臺 Chainlink Functions。[2023/5/5 14:45:32]
編譯合約
為了編譯合約,我們將使用Remix。當你打開Remix編譯器,單擊文件瀏覽器區域上方左上角的+按鈕,創建新的智能合約。將文件名設置為BasicToken.sol。創建好之后,將上面的代碼粘貼到編輯器上。在右側,轉到“Setting”的選項中,確保選中了“EnablePersonalMode”。另外,要注意選擇的Solidity編譯器版本是“version:0.4.24+commit.e67f0147.Emscripten.clang”。這兩個細節非常重要,否則你將無法查看文中討論的字節碼。接下來,你可以進入Compile選項并單擊Details按鈕,你會看到一個彈出窗口,里面包含Solidity編譯器生成的所有東西,其中一個是名為BYTECODE的JSON對象,它具有“object”屬性,這個就是編譯的合約代碼,它的代碼是這樣的:608060405234801561001057600080fd5b5060405160208061021783398101604090815290516000818155338152600160205291909120556101d1806100466000396000f3006080604052600436106100565763ffffffff7c010000000000000000000000000000000000000000000000000000000060003504166318160ddd811461005b57806370a0823114610082578063a9059cbb146100b0575b600080fd5b34801561006757600080fd5b506100706100f5565b60408051918252519081900360200190f35b34801561008e57600080fd5b5061007073ffffffffffffffffffffffffffffffffffffffff600435166100fb565b3480156100bc57600080fd5b506100e173ffffffffffffffffffffffffffffffffffffffff60043516602435610123565b604080519115158252519081900360200190f35b60005490565b73ffffffffffffffffffffffffffffffffffffffff1660009081526001602052604090205490565b600073ffffffffffffffffffffffffffffffffffffffff8316151561014757600080fd5b3360009081526001602052604090205482111561016357600080fd5b503360009081526001602081905260408083208054859003905573ffffffffffffffffffffffffffffffffffffffff85168352909120805483019055929150505600a165627a7a72305820a5d999f4459642872a29be93a490575d345e40fc91a7cccb2cf29c88bcdaf3be0029沒錯,這些代碼完全沒有可讀性。
以太坊軟件公司ConsenSys裁員100人以上:金色財經報道,據一位知情人士透露,加密錢包MetaMask的開發商ConsenSys計劃裁員100名或更多。總部位于紐約市的以太坊工作室目前擁有約900名員工。據了解,裁員計劃正在最后敲定過程中,具體數字目前尚不清楚,消息人士稱,后來該公司證實了這一消息。美國交易所Coinbase周二還宣布裁員20%,即裁員約950人,這讓加密就業本已糟糕的一周雪上加霜。估計,自去年4月以來,整個行業已經失去了近27,000個工作崗位。[2023/1/11 11:05:06]
部署合約
接下來,轉到Remix中的Run部分。首先,確保您使用的是JavascriptVM。這基本上是一個嵌入式JavascriptEVM+網絡,理想的以太坊訓練場。確保在ComboBox中選擇了BasicToken,并在Deploy輸入框中輸入數字10000。接下來,單擊“Deploy”按鈕進行部署。這部署的是我們創建的BasicToken智能合約實例,最初提供的10000個token由當前在ComboBox帳戶頂部選擇的帳戶擁有,該帳戶會保留我們設置的所有token供應。在“Run”選項卡的“DeployedContracts”中,您可以看到已部署的智能合約,其中包含與合約進行交互的三個字段:transfer,balanceOf和totalSupply。在這里,我們能夠與剛剛部署的智能合約實例進行交互。但在此之前,讓我們來看看合同的“Deploy”究竟是什么意思:在頁面底部的控制臺區域中,你可以看到一條日志“creationofBasicTokenpending...”,然后是一個包含各種字段的事務條目:from,to,value,data,logs和hash。單擊此條目以展開交易信息,你應該看到transaction的date、input,以及我們上面提到的字節碼。所以,創建一個智能合約實例,其中會包含自己的地址和代碼。我們將在下一篇文章中詳細研究這transaction個過程。反匯編字節碼
Sui開發團隊發布開源自托管錢包Sui Wallet版本更新:9月28日消息,Sui開發團隊MystenLabs發布開源自托管錢包Sui Wallet版本及相關工具更新,具體包括UI外觀及錢包功能改進、更安全的交易界面、新增標簽“AppsTab”、錢包適配器更新等。[2022/9/28 5:56:58]
在控制臺中心,transaction框框的右側,有個“debug”按鈕。點擊這個按鈕,你將激活Remix右側區域中的Debugger選項。我們可以一起看看Instructions部分,如果向下滾動,應該是出現以下內容:000PUSH180002PUSH140004MSTORE005CALLVALUE006DUP1007ISZERO008PUSH20010011JUMPI012PUSH100014DUP1015REVERT016JUMPDEST017POP018PUSH140020MLOAD021PUSH120023DUP1024PUSH20217027DUP4028CODECOPY029DUP2030ADD031PUSH140033SWAP1034DUP2035MSTORE036SWAP1037MLOAD038PUSH100040DUP2041DUP2042SSTORE043CALLER044DUP2045MSTORE046PUSH101048PUSH120050MSTORE051SWAP2...為了確保你前面的操作沒有出錯,你可以把你所操作的Remix編譯器中看到的內容與上面進行比較。這其實就是合約的反匯編字節碼。如果您按字節掃描原始字節碼,則EVM會識別與特定操作關聯的特定操作碼。例如:0x60=>PUSH0x01=>ADD0x02=>MUL0x00=>STOP...反匯編的代碼非常低級并且很難看懂,但是我們可以通過這種方式可以開始理解它。Opcode
推特用戶指出Aave社區關于“緩解以太坊合并期間的風險”的提案存在巨大風險:8月30日消息,對于Aave社區發起關于緩解協議在以太坊合并期間面臨的相關風險的提案,推特用戶@nigdaemon指出該提案存在風險:如果該提案通過,會導致AAVE協議面臨巨大擠兌風險。提案本意是降低借ETH的投機行為,但并未考慮大量提取ETH的情況。如果提案通過后,合并前ETH被大量提取,將導致ETH的LTV快速達到100%,進而導致利率APR達到1000%。AAVE中有90萬stETH,如果面臨大規模體量會導致無法清算的情況;進而導致AAVE出現大量壞賬;如果提案通過,個人認為這是變相對AAVE發起的攻擊。
此外,該推特用戶對風險進行了推演:1.如果ETH利用率達到100%,APR提升到1000%,只需持續1-2天就會有大量stETH存款處于可清算狀態。2.而讓ETH的利用率達到100%的方法,不只有借貸一個方式,當臨近合并時,大量用戶的提款,會讓LTV快速達到100%。@nigdaemon稱,如果提案通過,建議在AAVE中有存借款用戶慎重考慮合并前的配置。
此前消息,Aave社區發起關于緩解協議在以太坊合并期間面臨的相關風險的提案投票,計劃在以太坊合并前暫時關閉ETH借貸市場,并當ETH利用率達到100%時,將借款APR從103%提升到1000%。[2022/8/30 12:58:02]
在解構智能合約代碼開始之前,你將需要一個基本的工具集理解單個opcode,如PUSH,ADD,SWAP,DUP等的操作碼,到最后,每個操作嗎只能從EVM的堆棧,內存或屬于合約的存儲中壓入一個項或消費一個項。要查看EVM可以處理的所有可用操作碼,可以查看Pyethereum,上面顯示了操作碼列表。要了解每個操作碼的工作原理,Solidity官方的匯編文檔也是一個很好的參考。即使它不是與原始操作碼一一對應,但是非常接近。如果你能讀懂技術文檔,可以閱讀以太坊黃皮書,其實歸根結底都是上面的內容。雖然和大家推薦了這么多文檔,現在從頭到尾閱讀這些資源沒有什么意義,你只要記住有這么個資料就行,我們將在需要的時候使用到它們。指令上面反匯編代碼中的每一行都是EVM執行的操作指令,每條指令都包含一個操作碼,例如,讓我們采用其中一條指令,指令88,將數字4推送到堆棧。這個特殊的反匯編程序解釋說明如下:88PUSH10x04|||||Hexvalueforpush.|OpcodeInstructionnumber盡管反匯編的代碼能讓我們更加理解底層的東西,但它還是讓人摸不著頭腦。我們需要一個能夠解構所有問題的方法。策略
任何一開始看上去不可能完成的任務,其實都可以通過不斷的拆解,分解成可以解決的任務,我們遇到的問題也不例外,面對這個問題,我所采取的策略就是“分而治之”。我們可以試圖找到反匯編代碼的分叉點,并逐漸分解,直到分解成很小的塊,我們將在Remix的調試器中逐步完成。在下圖中,我們可以看到我們對反匯編代碼進行的第一次拆分。
如果你不了解圖表,也不要擔心,你不用一開始就什么都會,我們的系列文章將會循序漸進的介紹。現在就跟著我們的節奏,不斷深入你的豪車的內部結構吧。*本文由AlejandroSantander首發于medium,由獵豹區塊鏈安全翻譯并整理*獵豹區塊鏈安全以金山霸的技術為依托,結合人工智能、nlp等技術,為區塊鏈用戶提供合約審計、情感分析等生態安全服務。您可訪問Ratingtoken官網了解更多
編者按:不管你承不承認,比特幣出現十年來,尤其是近兩年,實實在在攪動了世界的一個角落。人們無法忽視它顛覆性的理論構想對金融業帶來的沖擊,以及由此延伸出來的、腦洞越來越大的區塊鏈科技的發展,它們引.
1900/1/1 0:00:00本文來自Coindesk,作者:NoelleAcheson,譯者:Moni原地址:https://www.coindesk.com/why-the-cftcs-questions-about-e.
1900/1/1 0:00:00據日經新聞報道,GMO集團股價今日開盤后大幅下跌,一度跌至1220日元,較昨日收盤價下跌105日元,刷新年度最低值。截至發稿前,股價為1339日元.
1900/1/1 0:00:00眾所周知,密碼學是數字加密貨幣的基礎,它保證了我們資產的安全,也是挖礦的底層規則。但是,大部分對密碼學知之甚少,也就很難看懂區塊鏈項目的加密方式,看不懂,就談不上對項目有什么的信仰,只能隨波逐流.
1900/1/1 0:00:00Signzy是一家利用人工智能技術,并通過區塊鏈智能合約進行生物識別的數字化KYC解決方案開發公司,總部位于印度班加羅爾,該公司已經宣布完成了一筆360萬美元的A輪融資.
1900/1/1 0:00:00數字貨幣錢包被認為是區塊鏈世界里的流量入口,甚至是未來交易所的終極形態。據數據公司Statista的數據顯示,截至2018年9月底,全球數字貨幣錢包用戶總數已超2800萬.
1900/1/1 0:00:00