Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/0x3bfc/hardhat-gasless-deployer-example
Example for gasless deployer hardhat plugin
https://github.com/0x3bfc/hardhat-gasless-deployer-example
Last synced: 13 days ago
JSON representation
Example for gasless deployer hardhat plugin
- Host: GitHub
- URL: https://github.com/0x3bfc/hardhat-gasless-deployer-example
- Owner: 0x3bfc
- License: gpl-3.0
- Created: 2023-08-01T10:17:05.000Z (over 1 year ago)
- Default Branch: main
- Last Pushed: 2023-08-03T10:37:48.000Z (over 1 year ago)
- Last Synced: 2023-08-04T12:06:42.190Z (over 1 year ago)
- Language: TypeScript
- Size: 260 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# Hardhat-gasless-deployer-example
This is a working example for [gasless deployer hardhat plugin](https://www.npmjs.com/package/hardhat-gasless-deployer) using the [gas station network](https://opengsn.org/).
## Install
```bash
yarn
```## Start local GSN
Start a new terminal to run your local GSN relayer (local network)
```bash
yarn gsn-with-ganache
```You should see the following predeployed contracts address:
```bash
RelayHub: 0xC89Ce4735882C9F0f0FE26686c53074E09B0D550
RelayRegistrar: 0xe78A0F7E598Cc8b0Bb87894B0F60dD2a88d6a8Ab
StakeManager: 0x5b1869D9A4C187F2EAa108f3062412ecf0526b24
Penalizer: 0xCfEB869F69431e42cdB54A4F4f105C19C080A601
Forwarder: 0x254dffcd3277C0b1660F6d42EFbB754edaBAbC2B
TestToken (test only): 0x9b1f7F645351AF3631a656421eD2e40f2802E6c0
Paymaster : 0xD833215cBcc3f914bD1C9ece3EE7BF8B14f841bb
```## Configure
Update the paymaster, relayer hub and forwarder contract addresses in `hardhat-config.ts` with the addresses produced from your local GSN (above):```javascript
hHGaslessDeployer: {
...
paymaster: "0xD833215cBcc3f914bD1C9ece3EE7BF8B14f841bb",
relayerHub: "0xC89Ce4735882C9F0f0FE26686c53074E09B0D550",
forwarder: "0x254dffcd3277C0b1660F6d42EFbB754edaBAbC2B",
},
```## Usage
Add your private key in `hardhat-config.ts`, this key will be used for signing transaction prior deployment.
```javascript
gsn: {
url: "http://127.0.0.1:8545",
accounts: [
`YOUR_PRIVATE_KEY`,
],
chainId: 1337
},
...
```Finally, deploy the sample `Lock` contract using the gasless deploy HardHat plugin.
```bash
yarn deploy:gsn
```If this is the first time you run this plugin, it will deploy two helper contracts:
- A factory contract: which holds generic deployment logic with `CREATE2`.
- A paymaster contract: A whitelist paymaster but for simiplicity, the plugin will use a pre-deployed paymaster.These contracts will be deployed `only once` and their data will be stored in `gasless-contracts-deployments.json` file.
```json
{
"gsn": {
"factory": "0x6eD79Aa1c71FD7BdBC515EfdA3Bd4e26394435cC",
"paymaster": "0xb09bCc172050fBd4562da8b229Cf3E45Dc3045A6"
}
}
```You should expect something as follows:
```bash
....
Transaction hash: 0x00000000a6d7ab10560d5ae6951daf77387b24ab2935ea06c05eaa3595dc78d1
Target contract "Lock" has been deployed @ "0x563013bCb323D720c4a282AA060552cCE3860c85"
```## Test
You can run `yarn test` to execute a simple test case for deploying `Lock` contract on the GSN local net.
The test case has to:
- deploy the factory & whitlestPaymaster contracts
- check the balance before deploying target contract `Lock`
- deploy the target `Lock` contract
- assert that the balance doesn't change after the deploymentPlease do note that sometimes the deployment might fail because at some point the randomly generated salt for `CREATE2` doesn't fulfill the `keccak256` hashing requirements. This will be fixed later. However you can re-run the test and it should work again.