Skip to content

ML-Village/dozer-contracts

Repository files navigation

Dozer Game Smart Contracts

This repo contains smart contracts & unit tests for ETH Brussels Hackathon "Shitcoin Dozer Game Contract" using Foundry.

Deployed Addresses (Game)

Base : 0x9d71865290cca388D427807C971fe7f6C364f5B4 Arbi : 0x254aEC4487b08A53c32De73f234574246f1A0052 Scroll : 0x9Db954a49B6Bf304ACc4B5D76c723c1cC9C7E073 Rootstock : 0x9DB954a49b6bf304aCc4B5D76C723C1cC9C7E073 APE Chain : 0x9Db954a49B6Bf304ACc4B5D76c723c1cC9C7E073 Zircuit : 0x9Db954a49B6Bf304ACc4B5D76c723c1cC9C7E073

How to start

Requirements

  • First you will need to install Foundry. NOTE: If you are on a windows machine it is recommended to use WSL
  • Install Node.js

Clone this repository

git clone --recursive https://github.com/yearn/tokenized-strategy-foundry-mix

cd tokenized-strategy-foundry-mix

yarn

Set your environment Variables

Use the .env.example template to create a .env file and store the environement variables. You will need to populate the RPC_URL for the desired network(s). RPC url can be obtained from various providers, including Ankr (no sign-up required) and Infura.

Use .env file

  1. Make a copy of .env.example
  2. Add the value for ETH_RPC_URL and other example vars NOTE: If you set up a global environment variable, that will take precedence.

Build the project

make build

Run tests

make test

Example:

Strategy _strategy = new Strategy(asset, name);
IStrategyInterface strategy =  IStrategyInterface(address(_strategy));

Due to the permissionless nature of the tokenized Strategies, all tests are written without integration with any meta vault funding it. While those tests can be added, all V3 vaults utilize the ERC-4626 standard for deposit/withdraw and accounting, so they can be plugged in easily to any number of different vaults with the same asset.

Tests run in fork environment, you need to complete the full installation and setup to be able to run these commands.

make test

Run tests with traces (very useful)

make trace

Run specific test contract (e.g. test/StrategyOperation.t.sol)

make test-contract contract=StrategyOperationsTest

Run specific test contract with traces (e.g. test/StrategyOperation.t.sol)

make trace-contract contract=StrategyOperationsTest

See here for some tips on testing Testing Tips

When testing on chains other than mainnet you will need to make sure a valid CHAIN_RPC_URL for that chain is set in your .env. You will then need to simply adjust the variable that RPC_URL is set to in the Makefile to match your chain.

To update to a new API version of the TokenizeStrategy you will need to simply remove and reinstall the dependency.

Deployment

Contract Verification

Once the Strategy is fully deployed and verified, you will need to verify the TokenizedStrategy functions. To do this, navigate to the /#code page on Etherscan.

  1. Click on the More Options drop-down menu
  2. Click "is this a proxy?"
  3. Click the "Verify" button
  4. Click "Save"

This should add all of the external TokenizedStrategy functions to the contract interface on Etherscan.

CI

This repo uses GitHub Actions for CI. There are three workflows: lint, test and slither for static analysis.

To enable test workflow you need to add the ETH_RPC_URL secret to your repo. For more info see GitHub Actions docs.

If the slither finds some issues that you want to suppress, before the issue add comment: //slither-disable-next-line DETECTOR_NAME. For more info about detectors see Slither docs.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published