Viniswap: Requirements

Viniswap is the graphical interface that allows user the following:

  • Data Visualization: three types of data for each MTB* vintage: "Vineyard", "Work", "Money"

  • Trade: (Buy and sell) MTB* vintage tokens, in ETH by connecting to the user's wallet to Uniswap and the MTB* vintage crowdsale contracts

  • Redeem: exchange tokens for bottles of wine

  • Exchange Info: Access information about token historical pricing

  • Liquidity: Enable users to add or remove liquidity from MTB* token liquidity pools

This document describes the functional requirements for Viniswap. In separate sections, we define the requirements for:

  • User's wallets for holding MTB* vintage tokens and ETH

  • The form used by Costaflores workers to register tasks

  • The form for redeeming bottles of wine with tokens

Data Visualization

Four types of data for each MTB* vintage: sensor, tasks, business, images

Req
ID

P

Definition

Owner

Notes

1.1.1

1

Present "Vineyard" sensor data, for each vintage token, starting on the 6th of May of the previous year, through the 5th of May of the following year, the day before the token is issued (i.e. sensor data for the MTB21 token runs from 6th of May, 2020 to 5th of May, 2021) - on Argentine Time Zone.

enchainté

If it is too complicated to start on the 6th of May and end on the 5th, we could start on the 1st of May with sensor data, and end on the 30th of april.

 

1.1.2

1

Present Work, in a tabular format, with the following columns:

Date

Task Name (from fixed set of tasks)

Worker name

Tools used

Chemicals Used (and amount)

Start Time

Finish Time

Start Location (row, claro, plant) - End Location (row, claro, plant)

Note (observations)

enchainté

These are the current task fields in the database managed by OpenBravo.

1.1.3

1

At the top of the Work section, present the visual representation of the percentage of task hours, per category block, against an MTB bottle.

enchainté

 

1.1.4

1

The Vineyard data should be presented in two views (daily, monthly) for: 

+ Temperature average (for monthly) and hourly in ºC

+ Subsoil humidity (.5m, 1m, and 2m) - relative percentage from 0-100%

+ Solar irradiance - VI, IR, UV

+ Rain (a running total for the year) - mm (0-400)

+ Atmospheric pressure (950-1020 range)

+ Relative Humidity - relative percentage from 0-100%

+ Wind Speed (in Knots)

+ Wind Direction in degrees 0º-359º

enchainté

All data points are currently correct except for:

Rain fall (sensor not working properly)

Solar irradiance (sensor not working properly)

Atmospheric pressure (scale needs to be calibrated)

Wind Direction (not reporting)

1.1.5

 

1

Present "Money" in tabular format, including

G/L Category

Date

Account

Amount

Notes

enchainté

 

1.1.6

1

At the top of the Money section, present the visual representation of the percentage of money spent for expense categories, against an MTB bottle, in similar fashion as for tasks. Include two fields:

Estimated Landed Cost, per bottle, for ICO

Total Cost per bottle (running total)

enchainté

 

1.1.8

1

The data must be localized in the following languages: English, Spanish, Portuguese, French, Catalan

enchainté

 

1.1.9

1

At the top of the Vineyard section, incorporate a dashboard, with the following items:
Vineyard info:

Name (Costaflores Organic Vineyard)

