首页 > 其他分享 >为什么要⽤ Foundry

为什么要⽤ Foundry

时间:2024-04-25 19:34:54浏览次数:33  
标签:为什么 -- Foundry rpc cast RPC url forge

Foundry 

为什么要⽤ Foundry 

快 - 加速开发 

Solidity - 减少上下⽂切换 

功能丰富 

⾜够轻量 

Foundry 的组件 

forge 

cast 

anvil 

安装 

https://getfoundry.sh/ 

curl -L https://foundry.paradigm.xyz | bash foundryup 

Cast - 与链交互的⼯具箱 RPC 

cast rpc <METHOD> <PARAMS> --rpc-url=$RPC 

区块查询 

cast block-number --rpc-url=$RPC 

cast find-block <TIMESTAMP> --rpc-url=$RPC 

cast block <BLOCK> --rpc-url=$RPC 

cast block <BLOCK> [FIELD] --json --rpc-url=$RPC

交易查询 

cast tx <HASH> [FIELD] --rpc-url=$RPC 

cast receipt <HASH> [FIELD] --rpc-url=$RPC 

交易解析 

cast 4byte <SELECTOR> 

cast sig <SIG> 

cast upload-signature <SIG> 

cast pretty-calldata <CALLDATA> 

cast calldata <SIG> <ARGS> 

cast 4byte-event <TOPIC_0> 

cast keccak <DATA> 

账户管理 

cast wallet new [OUT_DIR] 

cast wallet sign <MESSAGE> --keystore=<PATH> 

cast wallet verify --address <ADDRESS> <MESSAGE> <SIGNATURE> 

合约查询 

cast etherscan-source <ADDRESS> --chain=<CHAIN> --etherscan-api-key=<KEY> -d=<OUT_DIR> cast interface <PATH_OR_ADDRESS> --chain=<CHAIN> --etherscan-api-key=<KEY> 

cast storage <ADDRESS> <SLOT> --rpc-url=$RPC 

cast index <KEY_TYPE> <KEY> <SLOT_NUMBER> 

合约交互 

cast call <ADDRESS> <SIG> [ARGS] --rpc-url=$RPC 

cast send <TO> <SIG> [ARGS] --rpc-url=$RPC --keystore=<PATH> 

ENS 

cast resolve-name <NAME> --rpc-url=$RPC 

cast lookup-address <ADDRESS> --rpc-url=$RPC

编码解码 

cast --to-hex 

cast --to-dec 

cast --to-unit 

cast --to-wei 

cast --to-rlp 

cast --from-rlp 

本地模拟链上交易 

cast run <HASH> --rpc-url=$RPC 

Traces: 

 [<Gas Usage>] <Contract>::<Function>(<Parameters>)  ├─ [<Gas Usage>] <Contract>::<Function>(<Parameters>)  │ └─ ← <Return Value> 

 └─ ← <Return Value> 

Green: For calls that do not revert 

Red: For reverting calls 

Blue: For calls to cheat codes 

Cyan: For emitted logs 

Yellow: For contract deployments 

Anvil - 本地节点 

anvil 

anvim --accounts=<NUM> --balance=<NUM> 

anvil --mnemonic=<MNEMONIC> 

anvil --fork-url=$RPC --fork-block-number=<BLOCK> 特殊 RPC ⽅法 

anvil_* -> hardhat_* 

anvil_impersonateAccount 

anvil_setStorageAt

Forge - 智能合约开发框架 初始化项⽬ 

forge init <dir_name> 

forge init --template <template_path> <dir_name> 

依赖管理 

forge install <gh_user/gh_repo> 

forge update <dep> 

forge remove <dep> 

依赖映射 

forge remappings 

forge remappings > remappings.txt 

代码美化 

forge fmt 

编译项⽬ 

forge build 

forge build --watch 

FOUNDRY_PROFILE=release forge build 

获取更多细节 

forge build --extra-output=<SELECTOR> 

forge inspect <CONTRACT> <FIELD> 

代码测试

forge test 

forge test -vvvv 

forge test -w 

forge test --match-test/--match-contract/--match-path forge test --fork-url=$RPC 

测试代码的结构 

断⾔库的使⽤ 

使⽤ cheatcode 改变 vm 状态 

ffi 的使⽤ 

fuzz 测试 

invariant 测试 

code coverage 

gas 报告 

forge test --gas-report 

forge snapshot 

⽤ solidity 写脚本 

forge script <PATH> 

