Giter Club home page Giter Club logo

bot_2's People

Contributors

matthewwoo-zz avatar

Watchers

 avatar

bot_2's Issues

As an Issuer, I want to be able to update which providers I plan to work with and those that did not accept my application

## Objective
Allow an issuer to mark which providers they are planning to work with.

## Solution
Issuers should be able to set the status of their engagement with Service Providers to one of 4:

  1. Pending (set when the application is sent)
  2. Engaged (when the SP and the Issuer connect off-chain)
  3. Selected (when the SP and the issuer both agree to work together)
  4. Declined (when the SP passes on the opportunity)

## Case 1: Selected Provider to Work With
When a Service Provider is status is updated to "Selected", the Issuer should be presented with a model that indicates:

  • Header Copy:
  • Notify Other Service Providers
  • Body Copy:
  • Now that you have selected a Service Provider in that category. Should we inform all other service providers in that category that you are withdrawing your engagement request?
  • Button Copy:
  • Yes / No

If the Issuer clicks "Yes" - A notification email is sent to all Service Providers (except the one that is "Selected")
If the Issuer clicks "No" - The modal closes and no message is sent.

### Email
Subject Copy:
Engagement Request Withdrawn

Body Copy:
Please be advised that from has elected to withdraw their engagement request with your firm.
If you should require any follow-up communication, please follow-up with directly.

## Case 2: Updated Selected Provider to Decline
In the case that an issuer after engaging with their "Selected" service provider decides they are no longer suitable and would like to select another, they should be able to:

  1. Update that service provider's status to "Declined"
  2. Able to apply again to the other providers

If they apply to the other providers again we will prompt the with the same application form that was used previously.

Reconsider, refactor and refine email flow

  • include ability to re-engage with issuers as they move away from the dApp for an extended (defined) period of time
  • use ticker expiry date from smart contract
  • support multiple Ethereum networks

