---
# System prepended metadata

title: Front - Incentivizing Open Finance

---

# Front - Incentivizing Open Finance

## Features and Components

- **Front Proxy Factory** Uses Create2 opcode and non upgradable proxy concept to deploy Frontier Smart Wallets for users, with GSN Support so users need not pay for gas while getting onboarded.

- **Front Smart Wallet** Allow users to delegate any transactions they want to make by delegating them to their Smart Wallet and with an auth mechanism so the wallet owner can only delegate calls to their own wallet, integrated with GSN Support so the users don’t have to pay for their transactions.

- **Front PayMaster** To be only operated by the Frontier Admins in order to fund all the user operations whether it’s creation of new smart wallets or new any smart wallet operations as part of GSN Support.

- **Front L2 Proxy Factory** Same Contract code as L1 but the only change is since the contracts will be deployed to L2([Optimism](https://optimism.io/)) hence the transactions are super cheap so meta transactions are not supported.

- **Front L2 Smart Wallet** Same Contract code as L1 but the only change is since the contracts will be deployed to L2 ([Optimism](https://optimism.io/)) hence the transactions are super cheap so meta transactions are not supported.

- **L1 - L2 Bridge** Both L1 and L2 Smart Wallet contracts now support sending transactions on the other side and hence a test case that tests creation of a smart wallet on L2 by initiating a transaction on L1 can be found [here](https://github.com/frontierdotxyz/front-monorepo/blob/front-ovm-contracts/packages/front-bridge-contracts/test/front.bridge.spec.js).


## Setup

Requirements:

- Node >= v12
- Yarn

```bash
$ npm i -g yarn  # Install yarn if you don't already have it
$ yarn install   # Install dependencies to all sub modules and go inside the packages directory and run yarn install for all repo's
```


## Testing

### L1 Contracts

- Go to front-contracts directory inside packages and open up 2 more terminal windows
- Run  ```ganache-cli -i 1337 --chainId 1337```
- Go to ```front-contracts``` folder and run ```npx gsn start``` to start the gsn setup
- Go to ```front-contracts``` folder and run ```yarn test```

### L2 Contracts 
- Clone the optimism integration [repository](https://github.com/ethereum-optimism/optimism-integration)
- Run ``` docker-compose pull ```
- Run ``` ./up.sh ```
- Go to front-ovm-contracts directory inside packages
- Run ``` yarn test ```

### L1 - L2 Bridge
- Clone the optimism integration [repository](https://github.com/ethereum-optimism/optimism-integration)
- Run ``` docker-compose pull ```
- Run ``` ./up.sh ```
- Go to front-ovm-contracts directory inside packages and open up an additional terminal window
- Run ``` yarn gsn ```
- Go to node_modules/@opengsn/gsn/contracts/BaseRelayRecipient.sol and @opengsn/gsn/contracts/interfaces/IKnowForwarderAddress.sol and above the pragma statement add ``` // @unsupported: ovm ```
- Run ``` yarn test ```

Copyright (c) 2020 Ohana Labs Pte Ltd
