Migrate from Gelato to self-hosted transaction relayer - #1030
Merged
Conversation
Replace GelatoGaslessTransactionSender with AcreRelayerTransactionSender
that POSTs {chainId, to, data} to the new acre-api endpoint at
/api/v2/relay/transactions. Drop @gelatocloud/gasless dependency and
the gelatoApiKey argument to Acre.initialize.
✅ Deploy Preview for acre-dapp-v1 ready!
To edit notification comments on pull requests, go to your Netlify project configuration. |
✅ Deploy Preview for acre-dapp-testnet ready!
To edit notification comments on pull requests, go to your Netlify project configuration. |
✅ Deploy Preview for acre-dapp ready!
To edit notification comments on pull requests, go to your Netlify project configuration. |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
GelatoGaslessTransactionSender(which called@gelatocloud/gasless) withAcreRelayerTransactionSender, a thin client that POSTs{chainId, to, data}to a self-hosted endpoint.@gelatocloud/gaslessdependency and thegelatoApiKeyargument fromAcre.initialize— replaced byrelayerUrl.VITE_RELAYER_URLto dapp env files; expose it throughenv.RELAYER_URLand pass it into the SDK init..prettierignoretweak (excludes the localledger/Python venv) so the existing pre-commit lint hook passes.Why
Migrating the dapp's withdrawal relay off Gelato. Biconomy was evaluated as a successor but its current product (AbstractJS / Nexus) requires either a new smart-account model or an EOA — neither matches OrangeKit's Gnosis-Safe-via-Bitcoin-signature setup, and migrating to Nexus would change every user's Ethereum address. A self-hosted relayer (modelled on Mezo's
passport-relay) preserves Safe addresses and lets us own the cost / abuse story.The companion server-side endpoint lives in
acre-btc/backendPR — that one must deploy before this one is rolled out.Notes
VITE_GELATO_RELAY_API_KEYis intentionally left in place; it's still consumed by the OrangeKit wagmi connector for connector-internal relay (separate path from the SDK relay we're replacing here). No OrangeKit changes were made.VITE_RELAYER_URLin the Netlify dashboard for production and staging deploys.Test plan
pnpm --filter @acre-btc/sdk testpasses (151 tests, includes 6 new forAcreRelayerTransactionSender).pnpm --filter dapp buildsucceeds.VITE_RELAYER_URLpointing at the deployed staging relayer: connect Bitcoin testnet wallet → deposit (existing path, untouched) → withdraw → confirm tx hash returned, explorer shows the relayer EOA paid gas, the user's Safe is themsg.sendertoacreBTC.approveAndCall.