Closed imeckler closed 2 years ago
@psteckler to do the gossip net part of this
Things to do:
We need to replicate some computations and some networking in the browser node
Have snarky-independent versions of
type gossip_message =
| New_state of Protocol_state.t * Proof.t
For fetching the current and "final" account states we need to either make syncable_ledger
work on sparse ledgers or write new separate code to fetch the minimal updates necessary. Getting the entire Merkle proof for each new block is too much wasted network traffic. With a ledger depth of 20, that's 20 curve points fetched per block, or ~2k. Twice that since we want the status in two different blocks. That or we need to implement the improved Merkle storage system. I favor option 1.
We need parameterized versions of Random_oracle
and Transaction_union_payload
, which are mentioned in Receipt.Chain_hash
.
Also Transaction_union_tag
.
We want to prioritize some of the JS client sdk, so if we could prioritize ripping out the graph reachable from these roots it would be ideal:
graph reachable from these roots
the first three items listed above I believe are included in that graph:
- Public_key.t and signing
- Transaction.t
- Account.t
and so far, I've been working on items related to those.
@bkase : Nathan suggests using dune virtual libraries instead of functors. I'm trying that now, and if it works, no code changes will be needed (and we can undo the bits I've done so far).
oh wow that's nice!
New plan: use conditional compilation to open Snark_params
or some stripped-down module for nonconsensus nodes. Also use conditional compilation to include snarky-dependent code or not. Use consensus_mechanism
parameter, which already exists, for that purpose.
Virtual libraries would be nice, but they require writing out interfaces, which we don't have for Snark_params
(and other points of snarky contact).
Stale.
@deepthiskumar to make a list of the separate pieces that need to be implemented, then we will piece it out.