v0.5.0
This release introduces multiple breaking changes to the structure of IOTA DID Documents and their Tangle messages, rendering any identity created with a prior version incompatible and unresolvable. A versioning system has been introduced so any new identities should hopefully be forward compatible with any future breaking changes to the message structure.
The main feature of this release is the introduction of WebAssembly (Wasm) bindings for the high-level Account
API for Javascript/Typescript in both Node.js and the browser. This includes preliminary Stronghold storage bindings but only for Node.js, as it was determined that compiling Stronghold to Wasm for the browser would not be sufficiently secure. Stronghold offers best-effort secure software storage for cryptographic keys, written in Rust. To use the Stronghold storage package install @iota/identity-stronghold-nodejs
and follow the instructions of the package README.
Note that all features related to diff chain updates are now marked as deprecated. Diff chains are a useful optimisation when publishing many updates to a DID Document. However, their design may be incompatible with upcoming changes to the IOTA network and should be considered unstable.
Another major change is the removal of the MerkleKeyCollection
verification method type, which provided a compact representation for issuing and revoking Verifiable Credentials with multiple cryptographic keys. The MerkleKeyCollection
suffered from disadvantages which limited scalability when managing more than a few thousand keys. While these disadvantages could be mitigated somewhat, the decision was made to replace it with one or more alternatives not affected by its fundamental limitations, upcoming in the next major release.
Changed
- Add Wasm
Proof
, renameSignature
structs toProof
#776 - Replace
MethodSecret
withMethodContent
enum #764 - Change document metadata
created
,updated
to be optional #753 - Refactor Storage Signature #738
- Add X25519 key and verification method support #735
- Refactor
KeyLocation
#729 - Move DID Document proof outside metadata #728
- Combine resolve_method functions #709
- Add separate
identity-iota-core
,identity-account-storage
crates #693 - Change
IotaDocument::verify_document
from a static function to a method #675 - Make Wasm support dependent on
target_arch
rather than feature #666 - Refactor
CoreDocument
,VerificationMethod
,Service
to use generic DID #655 - Remove unused
Account
milestone option #645 - Change document controller type to
OneOrSet
#638 - Rename
MethodQuery
toDIDUrlQuery
, moveOrderedSet
,KeyComparable
#634 - Change
also_known_as
type toOrderedSet
#632 - Move verification functionality from
DocumentVerifier
toCoreDocument
#606 - Fix dependent diff updates being rejected #605
- Change
Account::state
visibility topub(crate)
#604 - Overhaul
CredentialValidator
, addPresentationValidator
#599 - Remove JSON string escaping in diff messages #598
- Replace
ClientMap
with newResolver
#594 - Replace
ClientMap
withClient
inAccount
#582 - Add signature
created
,expires
,challenge
,domain
,purpose
#548 - Refactor document metadata #540
- Replace
chrono
withtime
#529 - Enable access to the low-level API from the
Account
#522 - Update to
rsa
0.5 in libjose #517 - Rename
DocumentDiff
toDiffMessage
#511 - Deterministic ordering of competing messages #506
- Check for existence & duplication of methods in
CoreDocument
#504 - Move
dropsave
fromAccount
toStronghold
#500 - Add
ExplorerUrl
to replaceNetwork
explorer methods #496 - Update
ServiceEndpoint
to support sets and maps #485 - Enable deep equality in
OrderedSet
#481 - Add message compression and versioning #466
- Update document signing key constraints and methods #458
- Refactor the
Account
: internal state, one identity #453
Added
- Expose Ed25519, X25519 length constants #772
- Generify
Account::client
overRc
,Arc
#707 - Update Stronghold #691
- Add
Duration
forTimestamp
arithmetic #684 - Add
Client
fallback to local PoW option #682 - Set
controller
,alsoKnownAs
fields from Account #658 - Implement
FromIterator
forOneOrMany
#602 - Add account synchronization method #544
- Filter out DiffMessages updating signing methods #519
- Add publish with retry method #455
Patch
- Fix panic when parsing an
IotaDID
with more than 2 method id segments #758 - Update iota.rs to include timeout bugfix #712
- Support verification methods with the same fragment #623
- Fix diff properties (de)serialization #611
- Enable local proof-of-work fallback #579
- Add
identity-diff
derive feature gate #516 - Improve client error messages #512
- Make
create_signature
andsign
async forRemoteEd25519
#491 - Fix credential validation failing for documents with diff updates #490
- Upgrade to the Rust 2021 edition #449
Deprecated
- Deprecate diff chain features #759