Releases: microsoft/CCF
Releases · microsoft/CCF
ccf-0.18.2
ccf-0.18.1
Changed
"id"
field instate
endpoint response has been renamed to"node_id"
(#2150).user_id
endpoint is renamedcaller_id
(#2142).- Nodes' quotes format updated to Open Enclave's
SGX_ECDSA
. Quote endorsements are also stored in CCF and can be retrieved via thequotes/self
andquotes
endpoints (#2161). get_quote_for_this_node_v1()
takes aQuoteInfo
structure (containing the format, raw quote and corresponding endorsements) as out parameter instead of the distinct format and raw quote as two out paramters (#2161).- Several internal tables are renamed (#2166).
/node/network/nodes
correctly returns all nodes if no filter is specified (#2188).
ccf-0.18.0
Changed
endpoint_metrics
is renamedapi/metrics
and now returns an array of objects instead of nested path/method objects (#2068).- Governance proposal ids are now digests of the proposal and store state observed during their creation, hex-encoded as strings. This makes votes entirely specific to an instance of a proposal without having to include a nonce. (#2104, #2135).
quote
endpoint has been renamed toquotes/self
(#2149).TxView
s have been renamed toMapHandle
s, to clearly distinguish them from consensus views. Calls totx.get_view
must be replaced withtx.rw
.tx.rw
does not support retrieving multiple views in a single call. Instead ofauto [view1, view2] = tx.get_view(map1, map2);
, you must writeauto handle1 = tx.rw(map1); auto handle2 = tx.rw(map2);
.
Added
- Added
get_version_of_previous_write(const K& k)
toMapHandle
. If this entry was written to by a previous transaction, this returns the version at which that transaction was applied. See docs for more details.
Removed
ccf-0.17.2
Fixed
- Fixed incorrect ledger chunking on backup nodes when snapshotting is enabled (#2110).
ccf-0.17.1
Changed
- JS endpoints now list their auth policies by name, similar to C++ endpoints. The fields
require_client_identity
,require_client_signature
, andrequire_jwt_authentication
are removed, and should be replaced byauthn_policies
. For example, the previous default"require_client_identity": true
should be replaced with"authn_policies": ["user_cert"]
, an endpoint which would like to handle a JWT but will also accept unauthenticated requests would be"authn_policies": ["jwt", "no_auth"]
, and a fully unauthenticated endpoint would be"authn_policies": []
. See docs for further detail.
ccf-0.17.0
Added
- Versioned APIs for common CCF functionality:
get_status_for_txid_v1
,get_last_committed_txid_v1
,generate_openapi_document_v1
,get_receipt_for_seqno_v1
,get_quote_for_this_node_v1
. We will aim to support these function signatures long-term, and provide similar functionality with incremental version bumps when this is no longer possible. In particular, this enables building an app which does not expose the default endpoints but instead exposes similar functionality through its own API.
Changed
ccf-0.16.3
Changed
- To avoid accidentally unauthenticated endpoints, a vector of authentication policies must now be specified at construction (as a new argument to
make_endpoint
) rather than by callingadd_authentication
. The valueccf::no_auth_required
must be used to explicitly indicate an unauthenticated endpoint. - All
/gov
endpoints accept signature authentication alone correctly, regardless of session authentication. ccf.CCFClient
now allows separatesession_auth
andsigning_auth
to be passed as construction time.ccf.CCFClient.call()
no longer takes asigned
argument, clients with asigning_auth
always sign. Similarly, thedisable_session_auth
constructor argument is removed, the same effect can be achieved by settingsession_auth
toNone
.
ccf-0.16.2
Changed
- Snapshots are generated by default on the current primary node, every
10,000
committed transaction (#2029). - Node information exposed in the API now correctly reports the public port when it differs from the local one. (#2001)
- All
/gov
endpoints accept signature authentication again. Read-only/gov
endpoints had been incorrectly changed in [0.16.1] to accept session certification authentication only (#2033).
ccf-0.16.1
Added
- C++ endpoints can be omitted from OpenAPI with
set_openapi_hidden(true)
(#2008). - JS endpoints can be omitted from OpenAPI if the
"openapi_hidden"
field inapp.json
istrue
(#2008).
Changed
- Error responses of built-in endpoints are now JSON and follow the OData schema (#1919).
- Code ids are now deleted rather than marked as
RETIRED
.ACTIVE
is replaced with the more preciseALLOWED_TO_JOIN
(#1996). - Authentication policies can be specified per-endpoint with
add_authentication
. Sample policies are implemented which check for a user TLS handshake, a member TLS handshake, a user HTTP signature, a member HTTP signature, and a valid JWT. This allows multiple policies per-endpoints, and decouples auth from frontends - apps can define member-only endpoints (#2010). - By default, if no authentication policy is specified, endpoints are now unauthenticated and accessible to anyone (previously the default was user TLS handshakes, where the new default is equivalent to
set_require_client_identity(false)
). - CCF now depends on Open Enclave 0.13.
Removed
- The methods
Endpoint::set_require_client_signature
,Endpoint::set_require_client_identity
andEndpoint::set_require_jwt_authentication
are removed, and should be replaced by calls toadd_authentication
. For unauthenticated endpoints, either add no policies, or add the built-inempty_auth
policy which accepts all requests..set_require_client_signature(true)
must be replaced with.add_authentication(user_signature_auth_policy)
.set_require_client_identity(true)
must be replaced with.add_authentication(user_cert_auth_policy)
.set_require_jwt_authentication(true)
must be replaced with.add_authentication(jwt_auth_policy)
0.16.0
Added
- CLI options are printed on every node launch (#1923).
- JS logging sample app is included in CCF package (#1932).
- C++ apps can be built using cmake's
find_package(ccf REQUIRED)
(see cmake sample) (#1947).
Changed
- JWT signing keys are auto-refreshed immediately when adding a new issuer instead of waiting until the next auto-refresh event is due (#1978).
- Snapshots are only committed when proof of snapshot evidence is committed (#1972).
- Snapshot evidence must be validated before joining/recovering from snapshot (see doc) (#1925).
Fixed
- Ledger index is recovered correctly even if
--ledger-dir
directory is empty (#1953). - Memory leak fixes (#1957, #1959, #1974, #1982).
- Consensus fixes (#1977, #1981).
- Enclave schedules messages in a fairer way (#1991).