Releases: microsoft/CCF
Releases · microsoft/CCF
0.99.1
Added
- The service certificate is now returned as part of the
/node/network/endpoint response (#2442).
Changed
kv::Mapis now an alias tokv::JsonSerialisedMap, which means all existing applications usingkv::Maps will now requireDECLARE_JSON...macros for custom key and value types.msgpack-cis no longer available to apps andMSGPACK_DEFINEmacros should be removed. Note that this change may affect throughput of existing applications, in which case an app-defined serialiser (orkv::RawCopySerialisedMap) should be used (#2449)./node/stateendpoint also returns theseqnoat which a node was started (i.e.seqnoof the snapshot a node started from or0otherwise) (#2422).
Removed
/gov/queryand/gov/readgovernance endpoints are removed (#2442).- Lua governance is removed.
JS_GOVERNANCEenv var is no longer necessary, and JS constitution is the only governance script which must be provided and will be used by the service.--gov-scriptcan no longer be passed tocchostorsandbox.sh.
ccf-0.99.0
This is a bridging release to simplify the upgrade to 1.0. It includes the new JS constitution, but also supports the existing Lua governance so that users can upgrade in 2 steps - first implementing all of the changes below with their existing Lua governance, then upgrading to the JS governance. Lua governance will be removed in CCF 1.0. See temporary docs for help with transitioning from Lua to JS.
The 1.0 release will require minimal changes from this release.
Added
- A new
read_ledger.pyPython command line utility was added to parse and display the content of a ledger directory. ccf-appnpm package to help with developing JavaScript and TypeScript CCF apps. See docs for further details (#2331).
Changed
- Retired members are now deleted from the store, instead of being marked as
Retired(#1401). retire_memberproposal has been renamed toremove_memberand is now idempotent (i.e. succeeds even if the member was already removed) (#1401).accept_recoveryandopen_networkproposals have been merged into a single idempotenttransition_service_to_openproposal (#1791).- The
/txendpoint now takes a singletransaction_idquery parameter. For example, rather than calling/node/tx?view=2&seqno=42, call/node/tx?transaction_id=2.42. - The
/commitendpoint now returns a response with a singletransaction_idrather than separateviewandseqnofields. UserRpcFrontendhas been removed, and the return value ofget_rpc_handlerwhich apps should construct is now simply accf::RpcFrontend.- There is now a distinction between public and private headers. The public headers under
include/ccfare those we expect apps to use, and others are implementation details which may change/be deprecated/be hidden in future. Most apps should now be including"ccf/app_interface.h"and"ccf/common_endpoint_registry.h". - Various endpoint-related types have moved under the
ccf::endpointsnamespace. Apps will need to rename these types where they are not usingauto, for instance toccf::endpoints::EndpointContextandccf::endpoints::ForwardingRequired. - Ledger entry frames are no longer serialised with
msgpack(#2343). - In JavaScript apps, the field
caller.jwt.key_issuerin theRequestobject has been renamedcaller.jwt.keyIssuer(#2362). - The proposals
set_module,remove_moduleandset_js_apphave been removed anddeploy_js_apprenamed toset_js_app(#2391).
ccf-0.19.3
Changed
- The status filter passed to
/node/network/nodesnow takes the correct CamelCased values (#2334).
ccf-0.19.2
Added
- New
get_user_data_v1andget_member_data_v1C++ API calls have been added to retrieve the data associated with users/members. The user/member data is no longer included in theAuthnIdentitycaller struct (#2301). - New
get_user_cert_v1andget_member_cert_v1C++ API calls have been added to retrieve the PEM certificate of the users/members. The user/member certificate is no longer included in theAuthnIdentitycaller struct (#2301).
Changed
- String values in query parameters no longer need to be quoted. For instance, you should now call
/network/nodes?host=127.0.0.1rather than/network/nodes?host="127.0.0.1"(#2309). - Schema documentation for query parameters should now be added with
add_query_parameter, rather thanset_auto_schema. TheIntype ofset_auto_schemashould only be used to describe the request body (#2309). json_adapterwill no longer try to convert query parameters to a JSON object. The JSON passed as an argument to these handlers will now be populated only by the request body. The query string should be parsed separately, andhttp::parse_query(s)is added as a starting point. This means strings in query parameters no longer need to be quoted (#2309).- Enum values returned by built-in REST API endpoints are now PascalCase. Lua governance scripts that use enum values need to be updated as well, for example,
"ACTIVE"becomes"Active"for member info. The same applies when using the/gov/queryendpoint (#2152). - Most service tables (e.g. for nodes and signatures) are now serialised as JSON instead of msgpack. Some tables (e.g. user and member certificates) are serialised as raw bytes for performance reasons (#2301).
- The users and members tables have been split into
public:ccf.gov.users.certs/public:ccf.gov.users.infoandpublic:ccf.gov.members.certs/public:ccf.gov.members.encryption_public_keys/public:ccf.gov.members.inforespectively (#2301).
ccf-0.19.1
ccf-0.19.0
Changed
x-ccf-tx-viewandx-ccf-tx-seqnoresponse headers have been removed, and replaced withx-ms-ccf-transaction-id. This includes both original fields, separated by a single.. Historical queries usingccf::historical::adaptershould also pass a single combinedx-ms-ccf-transaction-idheader (#2257).- Node unique identifier is now the hex-encoded string of the SHA-256 digest of the node's DER-encoded identity public key, which is also used as the node's quote report data. The
sandbox.shscript still uses incrementing IDs to keep track of nodes and for their respective directories (#2241). - Members and users unique identifier is now the hex-encoded string of the SHA-256 digest of their DER-encoded identity certificate (i.e. fingerprint), which has to be specified as the
keyIdfield for signed HTTP requests (#2279). - The receipt interface has changed,
/app/receipt?commit=23is replaced by/app/receipt?transaction_id=2.23. Receipt fetching is now implemented as a historical query, which means that the first reponse(s) may be 202 with a Retry-After header. Receipts are now structured JSON, as opposed to a flat byte sequence, and/app/receipt/verifyhas been removed in favour of an offline verification sample. ccfapp::get_rpc_handler()now takes a reference to accf::AbstractNodeContextrather thanccf::AbstractNodeState. The node state can be obtained from the context viaget_node_state().
Removed
get_receipt_for_seqno_v1has been removed. Handlers wanting to return receipts must now use the historical API, and can obtain a receipt viaccf::historical::StatePtr. See the historical query with receipt sample for reference.caller_idendpoint has been removed. Members and users can now compute their unique identifier without interacting with CCF (#2279).public:ccf.internal.members.certs_der,public:ccf.internal.users.certs_der,public:ccf.internal.members.digestsandpublic:ccf.internal.users.digestsKV tables have been removed (#2279).view_change_in_progressfield innetwork/statusresponse has been removed (#2288).
ccf-0.18.5
Changed
- Historical query system now supports range queries, see API documentation for details.
ccf-0.18.4
ccf-0.18.3
Changed
- Fixed format of
notBeforeandnotAfterin node and network certificates (#2243). - CCF now depends on Open Enclave 0.14.