Skip to content

Commit 2f45a67

Browse files
committed
update documentation
Signed-off-by: Alexander Diemand <[email protected]>
1 parent 659b188 commit 2f45a67

File tree

4 files changed

+35
-26
lines changed

4 files changed

+35
-26
lines changed

README.md

Lines changed: 34 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -1,48 +1,57 @@
11

2-
# BCA Service Token
2+
# BCA Market for Tokenized Services
33

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
77

88
## Documentation
99

1010
[see documentation](./doc/README.md)
1111

12-
1312
## Overview
1413

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.
2017

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.
2419

20+
![Overview](./doc/img/service_contract.png)
2521

2622
## Principles & Ideas
2723

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.
3839

40+
![User and provider balance in the contract](./doc/img/service_micropayment.png)
3941

40-
## Solidity contract and testing
42+
## Solidity contracts and testing
4143

4244
see [README](./bca-token-solidity/README.md) in directory [./bca-token-solidity](./bca-token-solidity/)
4345

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+
4452

4553
## Frontend for minting/burning of tokens
4654

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.
4856

57+
see [README](./bca-token-app/README.md) in directory [./bca-token-app](./bca-token-app/)

bca-token-solidity/README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ in one terminal start a node:
2020
```sh
2121
npx hardhat node
2222
```
23-
in the other deploy the contract
23+
in the other deploy the contracts
2424
```sh
2525
npx hardhat ignition deploy ignition/modules/BCA_Token.ts --network localhost
2626
npx hardhat ignition deploy ignition/modules/BCA_ServiceManager.ts --network localhost

doc/img/service_contract.png

22.7 KB
Loading

doc/img/service_micropayment.png

15.7 KB
Loading

0 commit comments

Comments
 (0)