Skip to content

Dash Platform v0.24.0

Compare
Choose a tag to compare
@shumkov shumkov released this 11 May 06:37
· 1022 commits to master since this release

Notes

The masternode identities logic is partially disabled due to incomplete Identity V2 implementation and will be enabled back in v0.25.0

⚠ BREAKING CHANGES

  • Previous blockchain data and state is not compatible
  • Previous created compose projects won't be supported. Please destroy them before update (#1055)
  • The --platfrom-only flag is renamed to --platform in the reset command (#991)
  • Some wasm-dpp APIs are different to js-dpp ones. The only divergencies that were addressed are the ones that were visible in tests, but some others might've been left intact (#848)
  • Core version less than 19 and legacy BLS schema are not supported (#771)
  • gRPC and HTTP platform ports now handling with the one single port (#752)
  • State Transition fees are changed
  • Document's query validation logic has minor incompatibilities with previous version

Features

  • drive: whitelist and filter banned nodes for validators (#1034)
  • dashmate: core log file and debug categories (#913)
  • dashamte: better ZeroSSL error messages (#950)
  • dashmate: set random core rpc usename and password on setup (#973)
  • dashmate: verbose connect ENOENT /var/run/docker.sock error (#951)
  • wasm-dpp: state_transition_fee_validator binding and tests (#874)
  • dashmate: check system requirements before setup (#935)
  • drive: handle quorum rotation failure (#858)
  • wasm-dpp integration (#848)
  • dashmate: build linux tarballs (#887)
  • dashmate: build services before restart (#894)
  • dashmate: exit status with 2 if it's not running (#896)
  • dashmate: implement http json rpc api (#888)
  • dashmate: tenderdash latest block time in status (#906)
  • dpp: serialize consensus errors (#871)
  • drive verification c bindings (#860)
  • dashmate: add new quroum in dashcore config (#862)
  • dashmate: enable platform option (#853)
  • dashmate: generate self-signed certificates in the setup command (#869)
  • dashmate: high-performance nodes registration with setup command (#794)
  • dashmate: hint to setup a node on start failure (#866)
  • dpp: add fees API to rust wasm bindings (#830)
  • dpp: optional execution context in rs-dpp (#811)
  • dpp: state transition applicator (#878)
  • rs-dpp: migrate fees from js-dpp v0.24 (#851)
  • state transition conversion (#844)
  • wasm-dpp: add tests for state transition basic validator (#857)
  • wasm-dpp: DashPlatformProtocol tests (#841)
  • wasm-dpp: identity transitions additional functionality (#855)
  • wasm-dpp: implement validateStateTransitionStateFactory tests (#861)
  • wasm-dpp: provide external entropy generator to document factory (#845)
  • wasm-dpp: validate_state_transition_identity_signature binding and test (#865)
  • better Core 19 support (#832)
  • core version 19.0-beta integration (#771)
  • dashmate: register HPMN for local network (#796)
  • dasmate: pack release script (#781)
  • dpp: identity facade (#782)
  • dpp: integration tests for wasm-dpp document transitions (#777)
  • dpp: wasm bindings for Documents related validations (#709)
  • dpp: wasm-dpp: integration tests for document (#762)
  • Identity v2 (#705)
  • platform value abstraction (#805)
  • proposer signaling of protocol version upgrade and fork activation (#778)
  • register system data contracts in RS Drive (#776)
  • rs-dpp: dashpay datatrigger toUserIds better validation (#799)
  • rs-dpp: backport of index_definitions.unique validation (#802)
  • rs-dpp: backports of identity/stateTransition from js-dpp (#800)
  • rs-dpp: introduce StateTransitionFactory (#810)
  • rs-dpp: validate indices are backwards compatible backport (#797)
  • rs-drive: verification feature (#803)
  • wasm dpp: validate state transition key signature (#806)
  • wasm-dpp: wasm bindings for Document Transitions (#707)
  • wasm-dpp: async state repository (#766)
  • wasm-dpp: data contract facade (#716)
  • wasm-dpp: Fix metadata, metadata tests and backport v23 matedata changes into wasm-dpp (#819)
  • wasm-dpp: implement identity update transition (#748)
  • wasm-dpp: integration tests validate data contract update transition (#812)
  • wasm-dpp: protocol version validator tests (#823)
  • wasm-dpp: remove unused documents factory tests (#828)
  • wasm-dpp: state transition facade (#814)
  • withdrawals status sync (#679)
  • allow to get drive status from dashmate helper (#749)
  • allow to get drive's status from dashmate helper (#755)
  • dapi: use single envoy port for all connections (#752)
  • dashmate: update Core to 18.2.0 (#735)
  • drive: ABCI context logger (#693)
  • drive: log contractId in deliverTx handler (#730)
  • drive: log number of refunded epochs (#729)
  • integrate wasm Document into JS tests (#644)
  • varint protocol version (#758)
  • wasm-dpp: implement function to produce generics from JsValue (#712)
  • wasm-dpp: implement identity create transition (#697)
  • wasm-dpp: implement identity topup transition (#745)
  • wasm-dpp: Wasm dpp integration tests validate data contract factory (#751)
  • credit refunds (#662)
  • dashmate: additional dashd options (#692)
  • dashmate: pass ZeroSSL as command line parameter (#651)
  • dashmate: remove axios from zerossl requests
  • dashmate: remove axios from zerossl requests
  • dpp: AbstractConsensusError tests and extensions (#670)
  • dpp: Data Contract Update Transition wasm binding (#696)
  • drive: do not switch to validator quorum which will be removed soon (#616)
  • multiple documents changes per batch and support for GroveDB 0.9 (#699)
  • Consensus Errors and ValidationResult bindings (#643)
  • average estimated processing fees (#642)
  • dpp: bls adapter for WASM DPP (#633)
  • drive: add time and protocolVersion fields to query metadata response (#611)
  • drive: precise fees (dashpay/rs-platform#170), closes dashpay/rs-platform#181
  • drive: provide latest core chain lock on init chain (#659)
  • drive: support for V0.7 of groveDB (#665)
  • drive: use proposal block execution context in state repository (#653)
  • drive: use single block execution context (#627)
  • external bls validtor (dashpay/rs-platform#186)
  • insert with parents for Document (dashpay/rs-platform#189)
  • add withdrawals data contract package (#604)
  • done: changes needed for wasm-dpp integration (dashpay/rs-platform#154)
  • dpp: [v23 port] validate fee calculating worst case operations (dashpay/rs-platform#160)
  • dpp: dashpay datatrigger toUserIds better validation (#620)
  • drive: select the most vital validator set quorums (#617)
  • dpp: initial RS DPP integration (#483)
  • drive: same block execution (#593)
  • node: multiple transactions (dashpay/rs-platform#155)
  • drive: AssetUnlock transactions processing (#530)
  • withdrawal request queue (dashpay/rs-platform#149)
  • Public Keys Identities Proofs (dashpay/rs-platform#151)
  • [v23 port] data contract indices validation (dashpay/rs-platform#26)
  • a temporary plug for dry run (dashpay/rs-platform#113)
  • ability to get elements by $id directly (dashpay/rs-platform#61)
  • add proveDocumentsQuery to Node.JS binding (dashpay/rs-platform#115)
  • add proveQueryMany to Node.JS binding (dashpay/rs-platform#122)
  • add constructor for DocumentTransition
  • add credits converter
  • add Document Transition
  • add GroveDB methods to JS wrapper
  • add hash implementation for identifier
  • add prefixes to errors (dashpay/rs-platform#101)
  • add proof test to rs-drive query tests (dashpay/rs-platform#109)
  • allow one character property names
  • batch support (dashpay/rs-platform#111)
  • binding for Node.JS
  • dashmate: update tenderdash to 0.9.0-dev.1 (#525)
  • dashmate: zeroSSL certificate renewal helper (#554)
  • dpp: [v23 port] add withdraw puprose to identity public key (dashpay/rs-platform#134)
  • dpp: [v23 port] Identity Update Transition (dashpay/rs-platform#138)
  • dpp: [v23 port] limit the number of shares for masternode by 16 (dashpay/rs-platform#141)
  • dpp: add wasm-dpp template package (#529)
  • dpp: basic validtion for state transition (dashpay/rs-platform#133)
  • fees distribution (dashpay/rs-platform#105)
  • identity create state transition (dashpay/rs-platform#9)
  • identity credit withdrawal transition (dashpay/rs-platform#25)
  • identity from_buffer and from_raw_object
  • immutibility and contracts that allow document history (dashpay/rs-platform#79)
  • implement deleteDocument
  • implement updateDocument
  • implement applyContact and createDocument
  • implement grovedb "bindings" in rs-drive
  • implement masternode voting identities (#467)
  • implement queryDocuments + some fixes
  • implementation of Document validator
  • Include the DPP into Drive (dashpay/rs-platform#126)
  • insert identities (dashpay/rs-platform#99)
  • migrate to ABCI++ (#464)
  • node: introduce GroveDB#proveQuery (dashpay/rs-platform#112)
  • populate stack for binding errors (dashpay/rs-platform#39)
  • query drive with sql (dashpay/rs-platform#31), closes dashpay/rs-platform#42
  • query: allow query with $id (dashpay/rs-platform#53)
  • recursive conditional subqueries (dashpay/rs-platform#106)
  • return processing cost for queryDocuments (dashpay/rs-platform#100)
  • sql in clause (dashpay/rs-platform#52)
  • SSL certificate for DAPI (#519)
  • storage run time fees, worst case scenario fees and support for contract definition references (dashpay/rs-platform#95), closes dashpay/rs-platform#87 dashpay/rs-platform#93 dashpay/rs-platform#92
  • tests: add reference js test case (dashpay/rs-platform#43)
  • update to latest grovedb and some optimization around inserts (dashpay/rs-platform#120), closes dashpay/rs-platform#119
  • verbose startAt or startAfter not found error (dashpay/rs-platform#76)

Bug Fixes

  • dashmate: external IP detection hangs sometimes (#1053)
  • dapi: invalid addresses in the whitelist (#1044)
  • dashmate: reset platform commands hangs (#1038)
  • dashmate: set permissions for dashcore log file (#1037)
  • drive: cannot destructure property ‘quorumHash’ of ‘instantLock... (#1046)
  • drive: cannot read properties of undefined (reading 'toString') (#1045)
  • dashmate: waitForQuorumConnections deadline of 300000 exceeded (#1015)
  • dashmate: wrong volume removal retry logic (#1016)
  • expect platformNodeID to be a hex string (#1013)
  • dashmate: "volume is in use" and "no such volume" (#1005)
  • dashmate: reset platform affects core (#1001)
  • drive: double init chain leads to side bugs (#1002)
  • dashmate: BLS private key validate accepts whitespaces (#998)
  • dashmate: can't remove volumes if they not exist (#997)
  • dashmate: show masternode state while it is not synced (#999)
  • dashmate: wrap register masternode command in small terminals (#996)
  • dashmate: multiple issues in the reset command (#991)
  • drive: non-unique masternode voting keys (#986)
  • dashmate: ability to work with non-default docker socket path (#967)
  • dashmate: already configured preset is ignored (#974)
  • dashmate: empty masternode status while syncing (#970)
  • dashmate: form accepts invalid BLS key (#961)
  • dashmate: invalid mn register command in output of dashmate setup (#959)
  • dashmate: reward shares can be negative during HP masternode registration (#960)
  • dashmate: select number of masternodes during local setup freezes (#957)
  • dashmate: yaml package security vulnerability (#975)
  • test-suite: expects identities for invalid mns (#968)
  • dashamte: wrong envoy config path on windows (#949)
  • drive: updating a masternode identity with invalid entry from SML (#965)
  • dashamte: Can't find begoo/index with yarn dashmate setup (#933)
  • DAPI still expected on normal masternodes (#904)
  • dapi-client: platform port is ignored from SML (#903)
  • dashmate: api binds to all interfaces (#893)
  • dashmate: dashmate helper is running under root user (#895)
  • dashmate: dashmate logic doesn't recognize it's ran from helper (#902)
  • dashmate: missing rawblock zmq message in core config (#770)
  • dashmate: undefined wallet for dash-cli (#786)
  • dpp: various fixes in DPP and system contracts (#907)
  • drive: non-deterministic run of mn identities sync (#910)
  • drive: total HPMNs contains all masternodes (#911)
  • identifier deserialization doesn't work for bincode (#885)
  • llmqType must be equal to one of the allowed values (#884)
  • possible overflow issues (#877)
  • dashmate: ambiguous validation errors for file certificates (#870)
  • dashmate: config.isPlatformEnabled is not a function (#872)
  • dpp: incorrect public key validator schema in ST Facade (#854)
  • scripts: update configure_test_network for hpmn (#863)
  • wasm-dpp: fix decoding protocol version varint error to match previous implementation (#849)
  • ci: fix release workflow syntax error (#808)
  • dashmate: make dashmate helper run commands as host user (#765)
  • dashmate: visual fixes for dashmate status (#787)
  • dpp: update jsonschema-rs and enable tests (#780)
  • rs-dpp: fetch latest core chain locked height misuse (#789)
  • update webpack to resolve npm audit error (#822)
  • wasm-dpp: Identifier and its tests (#821)
  • dashmate: Dash Core container is unable to restart properly under WSL (#736)
  • dashmate: fix migration for configs without platform (#738)
  • dashmate: migrations fixes (#759)
  • dpp: existing property in a new index (#694)
  • ua-parser-js vulnerability (#756)
  • dashmate: ZeroSSL certificate cannot be downloaded (#718)
  • dpp: can’t create fingerprint from a document transition (#723)
  • drive: merk caching in contract caching (irony) (#710)
  • find_duplicates_by_id.rs not compiling (#702)
  • Starcounter-Jack JSON-Patch Prototype Pollution vulnerability (#708)
  • dashmate: setDay is not a function (#677)
  • dashmate: ZeroSSL certificates are not saved in WSL (#676)
  • drive: initChain handler is not idempotent (#675)
  • dashmate: SSL domain verification config could not be generated in WSL (#673)
  • build not working because of deprecated wasm-bindgen feature (#639)
  • dapi: fail to reconnect to tenderdash in case of ENOTFOUND (#621)
  • dashmate: broken helper docker image (#630)
  • dashmate: outdated Drive and DAPI images (#668)
  • dashmate: ZeroSSL certificate renewal (#624)
  • drive: invalid create name
  • drive: multi transactions doesn't work properly (#636)
  • drive: remove ambiguous use
  • DataContract.spec.js in wasm-dpp (#618)
  • dpp: [v23 port] cannot read properties of null (reading 'getBalance') (dashpay/rs-platform#163)
  • dpp: [v23 port] non-deterministic fees due to data contract cache (dashpay/rs-platform#161)
  • dpp: [v23 port] repeated disabling of already disabled identity key (dashpay/rs-platform#162)
  • renamed method from rs-dpp (#623)
  • featureFlags test was awaiting blocks that have not been produced (#602)
  • dapi: getConsensusParamsHandler was handling wrong Tendermint error (#601)
  • dashmate: invalid testnet TenderDash genesis (#608)
  • dashmate: SSL verification server cannot be started (#606)
  • typo dash-amte to dashmate (#599)
  • dapi-client: temporary use http protocol by default (#573)
  • using ProtocolError in cbor_value_to_json_value could lead to a stackoverflow error (dashpay/rs-platform#164)
  • "number" property type is not implemented (dashpay/rs-platform#47)
  • Identity.balance was of type i64 but should be u64 (dashpay/rs-platform#23)
  • appendStack is not present in NPM package (dashpay/rs-platform#41)
  • ci: support alpha prereleases (#560)
  • comply with newest grovedb (dashpay/rs-platform#121)
  • contract parsing errors
  • create and update document in different transactions (dashpay/rs-platform#68)
  • create two documents in different transactions (dashpay/rs-platform#69)
  • delete empty trees (dashpay/rs-platform#49)
  • dpp: [v23 port] change allowed security level for withdrawal purpose to critical (dashpay/rs-platform#140)
  • duplicate batched storage fee update (dashpay/rs-platform#150)
  • fix build when using grovedb master
  • fix paths
  • fix some tests
  • handle key not found error from grovedb (dashpay/rs-platform#33)
  • index already exists on update document (dashpay/rs-platform#64)
  • many insert commit fail (dashpay/rs-platform#45)
  • merging equal path queries (dashpay/rs-platform#128)
  • merging required properties in Data Cotnract
  • neon security vulnerability (dashpay/rs-platform#110)
  • non-deterministic apply contract (dashpay/rs-platform#46)
  • non-present optional fields shouldn't be indexed
  • order by on non equal fields (dashpay/rs-platform#37)
  • owner id and additional tests (dashpay/rs-platform#59)
  • path_queries can only refer to items and references (dashpay/rs-platform#88)
  • primary key tree is not present (dashpay/rs-platform#74)
  • query empty contract fails (dashpay/rs-platform#65)
  • query validation logic (dashpay/rs-platform#104)
  • remove prebuilds at pretest stage to prevent random mocha error process killed
  • strange error on deletion of specific data set (dashpay/rs-platform#90)
  • unable to decode contract
  • update contract (dashpay/rs-platform#72)
  • update to latest grovedb and added some tests. (dashpay/rs-platform#123)
  • use binary zero instead of ascii
  • use correct linker
  • use slices instead of binary strings to represent the values we intend

Continuous Integration

  • increase release timeouts (#1032)
  • add PR linter (#1025)
  • add timeouts to self-hosted ci runs (#1026)
  • remove drive node.js binding release
  • sign MacOs Dashmate release (#890)
  • dashmate release script fix (#846, #836)
  • increase cache-max-size (#704)
  • add rust toolchain with wasm target to release workflow
  • integrate rust and js build process
  • add toolchain to setup rust actions
  • build package before lining
  • checks for JS and Rust packages
  • code scanning (#626)
  • do not build everything everytime
  • fix concurrency for js checks
  • fix env syntax in release workflow (#664)
  • fix rs-checks
  • fix workflow names
  • increase JS linting timeout
  • increase timeouts
  • move concurrency to package workflows
  • move out workflows from include
  • set concurrency based on workflow
  • shorten workflow
  • release.yml contained wrong indentation (#597)
  • publish envoy and dashmate-helper docker images after release (#595)
  • update workflows to use stable toolchain (dashpay/rs-platform#167)
  • musl binaries were not built correctly (dashpay/rs-platform#58)
  • add deps security check
  • add Node.JS workflow
  • add release workflow
  • add rust-toolchain.toml
  • fix aarch64 musl build (dashpay/rs-platform#36)
  • formatter check
  • implement initial ci
  • prevent PRs to master (dashpay/rs-platform#28)
  • rename workflow
  • run GitHub action for PR on dev branches (dashpay/rs-platform#38)

Tests

  • dpp: remove old dpp fixtures from tests (#971)
  • rs-drive: fix path to EntropyGenerator (#856)
  • wasm-dpp: decodeProtocolEntity test (#834)
  • drive: synchronizeMasternodeIdentitiesFactory (#586)
  • add test with fetching non exist document
  • added test for in with only some elements (dashpay/rs-platform#81)
  • dpns tests (dashpay/rs-platform#89)
  • encoding (added negative and positive infinity)
  • refactor and implementation of document's validator tests

Build System

  • dashmate: better versioning (#988)
  • dashmate: prepare MacOs build for notarization (#985)
  • dashmate: remove MacOs malicious software warning (#977)
  • dashmate: fix removing unnecessary packages
  • dashamte: build arm64 deb file instead of armel (#943)
  • dashamte: remove deb release docker dependencies (#934)
  • dashmate: build only linux tarballs (#936)
  • dashmate: fix deb package release (#864)
  • operations in configure.sh script were in a wrong order (#876)
  • add missing deps (#824)
  • add bash to Drive's Dockerfile
  • continuation of build profile fixing
  • fix cargo build profile option
  • use debug profile for development
  • release script could not find previous tag in some cases (#558)

Code Refactoring

  • dashmate: always keep platform config (#868)
  • dashmate: move core devnet options to subsection (#867)
  • change dpp to be based on platform value (#809)
  • remove various Clippy warnings (#793)
  • rs-dpp: bring error type to one format (#804)
  • initial cleanup of Drive and DPP document types (#750)
  • use a trait to remove the need for some functions (#747)
  • dashmate: status command (#660)
  • drive: remove redundant genesis time key (#722)
  • use FeeResult to collect block fees (#652)
  • accept DPP entities
  • adjust how left_to_right is assigned
  • documents refactoring, with batching and fee work (dashpay/rs-platform#118)
  • error types to handle user errors (dashpay/rs-platform#77)
  • fix numerous unused include warnings
  • query (dashpay/rs-platform#96)
  • query $id property (dashpay/rs-platform#56)
  • remove a few unneeded mut keywords, fixes warnings
  • remove unused variable
  • replace unused mut variable with todo for calculating cost
  • return array type in case of non byteArray
  • split GroveDB and Drive
  • split query_documents into two methods
  • update grovedb (dashpay/rs-platform#91)
  • use 32 byte identity fields

Performance Improvements

  • drive: do not call process proposal after prepare (#656)

Miscellaneous Chores

  • bump sentinel to 1.7.3 (#1057)
  • dashmate: rename compose project name (#1055)
  • dashmate: update testnet preset (#1054)
  • increase client side timeouts (#1050)
  • dapi-client: upate testnet masternode addresses whitelist (#1023)
  • disable protocol version signaling (#1029)
  • dashamte: remove deprecation warning on start (#925)
  • dashmate: update production dashcore versions for mainnet and testnet (#840)
  • sdk: add eslint (#829)
  • rs-dpp and wasm-dpp updates for integration (#875)
  • wasm-dpp: proper identifier buffer inheritance (#879)
  • dashmate: upgrade dashcore version for local networks (#843)
  • drive: temporary disable payout script (#835)
  • drive: temporary disable unstable withdrawal logic (#831)
  • sdk: add eslint (#827)
  • dashmate: sync Tenderdash config with Tenderdash v0.10.0-dev.8 (#746)
  • update Tenderdash to 0.10.0-dev.8 (#741)
  • dpp: wasm dpp data contract test error types (#684)
  • drive: log synchronize identities properly (#686)
  • dashmate: update tenderdash up to 0.10.0-dev.6 (#674)
  • drive: remove txs from logs (#683)
  • dashmate: update tenderdash up to 0.10.0-dev.6 (#674)
  • drive: remove txs from logs (#683)
  • add yarn cache
  • dpp: switch dpp to working revision
  • drive: comprehensive logging for same block execution (#657)
  • ensure consistent Rust dependencies (#658)
  • fix NPM security vulnerabilities
  • ignore target dir for docker
  • release: bump package version
  • release: update changelog and bump version to 0.24.0-dev.9 (#667)
  • remove js-abci from workspaces
  • remove lodash per-method deps (#661)
  • remove package-lock.json
  • update to yarn 3.3.0
  • update bls-signatures to fix dependencies conflict (dashpay/rs-platform#184)
  • dpp: re-enable limited array support for data contracts (dashpay/rs-platform#165)
  • dpp: [v23 port] allow only asc order for indices (dashpay/rs-platform#135)
  • update error prefix (dashpay/rs-platform#67)
  • update to new GroveDB (dashpay/rs-platform#108), closes dashpay/rs-platform#107

Styles

  • fix formatting
  • extract field_type
  • format json
  • remove commented code
  • remove todo
  • run cargo fmt
  • sam's *** naming
  • use explicit xor (dashpay/rs-platform#57)