From 3926efc3355059d14fbc908e4341c024c1bed362 Mon Sep 17 00:00:00 2001 From: MrDeadCe11 Date: Sat, 21 Sep 2024 14:26:32 -0500 Subject: [PATCH] yarn setup anmd changed readme --- README.md | 206 +----------------------------------------------------- bun.lockb | Bin 28441 -> 0 bytes 2 files changed, 1 insertion(+), 205 deletions(-) delete mode 100755 bun.lockb diff --git a/README.md b/README.md index f63c082..4a7f559 100644 --- a/README.md +++ b/README.md @@ -1,205 +1 @@ -# Foundry Template [![Open in Gitpod][gitpod-badge]][gitpod] [![Github Actions][gha-badge]][gha] [![Foundry][foundry-badge]][foundry] [![License: MIT][license-badge]][license] - -[gitpod]: https://gitpod.io/#https://github.com/PaulRBerg/foundry-template -[gitpod-badge]: https://img.shields.io/badge/Gitpod-Open%20in%20Gitpod-FFB45B?logo=gitpod -[gha]: https://github.com/PaulRBerg/foundry-template/actions -[gha-badge]: https://github.com/PaulRBerg/foundry-template/actions/workflows/ci.yml/badge.svg -[foundry]: https://getfoundry.sh/ -[foundry-badge]: https://img.shields.io/badge/Built%20with-Foundry-FFDB1C.svg -[license]: https://opensource.org/licenses/MIT -[license-badge]: https://img.shields.io/badge/License-MIT-blue.svg - -A Foundry-based template for developing Solidity smart contracts, with sensible defaults. - -## What's Inside - -- [Forge](https://github.com/foundry-rs/foundry/blob/master/forge): compile, test, fuzz, format, and deploy smart - contracts -- [Forge Std](https://github.com/foundry-rs/forge-std): collection of helpful contracts and utilities for testing -- [Prettier](https://github.com/prettier/prettier): code formatter for non-Solidity files -- [Solhint](https://github.com/protofire/solhint): linter for Solidity code - -## Getting Started - -Click the [`Use this template`](https://github.com/PaulRBerg/foundry-template/generate) button at the top of the page to -create a new repository with this repo as the initial state. - -Or, if you prefer to install the template manually: - -```sh -$ mkdir my-project -$ cd my-project -$ forge init --template PaulRBerg/foundry-template -$ bun install # install Solhint, Prettier, and other Node.js deps -``` - -If this is your first time with Foundry, check out the -[installation](https://github.com/foundry-rs/foundry#installation) instructions. - -## Features - -This template builds upon the frameworks and libraries mentioned above, so please consult their respective documentation -for details about their specific features. - -For example, if you're interested in exploring Foundry in more detail, you should look at the -[Foundry Book](https://book.getfoundry.sh/). In particular, you may be interested in reading the -[Writing Tests](https://book.getfoundry.sh/forge/writing-tests.html) tutorial. - -### Sensible Defaults - -This template comes with a set of sensible default configurations for you to use. These defaults can be found in the -following files: - -```text -├── .editorconfig -├── .gitignore -├── .prettierignore -├── .prettierrc.yml -├── .solhint.json -├── foundry.toml -└── remappings.txt -``` - -### VSCode Integration - -This template is IDE agnostic, but for the best user experience, you may want to use it in VSCode alongside Nomic -Foundation's [Solidity extension](https://marketplace.visualstudio.com/items?itemName=NomicFoundation.hardhat-solidity). - -For guidance on how to integrate a Foundry project in VSCode, please refer to this -[guide](https://book.getfoundry.sh/config/vscode). - -### GitHub Actions - -This template comes with GitHub Actions pre-configured. Your contracts will be linted and tested on every push and pull -request made to the `main` branch. - -You can edit the CI script in [.github/workflows/ci.yml](./.github/workflows/ci.yml). - -## Installing Dependencies - -Foundry typically uses git submodules to manage dependencies, but this template uses Node.js packages because -[submodules don't scale](https://twitter.com/PaulRBerg/status/1736695487057531328). - -This is how to install dependencies: - -1. Install the dependency using your preferred package manager, e.g. `bun install dependency-name` - - Use this syntax to install from GitHub: `bun install github:username/repo-name` -2. Add a remapping for the dependency in [remappings.txt](./remappings.txt), e.g. - `dependency-name=node_modules/dependency-name` - -Note that OpenZeppelin Contracts is pre-installed, so you can follow that as an example. - -## Writing Tests - -To write a new test contract, you start by importing `Test` from `forge-std`, and then you inherit it in your test -contract. Forge Std comes with a pre-instantiated [cheatcodes](https://book.getfoundry.sh/cheatcodes/) environment -accessible via the `vm` property. If you would like to view the logs in the terminal output, you can add the `-vvv` flag -and use [console.log](https://book.getfoundry.sh/faq?highlight=console.log#how-do-i-use-consolelog). - -This template comes with an example test contract [Foo.t.sol](./test/Foo.t.sol) - -## Usage - -This is a list of the most frequently needed commands. - -### Build - -Build the contracts: - -```sh -$ forge build -``` - -### Clean - -Delete the build artifacts and cache directories: - -```sh -$ forge clean -``` - -### Compile - -Compile the contracts: - -```sh -$ forge build -``` - -### Coverage - -Get a test coverage report: - -```sh -$ forge coverage -``` - -### Deploy - -Deploy to Anvil: - -```sh -$ forge script script/Deploy.s.sol --broadcast --fork-url http://localhost:8545 -``` - -For this script to work, you need to have a `MNEMONIC` environment variable set to a valid -[BIP39 mnemonic](https://iancoleman.io/bip39/). - -For instructions on how to deploy to a testnet or mainnet, check out the -[Solidity Scripting](https://book.getfoundry.sh/tutorials/solidity-scripting.html) tutorial. - -### Format - -Format the contracts: - -```sh -$ forge fmt -``` - -### Gas Usage - -Get a gas report: - -```sh -$ forge test --gas-report -``` - -### Lint - -Lint the contracts: - -```sh -$ bun run lint -``` - -### Test - -Run the tests: - -```sh -$ forge test -``` - -Generate test coverage and output result to the terminal: - -```sh -$ bun run test:coverage -``` - -Generate test coverage with lcov report (you'll have to open the `./coverage/index.html` file in your browser, to do so -simply copy paste the path): - -```sh -$ bun run test:coverage:report -``` - -## Related Efforts - -- [abigger87/femplate](https://github.com/abigger87/femplate) -- [cleanunicorn/ethereum-smartcontract-template](https://github.com/cleanunicorn/ethereum-smartcontract-template) -- [foundry-rs/forge-template](https://github.com/foundry-rs/forge-template) -- [FrankieIsLost/forge-template](https://github.com/FrankieIsLost/forge-template) - -## License - -This project is licensed under MIT. +This is the Yieldnest EigenLayer Airdrop Contracts diff --git a/bun.lockb b/bun.lockb deleted file mode 100755 index 86d5c93cd74609bc9ea3f2465af343852a58d7c6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 28441 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