Clarify edge case
This commit is contained in:
parent
b742657e45
commit
f338048012
|
|
@ -663,13 +663,13 @@ check that `block`'s parent hash is `null` (all zeroes) and its height is `0`.
|
||||||
- `(height, hash)` into `hash_by_height`;
|
- `(height, hash)` into `hash_by_height`;
|
||||||
- `(height, block)` into `block_by_height`.
|
- `(height, block)` into `block_by_height`.
|
||||||
|
|
||||||
3. Update the `sprout_anchors` and `sapling_anchors` trees with the Sprout and
|
3. If the block is a genesis block, skip any transaction updates.
|
||||||
Sapling anchors.
|
|
||||||
|
|
||||||
4. If the block is a genesis block, skip any transaction updates.
|
|
||||||
|
|
||||||
(Due to a [bug in zcashd](https://github.com/ZcashFoundation/zebra/issues/559),
|
(Due to a [bug in zcashd](https://github.com/ZcashFoundation/zebra/issues/559),
|
||||||
genesis block transactions are ignored during validation.)
|
genesis block anchors and transactions are ignored during validation.)
|
||||||
|
|
||||||
|
4. Update the `sprout_anchors` and `sapling_anchors` trees with the Sprout and
|
||||||
|
Sapling anchors.
|
||||||
|
|
||||||
5. Iterate over the enumerated transactions in the block. For each transaction:
|
5. Iterate over the enumerated transactions in the block. For each transaction:
|
||||||
|
|
||||||
|
|
@ -698,7 +698,11 @@ fields in the `Commit*Block` requests.
|
||||||
|
|
||||||
Due to the coinbase maturity rules, the Sprout root is the empty root
|
Due to the coinbase maturity rules, the Sprout root is the empty root
|
||||||
for the first 100 blocks. (These rules are already implemented in contextual
|
for the first 100 blocks. (These rules are already implemented in contextual
|
||||||
validation and the anchor calculations.)
|
validation and the anchor calculations.) Therefore, `zcashd`'s genesis bug is
|
||||||
|
irrelevant for the mainnet and testnet chains.
|
||||||
|
|
||||||
|
Hypothetically, if Sapling were activated from genesis, the specification requires
|
||||||
|
a Sapling anchor, but `zcashd` would ignore that anchor.
|
||||||
|
|
||||||
[`JoinSplit`]: https://doc.zebra.zfnd.org/zebra_chain/transaction/struct.JoinSplit.html
|
[`JoinSplit`]: https://doc.zebra.zfnd.org/zebra_chain/transaction/struct.JoinSplit.html
|
||||||
[`Spend`]: https://doc.zebra.zfnd.org/zebra_chain/transaction/struct.Spend.html
|
[`Spend`]: https://doc.zebra.zfnd.org/zebra_chain/transaction/struct.Spend.html
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue