Skip to content

Commit cce4ff3

Browse files
committed
merge main
2 parents c248e6c + f9d87eb commit cce4ff3

File tree

208 files changed

+23645
-3037
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

208 files changed

+23645
-3037
lines changed

.github/workflows/sync-search.yml

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,6 @@ name: Sync Search Content
33
on:
44
push:
55
branches: [main]
6-
pull_request:
7-
branches: [main]
86

97
jobs:
108
sync-search:

README.md

Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -131,6 +131,52 @@ Product-specific icons located in `src/components/icons/`:
131131
- **Version Switching**: Multi-version documentation support
132132
- **Responsive Design**: Mobile-optimized navigation and content
133133

134+
## Solidity Docgen
135+
136+
Any library using Solidity Docgen can utilize the `docgen` templates and config file in their repo to generate markdown API references for the docs. To get started follow the instructions below:
137+
138+
### 1. Add the templates to your repo
139+
140+
Inside this docs repo is the [`docgen`](https://github.com/OpenZeppelin/docs/tree/main/docgen) folder which contains [`templates-md`](https://github.com/OpenZeppelin/docs/tree/main/docgen/templates-md) and [`config-md.js`](https://github.com/OpenZeppelin/docs/blob/main/docgen/config-md.js). Copy both of these items into your `docs` folder in your repo. Once there open the [`templates-md/helpers.js`](https://github.com/OpenZeppelin/docs/blob/main/docgen/templates-md/helpers.js) file and update the `API_DOCS_PATH` constant to match your export path.
141+
142+
```js
143+
const API_DOCS_PATH = 'contracts/5.x/api';
144+
// const API_DOCS_PATH = 'community-contracts/api';
145+
// const API_DOCS_PATH = 'confidential-contracts/api';
146+
// const API_DOCS_PATH = 'uniswap-hooks/api';
147+
```
148+
149+
### 2. Update the `hardhat.config.js` file
150+
151+
With the `config-md.js` file now in the `docs` folder, update your `hardhat.config.js` to use the new config file.
152+
153+
```js
154+
{
155+
// other config options
156+
docgen: require('./docs/config-md'),
157+
}
158+
```
159+
160+
Once added make sure these are accessible in your branches going forward. If you are generating an API reference for previous branches you will need to repeat steps 1 and 2 for those branches.
161+
162+
### 3. Run the `generate-api-docs.js` script
163+
164+
With your remote repo setup with the new template files you can run the `scripts/generate-api-docs.js` script. Be sure to pass in the correct arguements for your docs
165+
166+
```bash
167+
node scripts/generate-api-docs.js \
168+
--repo https://github.com/OpenZeppelin/openzeppelin-community-contracts.git \
169+
--branch release-v5.5 \
170+
--api-output content/contracts/5.x/api \
171+
--examples-output examples
172+
```
173+
174+
This wil lexport the contents to
175+
176+
### Automated Setup
177+
178+
In the case you want to setup an automated GitHub workflow to create these API docs visit the [docs-api-generation-workflows](https://github.com/OpenZeppelin/docs-api-generation-workflows) for more info. This repo (`OpenZeppelin/docs`) is the `Docs Receiver` side of the equation.
179+
134180
## Content Management
135181

136182
### Adding New Content
Lines changed: 117 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,117 @@
1+
---
2+
title: Chain Abstraction at OpenZeppelin
3+
---
4+
5+
Our work focuses on building the secure primitives for cross-chain messaging, intent-based execution, and unified account experiences, creating a world where users and assets move freely across ecosystems with complexity abstracted away from users.
6+
7+
## Ecosystem Contributions
8+
9+
We have partnered with ecosystems and projects to deliver contracts libraries and tooling for cross-chain coordination and smart accounts.
10+
11+
<Cards>
12+
<Card title="Ethereum & EVM" href="https://github.com/OpenZeppelin/openzeppelin-contracts/tree/master/contracts/account">
13+
Contracts libraries for modular smart accounts in Solidity
14+
</Card>
15+
16+
<Card title="Axelar" href="https://github.com/OpenZeppelin/openzeppelin-contracts/tree/master/contracts/crosschain">
17+
Contracts libraries for cross-chain messaging in Solidity
18+
</Card>
19+
20+
<Card title="Open Intents Framework" href="https://github.com/openintentsframework">
21+
Contracts libraries in Solidity and solvers for cross-chain intents
22+
</Card>
23+
24+
<Card title="Starknet" href="https://github.com/OpenZeppelin/cairo-contracts/tree/main/packages/account">
25+
Contracts libraries for smart accounts in Cairo
26+
</Card>
27+
28+
<Card title="Stellar" href="https://github.com/OpenZeppelin/stellar-contracts/tree/main/packages/accounts">
29+
Contracts libraries for smart accounts in Soroban
30+
</Card>
31+
32+
<Card title="zkEmail" href="https://github.com/OpenZeppelin/openzeppelin-community-contracts/tree/master/contracts/utils/cryptography">
33+
Cryptography contracts libraries in Solidity for transactions and social recovery using email
34+
</Card>
35+
</Cards>
36+
37+
## Cross-Chain Intents
38+
39+
Universal format for expressing and fulfilling user actions across chains.
40+
41+
### Use Cases
42+
43+
- **Simplified Onboarding to Chains and Apps**: Onboard users by automating gas, approvals, and cross chain setup, allowing users to interact with any app or network instantly without prior configuration.
44+
45+
- **Abstracted Gas and Settlement**: Allows operation across multiple chains without managing native gas tokens or complex bridge flows.
46+
47+
- **Token Bridging and Swapping**: Enable seamless asset transfers and swaps across chains, abstracting away bridge risks and fragmented liquidity.
48+
49+
- **Universal Balances**: Users can maintain a single cross chain balance, allowing applications to fetch, display, and transact from unified liquidity sources.
50+
51+
### Standards
52+
53+
- **ERC-7683: Cross Chain Intents** (draft): A [standard](https://eips.ethereum.org/EIPS/eip-7683) that enables cross chain value transfer using a standard api. OpenZeppelin is a contributor to and leading the redesign of the ERC through the [Open Intents Framework](https://www.openintents.xyz) and is building contracts libraries in the [Open Intents Framework Contracts Repo](https://github.com/openintentsframework/oif-contracts).
54+
55+
- **ERC-7888: Cross Chain Broadcaster** (draft): A [standard](https://eips.ethereum.org/EIPS/eip-7888) that enables cross chain messaging using storage proofs. OpenZeppelin is a contributor to the ERC through the [Open Intents Framework](https://www.openintents.xyz) and is building contracts libraries in the [Open Intents Framework Broadcaster Repo](https://github.com/openintentsframework/broadcaster).
56+
57+
### Associations
58+
59+
- **Open Intents Framework**: The [group](https://www.openintents.xyz/) is building a modular, open source framework for building and deploying intent product experiences by providing ready-to-use, protocol-agnostic features for solvers, interop providers, and cross-chain builders. OpenZeppelin is a [member](https://www.openintents.xyz/#1976d35200d68051bfe5f0bdb3ced9bc) with many major organizations.
60+
61+
## Cross-Chain Messaging
62+
63+
Common interface for sending and receiving messages across chains.
64+
65+
### Use Cases
66+
67+
- **State Synchronization for Multi-Chain Apps**: Use single controller contract or governance action to coordinate updates on multiple chains.
68+
69+
- **Token Bridges**: Enables verifiable message passing between bridge contracts, ensuring consistent state and transfer logic across multiple chains without relying on trusted intermediaries.
70+
71+
- **Intent Settlement**: Facilitates secure delivery and confirmation of intent execution results across chains, allowing applications to finalize actions and synchronize states.
72+
73+
### Standards
74+
75+
- **ERC-7786: Cross Chain Messaging Gateway** (last call): A [standard](https://eips.ethereum.org/EIPS/eip-7786) that enables cross-chain messaging via a universal gateway interface. OpenZeppelin co-authored the standard with Axelar and is building contracts libraries in the [OpenZeppelin Solidity Community Contracts Repo](https://github.com/OpenZeppelin/openzeppelin-community-contracts/tree/master/contracts/crosschain).
76+
77+
## Smart Accounts
78+
79+
Composable architecture that enables customizable modules to support secure and extensible account functionality.
80+
81+
### Use Cases
82+
83+
- **Gasless Transactions**: Allow users to interact with apps without holding native tokens, enabling seamless onboarding.
84+
85+
- **Social Recovery**: Allow trusted guardians to securely restore access to accounts without centralized intermediaries.
86+
87+
- **Keyless Signatures**: Authenticate and approve transactions using biometrics, hardware modules, or passkeys instead of a traditional private key.
88+
89+
### Standards
90+
91+
- **ERC-4337: Account Abstraction Using Alt Mempool** (final): A [standard](https://eips.ethereum.org/EIPS/eip-4337) that enables account abstraction using an alternative mempool. OpenZeppelin has built contracts libraries for modular smart accounts in the [OpenZeppelin Solidity Contracts Repo](https://github.com/OpenZeppelin/openzeppelin-contracts/tree/master/contracts/account) and [Wizard](https://wizard.openzeppelin.com/#account) integration.
92+
93+
- **ERC-7579: Minimal Modular Smart Accounts** (draft): A [standard](https://eips.ethereum.org/EIPS/eip-7579) that enables interoperability between accounts and modules. OpenZeppelin has built contracts libraries for modules in the [OpenZeppelin Solidity Community Contracts Repo](https://github.com/OpenZeppelin/openzeppelin-community-contracts/tree/master/contracts/account/modules) and [Wizard](https://wizard.openzeppelin.com/#account) integration.
94+
95+
- **EIP-7702: Set Code for EOAs** (complete): A [protocol standard](https://eips.ethereum.org/EIPS/eip-7702) that enables EOA’s to adopt smart contract capabilities using a new transaction type to set code in their account. OpenZeppelin has built contracts libraries for modules in the [OpenZeppelin Solidity Contracts Repo](https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/utils/cryptography/signers/SignerEIP7702.sol) and [Wizard](https://wizard.openzeppelin.com/#account) integration.
96+
97+
- **ERC-7739: Readable Typed Signatures for Smart Accounts** (draft): A [standard](https://eips.ethereum.org/EIPS/eip-7739) for a defensive rehashing scheme which prevents signature replays across smart accounts and preserves the readability of the signed contents. OpenZeppelin co-authored the standard and is building contracts libraries in the [OpenZeppelin Solidity Contracts Repo](https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/utils/cryptography/signers/draft-ERC7739.sol).
98+
99+
- **ERC-7821: Minimal Batch Executor Interface** (draft): A [standard](https://eips.ethereum.org/EIPS/eip-7821) for a minimal batch executor interface for delegations. OpenZeppelin co-authored the standard and is building contracts libraries in the [OpenZeppelin Solidity Contracts Repo](https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/account/extensions/draft-ERC7821.sol).
100+
101+
- **ERC-7913: Signature Verifiers** (draft): A [standard](https://eips.ethereum.org/EIPS/eip-7913) that enables signature verification for address-less keys (e.g. email, non-ethereum cryptographic curves). OpenZeppelin authored the standard and is building contracts libraries in the [OpenZeppelin Solidity Contracts Repo](https://github.com/OpenZeppelin/openzeppelin-contracts/tree/master/contracts/utils/cryptography/verifiers).
102+
103+
- **SNIP-6: Standard Account Interface** (review): A [standard](https://github.com/starknet-io/SNIPs/blob/main/SNIPS/snip-6.md) for a standard interface for accounts. OpenZeppelin co-authored the standard and is building contracts libraries in the [OpenZeppelin Staknet Cairo Contracts Repo](https://github.com/OpenZeppelin/cairo-contracts/tree/main/packages/account).
104+
105+
## Private Email Verification
106+
107+
Ownership of accounts using email.
108+
109+
### Use Cases
110+
111+
- **Send Crypto Using Only Email Address**: Users can authorize transactions (e.g. send money, DAO voting, any blockchain transaction) by proving control of their email address with no private key management required. Email never revealed!
112+
113+
- **Recover Account Using Email Gaurdians**: Lost keys can be restored by proving control of an email account, enabling user-friendly recovery.
114+
115+
### Standards
116+
117+
- **ERC-7969: DomainKeys Identified Mail (DKIM) Registry** (draft): A [standard](https://eips.ethereum.org/EIPS/eip-7969) that enables trustless email ownership verification using a DKIM restistry. OpenZeppelin co-authored with OKX and is building contracts libraries in the [OpenZeppelin Solidity Community Contracts Repo](https://github.com/OpenZeppelin/openzeppelin-community-contracts/blob/master/contracts/utils/cryptography/DKIMRegistry.sol).

0 commit comments

Comments
 (0)