Location (///multimedia.sonorous.puppies) - link to what3words

Time / Date of last update

Vineyard Stage: (bud burst, flowering, setting, thinning, veraison, harvest, pruning)

Input molecules:

Co (Copper)

S (Sulfur) 

H2O

Guano

Buttons for: Live Stream

Grape status:

pH, Brix, Total Acidity, KG (estimated or harvested)

 

enchainté

 

1.1.10

1

Use a color scheme consistent with the Costaflores and/or OpenVino style guide.

enchainté

 

1.1.11

1

Instructions for modifying text and the background image.

enchainté

 

1.1.12

1

Document the architecture components and provide monitoring points and procedures for service recovery.

enchainté

 

1.1.13

1

On the Vineyard section, next to the Month and Date selection, add a button to link to the YouTuber 360 video of the:

specific day,

or for the month, if "none" is selected as the date.

This requires a lookup from a table where the name of the URL is written. If the current date is selected, the "Live Stream" is viewed.

enchainté

 

1.1.14

1

Map the YouTube 360 Live Stream with the Vinophonics audio

Mike

 

 

Trade

Trade: (Buy and sell) MTB* vintage tokens, in ETH by connecting to the user's wallet

Req 
ID

P

Definition

Owner

Notes

1.2.1

1

Buy and sell tokens by connecting a web3 wallet to interact with the uniswap v1 smart-contract

enchainté

 

1.2.2

1

Buy and sell tokens by connecting a web3 wallet to interact with the annual crowdsale smart-contract

enchainté

 

1.2.3

1

Collect the e-mail addresses and wallet addresses (not checked) of the person buying or selling tokens on Viniswap

enchainté

 

 

Redeem

When a token holder wishes to exchange tokens for bottles, we present redemption form to indicate the address where the wine bottles should be shipped, display the shipping and handling fee, and charge the appropriate shipping and handling expenses. 

 

Req 
ID

P

Definition

Owner

Notes

1.3.1

1

Present a form for the token holder to indicate how many bottles to redeem in exchange for tokens. Token holders must exchange whole integers for redemption.

enchainté

 

1.3.2

1

Request the shipping address:

Name (Free Text)

Street(Free Text)

Number, apartment (Free Text)

City (Text)

Country (drop-down, limited listing)

Province (drop-down, country specific ?)

Zip code (Free text)

email

Telegram ID 

Include a button for a link where the token holder can get more information about fulfilment, i.e. if their country is not on the list, or if their price is too expensive.

enchainté

unisocks.exchange:

1.3.3

1

After the user indicates the shipping address, allow the token holder to select the number of tokens to redeem for bottles and wine, and show the corresponding shipping and handling expense, similar to how the purchase/sale price changes in the buy/sell menus.

Calculate the shipping and handling expense (in USD and ETH) to present to the user for confirmation.

The cost of shipping and handling is managed in a table in the back-end (in USD) with the valuation in ETH calculated on-the-fly.

Shipping and handling expenses are determined by the back-office and are static based on three factors:

Country

Province

Bottle amount (i.e. more expensive for single bottles than 6-bottle packages)

On the same form, present the estimated shipping times. 

enchainté

missing screen example.

1.3.4

1

Confirm the order data, and sign.

enchainté

 

1.3.4

1

Finalize the purchase (redemption) of the wine bottles with a confirmation of the order, thank you, and tracking link.

enchainté

 

1.3.5

1

Record the information collected for the order (token redemption).

Not quite sure what to do after this point.

 

 

 

Exchange Info

Access information about token historical pricing.

 

Req 
ID

P

Definition

Owner

Notes

1.3.1

1

Alongside "Buy" and "Sell" on the Viniswap token screens, add a third button "Farm"

enchainté

We combine access to a new panel which provides token information and liquidity "farming".

1.3.2

1

Open a screen based on uniswap.info, presenting Volume, Liquidity, and Price graphs.

It is not necessary to provide the other information on Uniswap.info, as this information is already available on Viniswap or redundant. 

enchainté

https://v1.uniswap.info/token/0x1bcfd19f541eb62c8cfebe53fe72bf2afc35a255

 

 

Liquidity

Enable users to add or remove liquidity from MTB* token liquidity pools

 

Req 
ID

P

Definition

Owner

Notes

1.4.1

1

Define manual instructions for interacting with the Uniswap v1 smartcontract to create a new liquidity pool, add liquidity, and remove liquidity.

enchainté

 

1.4.2

2

On the same screen as described in 1.3.2, provide a Farm! button and a data display:

Farm! button (allow users to add/remove liquidity)

My Liquidity (report how much liquidity this wallet holder has for the following for ANY MTB* tokens.

enchainté

 

1.4.3

2

Upon selecting Farm!, the user should be able to provided with a two panel button that allows them to select MTB* tokens they wish to Seed (add to the liquidity pool), or Harvest (remove from the liquidity pool).

This is similar to the uniswap.exchange "Add Liquidity" and "Remove Liquidity" menus, but with these simplifications:

Users are not enabled to create new liquidity pools, so we don't need a Create Pool button.

We are ONLY balancing ETH and the tokens available on Viniswap (MTB*). Since they have already selected the token from the main menu, we don't need to provide a button to "Select a token" for the inputs. 

We do, however need to provide the user with the option to select the amount of tokens they wish to Seed or Harvest (or MAX), and insure that they have sufficient ETH to match.