A high performance blockchain kernel for enterprise users.

Overview

Circle CI Status

All Contributors

English | 简体中文

What is CITA

CITA is a fast and scalable blockchain kernel for enterprises. CITA supports both native contract and EVM contract, by which enterprise users can build their own blockchain applications. CITA has a unique architecture which enables enterprise users to release all their computing resources.

  • Horizontal scalability: With the microservice architecture, a logical node can be easily scaled to a cluster of servers. Node administrators can increase system capacity simply by adding more PC servers on high load. The administrator can even use dedicated servers to provide services for hot-spot accounts. Outside one node's boundary, nodes communicate with each other using P2P network; inside each node, microservices communicate with each other by messaging queue.

  • Customizable and Pluggable Components: CITA's microservices are loosely coupled and their communications are only via the message queue. Hence, it‘s flexible to improve current components with better algorithms (such as new consensus algorithms) or more appropriate technical solutions (such as new DBs or new privacy solutions). Moreover, business logic is extremely complicated in enterprise applications. With CITA, you can easily customize your blockchain with the certain feature to fit your own business requirements.

  • High Performance: In CITA, consensus and transaction execution are decoupled as separate microservices. The consensus service is only responsible for transaction ordering, which can finish independently before transaction execution, thus increase transaction processing performance. In additional, CITA also includes lots of other optimizations to fully utilize multi-cores and multi-servers' computing power. To this end, it utilizes the Rust language, a hybrid imperative/OO/functional language with an emphasis on efficiency.

  • Resiliency and Reliability: CITA provides tools to backup blockchain data by taking snapshot, which can help you to resync the blockchain data in a short time. And through Rust’s language-level memory and thread guarantees and a disciplined approach to exception-handling, we can state with a high degree of certainty that our code cannot crash, hang or bomb-out unexpectedly.

  • Compatibility: CITA supports the use of Solidity, Go, and Rust to develop smart contracts. It also supports all Ethereum development tools (Truffle, Zeppelin, Remix, etc.).

  • Chain Interoperability: We perceive that independent blockchains are constantly emerging nowadays and even more in the future. How do these chains interoperate with each other to form blockchain network? CITA Support cross-chain communication by providing a simple cross-chain protocol currently. More explorations are undertaking in CITA, aiming to amplify the value of applications running on the various chains.

  • Engineering Experience: There're many CITA networks running in banks, payment and insurance production environment, with Rivtower or CITA Integration Provider's technical support. CITA has accumulated a lot of engineering experience.

Whitepaper

For more details please check the white paper.

Document

API/SDK

CITA supports JSON-RPC and WebSocket (experimental) API/v1.

For CITA API/v1, You can use any HTTP client, or following SDKs:

Contributing

CITA is still in active development. Building a blockchain platform is a huge task, we need your help. Any contribution is welcome.

Please check CONTRIBUTING for more details.

Follow us

Weibo

License FOSSA Status

CITA is currently under Apache 2.0 license. See the LICENSE file for details.

Credits

CITA is created by Rivtower team with ❤️ .

Contact us

Email: [email protected]

Contributors

Thanks goes to these wonderful people (emoji key):

kaikai
kaikai

💻
zhangyaning
zhangyaning

💻
Boyu Yang
Boyu Yang

💻
zhiwei
zhiwei

💻
漂流
漂流

💻
AsceticBear
AsceticBear

💻
yubo
yubo

💻
zhouyun-zoe
zhouyun-zoe

📖
Bicheng Gao
Bicheng Gao

💻
lhf
lhf

💻
LinFeng Qian
LinFeng Qian

💻
keroro
keroro

💻
Yaorong
Yaorong

💻
suyanlong
suyanlong

💻
Chen Yu
Chen Yu

💻
zhangsoledad
zhangsoledad

💻
hezhengjun
hezhengjun

💻
zeroqn
zeroqn

💻
urugang
urugang

💻
Jiang Jinyang
Jiang Jinyang

💻
Jan Xie
Jan Xie

💻
Sun Lei
Sun Lei

💻
hyl
hyl

💻
Terry Tai
Terry Tai

💻
Ke Wang
Ke Wang

💻
Mohanson
Mohanson

💻
quanzhan lu
quanzhan lu

💻
duanyytop
duanyytop

💻
clearloop
clearloop

💻
nokodemion
nokodemion

💻
Rain Chen
Rain Chen

💻
Daogang Tang
Daogang Tang

💻
xianliang jiang
xianliang jiang

🐛
Nov
Nov

💻
Rai Yang
Rai Yang

💻
Wenchao Hu
Wenchao Hu

💻
kaiyu
kaiyu

💻
James Chen
James Chen

💻
rev-chaos
rev-chaos

💻
Eason Gao
Eason Gao

💻
Eric Zhang
Eric Zhang

💻
Jun Jiang
Jun Jiang

💻
PRIEWIENV
PRIEWIENV

💻
The Gitter Badger
The Gitter Badger

💻
CL
CL

💻
programmer-liu
programmer-liu

💻
Jiayu Ye
Jiayu Ye

💻
liyanzi
liyanzi

🐛
JiaYi
JiaYi

📖
Timmy Zhang
Timmy Zhang

🤔
Wu Yuyue
Wu Yuyue

📖
xiangmeiLu
xiangmeiLu

📖
mingxiaowu
mingxiaowu

🐛
wangfh666
wangfh666

🐛
travis-joe
travis-joe

📖
UDLD
UDLD

📖
Yieazy
Yieazy

💻
ShenLei
ShenLei

💻

This project follows the all-contributors specification. Contributions of any kind welcome!

