thaler
thaler copied to clipboard
Problem: no UTXO set commitments
currently, the utxo set is maintained in the full node's internal state as this tx_meta column of bitvectors.
it'll be good to have commitments to UTXO set in the application state / app hash:
- light client could check/verify if their utxos are a part of the latest utxo set
- may be useful for full node data bootstrapping -- node will just need to verify the validator set, compute the "diff" between its last stored UTXO set and the latest one, and fetch the needed (i.e. part of the latest UTXO set that are not in the last stored one) transactions from the remote node.
could potentially use something like https://dci.mit.edu/utreexo
Simply store utxo in a merkle trie as (TxId, TxoSize) -> Option<()>?
UTxO merkle trie and staking merkle trie can share the same underlying key-value storage with different columns.
ref: https://github.com/devashishdxt/utreexo https://github.com/stellar/slingshot/blob/c0d0cdc927fa0f3a5a9b175a844a6f87bf3a1609/zkvm/docs/utreexo.md#utreexo-root https://github.com/stellar/slingshot/blob/c0d0cdc927fa0f3a5a9b175a844a6f87bf3a1609/zkvm/docs/zkvm-blockchain.md#block-header