Skip to content

dApp via GitHub saved to Filecoin-Pin, approved by Safe, updated to ENS #6550

Description

@timfong888

What We're Building

Automated dApp deployment system triggered by git commits. When developers push updates to the repository, GitHub Actions automatically uploads the new version to IPFS via Filecoin Pin, then creates a Safe multi-sig proposal to update the ENS contenthash.

Reference: https://github.com/FIL-Builders/filecoin-pin-ens-demo

Target: https://github.com/safe-global/safe-wallet-monorepo

Trigger

Event: Developer commits and pushes dApp updates to main branch

Action: GitHub Actions workflow automatically executes:

  1. Build updated dApp
  2. Upload to IPFS via Filecoin Pin
  3. Verify gateway accessibility
  4. Create Safe proposal with new CID

Result: Safe signers receive proposal to update ENS to new version

Current Demo (Single Wallet)

Developer pushes to main branch
  ↓
.github/workflows/build-site.yml (triggered on push)
  └─> Builds dApp → artifact: site-dist
       ↓
.github/workflows/upload-to-filecoin-and-update-ens.yml (workflow_run trigger)
  ├─> Download site-dist artifact
  ├─> filecoin-project/filecoin-pin/upload-action@v0.9.2 → CID
  └─> scripts/update-ens.mjs
       └─> wallet.sendTransaction(resolver.setContenthash())
            ↓
ENS contenthash updated immediately

New Flow (Safe Multi-Sig)

Developer pushes dApp updates to main branch
  ↓
.github/workflows/build-site.yml (triggered on push)
  └─> Builds dApp → artifact: site-dist
       ↓
.github/workflows/upload-to-filecoin-and-update-ens.yml (workflow_run trigger)
  ├─> Download site-dist artifact
  ├─> filecoin-pin action → CID (keep existing)
  ├─> scripts/verify-ipfs-gateway.mjs (NEW - verify accessibility)
  │    └─> Try ipfs.io, gateway.ipfs.io, dweb.link
  │    └─> Retry up to 10 times with 6s delays
  │    └─> Exit 1 if inaccessible → workflow fails
  └─> scripts/create-safe-proposal.mjs (NEW - replaces update-ens.mjs)
       └─> Safe API: propose resolver.setContenthash() transaction
            ↓
Safe signers review and approve in Safe UI
  └─> Signers can test CID at https://ipfs.io/ipfs/{CID}
       ↓
Safe executes transaction when threshold met
  └─> ENS contenthash updated

Key changes:

  1. Add gateway verification before Safe proposal
  2. Replace update-ens.mjs with create-safe-proposal.mjs
  3. ENS update requires multi-sig approval instead of immediate update

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions