Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/jbx-protocol/juice-extensions-collection
A collection of existing treasury extensions for Juicebox V2
https://github.com/jbx-protocol/juice-extensions-collection
ethereum juicebox solidity
Last synced: 3 days ago
JSON representation
A collection of existing treasury extensions for Juicebox V2
- Host: GitHub
- URL: https://github.com/jbx-protocol/juice-extensions-collection
- Owner: jbx-protocol
- Created: 2022-04-26T03:36:10.000Z (over 2 years ago)
- Default Branch: main
- Last Pushed: 2022-12-20T16:23:23.000Z (almost 2 years ago)
- Last Synced: 2024-04-14T10:45:21.944Z (7 months ago)
- Topics: ethereum, juicebox, solidity
- Language: Solidity
- Homepage:
- Size: 2.36 MB
- Stars: 2
- Watchers: 2
- Forks: 1
- Open Issues: 5
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# Juice Extension Templates
This repo provides some implementation templates of peripheral contracts of the Juicebox V2 ecosystem, as well as some common implementation as examples.
# Install Foundry
To get set up:
1. Install [Foundry](https://github.com/gakonst/foundry).
```bash
curl -L https://foundry.paradigm.xyz | sh
```2. Install external lib(s)
```bash
git submodule update --init && yarn install
```then run
```bash
forge update
```If git modules are failing to clone, not installing, etc (ie overall submodule misbehaving), use `git submodule update --init --recursive --force`
3. Run tests:
```bash
forge test
```4. Update Foundry periodically:
```bash
foundryup
```## Content
This repo is organised as follow:
- contracts/Allocator: contains an IJBSplitsAllocator implementation template (Allocator.sol) as well as existing implementions, in contracts/Allocator/examples:
-- SunsetAllocator.sol: an allocator providing custom sunsets (a timestamp after which a reccuring payment is not made anymore) to each beneficiaries of a group of splits- contracts/DatasourceDelegate: contains an IJBFundingCycleDataSource, IJBPayDelegate and IJBRedemptionDelegate implementation templates (DataSourceDelegate.sol) as well as existing implementions, in contracts/Allocator/examples:
-- NFT directory: a datasource minting a NFT for every contribution and a redemption delegate preventing redemption for non-NFT holder ("closed-loop treasury")
-- payment routing/: A datasource-delegate following the best possible route between minting and token buy on secondary market, in order to maximise the amount of token received by the contributor.- contracts/Terminal: contains an IJBPaymentTerminal and IJBRedemptionTerminal implementation template.
## Tests
Test for every extension are provided in contracts/test. Those test are using a complete Juicebox contracts deployment (provided in helpers/TestBaseWorkflow) without requiring a forked network.
# Deploy & verify
#### Setup
Configure the .env variables, and add a mnemonic.txt file with the mnemonic of the deployer wallet. The sender address in the .env must correspond to the mnemonic account.
## Rinkeby
```bash
yarn deploy-rinkeby
```## Mainnet
```bash
yarn deploy-mainnet
```The deployments are stored in ./broadcast
See the [Foundry Book for available options](https://book.getfoundry.sh/reference/forge/forge-create.html).