Comments
  • Auto-panic when newly added ordinary node sync the blocks ## cita进程自动终结

    Auto-panic when newly added ordinary node sync the blocks ## cita进程自动终结

    Description

    新增一个普通节点,测试块同步的性能,新节点启动后块是一直同步的,日志显示进程在 隔天01:37分崩溃 下面是错误日志: 【2019-04-30T01:37:18.546364357+08:00 - INFO - public block txs height 1618892 with 0 transactions 2019-04-30T01:37:23.111085504+08:00 - INFO - get block tx hashes for height 1618893 2019-04-30T01:37:23.111146491+08:00 - INFO - public block txs height 1618893 with 0 transactions 2019-04-30T01:37:24.189629995+08:00 - ERROR - Error in reading loop: Protocol("Connection reset by peer (os error 104)") 2019-04-30T01:37:24.191299405+08:00 - ERROR - Error dispatching closing packet to a channel 2019-04-30T01:37:24.191327491+08:00 - ERROR - Error consuming Protocol("Connection reset by peer (os error 104)") 2019-04-30T01:37:24.191611845+08:00 - ERROR - Error in reading loop: Protocol("Connection reset by peer (os error 104)") 2019-04-30T01:37:24.191633697+08:00 - ERROR - Error dispatching closing packet to a channel 2019-04-30T01:37:24.750045126+08:00 - INFO - CITA:auth 2019-04-30T01:37:24.750086919+08:00 - INFO - Version: v0.22.0-151-g53de566-dev 2019-04-30T01:37:25.086629431+08:00 - ERROR - 】 【position: Thread main panicked at failed to open url amqp://guest:guest@localhost/test-chain/0 : IoError(AddrNotAvailable), /opt/.cargo/git/checkouts/cita-common-1aad419f3e80ba17/3ec4e19/pubsub_rabbitmq/src/lib.rs:60 】

    Versions

    os:Ubuntu 16.04.3 LTS cita:v0.23.0,日志显示是v0.22.0 实际上是v0.23.0 docker : cita/cita-run:ubuntu-18.04-20190419

    Additional Information

    [开始运行cita v0.22.0 ,磁盘空间不够,进行了节点目录迁移,再升级到0.23.0版本。添加了一个节点,准备测试块同步性能,最后报错].

    bug 
    opened by mfuuzy 18
  • Installation && Exectution Optimization.

    Installation && Exectution Optimization.

    Features

    ./cita directly.

    Optimization

    1. Node 'test-chain/0' not responding to pings

    if not daemon.sh bin/cita start test-chain/0, this bug occurs.

    Added a condition into cita/env.sh, if run start command, daemon automatically

    2. Unable to resolve host linuxkit-025000000001

    mac environment should set --net=bridge

    Added a condition into cita/env.sh, if on macOS, the tag will move to bridge.

    3. Node Directory Not Found

    Should run `bin/cita <command>' while operating node.

    Replaced pwd as $0, to fix the scripts' route.

    squash merging 
    opened by clearloop 18
  • How about adding a Homebrew formula?

    How about adding a Homebrew formula?

    How about adding a Homebrew formula?

    I had configured CITA last night, the starting instructors might too long that made me confused, btw, I wrote a formula and made few changes in my branch.

    Solution

    It's quite nice to replace the $PWD as $CITA_HOME, homebrew might not happy about $PWD...

    Installation

    Install Docker Server first.

    To use docker happily, we need:

    • Click docker icon
    • share /usr/local/Cellar/cita

    Tap repo and install:

    brew tap clearloop/cita
    brew install cita
    

    By default, binaries installed by cita will be placed into:

    /usr/local/Cellar/cita/0.21
    

    Usage

    Just exec cita:

    Usage: cita <command> <node> [options]
    where <command> is one of the following:
        { help | setup | start | stop | restart | ping
          top | backup | clean | logs | logrotate }
    
    Run `cita help` for more detailed information.
    

    Getting-Started

    preset

    # This version has a preset test-chain, no need to run scripts.
    

    Setup Chain

    $ cita setup test-chain/0
    

    Start Chain

    $ cita start test-chain/0
    

    Stop Chain

    $ cita stop test-chain/0
    

    Others

    $ cita
    Usage: cita <command> <node> [options]
    where <command> is one of the following:
        { help | setup | start | stop | restart | ping
          top | backup | clean | logs | logrotate }
    Run `cita help` for more detailed information.
    

    Additions

    Complex operations might block some developers interested in, hope cita team can simplify the installation and operating process ; )

    enhancement p:should-have 
    opened by clearloop 17
  • Too many sst files of rocksdb.

    Too many sst files of rocksdb.

    Description

    TBD

    Steps to Reproduce

    TBD

    Expected behavior: TBD

    Actual behavior: TBD

    Reproduce how often: TBD

    Versions

    0.20.2

    Additional Information

    ------------------Chinese-----------------------------

    CITA 长时间运行后发现 rocksdb 会生成较多的 sst 文件,测试链运行 3 个月,数据大小 30G,nosql 目录下接近 200W 个 sst 文件,导致 CITA-chain CPU 占用率 持续增长(偶尔出现卡顿 不出块 不知道是否和这个有关系),inode 占比 30% ,目测 在 4c 8G 100G 硬盘的服务器 启动一个节点 运行一年 inode 会满, 是否有办法 控制 sst 生成的文件数量的,同时 不要把所有的 sst 文件放在 nosql一级目录下,可以按hash 目录索引 ,目录下存放子目录再放 sst。

    enhancement help wanted more description research urgent 
    opened by kaikai1024 16
  • block.coinbase can't be used in autoExec()

    block.coinbase can't be used in autoExec()

    Description

    block.coinbase can't be used in autoExec()

    Steps to Reproduce

    1. Add SysConfig.autoExec=true when create chain;
    2. use address(block.coinbase).transfer(1) in function autoExec();
    3. create contract and registe it to AutoExec contract;
    4. Transfer token to contract.

    Expected behavior: contract balance sub 1 per block

    Actual behavior: contract balance remain unchanged

    Reproduce how often: every time.

    Versions

    v0.22.0

    Additional Information

    address(0x5444B13eFe73A7de4d56f2c043424115C8e26eF1).transfer(1) works but address(block.coinbase).transfer(1) not.

    bug vm & state upgrade 
    opened by luqz 14
  • Patch to absolute paths' in starting scripts.

    Patch to absolute paths' in starting scripts.

    1. pwd -P can not handle symlinks in /usr/local/bin, support global usage.
    2. DOCKER_CARGO links a wrong path...XD
    3. Slim INIT_CMD into a simple string, remove one line empty. #393
    opened by clearloop 14
  • How can I get the value of getFilterChanges, Please tell me how to use getFilterChanges  and getFilterLogs

    How can I get the value of getFilterChanges, Please tell me how to use getFilterChanges and getFilterLogs

    Description

    In the same block getFilterChanges have value return but getFilterLogs have not return.

    Steps to Reproduce

    1. rpc sendRawTransaction --code 0x608060405234801561001057600080fd5b503373ffffffffffffffffffffffffffffffffffffffff167f4f8cfde3439a1a302c21ca51eec26086efbfd940b8c0279889fc6bb6e73ecc6660405160405180910390a2610136806100636000396000f30060806040526004361061004c576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806360fe47b1146100515780636d4ce63c1461007e575b600080fd5b34801561005d57600080fd5b5061007c600480360381019080803590602001909291905050506100a9565b005b34801561008a57600080fd5b50610093610101565b6040518082815260200191505060405180910390f35b806000819055503373ffffffffffffffffffffffffffffffffffffffff167ffd28ec3ec2555238d8ad6f9faf3e4cd10e574ce7e7ef28b73caa53f9512f65b9826040518082815260200191505060405180910390a250565b600080549050905600a165627a7a72305820cf7f3327f93c31df14de53a6b241db977f745ec600a5e7b78af619fc38e7e6150029 --private-key 0x5f0258a4778057a8a7d97809bd209055b2fbafa654ce7d31ec7191066b9225e6

    output: { "id": 4, "jsonrpc": "2.0", "result": { "hash": "0x6357e35851cc54ba9fc446f18938f255eea2d74ca14f05b0a5c35ca9089d059f", "status": "OK" } }

    1. get topics

    rpc getTransactionReceipt --hash 0x6357e35851cc54ba9fc446f18938f255eea2d74ca14f05b0a5c35ca9089d059f

    output: "topics": [ "0x4f8cfde3439a1a302c21ca51eec26086efbfd940b8c0279889fc6bb6e73ecc66", "0x0000000000000000000000004b5ae4567ad5d9fb92bc9afd6a657e6fa13a2523" ]

    1. get newFilter result: "0xf"
    ./env.sh curl -X POST --data '{"jsonrpc":"2.0","method":"newFilter","params":[{"topics":["0x4f8cfde3439a1a302c21ca51eec26086efbfd940b8c0279889fc6bb6e73ecc66"]}],"id":1}' 127.0.0.1:1337
    

    key create

    transfer --address 0xda81082a5a2b69f7f802f96c9a48616c507d47cd --private-key 0x5f0258a4778057a8a7d97809bd209055b2fbafa654ce7d31ec7191066b9225e6 --value 1000000000000000000000
    
    1. /env.sh curl -X POST --data '{"jsonrpc":"2.0","method":"getFilterChanges","params":["0xf"],"id":74}' 127.0.0.1:1337

    start with a null value return , post again has output

    { "jsonrpc": "2.0", "id": 74, "result": [ "0x0e03c53bd78f842295f548539f72bde9f104ddf92e91ea1a2cd2a3d73e6fba53", "0x59f21942f94013becb10533ebea392d9ad9337112122df8e878c208489746764", "0xa370cfb36db5461288afac715db8b78b3d7e3331a66474608b004e82255ef4bf", "0x2b50a41e3e9e3d964fb1f8fc48bc3aa71c52ccfb968b02213f44a560d1edb541", "0x191f5201bc9810dce9407f2ff69efc20adbcba6345fc02347f585dfddd712f32", "0x616e312285a1d604a397806bf967926476bf3289b90d125cebb3518fe4ec4f1a", "0x8870bb49413600daaeb48db3417a63858892c982b9316a297d54b78f838e147a", "0xb001c716f8dc5dac0e20ed884d919401aef29558bb959ff3d346a2e6c1ca3a87", "0x480362e570b0ed1b433490bb5b3f4e1f01fae5758f6140bf66e5b3d67b97ecfd", "0x020839a5930459aa970794b5bca0fd3433b02a9270820524f098ac38ab150364", "0x3f56922891d0df5e2f4ec56f0541b9a512988e5f10d476879caf492841db5ba5", "0x07ab1b5a863835822f95aba02aa8718af9687e03e24343e4d11ab4d502d7d71e", "0x1af9c2cd590a1e0f6769a234fa21fff2693be3c3f98edde4364bce53adba9311", "0x48ce4fe4e5ddcce27eb2f8afde5bafa0e08bb9d53a7197b34421afa789d02c1f", "0xefcd69237c89f71fb8c8a5171095a9b837d0cf65625c5b670c6c69d82e7b0443", "0x5cfcf63c3a060e4481255bb341cad12afdfad51ee300cf57efb884b6a8ddf836" ] } 6. /env.sh curl -X POST --data '{"jsonrpc":"2.0","method":"getFilterLogs","params":["0xf"],"id":74}' 127.0.0.1:1337

    output: { "jsonrpc": "2.0", "id": 74, "result": [] }

    Expected behavior: [In the same block getFilterChanges and getFilterLogs have value return ]

    Actual behavior: [In the same block getFilterChanges have value return but getFilterLogs have not return]

    Reproduce how often: [every time]

    Versions

    develop

    Additional Information

    [I want to know how to use getFilterChanges and getFilterLogs , when is the value output, what result output , Thanks].

    question good first issue 
    opened by QingYanL 13
  • [feature] Auto adjust consensus time

    [feature] Auto adjust consensus time

    Auto adjust consensus time

    Description

    The default value of SysConfig.blockInterval is 3000, which means 3 seconds. The whole network will keeps this fixed interval to generate empty blocks even there is no transactions at all. If one empty block occupied 12K, it will cost at least 12K*3600*24*365/3/1024/1024 = 120.3G storage for each single node running for 1 year. That's quite diseconomy. So I propose to make the consensus time adjustable dynamically. E.g. we can turn down the interval to 3 secs or even 1 sec to speed up the block generation at work time / peak time, and turn up the interval to 1 hour or higher to reduce the useless storage occupation.

    CITAHub Topic Reference: https://talk.citahub.com/t/topic/138, Eason replied you are working on it.

    enhancement p:could-have 
    opened by timmyz 13
  • The last 100 pieces of historical data from the snapshot were not saved

    The last 100 pieces of historical data from the snapshot were not saved

    Description

    [快照时最近100块的历史数据未保存,仅保存了状态]

    Steps to Reproduce

    1. [创建三个共识节点: mac需先端口映射 bin/cita create --super_admin "0x4b5ae4567ad5d9fb92bc9afd6a657e6fa13a2523" --nodes "127.0.0.1:4000,127.0.0.1:4001,127.0.0.1:4002" --enable_version --contract_arguments SysConfig.economicalModel=1 setup并start bin/cita setup test-chain/0到2 bin/cita start test-chain/0到2 ]

    2. [在块高为5(快照100块范围外), 块高为30(快照100块范围内),块高为150(快照后)的时候对不同的账户进行交易转账不同的金额(便于区分) transfer --address 0x0d5c23dc41956c8aca3b6f3fa581a4fd640f7997 --private-key 0x5f0258a4778057a8a7d97809bd209055b2fbafa654ce7d31ec7191066b9225e6 --value 100]

    3. [进入docker内节点0,进行快照../../bin/snapshot_tool -m snapshot -e 120]

    4. [新增节点3, ./scripts/create_cita_config.py append --chain_name test-chain --node "127.0.0.1:4003"

    使其成为共识节点: scm NodeManager approveNode --address 0x4bf0e52ed703c9a46efaac0761a17365dc09dace --admin-private 0x5f0258a4778057a8a7d97809bd209055b2fbafa654ce7d31ec7191066b9225e6 查看添加共识成功:rpc getMetaData ]

    5.[进入docker ,进入节点3对其,进行快照恢复。cp ../0/snapshot_* ./ ../../bin/snapshot_tool -m restore]

    6.[快照恢复后,分别根据步骤2中交易hash,向节点3 http://127.0.0.1:1340发送 rpc getTransaction,查看交易数据是否保存 ]

    Expected behavior: [快照时最近100块的历史数据保存]

    Actual behavior: [步骤6中,仅可以查询到块高为5(快照100块范围外), 块高为30(快照100块范围内)的交易状态,查询不到数据] image

    Reproduce how often: [every]

    Versions

    [v0.24]

    bug 
    opened by QingYanL 12
  • executor log error

    executor log error

    ============================ stack backtrace: 0: 0x55e1bee94d2c - backtrace::backtrace::trace::hfa99d66440780557 1: 0x55e1bee93fa2 - <backtrace::capture::Backtrace as core::default::Default>::default::h4d3bf2e7afd53899 2: 0x55e1bee94018 - backtrace::capture::Backtrace::new::h92a28e62d17e981a 3: 0x55e1bee932c8 - panic_hook::panic_hook::h55dfb5afe5d6dd62 4: 0x55e1bee93008 - core::ops::function::Fn::call::h69f2a83f466ea8ca 5: 0x55e1bf215cb3 - std::panicking::rust_panic_with_hook::hd470ff3b3e7a1b18 at libstd/panicking.rs:480 6: 0x55e1bf215819 - std::panicking::continue_panic_fmt::hf0cf39ae1e114602 at libstd/panicking.rs:390 7: 0x55e1bf21577d - std::panicking::begin_panic_fmt::hfc5862442bd06bfc at libstd/panicking.rs:345 8: 0x55e1bea0c9fe - pubsub_rabbitmq::start_rabbitmq::he6c8371c0b59984b 9: 0x55e1be9d6c92 - pubsub::start_pubsub::h581a16243424a36a 10: 0x55e1bea0516b - cita_executor::main::h04c21ec32e368309 11: 0x55e1be9f2d12 - std::rt::lang_start::{{closure}}::hd34a6701a77946b5 12: 0x55e1bf2156b2 - std::rt::lang_start_internal::{{closure}}::h444bf05eb286eca1 at libstd/rt.rs:59 - std::panicking::try::do_call::hb527d54965a8815a at libstd/panicking.rs:310 13: 0x55e1bf2258c9 - __rust_maybe_catch_panic at libpanic_unwind/lib.rs:102 14: 0x55e1bf204df5 - std::panicking::try::h83b5294aab121d1a at libstd/panicking.rs:289 - std::panic::catch_unwind::h15c1ea783c7910d5 at libstd/panic.rs:392 - std::rt::lang_start_internal::hcc3e9196a926118d at libstd/rt.rs:58 15: 0x55e1bea06663 - main 16: 0x7fcd89c6eb96 - __libc_start_main 17: 0x55e1be9ba359 - _start 18: 0x0 -

    position: Thread main panicked at failed to open url amqp://guest:guest@localhost/test-chain/0 : IoError(AddrNotAvailable), /opt/.cargo/git/checkouts/cita-common-1aad419f3e80ba17/1b308bc/pubsub_rabbitmq/src/lib.rs:59

    opened by jeffreyji666 12
  • Add get release version from RPC

    Add get release version from RPC

    Add get release version from RPC

    Requirements

    rely cryptape/cita-common#226

    Verification Process

    1. Add enable_version = true Or enable_version = false Or Nothing;
    2. POST getVersion to RPC
    curl -X POST --data '{"jsonrpc":"2.0","method":"getVersion","params":[],"id":3}'  127.0.0.1:1337
    

    Applicable Issues

    #282 Get release version info of all modules from RPC.

    opened by luqz 11
  • Bump express from 4.17.1 to 4.18.2 in /scripts/contracts/tests

    Bump express from 4.17.1 to 4.18.2 in /scripts/contracts/tests

    Bumps express from 4.17.1 to 4.18.2.

    Release notes

    Sourced from express's releases.

    4.18.2

    4.18.1

    • Fix hanging on large stack of sync routes

    4.18.0

    ... (truncated)

    Changelog

    Sourced from express's changelog.

    4.18.2 / 2022-10-08

    4.18.1 / 2022-04-29

    • Fix hanging on large stack of sync routes

    4.18.0 / 2022-04-25

    ... (truncated)

    Commits

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    • @dependabot use these labels will set the current labels as the default for future PRs for this repo and language
    • @dependabot use these reviewers will set the current reviewers as the default for future PRs for this repo and language
    • @dependabot use these assignees will set the current assignees as the default for future PRs for this repo and language
    • @dependabot use this milestone will set the current milestone as the default for future PRs for this repo and language

    You can disable automated security fix PRs for this repo from the Security Alerts page.

    dependencies javascript 
    opened by dependabot[bot] 0
  • Bump qs from 6.5.2 to 6.5.3 in /scripts/contracts/tests

    Bump qs from 6.5.2 to 6.5.3 in /scripts/contracts/tests

    Bumps qs from 6.5.2 to 6.5.3.

    Changelog

    Sourced from qs's changelog.

    6.5.3

    • [Fix] parse: ignore __proto__ keys (#428)
    • [Fix] utils.merge: avoid a crash with a null target and a truthy non-array source
    • [Fix] correctly parse nested arrays
    • [Fix] stringify: fix a crash with strictNullHandling and a custom filter/serializeDate (#279)
    • [Fix] utils: merge: fix crash when source is a truthy primitive & no options are provided
    • [Fix] when parseArrays is false, properly handle keys ending in []
    • [Fix] fix for an impossible situation: when the formatter is called with a non-string value
    • [Fix] utils.merge: avoid a crash with a null target and an array source
    • [Refactor] utils: reduce observable [[Get]]s
    • [Refactor] use cached Array.isArray
    • [Refactor] stringify: Avoid arr = arr.concat(...), push to the existing instance (#269)
    • [Refactor] parse: only need to reassign the var once
    • [Robustness] stringify: avoid relying on a global undefined (#427)
    • [readme] remove travis badge; add github actions/codecov badges; update URLs
    • [Docs] Clean up license text so it’s properly detected as BSD-3-Clause
    • [Docs] Clarify the need for "arrayLimit" option
    • [meta] fix README.md (#399)
    • [meta] add FUNDING.yml
    • [actions] backport actions from main
    • [Tests] always use String(x) over x.toString()
    • [Tests] remove nonexistent tape option
    • [Dev Deps] backport from main
    Commits
    • 298bfa5 v6.5.3
    • ed0f5dc [Fix] parse: ignore __proto__ keys (#428)
    • 691e739 [Robustness] stringify: avoid relying on a global undefined (#427)
    • 1072d57 [readme] remove travis badge; add github actions/codecov badges; update URLs
    • 12ac1c4 [meta] fix README.md (#399)
    • 0338716 [actions] backport actions from main
    • 5639c20 Clean up license text so it’s properly detected as BSD-3-Clause
    • 51b8a0b add FUNDING.yml
    • 45f6759 [Fix] fix for an impossible situation: when the formatter is called with a no...
    • f814a7f [Dev Deps] backport from main
    • Additional commits viewable in compare view

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    • @dependabot use these labels will set the current labels as the default for future PRs for this repo and language
    • @dependabot use these reviewers will set the current reviewers as the default for future PRs for this repo and language
    • @dependabot use these assignees will set the current assignees as the default for future PRs for this repo and language
    • @dependabot use this milestone will set the current milestone as the default for future PRs for this repo and language

    You can disable automated security fix PRs for this repo from the Security Alerts page.

    dependencies javascript 
    opened by dependabot[bot] 0
  • Bump decode-uri-component from 0.2.0 to 0.2.2 in /scripts/contracts/tests

    Bump decode-uri-component from 0.2.0 to 0.2.2 in /scripts/contracts/tests

    Bumps decode-uri-component from 0.2.0 to 0.2.2.

    Release notes

    Sourced from decode-uri-component's releases.

    v0.2.2

    • Prevent overwriting previously decoded tokens 980e0bf

    https://github.com/SamVerschueren/decode-uri-component/compare/v0.2.1...v0.2.2

    v0.2.1

    • Switch to GitHub workflows 76abc93
    • Fix issue where decode throws - fixes #6 746ca5d
    • Update license (#1) 486d7e2
    • Tidelift tasks a650457
    • Meta tweaks 66e1c28

    https://github.com/SamVerschueren/decode-uri-component/compare/v0.2.0...v0.2.1

    Commits

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    • @dependabot use these labels will set the current labels as the default for future PRs for this repo and language
    • @dependabot use these reviewers will set the current reviewers as the default for future PRs for this repo and language
    • @dependabot use these assignees will set the current assignees as the default for future PRs for this repo and language
    • @dependabot use this milestone will set the current milestone as the default for future PRs for this repo and language

    You can disable automated security fix PRs for this repo from the Security Alerts page.

    dependencies javascript 
    opened by dependabot[bot] 0
  • Bump protobuf from 3.4.0 to 3.18.3 in /scripts/txtool

    Bump protobuf from 3.4.0 to 3.18.3 in /scripts/txtool

    Bumps protobuf from 3.4.0 to 3.18.3.

    Release notes

    Sourced from protobuf's releases.

    Protocol Buffers v3.18.3

    C++

    Protocol Buffers v3.16.1

    Java

    • Improve performance characteristics of UnknownFieldSet parsing (#9371)

    Protocol Buffers v3.18.2

    Java

    • Improve performance characteristics of UnknownFieldSet parsing (#9371)

    Protocol Buffers v3.18.1

    Python

    • Update setup.py to reflect that we now require at least Python 3.5 (#8989)
    • Performance fix for DynamicMessage: force GetRaw() to be inlined (#9023)

    Ruby

    • Update ruby_generator.cc to allow proto2 imports in proto3 (#9003)

    Protocol Buffers v3.18.0

    C++

    • Fix warnings raised by clang 11 (#8664)
    • Make StringPiece constructible from std::string_view (#8707)
    • Add missing capability attributes for LLVM 12 (#8714)
    • Stop using std::iterator (deprecated in C++17). (#8741)
    • Move field_access_listener from libprotobuf-lite to libprotobuf (#8775)
    • Fix #7047 Safely handle setlocale (#8735)
    • Remove deprecated version of SetTotalBytesLimit() (#8794)
    • Support arena allocation of google::protobuf::AnyMetadata (#8758)
    • Fix undefined symbol error around SharedCtor() (#8827)
    • Fix default value of enum(int) in json_util with proto2 (#8835)
    • Better Smaller ByteSizeLong
    • Introduce event filters for inject_field_listener_events
    • Reduce memory usage of DescriptorPool
    • For lazy fields copy serialized form when allowed.
    • Re-introduce the InlinedStringField class
    • v2 access listener
    • Reduce padding in the proto's ExtensionRegistry map.
    • GetExtension performance optimizations
    • Make tracker a static variable rather than call static functions
    • Support extensions in field access listener
    • Annotate MergeFrom for field access listener
    • Fix incomplete types for field access listener
    • Add map_entry/new_map_entry to SpecificField in MessageDifferencer. They record the map items which are different in MessageDifferencer's reporter.
    • Reduce binary size due to fieldless proto messages
    • TextFormat: ParseInfoTree supports getting field end location in addition to start.

    ... (truncated)

    Commits

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    • @dependabot use these labels will set the current labels as the default for future PRs for this repo and language
    • @dependabot use these reviewers will set the current reviewers as the default for future PRs for this repo and language
    • @dependabot use these assignees will set the current assignees as the default for future PRs for this repo and language
    • @dependabot use this milestone will set the current milestone as the default for future PRs for this repo and language

    You can disable automated security fix PRs for this repo from the Security Alerts page.

    dependencies python 
    opened by dependabot[bot] 0
  • Bump async from 2.6.3 to 2.6.4 in /scripts/contracts/tests

    Bump async from 2.6.3 to 2.6.4 in /scripts/contracts/tests

    Bumps async from 2.6.3 to 2.6.4.

    Changelog

    Sourced from async's changelog.

    v2.6.4

    • Fix potential prototype pollution exploit (#1828)
    Commits
    Maintainer changes

    This version was pushed to npm by hargasinski, a new releaser for async since your current version.


    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    • @dependabot use these labels will set the current labels as the default for future PRs for this repo and language
    • @dependabot use these reviewers will set the current reviewers as the default for future PRs for this repo and language
    • @dependabot use these assignees will set the current assignees as the default for future PRs for this repo and language
    • @dependabot use this milestone will set the current milestone as the default for future PRs for this repo and language

    You can disable automated security fix PRs for this repo from the Security Alerts page.

    dependencies javascript 
    opened by dependabot[bot] 0
Releases(v0.24.3)
  • v20.2.0(Feb 14, 2020)

    Hi, folks.

    On the special day, we have a special Valentine's day. At present, we still have to face the challenge of virus, but we accept the challenge and will complete it.

    Today, with your support and our efforts, CITA released version 20.2.0. In this version, we adopt a new version naming rule, that is, the version command method of YY.MM. X, where YY represents year, MM represents month, and X represents bug fix version number.

    Finally, may the world be peaceful, the country peaceful and the people safe, and everyone happy and healthy!

    Why the new version rule? In order to meet more customized needs of customers, we started the commercial version plan of CITA. The commercial version of CITA will continue to use the original version naming rules, so the community version of CITA will use the version naming rules of Year.Month. X, which is similar to the version rules of Ubuntu.


    在这段特殊的日子里,我们迎来了一个特殊的情人节。当下我们还要面对病毒的挑战,但我们接受挑战,亦会完成挑战。 也是今天,在大家的支持与努力下,CITA 发布 20.2.0 版本。在这个版本中,我们采用了新的版本命名规则,即采用 YY.MM.X 的版本命令方法,YY 表示年,MM 表示月,X 表示修订号。

    最后,愿 天下太平,国泰民安 ,所有人幸福安康!

    为什么采用新的版本规则? 为了满足客户更多的定制化需求,我们开始了 CITA 的商业版本计划,CITA 的商业版本将继续沿用原来的版本命名规则,所以 CITA 的社区版本将启用 年.月.X 的版本命名规则,这有点类似 Ubuntu 的版本规则。


    Changelog

    New features

    • Supports Native-Contract and Solidity-Contract calling each other.
    • Supports CITA docker images release.

    Framework

    • Hard code release version. [@leeyr338]

    • Supports CITA docker images release. [@leeyr338]

    Executor

    • [Feature] Supports Native-Contract and Solidity-Contract calling each other. [@leeyr338]

    • [Fix] Bug fix for handling quota used error when Revert. [@leeyr338]

    • [Fix] Add black list judge. [@jerry-yu]

    • [Fix] Fix bug address in black list can't dismiss. [@jerry-yu]

    • [Fix] Fix gas calculation error. [@leeyr338]

    Chain

    • [Fix] Fix bound bug about filter. [@rink1969]

    Auth

    • [Fix] Fix for dup tx hash in block. [@jerry-yu]

    CITA-common

    • [Optimization] Update common: update cita-common, remove unused bin, update cita-run docker image. [@rink1969 ]

    Scripts

    • [Refine] Refine the script according shell check. [@jerry-yu]

    • [Fix] Fix some sub commands error. [@leeyr338]

    • [Fix] Docker reap zombie processes. [@rink1969]

    • [Fix] Don't use fixed container name. [@rink1969]

    • [Fix] Set cita_build container as bridge model. [@rink1969]

    • [Fix] Fix volume path when cita_run. [@rink1969]

    Contract

    • [Fix] Fix update admin. [@jerry-yu]

    Tool

    • [Fix] Create-genesis : Solc command stderr output. [@bsdelf ]

    Doc

    • [Docs] Fix some operation typos. [@ouwenkg]

    Artifact checksum

    | File | Checksum (sha256sum) | |-----|-------| | cita_secp256k1_sha3.tar.gz | 0ca9a0574c463f22f5c52205ff8613f840f0fc3087d63ad1c3e35161f7c9099f | | cita_sm2_sm3.tar.gz | cb5247a3348615e70226486c659ce63d614510d2a009625caae93ba4f1d71850 | | cita_ed25519_blake2b.tar.gz | 780320638606c4e9a298d43d55c8991e2cb1ad1201fcd01aa42b6ed507387c3e |

    Source code(tar.gz)
    Source code(zip)
    cita_ed25519_blake2b.tar.gz(31.51 MB)
    cita_secp256k1_sha3.tar.gz(31.66 MB)
    cita_sm2_sm3.tar.gz(31.23 MB)
    cita_src.tar.gz(2.36 MB)
  • v1.0.1(Oct 25, 2019)

    • [Optimization] Support docker image release.
    • [Fix] Fix Executor's panic when vm memery offset greater then size.
    • [Fix] Fix duplicate transaction hash in block.

    | File | Checksum (MD5) | |-----|-------| | cita_secp256k1_sha3.tar.gz | aba3a9b3ae322572d391e4e32a91942e | | cita_sm2_sm3.tar.gz | c2e4ae47fe6ac7a864c9b97847140ad2 | | cita_ed25519_blake2b.tar.gz | 168402bb9c4b064025584727b4ddf507 |

    Source code(tar.gz)
    Source code(zip)
    cita_ed25519_blake2b.tar.gz(42.59 MB)
    cita_secp256k1_sha3.tar.gz(42.81 MB)
    cita_sm2_sm3.tar.gz(42.09 MB)
    cita_src.tar.gz(2.35 MB)
  • v1.0.0(Sep 9, 2019)

    Hi, folks.

    Before the Mid-Autumn Festival, CITA 1.0.0 here for you! -yolk mooncake

    In Jul 25, 2017, rink submitted the first commit to CITA. In Oct 26, 2017, CITA 0.1 released. Over the next more than 700 days and nights, CITA has accepted commits 3500+ and released 27 times. Thanks all the friends who use CITA as platform to do secondary development, who use CITA to deploy DApp, who use CITA do storage works, even who use CITA to explore the world of blockchain. It's your continuous attempt and feedback that makes CITA become better and better.

    After this version, CITA license will change to Apache License 2.0 officially. To achieve this, we redesign EVM and DB crates.


    赶在中秋团圆佳节来临之前, 我们将正式发布 CITA 1.0.0!-蛋黄月饼

    CITA 的第一个 commit 提交在 2017 年 7 月 25 日, 第一次发版本是在 2017 年 10 月 26 日。700 个日夜里,CITA 共接收提交代码 3500+ commits,release 发布 27 次。感谢所有使用 CITA 的朋友们,或许你在基于 CITA 做二次开发,或者 CITA 做存证,或者你就是想使用 CITA 来探索区块链的世界。谢谢你们。正因为你们不间断地使用和及时地反馈, CITA 才会越变越好。

    在这个版本后, CITA 协议将更换为 Apache License 2.0, 为此,我们重新设计了 EVM 与 DB 库。

    Changelog

    NOTE: The snapshot feature is not available in this version, sorry for any inconvenience it may caused.

    Protocol

    • [Protocol] Switch project license from GPL 3.0 to Apache License 2.0. [@jerry-yu] [@leeyr338] [@kaikai1024] [@ouwenkg]

    Framework

    Executor

    • [Fix] Fix black list error. [@jerry-yu]

    • [Fix] Passed all compatible state tests. [@jerry-yu]

    • [Fix] Fix sync blocks error. [@jerry-yu]

    • [Fix] Fix rustc unexpected unwrap. [@ouwenkg]

    • [Fix] Fix transfer failed in charge. [@ouwenkg]

    • [Refactor] refactor errors in executor and chain. [@ouwenkg]

    • [Fix] Using buildin contracts in cita-vm and remove old parts in cita-executor. [@ouwenkg]

    • [Fix] Using context.rs to replace env_info.rs. [@ouwenkg]

    • [Fix] Remove useless vm feature. [@kaikai1024]

    • [Fix] Rewrite logic about vm in cita-executor. [@leeyr338]

    • [Fix] Rewrite logic about native contracts in cita_executor. [@ouwenkg]

    • [Fix] Remove grpc contracts. [@ouwenkg]

    • [Fix] Fix out of array error. [@jerry-yu]

    Chain

    • [Fix] Fix get state proof empty. [@ouwenkg]

    • [Rewrite] Rewrite entire log filter. [@kaikai1024]

    • [Optimization] Remove useless HeapSizeOf trait. [@ouwenkg]

    • [Rewrite] Rewrite blooms. [@kaikai1024]

    • [Rewrite] Rewrite db_index.rs to replace extra.rs, ids. [@ouwenkg]

    • [Fix] Fix process exit in chain in certain situation. [@leeyr338]

    Consensus

    • [Optimization] Remove unused NTP Service. [@jerry-yu]

    • [Optimization] Update cita-logger. [@kaikai1024]

    Auth

    • [Refactor] Increase quota charged in data store. [@luqz]

    Network

    • [Optimization] Using new p2p. [@jerry-yu]

    CITA-common

    • [Optimization] Update docker image. [@kaikai1024]

    • [Optimization] Update ethereum types version. [@leeyr338]

    • [Optimization] Update sodiumoxide. [@leeyr338]

    • [Optimization] Clear useless files in util. [@kaikai1024]

    • [Optimization] Move util errors to cita. [@kaikai1024]

    • [Optimization] Remove unused rlp crate. [@leeyr]

    • [Fix] Remove grpc parts in libproto. [@ouwenkg]

    • [Rewrite] Rewrite semantic version. [@kaikai1024]

    • [Protocol] Switch license from GPL to Apache 2.0. [@leeyr338]

    CITA-VM

    • [Fix] Add internal error type. [@ouwenkg]

    • [Fix] Ensure that vm compatibles with old vm. [@jerry-yu]

    • [Fix] Add get storage changes interface for genesis. [@ouwenkg]

    Tools

    • [Fix] Fix amend system script. [@kaikai1024]

    • [Fix] Eliminate yaml warnings in txtool. [@ouwenkg]

    Test

    • [CI] Add automatically license checker fossa. [@kaikai1024]

    • [contract] Update test contracts. [@kaikai1024]

    • [CI] Upgrade ubuntu version in docker image. [@leeyr338]

    • [Fix] Fix security dependencies in contracts tests. [@kaikai1024]

    • [CI] Fix ci tests before release. [@ouwenkg]

    Doc

    • [Docs] Add block chain governmenta docs. [@nanmuxiusi]

    • [Docs] More descriptions about filter. [@kaikai1024]

    • [Docs] Fix chores in docs. [@nanmuxiusi]

    • [Docs] Remove Huawei Cloud Deploy documentation. [@nanmuxiusi]

    • [Docs] Fix link in getting-started page. [@nanmuxiusi]

    • [Docs] Fix typo and remove duplicate files. [@nanmuxiusi]

    • [Docs] More descriptions about cumulative quota used. [@kaikai1024]

    Source code(tar.gz)
    Source code(zip)
    cita_ed25519_blake2b.tar.gz(42.59 MB)
    cita_secp256k1_sha3.tar.gz(42.81 MB)
    cita_sm2_sm3.tar.gz(42.09 MB)
    cita_src.tar.gz(2.35 MB)
  • v0.25.0(Jun 28, 2019)

    After the Summer Solstice, A new version of CITA is coming-brown-sugar-osmanthus-ice-powder.

    A new feature that supports for the forwarding of consensus messages, it means that CITA can support a network structure with a consensus node that is not fully connected.

    And:

    • Refactor the genesis generation tool, and improve the test scripts.
    • Make cita-logger as an independent crate. There will be more crates like this in the future.
    • Fix the bug of network, and make it more stable.

    Thanks for your continued support of CITA.


    夏至过后,我们带来了 CITA 新的版本-红糖桂花冰粉

    新功能方面支持了共识消息的转发,意味着 CITA 能够支持共识节点非全连接的网络结构。

    除此之外:

    • 重构了生成创世块的工具,以及完善了测试脚本。
    • 抽出了 cita-logger 库,未来也会有更多的独立的库。
    • 主要修复了网络方面的 Bug,网络模块更加稳定。

    感谢各位对 CITA 长久以来的支持。

    ChangeLog

    Framework

    • [Optimization] Bump Rust toolchain to 1.34.2. [@kaikai1024]
    • [Optimization] Use Rust 2018 edition. [@kaikai1024] [@ouwenkg]
    • [Optimization] Use cita-logger crate. [@kaikai1024]

    Network

    • [Fix] Fix the bug that save wrong session. [@leeyr338]
    • [Fix] Should not unwrap on handle_remote_msg. [@leeyr338]
    • [Fix] Fix the operation of repeated peer key. [@jerry-yu]
    • [Feature] Add retransfer message for P2P network. [@jerry-yu]

    System Contracts

    • [Fix] Fix the import path. [@ouwenkg]
    • [Optimization] Use protocol version instead of version. [@kaikai1024]
    • [Optimization] Rename emergency brake to emergency intervention. [@kaikai1024]

    Tools

    • [Refactor] Rewrite the tool of creating genesis using Rust. [@ouwenkg]

    Test

    • [Refactor] Refactor scripts of integrate test. [@kaikai1024]
    • [Optimization] Add quota unit test in travisCI. [@ouwenkg]

    Scripts

    • [Fix] Node path should not consider bin path. [@rainchen]
    • [Refactor] Refactor the cita.sh script. [@kaikai1024]
    • [Fix] Fix amend help info and latest version. [@leeyr338]
    • [Optimization] Rename config_example to default_config. [@kaikai1024]

    Doc

    • [Doc] Add file naming style doc. [@kaikai1024]
    • [Doc] New CITA contents structure of CITAHub-Docs. [@kaikai1024] [@zhouyun-zoe] [@ouwenkg] [@leeyr338] [@wuyuyue]
    • [Doc] Add wiki about RocksDB. [@leeyr338]
    • [Doc] Update the description about getTransactionCount. [@ouwenkg]
    Source code(tar.gz)
    Source code(zip)
    cita_ed25519_blake2b.tar.gz(43.11 MB)
    cita_secp256k1_sha3.tar.gz(44.08 MB)
    cita_sm2_sm3.tar.gz(43.54 MB)
    cita_src.tar.gz(2.53 MB)
  • v0.24.0(May 18, 2019)

    New version is coming again!

    In this version, CITA protocol version has been upgraded to v2, and the detailed operations can refer to protocol upgrade.

    The node discovery mechanism becomes configurable! You can choose to use a configuration file to control node discovery, or you can choose the P2P node auto-discovery mechanism.

    We have further optimized the configuration related to the economic model and added a configuration item through which the total amount of tokens can be customized.

    At the same time, we also fix some bugs according to user's feedback. We always believe that given enough eyeballs, all bugs are shallow.

    Based on feedback from the community, we also have refactored a lot of documentation, which is more user-friendly and covers more content now.

    We sincerely thank the community for their feedback and contributions during this time. Because of your participation, CITA can better iterative forward!:heart:

    Enjoy the summer with delicious Cold Noodles~~~


    一个不小心,新的版本又来了!

    在这个版本里面,0.24.0 CITA 协议版本已升级为 v2,协议版本的相关升级操作可参考协议升级.

    节点发现机制变成可配置的了!你可以选择用配置文件来控制节点的发现,也可以选择 P2P 节点自动发现机制。

    我们也进一步对经济模型相关的配置进行优化,增加了一个配置项,Charge 模型下可以通过修改该配置项,自定义代币的总量。

    同时,我们也对用户反馈的 bug 进行了修复。我们始终相信,given enough eyeballs, all bugs are shallow

    真诚的感谢这段时间社区小伙伴们的反馈与贡献,因为你们,CITA 才能更好地迭代向前!:heart:

    炎炎夏日,来份美味的凉皮消消暑吧!

    cold-noodles

    Changelog

    Protocol

    Add the support for v2 protocol. More details can refer to protocol upgrade.

    Framework

    • [Optimization] Support new protocol version 2. [@ouwenkg]
    • [Optimization] Bump cita-sdk-js to 0.23.1 to fix the problem of version 2. [@kaikai1024]
    • [Optimization] Bump Rust toolchain to 1.34.1. [@kaikai1024]
    • [Optimization] Use fixed Solidity version for system contracts. [@kaikai1024]
    • [Optimization] Upgrade the node packages to avoid the security alert. [@kaikai1024]
    • [Optimization] Use new log pattern. [@kaikai1024]
    • [Optimization] Update genesis submodule: use tag. [@kaikai1024]

    Executor

    • [Fix] Fix coinbase in auto exec. [@ouwenkg]
    • [Fix] Fix potential panic issue in evm trace. [@ouwenkg]
    • [Fix] Refund token when suicide. [@ouwenkg]
    • [Optimization] Update zktx to use stable verison of Rust. [@kaikai1024]

    Network

    • [Feature] Use new P2P library. [@jerry-yu]
    • [Feature] Let network be configuration. [@jerry-yu]
    • [Fix] Fix bug for saving wrong session id. [@jerry-yu]
    • [Fix] Fix for operating repeated peer key. [@jerry-yu]

    Chain

    • [Fix] Fix the bug that getLogs would break down the chain when toBlock is very large. [@leeyr338]
    • [Optimization] Update log in forward of cita-chain. [@ouwenkg]
    • [Fix] Move chain_version into BlockSysConfig. [@ouwenkg]

    Consensus

    • [Fix] Fix CITA-BFT panic when new ordinary node syncs the blocks. [@leeyr338]
    • [Fix] Fix the bug that chain can't product block after restart docker. [@leeyr338]
    • [Fix] Fix the bug for jumping round when delayed. [@jerry-yu]

    Forever

    • [Fix] Fix service start error when .*.pid files exist. [@leeyr338]

    Tools

    • [Fix] Fix panic in snapshot path. [@ouwenkg]

    Test

    • [Optimization] Set more time for checking P2P network. [@leeyr338]
    • [Optimization] Use testdata submodule to test rpc interface. [@kaikai1024]
    • [Fix] Fix bug of blockNumber.sh script. [@rev-chaos]

    Scripts

    • [Optimization] Modify script for new network config. [@leeyr338]
    • [Fix] Set logrotate output log as a relative path. [@leeyr338]
    • [Fix] Generate privkey file when use authorities option. [@leeyr338]
    • [Feature] Let native token be configurable. [@leeyr338]
    • [Fix] Fix docker multi-ports expose error. [@leeyr338]
    • [Optimization] Remove the useless scripts. [@kaikai1024]
    • [Optimization] Remove warnings of yaml. [@ouwenkg]

    Doc

    • [Doc] Refactor getting-started doc. [@zhouyun-zoe]
    • [Doc] Add economics model docs.[@zhouyun-zoe]
    • [Doc] Add zktx docs. [@kaikai1024]
    • [Doc] Add depository sample. [@leeyr338]
    • [Doc] Add operation guide section. [@zhouyun-zoe]
    • [Doc] Add English version of release guide. [@YUJIAYIYIYI]
    • [Doc] Add logging rule doc. [@kaikai1024]
    • [Doc] Refactor the protocol part doc. [@ouwenkg]
    • [Doc] Refactor the special governance part doc. [@ouwenkg]
    • [Doc] Refactor the account-permission part doc. [@kaikai1024]
    Source code(tar.gz)
    Source code(zip)
    cita_ed25519_blake2b.tar.gz(39.40 MB)
    cita_secp256k1_sha3.tar.gz(40.39 MB)
    cita_sm2_sm3.tar.gz(39.78 MB)
    cita_src.tar.gz(1.88 MB)
  • v0.23.0(Apr 26, 2019)

    Hi, all. A new version called "Braised Prawn" released! "Braised Prawn" is one of the most famous dishes in Shandong cuisine which takes the first place in the eight famous Chinese cuisines. The code of CITA is also as excellent as the flavor of "Braised Prawn". 😝

    In this version, CITA adds two RPC interfaces for users to get the version number and peers' information. And CITA now supports output log as stdout.

    We optimize the usage of bin/cita script. Besides, we also fixed some bugs. In the old version, Auth might crash when it was not ready and high CPU usage, but now it is quite stable all the time!

    CITA is going forward to the 1.0.0 version, thus, the stability is the most important thing. This version adds abundant test cases in VM and P2P.

    CITA 1.0.0, coming soon.


    这次 CITA 为大家带来的美味是八大菜系之首的鲁菜中的经典名菜——“油焖大虾”,油焖大虾鲜甜味美,CITA 的代码,更美。

    在这次的版本中,CITA 新增了两个 RPC 接口供用户方便的获取版本号和节点信息,同时 CITA 的日志现已支持控制台输出。CITA 升级了 P2P 的版本,新的版本中 discovery 协议发生变更。

    我们优化了 bin/cita 脚本的使用方式,同时我们也修复了一些 Bug,比如 Auth 可能崩溃的问题,Network 的高 CPU 使用率的问题等等。

    CITA 正在向 1.0.0 的版本迈进,在这个过程中,稳定性尤为重要,新版本对 VM 和 P2P 增加了大量的测试用例,尽可能的提高稳定性。

    CITA v1.0.0,敬请期待。

    Braised-Prawn

    Changelog

    Upgrade Note

    In v0.23.0, CITA upgraded the P2P discovery protocol, which leads to Incompatibility with v0.22.0. So the nodes with CITA v0.23.0 and the nodes with CITA v0.22.0 cannot discover each other in the network. Therefore, when upgrading, all nodes in the network need to be upgraded to v0.23.0 at the same time.

    Following Upgrade Instructions to upgrade the nodes.

    New Feature Description

    The v0.23.0 version added two RPC interfaces:

    curl -X POST --data '{"jsonrpc":"2.0","method":"getVersion","params":[],"id":83}'
    
    curl -X POST --data '{"jsonrpc":"2.0","method":"peersInfo","params":[],"id":83}'
    

    Breaking Change

    In this version, the usage of bin/cita script has changed. For detail, run bin/cita help.

    Framework

    • [Optimization] Update default rust toolchain to v1.34.0. [@yangby-cryptape] [@kaikai1024]
    • [Optimization] Update cita-sdk-js version. [@kaikai1024]
    • [Fix] Reorganize toml path. [@ouwenkg]
    • [Feature] Log output mode can be configured as stdout or file. [@Kayryu]

    Executor

    • [Optimization] Integrate vm-test. [@ouwenkg]
    • [Optimization] Add unit test of calling contract. [@kaikai1024]

    Auth

    • [Fix] Auth crashes when it is not ready. [@leeyr338]

    Network

    • [Fix] High CPU usage. [@leeyr338]
    • [Fix] Refuse connect when reach max connections. [@leeyr338]
    • [Optimization] Add discovery test of network. [@leeyr338]
    • [Optimization] Use new version P2P to fix network run crash. [@jerry-yu]

    Consensus

    • [Optimization] Set the default NTP service to false. [@kaikai1024]
    • [Fix] Not generate a block. [@jerry-yu]

    RPC

    • [Feature] Add getVersion interface. [@luqz]
    • [Feature] Add peersInfo interface. [@leeyr338]
    • [Fix] Get logs break down the chain when toBlock very large. [@leeyr338]

    Scripts

    • [Optimization] Installation && Exectution Optimization: new usage of bin/cita script. [@clearloop]
    • [Fix] Redirect the stdout and stderr for daemon processes in docker. [@yangby-cryptape]
    • [Fix] Eliminate warnings when create nodes in docker. [@ouwenkg]
    • [Fix] Generate privkey file when use authorities option. [@leeyr338]
    • [Optimization] Logrotate output log as a relative path. [@leeyr338]
    • [Optimization] Patch to absolute paths' in starting scripts. [@clearloop]
    • [Optimization] Format the env.sh using ShellCheck. [@clearloop]

    Doc

    • [Doc] Add style guide of codes. [@kaikai1024]
    • [Doc] Add all contributors. [@kaikai1024]
    • [Doc] Add more template types of issue and pull request. [@kaikai1024]
    • [Doc] Add editorconfig file. [@kaikai1024]
    • [Doc] Add release guide doc. [@kaikai1024]
    • [Doc] Fix 404 error of CITAHub Docs. [@zhouyun-zoe] [@Keith-CY]
    • [Doc] Add roadmap and fix contributing docs of CITAHub. [@zhouyun-zoe]
    • [Doc] Change CITA slogan into blockchain kernel. [@zhouyun-zoe]
    • [Doc] Update the description of BlockTag. [@xiangmeiLu]
    • [Doc] Fix protocol upgrade doc. [@QingYanL]
    • [Doc] Set default website with zh-CN language. [@wuyuyue]

    更新日志

    升级说明

    v0.23.0 升级了 P2P 节点发现协议,与运行中的 v0.22.0 的 CITA 节点不兼容,因此,v0.23.0 的 CITA 节点与 v0.22.0 的 CITA 节点之间不能相互发现 。所以,在升级时,需要将网络中的所有节点同时升级成到 v0.23.0

    请参考 升级操作说明 升级节点。

    新特性描述

    v0.23.0 增加了两个 RPC 接口:

    • 获取软件版本号
    curl -X POST --data '{"jsonrpc":"2.0","method":"getVersion","params":[],"id":83}'
    
    • 获取节点信息
    curl -X POST --data '{"jsonrpc":"2.0","method":"peersInfo","params":[],"id":83}'
    

    重大更改

    在这个版本中,我们优化了bin/cita脚本的使用,通过 bin/cita help 查看更多信息。

    Framework

    • [Optimization] 升级 Rust 版本至 v1.34.0。[@yangby-cryptape] [@kaikai1024]
    • [Optimization] 升级 cita-sdk-js 版本。[@kaikai1024]
    • [Fix] 修正一些配置文件的路径。 [@ouwenkg]
    • [Feature] 日志输出可配置为控制台输出或输出到文件。[@Kayryu]

    Executor

    • [Optimization] 增加 VM 的测试用例。 [@ouwenkg]
    • [Optimization] 增加调用合约的单元测试。 [@kaikai1024]

    Auth

    • [Fix] 修复当未就绪时 Auth 可能崩溃的问题。[@leeyr338]

    Network

    • [Fix] 修复高 CPU 使用率的问题。[@leeyr338]
    • [Fix] 修复当达到最大连接数量时拒绝连接的问题。[@leeyr338]
    • [Optimization] 增加对 discovery 协议的测试。[@leeyr338]
    • [Optimization] 升级P2P版本,修复网络可能崩溃的问题。[@jerry-yu]

    Consensus

    • [Optimization] 默认关闭 NTP 服务。 [@kaikai1024]
    • [Fix] 修复由于共识列表未持久化导致可能不出块的问题。[@jerry-yu]

    RPC

    • [Feature] 增加getVersion接口。[@luqz]
    • [Feature] 增加peersInfo接口。[@leeyr338]
    • [Fix] 修复当toBlock过大时获取日志崩溃的问题。[@leeyr338]

    Script

    • [Optimization] 优化了 bin/cita 脚本的使用方式。[@clearloop]
    • [Fix] 在 Docker 中运行时将控制台输出重定向。[@yangby-cryptape]
    • [FIx] 消除在 Docker 中创建节点时的警告。[@ouwenkg]
    • [Fix] 当使用authorities选项时生成私钥文件。[@leeyr338]
    • [Optimization] 日志输出改为相对路径。[@leeyr338]
    • [Optimization] 修复启动脚本中的绝对路径。[@clearloop]
    • [Optimization] 使用ShellcCheck格式化env.sh。[@clearloop]

    Doc

    • [Doc] 增加 CITA 编程指南。[@kaikai1024]
    • [Doc] 增加贡献者。[@kaikai1024]
    • [Doc] 细化 issue 和 pull request 的模板。[@kaikai1024]
    • [Doc] 增加编辑器配置文件。[@kaikai1024]
    • [Doc] 增加发版指南。[@kaikai1024]
    • [Doc] 修复CITAHub中文档 404 的问题。[@zhouyun-zoe] [@Keith-CY]
    • [Doc] 增加了开发路线图并完善贡献文档。[@zhouyun-zoe]
    • [Doc] 修改 CITA 的定位描述。[@zhouyun-zoe]
    • [Doc] 优化对块标签的描述。[@xiangmeiLu]
    • [Doc] 修复升级协议文档。[@QingYanL]
    • [Doc] 设置网站的默认语言为简体中文。[@wuyuyue]
    Source code(tar.gz)
    Source code(zip)
    cita_ed25519_blake2b.tar.gz(39.16 MB)
    cita_secp256k1_sha3.tar.gz(40.16 MB)
    cita_sm2_sm3.tar.gz(39.56 MB)
    cita_src.tar.gz(1.88 MB)
  • v0.22.0(Mar 29, 2019)

    Sorry to keep you waiting for a long time! With the release of this version, we will present a new dish for you - "Braised Pork". This is a must-have traditional dish in South China for festival days and always has a good moral which means "ride on the crest of success".

    In this version, our P2P protocol has been released finally! You just need to fill in a known node in the network and P2P protocol will discover other nodes automatically instead of adding or deleting nodes through changing the network profile by yourselves.

    As a regular user of CITA, you must also be very concerned about the disk usage. This version will help you to save more than 90% of the disk space (Without no transactions, the daily disk growth will be reduced from 500M to 50M). This is an amazing optimization!

    Certainly, we also fixed some bugs that you have discovered or that you have not found. For example, JSON-RPC can't cross-domain access, Executor is inexplicably quit, and so on.

    In a word, Spring is coming and here we present this "Braised Pork". Hope all of you could enjoy it.


    抱歉让大家久等了!随着此次版本发布,我们将为大家呈上一道新菜——“扣肉”。“扣肉”是中国南方喜事中必备的一道传统大菜,又名“大展宏图”,寓意非凡。

    在这次的版本中,P2P 协议终于和大家见面了!你再也不用通过更改网络配置文件来添加或删除节点,只需填写一个网络中已知的节点,P2P 将自动发现网络中其它节点并加入这个网络。

    作为 CITA 的忠实用户,你也一定非常关心磁盘占用率的问题,这次的版本将为你节省 90% 以上的磁盘空间(在没有交易的情况下,每天的磁盘增长从 500M 降到 50M 以内),这是一个了不起的优化!

    当然,我们还修复了一些你已经发现的或者你没有发现的 Bug。比如说 JSON-RPC 不能跨域访问的问题,Executor 被莫名退出的问题等等。

    总之,喜事已至,为大家呈上“扣肉”这道新菜,敬请细细品尝。

    braised-pork

    Changelog

    Upgrade Note

    The v0.22.0 version of the node configurations is compatible with the v0.21 version. Means that you can run v0.22.0 directly using the v0.21 node configurations. However, due to the refactoring of the network, the nodes executed with v0.22.0 are incompatible with the original nodes (they have different node discovery and transfer protocols), so all nodes need to be upgraded to v0.22.0 at the same time.

    Following Upgrade Instructions to upgrade the nodes.

    New Feature Description

    The new feature of integrating P2P to network service, we add discovery of the network node when the original configuration is compatible. But we still need to make some changes to the network configuration file definition:

    The old version network.toml looks like:

    port = 4000
    enable_tls = true
    id_card = 9
    [[peers]]
        ip = "127.0.0.1"
        port = 4001
        common_name = "test1.cita"
    [[peers]]
        ip = "127.0.0.1"
        port = 4002
    

    In the version of v0.22.0, we will discard the item id_card and common_name.

    In the old version, when a new node is added to the network, we need to change the item [[peers]] in all nodes' network.toml to reconstruct the network. It is a very complicated operation. But in v0.22.0, the item [[peers]] means known nodes in the network, you can set only one [[peers]], then it can discovery all the network nodes through a discovery protocol.

    Framework

    • [Optimization] Replace std channel with crossbeam channel. @kaikai @Yaorong
    • [Optimization] Reconfigure the parameters of rocksdb, and this can greatly reduce the .sst files in the database. @jerry-yu

    Executor

    • [Fix] Executor crashes when receives staled BlockWithProof. @WPF @keroro520

    Network

    • [Feature] The network service is refactored by using the P2P protocol. @Yaorong

    Consensus

    • [Fix] Consensus goes into panic when timer min peek is extremely close to Instant::now(). @KaoImin

    RPC

    • [Optimization] Update test token info. @kaikai
    • [Feature] Add from to body of getBlockByNumber and getBlockByHash. @CL
    • [Fix] Fix the missing CORS header. @yangby

    Scripts

    • [Optimization] Format Python codes. @WPF

    Doc

    • [Doc] Update Rust SDK info in readme. @u2
    • [Doc] More info about automatic execution. @wangfh666
    • [Doc] Fix start CITA command in log management. @77liyan

    更新日志

    升级说明

    v0.22.0 版本的节点配置文件可以与 v0.21 的兼容,这意味着你可以直接使用 v0.21 的节点配置文件来启动v0.22.0。但是,由于在 v0.22.0 版本引入了 P2P 协议,这是与 v.21 运行的节点不兼容的 (两者采用了不同的节点发现和数据传输协议)。所以,在升级时,需要将网络中的所有节点同时升级成到 v0.22.0 。

    请参考 升级操作说明 升级节点。

    新特性描述

    在 v0.22.0,我们将 P2P 集成到了网络服务中,可以使节点之间能够自动发现。在设计上,我们对网络配置文件做了向前兼容。不过,与 v0.21 的配置文件相比,v0.22.0 的配置文件还是做了如下一些改变:

    v0.21 的配置文件如下:

    port = 4000
    enable_tls = true
    id_card = 9
    [[peers]]
        ip = "127.0.0.1"
        port = 4001
        common_name = "test1.cita"
    [[peers]]
        ip = "127.0.0.1"
        port = 4002
    

    在 v0.22.0 的配置文件中,我们将忽略 id_cardcommon_name 这两个配置项(如果你重新写配置文件,这两个配置项可以不写)。

    在 v0.21 以前的版本,如果你打算新添加一个节点到网络中的话,需要更改所有已经在运行的节点配置文件 network.toml 来重构建这个网络,这是一个很麻烦的操作!但在 v0.22.0 中,配置项中的 [[peers]] 代表的是网络中的已经节点,你只需要配置一个已经节点,它就能通过网络发现协议发现其它节点并自动加入到网络中。

    Framework

    • [Optimization] 使用 crossbeam channel 替换 std channel。@kaikai @Yaorong
    • [Optimization] 重新优化 rocksdb 的配置参数, 使数据库中的 .sst 文件大幅减少。 @jerry-yu

    Executor

    • [Fix] 修复因 staled BlockWithProof 而引起 executor 崩溃的问题。 @WPF @keroro520

    Network

    • [Feature] 使用 P2P 协议重构 network 服务。 @Yaorong

    Consensus

    • [Fix] 修复因时钟间隔非常接近当前时间而引起共识崩溃的问题。 @KaoImin

    RPC

    • [Optimization] 更新测试token的信息。 @kaikai
    • [Feature] 在 getBlockByNumbergetBlockByHashbody 中添加 from 字段。 @CL
    • [Fix] 修复 JSON-RPC 跨域访问问题。 @yangby

    Scripts

    • [Optimization] 格式化 Python 代码。 @WPF

    Doc

    • [Doc] 在 readme 中更新 Rust SDK 的信息。 @u2
    • [Doc] 为自动执行这个特性添加更多说明。 @wangfh666
    • [Doc] 在日志管理中修复 CITA 启动命令说明。@77liyan
    Source code(tar.gz)
    Source code(zip)
    cita_ed25519_blake2b.tar.gz(49.30 MB)
    cita_secp256k1_sha3.tar.gz(50.31 MB)
    cita_sm2_sm3.tar.gz(49.67 MB)
    cita_src.tar.gz(539.41 KB)
  • v0.21.1(Mar 15, 2019)

  • v0.20.3(Mar 11, 2019)

  • v0.21(Feb 19, 2019)

    After the Lunar New Year, we are pleased to announce that CITA v0.21 is coming!

    In this new version, we spent a lot of time on optimization. We refactored the executor module to make it more simple and readable, removed some useless dependencies and updated script to simplify user usage. Fixing bug is also essential. Moreover, We have added a few new features, such as contract auto-execution, which gives chain owners more flexible management, enable parsing hostname directly in network.toml.

    The most exciting news is that our new documentation site is online, providing a more detailed description and friendly interface to help everyone use CITA.


    农历中国年后,期待已久的新版本 CITA v0.21 来了 !

    在新版本中,我们花费很多时间在项目优化方面。重构了复杂难懂的 Executor 模块,去掉了一些无用的依赖,重写了部分脚本简化用户使用。 修复 bug 是必不可少的,与此同时我们也增加了少许新特性,例如合约自动执行功能,为链的拥有者提供了更灵活的管理方式。

    令人兴奋的是我们的新版文档网站上线了,提供了更详细的说明和更友好的界面来帮助大家使用 CITA,欢迎大家使用 CITA 来做一些酷酷的事情。

    Knife-Shaved-Noodles

    CHANGELOG

    CITA-Framework

    • [Optimization] Upgrade default rust toolchain to stable. @yangby
    • [Optimization] Remove useless dependencies. @yangby
    • [Optimization] Compact block Relay. @u2 @yangby

    Executor

    • [Feature] Automatic execution. @kaikai
    • [Optimization] Enable changing size of global cache in StateDB. @lhf
    • [Refactor] Decouple executor and postman. @keroro520 @WPF
    • [Configuration] Deprecate --genesis command option, instead place into executor.toml. @keroro520
    • [Configuration] Add argument about timestamp uint in executor.toml to compatibility with Ethereum.@zhiwei
    • [Optimization] Change state db type to ensure safe reference. @WPF
    • [Optimization] Remove unused code in state db. @WPF
    • [Optimization] Add more tests in executor and postman. @WPF
    • [Optimization] Add block priority in postman. @keroro520
    • [Refactor] Decouple global sysconfig from transactionOptions. @kaikai
    • [Optimization] Deprecate some dangerous clone usage in block and state. @keroro520
    • [Optimization] Remove cached latest hashes. @zhiwei
    • [Fix] Fix problem in zk privacy. @zhiwei
    • [Fix] Fix defects in snapshot. @keroro520

    Chain

    • [Optimization] Rename crypto enum. @zhiwei

    Auth

    • [Optimization] Introduce a quick check for history heights. @zhiwei

    Network

    • [Feature] Enable parsing hostname directly in network.toml. @driftluo
    • [Fix] Fix bug for network not send all msg. @jerry-yu

    Consensus

    • [Optimization] Add a min-heap timer. @KaoImin
    • [Optimization] Optimize wait time for proposal, prevote and precommit. @jerry-yu

    RPC

    • [Fix] The chainIdV1 in the response of getMetaData is hex string, so it should have 0x-prefix. @yangby
    • [Optimization] Split libproto operations from Jsonrpc. @zeroqn
    • [Feature] Add from field in Gettransaction rpc interface. @zeroqn
    • [Optimization] Upgrade hyper version and split Service and Server. @zeroqn
    • [Fix] Fix getFilterChanges interface, the hash array returned in the case of a block filter starts from the next block. @WPF

    System Contract

    • [Feature] Change default quotaPrice to 1000000. @WPF
    • [Optimization] Take interfaces and test contracts out as a dependent submodule. @kaikai

    Scripts

    • [Feature] Store their own address for each node. @yangby
    • [Configuration] Rename checkPermission to checkCallPermission. @kaikai
    • [Feature] Check the maximum number of consensus nodes. @zhiwei
    • [Configuration] Optimize usage of backup and clean command. @keroro520
    • [Optimization] Add exit info about creating genesis. @kaikai
    • [Feature] Support start 4 nodes in docker compose. @zhiwei

    Test

    • [Optimization] Split large CI jobs. @u2
    • [Optimization] Add test about amend operation. @zhiwei
    • [Optimization] Add test to ensure genesis compatibility. @kaikai
    • [Optimization] Add test about snapshot. @keroro520

    Doc

    Tool

    • [Optimization] Split util module into standalone crates. @yangby
    • [Refactor] Combing the snapshot logic and rewrite snapshot_tools. @keroro520

    更新日志

    CITA-Framework

    • [Optimization] 升级默认的 Rust toolchain 到稳定版 @yangby
    • [Optimization] 移除无用的依赖. @yangby
    • [Optimization] Compact block Relay. @u2 @yangby

    Executor

    • [Feature] 自动执行功能 @kaikai
    • [Optimization] StateDB 全局缓存大小可修改 @lhf
    • [Refactor] 接耦 executor 和 postman @keroro520 @WPF
    • [Configuration] 去掉 --genesis 命令行项,在 executor.toml 配置中指定 @keroro520
    • [Configuration] 在executor.toml 添加关于时间戳的参数,以保持对以太坊的兼容 @zhiwei
    • [Optimization] 为了保证安全引用改变 state db 类型 @WPF
    • [Optimization] 移除 state db 无用的代码. @WPF
    • [Optimization] executor 和 postman 中添加更多的测试 @WPF
    • [Optimization] postman 中添加块优先级 @keroro520
    • [Refactor] 从 transactionOptions 解耦出 global sysconfig @kaikai
    • [Optimization] Deprecate some dangerous clone usage in block and state. @keroro520
    • [Optimization] 移除最新哈希的缓存 @zhiwei
    • [Fix] 修复zk privacy 问题 @zhiwei
    • [Fix] 修复快照缺陷. @keroro520

    Chain

    • [Optimization] 重命名 crypto 枚举. @zhiwei

    Auth

    • [Optimization] 采用历史高度的快速检查 @zhiwei

    Network

    • [Feature] 在 network.toml 直接解析主机名. @driftluo
    • [Fix] 修复 network 没有发送所有消息的 bug @jerry-yu

    Consensus

    • [Optimization] 添加一个最小堆计时器 @KaoImin
    • [Optimization] 优化 proposal, prevote 和 precommit 的等待时间 @jerry-yu

    RPC

    • [Fix] getMetaData 返回的 chainIdV1 是一个字符串,应包含 0x前缀 @yangby
    • [Optimization] Split libproto operations from Jsonrpc. @zeroqn
    • [Feature] 在 Gettransaction rpc 接口中添加 from 字段 @zeroqn
    • [Optimization] 更新 hyper 版本并拆分 ServiceServer @zeroqn
    • [Fix] 修复 getFilterChanges 接口,当 block filter 从下一个块开始监听时返回包含当前块的哈希数组 @WPF

    System Contract

    • [Feature] 默认 quotaPrice 改为 1000000. @WPF
    • [Optimization] 合约接口和测试合约作为单独的 submodule @kaikai

    Scripts

    • [Feature] 保存每个节点的地址 @yangby
    • [Configuration] 重命名 checkPermissioncheckCallPermission @kaikai
    • [Feature] 检查共识节点的最大个数 @zhiwei
    • [Configuration] 优化 backupclean 命令的用法 @keroro520
    • [Optimization] 添加生成创世文件的错误信息 @kaikai
    • [Feature] 支持用 docker compose 启动四个节点. @zhiwei

    Test

    • [Optimization] 拆分大的 CI 任务. @u2
    • [Optimization] 添加关于 amend 操作的测试 @zhiwei
    • [Optimization] 添加创世文件兼容性的测试 @kaikai
    • [Optimization] 添加关于快照的测试 @keroro520

    Doc

    • [Doc] 完成系统合约接口的文档 @kaikai
    • [Doc] 更新 executor.toml 中的 crypto 类型和时间戳配置. @zhiwei
    • [Doc] cita-bft 共识更多细节描述 @KaoImin
    • [Doc] 更新 readme 中的 SDK 信息. @zhouyun-zoe
    • [Doc] 添加节点命令的描述 @WPF
    • [Doc] 添加一个新的 文档网站 @zhouyun-zoe

    Tool

    • [Optimization] 把 util 模块拆分为独立的 crates @yangby
    • [Refactor] 梳理快照逻辑并重写 snapshot_tools @keroro520

    Upgrade Note

    Older version upgrades the v0.21 version requires node configuration modifications.

    • Adding the following three configurations in each node's executor.toml

    The old version executor.toml:

    Journaldb_type = "archive"
    Prooftype = 2
    Grpc_port = 5000
    

    The new version executor.toml:

    Journaldb_type = "archive"
    Prooftype = 2
    Grpc_port = 5000
    Genesis_path = "./genesis.json"
    Statedb_cache_size = 5242880
    Eth_compatibility = false
    
    • Modifying cita-execuror configuration item in each node's forever.toml:

    The old version forever.toml:

    [[process]]
    Name = "cita-executor"
    Command = "cita-executor"
    Args = ["-g","genesis.json","-c","executor.toml"]
    Pidfile = ".cita-executor.pid"
    Respawn = 3
    

    The new version forever.toml:

    [[process]]
    Name = "cita-executor"
    Command = "cita-executor"
    Args = ["-c","executor.toml"]
    Pidfile = ".cita-executor.pid"
    Respawn = 3
    

    After completing the above modifications, following Upgrade Instructions.


    升级提示

    旧版本升级 v0.21 最新版本所需节点配置修改如下:

    • 新版本节点 executor.toml 添加如下三项配置:

    旧版本如下:

    journaldb_type = "archive"
    prooftype = 2
    grpc_port = 5000
    

    新版本如下:

    journaldb_type = "archive"
    prooftype = 2
    grpc_port = 5000
    genesis_path = "./genesis.json"
    statedb_cache_size = 5242880
    eth_compatibility = false
    
    • 新版本节点 forever.toml 关于 cita-execuror 配置项:

    旧版本如下:

    [[process]]
    name = "cita-executor"
    command = "cita-executor"
    args = ["-g","genesis.json","-c","executor.toml"]
    pidfile = ".cita-executor.pid"
    respawn = 3
    

    新版本如下:

    [[process]]
    name = "cita-executor"
    command = "cita-executor"
    args = ["-c","executor.toml"]
    pidfile = ".cita-executor.pid"
    respawn = 3 
    

    完成上述修改后,按照升级操作说明 操作即可。

    Source code(tar.gz)
    Source code(zip)
    cita_ed25519_blake2b.tar.gz(48.45 MB)
    cita_secp256k1_sha3.tar.gz(49.66 MB)
    cita_sm2_sm3.tar.gz(48.81 MB)
    cita_src.tar.gz(624.11 KB)
  • v0.19.1(Jan 31, 2019)

  • v0.20.2(Nov 27, 2018)

    CHANGELOG

    Fixed a bug that getting blockhash in solidity contract will get uncertain result.

    pragma solidity ^0.4.24;
    contract Test {
        bytes32 public hash;
    
        function testblockhash() public {
            hash = blockhash(block.number-1);
        }
    }
    

    Deploy this contract, then send transaction to call testblockhash. Once one of the nodes receives the transaction, the chain will stop growing.

    It is recommended that users of previous versions upgrade to the latest version.

    Source code(tar.gz)
    Source code(zip)
    bft-wal(3.90 MB)
    cita_ed25519_blake2b.tar.gz(49.47 MB)
    cita_secp256k1_sha3.tar.gz(50.69 MB)
    cita_sm2_sm3.tar.gz(49.86 MB)
    cita_src.tar.gz(1.21 MB)
  • v0.20(Nov 9, 2018)

    CHANGELOG

    We are pleased to announce that CITA v0.20 is released! In this season of eating crabs, we brought a new version of Mitten Crab. In this new version, we finally supported the fork! This means that our following version will always be forward compatible. At the same time, the new version also supports for TLS communication encryption based on self-signed certificates, so the communication between nodes will become more secure. In the new version, we further optimized the network, upgraded the related infrastructure (rustc compiler and rocksdb, etc.), fixed some bugs, and added a lot of documentation.

    Mitten Crab

    Compatibility

    • You need to upgrade all the nodes at the same time, follow the steps below:
      • Stop all the nodes;
      • Upgrade all the nodes;
      • Use the bft-wal tool to manually convert the log format of BFT wal;
      • Restart all the nodes.
      DATA_PATH=./test-chain/0/data ./bin/bft-wal
      

    Protocol

    Bootstrap

    • [Optimization] Force the use of --super_admin to configure the administrator account when using create_cita_config.py to create a new chain.

    Framework

    • [Upgrade] Upgrade rustc to nightly-2018-10-05, and update the docker image (latest image cita/cita-run:ubuntu-18.04-20181009).

    Executor

    • [Deprecated] Deprecate the use of delay_block_number.
    • [Refactor] Use BlockID explicitly in methods that require the use of BlockID instead of using a fuzzy Default value.
    • [Refactor] Refactor duplicated codes in both of Executor and Chain.
    • [Refactor] Refactor some unsafe codes.

    Chain

    • [Upgrade] Upgrade RocksDB.

    Auth

    • [Feature] Add the check of the version field in the transaction.

    Network

    • [Refactor] Refactor network client.
    • [Upgrade] Upgrade network server.
    • [Feature] Support for TLS communication encryption based on self-signed certificate.
    • [Fix] Parsing will stop immediately when the body of messages between nodes is too large.

    RPC

    • [Fix] Fix the problem that the website returned by the getMetaData interface is incorrect.
    • [Fix] The error information returned by the sendRawTransaction interface may be inconsistent when there are duplicate transactions.
    • [Feature] Add the pending type in the BlockTag type.
    • [Fix] The exit code caused by the configuration file exception is corrected to 2.

    System Contract

    • [Fix] Fix user authentication problem inside the group when the permission management is enabled.

    Test

    • [Optimization] Optimize the efficiency of system contract testing.

    Doc

    • [Docs] Add system contract interface documents.
    • [Docs] Add more English document.
    Source code(tar.gz)
    Source code(zip)
    bft-wal(3.90 MB)
    cita_ed25519_blake2b.tar.gz(49.48 MB)
    cita_secp256k1_sha3.tar.gz(50.69 MB)
    cita_sm2_sm3.tar.gz(49.86 MB)
    cita_src.tar.gz(1.21 MB)
  • v0.19(Sep 30, 2018)

    Kind of late... But happy Mid-Autumn Festival! Believe you all having had a wonderful time with family~

    This weekend, we brought a new version, named Osmanthus Cake(桂花糕 in Chinese) to everyone!

    In this version, we add several system contracts to help you better manage the system. One is called emergency braking. Once the emergency braking mode is activated, only the transactions sent by the admin account can be accepted by the chain. It can be used in some extreme conditions, such as the operators of the chain need to carry out some upgrades and maintenance without others to interfere.

    Another is the version manager, which is prepared for the subsequent fork of CITA to solve the data compatibility problem.

    We also add the quota price manager contract according to the feedback from customers and the market. Now, quota price can be set by the admin account in this version when building a public permissioned blockchain, check the document for more details.

    Moreover, we put lots of efforts to improve CITA quality and stability in this month - more comprehensive testing under production environment and more detailed documentation.

    Egg Fried Rice

    CHANGELOG

    CITA-Framework

    • [refactoring] Improve the user experience of CITA scripts

    Executor

    • [feature] Support superadmin to set quota price
    • [feature] Support that the block reward can be chosen to return to the certain address
    • [optimization] SysConfig reload based on whether there is a parameter change
    • [fix] Fix loading problem of SystemConfig configuration
    • [fix] Fix the situation that the transfer cannot be successful if the charge mode is enabled
    • [fix] Fix the situation that account balance may overflow when transferring in charge mode

    Chain

    • [feature] Add the cache_size entry to the configuration file

    Auth

    • [feature] Modify the judgment logic of the transaction under emergency braking situation

    RPC

    • [feature] GetMetaData support query economic model and protocol version number
    • [optimization] Modify some ErrorMessage

    Contract

    • [feature] Isolate some permissions (send_tx, create_contract) to make them can be set separately in configuration
    • [fix] Eliminate compilation warnings for system contracts
    • [fix] Eliminate errors and warnings detected by Solium on system contracts
    • [feature] Add Emergency braking system contract
    • [feature] Add version control system contract
    • [feature] Add quota price manager system contract

    Test

    • [ci] Increase the specification check of system contracts
    • [ci] Add clippy for code review
    • [optimization] Clean up smart contract unit tests that are no longer maintained
    • [ci] Fix the problem of sporadic stuck in JSON Mock test

    Doc

    • [doc] Replace txtool with cita-cli in document
    • [doc] Modify ‘amend’ operation related documents
    Source code(tar.gz)
    Source code(zip)
    cita_blake2b_ed25519.tar.gz(44.59 MB)
    cita_secp256k1_sha3.tar.gz(45.81 MB)
    cita_sm2_sm3.tar.gz(44.95 MB)
    cita_src.tar.gz(1.15 MB)
  • v0.18(Aug 30, 2018)

    We are pleased to announce the release of CITA v0.18!

    As the v1.0 release is getting closer, the focus is increasingly on ensuring the stability and reliability of CITA services. During this month's development, we pay lots of efforts on destructive testing to ensure that CITA can provide more reliable services.

    In terms of feature, we further improved the usability of the cross-chain by adding the sidechain exit mechanism, in which two RPC interfaces were added to cross-check the data of the side chain.

    We also add a system contract to do the batch transaction. when you want to make multiple calls to other contracts and the calls need to be in a strict order, this system contract can be used to ensure that the order of the transactions is exactly the same as expected.

    Cryptographic Algorithm of CITA also made some changes. After combing the dependencies, we replace the sha3 algorithm of the C library with Keccak. Library of China Cryptographic Algorithm is also replaced by a new rust implementation with better performance, completed by a collaborative effort between the Cryptape Technology LLC. and BEIHANG KNOC LAB.

    v0.18 remains compatible with v0.17. So you can upgrade from v0.17 to v0.18 by following the instructions below.

    1. Compared to v0.17, the v0.18 system contract has been modified. Users can choose to upgrade only binary, that is, replace all executable files in the bin folder in the distribution directory.
    2. scripts/config_tool/config_example/auth.toml added wal_enable, default value is false
    3. For existing nodes, add a line to each node's auth.toml configuration file: wal_enable = false

    ps. This release is converted from Egg Fried Rice which is v0.18 release master's favorite homemade meal! Egg Fried Rice

    Change Log:

    CITA-Framework

    1. [feature] Replaced sha3 with Keccak algorithm library
    2. [feature] New Library of China Cryptographic Algorithm
    3. [optimize] Remove useless code and dependencies
    4. [optimize] Add more CI

    Executor

    1. [fix] Fix potential deadlock, multi-threaded data inconsistency
    2. [fix] Fix state machine state homing problem
    3. [fix] Fix Transaction decode logic error
    4. [fix] Fix blacklist problems that accounts cannot be removed from blacklist automatically when they come to have tokens
    5. [optimize] Add the monitor of chain status
    6. [feature] Modify some log levels
    7. [fix] Automatic synchronization when the Executor state is inconsistent with Chain
    8. [optimize] Optimize state synchronization speed between Executor and Chain
    9. [feature] Add the acquisition and verification of the state certificate

    Chain

    1. [optimize] Add a notification of Executor status
    2. [fix] Fix the problem about saving the latest proof when syncing
    3. [fix] Fix some usability issues in the snapshot

    Network

    1. [refactoring] Refactoring synchronization logic
    2. [feature] Output status log
    3. [fix] Close the connection to the deleted node when the Network configuration file is hot updated

    Bft

    1. [fix] Fix the problem about saving temporary proof

    Auth

    1. [feature] Transaction's value field validation is modified to be required to U256 or [u8;32], otherwise, an invalid value is returned.
    2. [fix] Transaction's to field validation is more strict, passing invalid parameters will return an error directly

    RPC

    1. [feature] Separate the JSON-RPC type definition library for the client to use

    System Contract

    1. [feature] Add cross-chain management contract to the process of state proof
    2. [feature] Supports batch transaction

    Doc

    1. [feature] Update the cross-chain document with more description about sidechain exit mechanism.
    Source code(tar.gz)
    Source code(zip)
    cita_blake2b_ed25519.tar.gz(41.14 MB)
    cita_secp256k1_sha3.tar.gz(42.22 MB)
    cita_sm2_sm3.tar.gz(41.44 MB)
    cita_src.tar.gz(1.97 MB)
  • v0.17(Jul 18, 2018)

    Welcome to CITA v0.17!

    This release represents a major milestone on the road to CITA v1.0 targeted for release in October 2018! Why do we say so?

    In the first place, CITA v0.17 introduces several significant new features. The biggest feature in v0.17 is the support for the token contract, which means you can choose to introduce economics incentives when building your own network!

    Another notable new feature is the support for the snapshot. CITA provided a tool to backup blockchain data by taking the snapshot, which can help you to re-sync the blockchain data in a short time. This largely increases the resiliency and reliability of CITA.

    Moreover, lots of our work were focused on bug fixes to improve CITA quality in recent two months, which demonstrates v0.17 would be our most stable version so far!

    ps. The most delicious food I can imagine is the food enjoyed with family. So this release is converted from a Chinese traditional homemade food - Flos Sophorae Pancake.

    Orient Express

    CHANGELOG

    CITA-Framework

    • [feature] Enable rabbitmq web management
    • [fix] Merge env_cn.sh into env.sh
    • [feature] Add economical model support Public-Permissioned Blockchain

    Executor

    • [fix] Fix EVM lost builtin
    • [fix] Fix Executor Result cache
    • [feature] Support contract amend, superadmin can modify the code and data of the contract

    Chain

    • [fix] Fix nodes concurrent start failed
    • [fix] Fix block number go down
    • [fix] Fix authorities list shuffle test
    • [feature] Support set value in genesis
    • [fix] Fix infinite loop triggered by sync block

    Auth

    • [refactoring] Refactor auth

    Consensus

    • [fix] Fix consensus stop after restart all nodes

    Contract

    • [fix] Fix quota check
    • [fix] Fix smart contract static call bug

    RPC

    • [fix] Rename JSON-RPC methods.
    • [Refactoring] Refactoring JSON-RPC types.

    Test

    • [optimize] Speed up CI
    • [optimize] Add solc unit test

    Doc

    • [doc] Support multiversion
    • [doc] Adjust table of contents
    Source code(tar.gz)
    Source code(zip)
    cita_blake2b_ed25519.tar.gz(37.75 MB)
    cita_secp256k1_sha3.tar.gz(38.71 MB)
    cita_src.tar.gz(1.73 MB)
  • v0.16(May 15, 2018)

    CITA v0.16 is coming! Among the new changes we introduced in this release, the most shinny one is a simple cross-chain protocol, which will facilitate privacy and improve perforamce by side-chain method. Find more details in document here.

    We add experimental support to Go executor, with which users can write and run native contract in Go!

    An global account cache is added to improve the performance of executor, which substantially improve the transaction execution performance by nearly 15%.

    This release is a preparation for public permissioned blockchain release on our roadmap.

    ps. This release is converted from kottu roti, a popular Sri Lankan street food!

    Orient Express

    CHANGELOG

    CITA-Framework

    • [feature] Simple cross-chain protocol.
    • [feature] Add chain_id for different CITA network, to prevent cross chain from replay attack.
    • [feature][WIP] Prepare for public permissioned blockchain.

    Executor

    • [feature] Add global account cache.

    Chain

    • [optimize] Optimize block synchronization.
    • [fix] Fix pre-execution bugs.
    • [fix] Fix receipt error types.

    Auth

    • [fix] Fix transaction broadcasting.
    • [fix] Fix transaction authentication.

    Consensus

    • [fix] Fix bft process in some critical conditions.

    Contract

    • [feature] Support group-based user management.

    Doc

    • [doc] Add more English documents.
    Source code(tar.gz)
    Source code(zip)
    cita_blake2b_ed25519.tar.gz(48.02 MB)
    cita_manual.tar.gz(1.10 MB)
    cita_secp256k1_sha3.tar.gz(49.47 MB)
    cita_src.tar.gz(1.17 MB)
  • v0.15(Mar 30, 2018)

    CITA v0.15 is coming!

    The first thing is document. We have a New document site include all the things you want to know about CITA.

    The second thing is docker. Run CITA will be very easy if you use docker. See more details in document site.

    We also have other improvements, such as EVM, SDK etc. Please check the CHANGLOG as below.

    ps. This release is converted from Orient Express's hand-pulled beef noodles!

    Orient Express

    CHANGELOG

    CITA Framework

    • [refactoring] Refactor libproto. Send message between services will be more efficient and easy.

    Executor

    • [feature] Upgrade EVM to support new instructions. Such as RETURNDATACOPY, RETURNDATASIZE, STATICCALL and REVERT.

    Chain

    • [feature] Store contract ABI into Account. So SDK can generate Java/js code even without souce code of contract.

    JSONRPC

    • [refactoring] Improve code quality.

    System Contracts

    • [feature] Improve role-based permission contract.

    Document

    Toolchain

    • [tool] New docker images CITA. We recommend to use docker now and we supply some scripts to simplify this task.
    Source code(tar.gz)
    Source code(zip)
    cita_blake2b_ed25519.tar.gz(41.05 MB)
    cita_manual.tar.gz(770.03 KB)
    cita_secp256k1_sha3.tar.gz(42.27 MB)
    cita_src.tar.gz(1.00 MB)
  • v0.13(Feb 1, 2018)

    CITA v0.13 comes with something new in this last release of Rooster year!

    Transaction execution is extracted out from Chain service, executors like EVM and native are running in their own processes now, which means better CPU & disk utilization. With independent executor, it's easy to swap in any program written in any language to process transactions. The next step is internal sharding, stay tuned.

    As CITA grows we found many inefficiencies in design, one of them is in the protobuf message format used by all services. Refactoring on them is still under way.

    The last exciting change comes from our partner iPaynow. Cryptape & iPaynow has been collaborating on account model based zero-knowledge proof transaction for a while. By using ZKP private transaction users are able to send confidential transactions on blockchain, with no leakage of transaction's amount etc. ZKP transaction is still an experimental feature, use it at your own risk.

    Do you know what's the chinese zodiac of 2018?

    CHANGELOG

    CITA Framework

    Chain

    • [fix] fix memory leaking problem

    Auth

    • [refactoring] Improve code quality
    • [fix] fix txpool transaction deletion bug

    JSONRPC

    • [doc] update documents
    • [fix] fix transaction query bug

    System Contracts

    • [feature] Improve role-based permission contract
    • [feature] Support read-only configurations

    Toolchain

    • [tool] Update txtool dependencies
    • [tool] Update admintool
    • [tool] Unify configurations to toml format
    Source code(tar.gz)
    Source code(zip)
    cita-0.13.tar.gz(1.02 MB)
  • v0.12(Jan 18, 2018)

    Release v0.12 includes a lot of refactoring and optimizations, which make CITA even more faster and stable.

    Transaction pool and related transaction preprocessing has been extracted out to be a new microservice Auth. Now transaction preprocessing can be parallelized, boost system throughput to a new level.

    More API including filter* family and WebSocket protocol support has been added to JSONRPC, to make blockchain application development more easier.

    A role-based user and permission management system has been implemented for better access control.

    CHANGELOG

    CITA Framework

    • [feature] Extract transaction pool and transaction preprocessing to new Auth service.
    • [feature] Support log rotating.
    • [refactoring] Move consensus service to its own repository.
    • [optimization] Use clippy to check code quality.

    Consensus

    • [optimization] Optimize voting process to reach consensus faster.
    • [optimization] Optimize voting messages to reduce network cost.

    Chain

    • [feature] Add chain resource management.
    • [optimization] Preprocess consensus proposal.
    • [optimization] Reduce latency in consensus message handling.
    • [optimization] Optimize block processing.
    • [optimization] Optimize quota management.
    • [optimization] Optimize native contract execution.

    JSONRPC

    • [refactoring] Refactor service, rewrite to event-driven model.
    • [feature] Support WebSocket protocol.
    • [feature] Support filter* API.
    • [doc] Update docs.

    Network

    • [refactoring] Refactor code
    • [feature] New block synchronization protocol.
    • [optimization] Optimize network message lock.
    • [fix] fix config file watch.

    System Contracts

    • [feature] Add role-based user and permission management.

    Toolchain

    • [tool] Support more than 16 local variables in solidity function.
    • [tool] Deployment tool for single node environment.
    • [tool] Added new tool cita-forever to monitor microservices.
    Source code(tar.gz)
    Source code(zip)
Marvin-Blockchain-Rust: A Rust-based blockchain implementation, part of the Marvin blockchain project.

Marvin Blockchain - Rust Implementation Welcome to the Rust implementation of the Marvin Blockchain. This project is part of a comparative study on bu

João Henrique Machado Silva 3 Sep 6, 2024
High Performance Blockchain Deserializer

bitcoin-explorer bitcoin_explorer is an efficient library for reading bitcoin-core binary blockchain file as a database (utilising multi-threading). D

Congyu 18 Dec 22, 2022
An extremely high performance matching engine written in Rust.

Galois Introduction Galois is an extremely high performance matching engine written in Rust, typically used for the crypto currency exchange service.

UINB Tech 66 Jan 7, 2023
An easy-to-use, high-performance Interledger implementation written in Rust

Interledger implementation in Rust ?? Requirements All crates require Rust 2018 edition and are tested on the following channels: stable Connecting to

Interledger.rs 184 Dec 13, 2022
An open source Rust high performance cryptocurrency trading API with support for multiple exchanges and language wrappers. written in rust(🦀) with ❤️

Les.rs - Rust Cryptocurrency Exchange Library An open source Rust high performance cryptocurrency trading API with support for multiple exchanges and

Crabby AI 4 Jan 9, 2023
Glommio Messaging Framework (GMF) is a high-performance RPC system designed to work with the Glommio framework.

Glommio Messaging Framework (GMF) The GMF library is a powerful and innovative framework developed for facilitating Remote Procedure Calls (RPCs) in R

Mohsen Zainalpour 29 Jun 13, 2023
An open source, high performance limit order book for the Seaport smart contracts. Implemented in Rust using ethers-rs, this offers a turnkey option for digital asset marketplaces.

Quay Quay is an open source, high performance backend for the Seaport smart contracts. The project is implemented in Rust, using Postgres as a storage

Valorem Labs Inc. 169 Jun 23, 2023
A high performance Remote Procedure Call system.

A high performance Remote Procedure Call (RPC) system. Usage Add this to your Cargo.toml file. [dependencies] frpc = { git = "https://github.com/nurmo

Nur 5 Jul 28, 2023
Y-Octo is a high-performance CRDT implementation compatible with yjs

Y-Octo Y-Octo is a high-performance CRDT implementation compatible with yjs. Introduction Y-Octo is a tiny, ultra-fast CRDT collaboration library buil

null 79 Oct 5, 2023
A high-performance, highly compatible EVM Inscriptions Indexer

Insdexer A high-performance, highly compatible EVM Inscriptions Indexer by Rust. An accessible and complete version of the documentation is available

null 105 Mar 17, 2024
The free password manager for power users

The free password manager for power users

null 312 Oct 22, 2022
The Nervos CKB is a public permissionless blockchain, and the layer 1 of Nervos network.

Nervos CKB - The Common Knowledge Base master develop About CKB CKB is the layer 1 of Nervos Network, a public/permissionless blockchain. CKB uses Pro

Nervos Network 1k Dec 30, 2022
The Phala Network Blockchain, pRuntime and the bridge.

Phala Blockchain Phala Network is a TEE-Blockchain hybrid architecture implementing Confidential Contract. This repo includes: node/: the main blockch

Phala Network 314 Jan 6, 2023
Substrate: The platform for blockchain innovators

Substrate · Substrate is a next-generation framework for blockchain innovation ?? . Trying it out Simply go to substrate.dev and follow the installati

Parity Technologies 7.7k Dec 30, 2022
An extensible open-source framework for creating private/permissioned blockchain applications

Exonum Status: Project info: Community: Exonum is an extensible open-source framework for creating blockchain applications. Exonum can be used to crea

Exonum 1.2k Jan 1, 2023
Local blockchain for Free TON DApp development and testing.

TON OS Startup Edition Local blockchain for Free TON DApp development and testing. Have a question? Get quick help in our channel: TON OS Startup Edit

TON Labs 35 Jan 2, 2023
A value transfer bridge between the Monero blockchain and the Secret Network.

Secret-Monero-Bridge A value transfer bridge between the Monero blockchain and the Secret Network. Proof-of-Concept Video Demonstration: https://ipfs.

null 28 Dec 7, 2022
C++ `std::unique_ptr` that represents each object as an NFT on the Ethereum blockchain

C++ `std::unique_ptr` that represents each object as an NFT on the Ethereum blockchain

null 1.9k Dec 28, 2022
HyperCube is a free and open source blockchain project for everyone to use.

XPZ Public Chain HyperCube is a free and open source blockchain project for everyone to use. 日本語 简体中文 正體中文 HyperCube Wiki Wha is HyperCube HyperCube i

null 949 Dec 31, 2022