比特幣行情 比特幣行情
Ctrl+D 比特幣行情
ads

ION:Solidity 及EVM 開發工具介紹

Author:

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

Solidity及EVM開發工具介紹

這篇文章將介紹Ethereum開發者的一些實用工具:Foundry除了測試之外的功能及VSCode的SolidityVisualDeveloper插件

Photoby?DanCristianP?dure??on?UnsplashFoundry

Foundry除了提供合約開發、測試和部署,其實還有許多其他實用的功能。

安裝Foundry

如果是Linux或macOS,先安裝foundryup,接著直接用?foundryup?指令就可以安裝。未來要升級foundry也只需要執行?foundryup?就好,非常簡單直覺。

//Installfoundryup

curl-Lhttps://foundry.paradigm.xyz|bash

//InstallorupdateFoundry

foundryup

詳細可以參考Foundrybook的Installation頁面。

AutoCompletion

Foundry安裝完后會有forge、cast及?anvil?三個指令,每個指令也都有許多option,這時有AutoCompletion會非常省事。例如產生bash用的AutoCompletionscript:

報告:元宇宙NFT一季度的銷售額飆升至5億美元以上:金色財經報道,根據一份新的DappRadar報告,今年與元宇宙虛擬世界相關的NFT銷量飆升。“2023 年第一季度,虛擬現實世界出現了前所未有的增長和創新。5.02億美元投資于區塊鏈游戲和元宇宙項目。”

報告指出,虛擬土地銷售一馬當先,數字土地銷售收入達3.11億美元。“自今年年初以來,虛擬世界市場一直處于牛市狀態,數字土地交易量增長了277%。”

DappRadar認為,這是自2022年5月Terra Luna崩潰以來虛擬世界表現最好的一個季度。(coinmarketcap)[2023/3/25 13:25:58]

其他Shellscript的產生方式可以參考Foundrybook的ShellAutocompletion頁面。

anvil

其實就和Ganache及?hardhatnode?一樣:跑起一個節點。可以是全新的一個本地節點,也可以是背后連上ForkedState的節點。如果你平常都是習慣用來跑一個短暫的全新測試節點就直接下?anvil?即可。

如果你會想在一個ForkedState內實驗或測試的話,多加上?--fork-url?和?--fork-block-number?的option。另外可以留意?--compute-units-per-second?這個option,它會控制每秒請求的計算量,避免取ForkedState太頻繁導致遇到像是AlchemyRateLimit的問題。

8000萬枚USDC從USDC Treasury轉入Crypto.com:金色財經報道,據Whale Alert監測數據顯示,8000萬枚USDC從USDC Treasury轉入Crypto.com。[2023/2/22 12:22:07]

更詳細的節點設置可以參考Foundrybook的AnvilReference頁面。

cast

cast是用來取鏈上資料非常好用的工具。因為有很多功能,這里我只會列出我常用及覺得實用的功能。

注:要讀取鏈的狀態記得要在foundry.toml檔里附上endpointurl或透過?--rpc-url$URL?的方式。

首先是抓取交易資訊:

casttx/receipt:抓取交易或receipt資訊castrun:印出一筆已被收入的交易的executiontrace或進行livedebug,為了得到準確的交易前狀態,預設會模擬執行同一區塊里在該筆交易前面所有的交易,但這可能很耗時,如果只想看交易執行過程且不需要最精準的執行結果的話,可以加上--quickoption,它會跳過前面交易的模擬,直接把該筆交易當作區塊的第一筆交易來執行注:castrun--debug的debug介面可能沒有那么好讀,如果不需要看到執行過程中的memory/stack/storage等細節時可以直接用ethtx.info或Tenderly,好讀很多。

Otherdeed #89263 NFT以186.69WETH的價格成交:金色財經報道,Yuga Labs元宇宙項目Otherside上地塊Otherdeed #89263 NFT以186.69WETH(約28.4萬美元)的價格成交,該枚NFT此前于2022年5月以51.5ETH價格成交。[2023/1/15 11:13:26]

接著是從Etherscan抓取合約資訊:

