|
| 1 | +# Chrysalis RFC Call - 2020-11-09 |
| 2 | + |
| 3 | +## Participants |
| 4 | + |
| 5 | +- Wolfgang |
| 6 | +- Andrea |
| 7 | +- Luca |
| 8 | +- Gal |
| 9 | +- Thibault |
| 10 | + |
| 11 | +## Topics |
| 12 | + |
| 13 | +### RFC Status |
| 14 | + |
| 15 | +#### Merged |
| 16 | + |
| 17 | +https://iotaledger.github.io/protocol-rfcs/ |
| 18 | + |
| 19 | +- [RFC-0005](https://github.com/iotaledger/protocol-rfcs/blob/master/text/0005-white-flag/0005-white-flag.md) (White Flag): |
| 20 | + - Remove old Bundle/Tx structure: |
| 21 | + - done: https://github.com/iotaledger/protocol-rfcs/pull/30 |
| 22 | +- [RFC-0008](https://github.com/iotaledger/protocol-rfcs/blob/master/text/0008-weighted-uniform-random-tip-selection/0008-weighted-uniform-random-tip-selection.md) (Weighted URTS): |
| 23 | + - Everyone is happy with the changes to reflect the current implementation (in Hornet) |
| 24 | + - @all approve |
| 25 | +- [RFC-0012](https://github.com/iotaledger/protocol-rfcs/blob/master/text/0012-milestone-merkle-validation/0012-milestone-merkle-validation.md) (Milestone Validation): |
| 26 | + - Remove old Bundle/Tx structure: |
| 27 | + - State mutations -> UTXO mutations (circular transactions are not possible with UTXO) |
| 28 | + - Tx Hash -> Message ID |
| 29 | + - Blake2b-512 -> Blake2b-256 |
| 30 | + - @Wolfgang create PR |
| 31 | + |
| 32 | +### Open Questions |
| 33 | + |
| 34 | +#### `Network ID` field in the message |
| 35 | + |
| 36 | +- Purpose: |
| 37 | + - Distinguish between different (private) networks |
| 38 | + - Detect/handle breaking protocol changes independently of the network/peering layer |
| 39 | + - Prevent replays of the same message in different networks without PoW |
| 40 | + - Have network/version as part of the Message ID (for MSs, queries, ...) |
| 41 | + - Since the MS payload signs the Message IDs, replays of the MS payload to a different network is not possible. |
| 42 | +- Decision: |
| 43 | + - It should be included as a single message field. |
| 44 | + - It should encode the network (mainnet, testnet, private x, ...) as well as the protocol version. |
| 45 | + - It should be a `uint64`. This offers a good compromise between size and accidentally having the same value for incompatible situations. |
| 46 | + - Local snapshots (and probably peering) should use the same value. |
| 47 | + - It should not be signed to potentially allow replays of the same payload (but with different Message ID and new PoW). |
| 48 | + - Nodes should reject message with an incompatible `Network ID`. (What actually causes a protocol version bump is a case-by-case definition, but as a rule of thumb consensus changes are breaking.) |
| 49 | + - (Perma)nodes trying to sync across different protocol versions is a special case and does not need to be considered for regular nodes (same premise as when introducing white-flag). |
| 50 | + - How the `Network ID` is constructed is an implementation decision. It does not need to be part of the Message RFC, but it is still very relevant for the node implementations. Options: |
| 51 | + - Hash(`Network Name`+`Protocol Version`) (probably the most promising) |
| 52 | + - Use a couple of static bytes for the "Network" |
| 53 | + - Combination of the above |
| 54 | +- @Gal update the PR to include those changes |
| 55 | +- After that, [RFC-0025 (Local Snapshots)](https://github.com/iotaledger/protocol-rfcs/pull/25) needs to be adapted |
0 commit comments