I believe the compression part of your proposal is same thing that’s been proposed in Plasma Cash with Sparse Merkle Trees, Bloom filters, and Probabilistic Transfers.
We’ve had this implemented for a while in multiple languages:
- https://github.com/loomnetwork/plasma-cash/blob/master/server/contracts/Core/SparseMerkleTree.sol (credits to the Wolk team for this initial impl)
- https://github.com/loomnetwork/plasma-cash/blob/master/server/test/SparseMerkleTree.js
- https://github.com/loomnetwork/mamamerkle/blob/master/sparse_merkle_tree.go
- https://github.com/loomnetwork/plasma-cash/blob/b10cc02c9316506d66329b05a1c2e3112a32e3fb/plasma_cash/utils/merkle/sparse_merkle_tree.py
Does the further design you describe require changing the on-chain verifier?