Grant Application - Safe CSV Airdrop

Project Overview

A Safe Application for multi-token transfers in a single Ethereum transaction.

Project name

Safe CSV Airdrop

Team members

Manuel Gellfart

What project are you building

Send arbitrarily many distinct tokens, to arbitrarily many distinct accounts with various different values from a CSV file in a single Safe transaction!

Project Repo here
In the readme is a link to the currently deployed version on ipfs.

Why did you decide to build it

Existing tools, like multisender.app for this type of application are missing essential details (e.g. can only multi send a single token at once) and charge a fee (without even telling the user). They also originate from an EOA account which transfers the funds into a safe first and then sends them out (making them slightly less gas efficient – tokens need to go to one place first before they are distributed out to the recipients).

How long will it take

Not more than 7 days (Review process could span a couple of weeks)

How much funding are you requesting

2k DAI

How did you hear about this grant

Through a friend, Ben Smith, who is an employee at Gnosis that started this project

Submission Outline

Safe App description

Send arbitrarily many distinct tokens to multiple different recipients in various denominations from a CSV file in a single Safe transaction!

For several reasons, people want to be able to transfer arbitrarily many distinct tokens, to different recipients with various values in a single transaction (e.g. project token airdrops, paying suppliers, incentive programs, paying salaries, etc…). This application fills a gap in the ecosystem saving people substantial amounts of time and gas money.

A Quote from the project’s README

“Have you encountered the painful task of sending out multiple token transfers to several recipients with various different values? Not only do you have to have to initiate multiple transactions, but then each transaction requires a signature threshold followed by the time it takes to have each transaction mined… Well these days are over! Finally a Safe App which allows you to transfer various ERC20 tokens to arbitrarily many recipients for varying amounts in a single Ethereum transaction. It’s as simple as uploading a CSV “transfer” file and submitting a single transaction.”

Features

This application will allow a user to either upload or paste a CSV “Transfer File” which is parsed and encoded into a multisend of token transfers. To summarize, this application will support

  • ERC20 token transfers
  • Native Asset transfers
  • Networks; Mainnet, xDai, Rinkeby
  • Multiple token lists for mainnet (so that known token icons will be displayed)
  • Support for “unknown” tokens by providing token decimals
  • Intuitive UI

Optional: Time permitting, we could also add support for NFT (ERC721) transfers, but the UI would have to be slightly different (so it may not happen for the initial release).

Individual / Team description

Manuel Gellfart - Studied Computer Science at Uni Paderborn and FU Berlin. Working as a fullstack developer in Berlin.

Timeline, Milestones and Deliverables

Project is already well underway and should not take more than another two weeks. Currently this app is already fully functional and is only missing testing and a good UI. Plan of execution is to include tests and improve the UI (using safe web components).

We have created a milestone in the gihub repo for the initial release with a due date of May 31, 2021.

Disclosure

@bh2smith - the originator of this project and not eligible for the grant (as a Gnosis Employee). However, he actively assists with the deliverables and guide the project to the finish line.

8 Likes

Welcome to the forum @schmanu. I think this is an awesome project proposal!

2 Likes

I know @schmanu personally, and would consider him very well suited for this project (he might not have a lot of blockchain experience but most of the smart contract related interactions are already implemented).

Given that the focus of this proposal is mostly on delivering the intuitive UI and productionizing the existing demo app, would it be possible to get an idea of how the finished product is supposed to look like?

1 Like

Hey @fleupold,
I was possible to rework most parts of the UI in the past week and think the UI is almost ready to ship.

Here is a short gif showing the current UI:

UI Concept

This app just needs a clear and simple UI enabling users to send multiple transactions with the least amount of interactions possible:

  • If the provided csv is valid: Just press submit and then submit the created safe transaction
  • If its invalid we mark the invalid rows and provide the reason why those rows are invalid

Other requirements where that this app should use gnosis-safe-react-components where possible and style other components in appropriate ways to provide a consistent UX.

Missing features not shown in the gif:

  • checking for sufficient funds
  • reading decimals from token contracts to get rid of the decimals column
  • (optional) being able to toggle between list of transactions / summary of transactions showing sums of each token being sent

If you have further questions I’m happy to answer them!

4 Likes

This is great and I fully support this grant!

3 Likes

Congratulations, @schmanu, this grant has been approved!

Please follow up in this thread or via DM once the above deliverables have been met so we can review, add it as in official safe app, and send your compensation, or you have any questions in the mean time. :slightly_smiling_face:

3 Likes

That’s great news! :partying_face:
I hope the first release will be done by the end of this month as planned.
I’ll update this thread on progress or questions either way!

