Skip to content

nascentxyz/yobot-contracts

Repository files navigation

yobot • tests lints GitHub GitHub package.json version

Experimental, heavily-documented contracts for yobot.

Contracts

Goerli YobotERC721LimitOrder: 0x20340e29ba445553f6a5c1b8d30f405b3447664d.

Mainnet YobotERC721LimitOrder: 0x715da5e53526bedac9bd96e8fdb7efb185d1b6ca. Deployed and managed by 0xc9ab63915c6738c8ce5ca245979203bfa3f2499f - an account managed by the yobot team.

NOTE: The deployer has no ability to withdraw funds - it may only collect the yobot fees as defined in YobotERC721LimitOrder.sol. The deployer address is set as the YobotERC721LimitOrder's Coordinator.

Blueprint

src
├─ artblocks
│  ├─ GenArt721Core"..."
│  └─ YobotArtBlocksBroker"Permissionless Broker for ArtBlocks Minting using Flashbot Searchers"
├─ external
│  ├─ ERC165"A minimal ERC165 Implementation"
│  ├─ ERC721Enumerable"An extension of ERC721 that supports enumeration"
│  └─ ERC721Metadata"An Enumerable ERC721 with Metadata"
├─ interfaces
│  ├─ IArtBlocksFactory"ArtBlocksFactory Contract Interface"
│  ├─ IERC165"ERC165 Interface"
│  ├─ IERC721"ERC721 Interface"
│  └─ IERC721Enumerable"An Enumerable ERC721 Interface"
├─ mocks
│  ├─ InfiniteMint"An ERC721 allowing infinite mints for testnet"
│  └─ StrictMint"An ERC721 with strict minting"
├─ tests
│  ├─ utils
│  │  └─ DSTestPlus"Custom, extended DSTest Suite"
│  ├─ Coordinator.t — "Coordinator Tests"
│  ├─ YobotArtBlocksBroker.t — "YobotArtBlocksBroker Tests"
│  └─ YobotERC721LimitOrder.t — "YobotERC721LimitOrder Tests"
├─ utils
│  ├─ Randomizer"A random generation"
│  └─ YobotDeadline"Abstracted Deadline Logic"
├─ Coordinator"Coordinator for Fee Parameters and Reception"
└─ YobotERC721LimitOrder"Permissionless Broker for Generalized ERC721 Minting using Flashbot Searchers"

Development

First time with Forge/Foundry?

Don't have rust installed? Run

curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh

Then, install foundry with:

cargo install --git https://github.com/gakonst/foundry --bin forge --locked

Dependencies

yarn setup

Run Tests

yarn test

Deploying

View DEPLOYING.md.

License

AGPL-3.0-only

Acknowledgements

Noted Issues

On initial library import, zeppelin-solidity root contract directory will need to be changed from "contracts" to "src". Use the commands:

ln -s contracts lib/zeppelin-solidity/src
echo /src >>.git/modules/lib/zeppelin-solidity/info/exclude

Disclaimer

These smart contracts are being provided as is. No guarantee, representation or warranty is being made, express or implied, as to the safety or correctness of the user interface or the smart contracts. They have not been audited and as such there can be no assurance they will work as intended, and users may experience delays, failures, errors, omissions, loss of transmitted information or loss of funds. Nascent is not liable for any of the foregoing. Users should proceed with caution and use at their own risk.