Delegation Permissions
Introduction
Making a project and managing it is a team effort. In Honeycomb, you can delegate permissions to other users to help you manage your project.
This page highlights all the delegate permissions available in Honeycomb Protocol and how much control each permission grants to the delegatee.
Delegation Permissions
Projects, Users, and Profiles
The project owner has full control over the project and they can manage all aspects of the project, including adding and removing team members, changing project settings, and they can delegate the following permissions for the HiveControl
service:
HiveControlPermissionInput.ManageProjectDriver
: This permission allows the delegatee to add/change the project driver.HiveControlPermissionInput.ManageServices
: This permission allows the delegatee to add or remove Honeycomb Protocol services from the project.HiveControlPermissionInput.ManageCriterias
: This permission allows the delegatee to manage the project's badge criterias.HiveControlPermissionInput.UpdatePlatformData
: This permission allows the delegatee to update the platform data of a project's profiles.
Chararcters
These are the permissions for the CharacterManager
service:
CharacterManager.ManageAssemblerConfig
: This permission allows the delegatee to create and manage the assembler configuration.CharacterManager.ManageCharacterModels
: This permissions allows the delegatee to add or remove character models into a project.CharacterManager.AssignCharacterTraits
: This permission allows the delegatee to assign character traits to a character model.
Resources
These are the permissions for the ResourceManager
service:
ResourceManagerPermissionInput.CreateResources
: This permission allows the delegatee to create new resources for a project.ResourceManagerPermissionInput.MintResources
: This permission allows a delegatee to mint resources.ResourceManagerPermissionInput.BurnResources
: This permission allows a delegatee to burn resources.ResourceManagerPermissionInput.CreateFaucet
: This permission allows a delegatee to create a claim faucet.ResourceManagerPermissionInput.CreateRecipe
: This permission allows a delegatee to define recipes for crafting/cooking items.
Missions
These are the permissions for the NectarMissions
service:
NectarMissionsPermissionInput.ManageMissionPool
: This permission allows the delegatee to create and manage the mission pool.NectarMissionsPermissionInput.WithdrawMissionPoolRewards
: This permission allows the delegatee to withdraw mission pool rewards.
Staking
These are the permissions for the NectarStaking
service:
NectarStakingPermissionInput.ManageStakingPool
: This permission allows the delegatee to create and manage the staking pool.NectarStakingPermissionInput.WithdrawStakingPoolRewards
: This permission allows the delegatee to withdraw staking pool rewards.
Example Usage
The following example demonstrates how to delegate permissions to another wallet:
import {
ResourceManagerPermissionInput,
CharacterManagerPermissionInput,
} from "@honeycomb-protocol/edge-client";
import client from "./utils";
const {
createCreateDelegateAuthorityTransaction: txResponse, // This is the transaction response, you'll need to sign and send this transaction
} = await client.createCreateDelegateAuthorityTransaction({
authority: adminPublicKey.toString(),
delegate: delegatePublicAddress.toString(),
project: projectAddress.toString(),
payer: txPayerPublicKey.toString(), // Optional, the transaction payer's public key
serviceDelegations: {
ResourceManager: [
{
permission: ResourceManagerPermissionInput.CreateResources,
},
],
CharacterManager: [
{
index: 0,
permission: CharacterManagerPermissionInput.ManageCharacterModels,
},
],
},
});
For each service, you can put an array in the serviceDelegations
object. The arrays contain permission inputs for a given service. You can import the permission input enums from @honeycomb-protocol/edge-client
. The example above shows how to delegate permissions for the ResourceManager
and CharacterManager
services.