区块见闻 区块见闻
Ctrl+D收藏区块见闻

SOL:Solidity 及EVM 开发工具介绍_ION

作者:

时间:

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:

Solana黑客马拉松将颁发100万美元奖金和种子资金:9月6日消息,Solana 基金会宣布将举办命名为Hyperdrive的黑客马拉松,旨在激励网络上新工具和应用程序的开发。

据悉,此次黑客马拉松将有高达 100 万美元的奖金和种子资金。获胜者将获得50,000 美元 USDC 以及 Solana Breakpoint 2024 会议的门票。[2023/9/6 13:22:04]

其他Shellscript的产生方式可以参考Foundrybook的ShellAutocompletion页面。

anvil

其实就和Ganache及?hardhatnode?一样:跑起一个节点。可以是全新的一个本地节点,也可以是背后连上ForkedState的节点。如果你平常都是习惯用来跑一个短暂的全新测试节点就直接下?anvil?即可。

如果你会想在一个ForkedState内实验或测试的话,多加上?--fork-url?和?--fork-block-number?的option。另外可以留意?--compute-units-per-second?这个option,它会控制每秒请求的计算量,避免取ForkedState太频繁导致遇到像是AlchemyRateLimit的问题。

Solana Labs创始人:链上投票导致网络中断的说法是出于“纯粹的无知”:2月28日消息,对于Solana 2月25日的网络中断,推特用户 DBCryptoX发布了有争议的帖子,表明大量验证者消息和链上投票正在阻塞网络。Solana Labs创始人兼首席执行官Anatoly Yakovenko回应称其言论来自“纯粹的无知”,并指出,作为“单一庞大法定人数”的一部分,投票有助于同时提供“出色的安全性、高吞吐量和低费用”。然而,Yakovenko并没有完全反驳DBCryptoX的说法,即Solana上90-95%的交易都包含这些验证者消息和链上投票,DBCryptoX认为这有助于“使系统陷入困境”。

此前金色财经报道,Solana官方称,2月25日发生的主网宕机原因尚未明确,正在积极调查中。(Cointelegraph)[2023/2/28 12:33:49]

更详细的节点设置可以参考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,好读很多。

Ancient8推出Solana生态GameFi Launchpad Dojo:9月15日消息,Ancient8宣布推出其Web3游戏基础设施产品生态中首个应用程序Ancient8 Dojo。据悉,Dojo是专注于Solana生态游戏的GameFi Launchpad。此外,Ancient8将推出1000枚“早鸟”Dojo NFT徽章。

据此前报道,今年6月,越南区块链游戏公会和社区、GameFi基础设施开发商Ancient8宣布完成600万美元私募融资,Makers Fund和C2 Ventures领投,Pantera Capital、6th Man Ventures、IOSG Ventures、Folius Ventures、Morningstar Ventures、Sky9 Capital、Th3ia Capital、Play Ventures等参投。[2022/9/15 6:59:11]

接着是从Etherscan抓取合约资讯:

castetherscan-source:会从Etherscan抓取指定地址的合约,可以加上-doption建立一个新的资料夹来放抓下来的合约们。记得用--etherscan-api-key?附上EtherscanAPIkey

Hashflow发布最新路线图,将于今年内推出无gas交易并支持Solana网络:5月20日消息,去中心化交易平台 Hashflow 发布 2022 最新版本路线图,据路线图信息显示,Hashflow 计划于今年二季度推出无 gas(Gasless)交易功能,并于三季度支持 Solana 网络,为用户提供跨 Solana 和 EVM 兼容链的跨链 Swap 体验。最终预计将于年内为用户揭晓 Hashverse 具体信息。[2022/5/20 3:30:16]

注:如果想直接在浏览器开启VSCode环境来浏览、编辑合约的话,可以使用deth.net。还可以透过书签一键开启,非常方便,请参考这则twitter。

接着是encode/decodeABI的功能:

cast4b/4bd/4be:反查functionselector、calldata或是eventsignature。在手上只有一笔交易或一个event的rawdata时,可以透过这些工具来尝试找出它要执行什么函式或emit了什么eventcastcalldata:用functionsignature及参数组出calldata。在为多签检查或组calldata的时候很方便注:因为functionselector只有4bytes,如果多个functionsignature都是同一个functionselector的话,则反查会回传所有可能functionsignature

NFT市场Rarible或将增加对Solana网络的支持:3月23日消息,根据技术博主和应用程序研究员Jane Manchun Wong的分享,NFT市场Rarible有望增加对Solana网络的支持。Rarible已经设置了用于集成Solana的后端。此前3月17日消息,NFT市场Rarible宣布完成Polygon集成并将推出多链钱包。(U.today)[2022/3/23 14:12:35]

最后是一些转换或计算的小工具:

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

标签:SOLIONUNDNDRsol币中文名叫什么INCEPTIONREFUNDNFTNDR

比特币最新价格热门资讯
GAL:Devcon6 综合报道:寻找以太坊下一个三年主题_DEV

以太坊开发者大会Devcon6于2022年10月11日至14日在哥伦比亚首都波哥大举行。本次会议由以太坊基金会主办,旨在通过为Web3社区提供教育,加深社区对去中心化系统的了解,同时将去中心化协.

VEST:代币经济学指南:怎样分配才是最好的方式?_Sport Investing

下面是我写的完整的代币经济学大师级指南。接下来我会分析500倍回报的加密项目的代币经济学是什么样子的。如果对我的指南有需求,我会把它做PDF文件,并涵盖更多的例子.

QUID:Aptos生态最全盘点:哪些DeFi项目值得关注?_LIQ

Aptos生态系统仅仅用了8个月的时间就已有160多个项目在开发测试中。其中,DeFi项目的品类从DEX、借贷、稳定币,到流动性质押和聚合收益,数量已接近40个.

UND:香港竞争全球虚拟资产中心,何以可能?_UND币

面对Web3,FOMO一直是常态。尤其是在全球经济下行的周期里,这一点愈发明显,无论是个人还是政府,概莫能外。眼见华人Web3创业者涌入隔壁新加坡,香港最近似乎也陷入FOMO.

APT:币安用户 APTOS 来源分析与女巫攻击预警_TOS

概述:X-explore对所有价值到币安的APTOS进行了成本来源分析,其中65%的资金为女巫地址入金,累积超过630WAPTToken,这给币安带来了严重抛压,造成了价格一路上涨走低关系.

GAM:王峰谈GameFi:Game成长需靠Fi的期货方式倒逼_Moon Nation Game

编者按:本文来自小隐最新推文,其在文中回应「如何看待GameFi现状与未来」问题。问:”你专注网络游戏行业十余年,历经中国游戏行业从客户端游戏、网页游戏到移动游戏三个时代,如何看待GameFi今.