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

Custom paymaster #2

Open
wants to merge 1 commit into
base: workshop-with-gsn
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
9 changes: 9 additions & 0 deletions contracts/ImportArtifacts.sol
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
//SPDX-License-Identifier: MIT
pragma solidity ^0.7.6;
pragma experimental ABIEncoderV2;

//"import" it into our project for Truffle to generate artifacts
import "@opengsn/paymasters/contracts/WhitelistPaymaster.sol";

import "@opengsn/contracts/src/RelayHub.sol";

19 changes: 18 additions & 1 deletion migrations/2_deploy_contracts.js
Original file line number Diff line number Diff line change
@@ -1,9 +1,26 @@
const CaptureTheFlag = artifacts.require('CaptureTheFlag')
const WhitelistPaymaster = artifacts.require('WhitelistPaymaster')
const RelayHub = artifacts.require('RelayHub')


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

console.log( `Deployed CTF at ${CaptureTheFlag.address} with forwarder ${forwarder}`)
await deployer.deploy(WhitelistPaymaster)
const relayHubAddress = require('../build/gsn/RelayHub.json').address
const paymaster = await WhitelistPaymaster.deployed()
await paymaster.setRelayHub(relayHubAddress)
await paymaster.setTrustedForwarder(forwarder)
// This is the first ganache address, when started with "ganache-cli -d"
await paymaster.whitelistSender('0x90F8bf6A479f320ead074411a4B0e7944Ea8c9C1')

// to add more addresses to the whitelist, open truffle console and run:
// const pm = await WhitelistPaymaster.deployed()
// pm.whitelistSender('0x90F8bf6A479f320ead074411a4B0e7944Ea8c9C1')

console.log(`RelayHub(${relayHubAddress}) set on Paymaster(${WhitelistPaymaster.address})`)
const relayHub = await RelayHub.at(relayHubAddress)
await relayHub.depositFor(paymaster.address, {value: 1e18.toString()})
console.log(`1 ETH deposited to Paymaster(${WhitelistPaymaster.address})`)
}
1 change: 1 addition & 0 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@
"dependencies": {
"@opengsn/cli": "^2.2.2",
"@opengsn/contracts": "^2.2.2",
"@opengsn/paymasters": "^2.2.2-rc.1",
"@opengsn/provider": "^2.2.2",
"browserify": "^17.0.0",
"ethers": "^5.3.0",
Expand Down
9 changes: 8 additions & 1 deletion ui/index.js
Original file line number Diff line number Diff line change
@@ -1,5 +1,12 @@
const ethers = require('ethers')
const { formatEther } = require( 'ethers/lib/utils')
const { RelayProvider } = require( '@opengsn/provider')
const paymasterArtifact = require('../build/contracts/WhitelistPaymaster.json')
let whitelistPaymasterAddress

// In truffle console run:
// const pm = await WhitelistPaymaster.deployed()
// pm.whitelistSender('0x90F8bf6A479f320ead074411a4B0e7944Ea8c9C1')

const paymasterAddress = require( '../build/gsn/Paymaster').address
const contractArtifact = require('../build/contracts/CaptureTheFlag.json')
Expand Down Expand Up @@ -27,7 +34,7 @@ async function initContract() {
provider: window.ethereum,
config: {
//loggerConfiguration: { logLevel: 'error' },
paymasterAddress
paymasterAddress: whitelistPaymasterAddress
}
}).init()

Expand Down
22 changes: 22 additions & 0 deletions yarn.lock
Original file line number Diff line number Diff line change
Expand Up @@ -586,6 +586,28 @@
dependencies:
"@openzeppelin/contracts" "^3.4.0-solc-0.7"

"@opengsn/dev@^2.2.2":
version "2.2.2"
resolved "https://registry.yarnpkg.com/@opengsn/dev/-/dev-2.2.2.tgz#29c22828d9cf7f53ebcb716f096a284bcfb803c2"
integrity sha512-2SW0/nufKlbVVg4P/G94YuwvuYe4BNBqfq9EciT31nIFiIc+xmBwRNAB05GQhUdL6l6eeTdCXQN7+78R6u7NoA==
dependencies:
"@opengsn/cli" "^2.2.2"
"@opengsn/contracts" "^2.2.2"
"@opengsn/provider" "^2.2.2"
"@opengsn/relay" "^2.2.2"

"@opengsn/paymasters@^2.2.2-rc.1":
version "2.2.2-rc.1"
resolved "https://registry.yarnpkg.com/@opengsn/paymasters/-/paymasters-2.2.2-rc.1.tgz#add7677548d6011d6a82ec1b2c399e6ae3b8dbdd"
integrity sha512-iNRTrzz//7rUCgIwQ6aLhobkpvaKeDmSXmaEXH1SQPe7I+HQG4s2ejela4XsFmxuXKdC+sOxXdVgvvuFG+W0lQ==
dependencies:
"@opengsn/common" "^2.2.2"
"@opengsn/contracts" "^2.2.2"
"@opengsn/dev" "^2.2.2"
"@opengsn/provider" "^2.2.2"
"@openzeppelin/contracts" "^3.4.0-solc-0.7"
ethereumjs-util "^6.1.0"

"@opengsn/provider@^2.2.2":
version "2.2.2"
resolved "https://registry.yarnpkg.com/@opengsn/provider/-/provider-2.2.2.tgz#f10d51449195c5729a6d23eb0c0933356d16f1cd"
Expand Down