Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
46 commits
Select commit Hold shift + click to select a range
f2ac355
Add replacements for compact contracts
emnul Sep 25, 2025
002523e
Use newly defined replacement syntax
emnul Sep 25, 2025
fd9f9e9
Reorg Access pages
emnul Sep 26, 2025
75d8871
Fix malformed link
emnul Sep 26, 2025
8f56682
Add Access Control intro block
emnul Sep 26, 2025
73ac864
Add link
emnul Sep 26, 2025
2f14f1c
Update imports
emnul Sep 26, 2025
958964e
Update import
emnul Sep 26, 2025
aa82fe3
Add additional links, fix formatting
emnul Sep 26, 2025
c5c189b
Rename document, fix import paths, broken link
emnul Sep 26, 2025
f02d50b
update import paths
emnul Sep 26, 2025
ce7a1c0
Update import paths, links
emnul Sep 26, 2025
25230f3
Update import paths, url path
emnul Sep 29, 2025
7c3f6a6
Update import paths
emnul Sep 29, 2025
ef6e220
update import paths
emnul Sep 29, 2025
3fbd4d2
Merge branch 'main' into update-compact-docs
emnul Sep 29, 2025
e5a3179
Fix formatting
emnul Sep 29, 2025
e825011
update imports
emnul Sep 29, 2025
aaa7c0c
Update import
emnul Sep 29, 2025
4cd7b1a
Update page names
emnul Sep 29, 2025
14f1c96
Update Page name
emnul Sep 29, 2025
9bb537f
Rename files and update paths
emnul Sep 29, 2025
0f9974f
Fix toc formatting
emnul Sep 29, 2025
71e9f43
Update import path
emnul Sep 29, 2025
c9f73ad
Fix toc formatting
emnul Sep 29, 2025
b99decd
update import
emnul Sep 29, 2025
9f79196
Fix toc formatting
emnul Sep 29, 2025
f99d585
Update import path
emnul Sep 29, 2025
2509c7e
Fix toc formatting
emnul Sep 29, 2025
e6556ed
Update import path
emnul Sep 29, 2025
e944eef
Fix toc formatting
emnul Sep 29, 2025
cbbc000
Fix import path
emnul Sep 29, 2025
f578f25
Fix toc formatting
emnul Sep 29, 2025
01ff0c6
Fix toc formating
emnul Sep 29, 2025
6a80c79
Update section org
emnul Sep 29, 2025
c127f83
Update section org
emnul Sep 29, 2025
e94f6ed
format:fix
emnul Sep 29, 2025
7093431
Update links
emnul Sep 29, 2025
80e7475
Update broken link
emnul Sep 29, 2025
1156988
Update content/contracts-compact/utils/constants.js
emnul Sep 29, 2025
7cf6bda
Merge branch 'main' into update-compact-docs
emnul Sep 29, 2025
e0943e5
Merge branch 'update-compact-docs' of https://github.com/OpenZeppelin…
emnul Sep 29, 2025
1e1fb12
Remove Core H2
emnul Sep 29, 2025
44341c6
Update module formating to use GitHubLinkHeader
emnul Sep 29, 2025
9ef2461
Fix invalid DOM property error
emnul Sep 29, 2025
5de8da3
format:fix
emnul Sep 29, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
---
title: Access Control
title: AccessControl
---

{/* links */}
Expand All @@ -9,14 +9,14 @@ title: Access Control
[FungibleToken]: ./fungibleToken.mdx
[Ownable]: ./ownable.mdx
[Initializable]: ./security#initializable
[AccessControl]: api/accessControl.mdx#accessControl
[AccessControl]: api/accessControl

[assertOnlyRole]: api/access#AccessControl-assertOnlyRole
[grantRole]: api/access#AccessControl-grantRole
[_grantRole]: api/access#AccessControl-_grantRole
[_unsafeGrantRole]: api/access#AccessControl-_unsafeGrantRole
[revokeRole]: api/access#AccessControl-revokeRole
[_setRoleAdmin]: api/access#AccessControl-_setRoleAdmin
[assertOnlyRole]: api/accessControl#AccessControl-assertOnlyRole
[grantRole]: api/accessControl#AccessControl-grantRole
[_grantRole]: api/accessControl#AccessControl-_grantRole
[_unsafeGrantRole]: api/accessControl#AccessControl-_unsafeGrantRole
[revokeRole]: api/accessControl#AccessControl-revokeRole
[_setRoleAdmin]: api/accessControl#AccessControl-_setRoleAdmin

