-
Notifications
You must be signed in to change notification settings - Fork 58
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge pull request #5 from lucas-manuel/master
feat: Start outlines for testing and deployments
- Loading branch information
Showing
4 changed files
with
48 additions
and
10 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,15 @@ | ||
# Deployments | ||
|
||
* How to deploy smart contracts | ||
* How to verify contracts on etherscan | ||
* How to interpret transactions on etherscan | ||
* How to interpret and debug transactions on tenderly | ||
* How to monitor smart contracts using Tenderly | ||
* How to integrate with PagerDuty and Discord | ||
* How to set up appropriate incident response procedures | ||
* How to call smart contracts from the command line (cast) | ||
* How to interact with smart contracts generally | ||
* Outline of what an ethereum transaction actually is | ||
* Outline purpose of ABIs and how they are used | ||
* Outline structure of transaction | ||
* Nonces, gasLimit, gasPrice etc |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,10 +1,18 @@ | ||
# Gas Optimization | ||
|
||
* why is this important | ||
* intuition around what assembly is generated in store/load ops | ||
* learning to optimize for low hanging fruit first | ||
* tradeoff readability for performance (asm / inline code instead of fn calls) | ||
* don't do useless gas optimizations | ||
* tradeoff UX for performance (e.g. off-chain indexers for on-chain minimalism) | ||
* immutables | ||
* uniswap snapshot testing pattern / hardhat gas table | ||
* Why is this important | ||
* Intuition around what assembly is generated in store/load ops | ||
* Learning to optimize for low hanging fruit first | ||
* Tradeoff readability for performance (assembly/inline code instead of function calls) | ||
* Don't do useless gas optimizations | ||
* Auditability is crucial for security | ||
* Tradeoff UX for performance (e.g. off-chain indexers for on-chain minimalism) | ||
* Immutables and constants | ||
* Uniswap snapshot testing pattern / hardhat gas table | ||
* Outlining opcodes https://www.evm.codes/, | ||
* Explaining MLOAD/MSTORE/SLOAD/SSTORE, | ||
* Caching variables to memory | ||
* Common patterns to save gas | ||
* (https://github.com/Rari-Capital/golf-course/tree/some-tips-to-start) plus more | ||
* Deployment costs | ||
* When to use proxy patterns (user deployments) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,13 @@ | ||
# Smart Contract Testing | ||
|
||
* How to write tests in Foundry | ||
* How to set up test files (describe/it block analogies) | ||
* How to set up actors | ||
* How to do assertions | ||
* How to use cheatcodes | ||
* How to debug using the logs/event output | ||
* How to fork mainnet and interact with deployed contracts | ||
* How to use https://www.4byte.directory/ to look up function signatures when source maps are unavailable | ||
* How to use https://adibas03.github.io/online-ethereum-abi-encoder-decoder/#/encode to decode calldata when source maps are unavailable | ||
* How to write fuzz tests effectively | ||
* How to write invariant tests |