Releases: microsoft/CCF
Releases · microsoft/CCF
5.0.0-dev16
Added
- Reusable functionality for creating an in-enclave JS interpreter has been added to the public C++ API. Applications should subclass
CustomJSEndpointRegistry
to get similar behaviour to the existing JS Generic app.
MCR Docker Images: App Development, C++ Runtime, TypeScript/JavaScript Runtime
5.0.0-dev15
Added
- CCF now supports a mode where HTTP redirect responses are returned, rather than relying on internal forwarding. See docs for description of redirection behaviour and migration instructions.
- Authentication policies can now be conjoined (AND) together, in addition to the previous disjoint (OR) behaviour. The new
ccf::AllOfAuthnPolicy
takes a collection of other policies, all of which must be true for this auth policy to pass. In JS, this can be configured in theapp.json
as"authn_policies": [{ "all_of": ["policy_a", "policy_b"] }]
.
Changed
proposalId
is now passed toresolve(proposal, proposerId, votes, proposalId)
, allowing proposals to consider other pending proposals in their resolution process. (#5995)- The current state of an accepted proposal is written to the KV so that it can be accessed in the constitution's
apply(proposal, proposalId)
function (#6114).
MCR Docker Images: App Development, C++ Runtime, TypeScript/JavaScript Runtime
4.0.16
Dependencies
- Updated base image
5.0.0-dev14
Added
- Added a
ccfapp.checkedJson
converter to the CCF TypeScript package, which will raise errors when given objects which cannot be roundtrip-converted through JSON (currentlyMap
andDate
). There is a slight cost to checking this on each instance duringencode
, so the behaviour is opt-in (not directly replacingccfapp.json
), but it is recommended that most tables update to use this converter.
Removed
- The
scurl.sh
script has been removed. With #5137 removing support for HTTP signed requests, it is no longer needed.
MCR Docker Images: App Development, C++ Runtime, TypeScript/JavaScript Runtime
4.0.15
Fixed
- Improvements to the Raft implementation, to retain commit safety and liveness despite message loss (#6016).
Added
- Added 2 new log lines which may be helpful diagnostics in production deployments, both including a new
[rollback]
tag. [rollback] ... Dropping conflicting branch
may be emitted after network partitions, and indicates that somePending
(non-committed) transactions have been lost. This is expected, but worth investigating if it occurs regularly - it is a sign of elections impacting service availability.[rollback] ... Ignoring conflicting AppendEntries
could also be emitted after a network partition, but should be reported to the CCF development team. It is a sign of an unexpected execution path, which could lead to loss of liveness (inability to advance commit).
Dependencies
- The CCF Python package now requires cryptography 42.*
5.0.0-dev13
Fixed
- Improvements to the Raft implementation, to retain commit safety and liveness despite message loss (#6016).
Added
- Added 2 new log lines which may be helpful diagnostics in production deployments, both including a new
[rollback]
tag. [rollback] ... Dropping conflicting branch
may be emitted after network partitions, and indicates that somePending
(non-committed) transactions have been lost. This is expected, but worth investigating if it occurs regularly - it is a sign of elections impacting service availability.[rollback] ... Ignoring conflicting AppendEntries
could also be emitted after a network partition, but should be reported to the CCF development team. It is a sign of an unexpected execution path, which could lead to loss of liveness (inability to advance commit).
MCR Docker Images: App Development, C++ Runtime, TypeScript/JavaScript Runtime
5.0.0-dev12
Added
- There is now a
contains_globally_committed(k)
method onkv::Set<K>
, with the same semantics asget_globally_committed(k)
onkv::Map<K, V>
(#5928).
Changed
- JS endpoints marked as
"mode": "readonly"
are prevented from writing to the KV. Attempting to callmap.set(k, v)
,map.delete(k)
, ormap.clear()
on any KV table in such an endpoint will now result in an error being thrown (#5921).
Fixed
- Nodes are now more robust to unexpected traffic on node-to-node ports (#5889).
- Added a GET /node/backup endpoint, returning 200 when backup and 404 when not, for load balancers to use (#5789).
MCR Docker Images: App Development, C++ Runtime, TypeScript/JavaScript Runtime
4.0.14
Fixed
- Nodes are now more robust to unexpected traffic on node-to-node ports (#5889).
ccf.crypto.digest
andccf.crypto.isValidX509CertBundle
are accessible again throughccf.digest
andccf.isValidX509CertBundle
, to faciliate migration of CCF 3.x-era constitutions. The constitution sample undersamples/constitutions/default/actions.js
has been updated to show how migration is possible without relying on aliasing in 4.x.
5.0.0-dev11
Removed
ccf::historical::adapter_v2
is removed, replaced byccf::historical::adapter_v3
first introduced in 2.0.0.ccf::EnclaveAttestationProvider
has been removed. It is replaced byccf::AttestationProvider
- The
attestation.environment.security_context_directory
configuration entry and--snp-security-context-dir-var
CLI option have been removed. SNP collateral must now be provided through thesnp_security_policy_file
,snp_uvm_endorsements_file
andsnp_endorsement_servers
configuration values. See documentation for details and platform-specific configuration samples.
MCR Docker Images: App Development, C++ Runtime, TypeScript/JavaScript Runtime
5.0.0-dev10
- The
url
field insnp_endorsements_servers
can now contain environment variables that will be resolved at startup, such as "$Fabric_NodeIPOrFQDN:2377" (#5862). - Add a new
snp_security_policy_file
configuration value underattestation
, superseding the lookup from$UVM_SECURITY_CONTEXT_DIR
. The value can contain environment variables, for example:"snp_security_policy_file": "$UVM_SECURITY_CONTEXT_DIR/security-policy-base64"
. - Add a new
snp_uvm_endorsements_file
configuration value underattestation
, superseding the lookup from$UVM_SECURITY_CONTEXT_DIR
. The value can contain environment variables, for example:"snp_uvm_endorsements_file": "$UVM_SECURITY_CONTEXT_DIR/reference-info-base64"
. This value can come from an untrusted location, likesnp_security_policy_file
and AMD endorsements (fetched fromsnp_endorsements_servers
), because the CCF code contains pre-defined roots of trust.
MCR Docker Images: App Development, C++ Runtime, TypeScript/JavaScript Runtime