@bananapus/permission-ids
v0.0.16
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
2,539
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-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.
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 | 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.
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.sol
Description
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.