npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

@proto-kit/protocol

v0.1.1-develop.651

Published

Protocol contains to all circuit-aware data types and provers

Downloads

358

Readme

YAB: Protocol

Protocol contains to all circuit-aware data types and provers

StateTransitionProver

The StateTransitionProver takes a list of StateTransitions, checks and proves their precondition and update to the respective merkletree represented by the state root public input.

In the public input, the prover transitions from two fields:

  • state root
  • transitions hash

The transitions hash is the commitment to a hash list where every state transition gets appended one-by-one.

The StateTransitionsProver batches the application of multiple state transitions together. If the amount of state transitions if greater than the batch size, the seperate proofs can be merged together.

In the end, the publicInput of the StateTransitionProof should contain the following content:

  • fromTransitionsHash: 0 To prove that all STs have been applied, the transitionsHash must start at zero (i.e. a empty hash list)
  • toTransitionsHash This value must be the same as the transitionsHash in the AppChainProof to guarantee that all (and same) statetransitions that have been outputted by the AppChain have been applied
  • from- and toStateRoot These values represent the root of the state tree and will later be stitched together to arrive at the final stateroot for a bundle

BlockProver

The BlockProver's responsibility is to verify and put together the AppChainProof and StateTransitionProof. It verifies that the transitionsHash is the same across both proofs and then takes the new state root proved by the STProof.

In the end, the BlockProof proofs that:

  • the AppChain has been executed correctly
  • the resulting state changes have been applied correctly and fully to the state root

Multiple BlockProofs will then be merged together, signed by the sequencer and published to the base layer.

RollupMerkleTree

The RollupMerkleTree is a custom merkle tree implementation that supports the injection of a storage adapter. The interface for that adapter can be found as the interface MerkleTreeStorage.

Adapters can implement any storage backend, like In-Memory and Database, and supports a process called "virtualization". Virtualization is the process of layering different Adapters on top of each other. For example if I want to simulate some transactions to a merkle tree, I can virtualize a database adapter into a MemoryAdapter. If I am happy with the result, I can merge the results into the database or, if not, discard them without writing the changes to the database.