Coder Social home page Coder Social logo

rollkit / cosmos-sdk-old Goto Github PK

View Code? Open in Web Editor NEW

This project forked from celestiaorg/cosmos-sdk

4.0 4.0 14.0 256.09 MB

Rollkit-enabled fork of cosmos-sdk.

Home Page: https://cosmos.network/

License: Apache License 2.0

Shell 0.21% Python 0.05% C 7.14% Java 0.32% Go 90.94% Assembly 0.30% Makefile 0.30% M4 0.28% Dockerfile 0.06% Sage 0.32% Gherkin 0.07%

cosmos-sdk-old's Introduction

Rollkit

Rollkit is the first soveriegn rollup framework. For more in-depth information about Rollkit, please visit our website.

build-and-test golangci-lint Go Report Card codecov GoDoc

Using Rollkit

Rollkit CLI

The easiest way to use rollkit is via the rollkit CLI.

Requires Go version >= 1.22.

A cli tool that allows you to run different kinds of nodes for a rollkit network while also helping you generate the required configuration files

Install

To install rollkit, simply run the following command at the root of the rollkit repo

make install

The latest Rollkit is now installed. You can verify the installation by running:

rollkit version

Quick Start

You can spin up a local rollkit network with the following command:

rollkit start

Explore the CLI documentation here

Building with Rollkit

Rollkit is the first sovereign rollup framework that allows you to launch a sovereign, customizable blockchain as easily as a smart contract.

Check out our tutorials on our website.

Contributing

We welcome your contributions! Everyone is welcome to contribute, whether it's in the form of code, documentation, bug reports, feature requests, or anything else.

If you're looking for issues to work on, try looking at the good first issue list. Issues with this tag are suitable for a new external contributor and is a great way to find something you can help with!

See the contributing guide for more details.

Please join our Community Discord to ask questions, discuss your ideas, and connect with other contributors.

Helpful commands

# Run unit tests
make test

# Generate protobuf files (requires Docker)
make proto-gen

# Run linters (requires golangci-lint, markdownlint, hadolint, and yamllint)
make lint

# Lint protobuf files (requires Docker and buf)
make proto-lint

Tools

  1. Install golangci-lint
  2. Install markdownlint
  3. Install hadolint
  4. Install yamllint

Dependency graph

To see our progress and a possible future of Rollkit visit our Dependency Graph.

Audits

Date Auditor Version Report
2024/01/12 Informal Systems eccdd...bcb9d informal-systems.pdf
2024/01/10 Binary Builders eccdd...bcb9d binary-builders.pdf

cosmos-sdk-old's People

Stargazers

 avatar  avatar  avatar  avatar

cosmos-sdk-old's Issues

Move tracing to IAVL tree substore for Fraud Proof implementation

We'd like to modify the witness data in the FraudProof struct to use witness data generated by the IAVL tree substore in rollkit/iavl#19

This enables us to use the IAVL tree substore entirely for tracing and during verification of fraud proofs, we can load this witness data into a Deep Subtree so that it performs the same underlying tree operations for a fraudulent transaction.

Relevant changes to accommodate this design change should be made in ABCI methods GenerateFraudProof and VerifyFraudProof (and methods used by them).

We should also delete any new tracing related things we added to tracekv and rootmulti store on the cosmos-sdk level since all the tracing happens in the underlying IAVL tree substore now.

Changes needed for Fraud Proof Demo

For an end to end Fraud Proof Demo with a fraudulent cosmos-sdk app on a live network, the following changes are needed:

  • Clearing interblock cache when reverting app to previous state
  • Resetting deliverState to nil
  • Setting AnteHandler to nil to skip checks preventing replay attacks since we need to replay the transaction in this case
  • Adding beginBlocker, endBlocker of underlying app to new baseapp setup in VerifyFraudProof
  • Write changes written to cache during the beginBlocker in BeginBlock back to the underlying store
  • Accommodate non-IAVL stores by setting tracing enabled and extracting witnesses only for IAVL stores.
  • Remove GetVersionedWithProof based on rollkit/iavl#25

Add more unit and integration tests for State Fraud Proofs

Some suggestions for tests to add to baseapp_test.go in cosmos-sdk-rollmint:

  1. Block with bad txs: Txs that exceed gas limits, validateBasic fails, unregistered messages (see TestRunInvalidTransaction)
  2. Block with invalid appHash at the end
  3. Corrupted Fraud Proof: bad underlying store format, insufficient key-value pairs inside the underlying store
    needed to verify fraud
  4. Bad block, fraud proof needed, fraud proof works, chain halts (happy case)

Add expected valid app hash to Fraud Proof

We'd like to add the expected valid app hash in Fraud Proof struct so that during verification, a light client knows what is the valid app hash that it should expect.

Fraud Proof generation and partial verification using IAVL store

Cover Fraud Proof Generation and the first two levels of verification.

Possibly consolidate code across PRs from celestiaorg#245 while replacing the usage of the SMT store with the IAVL store.

The third level of verification needs the functionality to set up a BaseApp from a Fraud Proof. This requires the ability to create IAVL Deep Subtree. We can add placeholders for these IAVL Deep Subtrees which can be added once rollkit/iavl#1 is wrapped up.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.