Release v0.1.4
sidetree-core-go Release Notes - Aug 27, 2020
What's new in sidetree-core-go v0.1.4
Add ability to configure method context(s)
If required method context(s) can be passed in as parameter
Validation of supported signing algorithms
Add new parameter to protocol parameters called signature algorithms that will allow configuring supported algorithms.
Validation of supported key algorithms
Add new parameter to protocol parameters called key algorithms that will allow configuring supported key algorithms.
Updated protocol parameters
Add/rename protocol parameter as per latest spec
Add support for JsonWebKey2020
JsonWebKey2020 is added to the list of supported key types
Add initial state to method metadata
When attempting resolution with initial state add initial state to method metadata
Preserve the order of public keys and services during resolution
When patches are applied during resolution preserve the order of public keys and services
Add ability to enable 'replace' patch
Add protocol parameter to enable 'replace' patch (by default this patch is disabled; it is used for interop testing)
Implement latest protected header validation rules
- kid MUST be present in the protected header (deviation due to failing interop tests)
- alg MUST be present in the protected header, its value MUST NOT be none
- no additional members may be present in the protected header
Update ID size limit to 50
Applies to public key ids and service ids
Get protocol parameters by transaction number
Added to protocol interface get function for retrieving protocol parameters by transaction number (block number)
Create anchored operation model
Create the smallest subset of operation data that will be stored into operation store as anchored operation.
Operation Hash Map
Create operation hash map (calculate operation commitment value) during resolution and use it to determine next operation to be applied.
Add common validations for batch files
Add following check when creating anchor, map, chunk files for Sidetree transaction:
- there can be only one operation per suffix in all batch files combined per transaction (deviation - log subsequent operations as warning and ignore them)
Switch logrus logging to edge-core logging
Replace logging provider
Add support for 'replace' action
Added support for 'replace' action
Generate commitment from public JWK
- generate recovery and update commitments from corresponding public JWK during create
- add update key to update request
- add recovery key for deactivate and recover requests
- validate keys against previously provided commitments
- validate signature against passed in keys
- return update and recovery commitments in resolution result metadata (remove recovery key and operation keys)
Add compression for batch files
-- compress batch files before storing them to CAS (batch writer)
-- decompress batch files upon retrieving them from CAS (observer)
-- add compression algorithm and maximum batch sizes (protocol)
Add compression registry
Add compression registry with gzip algorithm implementation
Create Anchor String
Record anchor string (num of transactions + anchor address) on blockchain.
Add chunk, map, anchor files
- batch writer creates chunk, map, anchor file from batch operations
- observer parses batch files (chunk, map, anchor) into anchored operation
Outstanding Sidetree protocol specification issues:
- handling patch errors inconsistent across operations (decentralized-identity/sidetree#836)
usage - there is a mismatch between spec and reference implementation in regards to the usage of next commitment in case of patch errors
decentralized-identity/sidetree#835
decentralized-identity/sidetree#835
Not implemented
-- method versioning (required)
-- all fee related requirements (optional)
-- verification methods: operation and recovery (optional)
Known deviations
-
kid MUST be present in the protected header
deviation is due to failing interop tests; reference application doesn't accept kid in protected header (#365) -
an Anchor File MUST NOT include multiple operations in the operations section of the Anchor File for the same DID Suffix - if any duplicates are found, cease processing, discard the file data, and retain a reference that the file is to be ignored.
Reference implementation/spec assumes that there is only one batch writer in the system. That assumption is not valid with fabric deployment so we can have multiple batch writers, After discussion with the team it was decided that cease processing is not an option. Instead, we log subsequent operations as warning and ignore them.