Using OpenZeppelin Defender Client API
app: React code for the client dapp, bootstrapped with create-react-app.autotasks/relay: Javascript code for the meta-transaction relay, to be run as a Defender Autotask, compiled using rollup.contracts: Solidity code for the AssetToken contract, compiled with hardhat.scripts: Custom scripts for common tasks, such as uploading Autotask code, signing sample meta-txs, etc.src: Shared code for signing meta-txs and interacting with the Forwarder contract.test: Tests for contracts and Autotask.
yarn deploy: Compiles and deploys the AssetToken and Forwarder contracts to Goerli, and writes their addresses indeploy.json.yarn sign: Signs a meta-tx requesting the mint and writes it totmp/request.json.yarn invoke: Invokes the relay Autotask viaWEBHOOK_URLwith the contents oftmp/request.jsongenerated byyarn sign.yarn create-autotask: Compiles and creates the Autotask and uploads the Autotask code.yarn upload: Compiles and uploads the Autotask code toAUTOTASK_ID.yarn relay: Runs the relay Autotask script locally, using the Defender Relayer forRELAY_API_KEY.yarn test: Runs tests for contracts and Autotask using hardhat.
Expected .env file in the project root:
PRIVATE_KEY: Private key used for signing meta-txs locally.TEAM_API_KEY: Defender Team API key, used for uploading autotask code.TEAM_API_SECRET: Defender Team API secret.
Expected .env file in /app:
REACT_APP_WEBHOOK_URL: Webhook of the Autotask to invoke for relaying meta-txs.REACT_APP_QUICKNODE_URL: Optional URL to Quicknode for connecting to the BSC-testnet network from the dapp.
Create a .env file in the project root
PRIVATE_KEY="Private key used for signing meta-txs locally"
TEAM_API_KEY="Defender Team API key, used for uploading autotask code"
TEAM_API_SECRET="Defender Team API secret"Store the value of a new private key in our projects .env file.
Create a relayer using Defender Relay Client on BSC-testnet.
yarn create-relayThis runs a script that creates a relayer and stores the relayer API key and API secret in the projects .env file.
Use the newly created Relayer to deploy the MinimalForwarder and AssetToken contracts to BSC-testnet.
yarn deploySign a request to mint, this will create a request in tmp/request.json that we can then view
yarn sign
cat tmp/request.jsonWe can then use the script to send the request to our relayer, and view the transaction on bscscan. We can also view number of mint.
yarn relayCreate an Autotask using Defender Client, with a webhook trigger and connected to our BSC-testnet relayer.
yarn create-autotaskThis creates the autotask, saves the Autotask ID to the .env file [AUTO_TASK_ID]), and uploads the autotask code.
Grab the Autotask webhook from the web app and store in the apps .env file (in the app directory).
We can then install dependencies using yarn and run the app.
cd app
yarn install
yarn start- Open app: http://localhost:3000/
- Change to BSC Testnet network in Metamask
- Enter a number of mint and sign the metatransaction in MetaMask