castetherscan-source:會從Etherscan抓取指定地址的合約,可以加上-doption建立一個新的資料夾來放抓下來的合約們。記得用--etherscan-api-key?附上EtherscanAPIkey

注:如果想直接在瀏覽器開啟VSCode環境來瀏覽、編輯合約的話,可以使用deth.net。還可以透過書簽一鍵開啟,非常方便,請參考這則twitter。

接著是encode/decodeABI的功能:

cast4b/4bd/4be:反查functionselector、calldata或是eventsignature。在手上只有一筆交易或一個event的rawdata時,可以透過這些工具來嘗試找出它要執行什么函式或emit了什么eventcastcalldata:用functionsignature及參數組出calldata。在為多簽檢查或組calldata的時候很方便注:因為functionselector只有4bytes,如果多個functionsignature都是同一個functionselector的話,則反查會回傳所有可能functionsignature

WBTC月供應量下降12.44%,總供應量回到2021年9月的水平:11月28日消息,Dune Analytics數據顯示,本月Wrapped BTC(WBTC)供應量下降 27,398 枚(-12.57%),為有史以來最大降幅。總供應量回到2021年9月的水平(共217981枚)。WBTC市值回到2021年1月的水平。目前 Kraken 上 WBTC/BTC 比率為 0.98。

此前BitGo創始人表示,鏈上儲備證明顯示,WBTC由1:1的比特幣儲備支持。因擔心Alameda Research破產風險,Euler Finance社區新提案提議將WBTC喂價從BTC換成WBTC。[2022/11/28 21:07:00]

最后是一些轉換或計算的小工具:

cast—-from-utf8/--to-ascii:在hex或字串之間轉換castsig:計算functionselectorcastkeccak:計算keccakhashcastcompute-address:計算CREATE的地址

Meta將在9月關閉其加密貨幣項目Novi:金色財經消息,Meta Platforms的加密貨幣項目曾經令該公司創始人馬克·扎克伯格在國會飽受攻擊,現在,該項目的剩余部分也將正式關閉。Meta在測試項目Novi其網站上表示,將于9月1日停止服務。Novi使用Meta自己的加密貨幣數字錢包提供轉賬服務。該公司表示,Novi應用程序和WhatsApp上的Novi都將不再可用。從7月21日開始,用戶將無法再向他們的帳戶充值,建議“盡快”提取余額。在測試期結束后,用戶將無法訪問其交易歷史記錄或其他數據。將把Novi相關技術應用于元宇宙和其他產品。Meta發言人表示,該公司確實計劃在未來產品中使用Novi的技術,例如在其元宇宙項目中。(彭博社)[2022/7/2 1:45:26]

更多cast功能可以參考Foundrybook的castCommands頁面。你可以從中按照你的需求找到對你有幫助的常用指令。

forgeinspect

forge的inspect指令則是用來挖出一個合約更進階的資訊。它不是去拉鏈上的資料,而是作用在本地端的檔案,所以如果你需要分析其他合約,你需要先把它下載下來。

forgeinspectMyContract...

注:在分析前?forge?會先編譯合約,會花一些時間。

首先是列出合約基本資料的功能:

forgeinspectMyContractabi/bytecode/deployedBytecode:列出?MyContract的ABI/編譯完的bytecode/實際部署到鏈上后的bytecode,方便exportABI或是比對部署在鏈上的bytecodeforgeinspectMyContractmethods/gas:列出?MyContract的function列表/每個function的預估gas消耗。用?cast4b/4bd?其實就能反查特定functionselector,這個功能比較像是能看到一個合約完整的function資訊forgeinspectMyContractstorage:列出?MyContract的storage,包含每個變數的storageslot和offset。但呈現的資料比較丑一點,可以改用slither來分析合約storage或讀取合約變數的值,它還可以拉鏈上的合約來分析,不需要先下載合約下來。接下來是比較進階的使用:irOptimized,主要是你想再優化你合約的gas消耗時可以采用的方式。

forgeinspectMyContractirOptimized

它會呈現你的合約編譯成Yul后的長相。Yul就像assembly,它介于Solidity和EVMopcode之間,它可以讓你看到你寫的Solidityfunction背后實際上還做了哪些事情,如此你就可以開始刪去一些不需要的檢查。

