@bananapus/permission-ids-v5
v0.0.2
Published
This repository contains permission IDs to grant scoped permissions through the [`JBPermissions`](https://github.com/Bananapus/nana-core/blob/main/src/JBPermissions.sol) contract and the [`JBPermissioned`](https://github.com/Bananapus/nana-core/blob/main/
Downloads
224
Readme
Bananapus Permission ID
This repository contains permission IDs to grant scoped permissions through the JBPermissions contract and the JBPermissioned modifier.
Usage
Install
How to install nana-permission-ids in another project.
For projects using npm to manage dependencies (recommended):
npm install @bananapus/permission-idsFor projects using forge to manage dependencies (not recommended):
forge install Bananapus/nana-permission-idsIf 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.
Develop
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 | shYou can download and install dependencies with:
forge installIf 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.
Repository Layout
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.solDescription
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-23 | nana-721-hook |
| 24-25 | nana-buyback-hook |
| 26-27 | nana-swap-terminal |
| 28-30 | 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.
