← Back to home

UniRoll

Flexible and automated payroll streaming service based on Cowswap's programmatic orders.

Screenshots

UniRoll screenshot 1
UniRoll screenshot 2
UniRoll screenshot 3
UniRoll screenshot 4

Problem Statement

Uniroll is essentially a flexible and automated payroll streaming service based on Cowswap's programmatic orders.The Treasury/Employer/DAO determines the amount and tops up the treasury with their own or any token.Receivers choose the token and chain of their choice, and then payments are regularly swapped from the treasury's token to the token of the receiver's choice and streamed regularly using programmatic orders. We also planned to bridge them to the chain of the receiver's choice using hooks. However, currently, we could implement and execute only the first part end-to-end, due to time constraints. The second part remains partially completed as of now.We think this level of personalization and flexibility is required in our diverse world, since contributors/receivers might have preferences for certain tokens or blockchains due to factors like base location, transaction fees, processing times, or personal preferences.The codebase currently is buggy; for example, ERC-1271 always returns true, so please don't use this in production.Deployments :Mainnet : Gnosis, We test in Production :)Payroll(Handler): https://gnosisscan.io/address/0x467751B9224f7828b37e2c242F7c37F1f8b91A0D#readContractTreasury(Owner): https://gnosisscan.io/address/0xdc541fc451c34f8a4ff5f3e21f8f7af224b912cf#tokentxnsExample of Creation of Programmatic Order https://gnosisscan.io/tx/0x7c551dccbac3fbde4dd82c8a612f0342cefe66ca3035cb5304fe3356b680df73Examples of Execution of Programmatic Order Cow being swapped into USDC and streamed https://gnosisscan.io/address/0xdc541fc451c34f8a4ff5f3e21f8f7af224b912cf#tokentxns Curve being swapped into USDC and streamed https://gnosisscan.io/tx/0x13582ff822cd62065ee7305b76b5c8f3dd1999f8a298b9f3d19843daaec19d5e

Solution

We're utilizing Cowswap's latest features—programmatic orders and hooks—for this project. Programmatic orders enable the setting of conditional orders for streams, while post-hooks are used to update the state of a specified receiver. Besides Cowswap contracts, we utilized a standard stack comprising Foundry, Hardhat, Remix, and Gnosis for contract development. For the UI, we used React, Tailwind CSS, Bit, Wagmi, TypeScript, and Vite.

Hackathon

ETHGlobal Istanbul

2024

Prizes

  • 🏆

    Innovation Pool Prize

    WalletConnect

  • 🏆

    Innovate on Gnosis Chain

    Gnosis Chain

  • 🏆

    CoW Programmatic Framework1st Place

    CoW Protocol

Contributors