This module provides a role-based access control mechanism,
where roles can be used to represent a set of permissions providing the flexibility to create different levels of account authorization.
Expand Down Expand Up @@ -50,12 +50,12 @@ Here’s a simple example of using `AccessControl` with [FungibleToken] to defin
which allows accounts that have this role to create new tokens:

```ts
pragma language_version >= 0.16.0;
pragma language_version >= {{compact_language_version}};

import CompactStandardLibrary;
import "./node_modules/@openzeppelin-compact/access-control/src/AccessControl"
import "./compact-contracts/node_modules/@openzeppelin-compact/contracts/src/access/AccessControl"
prefix AccessControl_;
import "./node_modules/@openzeppelin-compact/fungible-token/src/FungibleToken"
import "./compact-contracts/node_modules/@openzeppelin-compact/contracts/src/token/FungibleToken"
prefix FungibleToken_;

export sealed ledger MINTER_ROLE: Bytes<32>;
Expand Down Expand Up @@ -93,12 +93,12 @@ which can be implemented by defining _multiple_ roles.
Let's augment our FungibleToken example by also defining a 'burner' role, which lets accounts destroy tokens.

```ts
pragma language_version >= 0.16.0;
pragma language_version >= {{compact_language_version}};

import CompactStandardLibrary;
import "./node_modules/@openzeppelin-compact/access-control/src/AccessControl"
import "./compact-contracts/node_modules/@openzeppelin-compact/contracts/src/access/AccessControl"
prefix AccessControl_;
import "./node_modules/@openzeppelin-compact/fungible-token/src/FungibleToken"
import "./compact-contracts/node_modules/@openzeppelin-compact/contracts/src/token/FungibleToken"
prefix FungibleToken_;

export sealed ledger MINTER_ROLE: Bytes<32>;
Expand Down Expand Up @@ -169,12 +169,12 @@ and in fact it is also its own admin, this role carries significant risk.
Let’s take a look at the FungibleToken example, this time taking advantage of the default admin role:

```ts
pragma language_version >= 0.16.0;
pragma language_version >= {{compact_language_version}};

import CompactStandardLibrary;
import "./node_modules/@openzeppelin-compact/access-control/src/AccessControl"
import "./compact-contracts/node_modules/@openzeppelin-compact/contracts/src/access/AccessControl"
prefix AccessControl_;
import "./node_modules/@openzeppelin-compact/fungible-token/src/FungibleToken"
import "./compact-contracts/node_modules/@openzeppelin-compact/contracts/src/token/FungibleToken"
prefix FungibleToken_;

export sealed ledger MINTER_ROLE: Bytes<32>;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ The best way to achieve this is by using `export sealed ledger` hash digests tha

```typescript
import CompactStandardLibrary;
import "./node_modules/@openzeppelin-compact/contracts/src/access/AccessControl"
import "./compact-contracts/node_modules/@openzeppelin-compact/contracts/src/access/AccessControl"
prefix AccessControl_;

export sealed ledger MY_ROLE: Bytes<32>;
Expand Down Expand Up @@ -45,21 +45,22 @@ implement the `Initializable` module and set `DEFAULT_ADMIN_ROLE` in the `initia
</Callout>

<Callout type='info'>
For an overview of the module, read the [Access Control guide](../access).
For an overview of the module, read the [AccessControl guide](../accessControl).
</Callout>

## Core

### AccessControl

[View on GitHub](https://github.com/OpenZeppelin/compact-contracts/blob/main/contracts/src/access/AccessControl.compact)
## AccessControl [toc] [#AccessControl]
<APIGithubLinkHeader
moduleName="AccessControl"
link={`https://github.com/OpenZeppelin/compact-contracts/blob/main/contracts/src/access/AccessControl.compact`}
/>

```ts
import "./node_modules/@openzeppelin-compact/contracts/src/access/AccessControl";
import "./compact-contracts/node_modules/@openzeppelin-compact/contracts/src/access/AccessControl";
```

---

### Ledger [toc] [#AccessControl-Ledger]
### Ledger [!toc] [#AccessControl-Ledger]

#### _operatorRoles [toc] [#AccessControl-_operatorRoles]
Expand Down Expand Up @@ -92,10 +93,12 @@ import "./node_modules/@openzeppelin-compact/contracts/src/access/AccessControl"
The default `Bytes<32>` value mimicking a constant.
</APIItemCompact>

### Witnesses [toc] [#AccessControl-Witnesses]
### Witnesses [!toc] [#AccessControl-Witnesses]

None.

### Circuits [toc] [#AccessControl-Circuits]
### Circuits [!toc] [#AccessControl-Circuits]
Comment on lines +96 to 102
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I omitted the Ledger, Witnesses, and Circuits grouping names from the ToC because this breaks the semantic hierarchy

