Permission Controls
Permissions outline which wallet addresses can perform which actions on your smart contract.
To define which wallets have these permissions, you must add them to the required role.
Each contract has a different set of configurable roles, you can find the full list in the ALL_ROLES variable.
Role Name | Description | Relevant Contracts |
---|---|---|
admin | Grant or revoke roles and modify settings on this contract. | All contracts |
minter | Create new tokens on this contract. | NFTs, Tokens |
transfer | Transfer tokens on this contract. | NFTs, Tokens |
unwrap | Can unwrap tokens on this contract. | Multiwrap, Pack |
lister | Can create new listings on this marketplace contract. | Marketplace |
pauser | Can pause (and unpause) all external calls made to this contract's contract. | Custom |
asset | Which assets can be listed on this marketplace contract. | Marketplace |
Read All Members of All Roles
Get all roles and all the members of each role.
- React
- Javascript
- Python
- Go
React SDK support for getAll is coming soon.
Want this feature sooner? Let us know in Discord!
const rolesAndMembers = await contract.roles.getAll();
Python SDK support for getAll is coming soon.
Want this feature sooner? Let us know in Discord!
Go SDK support for getAll is coming soon.
Want this feature sooner? Let us know in Discord!
Read Members of a Role
Get the wallet addresses of a specific role.
- React
- Javascript
- Python
- Go
React SDK support for get is coming soon.
Want this feature sooner? Let us know in Discord!
const minterAddresses = await contract.roles.get("minter");
Python SDK support for get is coming soon.
Want this feature sooner? Let us know in Discord!
Go SDK support for get is coming soon.
Want this feature sooner? Let us know in Discord!
Grant Role
- React
- Javascript
- Python
- Go
React SDK support for grant is coming soon.
Want this feature sooner? Let us know in Discord!
await contract.roles.grant("minter", "0x1234567890123456789012345678901234567890");
Python SDK support for grant is coming soon.
Want this feature sooner? Let us know in Discord!
Go SDK support for grant is coming soon.
Want this feature sooner? Let us know in Discord!
Revoke Role
- React
- Javascript
- Python
- Go
React SDK support for revoke is coming soon.
Want this feature sooner? Let us know in Discord!
await contract.roles.revoke("minter", "0x1234567890123456789012345678901234567890");
Python SDK support for revoke is coming soon.
Want this feature sooner? Let us know in Discord!
Go SDK support for revoke is coming soon.
Want this feature sooner? Let us know in Discord!
Set All Roles (Overwrite)
This will overwrite all existing permissions on this contract.
THIS INCLUDES YOUR OWN WALLET ADDRESS.
If you revoke your admin permissions, you will not be able to get them back.
Only proceed if you know what you are doing.
- React
- Javascript
- Python
- Go
React SDK support for setAll is coming soon.
Want this feature sooner? Let us know in Discord!
const minterAddresses = await contract.roles.get("minter");
await contract.roles.setAll({
minter: []
});
console.log(await contract.roles.get("minter")); // No matter what members had the role before, the new list will be set to []
Python SDK support for setAll is coming soon.
Want this feature sooner? Let us know in Discord!
Go SDK support for setAll is coming soon.
Want this feature sooner? Let us know in Discord!
Update Roles
- Read the current roles from the
get
function. - Modify the array for the role you want to update.
- Call the
setAll
function with the modified array.
const rolesAndMembers = await contract.roles.getAll();
const updatedRoles = {
...rolesAndMembers,
admin: [...rolesAndMembers.admin, "0x-new-address-here"],
};
await contract.roles.setAll(updatedRoles);