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

Adding GSN support #1

Open
wants to merge 1 commit into
base: workshop
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
12 changes: 10 additions & 2 deletions contracts/CaptureTheFlag.sol
Original file line number Diff line number Diff line change
Expand Up @@ -3,16 +3,24 @@
*/
pragma solidity ^0.7.6;

contract CaptureTheFlag {
import "@opengsn/contracts/src/BaseRelayRecipient.sol";

contract CaptureTheFlag is BaseRelayRecipient {

event FlagCaptured(address previousHolder, address currentHolder);

address public currentHolder = address(0);

constructor(address forwarder) {
trustedForwarder = forwarder;
}

string public override versionRecipient = "2.2.0";

function captureTheFlag() external {
address previousHolder = currentHolder;

currentHolder = msg.sender;
currentHolder = _msgSender();

emit FlagCaptured(previousHolder, currentHolder);
}
Expand Down
6 changes: 5 additions & 1 deletion migrations/2_deploy_contracts.js
Original file line number Diff line number Diff line change
@@ -1,5 +1,9 @@
const CaptureTheFlag = artifacts.require('CaptureTheFlag')


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

console.log( `Deployed CTF at ${CaptureTheFlag.address} with forwarder ${forwarder}`)
}
1 change: 1 addition & 0 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@
},
"scripts": {
"ganache": "yarn run ganache-cli -d --chainId 1337",
"gsn-with-ganache": "run-with-testrpc -d --chainId 1337 'gsn start'",
"test": "run-with-testrpc 'truffle test'",
"compile": "truffle compile",
"start": "truffle deploy && ./ui/compile.sh && yarn serve ./html"
Expand Down
12 changes: 11 additions & 1 deletion ui/index.js
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
const ethers = require('ethers')
const { RelayProvider } = require( '@opengsn/provider')

const paymasterAddress = require( '../build/gsn/Paymaster').address
const contractArtifact = require('../build/contracts/CaptureTheFlag.json')
const contractAbi = contractArtifact.abi

Expand All @@ -21,7 +23,15 @@ async function initContract() {
})
const networkId = await window.ethereum.request({method: 'net_version'})

provider = new ethers.providers.Web3Provider(window.ethereum)
const gsnProvider = await RelayProvider.newProvider( {
provider: window.ethereum,
config: {
//loggerConfiguration: { logLevel: 'error' },
paymasterAddress
}
}).init()

provider = new ethers.providers.Web3Provider(gsnProvider)

const network = await provider.getNetwork()
const artifactNetwork = contractArtifact.networks[networkId]
Expand Down
Loading