Skip to content

Release v0.1.4

Compare
Choose a tag to compare
@sandrask sandrask released this 27 Aug 16:03
94243b4

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:

Not implemented

-- method versioning (required)
-- all fee related requirements (optional)
-- verification methods: operation and recovery (optional)

Known deviations

  1. 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)

  2. 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.