Releases: microsoft/CCF
Releases · microsoft/CCF
ccf-0.11.7
Changed
- Fix a bug that could cause signatures not to be recorded on transactions hitting conflicts (#1346)
- Fix a bug that could allow transactions to be executed by members before a recovered network was fully opened (#1347)
- Improve error reporting on transactions with invalid signatures (#1356)
Added
ccf-0.11.4
Changed
- Fix application runtime container, which had been missing a dependency in the previous release (#1340)
- Add clang-format to the application CI container, to facilitate application development (#1340)
- Websocket handlers are now distinct, and can be defined by passing
ws::Verb::WEBSOCKET
as a verb tomake_endpoint()
(#1333) - Custom KV serialisation is documented
ccf-0.11.1
Added
- CLI tool for managing recovery shares (#1295). usage
- New standard endpoint
node/ids
for retrieving node ID from IP address (#1319). - Support for read-only transactions. Use
tx.get_read_only_view
to retrieve read-only views, and install withmake_read_only_endpoint
if all operations are read-only. - Support for distinct handlers on the same URI. Each installed handler/endpoint is now associated with a single HTTP method, so you can install different operations on
POST /foo
andGET /foo
.
Changed
- The frontend names, used as a prefix on all URIs, have been changed. Calls to
/members/...
or/users/...
should be replaced with/gov/...
and/app/...
respectively. The old paths will return HTTP redirects in this release, but may return 404 in a future release (#1325). - App-handler installation API has changed.
install(URI, FN, READWRITE)
should be replaced withmake_endpoint(URI, VERB, FN).install()
. Existing apps should compile with deprecation warnings in this release, but the old API will be removed in a future release. See this diff of logging.cpp for an example of the required changes. - Improved quickstart documentation (#1298, #1316).
- Member ACKs are required, even when the service is opening (#1318).
- The naming scheme for releases has changed to be more consistent. The tags will now be in the form
ccf-X.Y.Z
.
0.11
Changed:
kv.h
has been split into multiple headers so apps may need to add includes for kv/store.h
and kv/tx.h
. The typedefs ccf::Store
and ccf::Tx
have been removed; apps should now use kv::Store
and kv::Tx
.
CCF now deals internally only with serialised data in its tables, mapping byte-vectors to byte-vectors. By default all tables will convert their keys and values to msgpack, using the existing macros for user-defined types. Apps may define custom serialisers for their own types - see kv/serialise_entry_json.h
for an example.
- Fixed issues that affected the accuracy of tx status reporting (#1157, #1150)
- All RPCs and external APIs now use
view
andseqno
to describe the components of a transaction ID, regardless of the specific consensus implementation selected (#1187, #1227) - Improved resiliency of recovery process (#1051)
foreach
early-exit semantics are now consistent (#1222)- Third party dependency updates (#1144, #1148, #1149, #1151, #1155, #1255)
- All logging output now goes to stdout, and can be configured to be either JSON or plain text (#1258) doc
- Initial support for historical query handlers (#1207) sample
- Implement the equivalent of "log rolling" for the ledger (#1135) doc
- Internal RPCs renamed to follow more traditional REST conventions (#968) doc
Added:
- Support for floating point types in default KV serialiser (#1174)
- The
start_test_network.sh
script now supports recovering an old network with the--recover
flag (#1095) doc - Application CI and runtime containers are now available (#1178)
ccfciteam/ccf-app-ci:0.11
is recommended to build CCF applicationsccfciteam/ccf-app-run:0.11
is recommended to run CCF nodes, for example in k8s
- Initial websockets support (#629) sample
Removed:
ccf::Store
and ccf::Tx
typdefs, in favour of kv::Store
and kv::Tx
.
v0.10
New
- Brand new versioned documentation: https://microsoft.github.io/CCF.
- New
/tx
endpoint to check that a transaction is committed (#1111). See docs. - Disaster recovery is now performed with members key shares (#1101). See docs.
- Open Enclave install is included in CCF install (#1125).
- New
sgxinfo.sh
script (#1081). - New
--transaction-rate
flag to performance client (#1071).
Changed
- CCF now uses Open Enclave 0.9 (#1098).
cchost
's--enclave-type
isrelease
by default (#1083).keygenerator.sh
's--gen-key-share
option renamed to--gen-enc-key
to generate member encryption key (#1101).- Enhanced view change support for PBFT (#1085, #1087, #1092).
- JavaScript demo logging app is now more generic (#1110).
- Updated method to retrieve time in enclave from host (#1100).
- Correct use of Everycrypt hashing (#1098).
- Maximum number of active members is 255 (#1107).
- Python infra: handle proposals correctly with single member (#1079).
- Dependencies updates (#1080, #1082).
Removed
cchost
no longer outputs a sealed secrets file to be used for recovery (#1101).
0.9.3
0.9.2
0.9.1
0.9
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 theluageneric
app should now look forlua_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
).