Giter Club home page Giter Club logo

foundry's Introduction

Foundry Build Status chat License: GPL v3

CodeChain Foundry is a blockchain engine based on a composable module system, called Mold. Users can write their own modules and additionally bring those written by others in to construct an arbitrary blockchain application. The reason why we provide such a composable and user-configurable module system is because we want to make as much of an application configurable as possible and foster an ecosystem of reusable modules, while reusing the underlying consensus engine across all the different kinds of applications.

On an execution of a transaction, that is essentially a state transition, the coordinator will be told to do so from the underlying consensus engine. Then the coordinator literally coordinates multiple modules constituting an application by invoking services exported by the modules to the coordinator in an appropriate order passing appropriate arguments. Transactions will be delivered to the responsible modules, and that the modules will handle the executions of the transactions, which might also involve communications with other modules.

Build

Download Foundry code

git clone [email protected]:CodeChain-io/foundry.git
cd foundry

Build in release mode

cargo build --release

This will produce an executable in the ./target/release directory.

Building From Source

Build Dependencies

Foundry requires Rust version 1.45.2 to build. Using rustup is recommended.

  • For Linux Systems:

    • Ubuntu

      gcc, g++ and make are required for installing packages.

      $ curl https://sh.rustup.rs -sSf | sh
  • For Mac Systems:

    • MacOS 10.13.2 (17C88) tested

      clang is required for installing packages.

      $ curl https://sh.rustup.rs -sSf | sh
  • For Windows Systems:

    • Currently not supported for Windows. If on a Windows system, please install WSL to continue as Ubuntu.

Please make sure that all of the binaries above are included in your PATH. These conditions must be fulfilled before building Foundry from source.

Download Foundry's source code and go into its directory.

git clone [email protected]:CodeChain-io/foundry.git
cd foundry

Build as Release Version

cargo build --release

This will produce an executable in the ./target/release directory.

Run

To run Foundry, just run

./target/release/foundry -c solo

You can create a block by sending a transaction through JSON-RPC or JavaScript SDK.

Formatting

Make sure you run rustfmt before creating a PR to the repo. You need to install the nightly-2020-07-27 version of rustfmt.

rustup toolchain install nightly-2020-07-27
rustup component add rustfmt --toolchain nightly-2020-07-27

To run rustfmt,

cargo +nightly-2020-07-27 fmt

Linting

You should run clippy also. This is a lint tool for rust. It suggests more efficient/readable code. You can see the clippy document for more information. You need to install the nightly-2020-07-27 version of clippy.

Install

rustup toolchain install nightly-2020-07-27
rustup component add clippy --toolchain nightly-2020-07-27

Run

cargo +nightly-2020-07-27 clippy --all --all-targets

Testing

Developers are strongly encouraged to write unit tests for new code, and to submit new unit tests for old code. Unit tests can be compiled and run with: cargo test --all. For more details, please reference Unit Tests.

License

CodeChain is licensed under the GPL License - see the LICENSE file for details

foundry's People

Contributors

joojis avatar kseo avatar majecty avatar foriequal0 avatar hoongee avatar remagpie avatar msntcs avatar sgkim126 avatar kakao-jun-e avatar junha1 avatar misilvia avatar scarletblue avatar baumstern avatar byeongjee avatar conr2d avatar junbeomlee avatar dynaxis avatar dependabot[bot] avatar qria avatar leekt avatar hyunsikjeong avatar junhojam avatar haarpuia avatar cubismic avatar longfin avatar

Watchers

James Cloos avatar

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.