Skip to content
This repository was archived by the owner on Jul 28, 2022. It is now read-only.

Commit 39c9827

Browse files
committed
Custom paymaster
add a custom paymaster
1 parent aa69fba commit 39c9827

File tree

5 files changed

+58
-2
lines changed

5 files changed

+58
-2
lines changed

contracts/ImportArtifacts.sol

+9
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
//SPDX-License-Identifier: MIT
2+
pragma solidity ^0.7.6;
3+
pragma experimental ABIEncoderV2;
4+
5+
//"import" it into our project for Truffle to generate artifacts
6+
import "@opengsn/paymasters/contracts/WhitelistPaymaster.sol";
7+
8+
import "@opengsn/contracts/src/RelayHub.sol";
9+

migrations/2_deploy_contracts.js

+18-1
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,26 @@
11
const CaptureTheFlag = artifacts.require('CaptureTheFlag')
2+
const WhitelistPaymaster = artifacts.require('WhitelistPaymaster')
3+
const RelayHub = artifacts.require('RelayHub')
24

35

46
module.exports = async function (deployer) {
57
const forwarder = require( '../build/gsn/Forwarder' ).address
68
await deployer.deploy(CaptureTheFlag, forwarder)
79

8-
console.log( `Deployed CTF at ${CaptureTheFlag.address} with forwarder ${forwarder}`)
10+
await deployer.deploy(WhitelistPaymaster)
11+
const relayHubAddress = require('../build/gsn/RelayHub.json').address
12+
const paymaster = await WhitelistPaymaster.deployed()
13+
await paymaster.setRelayHub(relayHubAddress)
14+
await paymaster.setTrustedForwarder(forwarder)
15+
// This is the first ganache address, when started with "ganache-cli -d"
16+
await paymaster.whitelistSender('0x90F8bf6A479f320ead074411a4B0e7944Ea8c9C1')
17+
18+
// to add more addresses to the whitelist, open truffle console and run:
19+
// const pm = await WhitelistPaymaster.deployed()
20+
// pm.whitelistSender('0x90F8bf6A479f320ead074411a4B0e7944Ea8c9C1')
21+
22+
console.log(`RelayHub(${relayHubAddress}) set on Paymaster(${WhitelistPaymaster.address})`)
23+
const relayHub = await RelayHub.at(relayHubAddress)
24+
await relayHub.depositFor(paymaster.address, {value: 1e18.toString()})
25+
console.log(`1 ETH deposited to Paymaster(${WhitelistPaymaster.address})`)
926
}

package.json

+1
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
"dependencies": {
77
"@opengsn/cli": "^2.2.2",
88
"@opengsn/contracts": "^2.2.2",
9+
"@opengsn/paymasters": "^2.2.2-rc.1",
910
"@opengsn/provider": "^2.2.2",
1011
"browserify": "^17.0.0",
1112
"ethers": "^5.3.0",

ui/index.js

+8-1
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,12 @@
11
const ethers = require('ethers')
2+
const { formatEther } = require( 'ethers/lib/utils')
23
const { RelayProvider } = require( '@opengsn/provider')
4+
const paymasterArtifact = require('../build/contracts/WhitelistPaymaster.json')
5+
let whitelistPaymasterAddress
6+
7+
// In truffle console run:
8+
// const pm = await WhitelistPaymaster.deployed()
9+
// pm.whitelistSender('0x90F8bf6A479f320ead074411a4B0e7944Ea8c9C1')
310

411
const paymasterAddress = require( '../build/gsn/Paymaster').address
512
const contractArtifact = require('../build/contracts/CaptureTheFlag.json')
@@ -27,7 +34,7 @@ async function initContract() {
2734
provider: window.ethereum,
2835
config: {
2936
//loggerConfiguration: { logLevel: 'error' },
30-
paymasterAddress
37+
paymasterAddress: whitelistPaymasterAddress
3138
}
3239
}).init()
3340

yarn.lock

+22
Original file line numberDiff line numberDiff line change
@@ -586,6 +586,28 @@
586586
dependencies:
587587
"@openzeppelin/contracts" "^3.4.0-solc-0.7"
588588

589+
"@opengsn/dev@^2.2.2":
590+
version "2.2.2"
591+
resolved "https://registry.yarnpkg.com/@opengsn/dev/-/dev-2.2.2.tgz#29c22828d9cf7f53ebcb716f096a284bcfb803c2"
592+
integrity sha512-2SW0/nufKlbVVg4P/G94YuwvuYe4BNBqfq9EciT31nIFiIc+xmBwRNAB05GQhUdL6l6eeTdCXQN7+78R6u7NoA==
593+
dependencies:
594+
"@opengsn/cli" "^2.2.2"
595+
"@opengsn/contracts" "^2.2.2"
596+
"@opengsn/provider" "^2.2.2"
597+
"@opengsn/relay" "^2.2.2"
598+
599+
"@opengsn/paymasters@^2.2.2-rc.1":
600+
version "2.2.2-rc.1"
601+
resolved "https://registry.yarnpkg.com/@opengsn/paymasters/-/paymasters-2.2.2-rc.1.tgz#add7677548d6011d6a82ec1b2c399e6ae3b8dbdd"
602+
integrity sha512-iNRTrzz//7rUCgIwQ6aLhobkpvaKeDmSXmaEXH1SQPe7I+HQG4s2ejela4XsFmxuXKdC+sOxXdVgvvuFG+W0lQ==
603+
dependencies:
604+
"@opengsn/common" "^2.2.2"
605+
"@opengsn/contracts" "^2.2.2"
606+
"@opengsn/dev" "^2.2.2"
607+
"@opengsn/provider" "^2.2.2"
608+
"@openzeppelin/contracts" "^3.4.0-solc-0.7"
609+
ethereumjs-util "^6.1.0"
610+
589611
"@opengsn/provider@^2.2.2":
590612
version "2.2.2"
591613
resolved "https://registry.yarnpkg.com/@opengsn/provider/-/provider-2.2.2.tgz#f10d51449195c5729a6d23eb0c0933356d16f1cd"

0 commit comments

Comments
 (0)