This repository contains permission IDs to grant scoped permissions through the JBPermissions
contract and the JBPermissioned
modifier.
Table of Contents
How to install nana-permission-ids
in another project.
For projects using npm
to manage dependencies (recommended):
npm install @bananapus/permission-ids
For projects using forge
to manage dependencies (not recommended):
forge install Bananapus/nana-permission-ids
If you're using forge
to manage dependencies, add @bananapus/permission-ids/=lib/nana-permission-ids/
to remappings.txt
. You'll also need to install nana-permission-ids
' dependencies and add similar remappings for them.
nana-permission-ids
uses npm (version >=20.0.0) for package management and the Foundry development toolchain for builds, tests, and deployments. To get set up, install Node.js and install Foundry:
curl -L https://foundry.paradigm.xyz | sh
You can download and install dependencies with:
forge install
If you run into trouble with forge install
, try using git submodule update --init --recursive
to ensure that nested submodules have been properly initialized.
Some useful commands:
Command | Description |
---|---|
forge build |
Compile the contracts and write artifacts to out . |
forge fmt |
Format solidity files. |
forge test |
Run the tests. |
forge build --sizes |
Get contract sizes. |
forge coverage |
Generate a test coverage report. |
foundryup |
Update foundry. Run this periodically. |
forge clean |
Remove the build artifacts and cache directories. |
To learn more, visit the Foundry Book docs.
The root directory contains this README, an MIT license, and config files. If you're developing, you're probably looking for one of these:
nana-permission-ids/
├── .github/
│ └── workflows/ - CI/CD workflows.
└── src/
└── JBPermissionIds.sol
JBPermissions
allows one address to grant another address permission to call functions in Juicebox contracts on their behalf. Each ID in JBPermissionIds
grants access to a specific set of these functions.
For example, if alice.eth
owns project ID #5, she can queue new rulesets for the project. If alice.eth
gives bob.eth
permission to QUEUE_RULESETS
, bob.eth
can also queue rulesets for project ID #5.
Permission IDs | Repository |
---|---|
1 | ROOT (all Juicebox contracts) |
2-19 | nana-core |
20-22 | nana-721-hook |
23-24 | nana-buyback-hook |
25-26 | nana-swap-terminal |
27-28 | nana-suckers |
If you're having trouble understanding this contract, take a look at the core protocol contracts and the documentation first. If you have questions, reach out on Discord.