project screenshot 1
project screenshot 2
project screenshot 3
project screenshot 4
project screenshot 5

Multiple access wallet

Jerry Finance, a cutting-edge Web3 payroll service, unifies FIAT and crypto salary payments while offering employees flexible payment options and frictionless onboarding through non-custodial smart contract accounts created by employers.

Multiple access wallet

Created At

ETHGlobal Tokyo

Winner of

📜 Scroll — Just Deploy

🤝 Polygon — Best Public Good with Account Abstraction

🏊‍♂️ Polygon — Pool Prize

🏦 Safe — Best Tech Implementation

Project Description

Jerry Finance is a visionary platform that transforms payroll management by harnessing the power of Web3 technology. Our groundbreaking solution seamlessly integrates FIAT and crypto salary payments, addressing the pain points of traditional payroll systems and paving the way for a more efficient and flexible process. With Jerry Finance, employers can easily onboard employees into the crypto ecosystem by creating non-custodial smart contract accounts on their behalf. This frictionless onboarding process eliminates the complexities and barriers often associated with crypto adoption. Our platform empowers employees with unparalleled payment freedom, allowing them to choose from various payment methods such as bank transfers, crypto wallets, or streamed salaries. Moreover, they can select their preferred currency or tokens, providing a personalized payment experience. Jerry Finance is designed to be user-friendly and familiar, enabling employees to access their accounts using their corporate email addresses. This intuitive approach ensures a smooth transition for users, bridging the gap between traditional and decentralized systems. We recognize the importance of organization and efficiency in payroll management. That's why Jerry Finance features ENS company subdomains, streamlining employee contract accounts and payment processes. Additionally, our bulk scheduled payments functionality saves time and reduces gas costs, making payroll management more efficient and cost-effective. By revolutionizing payroll management with Web3 innovation, Jerry Finance fosters trust and growth in the digital era. Our platform enables businesses to adapt to the ever-evolving financial landscape, offering a robust, flexible, and future-proof solution. Experience the transformative power of Jerry Finance and redefine your payroll management today.

How it's Made

Smart Contract

On the smart contract side, we focused on the user story for the payment recipient. Specifically, the recipients will use AA smart contract wallets powered by Safe Wallet so the payroll service has unified integration surface. Because AA makes wallet programmable, recipients retain the freedom on what they would like to do whenever payment is received. For example, they could hook it up with Monerium to automatically offramp it to a bank account. For this hackathon, we implemented an automatic swap function so that user could receive any payment in any cryptocurrency of their choice by piping the payment through UniswapV3. We implemented the Autoswap Module, which allows the wallet owner to set desired tokens and source tokens for swapping. The module utilizes execTransactionFromModule function provided by the Safe Wallet to bypass its own security controls and execute token swaps via the Uniswap V3 Router.

Usage

  1. Deploy the AutoswapModule contract, providing the Uniswap V3 Router contract address as a constructor parameter.
npx hardhat run scripts/deploy.ts --network polygon
  1. Enable the deployed AutoswapModule as a module in the Safe Wallet wallet. e.g. https://app.safe.global/matic:0x04A55848D38EDec988A6F2287B8E00718E14ab14/transactions/tx?id=multisig_0x04A55848D38EDec988A6F2287B8E00718E14ab14_0x5f45465a6e897267c1515b9e9dd0473dfea2b2c1be109ec1f70f4a997af937bc
  2. Set a desired token by calling setDesiredToken() from the Safe wallet.
  3. Set source tokens that are allowed to be swapped by calling setSourceToken() from the Safe wallet. e.g. https://app.safe.global/matic:0x04A55848D38EDec988A6F2287B8E00718E14ab14/transactions/tx?id=multisig_0x04A55848D38EDec988A6F2287B8E00718E14ab14_0x43fdaa9d4e9c81826a977d877ee73f159e0209f9857ad500bb68f332cfe3c590
  4. (Optional) Unset source tokens that should no longer be allowed for swapping by calling unsetSourceToken() from the Safe wallet.

Whenever an allowlisted source token is received, anyone could swap them into desired token by

  1. Execute an autoswap by calling executeAutoswap(), providing the Safe address, token to swap, and the amount to swap.
npx hardhat run scripts/autoswap.ts --network polygon

e.g. https://polygonscan.com/tx/0x2842461e19f4c84203e760b723abe91536ba5f2e8ec9075445cdc0419374c770 In the context payroll service, the payroll administrator could push this transaction automatically as a contract with their payee. It is also easy to set up relayer / MEV incentives such that an external party will be motivated to facilitate these transactions.

In fact, it is very much in company's interest to use this set up instead of company actively swapping the tokens before sending to payees. That is because company would have incur taxable event and additional account burden if the settlement currency hits company's book. In this setup, the company's payment currency first lands in user's wallet and company is simply facilitating non-custodial blockchain interactions as approved by the user.

Contract Overview

  • SafeWallet Interface: An interface for interacting with the Safe Wallet wallet.
  • AutoswapModule: Main contract implementing the Autoswap Module functionality.
    • setDesiredToken(): Sets the desired token for the Safe wallet.
    • setSourceToken(): Sets a source token to be allowed for swapping.
    • unsetSourceToken(): Unsets a source token, disallowing it for swapping.
    • executeAutoswap(): Executes the autoswap for a specified Safe, token, and amount using the Uniswap V3 Router.

Frontend

We have used NuxtJS v3 with Vuetify 3 for the webdevelopment. To implement the registration/login features we have used Safe Auth Kit together with Web3Auth for the login providers.

Usage

  1. Enter the jerryfi folder in the repository.
  2. run yarn install to install all the dependencies
  3. run yarn dev to run the server in your local machine
background image mobile

Join the mailing list

Get the latest news and updates