Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Gasless Bundled Transactions #31

Open
tarun1475 opened this issue May 5, 2020 · 10 comments
Open

Gasless Bundled Transactions #31

tarun1475 opened this issue May 5, 2020 · 10 comments

Comments

@tarun1475
Copy link
Contributor

tarun1475 commented May 5, 2020

Prize Bounty

$1500

Challenge Description

Bundling Transactions could help in reducing network congestion and save gas fees for the users, but more importantly, it could drastically improve the UX of the DApps as well.

Build a Smart Contract Layer to bundle multiple transactions on-chain into a single transaction to save gas fees and integrate biconomy to provide gasless transactions for the users. The contract layer must be generic and must be able to support transactions from different arenas( DeFi, Gaming, etc.)
Transaction ordering should be preserved and proper error handling should be considered.

E.g Create a smart contract wallet and call functions on contract wallet in one Bundled Transaction on-chain

Submission Requirements

  • Submissions must be open source
  • Biconomy must be integrated in the application to reflect better UX
  • The app should offer solution to an existing problem or add value to the users
  • The project must have a working demo to be considered a complete submission recommended to submit the submission as a PR in the https://github.com/bcnmy/mexa-sdk/gitcoin/your_project_folder repository for quick and easy assessment

Submission Deadline

May 27, 2020

Judging Criteria

We are looking for projects to extract complexities and build an easy to use smart contract layer off-chain and on-chain.Composability must be considered.

Keeping transaction ordering and how to handle the case if one or more transactions from the bundled transaction fail, will be major factors while evaluating the solution.

Winner Announcement Date

June 2, 2020

@gitcoinbot
Copy link

Issue Status: 1. Open 2. Started 3. Submitted 4. Done


This issue now has a funding of 1500.0 USDT (1500.0 USD @ $1.0/USDT) attached to it as part of the bcnmy fund.

@tarun1475
Copy link
Contributor Author

tarun1475 commented May 9, 2020

Issue Status: 1. Open 2. Started 3. Submitted 4. Done

Work has been started.

These users each claimed they can complete the work by 2 weeks, 4 days from now.
Please review their action plans below:

1) jochem-brouwer has started work.

I will create a contract which will handle multiple transactions in a tree structure. Every node will have a setting to either accept failed transactions OR to revert all changes done by any underlying transactions.

A question though: Biconomy must be integrated in this project. However, I will probably just use Biconomy as how I would use web3 by default. Am I missing something here or is that ok?

Learn more on the Gitcoin Issue Details page.

Yes you can definitely use Biconomy as a web3 provider but the end goal is to use mexa sdk for the gasless transactions and use Biconomy relayer infrastructure to relay meta transactions.

@tarun1475 tarun1475 reopened this May 9, 2020
@tomarsachin2271
Copy link
Collaborator

Issue Status: 1. Open 2. Started 3. Submitted 4. Done

Work has been started.

These users each claimed they can complete the work by 2 weeks, 4 days from now.
Please review their action plans below:

1) jochem-brouwer has started work.

I will create a contract which will handle multiple transactions in a tree structure. Every node will have a setting to either accept failed transactions OR to revert all changes done by any underlying transactions.

A question though: Biconomy must be integrated in this project. However, I will probably just use Biconomy as how I would use web3 by default. Am I missing something here or is that ok?

Learn more on the Gitcoin Issue Details page.

Make sure you handle the order of the transaction also.
And since ethereum has a block limit also, so transaction sender should be able to know if the transaction bundle is big enough to be included in a single block. Miners tends to include multiple small size transaction rather than one big size transaction. So the balance should also be there in the budle size.
If possible emit relevant events also.

@mds1
Copy link

mds1 commented May 25, 2020

From the Gitcoin bounty page it seems no one is working on this bounty, so I'm thinking of putting together a submission over the next two days. Let me know if the below proposal would be eligible for this bounty:

