You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: packages/contracts/docs/developer-portal/01-how-it-works/01-core/02-permissions/index.md
+4-4Lines changed: 4 additions & 4 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -85,14 +85,14 @@ function grant(
85
85
To prevent these functions from being called by any address, they are themselves permissioned via the `auth` modifier and require the caller to have the `ROOT_PERMISSION_ID` permission in order to call them.
86
86
87
87
:::note
88
-
Typically, the `ROOT_PERMISSION_ID` permission is granted only to the `DAO` contract itself. Contracts related to the Aragon infrastructure temporarily require it during the [DAO creation](../../framework/dao-creation) and [plugin setup ](../../framework/plugin-management/plugin-setup) processes.
88
+
Typically, the `ROOT_PERMISSION_ID` permission is granted only to the `DAO` contract itself. Contracts related to the Aragon infrastructure temporarily require it during the [DAO creation](../../02-framework/01-dao-creation/index.md) and [plugin setup ](../../02-framework/02-plugin-management/02-plugin-setup/index.md) processes.
89
89
:::note
90
90
91
91
This means, that these functions can only be called through the DAO’s `execute` function that, in turn, requires the calling address to have the `EXECUTE_PERMISSION_ID` permission.
92
92
93
93
:::note
94
94
Typically, the `EXECUTE_PERMISSION_ID` permission is granted to governance contracts (such as a majority voting plugin owned by the DAO or a multi-sig). Accordingly, a proposal is often required to change permissions.
95
-
Exceptions are, again, the [DAO creation](../../framework/dao-creation) and [plugin setup ](../../framework/plugin-management/plugin-setup) processes.
95
+
Exceptions are, again, the [DAO creation](../../02-framework/01-dao-creation/index.md) and [plugin setup ](../../02-framework/02-plugin-management/02-plugin-setup/index.md) processes.
96
96
:::
97
97
98
98
#### Granting Permission with Conditions
@@ -110,9 +110,9 @@ function grantWithCondition(
110
110
111
111
and specifying the `_condition` contract address. This provides full flexibility to customize the conditions under which the function call is allowed.
112
112
113
-
Typically, conditions are written specifically for and installed together with [plugins](../../core/plugins).
113
+
Typically, conditions are written specifically for and installed together with [plugins](../../01-core/03-plugins/index.md).
114
114
115
-
To learn more about this advanced topic and possible applications, visit the [permission conditions](./conditions) section.
115
+
To learn more about this advanced topic and possible applications, visit the [permission conditions](./01-conditions.md) section.
Copy file name to clipboardExpand all lines: packages/contracts/docs/developer-portal/01-how-it-works/02-framework/01-dao-creation/index.md
+7-7Lines changed: 7 additions & 7 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -6,8 +6,8 @@ title: Creating a DAO
6
6
7
7
Two framework contracts manage the `DAO` contract creation process:
8
8
9
-
- The [`DAOFactory`](../../../reference-guide/framework/dao/DAOFactory)
10
-
- The [`DAORegistry`](../../../reference-guide/framework/dao/DAORegistry).
9
+
- The [`DAOFactory`](../../../03-reference-guide/framework/dao/DAOFactory.md)
10
+
- The [`DAORegistry`](../../../03-reference-guide/framework/dao/DAORegistry.md).
11
11
12
12
<!-- Add subgraphic from the framework overview main graphic-->
13
13
@@ -28,11 +28,11 @@ The `DAOFactory` create the `DAO` in four steps and interacts with the `DAORegis
28
28
29
29
2. Registers the new contract in the [`DAORegistry`](#daoregistry).
30
30
31
-
3. Installs the plugins using the `PluginSetupProcessor` (see also the section about [the plugin setup process](../plugin-management/plugin-setup/)).
31
+
3. Installs the plugins using the `PluginSetupProcessor` (see also the section about [the plugin setup process](../02-plugin-management/02-plugin-setup/index.md).
32
32
33
-
4. Sets the [native permissions](../../core/permissions#permissions-native-to-the-dao-contract) of the `DAO` and revokes its own ownership.
33
+
4. Sets the [native permissions](../../01-core/02-permissions/index.md/#permissions-native-to-the-dao-contract) of the `DAO` and revokes its own ownership.
34
34
35
-
For more details visit the [`DAOFactory` reference guide entry](../../../reference-guide/framework/dao/DAOFactory).
35
+
For more details visit the [`DAOFactory` reference guide entry](../../../03-reference-guide/framework/dao/DAOFactory.md).
36
36
37
37
### `DAORegistry`
38
38
@@ -48,8 +48,8 @@ function register(
48
48
49
49
requiring the `REGISTER_DAO_PERMISSION_ID` permission currently held only by the `DAOFactory`.
50
50
51
-
If the requested ENS `subdomain` name [is valid](../ens-names) and not taken, the `DAORegistry` registers the subdomain and adds the `DAO` contract address to the `DAORegistry`.
51
+
If the requested ENS `subdomain` name [is valid](../03-ens-names.md) and not taken, the `DAORegistry` registers the subdomain and adds the `DAO` contract address to the `DAORegistry`.
52
52
If the `subdomain` parameter is non-empty (not `""`) and still available, the ENS name will be registered.
53
53
If the registration was successful, the DAO name, contract and creator addresses are emitted in an event.
54
54
55
-
For more details visit the [`DAORegistry` reference guide entry](../../../reference-guide/framework/dao/DAORegistry).
55
+
For more details visit the [`DAORegistry` reference guide entry](../../../03-reference-guide/framework/dao/DAORegistry.md).
Copy file name to clipboardExpand all lines: packages/contracts/docs/developer-portal/01-how-it-works/02-framework/02-plugin-management/01-plugin-repo/01-plugin-repo-creation.md
+6-6Lines changed: 6 additions & 6 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -6,8 +6,8 @@ title: Publishing a Plugin
6
6
7
7
To be available for installation in the Aragon OSx framework, a `PluginRepo` must be created for each plugin. The `PluginRepo` creation process is handled by:
8
8
9
-
- The [`PluginRepoFactory`](../../../../reference-guide/framework/plugin/repo/PluginRepoFactory): who creates the `PluginRepo` instance for each plugin to hold all plugin versions
10
-
- The [`PluginRepoRegistry`](../../../../reference-guide/framework/plugin/repo/PluginRepoRegistry): who registers the Plugin into the Protocol for DAOs to install.
9
+
- The [`PluginRepoFactory`](../../../../03-reference-guide/framework/plugin/repo/PluginRepoFactory.md): who creates the `PluginRepo` instance for each plugin to hold all plugin versions
10
+
- The [`PluginRepoRegistry`](../../../../03-reference-guide/framework/plugin/repo/PluginRepoRegistry.md): who registers the Plugin into the Protocol for DAOs to install.
11
11
12
12
<!-- TODO
13
13
- call `createPluginRepoWithFirstVersion` in `PluginRepoFactory`
@@ -37,14 +37,14 @@ function createPluginRepoWithFirstVersion(
37
37
) external returns (PluginRepo pluginRepo);
38
38
```
39
39
40
-
It also registers the plugin in the Aragon OSx `PluginRepoRegistry`contract with an [ENS subdomain](../../ens-names) under the `plugin.dao.eth` domain managed by Aragon.
40
+
It also registers the plugin in the Aragon OSx `PluginRepoRegistry`contract with an [ENS subdomain](../../03-ens-names.md) under the `plugin.dao.eth` domain managed by Aragon.
41
41
42
-
Additional to the information required by the [`createVersion` function discussed earlier](./#the-pluginrepo-contract), it receives:
42
+
Additional to the information required by the [`createVersion` function discussed earlier](./index.md/#the-pluginrepo-contract), it receives:
43
43
44
44
- A valid ENS `_subdomain` unique name composed of letters from a-z, all in lower caps, separated by a `-`. For ex: `token-voting-plugin`.
45
45
- The address of the plugin repo maintainer who ends up having the `ROOT_PERMISSION_ID`, `MAINTAINER_PERMISSION_ID`, and `UPGRADE_REPO_PERMISSION_ID` permissions. These permissions enable the maintainer to call the internal `PermissionManager`, the `createVersion` and `updateReleaseMetadata` functions as well as upgrading the plugin contract.
46
46
47
-
For more details visit the [`PluginRepoFactory` Reference Guide entry](../../../../reference-guide/framework/plugin/repo/PluginRepoFactory).
47
+
For more details visit the [`PluginRepoFactory` Reference Guide entry](../../../../03-reference-guide/framework/plugin/repo/PluginRepoFactory.md).
48
48
49
49
### The `PluginRepoRegistry` Contract
50
50
@@ -62,4 +62,4 @@ address pluginRepo
62
62
}
63
63
```
64
64
65
-
For more details visit the [`PluginRepoRegistry` reference guide entry](../../../../reference-guide/framework/plugin/repo/PluginRepoRegistry).
65
+
For more details visit the [`PluginRepoRegistry` reference guide entry](../../../../03-reference-guide/framework/plugin/repo/PluginRepoRegistry.md).
Copy file name to clipboardExpand all lines: packages/contracts/docs/developer-portal/01-how-it-works/02-framework/02-plugin-management/01-plugin-repo/index.md
+6-6Lines changed: 6 additions & 6 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -12,7 +12,7 @@ Different versions might contain:
12
12
- new features
13
13
- breaking changes
14
14
15
-
`PluginRepo` contracts themselves, each associated with a different plugin, are registered in the Aragon OSx [`PluginRepoRegistry`](./plugin-repo-creation/#the-pluginreporegistry-contract) and carry their own [ENS name](../../ens-names) that the creator chooses. The [`PluginRepoRegistry` contract](./plugin-repo-creation/#the-pluginreporegistry-contract) is described in the upcoming subsection.
15
+
`PluginRepo` contracts themselves, each associated with a different plugin, are registered in the Aragon OSx [`PluginRepoRegistry`](./01-plugin-repo-creation.md/#the-pluginreporegistry-contract) and carry their own [ENS name](../../03-ens-names.md) that the creator chooses. The [`PluginRepoRegistry` contract](./01-plugin-repo-creation.md/#the-pluginreporegistry-contract) is described in the upcoming subsection.
16
16
17
17
<divclass="center-column">
18
18
@@ -27,9 +27,9 @@ Different versions might contain:
27
27
### The `PluginRepo` Contract
28
28
29
29
The `PluginRepo` contract versions the releases of a `Plugin`. The first version of a plugin is always published as release 1 and build 1 (version tag `1.1`).
30
-
When you publish the first plugin version, a new plugin repository is automatically created for you by the Aragon OSx protocol in which you are the maintainer. The creation process is described in the [plugin repo creation process](./plugin-repo-creation) section.
30
+
When you publish the first plugin version, a new plugin repository is automatically created for you by the Aragon OSx protocol in which you are the maintainer. The creation process is described in the [plugin repo creation process](./01-plugin-repo-creation.md) section.
31
31
32
-
The `PluginRepo` contract is [UUPS upgradeable](https://eips.ethereum.org/EIPS/eip-1822), inherits from the [`PermissionManager`](../../../core/permissions) and allows the maintainer of the repository to create new versions with the `createVersion` function:
32
+
The `PluginRepo` contract is [UUPS upgradeable](https://eips.ethereum.org/EIPS/eip-1822), inherits from the [`PermissionManager`](../../../01-core/02-permissions/index.md) and allows the maintainer of the repository to create new versions with the `createVersion` function:
/// @notice Creates a new plugin version as the latest build for an existing release number or the first build for a new release number for the provided `PluginSetup` contract address and metadata.
@@ -48,10 +48,10 @@ function createVersion(
48
48
The function receives four input arguments:
49
49
50
50
1. The `_release` number to create the build for. If the release number exists already (e.g., release `1`), it is registered as the latest build (e.g., `1.3` if the previous build was `1.2`). If it is a new release number, the build number is `1` (e.g., `2.1`).
51
-
2. The address of `PluginSetup` contract internally referencing the implementation contract (to copy, proxy, or clone from it) and taking care of [installing, updating to, and uninstalling](../plugin-setup) this specific version.
51
+
2. The address of `PluginSetup` contract internally referencing the implementation contract (to copy, proxy, or clone from it) and taking care of [installing, updating to, and uninstalling](../02-plugin-setup/index.md) this specific version.
52
52
3. The `_buildMetadata` URI pointing to a JSON file containing the UI data, setup data, and change description for this specific version.
53
53
4. The `_releaseMetadata` URI pointing to a JSON file containing the plugin name, description, as well as optional data such as images to be shown in the aragonApp frontend.
54
54
55
-
Other functions present in the contract allow you to query previous versions and to update the release metadata. For more details visit the [`PluginRepo` reference guide entry](../../../../reference-guide/framework/plugin/repo/PluginRepo).
55
+
Other functions present in the contract allow you to query previous versions and to update the release metadata. For more details visit the [`PluginRepo` reference guide entry](../../../../03-reference-guide/framework/plugin/repo/PluginRepo.md).
56
56
57
-
The `PluginRepo` is created for you when you publish the `PluginSetup` contract of your first version to the Aragon OSx protocol, which is explained in the next section: [The Plugin Repo Creation Process](plugin-repo-creation).
57
+
The `PluginRepo` is created for you when you publish the `PluginSetup` contract of your first version to the Aragon OSx protocol, which is explained in the next section: [The Plugin Repo Creation Process](01-plugin-repo-creation.md).
Copy file name to clipboardExpand all lines: packages/contracts/docs/developer-portal/01-how-it-works/02-framework/02-plugin-management/02-plugin-setup/01-security-risk-mitigation.md
+3-3Lines changed: 3 additions & 3 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -29,7 +29,7 @@ that might be carelessly or intentionally caused, a malicious plugin can hide **
29
29
30
30
#### Permissions
31
31
32
-
Examples for elevated permissions, are the [permissions native to the DAO contract](../../../core/permissions#permissions-native-to-the-dao-contract) such as
32
+
Examples for elevated permissions, are the [permissions native to the DAO contract](../../../01-core/02-permissions/index.md/#permissions-native-to-the-dao-contract) such as
33
33
34
34
-`ROOT_PERMISSION_ID`
35
35
-`EXECUTE_PERMISSION_ID`
@@ -59,5 +59,5 @@ Generally, we recommend only installing plugins from trusted, verified sources s
59
59
60
60
More information can be found in the How-to guides
61
61
62
-
-[Operating your DAO](../../../../how-to-guides/dao)
63
-
-[Developing a Plugin](../../../../how-to-guides/plugin-development)
62
+
-[Operating your DAO](../../../../02-how-to-guides/01-dao/index.md)
63
+
-[Developing a Plugin](../../../../02-how-to-guides/02-plugin-development/index.md)
Copy file name to clipboardExpand all lines: packages/contracts/docs/developer-portal/01-how-it-works/02-framework/03-ens-names.md
+2-2Lines changed: 2 additions & 2 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -4,10 +4,10 @@ title: ENS Names
4
4
5
5
## Unique DAO and Plugin Repo Names
6
6
7
-
To make DAOs and plugin repositories easily identifiable in the Aragon OSx ecosystem, we assign unique ENS names to them upon registration during the [DAO creation](./dao-creation/) and [plugin publishing](./plugin-management/plugin-repo/plugin-repo-creation) processes.
7
+
To make DAOs and plugin repositories easily identifiable in the Aragon OSx ecosystem, we assign unique ENS names to them upon registration during the [DAO creation](./01-dao-creation/index.md/) and [plugin publishing](./02-plugin-management/01-plugin-repo/01-plugin-repo-creation.md) processes.
8
8
9
9
:::info
10
-
You can skip registering an ENS name for your DAO under the `dao.eth` by leaving the [`DAOSettings.subdomain` field](../../reference-guide/framework/dao/DAOFactory#public-struct-daosettings) empty when calling the [`createDao`](../../reference-guide/framework/dao/DAOFactory#external-function-createdao) function.
10
+
You can skip registering an ENS name for your DAO under the `dao.eth` by leaving the [`DAOSettings.subdomain` field](../../03-reference-guide/framework/dao/DAOFactory.md#public-struct-daosettings) empty when calling the [`createDao`](../../03-reference-guide/framework/dao/DAOFactory.md#external-function-createdao) function.
Copy file name to clipboardExpand all lines: packages/contracts/docs/developer-portal/02-how-to-guides/01-dao/02-action-execution.md
+4-4Lines changed: 4 additions & 4 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -6,7 +6,7 @@ title: Executing actions on behalf of the DAO
6
6
7
7
Executing actions on behalf of the DAO is done through the `execute` function from the `DAO.sol` contract. This function allows us to [pass an array of actions)](https://github.com/aragon/osx/blob/develop/packages/contracts/src/core/dao/DAO.sol) to be executed by the DAO contract itself.
8
8
9
-
However, for the `execute` call to work, the address calling the function (the `msg.sender`) needs to have the [`EXECUTE_PERMISSION`](../../how-it-works/core/permissions#permissions-native-to-the-dao-contract). This is to prevent anyone from being able to execute actions on behalf of the DAO and keep your assets safe from malicious actors.
9
+
However, for the `execute` call to work, the address calling the function (the `msg.sender`) needs to have the [`EXECUTE_PERMISSION`](../../01-how-it-works/01-core/02-permissions/index.md#permissions-native-to-the-dao-contract). This is to prevent anyone from being able to execute actions on behalf of the DAO and keep your assets safe from malicious actors.
10
10
11
11
## How to grant the Execute Permission
12
12
@@ -27,7 +27,7 @@ You probably don't want to grant `EXECUTE_PERMISSION` to any random address, sin
27
27
28
28
### Calling a DAO Function
29
29
30
-
Imagine you want to call an internal function inside the `DAO` contract, for example, to manually [grant or revoke a permission](../../how-it-works/core/permissions). The corresponding `Action` and `execute` function call look as follows:
30
+
Imagine you want to call an internal function inside the `DAO` contract, for example, to manually [grant or revoke a permission](../../01-how-it-works/01-core/02-permissions/index.md). The corresponding `Action` and `execute` function call look as follows:
31
31
32
32
```solidity
33
33
function exampleGrantCall(
@@ -54,9 +54,9 @@ function exampleGrantCall(
54
54
}
55
55
```
56
56
57
-
Here we use the selector of the [`grant` function](../../reference-guide/core/permission/PermissionManager#external-function-grant). To revoke the permission, the selector of the [`revoke` function](../../reference-guide/core/permission/PermissionManager#external-function-revoke) must be used.
57
+
Here we use the selector of the [`grant` function](../../03-reference-guide/core/permission/PermissionManager.md/#external-function-grant). To revoke the permission, the selector of the [`revoke` function](../../03-reference-guide/core/permission/PermissionManager.md/#external-function-revoke) must be used.
58
58
59
-
If the caller possesses the [`ROOT_PERMISSION_ID` permission](../../how-it-works/core/permissions#permissions-native-to-the-dao-contract) on the DAO contract, the call becomes simpler and cheaper:
59
+
If the caller possesses the [`ROOT_PERMISSION_ID` permission](../../01-how-it-works/01-core/02-permissions/index.md#permissions-native-to-the-dao-contract) on the DAO contract, the call becomes simpler and cheaper:
60
60
61
61
:::caution
62
62
Granting the `ROOT_PERMISSION_ID` permission to other contracts other than the `DAO` contract is dangerous and considered as an anti-pattern.
0 commit comments