diff options
-rw-r--r-- | README.md | 24 |
1 files changed, 24 insertions, 0 deletions
@@ -13,6 +13,30 @@ $ curl --location --request POST 'localhost:8080/transaction' --header 'Content- | |||
13 | }' | 13 | }' |
14 | ``` | 14 | ``` |
15 | 15 | ||
16 | # how? | ||
17 | |||
18 | ## authentication | ||
19 | Students generate their own `keypairs` and authenticate with their METU Student IDs. | ||
20 | Authenticated students propose transactions, between them and another node (=public keys) or between the grader (=bank) and themselves. | ||
21 | |||
22 | ## transactions | ||
23 | Transactions are `signed` using the proposers private key. | ||
24 | (This whole public/private key + signing process will require some crypto dependency, **todo**) | ||
25 | |||
26 | ## blocks | ||
27 | Blocks are proposed using `N` transactions, this can be an exact number (=20) or if the last block is *some time* old then small blocks can be proposed. | ||
28 | Block proposal: `Block` + some `nonce` is hashed using a *simple* hash function, resulting hash should have some property that will require some computation time (~1 minute? 10 minutes?) to find (=guessing) Proof-of-work scheme. | ||
29 | First proposed valid block is accepted, if assertions hold. | ||
30 | (No consensus, we are the sole authority, there's no blockchain here, only a glorified database and busywork) | ||
31 | |||
32 | ## payment | ||
33 | First transaction in the block is called *Coinbase*, the block reward is paid to the *output* (Bitcoin notation, different) of this transaction. | ||
34 | If we do this then the rest of the transactions are just make believe playing. | ||
35 | So banker + block reward approach seems better. | ||
36 | |||
37 | ## then | ||
38 | After the new block, stale transactions are cleared? | ||
39 | |||
16 | # Big Thank List | 40 | # Big Thank List |
17 | - https://github.com/blurbyte/restful-rust | 41 | - https://github.com/blurbyte/restful-rust |
18 | - https://github.com/zupzup/warp-postgres-example | 42 | - https://github.com/zupzup/warp-postgres-example |