Repository navigation
docs: add the Defender-to-Chainlink-CRE migration guide - #250
Conversation
✅ Deploy Preview for openzeppelin-docs-v2 ready!
To edit notification comments on pull requests, go to your Netlify project configuration. |
725502b to
4b6c925
Compare
A two-part guide for teams moving Defender Monitors, Actions, and Relayers to Chainlink CRE: - /chainlink-cre maps each kind of Defender setup to a CRE pattern and explains what changes when you move it. - /chainlink-cre/worked-example ports a Governor notification workflow end to end, then simulates, deploys, and verifies it on Sepolia. Unversioned, listed under Open Source Tools in the EVM navigation. The walkthrough's nine steps are collapsible <details> blocks, each preceded by an explicit <a id> anchor so cross-references deep-link. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
OpenZeppelin's own tools keep their existing house order and partner integrations go last, alphabetical among themselves: Relayer, Monitor, UI Builder, Role Manager, Chainlink CRE, Symbiotic Templates This only moves the Symbiotic Templates folder, which currently sits first in the section. Kept as its own commit so it can be dropped independently of the Chainlink CRE guide. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
4b6c925 to
0155fc3
Compare
ericglau
left a comment
There was a problem hiding this comment.
LGTM. A few aside comments:
- the new Chainlink section and the moved Symbiotic templates section appear under Open Source Tools. Would it make sense for any of these to be under a new section header?
- agree with the comment about 1.0.2, seems an update is needed for that
tirumerla
left a comment
There was a problem hiding this comment.
Added couple of comments
| description: Map each kind of Defender Monitor, Action, and Relayer setup to a Chainlink CRE pattern, and see what changes when you move it | ||
| --- | ||
|
|
||
| This guide has two parts. Part 1 (this page) maps each kind of Defender Setup to Chainlink CRE and explains what changes when you move it. Part 2 walks through a complete port of OpenZeppelin's Defender governance alert that you simulate, deploy, and verify on Sepolia. |
There was a problem hiding this comment.
May be slight adjustment
| This guide has two parts. Part 1 (this page) maps each kind of Defender Setup to Chainlink CRE and explains what changes when you move it. Part 2 walks through a complete port of OpenZeppelin's Defender governance alert that you simulate, deploy, and verify on Sepolia. | |
| This guide has two parts. Part 1 defined in this page maps each kind of Defender Setup to Chainlink CRE and explains what changes when you move it. [Part 2](/chainlink-cre/worked-example) walks through a complete port of OpenZeppelin's Defender governance alert that you simulate, deploy, and verify on Sepolia. |
There was a problem hiding this comment.
Applied, with commas. "Part 1, defined in this page, maps each kind of…". Also took the inline Part 2 link. Thanks!
|
|
||
| This guide has two parts. Part 1 (this page) maps each kind of Defender Setup to Chainlink CRE and explains what changes when you move it. Part 2 walks through a complete port of OpenZeppelin's Defender governance alert that you simulate, deploy, and verify on Sepolia. | ||
|
|
||
| **Part 2:** [Worked Example](/chainlink-cre/worked-example) |
There was a problem hiding this comment.
Removed. Did the same on Part 2 for symmetry, as both parts are now linked inline.
|
|
||
| **Tested with** CRE CLI 1.34.0, `@chainlink/cre-sdk` 1.19.1, and Bun 1.4.0. **Bun 1.4 or later is required:** on Bun 1.3.x, `bun install --frozen-lockfile` in Step 1 fails with `UnknownLockfileVersion`. Check with `bun --version`. Have these ready: | ||
|
|
||
| - The example project, [`gov-alert` in OpenZeppelin/defender-to-cre-examples](https://github.com/OpenZeppelin/defender-to-cre-examples/tree/v1.0.1/gov-alert), plus [Bun](https://bun.sh/docs/installation) 1.4 or later, [Foundry](https://www.getfoundry.sh/introduction/installation) (for the fixture and [Step 7](#step-7)'s `cast send`), and the [CRE CLI](https://docs.chain.link/cre/getting-started/cli-installation), [logged in](https://docs.chain.link/cre/account/cli-login). |
There was a problem hiding this comment.
v1.0.1 doesn't have license file on v1.0.2. Please replace with v1.0.2
There was a problem hiding this comment.
Do you want to do this as part of this PR or as an update?
There was a problem hiding this comment.
Let's keep it in this PR. I've replaced the occurrences of this. v1.0.2 also adds the Bun 1.4 line to the keeper README, so the guide and the README are now aligned.
| Clone [OpenZeppelin/defender-to-cre-examples](https://github.com/OpenZeppelin/defender-to-cre-examples/tree/v1.0.1) and move into its [`gov-alert`](https://github.com/OpenZeppelin/defender-to-cre-examples/tree/v1.0.1/gov-alert) folder: | ||
|
|
||
| ```bash | ||
| git clone --branch v1.0.1 https://github.com/OpenZeppelin/defender-to-cre-examples.git |
There was a problem hiding this comment.
| git clone --branch v1.0.1 https://github.com/OpenZeppelin/defender-to-cre-examples.git | |
| git clone --branch v1.0.2 https://github.com/OpenZeppelin/defender-to-cre-examples.git |
| <details> | ||
| <summary><strong>Step 2: Configure Your Governor and Notification Destination</strong></summary> | ||
|
|
||
| Create `gov-alert/config.simulation-blog.json` with these fields. Replace the placeholder address and URL before running it: |
There was a problem hiding this comment.
We changed this to gov-alert/config.simulation.json, also the example already ships config.example.json with these four fields, so copying it is simpler. Copy gov-alert/config.example.json to gov-alert/config.simulation-local.json and fill in these fields?
There was a problem hiding this comment.
Done! Switched to copying config.example.json to config.simulation-local.json, as suggested.
| secrets-path: "" | ||
| ``` | ||
|
|
||
| Create `gov-alert/config.staging.json` with the same four fields as [Step 2](#step-2) (or edit it, if the example ships one), and set `notifyWebhookUrl` to an endpoint you can inspect. Then deploy from the project root and confirm the registration: |
There was a problem hiding this comment.
| Create `gov-alert/config.staging.json` with the same four fields as [Step 2](#step-2) (or edit it, if the example ships one), and set `notifyWebhookUrl` to an endpoint you can inspect. Then deploy from the project root and confirm the registration: | |
| Create `gov-alert/config.staging.json` from `config.example.json` with the same four fields as [Step 2](#step-2), and set `notifyWebhookUrl` to an endpoint you can inspect. Then deploy from the project root and confirm the registration: |
|
|
||
| ```json | ||
| { | ||
| "text": "**New Proposal** Upgrade the treasury by 0x1234 [TX](https://sepolia.etherscan.io/tx/TRANSACTION_HASH)" |
There was a problem hiding this comment.
Since this is a sample
| "text": "**New Proposal** Upgrade the treasury by 0x1234 [TX](https://sepolia.etherscan.io/tx/TRANSACTION_HASH)" | |
| "text": "**New Proposal** Upgrade the treasury by 0x1234 [TX](<https://sepolia.etherscan.io/tx/TRANSACTION_HASH>)" |
| description: Port OpenZeppelin's Defender governance alert to Chainlink CRE, then simulate, deploy, and verify it on Sepolia | ||
| --- | ||
|
|
||
| This is Part 2 of Adapting Defender Workflows to Chainlink CRE. Part 1 maps each kind of Defender workflow to CRE and explains what changes; this part puts that into practice with one complete port you can run yourself. |
There was a problem hiding this comment.
"Adapting Defender Workflows to Chainlink CRE" isn't used as a title anywhere else. Please refer to Part 1 by its page title.
There was a problem hiding this comment.
Right, part 1 is now referred to as "Mapping Your Defender Setup".
- Pin the examples repo to v1.0.2 - Restore the angle brackets in the Step 4 sample payload - Copy config.example.json for the simulation and staging configs - Refer to Part 1 by its page title; link both parts inline Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
|
Thanks @tirumerla and @ericglau. @ericglau we'll go ahead with a new section header in a later PR because that would potentially affect the other nav trees and is better in a reorg. I applied all other feedback. |
A two-part guide for teams moving Defender Monitors, Actions, and Relayers to Chainlink CRE.
/chainlink-cre— maps each kind of Defender setup to a CRE pattern and explains what changes when you move it./chainlink-cre/worked-example— ports a Governor notification workflow end to end, then simulates, deploys, and verifies it on Sepolia.Unversioned. Listed under Open Source Tools in
src/navigation/ethereum-evm.jsononly, since the guide is EVM/Sepolia-specific. No homepage card, following the Symbiotic Templates precedent for partner-integration content.Commits
llms.txt.Relayer, Monitor, UI Builder, Role Manager, Chainlink CRE, Symbiotic Templates. Separate so it can be dropped independently.Notes
Examples repo tag — resolved. Now pinned to
v1.0.2, which carries aLICENSEand akeeper/README.mdconsistent with this guide's Bun 1.4 requirement.Part 2's steps do not reach the TOC. The nine walkthrough steps are
<details>/<summary>blocks preceded by<a id="step-N">anchors, so they collapse by default and every cross-reference deep-links correctly, but they are not headings and so no step appears in the right-hand TOC. The nine collapsed summaries sit together and read as the step list. Plain###headings are the alternative if reviewers would rather have TOC entries than collapsed-by-default steps.Section placement. Chainlink CRE and Symbiotic Templates both sit under Open Source Tools, grouped at the end. Whether partner integrations deserve their own separator is worth deciding alongside a broader nav pass rather than here.
Validation
scripts/link-validation.ts— clean, 0 errors.scripts/link-validation.ts --no-ignore-fragments— no errors attributable to these pages; all<a id>targets and cross-page fragments resolve.llms.txtregenerated; the diff is the two new entries plus the nav reorder.next build --turbopasses (1211/1211 pages).<details>block present.biome checkclean; the nav reorder is a pure block move.🤖 Generated with Claude Code