An example of an attack that we need to prevent:

  1. Issuer creates a token and begins going through the process of creating their STO.
  2. Shortly before Issuer is going to launch their token, a malicious creates an STO with a ticker symbol that looks exactly the same as Issuer's but actually has a special character such as the invisible zero-width space (which is not currently blocked by the smart contracts).
  3. The malicious user, having signed up with one of Issuer's email addresses, launches their own STO.
  4. Issuer receives an email from Polymath that appears to indicate that their STO has launched.
  5. Issuer takes the address of the STO from the email they received (the malicious user's STO address) and instructs investors to send money to it.

Since we're going to start storing the user's email address and verifying that they own it, emails that are sent to the user that triggered them (such as the example above) won't be usable in scams or for spamming.

For emails that are sent to email addresses other than the user's own address (such as service provider emails) some more thought may be needed.

Minting / Supply / STO behaviour

A few questions popped into my mind that we might want to capture somewhere and address them:

  • Should the issuer be able to mint tokens for shareholders even after the STO has been attached?
  • How about after the STO has finished?
  • Should we have them set a maximum supply at minting stage?
  • The cappedSTO won't mint unsold tokens from the cap. What are the implications of that?

As an issuer, I want to return to where I left off in the process

Chromium
Linux

  1. Visit https://5af376db8df8944830c371c1--polymath-issuer.netlify.com/ on one day and provision your token through the Token Registration, issuance, configure STO and submitting approved investors
  2. Then on a different day revisit the dapp https://5af376db8df8944830c371c1--polymath-issuer.netlify.com/ and not from the (https://5af376db8df8944830c371c1--polymath-issuer.netlify.com/dashboard/DIG1 ) URL.
  3. User is presented the initial screen again and asked to type their name and email and
  4. User has to "sign the transaction again" in metamask to show he controls his particular address
  5. user is then presented to create a new STO
  6. User is not sure how to get back to the token they previously were setting up Dashboard area

If a user wants to return to where they left off in the dashboard they would need the URL https://5af376db8df8944830c371c1--polymath-issuer.netlify.com/dashboard/DIG1 it doesn't seem they have a way to return where they left off.
Desired outcome: Perhaps loading screen would say New or returning users. Then if you sign from metamask the address you control the dapp would display your other tokens you had in progress or tokens you deployed from that address before and allow you to select one to navigate to https://5af376db8df8944830c371c1--polymath-issuer.netlify.com/dashboard/DIG1
This would be similar to how in the ChronoLogic ETH Alarm Clock dapp we show tx history from someone's particular address.

As an Issuer, I can quickly identify which information will be stored on-chain, on-browser and centrally - Wireframing

Issuers launching their first STOs are not expected to be blockchain savvy, and as such may not be clear on where the information they are entering is stored.

As it stands today, the dApp will be capturing information that will be stored in:

  • Blockchain, OR
  • Local storage, OR
  • IPFS (aka Decentralized File System), OR
  • Centrally (for engagement purposes), OR
  • Shared over email with the selected providers.

Whenever entering information, the issuer should instantly identify where the information will be stored.

BUG: STO Start/End Time Format Error

Error message should show the format for time so the user knows what information to enter. Link to FullStory is here: FullStory Session

The Issuer cannot elect to start a fundraise at 00:00 as this time is considered invalid.
Issuers should be able to pick any start/end time for an STO, as long as it is in the future

┆Attachments: image.png

Change network to Kovan

Affects polymath-issuer, polymath-auth, polymath-offchain repos and Quiknode configurations.

As an issuer, I can select which investors are exempt from the 20% limit for bad actors

## Objective
To help an issuer be able to select if they would like to limit the % that investors can own and which investors are exempt from that limit.

## Solution
This solution will involve the following components:

  1. Enable and set the % ownership limit
  2. Select investors who are exempt

## Enable and set the % ownership limit
An issuer can enable and set the % ownership limit for their STO on the whitelist view by:

  1. Check the % ownership limit box
  2. Set the % ownership limit
    NOTE - Ownership limit is set by wallet address.

% Ownership Setting

  • Setting Label: % Ownership
  • Setting Copy: Investors can own up to ___% of outstanding tokens
  • Type: Checkbox + Numeric Field

## Select investors who are
An issuer can select whether they would like an investor to be exempt from the % ownership in the following places:

  1. Individual Whitelist Investor Modal
  2. Whitelist Investor CSV
    NOTE - Issuer should be able to provision ageing on any entry on that list.

It will then be displayed in the Whitelist table so that issuer can easily identify which investors are exempt from the % ownership:

  • Column Copy: % Ownership Exemption
  • Position: After

## Individual Whitelist Investor Modal
When an issuer is adding an investor via the whitelist modal they can select if the investor is exempt from the % ownership limit

  • Setting Copy: Exempt from % Ownership
  • Type: Checkbox

## CSV Whitelist Investor Modal
When an issuer is uploading a list of investors via CSV they can select if the investor is exempt from the % ownership limit by inputting TRUE in the exempt from % ownership column:

  • Column Copy: Exempt from % Ownership
  • Type: Boolean

Dapp gets confused when Issuer creates 2 tokens

  1. Create one token (say ABC1), proceed with STO and complete the fundraise
  2. Clear cache
  3. Start the process over and create another token (ABC2)
  4. Enter email address
  5. Activate email account
  6. Issuer receives a confirmation email for the ABC1 token registration created in (1)
  7. Issuer is redirected to the initial token ABC1 that was created during (1) instead of the token ABC2 created in (3).

UI has a typo in the "Note" in "Set UP Offering Details"

"All smart contracts listed below were independently audited. Polymath does however recommend you select a Smart Contract Auditor to perform additional fication on the smart contract you selected."

Should read:
All smart contracts listed below were independently audited. Polymath does however recommend you select a Smart Contract Auditor to perform additional verification on the smart contract you selected.

┆Attachments: Screenshot 2018-05-31 at 09.42.56.png

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.