Skip to content

FlowJP Community Proposal: Product Requirements Document including Technical Overview #3

@0xys

Description

@0xys

Overview

The Batch Token Transfer Tool allows for a user to easily set up and automate transfers to multiple Flow wallet addresses from a single Flow wallet address. Useful to anyone who manages a community or works with multiple collaborators, this tool saves users the time required to initiate transfers individually to large groups of people.

Team

Architecture and Technology

  • Frontend: Next.js, TypeScript
  • Transaction Code: Cadence
  • Test: Cadence tester with Go
  • Hosting: modern Host service like Vercel with automatic and seamless CI/CD

User Experience

  1. Let’s start with our dapps home screen.
  2. At the center of the page is the button with which the users can connect to a third-party Flow wallet (Blocto) to our Dapps.
  3. Once any third-party wallet is connected to our dapps, the list of tokens and its balance held by the user's wallet is displayed at the center. By default, FLOW token is selected but users may select other tokens.
  4. Below the list is the expandable textbox, in which the list of recipients’ addresses and the amount is inputted in a certain format as a batch. The format validation may be implemented.
  5. Also, the validation runs to make sure the sum of the sent amount is lower than the user’s balance.
  6. If all validations passed, initially-gray Send button is now activated.
  7. Clicking Send button will open a dialog displaying the summary of the batch transfer and Approve button beneath. If approved, a connected third-party wallet is opened and a transaction is ready to be authorized and broadcasted.
  8. Listening to the chain event to see the status of the sent transaction. Once broadcasted, the user gets notified and the link to Flowscan may be displayed.
  9. During chain spork and any kinds of outage, the user gets notified that the service is unavailable.

Maintainance Plan

  • Frontend
    • Implementation to enhance maintainability so that:
      • Any new third-party wallet can be easily integrated.
      • Token type agnostic
        • Adding and blacklisting Fungible Token may be easy.
      • Minimum and modular design to ensure future extensibility
    • Use of TypeScript
  • Cadence
    • Thorough test cases to be covered to assess the validity of the logic in case of breaking change in Cadence.
      Hosting Service
    • The code changes made to the main branch should trigger CI/CD process and the web page is updated.

Past Project

We have already created the batch transfer tool to distribute bounties to the event participants.

Misc

This document is also shared in google doc: https://docs.google.com/document/d/1ZZgFD7otoFZkJv_xrvpaz4g2JMsT130NXCw-l2PRM5g/edit?usp=sharing

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions