All notable changes to this project will be documented in this file. And this project adheres to Semantic Versioning.
v0.25.1 - 2019-07-31
Fix the issue about showing the wrong version. Check the details at [#747]
v0.25.0 - 2019-06-28
- [Optimization] Bump Rust toolchain to
1.34.2
. @kaikai1024 - [Optimization] Use Rust 2018 edition. @kaikai1024 @ouwenkg
- [Optimization] Use
cita-logger
crate. @kaikai1024
- [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
- [Fix] Fix the import path. @ouwenkg
- [Optimization] Use
protocol version
instead of version. @kaikai1024 - [Optimization] Rename
emergency brake
toemergency intervention
. @kaikai1024
- [Refactor] Rewrite the tool of creating genesis using Rust. @ouwenkg
- [Refactor] Refactor scripts of integrate test. @kaikai1024
- [Optimization] Add quota unit test in travisCI. @ouwenkg
- [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
todefault_config
. @kaikai1024
- [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 - 2019-06-14
Fix the issue about memory leak in cita-executor. Check the details at #588
v0.24.0 - 2019-05-18
- [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
- [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
- [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
- [Fix] Fix the bug that getLogs would break down the chain when
toBlock
is very large. @leeyr338 - [Optimization] Update log in
forward
ofcita-chain
. @ouwenkg - [Fix] Move
chain_version
intoBlockSysConfig
. @ouwenkg
- [Fix] Fix 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
- [Fix] Fix service start error when
.*.pid
files exist. @leeyr338
- [Fix] Fix panic in snapshot path. @ouwenkg
- [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
- [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] 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. @leeyr338
v0.23.1 - 2019-05-05
Fix the issue about showing the wrong version. Check the details at [#538]
v0.23.0 - 2019-04-26
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.
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}'
- [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
- [Optimization] Integrate vm-test. @ouwenkg
- [Optimization] Add unit test of calling contract. @kaikai1024
- [Fix] Auth crashes when it is not ready. @leeyr338
- [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
- [Optimization] Set the default NTP service to false. @kaikai1024
- [Fix] Not generate block. @jerry-yu
- [Feature] Add
getVersion
interface. @luqz - [Feature] Add
peersInfo
interface. @leeyr338 - [Fix] Get logs break down the chain when
toBlock
very large. @leeyr338
- [Optimization] Installation && Exectution Optimization: new usage of 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] Log rotate output log as a relative path. @leeyr338
- [Optimization] Patch to absolute paths' in starting scripts. @clearloop
- [Optimization] Format the
env.sh
usingShellCheck
. @clearloop
- [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.22.0 - 2019-03-29
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.
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.
- [Optimization] Replace std channel with crossbeam channel. @kaikai1024 @leeyr338
- [Optimization] Reconfigure the parameters of rocksdb, and this can greatly reduce the
.sst
files in the database. @jerry-yu
- [Fix] Executor crashes when receives staled BlockWithProof. @ouwenkg @keroro520
- [Fix] Auth crashes when it is not ready. @leeyr338
- [Feature] The network service is refactored by using the p2p protocol. @leeyr338
- [Fix] Consensus goes into
panic
when timer min peek is extremely close to Instant::now(). @KaoImin
- [Optimization] Update test token info. @kaikai1024
- [Feature] Add
from
tobody
ofgetBlockByNumber
andgetBlockByHash
. @classicalliu - [Fix] Fix the missing CORS header. @yangby-cryptape
- [Optimization] Format Python codes. @ouwenkg
- [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.21.1 - 2019-03-15
Fix the issue about high CPU usage caused by too many sst files. Check the details at #206
v0.20.3 - 2019-03-11
Fix the issue about high CPU usage caused by too many sst files. Check the details at #206
v0.21.0 - 2019-02-19
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.
- [Optimization] Upgrade default rust toolchain to stable. @yangby-cryptape
- [Optimization] Remove useless dependencies. @yangby-cryptape
- [Optimization] Compact block Relay. @u2 @yangby-cryptape
- [Feature] Automatic execution. @kaikai1024
- [Optimization] Enable changing size of global cache in StateDB. @EighteenZi
- [Refactor] Decouple executor and postman @keroro520 @ouwenkg
- [Configuration] Deprecate
--genesis
command option, instead place intoexecutor.toml
. @keroro520 - [Configuration] Add argument about timestamp uint in
executor.toml
to compatibility with Ethereum.@rink1969 - [Optimization] Change state db type to ensure safe reference. @ouwenkg
- [Optimization] Remove unused code in state db. @ouwenkg
- [Optimization] Add more tests in executor and postman. @ouwenkg
- [Optimization] Add block priority in postman. @keroro520
- [Refactor] Decouple global sysconfig from transactionOptions. @kaikai1024
- [Optimization] Deprecate some dangerous clone usage in block and state. @keroro520
- [Optimization] Remove cached latest hashes. @rink1969
- [Fix] Fix problem in zk privacy. @rink1969
- [Fix] Fix defects in snapshot. @keroro520
- [Optimization] Rename crypto enum. @rink1969
- [Optimization] Introduce quick check for history heights. @rink1969
- [Feature] Enable parsing hostname directly in network.toml. @driftluo
- [Fix] Fix bug for network not send all msg. @jerry-yu
- [Optimization] Add a min-heap timer. @KaoImin
- [Optimization] Optimize wait time for proposal, prevote and precommit. @jerry-yu
- [Fix] The 'chainIdV1' in the response of getMetaData is hex string, so it should have 0x-prefix. @yangby-cryptape
- [Optimization] Split libproto operations from Jsonrpc. @zeroqn
- [Feature] Add
from
field inGettransaction
rpc interface. @zeroqn - [Optimization] Upgrade hyper version and split
Service
andServer
. @zeroqn - [Fix] Fix
getFilterChanges
interface, the hash array returned in the case of a block filter starts from the next block. @ouwenkg
- [Feature] Change default quotaPrice to 1000000. @ouwenkg
- [Optimization] Take interfaces and test contracts out as a dependent submodule. @kaikai1024
- [Feature] Store their own address for each node. @yangby-cryptape
- [Configuration] Rename checkPermission to checkCallPermission. @kaikai1024
- [Feature] Check the maximum number of consensus nodes. @rink1969
- [Configuration] Optimize usage of backup and clean command. @keroro520
- [Optimization] Add exit info about creating genesis. @kaikai1024
- [Feature] Support start 4 nodes in docker compose. @rink1969
- [Optimization] Split large ci jobs. @u2
- [Optimization] Add test about amend operation. @rink1969
- [Optimization] Add test to ensure genesis compatibility. @kaikai1024
- [Optimization] Add test about snapshot. @keroro520
- [Doc] Complete the doc of system contract interface. @kaikai1024
- [Doc] Update crypto type and timestamp configuration in executor.toml. @rink1969
- [Doc] More detail statements about cita-bft consensus. @KaoImin
- [Doc] Update sdk info in readme. @zhouyun-zoe
- [Doc] Add node command description. @ouwenkg
- [Doc] Build a new documentation website. @zhouyun-zoe
- [Optimization] Split util module into standalone crates. @yangby-cryptape
- [Refactor] Combing the snapshot logic and rewrite snapshot_tools. @keroro520
v0.19.1 - 2019-01-31
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 #201.
v0.20.2 - 2018-11-27
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.
v0.20.1 - 2018-11-15
Fixed a bug that Network could not process domain names.
v0.20.0 - 2018-11-09
- This new version changes the log format of BFT wal. So it is necessary for each consensus node to be upgraded one by one (the interval should be more than 30s).
- If 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
- [Feature] Add the support for
v1
protocol. More details can be found in the document: Protocol Upgrade From V0 to V1.
- [Optimization] Force the use of
--super_admin
to configure the administrator account when usingcreate_cita_config.py
to create a new chain.
- [Upgrade] Upgrade rustc to
nightly-2018-10-05
, and update the docker image (latest imagecita/cita-run:ubuntu-18.04-20181009
).
- [Deprecated] Deprecate the use of
delay_block_number
. - [Refactor] Use
BlockID
explicitly in methods that require the use ofBlockID
instead of using a fuzzy Default value. - [Refactor] Refactor duplicated codes in both of Executor and Chain.
- [Refactor] Refactor some unsafe codes.
- [Upgrade] Upgrade RocksDB.
- [Feature] Add the check of the version field in the transaction.
- [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.
- [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
.
- [Fix] Fix user authentication problem inside the group when the permission management is enabled.
- [Optimization] Optimize the efficiency of system contract testing.
- [Docs] Add system contract interface documents.
- [Docs] Add more English document.
v0.19.0 - 2018-09-30
- [refactoring] Improve the user experience of CITA scripts
- [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
- [feature] Add the cache_size entry to the configuration file
- [feature] Modify the judgment logic of the transaction under emergency braking situation
- [feature] GetMetaData support query economic model and protocol version number
- [optimization] Modify some ErrorMessage
- [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
- [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] Replace txtool with cita-cli in document
- [doc] Modify ‘amend’ operation related documents
v0.18.0 - 2018-08-30
- [feature] Replaced sha3 with Keccak algorithm library
- [feature] New Library of China Cryptographic Algorithm
- [optimize] Remove useless code and dependencies
- [optimize] Add more CI
- [fix] Fix potential deadlock, multi-threaded data inconsistency
- [fix] Fix state machine state homing problem
- [fix] Fix Transaction decode logic error
- [fix] Fix blacklist problems that accounts cannot be removed from blacklist automatically when they come to have tokens
- [optimize] Add the monitor of chain status
- [feature] Modify some log levels
- [fix] Automatic synchronization when the Executor state is inconsistent with Chain
- [optimize] Optimize state synchronization speed between Executor and Chain
- [feature] Add the acquisition and verification of the state certificate
- [optimize] Add a notification of Executor status
- [fix] Fix the problem about saving the latest proof when syncing
- [fix] Fix some usability issues in the snapshot
- [refactoring] Refactoring synchronization logic
- [feature] Output status log
- [fix] Close the connection to the deleted node when the Network configuration file is hot updated
- [fix] Fix the problem about saving temporary proof
- [feature] Transaction's value field validation is modified to be required to U256 or [u8;32], otherwise, an invalid value is returned.
- [fix] Transaction's to field validation is more strict, passing invalid parameters will return an error directly
- [feature] Separate the JSON-RPC type definition library for the client to use
- [feature] Add cross-chain management contract to the process of state proof
- [feature] Supports batch transaction
- [feature] Update the cross-chain document with more description about sidechain exit mechanism.
v0.17.0 - 2018-07-18
- [feature] Enable rabbitmq web management
- [fix] Merge env_cn.sh into env.sh
- [feature] Add economical model support Public-Permissioned Blockchain
- [fix] Fix EVM lost builtin
- [fix] Fix Executor Result cache
- [feature] Support contract amend, superadmin can modify the code and data of the contract
- [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
- [refactoring] Refactor auth
- [fix] Fix consensus stop after restart all nodes
- [fix] Fix quota check
- [fix] Fix smart contract static call bug
- [fix] Rename JSON-RPC methods.
- [Refactoring] Refactoring JSON-RPC types.
- [optimize] Speed up CI
- [optimize] Add solc unit test
- [doc] Support multiversion
- [doc] Adjust table of contents
v0.16.0 - 2018-05-15
- [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.
- [feature] Add global account cache.
- [optimize] Optimize block synchronization.
- [fix] Fix pre-execution bugs.
- [fix] Fix receipt error types.
- [fix] Fix transaction broadcasting.
- [fix] Fix transaction authentication.
- [fix] Fix bft process in some critical conditions.
- [feature] Support group-based user management.
- [doc] Add more English documents.
v0.15.0 - 2018-03-30
- [refactoring] Refactor libproto. Send message between services will be more efficient and easy.
- [feature] Upgrade EVM to support new instructions. Such as RETURNDATACOPY, RETURNDATASIZE, STATICCALL and REVERT.
- [feature] Store contract ABI into Account. So SDK can generate Java/js code even without souce code of contract.
- [refactoring] Improve code quality.
- [feature] Improve role-based permission contract.
- [doc] New document site
- [tool] New CITA docker images. We recommend to use docker now and we supply some scripts to simplify this task.
v0.13.0 - 2018-02-01
- [refactoring] Create new Executor service, better transaction execution customizability.
- [refactoring] Improve message format and protocols used by microservices.
- [experimental] Account model based zero-knowledge proof transaction. Feature turned off by default.
- [fix] fix memory leaking problem
- [refactoring] Improve code quality
- [fix] fix txpool transaction deletion bug
- [doc] update documents
- [fix] fix transaction query bug
- [feature] Improve role-based permission contract
- [feature] Support read-only configurations
- [tool] Update txtool dependencies
- [tool] Update admintool
- [tool] Unify configurations to toml format
v0.12.0 - 2018-01-18
- [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.
- [optimization] Optimize voting process to reach consensus faster.
- [optimization] Optimize voting messages to reduce network cost.
- [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.
- [refactoring] Refactor service, rewrite to event-driven model.
- [feature] Support WebSocket protocol.
- [feature] Support filter* API.
- [doc] Update docs.
- [refactoring] Refactor code
- [feature] New block synchronization protocol.
- [optimization] Optimize network message lock.
- [fix] fix config file watch.
- [feature] Add role-based user and permission management.
- [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.0 - 2017-10-26
Release the first version of CITA.