Skip to content

Releases: microsoft/CCF

0.9

27 Mar 17:34
b1d3916

Choose a tag to compare

0.9 Pre-release
Pre-release

This pre-release improves support for handling HTTP requests.

Added

  • Key shares will be accepted after multiple disaster recovery operations (#992).
  • HTTP response headers and status can be set directly from handler (#921, #977).
  • Handlers can be restricted to accept only specific HTTP verbs (#966).
  • Handlers can accept requests without a matching client cert (#962).
  • PBFT messages are authenticated by each receiving node (#947).
  • snmalloc can be used as allocator (#943, #990).
  • Performance optimisations (#946, #971).
  • Install improvements (#983, #986).

Changed

  • HTTP request and responses no longer need to contain JSON-RPC objects (#930, #977).
  • Files and binaries have been renamed to use a consistent lower_snake_case (#989). Most app includes should be unaffected, but users of the luageneric app should now look for lua_generic.
  • Threading support relies on fixes from a recent build of OE (#990). Existing machines should re-run the ansible playbooks to install the current dependencies.
  • Consensus is chosen at run-time, rather than build-time (#922).
  • API for installing handlers has changed (#960). See the logging app or documentation for the current style.
  • Several standard endpoints are now GET-only, and must be passed a URL query (ie GET /users/getCommit?id=42).

0.8.2

13 Mar 17:05
aee15c6

Choose a tag to compare

0.8.2 Pre-release
Pre-release

Changed

  • CCF install can now be installed anywhere (#950).
  • PBFT messages are now authenticated (#947).
  • Miscellaneous performance improvements (#946).

0.8.1

12 Mar 18:06
49c7800

Choose a tag to compare

0.8.1 Pre-release
Pre-release

New

  • PBFT timers can be set fromcchost CLI (#929). See docs.
  • Nodes output their PID in a cchost.pid file on start-up (#927).
  • (Experimental) Members can retrieve their decrypted recovery shares via getEncryptedRecoveryShare and submit the decrypted share via submitRecoveryShare (#932).

Changed

  • App handlers should set HTTP response fields instead of custom error codes (#921). See docs.
  • Single build for Raft and PBFT consensuses (#922, #929, #935).
  • Members' proposals are forever rejected if they fail to execute (#930).
  • Original consortium members can ACK (#933).
  • PBFT performance improvements (#940, #942).
  • PBFT ledger private tables are now encrypted (#939).

0.8

04 Mar 14:42
b4d16e1

Choose a tag to compare

0.8 Pre-release
Pre-release

This pre-release enables experimental support for running CCF with the PBFT consensus protocol. In providing an experimental release of CCF with PBFT we hope to get feedback from early adopters.

Added

  • Experimental PBFT support docs
  • Increased threading support docs (#831, #838)
  • Governance proposals can now be rejected, which allows consitutions to implement veto power (#854)
  • Support for non JSON-RPC payloads (#852)
  • RPC to get the OE report (containing the SGX quote) of a specific node (#907)

Changed

  • Compatibility with msgpack 1.0.0
  • Members now need to provide two public keys, an identity to sign their proposals and votes as before, and public key with which their recovery key share will be encrypted. --member_cert cli argument replaced with --member-info when starting up a network to allow this docs
  • Member status is now a string, eg. "ACTIVE" rather than an integer (#827)
  • User apps have access to standard user-cert lookup (#906)
  • get_rpc_handler() now returns UserRpcFrontend instead of RpcHandler docs (#908)
  • All governance RPC's must now be signed (#911)
  • Test infra stores keys and certificates (e.g. networkcert.pem, user0_privk.pem) in new workspace/<test_label>_common/ folder (#892)

Removed

  • FramedTCP support

0.7.1

12 Feb 12:12
80476b2

Choose a tag to compare

0.7.1 Pre-release
Pre-release

This release contains some minor additions to 0.7:

  • Installed Python infrastructure can now be used to launch test networks of external builds (#809)
  • Initial threading support, Raft nodes now execute transactions on multiple worker threads (#773, #822)

0.7

30 Jan 18:35
2ad1536

Choose a tag to compare

0.7 Pre-release
Pre-release

This pre-release enables experimental support for Javascript as a CCF runtime, and switches the default transport to HTTP. FramedTCP is still supported in this release (-DFTCP=ON) but is deprecated and will be dropped in the next release.

Changed

  • Fixed node deadlock that could occur under heavy load (#628)
  • Fixed vulnerability to possible replay attack (#419)
  • CCF has an installable bundle (#742)
  • HTTP is the default frame format (#744)

Added

  • Added support for re-keying the ledger (#50)
  • Added QuickJS runtime and sample Javascript app (#668)

Deprecated

  • FramedTCP support. Please use the ccf_FTCP.tar.gz release bundle or build CCF with -DFTCP=ON if you require FTCP support.

0.6

10 Dec 19:10
b816666

Choose a tag to compare

0.6 Pre-release
Pre-release

This pre-release enables support for HTTP in CCF

Changed

  • Quote format in getQuotes changed from string to vector of bytes (#566)
  • Improved error reporting and logging (#572, #577, #620)
  • Node certificates endorsed by the network (#581)
  • The keygenerator.sh scripts replaces the keygenerator CLI utility to generate member and user identities.

Added

  • HTTP endpoint support when built with -DHTTP=ON, see https://microsoft.github.io/CCF/users/client.html for details.
  • [Only when building with -DHTTP=ON] The new scurl.sh script can be used to issue signed HTTP requests to CCF (e.g. for member votes). The script takes the same arguments as curl.
  • listMethods RPC for luageneric app (#570)
  • getReceipt/verifyReceipt RPCs (#567)
  • Support for app-defined ACLs (#590)

Binaries for cchost and libluagenericenc.so are attached to this release. Note that libluagenericenc.so should be signed before being deployed by CCF (see https://microsoft.github.io/CCF/developers/build_app.html#standalone-signing).

0.5

14 Nov 16:17
4aa499e

Choose a tag to compare

0.5 Pre-release
Pre-release

This pre-release fixes minor issues and clarifies some of cchost command line options.

Removed

Improvements

  • The members and users certificates can now be registered by the consortium using clients that are not the memberclient CLI (e.g. using the tests/infra/jsonrpc.py module) (#550).
  • Fix for Raft consensus to truncate the ledger whenever a rollback occurs and use commit_idx instead of last_idx in many places because of signatures (#503).
  • Join protocol over HTTP fix (#550).
  • Clearer error messages for when untrusted users/members issue transactions to CCF (#530).
  • devcontainer.json now points to right Dockerfile (#543).
  • cchost --raft-election-timeout CLI option default now set to 5000 ms (#559).
  • Better descriptions for cchost command line options (e.g. --raft-election-timeout) (#559).

The cchost, libluagenericenc.so, keygenerator and memberclient are also attached to this release to start a CCF network with lua application.
Note that libluagenericenc.so should be signed before being deployed by CCF (see https://microsoft.github.io/CCF/developers/build_app.html#standalone-signing).

0.4

04 Nov 16:02
b3fb3ba

Choose a tag to compare

0.4 Pre-release
Pre-release

In this preview release, it is possible to run CCF with the PBFT consensus algorithm, albeit with significant limitations.

The evercrypt submodule has been removed, the code is instead imported, to make release tarballs easier to use.

0.3

08 Oct 09:59
5c026be

Choose a tag to compare

0.3 Pre-release
Pre-release

This pre-release implements the genesis model described in the TR, with a distinct service opening phase. See https://microsoft.github.io/CCF/start_network.html for details.

Some discrepancies with the TR remain, and are being tracked under https://github.com/microsoft/CCF/milestone/2