Skip to content

Commit 11995f9

Browse files
Package ownership guide (#484)
1 parent 31ea261 commit 11995f9

9 files changed

+72
-69
lines changed
Lines changed: 72 additions & 69 deletions
Original file line numberDiff line numberDiff line change
@@ -1,20 +1,27 @@
11
# Package Ownership
22

3-
This guide outlines the role permission system used in Dappnode package management, powered by Aragon’s ACL (Access Control List) smart contracts. It explains how to check and modify roles such as permission managers and developers.
3+
This guide outlines the role permission system used in Dappnode package management, powered by Aragon’s ACL (Access Control List) smart contracts. It explains how to check and modify roles such as permission managers and developers.
44

55
Whether you're assigning roles or verifying access, this doc walks you through each step clearly and effectively.
66

77
## Roles 🎖️
88

99
For every package, there are three possible roles for any Ethereum address:
1010

11-
- **Permission manager** => The address that can grant or revoke developer permissions for other addresses. This role can be held by only one address.
12-
- **Developer** => Addresses that are allowed to publish new versions of the package.
13-
- **Default / Standard** => Addresses that do not have any permissions related to the package.
11+
- #### Permission manager:
12+
13+
The address that can grant or revoke developer permissions for other addresses. This role can be held by only one address.
14+
15+
- #### Developer:
16+
17+
Addresses that are allowed to publish new versions of the package.
18+
19+
- #### Standard:
20+
Addresses that do not have any permissions related to the package.
1421

1522
## Dappnode's ACLs :closed_lock_with_key:
1623

17-
Currently, granting or revoking developer permissions, or assigning a new permission manager, must be done through the respective smart contract ACL of the package repository.
24+
Dappnode package permissions are managed via the smart contract ACL of their respective package repositories.
1825

1926
:::info
2027
In Aragon, the ACL (Access Control List) is a core smart contract that manages permissions. It determines which address (or entity) can call which function on which app (smart contract).
@@ -25,76 +32,72 @@ In Aragon, the ACL (Access Control List) is a core smart contract that manages p
2532
- ACL `.public` => [See the SC in Etherscan](https://etherscan.io/address/0xFCb2C44E61031AE29e5c54A700FB6B4FB430dA4C#readProxyContract)
2633
- ACL `.dnp` => [See the SC in Etherscan](https://etherscan.io/address/0x89d0A07b792754460Faa49e57437B40aA33FB757#readProxyContract)
2734

28-
## Actions 💪
35+
## Package Management UI ⚙️
36+
37+
Our package publishing UI includes an "Ownership" tab that allows you to check the current role of an address for a specified package and perform actions based on that role.
38+
39+
You can access this UI by navigating to the [Dappnode SDK-publish UI](https://dappnode.github.io/sdk-publish).
2940

30-
The following outlines how to perform each possible action:
41+
Here's a guide to help you use it:
3142

32-
- **Check permission manager**
43+
1. **Connect your wallet**, if it’s not already connected. The connected wallet address will be used for role checking.
44+
![Connect Wallet](/img/pkg-ownership-connect.png)
3345

34-
1. Go to the `Read As Proxy` tab in the package's respective ACL
35-
2. Expand and provide the following arguments to the `getPermissionManager` function:
36-
- **\_app** => The address where the current version of the package is deployed
46+
2. **Click the "Ownership" tab** in the navigation bar.
47+
![Navigate to "Ownership" tab](/img/pkg-ownership-navigate.png)
3748

38-
:::info
39-
This address can be found by typing the package ENS into Etherscan's Mainnet search bar.
40-
:::
41-
- **role** => `0x0000000000000000000000000000000000000000000000000000000000000001`
42-
3. Click `Query` to retrieve the permission manager address
49+
3. **Enter the package's ENS** you want to check or manage.
50+
![Provide ENS](/img/pkg-ownership-ens.png)
4351

44-
:::info
45-
By default, the permission manager does not have publishing rights. After (or before) becoming the manager, the address must also be granted developer permissions if it intends to publish new versions.
46-
:::
52+
4. **Review your role.**
4753

48-
- **Set a new permission manager**
54+
Once the ENS is submitted, your role for the specified package will be displayed:
4955

50-
:::danger
51-
This action will revoke the current manager's permissions and assign management to a new address.
56+
- ### Standard Address
57+
58+
Your address has no special permissions for this package. You can check who the current manager is and contact them to request permission.
59+
![Standard Address](/img/pkg-ownership-standard.png)
60+
61+
- ### Developer Address
62+
63+
As a developer, you are allowed to publish new versions of the package. To do this, click on the "Publishing" tab in the navigation bar.
64+
![Developer Address](/img/pkg-ownership-developer.png)
65+
66+
:::info
67+
A package can have multiple addresses with developer permissions.
5268
:::
5369

54-
1. Go to the `Write As Proxy` tab in the package's respective ACL
55-
2. Connect with the current permission manager address (click `Connect to Web3`)
56-
3. Expand and provide the following arguments to the `setPermissionManager` function:
57-
- **\_newManager** => The address that will become the new permission manager
58-
- **\_app** => The address where the current version of the package is deployed
59-
- **role** => `0x0000000000000000000000000000000000000000000000000000000000000001`
60-
4. Click `Write` and confirm the transaction
61-
62-
- **Grant publishing permissions to an address (developer):**
63-
64-
1. Go to the `Write As Proxy` tab in the package's respective ACL
65-
2. Connect with the current permission manager address (click `Connect to Web3`)
66-
3. Expand and provide the following arguments to the `grantPermission` function:
67-
- **\_entity** => The address to be granted with developer permissions
68-
- **\_app** => The address where the current version of the package is deployed
69-
- **role** => `0x0000000000000000000000000000000000000000000000000000000000000001`
70-
4. Click `Write` and confirm the transaction
71-
72-
- **Revoke publishing permissions from an address:**
73-
74-
1. Go to the `Write As Proxy` tab in the package's respective ACL
75-
2. Connect with the current permission manager address (click `Connect to Web3`)
76-
3. Expand and provide the following arguments to the `revokePermission` function:
77-
- **\_entity** => The address to revoke developer permissions from
78-
- **\_app** => The address where the current version of the package is deployed
79-
- **role** => `0x0000000000000000000000000000000000000000000000000000000000000001`
80-
4. Click `Write` and confirm the transaction
81-
82-
- **Check if an address is a developer (can publish new versions):**
83-
84-
This is the only action that cannot be verified directly from the ACL smart contract.
85-
86-
1. Go to the smart contract address of the current package version
87-
:::info
88-
This address can be found by typing the package ENS into Etherscan's Mainnet search bar.
89-
:::
90-
91-
2. Go to the `Contract` > `Read As Proxy` tab
92-
3. Expand and provide the following arguments to the `canPerform` function:
93-
- **\_sender** => The address to check
94-
- **role** => `0x0000000000000000000000000000000000000000000000000000000000000001`
95-
- **params** => `[]` (an empty array)
96-
4. Click `Query` to receive a boolean indicating permission
97-
98-
## Package management UI ⚙️
99-
100-
Coming soon...👀
70+
- ### Manager Address
71+
72+
The manager is typically the address that published the first version of the package. It is the only address that can transfer management rights, as well as grant or revoke developer permissions.
73+
74+
:::info
75+
A package can only have one address as its package manager.
76+
:::
77+
78+
- #### Set a New Permission Manager
79+
80+
:::danger
81+
Changing the manager will transfer full control of the package to the specified address, revoking all manager permissions from the current manager. This action is irreversible.
82+
:::
83+
84+
To change the manager address, provide the new manager address and click **"Transfer Manager Role"** in the **"Change Manager"** section.
85+
86+
![Change manager Address](/img/pkg-ownership-change-manager.png)
87+
:::info
88+
Transferring the manager role does **not** automatically grant developer permissions to the new address. If you want to provide publishing access, you must grant developer rights separately.
89+
:::
90+
91+
- #### Grant Developer (Publishing Permissions)
92+
93+
Granting developer permissions allows the specified address to publish new versions of the package.
94+
95+
To do this, enter the new developer address and click **"Grant Developer Permission"** in the **"Grant Developer"** section.
96+
![Grant developer Address](/img/pkg-ownership-grant-developer.png)
97+
98+
- #### Revoke Developer (Publishing Permissions):
99+
100+
Revoking developer permissions prevents the specified address from publishing new versions of the package (if it previously had developer access).
101+
102+
To revoke, enter the address and click **"Revoke Developer Permission"** in the **"Revoke Developer"** section.
103+
![Revoke developer Address](/img/pkg-ownership-revoke-developer.png)
89.9 KB
Loading
20.1 KB
Loading
62.5 KB
Loading

static/img/pkg-ownership-ens.png

37 KB
Loading
59 KB
Loading
14.9 KB
Loading
59.6 KB
Loading
81.7 KB
Loading

0 commit comments

Comments
 (0)