2 Likes

There’s been good progress in the development of the app and a first working version is available on IPFS: https://cloudflare-ipfs.com/ipfs/QmcpLaftmiXPPVAbx1rhKSazagxkT5vqX9bcHgy1r1u2sC

Now the app checks for sufficient balance before submitting transactions and it fetches decimals / symbols from the token contract. So now transfers are possible by only providing the token address, receiver address and amount.

The UI and features should be complete by now. No big further changes are planned. The next goal before releasing v1 is improving the test coverage and possibly some minor tweaks.

Any feedback is very welcome :slight_smile:

3 Likes

Awesome! Seems to be working well.

I do notice that the input is a little buggy when you try to input numbers, the cursor jumps around a little and sometimes misses inputs.

It would also be great if it could resolve ENS names in either of the address fields.

3 Likes

Agree with Auryn here, the input box could definitely be improved. Looks good otherwise.

Perhaps we can change the app description to “Upload your CSV transfer file to send arbitrarily many tokens of various amounts to a list of recipients.”

1 Like

Hey Auryn and John!

Thanks for your feedback.
I was able to reproduce and fix the buggy editor behavior today.
Tomorrow I will look into resolving ENS names and update the description :slight_smile:

1 Like

Is there an updated IPFS link that I can test? We are using the app weekly in our testing sessions.

Whenever we publish a new version we update the Readme of the repo: https://cloudflare-ipfs.com/ipfs/QmTTX7SPpxD1kWfnuRhz3k5SNcCikNtnp7wgCykB4eWMZt

But that version has a few minor issues. We are close to the finish line of v1 the few things missing for release are:

  • Making the table component scrollable :white_check_mark:
  • fixing caching bug during ens lookup :white_check_mark:
  • Disabling ens resolution for too many unique receivers (~10+) because its just slow and makes the app feel janky :no_entry_sign:

There are also some features planned for later versions:

  • offer a toggle between summary of all transactions and list of transactions
  • drain safe button

If you stumble upon some bugs / suggestions feel free to drop them.

Cheers and have a nice weekend!

3 Likes

Looks really good!

Would it be possible to align the design a bit more with other parts of the UI. I.e. with the transaction or asset list section?

-> Change background behind card to #F7F5F5
-> Remove title " CSV Airdrop"
-> Increase text size of the “Upload, edit or paste your…” text
-> Increase slightly the margin to the sidebar

3 Likes

Also I very much like your description “Send arbitrarily many distinct tokens, to arbitrarily many distinct accounts with various different values from a CSV file in a single transaction”. I think this sentence should be the first thing a user sees in the app before the “Upload, edit or past your…” text. As this would help users immediately understand what the app is about.

4 Likes

Today I am happy to announce the long awaited v1 of the Safe CSV Airdrop!

IPFS Link: https://cloudflare-ipfs.com/ipfs/QmTbZNBHDfSVzS2AkH8RynzmBrKb9hSJhBZTrQrwWz3pgu

It includes all features of the v1 milestones and additionally all suggestions made on this forum.

Theses features include

  • send multiple transfers of arbitrary tokens to arbitrary receivers withing one transaction by providing a single csv transfer file
  • improved UI
    • code-editor for fast editing / pasting of a transfer CSV
    • drag and drop upload
    • using safe-react-components for a consistent look and feel
    • minor UI changes as suggested on this forum
  • reading token info directly from the token contracts via web3 if not found in any token list
  • ENS support
    • lookup of addresses for <15 unique receivers
    • resolving ens names in address fields
  • checks if the connected wallet holds sufficient tokens for the planned transfers and warns for insufficient balances

There are still ideas and issues floating around in our heads so there will be further work and updates on this app.

But for now I hope for joyful transfer experiences and look forward to feedback and the review process!

Special thanks to the early testers for your feedback @lukas_gnosis, @johndavide, @auryn_macmillan and @fleupold!

5 Likes

Nice. Checked out the new version. Seems like the background is not yet the same as e.g. in the address book view. Would be nice if this could be changed, as there is currently not really much contrast between the card and the background.

Alternatively, it would also be possible to keep the background white, but then the drop-shadow of the card should be removed.

CleanShot 2021-06-21 at 12.51.57@2x

Looks good to me. :smile:

1 Like

@schmanu Would it be possible to address my comment on the background color and finally open a ticket on https://github.com/gnosis/safe-apps-list in order to get the app listed as a default app?

3 Likes

Sorry for the delay. I didn’t have any time last week, because I moved places, but now I’m back :smiley:

I opened an issue on the safe-apps-list github project and will look into the style changes this week.

3 Likes