部署合约 

forge script <PATH> --broadcast 

Debugger 

forge script <PATH> --debug 

cast run <HASH> --debug 

集成 GitHub actions 

continous-integration

   

标签:为什么,--,Foundry,rpc,cast,RPC,url,forge
From: https://www.cnblogs.com/2014-1130/p/18158413

相关文章

  • 《为什么我们总是在防御》
    《为什么我们总是在防御》作者:[美]约瑟夫·布尔戈基本信息主要主题这本书的主要主题是探索人类心理防御机制的起源、功能及其在个体和社会生活中的广泛应用,以及如何识别和处理这些无意识的心理防御行为以促进个人成长和社会关系的健康。体裁社科/心理学/自我发展最吸......
  • 为什么objdump的-S选项要配合gcc的-g选项
    为什么objdump的-S选项要配合gcc的-g选项objdump的-S选项需要配合gcc的-g选项使用,以便在反汇编输出中包含源代码。首先,objdump是一个用于显示二进制目标文件信息的工具,而-S选项是其中的一个标志,它的作用是在反汇编的机器指令旁边显示相应的源代码行。这有助于理解程序的执行流程......
  • 为什么使用消息队列
    消息队列的基本作用解耦异步削峰引入消息队列会导致什么1.降低系统的可用性:系统引入的外部依赖越多,越容易挂掉2.系统的复杂度变高:使用MQ后可能需要保证消息没有被重复消费、处理消息丢失的情况、保证消息传递的顺序性等等问题3.一致性问题:A系统处理完了直接返回成功......
  • 为什么使用分布式锁
    为什么使用分布式锁为了保证一个方法或属性在高并发情况下的同一时间只能被同一个线程执行分布式锁应该具备哪些条件?1.在分布式系统环境下,一个方法在同一时间只能被一个机器的一个线程执行2.高可用的获取锁和释放锁3.高性能的获取锁和释放锁4.具备可重入特性5.具备锁实效......
  • Ollama是什么,为什么这么好用
     Ollama是一个开源框架,专为在本地机器上便捷部署和运行大型语言模型(LLM)而设计。以下是其主要特点和功能概述:1.简化部署:Ollama目标在于简化在Docker容器中部署大型语言模型的过程,使得非专业用户也能方便地管理和运行这些复杂的模型。2.轻量级与可扩展:作为轻量级框架,Olla......
  • 项目管理中,为什么关键路径是完成项目的最短时间?
    关键路径方法(CriticalPathMethod)应用于项目管理中,使用该方法可以计算出完成项目所需的最短时间,在理想情况下,至少需要这么长的时间才能完成该项目。关键路径由一系列关键节点组成,这些节点的有序排列构成了关键路径。每个关键节点都是该项目中的其中一个任务,而每个任务包括任务......
  • 项目管理中,为什么关键路径是完成项目的最短时间?
    关键路径方法(CriticalPathMethod)应用于项目管理中,使用该方法可以计算出完成项目所需的最短时间,在理想情况下,至少需要这么长的时间才能完成该项目。关键路径由一系列关键节点组成,这些节点的有序排列构成了关键路径。每个关键节点都是该项目中的其中一个任务,而每个任务包括任务......
  • 为什么需要分布式存储
    为什么需要分布式存储?这是个好问题,如下是我本人的部分理解。分布式存储,相对应的是集中式存储。作为存储系统,对客户应用而言,可以提供:结构化业务,即块服务。非结构业务,即如下:文件,比如NFS、CIFS/SMB等。对象,比如兼容AWSS3、MSAzureBlob存储等。大数据,比如兼容HDFS。FTP/F......
  • 为什么选择入行分布式存储
    一切都是机缘巧合。转岗前参与的项目出于各种原因无法继续,在原部门已无立足之处,于是阴差阳错之下,转岗加入了分布式存储的开发团队。按照领导的安排,在原服务SE的指导下,一起分担对象服务的方案设计和业务支撑工作。现产品的对象服务,对客户宣称兼容AWSS3,从产品资料看,已具备基本能力......
  • MySQL分区为什么采取质数101呢?
    MySQL分区为什么采取质数101呢?质数101个分区的底层原理涉及到MySQL分区的工作机制以及质数在分布均匀性方面的特性。MySQL分区机制:MySQL支持分区表,可以将表按照一定的规则分成多个分区,每个分区可以独立地进行管理和操作。分区表可以提高查询效率、降低维护成本、提高可用性等。......