Sign inSign up

yeeco/yeeroot

By yeeco

•Updated almost 6 years ago

Prebuilt docker images for https://github.com/yeeco/yeeroot

Image
0

1.8K

yeeco/yeeroot repository overview

⁠yeeroot

standard-readme compliant

Official implementation of the YeeCo Root Chain (Layer 1)

YeeCo is a permissionless, secure, high performance and scalable public blockchain platform powered by full sharding technology on PoW consensus.

📣 YeeCo Mainnet launched! (2020-08-10)

⁠Latest release

  • v1.3.0⁠ ⚠️ mandatory release (2020-11-04)
  • v1.2.0⁠ ⚠️ mandatory release (2020-10-23)
  • v1.1.1⁠ ⚠️ Hard fork release (2020-10-01)

⁠Table of Contents

⁠Description

Yeeco takes advantage of the 4 key mechanisms as follows:

  1. PoW (permissionless and secure)
  2. Full sharding (high performance and scalable)
  3. Multi-mining (resist 1% attack)
  4. CRFG (conditional reward finality gadget, introduce absolute finality on PoW to support lock-free cross shard transactions)

⁠Install

⁠Requirements
  1. Rust
    curl https://sh.rustup.rs -sSf | sh
    
  2. Openssl
  3. Rust nightly
    rustup toolchain add nightly
    
  4. rust nightly wasm
    rustup target add wasm32-unknown-unknown
    rustup target add wasm32-unknown-unknown --toolchain nightly
    
  5. wasm-gc
    cargo install wasm-gc
    
  6. Rust components: clippy rls docs src rustfmt
    rustup component list # list all the components installed
    rustup component add <name> # install component
    
⁠Building
$ cd <project_base_dir>/runtime/wasm
$ sh build.sh
$ cd <project_base_dir>
$ cargo build

⁠Usage

⁠Start
  1. Start bootnodes router.

    $ ./yee bootnodes-router --dev-params
    

    Bootnodes router provides the bootnodes for each shard.

    You can try getting the bootnodes by the following RPC:

    $ curl -X POST --data '{"jsonrpc":"2.0","method":"bootnodes","params":[],"id":1}' localhost:50001 -H 'Content-Type: application/json'
    
  2. Start the nodes of the 4 shards

    $ ./yee --dev --dev-params --shard-num=0 --base-path=/tmp/yee/shard_0
    $ ./yee --dev --dev-params --shard-num=1 --base-path=/tmp/yee/shard_1
    $ ./yee --dev --dev-params --shard-num=2 --base-path=/tmp/yee/shard_2
    $ ./yee --dev --dev-params --shard-num=3 --base-path=/tmp/yee/shard_3
    

    Since we start the node without --mine, it will not mine new blocks.

  3. Start switch

    $ ./yee switch --dev-params --mine
    

    Switch provides proxy rpc of all the 4 shards. You can get the balance of a certain address of any shard by the following RPC:

    $ curl -X POST --data '{"jsonrpc":"2.0","method":"state_getBalance","params":["tyee15c2cc2uj34w5jkfzxe4dndpnngprxe4nytaj9axmzf63ur4f8awq806lv6"],"id":1}' localhost:10033 -H 'Content-Type: application/json'
    

    Switch can also work as a multi-miner. Since we start the switch with --mine, it will mine on the 4 shards.

⁠Accounts

Test accounts:

Address                                                            Shard num    Private key
tyee1jfakj2rvqym79lmxcmjkraep6tn296deyspd9mkh467u4xgqt3cqkv6lyl    0            0xa8666e483fd6c26dbb6deeec5afae765561ecc94df432f02920fc5d9cd4ae206ead577e5bc11215d4735cee89218e22f2d950a2a4667745ea1b5ea8b26bba5d6
tyee15zphhp8wmtupkf3j8uz5y6eeamkmknfgs6rj0hsyt6m8ntpvndvsmz3h3w    1            0x40e17c894e03256ea7cb671d79bcc88276c3fd6e6a05e9c0a9546c228d1f4955d8f18e85255020c97764251977b77f3b9e18f4d6de7b62522ab29a49cede669f
tyee14t6jxhs885azsd9v4t75cre9t4crv6a89q2vg8472u3tvwm3f94qgr9w77    2            0x708084bc9da56d9d1b201f50830269887ff2ef74e619c6af6ba7cf506068326f7cc9c4d646c531e83507928114ff9ef66350c62dfda3a7c5d2f0d9e0c37e7750
tyee12n2pjuwa5hukpnxjt49q5fal7m5h2ddtxxlju0yepzxty2e2fads5g57yd    3            0xa079ef650520662d08f270c4bc088f0c61abd0224f58243f6d1e6827c3ab234a7a1a0a3b89bbb02f2b10e357fd2a5ddb5050bc528c875a6990874f9dc6496772
⁠Revert

you can revert the chain to certain number by revert

$ ./yee revert --shard-num=0 --base-path=/tmp/yee/shard_0 --target="{\"0\":1024, \"1\": 1024, \"2\": 1024, \"3\": 1024}"

⁠Roadmap

  1. [Done] PoC-1: Tetris consensus demo (2019-02)

    tetris_demo⁠

  2. [Done] PoC-2: Transfer feature based on Tetris (2019-05)

    gyee⁠

  3. [Done] PoC-3: PoW consensus, static sharding (2019-07)

    Release notes⁠

  4. [Done] PoC-4: Multi-mining, cross-shard transactions (2019-09)

    Release notes⁠

  5. [Done] PoC-5: Dynamic sharding (2019-11)

    Release notes⁠

  6. [Done] PoC-6: Cross chain (interoperate with branch chain) (2019-12)

    Release notes⁠

  7. [Done] PoC-7: Smart contract (on branch chain) (2020-02-14)

    Release notes⁠

  8. [Done] Testnet (2020-03)

    Release notes⁠

  9. [Done] Mainnet (2020-Q3)

    Release notes⁠

⁠Contributing

Feel free to dive in! Open an issue⁠.

⁠Contributors

⁠License

GPL⁠

Tag summary

Content type

Image

Digest

Size

62.1 MB

Last updated

almost 6 years ago

docker pull yeeco/yeeroot:20191205