Refactor `MockChainNote` to always hold the full note details
- 主要言語
- Rust
- スター
- 132
- フォーク
- 167
- 平均マージ
- 1日 23時間
- マージ済み PR(30日)
- 110
説明
In tests, when we want to add a `Private` note at genesis, we do:
```rust
let input_note = builder.add_p2id_note(
account.id(),
account.id(),
&[FungibleAsset::mock(0)],
NoteType::Private,
)?;
```
and then inside of `add_p2id_note`, we add the note as [`self.add_output_note(OutputNote::Full(note.clone()));`](https://github.com/0xMiden/miden-base/blob/eb0c396d48506c30c3fdc859ddaabbb8bfaf6b00/crates/miden-testing/src/mock_chain/chain_builder.rs#L559) to the `MockChainBuilder`.
This is fine, but it causes [`MockChain::apply_block`](https://github.com/0xMiden/miden-base/blob/eb0c396d48506c30c3fdc859ddaabbb8bfaf6b00/crates/miden-testing/src/mock_chain/chain.rs#L902-L903) to later treat these notes always as `Public`:
```rust
if let OutputNote::Full(note) = created_note {
self.committed_notes
.insert(note.id(), MockChainNote::Public(note.clone(), note_inclusion_proof));
} else {
```
---
The current implementation (and as an extension, this PR) doesn't seem to cause issues, I think because even the `MockChainNote::public` but wrapping a **private note** contains the correct underlying note details (i.e. `note.metadata().is_private() will still be correct).
But this makes me realize that maybe the `MockChainNote` struct doesn't really serve its purpose and should be refactored (e.g. to always hold the full note details).
_Originally posted by @mmagician in https://github.com/0xMiden/miden-base/pull/2205#discussion_r2672135301_
コントリビューションガイド
評価
この issue はまだ評価されていません。