<h2>Core</h2>
<h3>AccessControl</h3>
<h3>Ledger</h3>  // Is within AccessControl but is displayed as adjacent
<h4>fooSig</h4>

We can remove core and promote AccessControl as an h2 header like in the Ownable API so the hierarchy would be:

<h2>AccessControl</h2>
<h3>Ledger</h3>
<h4>fooSig</h4>

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

If we like this approach, the same applies to the other modules with a Core header

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think it'd be even better if we had a dropdown for these groupings in the ToC. Outside the scope of this PR though


#### hasRole [toc] [#AccessControl-hasRole]
Expand Down
17 changes: 10 additions & 7 deletions content/contracts-compact/api/fungibleToken.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -8,18 +8,19 @@ This module provides the full FungibleToken module API.
For an overview of the module, read the [FungibleToken guide](../fungibleToken).
</Callout>

## Core

### FungibleToken

[View on GitHub](https://github.com/OpenZeppelin/compact-contracts/blob/main/contracts/src/token/FungibleToken.compact)
## FungibleToken [toc] [#FungibleToken]
<APIGithubLinkHeader
moduleName="FungibleToken"
link={`https://github.com/OpenZeppelin/compact-contracts/blob/main/contracts/src/token/FungibleToken.compact`}
/>

```ts
import "./node-modules/@openzeppelin-compact/contracts/src/token/FungibleToken";
import "./compact-contracts/node_modules/@openzeppelin-compact/contracts/src/token/FungibleToken";
```

---

### Ledger [toc] [#FungibleToken-Ledger]
### Ledger [!toc] [#FungibleToken-Ledger]

#### _balances [toc] [#FungibleToken-_balances]
Expand All @@ -39,7 +40,7 @@ import "./node-modules/@openzeppelin-compact/contracts/src/token/FungibleToken";
kind="ledger"
id="FungibleToken-_allowances"
>
Mapping from owner accounts to spender accounts and their allowances.
Mapping from owner accounts to spender accounts to their allowances.
</APIItemCompact>

#### _totalSupply [toc] [#FungibleToken-_totalSupply]
Expand Down Expand Up @@ -82,10 +83,12 @@ import "./node-modules/@openzeppelin-compact/contracts/src/token/FungibleToken";
The immutable token decimals.
</APIItemCompact>

### Witnesses [toc] [#FungibleToken-Witnesses]
### Witnesses [!toc] [#FungibleToken-Witnesses]

None.

### Circuits [toc] [#FungibleToken-Circuits]
### Circuits [!toc] [#FungibleToken-Circuits]

#### initialize [toc] [#FungibleToken-initialize]
Expand Down
15 changes: 9 additions & 6 deletions content/contracts-compact/api/multitoken.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -8,18 +8,19 @@ This module provides the full MultiToken module API.
For an overview of the module, read the [MultiToken guide](../multitoken).
</Callout>

## Core

### MultiToken

[View on GitHub](https://github.com/OpenZeppelin/compact-contracts/blob/main/contracts/src/token/MultiToken.compact)
## MultiToken [toc] [#MultiToken]
<APIGithubLinkHeader
moduleName="MultiToken"
link={`https://github.com/OpenZeppelin/compact-contracts/blob/main/contracts/src/token/MultiToken.compact`}
/>

```ts
import "./node-modules/@openzeppelin-compact/contracts/src/token/MultiToken";
import "./compact-contracts/node_modules/@openzeppelin-compact/contracts/src/token/MultiToken";
```

---

### Ledger [toc] [#MultiToken-Ledger]
### Ledger [!toc] [#MultiToken-Ledger]

#### _balances [toc] [#MultiToken-_balances]
Expand Down Expand Up @@ -52,10 +53,12 @@ import "./node-modules/@openzeppelin-compact/contracts/src/token/MultiToken";
Base URI for computing token URIs.
</APIItemCompact>

### Witnesses [toc] [#MultiToken-Witnesses]
### Witnesses [!toc] [#MultiToken-Witnesses]

None.

### Circuits [toc] [#MultiToken-Circuits]
### Circuits [!toc] [#MultiToken-Circuits]

#### initialize [toc] [#MultiToken-initialize]
Expand Down
15 changes: 9 additions & 6 deletions content/contracts-compact/api/nonFungibleToken.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -8,18 +8,19 @@ This module provides the full NonFungibleToken module API.
For an overview of the module, read the [NonFungibleToken guide](../nonFungibleToken).
</Callout>

## Core

### NonFungibleToken

[View on GitHub](https://github.com/OpenZeppelin/compact-contracts/blob/main/contracts/src/token/NonFungibleToken.compact)
## NonFungibleToken [toc] [#NonFungibleToken]
<APIGithubLinkHeader
moduleName="NonFungibleToken"
link={`https://github.com/OpenZeppelin/compact-contracts/blob/main/contracts/src/token/NonFungibleToken.compact`}
/>

```ts
import "./node-modules/@openzeppelin-compact/contracts/src/token/NonFungibleToken";
import "./compact-contracts/node_modules/@openzeppelin-compact/contracts/src/token/NonFungibleToken";
```

---

### Ledger [toc] [#NonFungibleToken-Ledger]
### Ledger [!toc] [#NonFungibleToken-Ledger]

#### _name [toc] [#NonFungibleToken-_name]
Expand Down Expand Up @@ -92,10 +93,12 @@ import "./node-modules/@openzeppelin-compact/contracts/src/token/NonFungibleToke
Mapping from token IDs to their metadata URIs.
</APIItemCompact>

### Witnesses [toc] [#NonFungibleToken-Witnesses]
### Witnesses [!toc] [#NonFungibleToken-Witnesses]

None.

### Circuits [toc] [#NonFungibleToken-Circuits]
### Circuits [!toc] [#NonFungibleToken-Circuits]

#### initialize [toc] [#NonFungibleToken-initialize]
Expand Down
30 changes: 21 additions & 9 deletions content/contracts-compact/api/ownable.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -8,18 +8,19 @@ This module provides the full Ownable module API.
For an overview of the module, read the [Ownable guide](../ownable).
</Callout>

## Core

### Ownable

[View on GitHub](https://github.com/OpenZeppelin/compact-contracts/blob/main/contracts/src/access/Ownable.compact)
## Ownable [toc] [#Ownable]
<APIGithubLinkHeader
moduleName="Ownable"
link={`https://github.com/OpenZeppelin/compact-contracts/blob/main/contracts/src/access/Ownable.compact`}
/>

```ts
import "./node-modules/@openzeppelin-compact/contracts/src/access/Ownable";
import "./compact-contracts/node_modules/@openzeppelin-compact/contracts/src/access/Ownable";
```

---

### Ledger [toc] [#Ownable-Ledger]
### Ledger [!toc] [#Ownable-Ledger]

#### _owner [toc] [#Ownable-_owner]
Expand All @@ -32,10 +33,12 @@ import "./node-modules/@openzeppelin-compact/contracts/src/access/Ownable";
Either a `ZswapCoinPublicKey` or `ContractAddress` representing the owner.
</APIItemCompact>

### Witnesses [toc] [#Ownable-Witnesses]
### Witnesses [!toc] [#Ownable-Witnesses]

None.

### Circuits [toc] [#Ownable-Circuits]
### Circuits [!toc] [#Ownable-Circuits]

#### initialize [toc] [#Ownable-initialize]
Expand Down Expand Up @@ -194,14 +197,21 @@ None.
* Contract is initialized.
</APIItemCompact>

### ZOwnablePK [#ZOwnablePK]
---

[View on GitHub](https://github.com/OpenZeppelin/compact-contracts/blob/main/contracts/src/access/ZOwnablePK.compact)
## ZOwnablePK [toc] [#ZOwnablePK]
<APIGithubLinkHeader
moduleName="ZOwnablePK"
link={`https://github.com/OpenZeppelin/compact-contracts/blob/main/contracts/src/access/ZOwnablePK.compact`}
/>

```ts
import "./node-modules/@openzeppelin-compact/contracts/src/access/ZOwnablePK";
import "./compact-contracts/node_modules/@openzeppelin-compact/contracts/src/access/ZOwnablePK";
```

---

### Ledger [toc] [#ZOwnablePK-ledger]
### Ledger [!toc] [#ZOwnablePK-ledger]

#### _ownerCommitment [toc] [#ZOwnablePK-_ownerCommitment]
Expand Down Expand Up @@ -244,6 +254,7 @@ import "./node-modules/@openzeppelin-compact/contracts/src/access/ZOwnablePK";
It is immutable after initialization.
</APIItemCompact>

### Witnesses [toc] [#ZOwnablePK-witnesses]
### Witnesses [!toc] [#ZOwnablePK-witnesses]

#### wit_secretNonce [toc] [#ZOwnablePK-wit_secretNonce]
Expand All @@ -259,6 +270,7 @@ import "./node-modules/@openzeppelin-compact/contracts/src/access/ZOwnablePK";
Users are encouraged to rotate this value on ownership changes.
</APIItemCompact>

### Circuits [toc] [#ZOwnablePK-circuits]
### Circuits [!toc] [#ZOwnablePK-circuits]

#### initialize [toc] [#ZOwnablePK-initialize]
Expand Down
Loading