Design a contract similar to Multicall where an aggregate function takes an array of addresses and an array of calldata, enabling arbitrary function calls on any contract. Our contract would act as a smart contract wallet, so it would have an owner and only the owner can call aggregate, that way msg.sender on target contracts still works as expected. Biconomy would be integrated into this contract/app for meta-transaction support.

On the frontend, when a user visits the app they will connect their web3 wallet. On their first visit to the app we deploy their wallet contract. The app presents a selection of contract methods to the user (such as mint cDAI or join PoolTogether), and lets them execute all actions as a bundled transaction by calling aggregate.

@gitcoinbot
Copy link

Issue Status: 1. Open 2. Started 3. Submitted 4. Done


Work has been started.

These users each claimed they can complete the work by 1 day, 19 hours from now.
Please review their action plans below:

1) mds1 has started work.

I'll design a contract similar to Multicall where an aggregate function takes an array of addresses and an array of calldata, enabling arbitrary function calls on any contract. This contract would act as a smart contract wallet, so it would have an owner and only the owner can call the aggregate function, that way msg.sender on target contracts still works as expected. Biconomy would be integrated into this contract/app for meta-transaction support.

On the frontend, when a user visits the app they will connect their web3 wallet. On their first visit to the app we deploy their wallet contract. The app presents a selection of contract methods to the user (such as mint cDAI or join PoolTogether), and lets them execute all actions as a bundled transaction by calling aggregate.

Learn more on the Gitcoin Issue Details page.

@anubhavgirdhar
Copy link

From the Gitcoin bounty page it seems no one is working on this bounty, so I'm thinking of putting together a submission over the next two days. Let me know if the below proposal would be eligible for this bounty:

Design a contract similar to Multicall where an aggregate function takes an array of addresses and an array of calldata, enabling arbitrary function calls on any contract. Our contract would act as a smart contract wallet, so it would have an owner and only the owner can call aggregate, that way msg.sender on target contracts still works as expected. Biconomy would be integrated into this contract/app for meta-transaction support.

On the frontend, when a user visits the app they will connect their web3 wallet. On their first visit to the app we deploy their wallet contract. The app presents a selection of contract methods to the user (such as mint cDAI or join PoolTogether), and lets them execute all actions as a bundled transaction by calling aggregate.

@mds1 Sure. That's eligible. A nice DeFi/Gaming use case along with the smart contract layer would be awesome :)

@tomarsachin2271
Copy link
Collaborator

From the Gitcoin bounty page it seems no one is working on this bounty, so I'm thinking of putting together a submission over the next two days. Let me know if the below proposal would be eligible for this bounty:

Design a contract similar to Multicall where an aggregate function takes an array of addresses and an array of calldata, enabling arbitrary function calls on any contract. Our contract would act as a smart contract wallet, so it would have an owner and only the owner can call aggregate, that way msg.sender on target contracts still works as expected. Biconomy would be integrated into this contract/app for meta-transaction support.

On the frontend, when a user visits the app they will connect their web3 wallet. On their first visit to the app we deploy their wallet contract. The app presents a selection of contract methods to the user (such as mint cDAI or join PoolTogether), and lets them execute all actions as a bundled transaction by calling aggregate.

Make sure the solution is generic in nature and handles cases like too many transactions in the bundle as each block has a Gas limit, and it should be generic enough for the caller to choose if while bundle should fail if one of the tx fail or not.
Check out our workshop video at the end to know more about the bounty..

https://youtu.be/L2QlOk5F80c

@gitcoinbot
Copy link

Issue Status: 1. Open 2. Started 3. Submitted 4. Done


Work for 1500.0 USDT (1500.0 USD @ $1.0/USDT) has been submitted by:

  1. @mds1

@tomarsachin2271 please take a look at the submitted work:


@mds1
Copy link

mds1 commented Jun 16, 2020

Hey all, just wanted to follow up on this bounty and see what the status was!

@gitcoinbot
Copy link

Issue Status: 1. Open 2. Cancelled


The funding of 1500.0 USDT (1500.0 USD @ $1.0/USDT) attached to this issue has been cancelled by the bounty submitter

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

5 participants