Define the blockchain
This commit is contained in:
51
docs/protocol.md
Normal file
51
docs/protocol.md
Normal file
@@ -0,0 +1,51 @@
|
|||||||
|
# Protocol of the carrotcoin cryptocurrency
|
||||||
|
|
||||||
|
The carrotcoin cryptocurrency is a bitcoin-like currency with proof-of-work, created just for learning purposes.
|
||||||
|
|
||||||
|
# Blockchain
|
||||||
|
|
||||||
|
The network should stabilize at around 1 block every 5 minutes.
|
||||||
|
|
||||||
|
Blocks are hashed with SHA256 and need to start with a certain number of zeros (or, more precise, be below a given value depending on the difficulty)
|
||||||
|
|
||||||
|
ed25519 keys are used to validate transactions.
|
||||||
|
|
||||||
|
|
||||||
|
## block datastructure
|
||||||
|
|
||||||
|
| content | size (bytes) |
|
||||||
|
|---|---|
|
||||||
|
| previous hash | 32 |
|
||||||
|
| message (arbitrary) | 32 |
|
||||||
|
| nonce | 8 |
|
||||||
|
| timestamp (unix time in seconds, BE) | 8 |
|
||||||
|
| block id (BE) | 4 |
|
||||||
|
| miner pubkey | 32 |
|
||||||
|
| transaction (optional) | 148 |
|
||||||
|
|
||||||
|
If no transaction is included, its 148 bytes are all null.
|
||||||
|
|
||||||
|
The first block has block id 0 and a "previous hash" value of 32 null bytes.
|
||||||
|
|
||||||
|
## transaction datastructure
|
||||||
|
|
||||||
|
1 carrotcoin (cc) consists of 100 cents
|
||||||
|
|
||||||
|
| content | size (bytes) |
|
||||||
|
|---|---|
|
||||||
|
| id (arbitrary) | 4 |
|
||||||
|
| sender (pubkey) | 32 |
|
||||||
|
| receiver (pubkey) | 32 |
|
||||||
|
| amount (BE, in cents) | 8 |
|
||||||
|
| transaction fee (BE, in cents, can be zero) | 8 |
|
||||||
|
| signature (signed by sender, over transaction fields before signature) | 64 |
|
||||||
|
|
||||||
|
## transactions
|
||||||
|
|
||||||
|
For every block, the miner gets a reward of 1,00 cc. (100 cents)
|
||||||
|
|
||||||
|
If a transaction is included, the following happens additionally:
|
||||||
|
|
||||||
|
- The sender needs to pay "amount" + "transaction fee"
|
||||||
|
- The receiver gets "amount"
|
||||||
|
- The miner gets "transaction fee" on top of the reward.
|
||||||
Reference in New Issue
Block a user