比特幣價格 比特幣價格
Ctrl+D 比特幣價格
ads
首頁 > 火必 > Info

UND:Solidity 及EVM 開發工具介紹_NDR

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:

俄羅斯下議院通過數字盧布法案:金色財經報道,7月11日,俄羅斯下議院通過了數字盧布法案。現在該文件面臨參議院的確認,然后由總統簽署。該法案的最后一次修訂草案于6月底,規定了平臺、參與者和用戶的法律定義,以及CBDC生態系統的一般準則。

在當前框架下,俄羅斯中央銀行(CBR)將成為數字盧布基礎設施的主要運營商。它還對所有存儲的資產承擔責任。CBR稱,CBDC的主要目標是作為一種支付和轉賬方式。因此,其用戶將無法開設儲蓄賬戶。支付和轉賬對個人客戶是免費的,而企業客戶則需要支付0.3%的費用。[2023/7/12 10:50:18]

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

anvil

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

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

CZ:CBDC不會對加密貨幣構成威脅:金色財經報道,加密貨幣交易所 Binance 的首席執行官CZ在里斯本舉行的網絡峰會上就CBDC及其在加密行業中的作用發表了講話。CZ表示,CBDC不會對他的公司或加密行業構成威脅。?CBDC將驗證區塊鏈技術并在那些對該技術有擔憂的人之間建立信任,政府采用區塊鏈將被視為一件好事。[2022/11/3 12:13: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,好讀很多。

馬斯克對銀行表示計劃在周五完成收購推特交易:10月26日消息,據外媒報道,知情人士透露,馬斯克周一在與融資行的視頻會議上承諾在周五結束前完成對推特(TWTR.N)的收購交易。消息人士稱,這些為交易提供總計130億美元債務融資的銀行已經完成了最終信貸協議的起草,目前已到了簽署文件階段。知情人士稱,在電話會議上,馬斯克還承諾交易完成后將幫助銀行向基金經理推介債券。摩根士丹利和推特對報道不予置評,而馬斯克的代表暫時未回復置評請求。(金十)[2022/10/26 16:38:44]

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

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

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

Compound Treasury 推出面向機構的借貸服務:9月14日消息,Compound Treasury 推出面向機構的借貸服務,經過認證的機構可以選擇使用數字資產作為抵押品從 Compound Treasury 處獲得貸款。目前 Compound Treasury 支持機構抵押比特幣、以太坊以及部分 ERC-20 代幣作為抵押品,以 6% 的年化利率借出美元或 USDC。Compound 表示,借款將不設置固定的還款時間表,只要客戶保持超額抵押,就可以靈活地進行借貸和還款。該產品流動性將由 Compound Treasury 提供的機構級資管服務的客戶和 Compound 協議提供支持。[2022/9/14 13:30:07]

接著是encode/decodeABI的功能:

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

Aptos生態訂單簿協議Econia已上線v2版本:8月9日消息,Aptos生態訂單簿協議Econia已上線v2版本,引入獨立訂單簿兌換功能,要求用戶注冊特定市場的交易賬戶,選擇性地委托托管人、存入抵押品,并使用其抵押品在相應的市場進行交易。此外v2版本現在允許用戶直接根據賬面結算市場訂單,無需支付任何費用。(Medium)[2022/8/9 12:12:11]

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

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

更多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:UNDIONNDRFoundryThunder BrawlLevolutionpndr幣還有希望嗎PolkaFoundry

火必
SOUL:押注元宇宙,社交應用 Soul 能否自救?_元宇宙數字虛擬人

謀求上市,社交應用Soul把注押在元宇宙上。從3D捏臉到最近發布的NAWA引擎,赴美折戟轉戰港股的Soul拼命套上元宇宙的外衣,但這件外衣既沒法遮住下滑的口碑,也掩蓋不了連續的虧損.

1900/1/1 0:00:00
FTT:通過鏈上FTT流動性組成分析FTX和Binance的爭端問題_BIN

數據是必然為分析而存在的,而分析最終還是為人服務,當前最大的熱點就是FTT和BNB的博弈,那就從數據層面看看是否有什么提示.

1900/1/1 0:00:00
AME:黑暗三角人格——SBF、Justin Sun_EDA

從歷史上看,我們看到所有空間的邪惡領袖都是以黑暗三角人格中的1或3個特征崛起的,導致了災難性的后果。社交媒體日益增長的影響力幫助他們更具欺騙性和操縱性.

1900/1/1 0:00:00
EFI:DeFi 走向主流的關鍵:實物資產代幣化_TrueFi

DeFi的影響力正在慢慢滲透到真實世界資產,金融業正處于轉型邊緣。隨著越來越多的資產被代幣化,傳統的資本市場也在向加密世界融合.

1900/1/1 0:00:00
FTX:福布斯:Binance 收購 FTX,SBF 何去何從?_BANKERS

今年早些時候,當FTX首席執行官SamBankman-Fried救助了一系列陷入困境的加密貨幣公司時,這位30歲的億萬富翁被譽為下一個摩根大通.

1900/1/1 0:00:00
區塊鏈:肖風:以太坊的“上海時刻”_以太坊

2022年9月15日,以太坊將迎來它繼2013年底初版白皮書發表、2015年7月主網上線之后的又一個歷史時刻:“合并”。以太坊的共識機制將從工作量證明轉為權益證明.

1900/1/1 0:00:00
ads