以太幣交易所 以太幣交易所
Ctrl+D 以太幣交易所
ads

Solidity 及EVM 開發工具介紹_ION

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:

OKX上線Nitro Spread,允許交易者進行一鍵基差交易:6月27日消息,加密交易平臺 OKX 推出了Nitro Spread功能,這是其場外交易 (OTC) 機構流動性市場的一項功能,允許交易者一鍵進行復雜的基差交易。

基差交易是指通過交易資產在兩個不同市場上的價格差異來獲取收益,例如,交易資產在現貨市場與期貨市場上的差異。OKX的Nitro Spread將此類交易自動化為一鍵式。該公司表示,交易者可以在交易平臺上市的現貨、永續和期貨合約的任意組合中應用這一功能。[2023/6/27 22:03:09]

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

anvil

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

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

Starknet:網傳Starknet正發幣并空投的內容均為不實消息:5月8日消息,Starknet官方在社交媒體上發文表示,目前有賬戶在Discord、Twitter、Telegram渠道,甚至向用戶私信發送有關Starknet正在發布Token和空投的內容均為不實消息,任何發布該類信息的帳戶都是不可信的。[2023/5/8 14:49:56]

更詳細的節點設置可以參考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,好讀很多。

Twitter開發者版本App更新“Coins”功能及用法簡介:2月10日消息,App開發者NimaOwji在社交媒體上發文表示,Twitter仍在推進其App內虛擬資產“Coins”的開發工作,目前Twitter開發者版本已更新Coins的功能及用法公告,確認Coins當前階段僅用于打賞功能。[2023/2/10 11:59: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

元宇宙聚合平臺Beacon Global完成100萬美元融資,GD Capital等參投:9月13日消息,一站式元宇宙聚合平臺Beacon Global宣布完成100萬美元融資,Candaq、RNGX、GD Capital、7 O'Clock Capital、Linden等機構參投。Beacon Global是一個將公會、玩家、游戲開發商、媒體、KOL匯聚在一起的元宇宙流量聚合平臺,其業務范圍涵蓋媒體報道、項目服務、區塊鏈知識教育培訓等,涉及GameFi、DeFi、NFT、元宇宙等多個垂直賽道。[2022/9/13 13:25:59]

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

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

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

Otherdeed for Otherside系列NFT地板價跌至1.52ETH,近7日跌幅超15%:金色財經報道,據NFTGo最新數據顯示,Otherdeed for Otherside系列NFT過去24小時的交易額為684,316.47美元,下降率為16.61%。截至發稿時,NFTGo數據顯示Otherdeed for Otherside地板價為1.52ETH,近7日跌幅為15.08%。[2022/8/22 12:39:37]

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:IONFORUNDFoundryBaby Billionaires ClubFOREVERUPUnderMineGoldPolkaFoundry

fil幣價格今日行情
W3.Hitchhiker:多項式承諾,正在重塑整個區塊鏈_BLO

不同多項式承諾方案列表 上表中,FRI是Starkware采用的多項式承諾方案,可以實現量子級別的安全.

1900/1/1 0:00:00
香港,微妙_BIT

你對香港的印象是什么?重慶大廈或者麗晶大賓館,小馬哥陳浩南還是風光旖旎的港片女神們。 香港的每一幀都在導演的鏡頭里,八九十年代的港片,片頭都會有中環和維港.

1900/1/1 0:00:00
交易所掀起亮“家底”浪潮,能挽回用戶信任嗎?_BIT

如果對加密歷史最糟糕的事件進行排名,那么FTX的暴雷應該有“一席之地”。當下正在加密市場蔓延的FTX恐慌正在席卷整個市場.

1900/1/1 0:00:00
FTX的債務困境、SBF的極限挑戰_AME

首先,我只是一個沒有內幕消息的失業懶人。所有這些都是我從公開可用的資源中得出的。同時@SBF_FTX?一直是該領域值得尊重的大玩家,請更加謹慎地閱讀下面的任何內容,如果有明確證據或聲明之類表明我.

1900/1/1 0:00:00
穩定幣戰爭持續升溫:穩定幣市場格局發生了怎樣的變化?_USD

穩定幣的戰爭正在暗地里升溫,特別是在危機之后。首先,我們先來看看Near的$USN和Huobi的$HUSD的崩潰。USN作為一個算法穩定幣在7個月前剛剛推出.

1900/1/1 0:00:00
【全文】香港虛擬資產發展政策宣言_虛擬資產

10月31日,香港財政司正式發布《有關香港虛擬資產發展的政策宣言》就在香港發展蓬勃的虛擬資產行業和生態圈,闡明政府的政策立場和方針.

1900/1/1 0:00:00
ads