List of breaking changes for migration from indy-node 1.3 to 1.4

-Another format of REPLY for “WRITE” transactions. New REPLY format you can see in: REPLY for “WRITE” txns. The main goal for this changes is to divide data and metadata.

-Change key of ReqIdrToTxn stores. For now, ReqIdrToTxn store request from client as a map of: (digest) -> (ledger_id<some_delimiter>txn seq_no). Digest is a sha256 hash of (reqId, DID, operation). Also, digest was moved to transaction metadata section.

-Added tag for CLAIM_DEF. ‘TAG’ is a part of key for state tree. If this field exists in incoming transaction, then it will be used. If not, then default will be used.Full CLAIM_DEF format description can be found in CLAIM_DEF txn format and CLAIM_DEF request format All of other request specifications are in: Request

-Migration fom levelDB to RocksDB. Rocksdb has a native ‘seek’ methods, more flexible, has snapshots support and works well on Windows. For now, all of internal node’s storage use this db as a default key-value storages.

Migration scripts, which would be called automatically during pool upgrade procedure (while sending POOL_UPGRADE transaction):

Significant notes about upgrade steps:

  • Please mention that Pool upgrade should be performed simultaneously for all nodes due to txn format changes.
  • All indy-cli pools should be recreated with actual genesis files.

CLI Upgrading:

Old CLI (indy):

upgrade from 1.3 to 1.4 version delete ~.ind-cli/networks/&lt;network_name&gt;/data folder replace both old genesis files by new ones (from 1.4 node or from sovrin repo)

New CLI (indy-cli):

upgrade from 1.4 to 1.5 version recreate indy-cli pool using 1.4 pool genesis file (from 1.4 node or from sovrin repo)