這個工具是從這兩則twitter發現到的,這邊直接引用里面的范例和圖片來搭配說明。以一個簡單的將?number?變數遞增的?Counter?合約為例,里面有一個?setNumber?函式用來設置?number?的值及一個?increment?函式用來把?number?加1。右邊則是執行?forgeinspectCounterirOptimized?后所輸出Yul版本的?Counter?合約:

source:?https://twitter.com/w1nt3r_eth/status/1579486967963693057

可以看到一個簡單的Solidity合約編譯完后變得復雜許多。接下來以?increment?函式為例:

source:?https://twitter.com/w1nt3r_eth/status/1579486967963693057

可以發現一個?number++?里面其實包含了很多檢查,例如notpayable和overflow。但其實我們知道它只會以一次加?1?的方式遞增所以幾乎不可能會overflow,然后如果這個函式是可以接受ether的話,那就可以再省掉notpayable的檢查:

source:?https://twitter.com/w1nt3r_eth/status/1579486967963693057

可以發現省去了許多執行步驟。

比起原地把Solidity程式碼替換成assembly程式碼這種比較冒險的優化方式,這是一個新的管道讓你能重新完整地檢視你的合約,并且可以看出修改前后的對比。但要注意還是以安全為優先,不要為了省一點的gas而拿掉你沒有把握的程式碼或檢查。

其他forgeinspect功能可以參考Foundrybook的forgeinspect頁面。

VSCode

最后是介紹一個在review合約時很實用的VSCode插件:SolidityVisualDeveloper

注:以下介紹會是個人使用心得,所以會有特色或功能是沒有介紹到的。可以自己下載來試用看看,看能不能發現適合你的用途的功能。

SolidityVisualDeveloper-VisualStudioMarketplace

Tags:IONNDRUNDFoundryauction幣值得投資嗎RNDR價格SUNDERPolkaFoundry

幣安交易所app下載
ARK:Vitalik最新長文:CEX如何利用技術自證清白

每當一個大型中心化交易所崩潰時,一個常見的問題就是我們是否可以使用加密技術來解決。交易所可以利用密碼學證明它們在鏈上持有的資金足以支付它們對用戶的債務,而不是僅僅依賴政府許可、審查公司審計和運營.

1900/1/1 0:00:00
ROLL:Rollup:zkSync v2.0和ZK-Rollup的未來

簡介 “ZK-Rollup”可能是今年最熱門的網絡流行語。隨著zkSync2.0版本“babyalpha”主網的推出,這種興奮情緒已經達到了頂峰.

1900/1/1 0:00:00
FTX:哪些機構的錢仍在FTX里?

Binance官方發文表示,根據公司盡職調查的結果,以及有關不當處理客戶資金和所謂美國機構調查的最新報道,決定不尋求對FTX的潛在收購.

1900/1/1 0:00:00
ENT:MarsBit日報 | Deribit熱錢包被盜2800萬美元;新加坡金管局宣布上線首個數字資產和DeFi行業試點

MarsBitCryptoDaily2022年11月2日 一、今日要聞 Deribit熱錢包被盜2800萬美元,損失將由公司儲備金彌補加密衍生品交易平臺Deribit發布公告稱其熱錢包被盜.

1900/1/1 0:00:00
FTX:MarsBit日報 | Binance 放棄收購 FTX;SBF 表示將再進行一次融資,正與孫宇晨進行溝通

MarsBitCryptoDaily2022年11月10日 一、今日要聞 Binance:根據盡職調查結果放棄收購FTXBinance官方發文表示,根據公司盡職調查的結果.

1900/1/1 0:00:00
ROL:V 神:Rollup 二層網絡的三個階段

目前有大量的rollup項目,它們處于不同的發展階段。這些項目共有的一個模式是使用了臨時輔助輪:雖然項目的技術仍然不成熟,但為了發展生態的目的,便選擇了提前啟動,而不是完全依賴其欺詐證明或ZK證.

1900/1/1 0:00:00
ads