English | 简体中文

CITA is a fast and scalable blockchain kernel for enterprises

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.

  • English
  • Chinese

Document

  • English
  • Chinese

API/SDK

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

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

  • Java
  • JavaScript
  • Swift
  • Ruby
  • Rust

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

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

Credits

CITA is created by Rivtower team with :heart:.

Contact us

Email: [email protected]

Contributors

Thanks goes to these wonderful people (emoji key):


kaikai
💻

zhangyaning
💻

Boyu Yang
💻

zhiwei
💻

漂流
💻

AsceticBear
💻

yubo
💻

zhouyun-zoe
📖

Bicheng Gao
💻

lhf
💻

LinFeng Qian
💻

keroro
💻

Yaorong
💻

suyanlong
💻

Chen Yu
💻

zhangsoledad
💻

hezhengjun
💻

zeroqn
💻

urugang
💻

Jiang Jinyang
💻

Jan Xie
💻

Sun Lei
💻

hyl
💻

Terry Tai
💻

Ke Wang
💻

Mohanson
💻

quanzhan lu
💻

duanyytop
💻

clearloop
💻

nokodemion
💻

Rain Chen
💻

Daogang Tang
💻

xianliang jiang
🐛

Nov
💻

Rai Yang
💻

Wenchao Hu
💻

kaiyu
💻

James Chen
💻

rev-chaos
💻

Eason Gao
💻

Eric Zhang
💻

Jun Jiang
💻

PRIEWIENV
💻

The Gitter Badger
💻

CL
💻

programmer-liu
💻

Jiayu Ye
💻

liyanzi
🐛

JiaYi
📖

Timmy Zhang
🤔

Wu Yuyue
📖

xiangmeiLu
📖

mingxiaowu
🐛

wangfh666
🐛

travis-joe
📖

UDLD
📖

Yieazy
💻

ShenLei
💻

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

Versions

Find the latest versions by id

v0.24.3 - Oct 10, 2020

  • [Fix] Fix sync block slow
  • [Fix] Fix log error

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

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

v0.25.2 - Oct 24, 2019

  • [Fix] Fix panic when transaction's data not enough
  • [Fix] Fix duplicate transaction hash in block

v0.24.2 - Oct 24, 2019

  • Fix Executor's panic when vm memery offset greater then size
  • Fix duplicate transaction hash in block.

v1.0.0 - Sep 09, 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 库。

yuebing-010.jpg

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]

v0.25.1 - Aug 01, 2019

Fix the issue about showing the wrong version. Check the details at #747

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 长久以来的支持。

brown-sugar-osmanthus-ice-powder.jpg?raw=true

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]

v0.24.1 - Jun 14, 2019

Optimize memory usage in cita-executor. Check the details at [#588]

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]

v0.23.1 - May 05, 2019

Fix the issue about showing the wrong version. Check the details at [#538]

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:

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 接口:

  • 获取软件版本号

  • 获取节点信息

重大更改

在这个版本中,我们优化了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]

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:

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 的配置文件如下:

在 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

v0.21.1 - Mar 15, 2019

Fix the issue about high CPU usage caused by too many sst files. Check the details at #206


修复了由于 sst 文件过多导致的 CPU 占用过高的问题。 更多细节请查看 #206

v0.20.3 - Mar 11, 2019

Fix the issue about high CPU usage caused by too many sst files. Check the details at #206


修复了由于 sst 文件过多导致的 CPU 占用过高的问题。 更多细节请查看 #206

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:

The new version executor.toml:

  • Modifying cita-execuror configuration item in each node's forever.toml:

The old version forever.toml:

The new version forever.toml:

After completing the above modifications, following Upgrade Instructions.


升级提示

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

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

旧版本如下:

新版本如下:

  • 新版本节点 forever.toml 关于 cita-execuror 配置项:

旧版本如下:

新版本如下:

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

v0.19.1 - Jan 31, 2019

Fix the bug of version 0.19 that ordinary nodes can't sync blocks from the consensus nodes with a special situation.

Check the details at issue 201.

v0.20.2 - Nov 27, 2018

CHANGELOG

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

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.

v0.20.1 - Nov 15, 2018

CHANGELOG

Fixed a bug that Network could not process domain names.

v0.20 - Nov 09, 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.

Protocol

  • [Feature] Add the support for v1 protocol. More details can be found in the document: Protocol Upgrade From V0 to V1.

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.

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

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.

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

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.

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.

v0.13 - Feb 01, 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

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.

v0.10 - Oct 26, 2017

Information - Updated May 20, 2022

Stars: 1.3K
Forks: 213
Issues: 8

Repositories & Extras

Wagyu Etherum blockchain ledger and wallet in Rust

Cross platform ether wallet generator that makes automated creation of crypto wallets easy

Wagyu Etherum blockchain ledger and wallet in Rust

Reference implementation of the Stacks blockchain in Rust

Reference implementation of the Proof of Transfer (PoX) mining that anchors to Bitcoin security

Reference implementation of the Stacks blockchain in Rust

This repository contains core Rust and Haskell libraries used by various

components of the Concordium blockchain, as well as some tools used for testing

This repository contains core Rust and Haskell libraries used by various

Blockchain Commons torgap-sig-cli-rust

torgap-sig-cli-rust is a fork of Minisign, with support for

Blockchain Commons torgap-sig-cli-rust

A Blockchain implementation in Rust

MIT (c) Doublify Technologies

A Blockchain implementation in Rust

Diem core repo for Rust

Diem is a user focused blockchain application, that has increased in popularity significantly in the crypto / blockchain space

Diem core repo for Rust

Rust implementation of the Inter-Blockchain Communication (IBC) protocol

This project comprises primarily four crates:

Rust implementation of the Inter-Blockchain Communication (IBC) protocol

A simple blockchain example written in Rust:

Defines data structures to model a minimum blockchain

A simple blockchain example written in Rust:

A Blockchain implementation in pure Rust

Below find an example usage of the library:

A Blockchain implementation in pure Rust
Facebook Instagram Twitter GitHub Dribbble
Privacy