0.21.0 (2021-10-12)
- introduce consensus error codes (#341, #342)
- split validation logic into basic, signature, fee and state (#331)
- protocol versioning updates (#325, #326, #329, #330, #336, #337, #344, #346, #349, #351)
- removed verify SML flag triggers (#324)
- building indices on arrays using
prefixItems(#343)
stateTransition.validateStructurerenamed tostateTransition.validateBasicand doesn't perfom signature validationstateTransition.validateDatarenamed tostateTransition.validateState- validation errors are changed
- removed old data triggers
- old serialized data is not compatible
0.20.1 (2021-07-14)
- remove verify SML flag triggers (#324)
0.20.0 (2021-07-08)
- add metadata to document, data contract and identity (#318)
- prevent possible ReDoS attacks for Data Contracts (#311, #317, #315)
- strcit data contract JSON schema validation (#310, #312)
dependenciesis not supported. UsedependentRequiredanddependentSchemainsteadadditionalitemsis not supported. Useitems: falseandprefixItemsinsteadpatternPropertiesis prohibited for Data Contract- error messages and properties are changed according to the new JSON Schema spec
patternkeyword accept only RE2 compatible regular expressions- Document type and properties minimum length is 3 chars
definitionsis now defined using$defskeyword- JSON Schema strict validation is enabled. Previous contract schemas invalid in case they are not respecting strict mode constraints (reference this link for more information)
- usage of
if,then,else,allOf,anyOf,oneOf,patternPropertiesin document properties is prohibited .initialize()must be called before using DashPlatformProtocol
0.19.2 (2021-05-20)
- Cbor not decoding buffers properly in browsers (#306)
0.19.1 (2021-05-04)
topLevelIdentity.getIdis not a function (#306)
0.19.0 (2021-04-30)
- add data triggers for feature flags documents (#297, #302)
- ChainLock Asset Lock proof (#296)
- use
verifyInstantLockinstead offetchSMLStore(#294)
AssetLockclass was removed.InstantAssetLockProofrequirestransactionandoutputIndexproperty.IdentityCreateTransitionschema changed.assetLockproperty renamed toassetLockProofand expectInstantAssetLockProoforChainAssetLockProof.transactionandoutputIndexproperties are removed.IdentityTopUpTransitionschema changed.assetLockproperty renamed toassetLockProofand expectInstantAssetLockProoforChainAssetLockProof.transactionandoutputIndexproperties are removed.
0.18.0 (2021-03-03)
- get modified data ids from state transitions (#290)
- BLS was throwing an error inside
uncaughtExceptionhandler (#293)
0.17.0 (2020-12-29)
- dashpay data triggers (#285)
- update dashcore-lib (#271, #283, #287)
- fund identity with Asset Lock Proofs (#276, #277, #280)
- limit publicKeys items to 32 (#278)
- fs not found error on deploy (#273)
- Identity Create and Topup Transitions expect Asset Lock object instead of asset lock outpoint
identity.createandidentity.createIdentityTopUpTransitionexpect asset lock transaction, output, and proof instead of outpoint- renamed
skipAssetLockConfirmationValidationDPP option toskipAssetLockProofSignatureVerification - identity allows only 32 public keys
0.16.0 (2020-10-26)
- use Buffers for binary data (#238, #240, #241, #246, #247, #261, #262, #263, #266)
- Identifier property type (#252, #265, #267, #268)
byteArrayJSON Schema keyword instead ofcontentEncoding(#245, #248, #251, #254, #260)- use 32 random bytes instead of blockchain address for entropy (#250, #259)
- validate and store all identity keys instead of the first one (#234, [#237], #242)
- validate document upon creation (#255)
- hash methods responds with Buffer (#249)
- introduce a BLS identity key type (#239)
- add revision property to identity (#235)
isEnabledproperty removed from Identity Public Key #236
- Node.JS 10 and lower are not supported
- data models use Buffers instead of strings for binary fields
serializemethods renamed totoBuffercreateFromSerializedmethods renamed tocreateFromBufferStateRepositoryacceptIdentifierandBufferinstead of strings- identifiers like document, data contract and identity IDs are instances
Identifier(compatible withBuffer) contentEncodingkeyword isn't supported anymore. UsebyteArray: truewithtype: arrayto store binary data- Data Contract and Document entropy is now a random 32 bytes instead of blockchain address
- identity and identity create transition can't contain duplicate public keys anymore
DocumentFactory#createthrows an error if specified data is not validhashmethods respond withBufferinstead of hex encoded string- ECDSA Public key (type
0) must be a 33 long byte array. - Identity's
revisionis required - Identity Public Key's
isEnabledis not accepted - Data created or serialized by previous is incompatible
0.15.0 (2020-09-04)
- protocol versioning (#217)
- document binary properties (#199, #211, #215, #218, #213)
- handle unique and alias identities in DPNS data triggers (#201)
- add data trigger condition to check allowing subdomain rules (#224, #228)
- reject
replaceanddeleteactions for DPNS preorder document (#210)
- empty where conditions were sent during unique indices validation (#222)
- duplicate key error in case of unique index on optional fields (#230)
- invalid arguments were submitted to search for parent domain (#226)
- invalid where clause was sent, invalid query error was not handled by unique index validation method (#220)
- undefined in data contract schema id (#209)
- data contract fixture was not isolated properly (#207)
- schema with key or id already exists (#203)
protocolVersionproperty equals to0is required for all data structuresDocumentnow awaitsDataContractas a second argument in constructorDocumentsBatchTransitionnow awaitsDataContractas a second argument in constructor- a document compound unique index shouldn't contain both required and optional properties
- a document with a compound unique index must contain all indexed properties or non of them
- only second-level DPNS domain owner is allowed to create its subdomains
- DPNS preorder document is immutable now. Modification and deletion of preorder are restricted.
getDocumentsFixture.dataContractis not available anymore- DPNS data trigger expect
dashUniqueIdentityIdanddashAliasIdentityIdrecords, instead of obosletedashIdentity
0.14.0 (2020-07-22)
- missing indexed string property constraint validation (#196)
- error when the indexed field has an undefined value (#194)
- conflicting schema ids in AJV cache (#187)
- add
createdAtandupdatedAttimestamps to Document (#192) - disable unsupported JSON Schema conditions (#193)
- readme standard updates (#189)
- Indexed strings should have
maxLengthconstraint not greater than 1024 chars - JSON Schema conditions (
allOf,if, ...) are not allowed in Document JSON Schema
0.13.1 (2020-06-15)
- conflicting schema ids in AJV cache (#187)
0.13.0 (2020-06-08)
- document validation after validation the contract with the same id (#166)
- support documents from multiple contracts in Documents Batch Transition (#159)
- add
hashmethod toIdentityPublicKey(#170, #173) StateRepository#fetchTransactionresponses with verbose data (#169)- check asset lock transaction is confirmed (#168, #184)
- introduce Identity Topup Transition (#167, #178, #180)
- validate first identity public key uniqueness (#175)
- rename
LockTransactiontoAssetLockTransaction(#177)
- the first public key in Identity should be unique
- expect
StateRepository#fetchTransactionto respond with verbose transaction
0.12.1 (2020-04-22)
- data trigger should accept document transition (#164)
0.12.0 (2020-04-17)
- do not allow to change
ownerIdandentropy(bff5807) - json schema for
signaturePublicKeyId(#161) - wrong entropy size (#157)
- data contract definitions might be
nullorundefined(#153) - identity existence validation in data contract structure validation (#149)
- state transition signature validation in data contract structure validation (#150)
- rename
$revto$revision(#140) - rename
userIdtoownerId(b9a5e83) - remove
typefrom Identity (227dc4d) - remove
versionfrom Data Contract (f856ecc) - rename
$ownerIdtoownerIdin Data Contract (#160) - rename
$contractIdto$dataContractIdin Document (158) - split document model and it's state transitions (#126, #156)
- store document ID as a part of the document (3d10a01)
- Data Contract Create Transition now accepts raw data (#136)
- start types and indices from
0instead of1(#155) - put JSON Schemas into order (#135)
- implement apply state transition function (#138, #139, #142, #141, #147, #143)
- generate Data Contract ID from
ownerIdand entropy (4c0dae1) - introduce balance to Identities (#137, b13a9bb, #146)
- validate ST size is less than 16 Kb (ff7aa51, 70c3c54)
- validate state transition fee (48c9fda, #145, 0cb1d6f)
- create Identity factory now accepts locked out point and public keys (#151)
getDataContractFixtureacceptsownerId(#148)- implement create identity create transition factory (#152)
- introduce
signByPrivateKeyandverifySignatureByPublicKeymethods to ST (4eb5cdc) - verbose invalid data errors (#134)
- Data Contract ID is ownerId + entropy. You don't need to create an additional identity anymore.
- Data Contract Create Transition now accepts raw data
- size of serialized state transition must be less than 16 Kb
typeremoved from Identity due to Data Contract doesn't require it anymoreversionremoved from Data ContractuserIdrenamed toownerId- Documents State Transition renamed to and it's structure is changed
applyStateTransitionmethods no longer a part of identity, data contract and document facades- renamed
$revfield to$revisionin raw document model - applyIdentityStateTransition is now asynchronous
- Documents State Transition is now happening through separate state transition classes and renamed to Documents Batch Transition. Hence document class no longer have
$actionfield.$actionis now starting from 0.$entropyfield is now a part of document create state transition.createStateTransitionmethod of a document factory now accepts a map with actions as keys (create,replace,delete) and document arrays as values respectively. - create Identity factory accepts locked out point and public keys instead of ID and
IndentityPublicKey - types and indices now starts from
0instead of1 - Data Provider renamed to State Repository and store/remove functions introduced
0.11.1 (2020-03-17)
- documents validate against wrong Data Contract (0db6e44)
0.11.0 (2020-03-09)
- missing public key during ST signature validation (667402d)
- add npmignore (c2e5f5d)
- prevent to update dependencies with major version
0to minor versions (ea7de93)
- catch
decodeerrors and rethrow consensus error (892be82) - limit data contract schema max depth (f78df33)
- limit serialized Data Contract size to 15Kb (7c95197)
- remove Data Contract restriction option (0edd6ff)
- validate documents JSON Schemas during data contract validation (d88817d)
- ensure
maxItemswithuniqueItemsfor large non-scalar arrays (3364325) - ensure
maxLengthin case ofpatternorformat(297c754) - ensure all arrays items are defined (43d7b8f)
- ensure all object properties are defined (d9f71df)
- limit number of allowed indices (5adff5d)
validateDatamethod accept raw data too (e72a627)- prevent of defining
propertyNames(c40663f) - prevent of defining remote
$ref(34bdb3f) - prevent of using
defaultkeyword in Data Contract (7629878) - throw error if 16Kb reached for payload in
encodefunction (c6aba8b) - accept
JsonSchemaValidatoras an option (ee1bb0f)
- Data Contract schema max depth is now limited by 500
- Serialized Data Contract size is now limited to 15Kb
validate,createFromSerialized,createFromObjectmethods of Data Contract Factory are now asyncitemsandadditionalItemsare required for arrayspropertiesandadditionalPropertiesare required for objects- number of indices limited to 10
- number of unique indices limited to 3
- number of properties in an index limited to 10
- required
maxItemswithuniqueItemsfor large non-scalar arrays - required
maxLengthin case ofpatternorformat propertyNameskeyword is restricted in document schemadefaultkeyword is restricted in Data Contractencodefunction throws error if payload is bigger than 16Kb