|
1 | 1 |
|
2 | | -# BCA Service Token |
| 2 | +# BCA Market for Tokenized Services |
3 | 3 |
|
4 | | -### Version: 2024-10-02 |
5 | | -### Copyright: 2024 Alexander Diemand |
6 | | -### [License](./LICENSE): GPLv3 - GNU GENERAL PUBLIC LICENSE Version 3 |
| 4 | +#### Version: 2024-11-23 |
| 5 | +#### Copyright: 2024 Alexander Diemand |
| 6 | +#### [License](./LICENSE): GPLv3 - GNU GENERAL PUBLIC LICENSE Version 3 |
7 | 7 |
|
8 | 8 | ## Documentation |
9 | 9 |
|
10 | 10 | [see documentation](./doc/README.md) |
11 | 11 |
|
12 | | - |
13 | 12 | ## Overview |
14 | 13 |
|
15 | | -This project is an evaluation of how to use ERC20 tokens on a blockchain to charge users for their usage of our services in micro-payments without incurring massive transaction fees. |
16 | | -Such a setup shows large flexibility in creating new services and shows great potential for revenue streams from micro-payments. |
17 | | -Users benefit from keeping control over their budget of service usage costs and only expose a minimal stake at any time. |
18 | | -Charging for services is done transparently on-chain. |
19 | | -The user with a positive token balance has access to an agent that helps funding service usage: by time, using fixed budget, ... |
| 14 | +We are developing the tokenization of services and have them managed on a blockchain with smart contracts. |
| 15 | + |
| 16 | +The contracts' behaviour is defined by a fixed set of parameters. |
20 | 17 |
|
21 | | -### Why call the internal token GEEZ? |
22 | | -Our services can be compared to mice which need some cheese from time to time to make them happy. |
23 | | -We might call that GEEZ (GEZ), similar to Ethereum's GAS. |
| 18 | +Our product creates a market for tokenized services and brings users and service providers together. |
24 | 19 |
|
| 20 | + |
25 | 21 |
|
26 | 22 | ## Principles & Ideas |
27 | 23 |
|
28 | | -- there is an on-chain service token (probably named "BCA") and an internal token (named "GEEZ") for micropayments |
29 | | -- users aquire the service token using a fiat on-ramp service |
30 | | -- we mint new tokens to the user on payment in fiat. Later: they might also pay in crypto to some smart contract |
31 | | -- users own the service tokens and can see them in their wallets |
32 | | -- before using a service, users transfer a small amount of service tokens to the service's address |
33 | | -- A GEEZ record of the user's tokens is kept in our database linked to the sender. Proof is the on-chain transaction |
34 | | -- service usage by the user will be deducte from the user's GEEZ account |
35 | | - - (this part could be solved in our own L2 network, one day) |
36 | | -- users can see their GEEZ balance and transactions in a dashboard |
37 | | -- users can optionally add monitoring to their GEEZ budget: as soon as it drops below a certain level, then an email is sent to them asking for refunding |
| 24 | +- micropayments in a stable-coin (EUR, USD) |
| 25 | +- alternative: ERC20 token pegged to a currency, on/off-ramp from/to fiat |
| 26 | +- users keep their funds in their wallets, and only commit a small amount in deposits to the service contract |
| 27 | +- optionally, users can subscribe to a bot that deposits every 24 hours the required funds to keep services running |
| 28 | +- at any time either the user or the provider can call stop() and the contract halts |
| 29 | +- at any time both the user and the provider can withdraw funds from the service contract: up to the calculated balance at the current block time |
| 30 | +- the contracts store the necessary information and thus no party relies on a centralized backend for operations |
| 31 | + |
| 32 | +## Micropayments and balance calculation |
| 33 | + |
| 34 | +The service contract is created with a set of parameters which are fixed for the lifetime of the contract. |
| 35 | + |
| 36 | +The calculation of the user's and provider's balances depend on the contracts start time and the current time, taken from the latest block. |
| 37 | + |
| 38 | +Once the user makes her first deposit, the contract starts. Multiple deposits can be made by the user. And, both parties can withdraw up to their calculated balance. |
38 | 39 |
|
| 40 | + |
39 | 41 |
|
40 | | -## Solidity contract and testing |
| 42 | +## Solidity contracts and testing |
41 | 43 |
|
42 | 44 | see [README](./bca-token-solidity/README.md) in directory [./bca-token-solidity](./bca-token-solidity/) |
43 | 45 |
|
| 46 | +## Frontend to interact with service contracts |
| 47 | + |
| 48 | +Both users and providers connect to this user interface to interact with the service contracts. |
| 49 | + |
| 50 | +see [README](./bca-token-market/README.md) in directory [./bca-token-market](./bca-token-market/) |
| 51 | + |
44 | 52 |
|
45 | 53 | ## Frontend for minting/burning of tokens |
46 | 54 |
|
47 | | -see [README](./bca-token-app/README.md) in directory [./bca-token-app](./bca-token-app/) |
| 55 | +Developping and testing is done using our own ERC20 token that mimics a stable-coin. |
48 | 56 |
|
| 57 | +see [README](./bca-token-app/README.md) in directory [./bca-token-app](./bca-token-app/) |
0 commit comments