|
1 |
| -# Fond |
2 |
| -A platform where users can invest in an asset proposed by the company. Once the users invest they get an NFT representing their share of the item. When the investment goal for an asset is reached, the platform buys the item. It can later sell a previously bought item and distributes the funds to their owners accordingly. |
| 1 | +# Fraction |
3 | 2 |
|
4 |
| -## Initialisation: |
5 |
| -Smart contract initiates the company. |
6 |
| -- This creates an Admin Badge for the account initialising the smart contract. |
7 |
| -- Creates a vault for the currently listed items (items that haven't reached their investment goal yet) |
8 |
| -- Creates a vault for the company's inventory (items that have been bought already) |
9 |
| -- Creates a structure to keep track of the funds that have been put into an item (e.g.: a HashMap<NonFungibleId, Vault>, where NonFungibleId is the ID of the listed asset and the Vault is where the funds are stored.) |
| 3 | +Fraction is a platform where users can invest in assets, with the help of fractional NFTs. We set the entry barrier for high value items very low and therefore allow a brought investor base to invest in an asset class, that wasn’t accessible for them beforehand. |
10 | 4 |
|
11 |
| -## User roles: |
| 5 | + We research items with a high growth value and propose them on our website. Users can connect with their Radix wallet and buy fractions of the asset. One asset is represented by one NFT, which in turn is composed of multiple other NFTs. Those NFTs will verify the ownership of investors. Once a funding goal is reached, investors receive an NFT, representing their share and we will buy and store the item. When the asset increases in value according to our goals, we sell it and all holders share the profit. There is no risk if the funding goal is not reached, as users will get their money back immediately. |
12 | 6 |
|
13 |
| -### Admin Badge holder |
14 |
| -⬇️ 1. add admins |
15 |
| - - creates a badge to give to that account |
| 7 | +![alt text] "https://github.com/J-Son89/scrypto-challenges/6-nfts-for-financial-applications/fond/app/images/landingPage.png" |
16 | 8 |
|
17 |
| -⚠️ 2. create a campaign to invest in a new item. |
18 |
| -- INITIALLY: accept RDX only |
19 |
| -- LATER: specify an accepted token per item |
20 | 9 |
|
21 |
| -⚠️ 3. buy an item |
22 |
| -- INITIALLY: keep it simple, mint an NFT object and burn the funds |
23 |
| -- add to company inventory vault |
24 |
| -- LATER: consider oracles for external data exchange |
| 10 | +## Frontend |
| 11 | +The frontend of this application is a basic React App. |
25 | 12 |
|
26 |
| -⚠️4. sell items owned by the company |
27 |
| - - this releases the item from the company inventory at a price (retrieved from external source - mocked in our case) |
28 |
| -- INITIALLY: we just fix a price (let's say for example it always sells for 10% more of the original price), and simulate selling it to an external source, i.e., we burn the asset and split the acquired funds with the investors of the campaign at amounts relative to their contribution |
29 |
| -- LATER: Oracles for external data sources and company taking a cut of the funds |
| 13 | +Initially install the dependencies with `npm i` and then run `npm start` to run the application. |
30 | 14 |
|
31 |
| -⬇️ 5. move funds from the company vaults to admin accounts |
32 |
| -6. can see available campaigns |
33 |
| -7. can see inventory of company |
34 |
| -can't really make my mind up on the last two |
35 |
| -### User |
36 |
| -⚠️ 1. can see available campaigns to invest in (get_campaigns) |
37 |
| -⚠️ 2. can invest in available campaigns (invest_in_campaign) |
38 |
| -⬇️ 3. can see inventory of company |
39 |
| -⬇️ 4. can go back on their decision and sell their ownership NFT (assuming the item is still listed), for the initial amount they invested |
40 |
| - |
41 |
| -## current script |
42 |
| - |
43 |
| -(First time) |
44 |
| -resim reset |
45 |
| -resim new-account |
46 |
| -export acc1=<account-address> |
47 |
| - |
48 |
| -(cd to /fond) |
49 |
| -resim publish . |
50 |
| -export pkg=<package-address> |
51 |
| - |
52 |
| -resim call-function $pkg Fond instantiate_fond |
53 |
| -export comp=<component-address> |
54 |
| -resim call-method $comp create_campaign "wine" "red" 6.0 |
0 commit comments