惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

D
Darknet – Hacking Tools, Hacker News & Cyber Security
NISL@THU
NISL@THU
S
Securelist
O
OpenAI News
S
Security Affairs
Cyberwarzone
Cyberwarzone
T
Threatpost
Simon Willison's Weblog
Simon Willison's Weblog
The Last Watchdog
The Last Watchdog
L
LINUX DO - 最新话题
C
Cisco Blogs
PCI Perspectives
PCI Perspectives
SecWiki News
SecWiki News
S
Secure Thoughts
GbyAI
GbyAI
I
Intezer
AWS News Blog
AWS News Blog
F
Fortinet All Blogs
I
InfoQ
阮一峰的网络日志
阮一峰的网络日志
Google Online Security Blog
Google Online Security Blog
www.infosecurity-magazine.com
www.infosecurity-magazine.com
A
About on SuperTechFans
S
Schneier on Security
P
Proofpoint News Feed
雷峰网
雷峰网
Exploit-DB.com RSS Feed
Exploit-DB.com RSS Feed
小众软件
小众软件
H
Heimdal Security Blog
Microsoft Security Blog
Microsoft Security Blog
K
KPMG report finds enterprise disconnect between AI and its ROI | CIO
T
The Exploit Database - CXSecurity.com
T
Threat Research - Cisco Blogs
V
V2EX
L
Lohrmann on Cybersecurity
Security Latest
Security Latest
A
Arctic Wolf
Apple Machine Learning Research
Apple Machine Learning Research
H
Hacker News: Front Page
Cisco Talos Blog
Cisco Talos Blog
Webroot Blog
Webroot Blog
T
Tenable Blog
MyScale Blog
MyScale Blog
博客园 - 司徒正美
S
SegmentFault 最新的问题
Y
Y Combinator Blog
腾讯CDC
Hacker News: Ask HN
Hacker News: Ask HN
M
MIT News - Artificial intelligence
G
GRAHAM CLULEY

博客园 - 外科手术医生

Spring-AI开发之旅 MACD秒解 历史的车轮 添加pdf的目录 spring ai提示词 纳瓦尔宝典-总结内容 小龙虾的skills哪里找? JMeter压测使用 Git仓库ssh不同环境配置 成功没有奇迹,只有积累----Bruce Lee git命令下,mac环境下载依赖相关报错问题解决方案 数据分析/数据挖掘/机器学习---- 必读书目(转) 简单高效的语言 OSI模型-一图胜千言 dubbo分布式系统 JVM解剖 线程池 集合类 concurrent之CAS concurrent之volatile 架构师之路 责任链设计模式 Junit框架分析 线程详解 计划自己的时间
为什么要⽤ Foundry
外科手术医生 · 2024-04-25 · via 博客园 - 外科手术医生

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