<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>Forem: Dash Core Group Devs</title>
    <description>The latest articles on Forem by Dash Core Group Devs (@dcgcrew).</description>
    <link>https://forem.com/dcgcrew</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F870037%2F9a858f87-5de6-4ff9-b858-fbd20a3f87de.png</url>
      <title>Forem: Dash Core Group Devs</title>
      <link>https://forem.com/dcgcrew</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/dcgcrew"/>
    <language>en</language>
    <item>
      <title>Dash Core Group Introduces: GroveDB</title>
      <dc:creator>Dash Core Group Devs</dc:creator>
      <pubDate>Wed, 28 Jun 2023 14:23:50 +0000</pubDate>
      <link>https://forem.com/dcgcrew/dash-core-group-introduces-grovedb-1pnj</link>
      <guid>https://forem.com/dcgcrew/dash-core-group-introduces-grovedb-1pnj</guid>
      <description>&lt;p&gt;We're happy to introduce you one of the most powerful tools for building web3 infrastructure, GroveDB. &lt;br&gt;
GroveDB stands as the pioneering database that empowers cryptographic proofs for intricate queries.&lt;/p&gt;

&lt;p&gt;Originally designed for Dash Platform, GroveDB boasts seamless integration capabilities with other applications seeking similar functionality.&lt;/p&gt;

&lt;p&gt;So, how can Grove DB be helpful?&lt;br&gt;
This is a list of Grove DB features:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Query proofs&lt;/strong&gt; - GroveDB holds the distinction of being the first-ever database to offer support for proofs encompassing queries of greater complexity beyond simple single-key retrievals.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Secondary indexes&lt;/strong&gt; - With GroveDB, you have the power to effortlessly create indexes on any field, including unique indexes and compound indexes. This flexible feature allows for efficient data organization and retrieval within the database.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Mutable and immutable data storage&lt;/strong&gt; - GroveDB comes equipped with built-in functionality that seamlessly supports both types of indexes within a single database. This integrated capability ensures a comprehensive and versatile solution for efficient data management and retrieval.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Inclusion and absence proofs&lt;/strong&gt; - &lt;br&gt;
GroveDB revolutionizes data verification by introducing Merkle proofs, enabling the capability to verify the presence or absence of items with utmost accuracy. This feature enhances data integrity and security within the database environment.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Operation costs&lt;/strong&gt; - Gain valuable insights into operation costs with GroveDB, allowing you to accurately assess and estimate costs before executing them. This invaluable feature empowers users to make informed decisions and optimize resource allocation within their database operations.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;ACID compliancy&lt;/strong&gt; - Experience the benefits of ACID (Atomicity, Consistency, Isolation, Durability) compliance with GroveDB. This robust database ensures data integrity, reliability, and transactional consistency, providing a solid foundation for reliable and secure data management.&lt;/p&gt;

&lt;p&gt;In general, GroveDB offers even greater functionality compared to other databases.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--8NKmfBkB--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/94o08xxveb4t7qph7go1.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--8NKmfBkB--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/94o08xxveb4t7qph7go1.png" alt="Image description" width="800" height="413"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Architecture
&lt;/h3&gt;

&lt;p&gt;Insertion and deletion operations function as expected in GroveDB, updating the relevant subtrees and providing appropriate proofs of membership or non-membership.&lt;/p&gt;

&lt;h4&gt;
  
  
  Tree Structures
&lt;/h4&gt;

&lt;p&gt;Instead of using separate authenticated data structures, GroveDB adopts a unified hierarchical authenticated data structure based on the concept of Database Outsourcing with Hierarchical Authenticated Data Structures. Elements within the structure represent the most fundamental units and can be represented in various forms, such as items, item references, trees, trees with items, or trees with item references. An element encompasses an item, a reference to an object, or a subtree.&lt;/p&gt;

&lt;p&gt;The tree implementation in GroveDB is based on our modified version of Merk, with custom patches for enhanced compatibility with GroveDB. Merk stands out for its AVL tree structure, where intermediate nodes contain key/value pairs. Each node includes a third hash, called kv_hash, in addition to the hashes of its left and right children. The &lt;em&gt;kv_hash&lt;/em&gt; is calculated as &lt;em&gt;kv_hash=H(key,value)&lt;/em&gt;, and the node hash is computed as &lt;em&gt;H(kv_hash, left_child_hash, right_child_hash)&lt;/em&gt;. Merk utilizes Blake2B hashing, while rs-merkle employs SHA256.&lt;/p&gt;

&lt;h4&gt;
  
  
  Storage
&lt;/h4&gt;

&lt;p&gt;RocksDB, a key-value store originally derived from LevelDB and further developed by Facebook, serves as the underlying storage engine for GroveDB. We selected RocksDB due to its exceptional performance, maturity, and compatibility with our technology stack. Merk itself is built on top of RocksDB.&lt;/p&gt;

&lt;p&gt;GroveDB incorporates three types of storage: auxiliary storage, metadata storage, and tree root storage. Auxiliary storage stores plain key-value data that is not utilized in the consensus process. Metadata storage holds information beyond the scope of GroveDB usage and does not have any prefixes or association with subtrees; it exists at a higher level. Tree root storage, on the other hand, is responsible for storing subtrees.&lt;/p&gt;

&lt;p&gt;A database transaction in GroveDB wraps around the OptimisticTransactionDB primitive provided by RocksDB. An optimistic transaction operates under the assumption that conflicts will be infrequent, which are detected during the commit phase. This differs from the pessimistic model that relies on locks.&lt;/p&gt;

&lt;h3&gt;
  
  
  Setting up
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Install &lt;a href="https://www.rust-lang.org/tools/install"&gt;rustup&lt;/a&gt; using your preferred method.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Rust nightly is required to build, so make you are using the correct version.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;code&gt;rustup install nightly&lt;/code&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Clone the repo and navigate to the main directory:&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;code&gt;git clone https://github.com/dashevo/grovedb.git &amp;amp;&amp;amp; cd grovedb&lt;/code&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;From here we can build&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;code&gt;cargo build&lt;/code&gt;&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>programming</category>
      <category>web3</category>
      <category>opensource</category>
    </item>
    <item>
      <title>Platform &amp; Core Dev Updates Journal - May 2</title>
      <dc:creator>Dash Core Group Devs</dc:creator>
      <pubDate>Wed, 03 May 2023 14:34:39 +0000</pubDate>
      <link>https://forem.com/dcgcrew/platform-core-dev-updates-journal-may-2-4ij5</link>
      <guid>https://forem.com/dcgcrew/platform-core-dev-updates-journal-may-2-4ij5</guid>
      <description>&lt;p&gt;Dash Platform has never been that close to the release! In this wrap-up, we will provide an overview of the latest developments and updates to the Dash Platform, highlighting the progress.&lt;/p&gt;

&lt;p&gt;Watch the video or check the short summary below!&lt;/p&gt;


&lt;div class="crayons-card c-embed text-styles text-styles--secondary"&gt;
      &lt;div class="c-embed__cover"&gt;
        &lt;a href="https://www.youtube.com/live/YGYEDsvDN7M?feature=share" class="c-link s:max-w-50 align-middle" rel="noopener noreferrer"&gt;
          &lt;img alt="" src="https://res.cloudinary.com/practicaldev/image/fetch/s--tjPA0wTH--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://i.ytimg.com/vi/YGYEDsvDN7M/maxresdefault.jpg" height="450" class="m-0" width="800"&gt;
        &lt;/a&gt;
      &lt;/div&gt;
    &lt;div class="c-embed__body"&gt;
      &lt;h2 class="fs-xl lh-tight"&gt;
        &lt;a href="https://www.youtube.com/live/YGYEDsvDN7M?feature=share" rel="noopener noreferrer" class="c-link"&gt;
          Dash Platform &amp;amp; Core Development Update - 2023 May 2 - YouTube
        &lt;/a&gt;
      &lt;/h2&gt;
        &lt;p class="truncate-at-3"&gt;
          Dash Platform &amp;amp; Core Development Update - 2023 May 2
        &lt;/p&gt;
      &lt;div class="color-secondary fs-s flex items-center"&gt;
          &lt;img alt="favicon" class="c-embed__favicon m-0 mr-2 radius-0" src="https://res.cloudinary.com/practicaldev/image/fetch/s--A0cz0T_8--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://www.youtube.com/s/desktop/bbdd2cc1/img/favicon.ico" width="16" height="16"&gt;
        youtube.com
      &lt;/div&gt;
    &lt;/div&gt;
&lt;/div&gt;


&lt;h2&gt;
  
  
  Dashmate stabilization
&lt;/h2&gt;

&lt;h3&gt;
  
  
  What We Planned
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Testing Dashmate &lt;strong&gt;&lt;em&gt;in progress&lt;/em&gt;&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Dashmate E2E tests &lt;strong&gt;&lt;em&gt;in progress&lt;/em&gt;&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Dashmate debian package for arm64 &lt;strong&gt;&lt;em&gt;done&lt;/em&gt;&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Remove Docker dependencies from debian package &lt;strong&gt;&lt;em&gt;done&lt;/em&gt;&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Warning to open Dashmate package for Mac &lt;strong&gt;&lt;em&gt;done&lt;/em&gt;&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Generate random RPC user and password on &lt;code&gt;dashmate setup&lt;/code&gt; &lt;strong&gt;&lt;em&gt;done&lt;/em&gt;&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Can't find begoo/index with &lt;code&gt;yarn dashmate setup&lt;/code&gt; &lt;strong&gt;&lt;em&gt;done&lt;/em&gt;&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Reward shares can be negative during HP masternode registration &lt;strong&gt;&lt;em&gt;done&lt;/em&gt;&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;When submit the form with BLS private key and reward share, it accepts invalid BLS key &lt;strong&gt;&lt;em&gt;done&lt;/em&gt;&lt;/strong&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  What Is Done
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Invalid protx register command in output of &lt;code&gt;dashmate setup&lt;/code&gt;  &lt;strong&gt;&lt;em&gt;done&lt;/em&gt;&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Dashmate status shows empty masternode status &lt;strong&gt;&lt;em&gt;done&lt;/em&gt;&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Select number of masternodes during local setup freezes &lt;strong&gt;&lt;em&gt;done&lt;/em&gt;&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Error form ZeroSSL during IP address verification &lt;strong&gt;&lt;em&gt;done&lt;/em&gt;&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Dashmate for Windows doesn't handle paths properly &lt;strong&gt;&lt;em&gt;done&lt;/em&gt;&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Provide helpful information if Docker or Docker Compose v2 is not installed &lt;strong&gt;&lt;em&gt;done&lt;/em&gt;&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;The Docker socket not found error using Docker Desktop &lt;strong&gt;&lt;em&gt;done&lt;/em&gt;&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Dashmate local setup ends up with deadline exceeded error  &lt;strong&gt;&lt;em&gt;done&lt;/em&gt;&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Multiple Dashmate group reset command issues &lt;strong&gt;&lt;em&gt;done&lt;/em&gt;&lt;/strong&gt;
&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  v0.24 deployment
&lt;/h2&gt;

&lt;h3&gt;
  
  
  What We Planned
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Update deployment tool to deploy with dashmate version and branch &lt;strong&gt;&lt;em&gt;done&lt;/em&gt;&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Platform v0.24-dev deployment and testing on devnet &lt;strong&gt;&lt;em&gt;done&lt;/em&gt;&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Handle double init chain call in Drive &lt;strong&gt;&lt;em&gt;done&lt;/em&gt;&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Handle duplicated masternode keys on testnet &lt;strong&gt;&lt;em&gt;done&lt;/em&gt;&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Platform v0.24-dev deployment to testnet &lt;strong&gt;&lt;em&gt;in progress&lt;/em&gt;&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Failed recovering or verifying threshold signature: threshold block signature is invalid &lt;strong&gt;&lt;em&gt;in progress&lt;/em&gt;&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Compare js-dpp and wasm-dpp tests &lt;strong&gt;&lt;em&gt;done&lt;/em&gt;&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;createdAt != updatedAt on document create &lt;strong&gt;&lt;em&gt;done&lt;/em&gt;&lt;/strong&gt;
&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  v0.25 Development
&lt;/h2&gt;

&lt;h3&gt;
  
  
  What Is Done
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Masternode Identities in review &lt;strong&gt;&lt;em&gt;done&lt;/em&gt;&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Persist ephemeral state in testing &lt;strong&gt;&lt;em&gt;done&lt;/em&gt;&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Completely clean DPP serialization and deserialization &lt;strong&gt;&lt;em&gt;done&lt;/em&gt;&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;We used Proc Macros (very clean code)&lt;/li&gt;
&lt;li&gt;Implemented a Proc Macro for signable bytes &lt;strong&gt;&lt;em&gt;done&lt;/em&gt;&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Initialize chain on same state transition &lt;strong&gt;&lt;em&gt;done&lt;/em&gt;&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Validator set update on init chain &lt;strong&gt;&lt;em&gt;done&lt;/em&gt;&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Heavy tests for masternode list updates &lt;strong&gt;&lt;em&gt;done&lt;/em&gt;&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;EDDSA-Hash160 key type &lt;strong&gt;&lt;em&gt;done&lt;/em&gt;&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;System Key Purpose type &lt;strong&gt;&lt;em&gt;done&lt;/em&gt;&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Non unique keys full support (public key hashes, script hashes) &lt;strong&gt;&lt;em&gt;done&lt;/em&gt;&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;v0.24 backports (Up till Friday) &lt;strong&gt;&lt;em&gt;done&lt;/em&gt;&lt;/strong&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Deployment - Phase 1 (Dashmate Local)
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Successfully deployed to Dashmate&lt;/li&gt;
&lt;li&gt;Currently on height 7000 + with absolutely no errors&lt;/li&gt;
&lt;li&gt;Multiple Validator Set Rotations have happened&lt;/li&gt;
&lt;li&gt;Will try to run for two more weeks to see masternode payouts&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Deployment - Phase 2 (Devnet)
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Multiple deployments &lt;strong&gt;&lt;em&gt;in progress&lt;/em&gt;&lt;/strong&gt;
Goal: Test Platform activation when core transitions from v19 to v20&lt;/li&gt;
&lt;li&gt;Deployment 1 (failed): 1 wrong parameter &lt;strong&gt;&lt;em&gt;Fixed&lt;/em&gt;&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Deployment 2 &amp;amp; 3: Failed because of issue in RPC Core client (both times some optional fields were not allowed to be empty) &lt;strong&gt;&lt;em&gt;Fixed&lt;/em&gt;&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Deployment 4 and more &lt;strong&gt;&lt;em&gt;in progress&lt;/em&gt;&lt;/strong&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  What Is Left
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Fix queries / SDK.&lt;/li&gt;
&lt;li&gt;Validation costs&lt;/li&gt;
&lt;li&gt;Just in time atomic state transition payments&lt;/li&gt;
&lt;li&gt;Finalization of withdrawals&lt;/li&gt;
&lt;li&gt;Versioning &lt;strong&gt;&lt;em&gt;in progress&lt;/em&gt;&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;A lot of Testing&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Core Team
&lt;/h2&gt;

&lt;h3&gt;
  
  
  V19 Core Upgrade Status
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Hard Fork signalling began&lt;/li&gt;
&lt;li&gt;~17.5% Miner signaling&lt;/li&gt;
&lt;li&gt;Masternodes ~65% updated&lt;/li&gt;
&lt;li&gt;Earliest Possible Activation May 13th -&amp;gt; May 20th&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--4XETjI8n--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/i3yll5fjwe4j79v2bw6c.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--4XETjI8n--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/i3yll5fjwe4j79v2bw6c.png" alt="Image description" width="800" height="407"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Core Status - Current Development
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;V19.0.1 Expected&lt;/li&gt;
&lt;li&gt;V20
On Chain CLSigs / Quorum Selection based on CLSigs &lt;strong&gt;&lt;em&gt;in progress / partial devnet testing&lt;/em&gt;&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Implementation /backporting of GUIX; replacement for gitian &lt;strong&gt;&lt;em&gt;in progress&lt;/em&gt;&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Enhanced Hard Fork Implementation &lt;strong&gt;&lt;em&gt;in progress&lt;/em&gt;&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Asset Locks &lt;strong&gt;&lt;em&gt;devnet testing&lt;/em&gt;&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Masternode Reward Location Reallocation &lt;strong&gt;&lt;em&gt;in progress&lt;/em&gt;&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Merged PRs: 5334,  5336, 5338, 5339, 5346, 5341, 5340, 5255, 5348, 5351 &lt;strong&gt;&lt;em&gt;done&lt;/em&gt;&lt;/strong&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--aeGIYKxU--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/2ke0oxd35dnsu9zaqad9.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--aeGIYKxU--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/2ke0oxd35dnsu9zaqad9.png" alt="Image description" width="800" height="192"&gt;&lt;/a&gt;&lt;/p&gt;

</description>
      <category>devjournal</category>
      <category>webdev</category>
      <category>opensource</category>
      <category>web3</category>
    </item>
    <item>
      <title>Platform &amp; Core Dev Updates Journal – Feb 7</title>
      <dc:creator>Dash Core Group Devs</dc:creator>
      <pubDate>Tue, 14 Feb 2023 19:33:49 +0000</pubDate>
      <link>https://forem.com/dcgcrew/platform-core-dev-updates-journal-feb-7-53nj</link>
      <guid>https://forem.com/dcgcrew/platform-core-dev-updates-journal-feb-7-53nj</guid>
      <description>&lt;p&gt;So, what happened over the last week with Dash Platform? &lt;br&gt;
Short summary below.&lt;/p&gt;

&lt;p&gt;&lt;iframe width="710" height="399" src="https://www.youtube.com/embed/uKwQnP7JyfU"&gt;
&lt;/iframe&gt;
&lt;/p&gt;




&lt;h2&gt;
  
  
  TenderDash
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Stabilization
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;What We Planned&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Stabilization and Improvements (v1.0)&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;fix(config)!: quorum type set to 0 during replay at genesis &lt;strong&gt;&lt;em&gt;done&lt;/em&gt;&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;conversion of PEM-encoded ED25519 node keys &lt;strong&gt;&lt;em&gt;done&lt;/em&gt;&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;feat(cmd): derive node key from bip39 mnemonic &lt;strong&gt;&lt;em&gt;done&lt;/em&gt;&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;build(docker): add abcidump to release image &lt;strong&gt;&lt;em&gt;done&lt;/em&gt;&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Seed connectivity issues &lt;strong&gt;&lt;em&gt;in progress&lt;/em&gt;&lt;/strong&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Investigate deadlocks (v1.1)&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;refactor: add-vote operation &lt;strong&gt;&lt;em&gt;done&lt;/em&gt;&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;refactor: DoPrevoteCommand replaced on Prevoter implementation &lt;strong&gt;&lt;em&gt;done&lt;/em&gt;&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;refactor: consensus peer gossip mechanism &lt;strong&gt;&lt;em&gt;in review&lt;/em&gt;&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;refactor: add-vote operation &lt;strong&gt;&lt;em&gt;in review&lt;/em&gt;&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;refactor: consensus state to fix deadlock &lt;strong&gt;&lt;em&gt;in review&lt;/em&gt;&lt;/strong&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;What’s Left before Testing Phase&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;del&gt;Stabilize same-block execution&lt;/del&gt;&lt;/li&gt;
&lt;li&gt;&lt;del&gt;Update BLS library&lt;/del&gt;&lt;/li&gt;
&lt;li&gt;Updated BLS library integration&lt;/li&gt;
&lt;li&gt;Adjust vote extensions for withdrawal transactions&lt;/li&gt;
&lt;li&gt;&lt;del&gt;Improve seed node operations&lt;/del&gt;&lt;/li&gt;
&lt;li&gt;&lt;del&gt;Drive integration&lt;/del&gt;&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  GroveDB
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Tasks:&lt;/strong&gt; &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Sum tree parent costs &lt;strong&gt;&lt;em&gt;done&lt;/em&gt;&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Merk Proof Specification draft &lt;strong&gt;&lt;em&gt;done&lt;/em&gt;&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;GroveDB Proof Specification draft &lt;strong&gt;&lt;em&gt;in progress&lt;/em&gt;&lt;/strong&gt;
&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Protocol
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Identity v2
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Protocol Tasks 1.&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Identity v2 &lt;strong&gt;&lt;em&gt;done&lt;/em&gt;&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Efficient Root Tree &lt;strong&gt;&lt;em&gt;done&lt;/em&gt;&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Balance Tree &lt;strong&gt;&lt;em&gt;done&lt;/em&gt;&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Sum Tree Integration &lt;strong&gt;&lt;em&gt;done&lt;/em&gt;&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Strategy tests &lt;strong&gt;&lt;em&gt;done&lt;/em&gt;&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Total credit balance verification &lt;strong&gt;&lt;em&gt;done&lt;/em&gt;&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Calculate expected total credits amount &lt;strong&gt;&lt;em&gt;done&lt;/em&gt;&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Efficient Data Serialization &lt;strong&gt;&lt;em&gt;in progress&lt;/em&gt;&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Refactor DPP document types &lt;strong&gt;&lt;em&gt;done&lt;/em&gt;&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Variant Protocol versions &lt;strong&gt;&lt;em&gt;done&lt;/em&gt;&lt;/strong&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Protocol Tasks 2.&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Add support for Core v19-beta.X &lt;strong&gt;&lt;em&gt;in progress&lt;/em&gt;&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Create self-contained Dashmate package &lt;strong&gt;&lt;em&gt;in progress&lt;/em&gt;&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Use HTTP port for gRPC native &lt;strong&gt;&lt;em&gt;done&lt;/em&gt;&lt;/strong&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Credit Withdrawals&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Introduce withdrawals data contract &lt;strong&gt;&lt;em&gt;in review&lt;/em&gt;&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Implement the pooling process (type 0 only) for withdrawals  &lt;strong&gt;&lt;em&gt;in review&lt;/em&gt;&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Update status of withdrawals after broadcasting &lt;strong&gt;&lt;em&gt;in review&lt;/em&gt;&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Add revision logic to IdentityCreditsWithdrawal transition &lt;strong&gt;&lt;em&gt;in review&lt;/em&gt;&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Indices from expired withdrawal transactions must be reused &lt;strong&gt;&lt;em&gt;in review&lt;/em&gt;&lt;/strong&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;What’s Left&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Major&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;del&gt;Fee Refunds&lt;/del&gt;&lt;/li&gt;
&lt;li&gt;Accomplish withdrawals &lt;strong&gt;&lt;em&gt;in review&lt;/em&gt;&lt;/strong&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Minor&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;del&gt;Logging of same block execution&lt;/del&gt;&lt;/li&gt;
&lt;li&gt;&lt;del&gt;Use block candidate context in State Repository&lt;/del&gt;&lt;/li&gt;
&lt;li&gt;&lt;del&gt;Deal with situation where fees are higher than Balance&lt;/del&gt;&lt;/li&gt;
&lt;li&gt;&lt;del&gt;Add Sum Tree feature for Pool trees&lt;/del&gt;&lt;/li&gt;
&lt;li&gt;Asset Lock and Unlock transactions integration (blocked by dpp integration)&lt;/li&gt;
&lt;li&gt;
&lt;del&gt;BLS library rust binding&lt;/del&gt; &lt;strong&gt;not for beta 1&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Masternode block reward distribution&lt;/li&gt;
&lt;li&gt;Withdrawals verification after rust dpp integration&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Rust Port Update
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;What we planned&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Merged all Identities and Asset Lock pull requests &lt;strong&gt;&lt;em&gt;done&lt;/em&gt;&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Asynchronous State Repository &lt;strong&gt;&lt;em&gt;done&lt;/em&gt;&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;JSON-Schema missing functionality &lt;strong&gt;&lt;em&gt;in progress&lt;/em&gt;&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Documents Transitions &lt;strong&gt;&lt;em&gt;in progress&lt;/em&gt;&lt;/strong&gt; (2 integration tests left)&lt;/li&gt;
&lt;li&gt;Data Contract facade and integration &lt;strong&gt;&lt;em&gt;in review&lt;/em&gt;&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;V24 backports and removing tech debt &lt;strong&gt;&lt;em&gt;in progress&lt;/em&gt;&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Unified error format to rs-dpp &lt;strong&gt;&lt;em&gt;in progress&lt;/em&gt;&lt;/strong&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;What's next&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Finish v24 backports&lt;/li&gt;
&lt;li&gt;Merge all unmerged PRs that are related to Documents and Data Contracts&lt;/li&gt;
&lt;li&gt;Finish adding missing json-schema features&lt;/li&gt;
&lt;li&gt;Since Identity v2 has been merged as well, we can now start the platform integration (DAPI/Dive/SDK) after finishing the v24 backports&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Core Dev
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;What’s next?&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;v19.0.0 Release Candidate&lt;/li&gt;
&lt;li&gt;Unlikely v18.2.2 Release w/ minor fixes&lt;/li&gt;
&lt;li&gt;Continued maintenance, backporting and feature development&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>vibecoding</category>
      <category>learning</category>
      <category>productivity</category>
    </item>
    <item>
      <title>GroveDB Sum Trees</title>
      <dc:creator>Dash Core Group Devs</dc:creator>
      <pubDate>Thu, 09 Feb 2023 17:45:14 +0000</pubDate>
      <link>https://forem.com/dcgcrew/grovedb-sum-trees-4239</link>
      <guid>https://forem.com/dcgcrew/grovedb-sum-trees-4239</guid>
      <description>&lt;p&gt;One of the innovative features of &lt;a href="https://www.dash.org/blog/why-you-should-be-excited-about-the-dash-platform/"&gt;Dash Platform&lt;/a&gt; that we at Dash Core Group are excited to present is a GroveDB feature called sum trees. GroveDB sum trees are Merkle AVL trees whose root nodes hold the sum of all integer values in the tree. Any time a value is added, removed, or updated in a sum tree, every parent node and hence the root’s “sum value” is updated. Sum trees are a very powerful tool for trustlessly and efficiently retrieving the sum of a set or range of values, as it would take a relatively large, often enormous, amount of computing resources to achieve otherwise. In turn, vital security checks are made highly efficient and simple, and a whole new arena of use cases is opened up for dApps.&lt;/p&gt;

&lt;h2&gt;
  
  
  Architecture
&lt;/h2&gt;

&lt;p&gt;Sum trees have a simple architecture. In addition to the hashes of regular Merkle tree nodes, each node in a sum tree holds a “sum value” and an optional “sum item”. A &lt;strong&gt;sum item&lt;/strong&gt; is a key-value pair where the value is a signed integer. It can represent anything that has an integer value, such as an identity’s credit balance or the number of unsold tickets remaining for a concert. A &lt;strong&gt;sum value&lt;/strong&gt; is the value of a node’s own sum item plus the sum values of its child nodes.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--A6Mi3j_W--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/zjq0xocu9o533wv0m692.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--A6Mi3j_W--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/zjq0xocu9o533wv0m692.png" alt="Image description" width="880" height="429"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;As illustrated in the diagram above, the sum tree leaf nodes’ sum items are equal to their sum values. There’s nothing to sum. Moving up a layer, each parent node has their own sum item (which is optional, as will be explained next) and a sum value, which is the sum of their child nodes’ sum values plus their own sum item. This structure repeats itself from the leaves up to the tree’s root node, where the entire tree’s sum value is held.&lt;/p&gt;

&lt;p&gt;Note that all sum tree nodes hold sum values but don’t need to hold a sum item. In other words, you can still hold any type of element in the tree, such as a key-value pair with a string value, a non-sum subtree, or even an integer value that isn’t a sum item. These elements won’t affect the sum value of the tree. You’re therefore able to collect sums in the same tree you use to prove the existence of non-sum elements with Merkle proofs.&lt;/p&gt;

&lt;h2&gt;
  
  
  Application
&lt;/h2&gt;

&lt;p&gt;The general use case for sum trees is to trustlessly and efficiently retrieve the sum of a set or range of values. Developers can implement sum trees in their projects built on Dash Platform or any other platform which implements GroveDB. This section will walk through some example use cases.&lt;/p&gt;

&lt;p&gt;The Dash Platform engine itself uses sum trees to store the balances of all identities and reward distribution pools, and constantly checks them to ensure there are no inflationary or other bugs present. This is actually a huge innovation for blockchains, as inflationary bugs have been rather common and destructive to blockchains in the past. These checks provide a strong layer of security against them. Dash Platform runs these sum tree checks on every block submitted to consensus, and any which don’t pass are prevented from entering the state.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--qUTKf9QR--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/j2dpseslzigatwbfewtp.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--qUTKf9QR--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/j2dpseslzigatwbfewtp.png" alt="Image description" width="880" height="440"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;To illustrate the massive efficiency gains sum trees enable, say you have a tree which contains the number of restaurants that accept Dash in each city of a US state. The root of the tree would be the total number of Dash-accepting restaurants in the state. If you’re a true Dash fanatic, you could compare the root sum value of that state’s tree with those of all the other states to help you determine which state to live in. Say that every city in the US has at least one restaurant that accepts Dash. With sum trees, to get this information, you would only need to query the root node of each state’s tree (50 states), verify the proofs, and compare the values. With regular Merkle trees, you’d need to query every city in every state (over 100,000 cities), verify the proofs for each city, add the values up yourself for each state, and then compare.&lt;/p&gt;

&lt;p&gt;The efficiency savings in the example above are on the order of 2,000 times. Two other real-world applications where sum trees would be beneficial are:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Proof of solvency:&lt;/strong&gt; a topic which has been under much discussion again lately with the recent collapse of FTX. An exchange could store their users’ balances in a sum tree along with their hashed usernames. Users could be provided with Merkle sum proofs showing that their balances are correctly included as part of the total. To prove that they hold at least enough assets to cover the sum tree’s root value, the exchange could then do something like periodically sending a specified amount to a specified address at a specified time. While the current proof system in GroveDB would present some privacy leaks under this design, the future addition of more advanced zero-knowledge proof constructions will make this a very powerful application.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Custom tokens:&lt;/strong&gt; Dash Platform enables developers to easily create custom tokens for their data contracts with the address balances automatically stored in a sum tree. Each node of the sum tree holds an address’s balance as its sum item, and the root node can be used to check for bugs. It doesn’t only add an extra layer of security to the token contract, but it’s also a very efficient method of keeping track of address balances compared to current methods.&lt;/p&gt;

&lt;h2&gt;
  
  
  Looking Forward
&lt;/h2&gt;

&lt;p&gt;Sum trees open the door to a whole new arena of security measures and use cases that trustless systems and dApps can take advantage of. They’re just another example of innovations GroveDB is bringing to the field of blockchain databases, and we at DCG are excited to show off the efficiency and security that Dash Platform will be able to provide utilizing tools like this. For future releases, we are investigating the integration of Verkle trees and zero-knowledge proof constructions, which have the potential to make sum tree applications even more powerful and versatile. For more details on sum trees, stay tuned for a Dash Improvement Proposal coming soon, written by our CTO Samuel Westrich and GroveDB developer Wisdom Ogwu.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Originally posted on &lt;a href="https://www.dash.org/blog/grovedb-sum-trees/"&gt;Dash Blog&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

</description>
      <category>web3</category>
    </item>
    <item>
      <title>Platform + Core Dev Updates – January 24</title>
      <dc:creator>Dash Core Group Devs</dc:creator>
      <pubDate>Thu, 26 Jan 2023 14:37:26 +0000</pubDate>
      <link>https://forem.com/dcgcrew/platform-core-dev-updates-january-24-1mnb</link>
      <guid>https://forem.com/dcgcrew/platform-core-dev-updates-january-24-1mnb</guid>
      <description>&lt;p&gt;Hello Dashers!&lt;br&gt;
Here is a new portion of fresh Platform updates, now with the Core Dev team! They're gonna give you in-depth information on the development progress. &lt;br&gt;
Watch the video below, or read our short takeaway of the tasks done this sprint. &lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;iframe width="710" height="399" src="https://www.youtube.com/embed/ku8nKMRmlE4"&gt;
&lt;/iframe&gt;

&lt;/h2&gt;

&lt;h2&gt;
  
  
  TenderDash
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Task: Stabilization&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What We Planned&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Stabilizing (v.0.10 / v0.11 =&amp;gt; v1.0)&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;feat(abci): add quorum hash to RequestPrepare/ProcessProposal &lt;strong&gt;&lt;em&gt;done&lt;/em&gt;&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;refactor(proto)!: cleanup protobuf definitions and reorganize fields &lt;strong&gt;&lt;em&gt;done&lt;/em&gt;&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;chore(release): update changelog and bump version to 0.10.0-dev.8 &lt;strong&gt;&lt;em&gt;done&lt;/em&gt;&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;chore: backport changes from v0.10-dev.8 to v0.11-dev &lt;strong&gt;&lt;em&gt;done&lt;/em&gt;&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;build(docker): use version 1.2.5 of BLS lib in Docker &lt;strong&gt;&lt;em&gt;done&lt;/em&gt;&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;refactor: replace peerID on proTxHash in peer-catchup-rounds map &lt;strong&gt;&lt;em&gt;done&lt;/em&gt;&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;updated dependencies (build-push-action, buf-setup-action, golangci-lint-action) &lt;strong&gt;&lt;em&gt;done&lt;/em&gt;&lt;/strong&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Investigate deadlocks (v.1.1)&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;refactor: consensus peer gossip mechanism &lt;strong&gt;&lt;em&gt;in progress&lt;/em&gt;&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;refactor: add-vote operation &lt;strong&gt;&lt;em&gt;in progress&lt;/em&gt;&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;refactor: consensus state to fix deadlock &lt;strong&gt;&lt;em&gt;in progress&lt;/em&gt;&lt;/strong&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;What’s Left before Testing Phase&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;del&gt;Stabilize same-block execution&lt;/del&gt;&lt;/li&gt;
&lt;li&gt;&lt;del&gt;Update BLS library&lt;/del&gt;&lt;/li&gt;
&lt;li&gt;Adjust vote extensions for withdrawal transactions&lt;/li&gt;
&lt;li&gt;&lt;del&gt;Improve seed node operations&lt;/del&gt;&lt;/li&gt;
&lt;li&gt;&lt;del&gt;Drive integration&lt;/del&gt;&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  GroveDB
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;What we planned&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Better path query merge &lt;strong&gt;&lt;em&gt;done&lt;/em&gt;&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Proof of mixed levels &lt;strong&gt;&lt;em&gt;done&lt;/em&gt;&lt;/strong&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;What’s next?&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Paths in Proof results &lt;strong&gt;&lt;em&gt;done&lt;/em&gt;&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Optionals for Proof results &lt;strong&gt;&lt;em&gt;done&lt;/em&gt;&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Partial proof verification (f(g(x)) &lt;strong&gt;&lt;em&gt;in review (integrated)&lt;/em&gt;&lt;/strong&gt;
&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Protocol
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Task: Identity v2&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Credit Withdrawals&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Introduce withdrawals data contract &lt;strong&gt;&lt;em&gt;in review&lt;/em&gt;&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Implement the pooling process (type 0 only) for withdrawals &lt;strong&gt;&lt;em&gt;in review&lt;/em&gt;&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Update status of withdrawals after broadcasting &lt;strong&gt;&lt;em&gt;in review&lt;/em&gt;&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Add revision logic to IdentityCreditsWithdrawal transition &lt;strong&gt;&lt;em&gt;in review&lt;/em&gt;&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Indices from expired withdrawal transactions must be reused &lt;strong&gt;&lt;em&gt;in review&lt;/em&gt;&lt;/strong&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Other Protocol Tasks&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Identity v2 &lt;strong&gt;&lt;em&gt;in progress&lt;/em&gt;&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Total credit balance verification &lt;strong&gt;&lt;em&gt;in review&lt;/em&gt;&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Calculate expected total credits amount &lt;strong&gt;&lt;em&gt;in review&lt;/em&gt;&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Efficient Data Serialization &lt;strong&gt;&lt;em&gt;in progress&lt;/em&gt;&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Refactor DPP document types &lt;strong&gt;&lt;em&gt;in progress&lt;/em&gt;&lt;/strong&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;More Protocol Tasks&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Add support for Core v19-beta.X &lt;strong&gt;&lt;em&gt;in progress&lt;/em&gt;&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Create self-contained Dashmate package &lt;strong&gt;&lt;em&gt;in progress&lt;/em&gt;&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;ABCI context logger &lt;strong&gt;&lt;em&gt;done&lt;/em&gt;&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;DPP should not allow using existing property in a new index &lt;strong&gt;&lt;em&gt;done&lt;/em&gt;&lt;/strong&gt; &lt;/li&gt;
&lt;li&gt;Use single HTTP port for all DAPI endpoints &lt;strong&gt;&lt;em&gt;done&lt;/em&gt;&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Log number of refunded epochs in Drive &lt;strong&gt;&lt;em&gt;done&lt;/em&gt;&lt;/strong&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  What’s Left
&lt;/h2&gt;

&lt;p&gt;Major&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;del&gt;Fee Refunds&lt;/del&gt;&lt;/li&gt;
&lt;li&gt;Accomplish and test withdrawals&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Minor&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;del&gt;Logging of same block execution&lt;/del&gt;&lt;/li&gt;
&lt;li&gt;&lt;del&gt;Use block candidate context in State Repository&lt;/del&gt;&lt;/li&gt;
&lt;li&gt;&lt;del&gt;Deal with situation where fees are higher than Balance&lt;/del&gt;&lt;/li&gt;
&lt;li&gt;&lt;del&gt;Add Sum Tree feature for Pool trees&lt;/del&gt;&lt;/li&gt;
&lt;li&gt;Verify fee processing costs&lt;/li&gt;
&lt;li&gt;Asset Lock and Unlock transactions integration&lt;/li&gt;
&lt;li&gt;BLS library rust binding&lt;/li&gt;
&lt;li&gt;Masternode block reward distribution&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Rust Port Update
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;What We Planned&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Our primary goal for this sprint was testing and implementing the last thing left - Identities&lt;/li&gt;
&lt;li&gt;Integrate Rust DPP into SDK, Drive, DAPI and test suite &lt;/li&gt;
&lt;li&gt;Identity transitions - AssetLockProofs and CreateTransition merged, UpdateTransition - coding finished, currently is &lt;strong&gt;&lt;em&gt;in review&lt;/em&gt;&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Testing DataContract - 90% finished&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Planned/Work in progress&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Integrate Identity into Drive/Dapi&lt;/li&gt;
&lt;li&gt;Finish the remainder of DataContract tests&lt;/li&gt;
&lt;li&gt;Finish the remainder of Document Transition tests&lt;/li&gt;
&lt;li&gt;Fix asynchronous I/O in the state repository - works right now in a synchronous manner&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Core Team
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Core Status - v18.x&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;v18.2 incident: 06/01/2023&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Rotation member calculation mismatch&lt;/li&gt;
&lt;li&gt;Downgrade to v.18.1&lt;/li&gt;
&lt;li&gt;5% of Masternodes affected&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;v18.1 incident: 08/01/2023&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;DDoS attack.&lt;/li&gt;
&lt;li&gt;Flooding of old but valid qcommits via P2P messages&lt;/li&gt;
&lt;li&gt;Fix: If qcommit is older than one DKG cycle -&amp;gt; no BLS verification&lt;/li&gt;
&lt;li&gt;Release of hotfix v18.1.1&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;v18.2.1 Release&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Indexing both Testnet and Mainnet&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Core Status - v19 Development&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;BLS Scheme upgrade &lt;strong&gt;done&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Enforced BLS active scheme IETF&lt;/li&gt;
&lt;li&gt;Versioned mined objects: qfcommit, protx family, &lt;/li&gt;
&lt;li&gt;Versioned MNLISTDIFF P2P message&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;HPMN 4K &lt;strong&gt;&lt;em&gt;in progress&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;New Masternode Type &lt;strong&gt;&lt;em&gt;in review&lt;/em&gt;&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Migration of internal evoDB, Returned in MNLISTDIFF and RPC &lt;strong&gt;&lt;em&gt;in review&lt;/em&gt;&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;LLMQ_Platform &lt;strong&gt;&lt;em&gt;in review&lt;/em&gt;&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Masternode payment algorithm: 4x blocks for HPMNs &lt;strong&gt;&lt;em&gt;in review&lt;/em&gt;&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Governance: 4x vote weight for HPMNs &lt;strong&gt;&lt;em&gt;in review&lt;/em&gt;&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Include new Platform related fields in SML &lt;strong&gt;&lt;em&gt;in progress&lt;/em&gt;&lt;/strong&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;AssetLock &lt;strong&gt;&lt;em&gt;in review&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What’s Next&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;V19.0.0 Release Candidate&lt;/li&gt;
&lt;li&gt;Potential V18.2.2 Release w/ minor fixes&lt;/li&gt;
&lt;li&gt;Continued maintenance, backporting and feature development&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>codenewbie</category>
      <category>gratitude</category>
      <category>learning</category>
      <category>productivity</category>
    </item>
    <item>
      <title>What's left: Platform Development Update 10-January-2023</title>
      <dc:creator>Dash Core Group Devs</dc:creator>
      <pubDate>Wed, 11 Jan 2023 19:02:23 +0000</pubDate>
      <link>https://forem.com/dcgcrew/whats-left-platform-development-update-10-january-2023-4l28</link>
      <guid>https://forem.com/dcgcrew/whats-left-platform-development-update-10-january-2023-4l28</guid>
      <description>&lt;p&gt;Happy New Year, fellow Dashers! &lt;br&gt;
This is our first Platform Update in 2023. Lots of things have been done. Let's see what's left before testing!&lt;br&gt;
&lt;iframe width="710" height="399" src="https://www.youtube.com/embed/e0UiWqqOPeo"&gt;
&lt;/iframe&gt;
&lt;/p&gt;

&lt;h2&gt;
  
  
  TenderDash
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Task:&lt;/strong&gt; Stabilization&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What We Planned&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Stabilizing&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;updated dependencies (actions/stale, setup-go,buf-setup-action, goreleaser-action) &lt;strong&gt;&lt;em&gt;done&lt;/em&gt;&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;refactor: use logger for log printing &lt;strong&gt;&lt;em&gt;done&lt;/em&gt;&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;refactor: blocksync.bpRequester should stop procedure if block was received &lt;strong&gt;&lt;em&gt;done&lt;/em&gt;&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;feat!: verify next consensus params between nodes &lt;strong&gt;&lt;em&gt;done&lt;/em&gt;&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;build: enable deadlock detection on -dev docker images &lt;strong&gt;&lt;em&gt;done&lt;/em&gt;&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;build(github): use ubuntu 20.04 in github workflows &lt;strong&gt;&lt;em&gt;done&lt;/em&gt;&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;fix: flaky TestReactor_Backfill test &lt;strong&gt;&lt;em&gt;done&lt;/em&gt;&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;fix: improve flaky TestWALRoundsSkipper &lt;strong&gt;&lt;em&gt;done&lt;/em&gt;&lt;/strong&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Investigate deadlocks&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;refactor(consensus): consensus state to fix deadlock &lt;strong&gt;&lt;em&gt;in progress&lt;/em&gt;&lt;/strong&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;What’s Left before Testing Phase&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Stabilize same-block execution&lt;/li&gt;
&lt;li&gt;&lt;del&gt;Update BLS library&lt;/del&gt;&lt;/li&gt;
&lt;li&gt;Adjust vote extensions for withdrawal transactions&lt;/li&gt;
&lt;li&gt;&lt;del&gt;Improve seed node operations&lt;/del&gt;&lt;/li&gt;
&lt;li&gt;&lt;del&gt;Drive integration&lt;/del&gt;&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  GroveDB
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Tasks&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Deterministic loaded bytes &lt;strong&gt;&lt;em&gt;done&lt;/em&gt;&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Optional Merk caching &lt;strong&gt;&lt;em&gt;done&lt;/em&gt;&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Better path query merge &lt;strong&gt;&lt;em&gt;in progress&lt;/em&gt;&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Merging of conditional path queries &lt;strong&gt;&lt;em&gt;done&lt;/em&gt;&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Intersection and disjointed union of query items &lt;strong&gt;&lt;em&gt;done&lt;/em&gt;&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Query Item Comparison &lt;strong&gt;&lt;em&gt;done&lt;/em&gt;&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Proof of mixed levels &lt;strong&gt;&lt;em&gt;in progress&lt;/em&gt;&lt;/strong&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;What’s Left before Testing Phase&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Major&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;del&gt;Sum Trees merge &lt;strong&gt;&lt;em&gt;done&lt;/em&gt;&lt;/strong&gt;&lt;/del&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Minor&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;del&gt;Average case processing costs &lt;strong&gt;&lt;em&gt;done&lt;/em&gt;&lt;/strong&gt;&lt;/del&gt;&lt;/li&gt;
&lt;li&gt;&lt;del&gt;Some code polishing &lt;strong&gt;&lt;em&gt;done&lt;/em&gt;&lt;/strong&gt;&lt;/del&gt;&lt;/li&gt;
&lt;li&gt;&lt;del&gt;Light proof feature &lt;strong&gt;&lt;em&gt;done&lt;/em&gt;&lt;/strong&gt;&lt;/del&gt;&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Protocol
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Task:&lt;/strong&gt; Identity v2&lt;br&gt;
&lt;strong&gt;Credit Withdrawals&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Introduce withdrawals data contract &lt;strong&gt;&lt;em&gt;in review&lt;/em&gt;&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Implement the pooling process (type 0 only) for withdrawals &lt;strong&gt;&lt;em&gt;in review&lt;/em&gt;&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Update status of withdrawals after broadcasting &lt;strong&gt;&lt;em&gt;in review&lt;/em&gt;&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Add revision logic to IdentityCreditsWithdrawal transition &lt;strong&gt;&lt;em&gt;in review&lt;/em&gt;&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Indices from expired withdrawal transactions must be reused &lt;strong&gt;&lt;em&gt;in review&lt;/em&gt;&lt;/strong&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Other Protocol Tasks&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Identity v2 &lt;strong&gt;&lt;em&gt;in progress&lt;/em&gt;&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Total credit balance verification &lt;strong&gt;&lt;em&gt;in progress&lt;/em&gt;&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Calculate expected total credits amount &lt;strong&gt;&lt;em&gt;in progress&lt;/em&gt;&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Efficient Data Serialization &lt;strong&gt;&lt;em&gt;in progress&lt;/em&gt;&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Add support for core 18.2 &lt;strong&gt;&lt;em&gt;done&lt;/em&gt;&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Do not switch to validator quorum which will be removed soon &lt;strong&gt;&lt;em&gt;done&lt;/em&gt;&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;ABCI context logger &lt;strong&gt;&lt;em&gt;in review&lt;/em&gt;&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Fix for non deterministic processing fees &lt;strong&gt;&lt;em&gt;done&lt;/em&gt;&lt;/strong&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;What’s Left before Testing Phase&lt;/strong&gt;&lt;br&gt;
Major&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;del&gt;Fee Refunds&lt;/del&gt;&lt;/li&gt;
&lt;li&gt;Accomplish and test withdrawals&lt;/li&gt;
&lt;li&gt;State Sync&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Minor&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;del&gt;Logging of same block execution&lt;/del&gt;&lt;/li&gt;
&lt;li&gt;&lt;del&gt;Use block candidate context in State Repository&lt;/del&gt;&lt;/li&gt;
&lt;li&gt;Deal with situation where fees are higher than Balance &lt;strong&gt;&lt;em&gt;in progress&lt;/em&gt;&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Verify fee processing costs&lt;/li&gt;
&lt;li&gt;Asset Lock and Unlock transactions integration&lt;/li&gt;
&lt;li&gt;BLS library rust binding&lt;/li&gt;
&lt;li&gt;Masternode block reward distribution&lt;/li&gt;
&lt;li&gt;Add Sum Tree feature for Pool trees &lt;strong&gt;&lt;em&gt;in progress&lt;/em&gt;&lt;/strong&gt;
&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Rust Port Update
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;What We Planned&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Integrate Rust DPP into SDK, Drive, DAPI and test suite &lt;strong&gt;&lt;em&gt;in progress&lt;/em&gt;&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Successfully run platform test suite and test for Drive and Dapi &lt;strong&gt;&lt;em&gt;planned&lt;/em&gt;&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;ConsensusError &lt;strong&gt;&lt;em&gt;done&lt;/em&gt;&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;ProtocolError &lt;strong&gt;&lt;em&gt;in progress&lt;/em&gt;&lt;/strong&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;State Transitions&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;DataContract&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;del&gt;Create&lt;/del&gt;&lt;/li&gt;
&lt;li&gt;&lt;del&gt;Update (Changed)&lt;/del&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Identity&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;del&gt;Asset lock proof&lt;/del&gt;&lt;/li&gt;
&lt;li&gt;&lt;del&gt;Create&lt;/del&gt;&lt;/li&gt;
&lt;li&gt;TopUp &lt;strong&gt;&lt;em&gt;(Integration is in progress)&lt;/em&gt;&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Update &lt;strong&gt;&lt;em&gt;(Integration is in progress)&lt;/em&gt;&lt;/strong&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Document&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;del&gt;Batch&lt;/del&gt;&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>watercooler</category>
    </item>
    <item>
      <title>What's left: Platform Development Update 27-December-2022</title>
      <dc:creator>Dash Core Group Devs</dc:creator>
      <pubDate>Wed, 28 Dec 2022 16:47:10 +0000</pubDate>
      <link>https://forem.com/dcgcrew/whats-left-platform-development-update-27-december-2022-5fbm</link>
      <guid>https://forem.com/dcgcrew/whats-left-platform-development-update-27-december-2022-5fbm</guid>
      <description>&lt;p&gt;&lt;strong&gt;Hello Dashers!&lt;/strong&gt;&lt;br&gt;
This is our regular Platform wrap up. Let's see what's left for next year.&lt;br&gt;
&lt;iframe width="710" height="399" src="https://www.youtube.com/embed/PTLJS1hoPNo"&gt;
&lt;/iframe&gt;
 &lt;/p&gt;

&lt;p&gt;TenderDash&lt;br&gt;
&lt;strong&gt;Goals:&lt;/strong&gt; Same block execution&lt;br&gt;
&lt;strong&gt;Tasks:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Stabilizing&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;fix(consensus): proposer-based timestamp broken during backport &lt;strong&gt;&lt;em&gt;done&lt;/em&gt;&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;backport: update BLS library &lt;strong&gt;&lt;em&gt;done&lt;/em&gt;&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Seed connectivity: max-incoming-connection-time, incoming-connection-window &lt;strong&gt;&lt;em&gt;done&lt;/em&gt;&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;fix(consensus): ensure process proposal &lt;strong&gt;&lt;em&gt;done&lt;/em&gt;&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;fix: improve flaky TestWALRoundsSkipper &lt;strong&gt;_in review _&lt;/strong&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Investigate deadlocks&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;fix(statesync): deadlock in peer up done&lt;/li&gt;
&lt;li&gt;refactor(consensus): consensus state to fix deadlock &lt;strong&gt;&lt;em&gt;in progress&lt;/em&gt;&lt;/strong&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Other:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Release v0.10.0-dev.7&lt;/li&gt;
&lt;li&gt;Release v0.11.0-dev.1&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;What’s Left before Testing Phase&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Stabilize same-block execution&lt;/li&gt;
&lt;li&gt;&lt;del&gt;Update BLS library&lt;/del&gt;&lt;/li&gt;
&lt;li&gt;Adjust vote extensions for withdrawal transactions&lt;/li&gt;
&lt;li&gt;&lt;del&gt;Improve seed node operations&lt;/del&gt;&lt;/li&gt;
&lt;li&gt;&lt;del&gt;Drive integration&lt;/del&gt;&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  GroveDB
&lt;/h2&gt;

&lt;p&gt;Tasks:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Light proof feature &lt;strong&gt;&lt;em&gt;done&lt;/em&gt;&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Linting and CI fixes &lt;strong&gt;&lt;em&gt;done&lt;/em&gt;&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Advanced queries for optional non existent queries &lt;strong&gt;&lt;em&gt;done&lt;/em&gt;&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;“Removed Cousin” (not removal - removed in the family sense) references &lt;strong&gt;&lt;em&gt;done&lt;/em&gt;&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Better delete up tree options &lt;strong&gt;&lt;em&gt;done&lt;/em&gt;&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Subquery Paths replace Subquery keys &lt;strong&gt;&lt;em&gt;done&lt;/em&gt;&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Better path query merge &lt;strong&gt;&lt;em&gt;in progress&lt;/em&gt;&lt;/strong&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;What’s Left before Testing Phase&lt;/strong&gt;&lt;br&gt;
Major&lt;/p&gt;

&lt;p&gt;&lt;del&gt;- Sum Trees merge &lt;strong&gt;&lt;em&gt;done&lt;/em&gt;&lt;/strong&gt;&lt;/del&gt;&lt;/p&gt;

&lt;p&gt;Minor&lt;/p&gt;

&lt;p&gt;~~- Average case processing costs &lt;strong&gt;&lt;em&gt;done&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Some code polishing &lt;strong&gt;&lt;em&gt;done&lt;/em&gt;&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Light proof feature &lt;strong&gt;&lt;em&gt;done&lt;/em&gt;&lt;/strong&gt;
~~
---&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Protocol
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Goals:&lt;/strong&gt; Credit Refunds&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Credit Withdrawals&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Introduce withdrawals data contract &lt;strong&gt;&lt;em&gt;in review&lt;/em&gt;&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Implement the pooling process (type 0 only) for withdrawals &lt;strong&gt;&lt;em&gt;in review&lt;/em&gt;&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Update status of withdrawals after broadcasting &lt;strong&gt;&lt;em&gt;in review&lt;/em&gt;&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Add revision logic to IdentityCreditsWithdrawal transition &lt;strong&gt;&lt;em&gt;in review&lt;/em&gt;&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Indices from expired withdrawal transactions must be reused &lt;strong&gt;&lt;em&gt;in review&lt;/em&gt;&lt;/strong&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Other Protocol Tasks&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Identity v2 &lt;strong&gt;&lt;em&gt;in progress&lt;/em&gt;&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Efficient Data Serialization &lt;strong&gt;&lt;em&gt;in progress&lt;/em&gt;&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Credit Refunds &lt;strong&gt;&lt;em&gt;done&lt;/em&gt;&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Add support for core 18.2 &lt;strong&gt;&lt;em&gt;in progress&lt;/em&gt;&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Log synchronize identities properly &lt;strong&gt;&lt;em&gt;done&lt;/em&gt;&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Remove big elements like txs from logs &lt;strong&gt;&lt;em&gt;done&lt;/em&gt;&lt;/strong&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;What’s Left&lt;/strong&gt;&lt;br&gt;
Major&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;del&gt;Fee Refunds&lt;/del&gt;&lt;/li&gt;
&lt;li&gt;Accomplish and test withdrawals&lt;/li&gt;
&lt;li&gt;State Sync&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Minor&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;del&gt;Logging of same block execution&lt;/del&gt;&lt;/li&gt;
&lt;li&gt;&lt;del&gt;Use block candidate context in State Repository&lt;/del&gt;&lt;/li&gt;
&lt;li&gt;Deal with situation where fees are higher than Balance &lt;/li&gt;
&lt;li&gt;Verify fee processing costs&lt;/li&gt;
&lt;li&gt;Asset Lock and Unlock transactions integration&lt;/li&gt;
&lt;li&gt;BLS library rust binding&lt;/li&gt;
&lt;li&gt;Masternode reward distribution&lt;/li&gt;
&lt;li&gt;Add Sum Tree feature for Pool trees&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Rust Port Update
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Tasks:&lt;/strong&gt;&lt;br&gt;
Integrate Rust DPP into SDK, Drive, DAPI and test suite &lt;strong&gt;&lt;em&gt;in progress&lt;/em&gt;&lt;/strong&gt;&lt;br&gt;
Porting Consensus Errors Framework: all errors ported &lt;strong&gt;&lt;em&gt;done&lt;/em&gt;&lt;/strong&gt;&lt;br&gt;
Successfully run platform test suite and test for Drive and Dapi &lt;strong&gt;&lt;em&gt;planned&lt;/em&gt;&lt;/strong&gt;&lt;br&gt;
&lt;em&gt;Merged StateRespoitory code and bindings&lt;br&gt;
Merged everything related to ConsensusErorrs and most of the consensus validation code&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;State Transitions&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;DataContract&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;del&gt;Create&lt;/del&gt;&lt;/li&gt;
&lt;li&gt;&lt;del&gt;Update (Changed)&lt;/del&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Identity&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;del&gt;Asset lock proof&lt;/del&gt;&lt;/li&gt;
&lt;li&gt;&lt;del&gt;Create&lt;/del&gt;&lt;/li&gt;
&lt;li&gt;TopUp (Integration in progress)&lt;/li&gt;
&lt;li&gt;Update (Integration in progress)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Document&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Batch&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>web3</category>
      <category>opensource</category>
      <category>blockchain</category>
      <category>programming</category>
    </item>
    <item>
      <title>What's left: Platform Development Update 13-December-2022</title>
      <dc:creator>Dash Core Group Devs</dc:creator>
      <pubDate>Thu, 15 Dec 2022 14:16:26 +0000</pubDate>
      <link>https://forem.com/dcgcrew/whats-left-platform-development-update-13-december-2022-18o</link>
      <guid>https://forem.com/dcgcrew/whats-left-platform-development-update-13-december-2022-18o</guid>
      <description>&lt;p&gt;Hey fellow Dashers, this is a short wrap up of what happened with the Platform over the past few weeks. &lt;/p&gt;

&lt;p&gt;&lt;iframe width="710" height="399" src="https://www.youtube.com/embed/zyth7eOBVDc?start=2276"&gt;
&lt;/iframe&gt;
 &lt;/p&gt;

&lt;h2&gt;
  
  
  TenderDash
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Goals:&lt;/strong&gt; Same block execution&lt;br&gt;
&lt;strong&gt;Tasks:&lt;/strong&gt;&lt;br&gt;
Stabilizing&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;fix(consensus): proposer-based timestamp broken during backport &lt;strong&gt;&lt;em&gt;in review&lt;/em&gt;&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;fix(consensus): ProcessProposal executed twice for a block &lt;strong&gt;&lt;em&gt;done&lt;/em&gt;&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;chore(types)!: rename genesis.json quorum fields &lt;strong&gt;&lt;em&gt;done&lt;/em&gt;&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;refactor(consensus): consensus state to fix deadlock &lt;strong&gt;&lt;em&gt;on hold&lt;/em&gt;&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;fix(wal): improve WAL replay mechanism &lt;strong&gt;&lt;em&gt;in review&lt;/em&gt;&lt;/strong&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Investigate deadlocks&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;fix(statesync): statesync stops the node when light block request fails done&lt;/li&gt;
&lt;li&gt;&lt;p&gt;fix(statesync): deadlock in peer up in progress&lt;br&gt;
Other:&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Release v0.8.0&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;What’s Left before Testing Phase&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Stabilize same-block execution&lt;/li&gt;
&lt;li&gt;Update BLS library&lt;/li&gt;
&lt;li&gt;Adjust vote extensions for withdrawal transactions&lt;/li&gt;
&lt;li&gt;Improve seed node operations&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  GroveDB
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Tasks:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Sum Trees merge &lt;strong&gt;&lt;em&gt;done&lt;/em&gt;&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Costs for Sum Trees &lt;strong&gt;&lt;em&gt;done&lt;/em&gt;&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Delete up tree worst case processing costs &lt;strong&gt;&lt;em&gt;done&lt;/em&gt;&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Delete up tree average case processing costs &lt;strong&gt;&lt;em&gt;done&lt;/em&gt;&lt;/strong&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Features:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Deletion up tree in batches &lt;strong&gt;&lt;em&gt;done&lt;/em&gt;&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Removal on Root Tree storage &lt;strong&gt;&lt;em&gt;in review&lt;/em&gt;&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Inserts &lt;strong&gt;&lt;em&gt;done&lt;/em&gt;&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Deletes &lt;strong&gt;&lt;em&gt;done&lt;/em&gt;&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Batches &lt;strong&gt;&lt;em&gt;in review&lt;/em&gt;&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Proofs &lt;strong&gt;&lt;em&gt;in review&lt;/em&gt;&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Update of Costs &lt;strong&gt;&lt;em&gt;in review&lt;/em&gt;&lt;/strong&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;What’s Left before Testing Phase&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Light proof feature &lt;strong&gt;&lt;em&gt;in progress&lt;/em&gt;&lt;/strong&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  JS SDK
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Goals:&lt;/strong&gt; Reorgs and consensus&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Tasks:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Updating grpc-web library &lt;strong&gt;&lt;em&gt;done&lt;/em&gt;&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Fine tuning consensus rules &lt;strong&gt;&lt;em&gt;in progress&lt;/em&gt;&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;DashPay Web Extension&lt;/li&gt;
&lt;li&gt;Migrating extension from Manifest V2 to Manifest V3 &lt;strong&gt;&lt;em&gt;in progress&lt;/em&gt;&lt;/strong&gt; (needed for publishing to Chrome Store)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;What’s Next&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Reorgs handling and consensus rules fine tuning&lt;/li&gt;
&lt;li&gt;Secure keychain storage&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Protocol
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Goals:&lt;/strong&gt; V23 release, same block execution&lt;/p&gt;

&lt;p&gt;Credit Withdrawals&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Introduce withdrawals data contract &lt;strong&gt;&lt;em&gt;in review&lt;/em&gt;&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Implement the pooling process (type 0 only) for withdrawals &lt;strong&gt;&lt;em&gt;in review&lt;/em&gt;&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Update status of withdrawals after broadcasting &lt;strong&gt;&lt;em&gt;in review&lt;/em&gt;&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Add revision logic to IdentityCreditsWithdrawal transition &lt;strong&gt;&lt;em&gt;in review&lt;/em&gt;&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Indices from expired withdrawal transactions must be reused &lt;strong&gt;&lt;em&gt;in progress&lt;/em&gt;&lt;/strong&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Same Block Execution&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Use proposed block execution context in State Repository &lt;strong&gt;&lt;em&gt;done&lt;/em&gt;&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Update finalize block handler signature &lt;strong&gt;&lt;em&gt;done&lt;/em&gt;&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Skip process proposal if prepare proposal is already called for this round &lt;strong&gt;&lt;em&gt;done&lt;/em&gt;&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Safe single database transaction block processing &lt;strong&gt;&lt;em&gt;done&lt;/em&gt;&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Comprehensive logging &lt;strong&gt;&lt;em&gt;done&lt;/em&gt;&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Pass latest chain lock on init chain &lt;strong&gt;&lt;em&gt;done&lt;/em&gt;&lt;/strong&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Other Protocol Tasks&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Identity v2 &lt;strong&gt;&lt;em&gt;in progress&lt;/em&gt;&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Efficient Data Serialization &lt;strong&gt;&lt;em&gt;in progress&lt;/em&gt;&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Integration of average case costs &lt;strong&gt;&lt;em&gt;done&lt;/em&gt;&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Integration of GroveDB 0.7 (supports Sum Trees) &lt;strong&gt;&lt;em&gt;done&lt;/em&gt;&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Release Platform v0.23 &lt;strong&gt;&lt;em&gt;done&lt;/em&gt;&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Use FeeResult to collect block fees &lt;strong&gt;&lt;em&gt;done&lt;/em&gt;&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Credit Refunds &lt;strong&gt;&lt;em&gt;in progress&lt;/em&gt;&lt;/strong&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;What’s Left&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Major&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Fee Refunds &lt;strong&gt;&lt;em&gt;in progress&lt;/em&gt;&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Accomplish and test withdrawals&lt;/li&gt;
&lt;li&gt;State Sync&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Minor&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Deal with situation where fees are higher than Balance&lt;/li&gt;
&lt;li&gt;Verify fee processing costs&lt;/li&gt;
&lt;li&gt;Asset Lock and Unlock transactions integration&lt;/li&gt;
&lt;li&gt;BLS library rust binding&lt;/li&gt;
&lt;li&gt;Masternode reward distribution&lt;/li&gt;
&lt;li&gt;Add Sum Tree feature for Pool trees&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Rust Port Update
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Integrate Rust DPP into SDK, Drive, DAPI and test suite &lt;strong&gt;&lt;em&gt;in progress&lt;/em&gt;&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Porting Consensus Errors Framework: 75/76 errors ported &lt;strong&gt;&lt;em&gt;in progress&lt;/em&gt;&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Successfully run platform test suite and test for Drive and Dapi &lt;strong&gt;&lt;em&gt;planned&lt;/em&gt;&lt;/strong&gt;
&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>web3</category>
      <category>opensource</category>
      <category>blockchain</category>
      <category>programming</category>
    </item>
    <item>
      <title>What’s The Matter With Infura And Other Services?</title>
      <dc:creator>Dash Core Group Devs</dc:creator>
      <pubDate>Fri, 09 Dec 2022 22:59:11 +0000</pubDate>
      <link>https://forem.com/dcgcrew/whats-the-matter-with-infura-and-other-services-51h1</link>
      <guid>https://forem.com/dcgcrew/whats-the-matter-with-infura-and-other-services-51h1</guid>
      <description>&lt;p&gt;Recently, we saw Infura and other ConsenSys-related services dominate the headlines. Long story short, ConsenSys announced that they would be collecting user IP addresses for compliance requirements. Naturally, this sparked a “centralization vs decentralization” debate in the crypto community. &lt;/p&gt;

&lt;p&gt;In this article, we will see how Dash Platform mitigates the need for a centralized service provider like Infura, Kaleido, etc.&lt;/p&gt;

&lt;h2&gt;
  
  
  What exactly is Infura?
&lt;/h2&gt;

&lt;p&gt;Infura is a web3 IaaS (Infrastructure as a Service) product that provides a set of tools for anyone to connect their applications to the Ethereum blockchain. Infura lowers developers' entry barriers by running nodes on their behalf. The idea is simple, right? Abstract away the complexities of the blockchain and empower developers to focus only on their product. Infura’s IPFS (Interplanetary File System) API provides distributed storage to applications of all sizes. Several popular services, like MetaMask and Truffle, use Infura.&lt;/p&gt;

&lt;h3&gt;
  
  
  So, what’s the problem here?
&lt;/h3&gt;

&lt;p&gt;Ever since 2018, there has been an increased concern in the Ethereum community about Infura’s growing presence within the ecosystem. Afri Schoedon from Parity Technologies &lt;a href="https://finance.yahoo.com/news/dev-ethereum-may-fail-relies-231527712.html"&gt;said&lt;/a&gt; that over-reliance on Infura will increase the centralization of the protocol.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;“If we don’t stop relying on Infura, the vision of Ethereum failed. Or build a strong network of thin and light clients. There is no point in having d-apps connecting through MetaMask to a blockchain hosted by someone else.”&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Plus, at the end of the day, Infura is maintained by a centralized company which makes its applications vulnerable to censorship and regulatory measures.&lt;/p&gt;

&lt;h3&gt;
  
  
  Infura and censorship
&lt;/h3&gt;

&lt;p&gt;In March 2022, ConsenSys made their services unavailable “within the three contested regions of Ukraine.” This happened after the US, European Union, and others implemented strict sanctions on Russia following their invasion of Ukraine. Plus, due to an error, Infura accidentally blocked Venezuelan users from MetaMask, as well.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;There are a few things to unpack here:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Due to government sanctions, people living in certain areas were blacklisted from crypto services.&lt;/li&gt;
&lt;li&gt;A mistake from the service provider blocked crypto access for people from a completely unrelated region.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Now, with the latest announcement about IP address collection, there is a substantial risk that regulatory demands may get more overbearing, leading to more censorship.&lt;/p&gt;

&lt;p&gt;These points raise a few important questions. Wasn’t crypto created to prevent these things from happening in the first place? Wasn’t the entire point of crypto to make a means of value transfer that didn’t depend on the whims or incompetence of an intermediary?&lt;/p&gt;

&lt;p&gt;And, perhaps most notably, why are we still using web2 architecture to access web3 protocols?&lt;/p&gt;

&lt;h2&gt;
  
  
  Dash Platform fixes this
&lt;/h2&gt;

&lt;p&gt;Dash Platform is &lt;a href="https://www.dash.org/blog/decentralized-storage-and-dash-platform/"&gt;a web3 tech stack&lt;/a&gt; that allows you to build decentralized applications on Dash’s network. Dash Platform uses two architectural components, Drive and DAPI.&lt;/p&gt;

&lt;h3&gt;
  
  
  DAPI - Decentralized API
&lt;/h3&gt;

&lt;p&gt;DAPI is a decentralized API that allows developers to connect their apps with the Dash blockchain. Developers can connect to DAPI directly or use a client library. DAPI helps developers by:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Using Dash masternodes as API providers, so developers don’t have to run nodes.&lt;/li&gt;
&lt;li&gt;Removing overall cost and maintenance overhead.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;What makes DAPI interesting is that, unlike traditional APIs, there isn’t a single point of failure. Instead, clients may connect to different independently operated instances depending on resource availability in the Dash network. So, you are connecting to the protocol using a decentralized system instead of a centralized one. Although all the Dash masternodes provide the same services, they are run by independent operators rather than a centralized entity.&lt;/p&gt;

&lt;h3&gt;
  
  
  Drive - Decentralized Storage
&lt;/h3&gt;

&lt;p&gt;Drive is Dash Platform's storage component, allowing for consensus-based verification and validation of user-created data. Once user data is validated, it is submitted to Drive via DAPI and stored in the masternode network.&lt;/p&gt;

&lt;p&gt;But how do you verify whether the data you get from the API is correct? After all, a truly decentralized system shouldn’t require trust to operate. To mitigate this, Drive uses GroveDB – a purpose-built database that provides efficient proofs with query responses. These cryptographic proofs help prove data authenticity.&lt;/p&gt;

&lt;p&gt;With DAPI and Drive, Dash Platform provides the ideal decentralized portal for developers to connect to web3 without stumbling over the familiar roadblocks of web2 design.&lt;/p&gt;

&lt;p&gt;Originally posted on &lt;a href="https://www.dash.org/blog/"&gt;Dash Blog.&lt;/a&gt;&lt;/p&gt;

</description>
      <category>web3</category>
      <category>opensource</category>
    </item>
    <item>
      <title>Creating Identity On Dash Platform</title>
      <dc:creator>Dash Core Group Devs</dc:creator>
      <pubDate>Fri, 02 Dec 2022 16:06:27 +0000</pubDate>
      <link>https://forem.com/dcgcrew/creating-identity-on-dash-platform-c64</link>
      <guid>https://forem.com/dcgcrew/creating-identity-on-dash-platform-c64</guid>
      <description>&lt;p&gt;Per Article 8 of the UN’s Convention on the Rights of the Child, personal identity is a fundamental right. At its core, identity is defined as “the fact of being who or what a person or thing is.”  Today, we will see how decentralized identity, as provided by Dash Platform, helps you overcome the weaknesses of traditional official identity.&lt;/p&gt;

&lt;h3&gt;
  
  
  The problems with traditional identity
&lt;/h3&gt;

&lt;p&gt;Your official identity plays a crucial role in establishing who you are and is required for you to function in any capacity as a citizen. Your government identity consists of multiple data points like – Name, Date of Birth, Nationality, Identifier, etc. You must use your government identity to obtain essential services such as bank accounts, healthcare, social benefits, pension, etc.&lt;/p&gt;

&lt;p&gt;However, there are three major issues with centralized identity:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Issuance&lt;/li&gt;
&lt;li&gt;Mismanagement&lt;/li&gt;
&lt;li&gt;Theft&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Issuance
&lt;/h3&gt;

&lt;p&gt;As per the &lt;a href="https://blogs.worldbank.org/voices/global-identification-challenge-who-are-1-billion-people-without-proof-identity"&gt;World Bank&lt;/a&gt;, over a billion people worldwide don’t have any claims to their identity. After all, these identities are issued by a centralized body. Some people simply don’t have the means to get their identities issued.&lt;/p&gt;

&lt;h3&gt;
  
  
  Mismanagement
&lt;/h3&gt;

&lt;p&gt;Of course, this is the perennial problem with centralized storage. When you trust a third party to store your private data, you trust them to manage it properly. More often than not, this trust could be misplaced.&lt;/p&gt;

&lt;h3&gt;
  
  
  Theft
&lt;/h3&gt;

&lt;p&gt;Finally, when you use a centralized server to store all your data, you create an easy target for hackers. The potential ramifications and identity theft could have devastating consequences. For example, Equifax, one of the top credit-reporting companies, was breached in 2017. It is estimated that half the US population lost their Social Security Numbers during the breach.&lt;/p&gt;

&lt;p&gt;The consequences here are pretty devastating. Identity theft and fraud have been on the rise. As per the Federal Trade Commission (FTC), the amount of identity theft and related fraud &lt;a href="https://www.experian.com/blogs/ask-experian/identity-theft-statistics/"&gt;rose significantly&lt;/a&gt; in the US in 2021. Here are some stats to ponder:&lt;/p&gt;

&lt;p&gt;Fraud complaints have gone up by 19% to more than 5.8 million.&lt;br&gt;
Total financial losses crossed $6 billion.&lt;br&gt;
The number of consumer complaints rose by 3.3% to just over 1.43 million.&lt;br&gt;
So, what’s the solution here? Maybe, practicing self-sovereign identity is the way forward?&lt;/p&gt;

&lt;h3&gt;
  
  
  What is Self-Sovereign Identity?
&lt;/h3&gt;

&lt;p&gt;Self-sovereignty, in general, means you have the moral right to fully control your body and life. Self-sovereign identity is a digital identity where individuals have complete control over their data. Previously, in a web2 ecosystem, this was nearly impossible.&lt;/p&gt;

&lt;p&gt;However, things have changed with the advent of web3 and the incorporation of blockchain technology. As a result, it is now possible to deploy decentralized identity.&lt;/p&gt;

&lt;p&gt;Before going any further, let’s see how the blockchain helps mitigate the two biggest problems with digital identity:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Easily replicable&lt;/li&gt;
&lt;li&gt;Not tamper resistant&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  1 Fixing replicability
&lt;/h3&gt;

&lt;p&gt;One of the main things Satoshi Nakamoto solved with Bitcoin and blockchain technology is “double spending.” Double spending was a problem in previous iterations of digital currencies, wherein it was possible to spend the same coin in more than one transaction simultaneously.&lt;/p&gt;

&lt;p&gt;So, how do cryptocurrencies like DASH fix this issue?&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Each transaction is verified by specialized nodes like the miners and masternodes to validate these transactions in exchange for a fee.&lt;/li&gt;
&lt;li&gt;Since every single coin is accounted for in the ledger, it is impossible to double spend it.&lt;/li&gt;
&lt;li&gt;Now, expand the same concept to identity. You shouldn’t be able to “double spend” your identity either. After all, no two people can have the same identity, correct?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;With blockchain-based identities, we can be confident that our identity can’t be stolen/duplicated because the associated data is cryptographically protected and owned by us, not by a third party.&lt;/p&gt;

&lt;h3&gt;
  
  
  2 Tamper resistance
&lt;/h3&gt;

&lt;p&gt;The second problem is the tamperability of digital identity. With digital identity, we have the following risks:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;A malicious party could bribe the intermediary storing your data.&lt;/li&gt;
&lt;li&gt;The system could be hacked.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Blockchain mitigates these issues by being an immutable source of truth. Cryptographic hash functions secure all the data stored within the blocks. As such, it is impossible to tamper with data once it has entered the chain. The only exception is if someone controls&amp;gt;51% of the network hashrate and rewrites the chain’s history by forking the protocol. Dash specifically &lt;a href="https://github.com/dashpay/dips/blob/master/dip-0008.md#calculations"&gt;mitigates&lt;/a&gt; this attack scenario, as well. With ChainLocks, even controlling 51% of the network hashrate can’t rewrite the chain history.&lt;/p&gt;

&lt;h3&gt;
  
  
  Dash Platform and Digital Identity
&lt;/h3&gt;

&lt;p&gt;Dash Platform is a web3 technology stack that allows you to build dApps on the Dash network. Decentralized identity is an integral component of the Dash Platform. Users can use their identities to interact with and identify each other instead of depending on public key hashes.&lt;/p&gt;

&lt;p&gt;So, how does one create an identity on Dash Platform? Let’s go through the steps:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Users must pay the network to store public keys on the platform chain.&lt;/li&gt;
&lt;li&gt;If a new user doesn’t have Dash funds, they can still create one, provided they get an invitation from existing Platform users.&lt;/li&gt;
&lt;li&gt;Once an identity is created, it will have a corresponding balance of credits. These credits are used to pay for various operations on the Dash Platform. To get these credits, you must lock up a certain amount of DASH on the base layer-1 Dash blockchain.&lt;/li&gt;
&lt;li&gt;You may top up your credit balance anytime you want via top-up.
Learn more about the Dash Platform and &lt;a href="https://dashplatform.readme.io/docs/explanation-identity"&gt;identity management&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Originally posted on &lt;a href="https://www.dash.org/blog/creating-identity-on-dash-platform/"&gt;Dash Blog&lt;/a&gt;&lt;/p&gt;

</description>
      <category>web3</category>
      <category>opensource</category>
    </item>
    <item>
      <title>What's left: Platform Development Update 29-November-2022</title>
      <dc:creator>Dash Core Group Devs</dc:creator>
      <pubDate>Thu, 01 Dec 2022 18:26:47 +0000</pubDate>
      <link>https://forem.com/dcgcrew/whats-left-platform-development-update-29-november-2022-hj6</link>
      <guid>https://forem.com/dcgcrew/whats-left-platform-development-update-29-november-2022-hj6</guid>
      <description>&lt;p&gt;Here's another portion of updates on what's left to do before final Platform testing.&lt;br&gt;
&lt;iframe width="710" height="399" src="https://www.youtube.com/embed/X9AvDv-G8Gs"&gt;
&lt;/iframe&gt;
&lt;/p&gt;

&lt;h2&gt;
  
  
  TenderDash
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Goals:&lt;/strong&gt; Same block execution&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Tasks:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Integration of same-block execution with Drive in progress&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Released v0.10.0-dev.5 done&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Stabilizing&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;fix(wal): improve WAL replay mechanism &lt;strong&gt;&lt;em&gt;in progress&lt;/em&gt;&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;fix(e2e): catchup round number is not correct &lt;strong&gt;&lt;em&gt;done&lt;/em&gt;&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;refactor: make all genesis-doc fields (except chain_id) optional &lt;strong&gt;&lt;em&gt;done&lt;/em&gt;&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;feat(abci): put full block in RequestFinalizeBlock &lt;strong&gt;&lt;em&gt;done&lt;/em&gt;&lt;/strong&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Investigate deadlocks&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;refactor(consensus): consensus state to fix deadlock &lt;strong&gt;&lt;em&gt;in progress&lt;/em&gt;&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Test: add deadlock detection with go-deadlock &lt;strong&gt;&lt;em&gt;done&lt;/em&gt;&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;fix(statesync): statesync stops the node when light block request fails &lt;strong&gt;&lt;em&gt;in progress&lt;/em&gt;&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt; fix(statesync): deadlock in peer up &lt;strong&gt;&lt;em&gt;in progress&lt;/em&gt;&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt; fix(consensus): commits received during state sync are lost #1867 &lt;strong&gt;&lt;em&gt;done&lt;/em&gt;&lt;/strong&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;What’s Left before Testing Phase&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Stabilize same-block execution&lt;/li&gt;
&lt;li&gt;Update BLS library&lt;/li&gt;
&lt;li&gt;Adjust vote extensions for withdrawal transactions&lt;/li&gt;
&lt;li&gt;Drive integration&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  GroveDB
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Tasks:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Sum Trees merge &lt;strong&gt;&lt;em&gt;in review&lt;/em&gt;&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Fix batch not properly propagating child root hash &lt;strong&gt;&lt;em&gt;done&lt;/em&gt;&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Average case processing costs &lt;strong&gt;&lt;em&gt;done&lt;/em&gt;&lt;/strong&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;What’s Left before Testing Phase&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Major&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;del&gt;Sum Trees merge&lt;/del&gt; &lt;strong&gt;&lt;em&gt;in review&lt;/em&gt;&lt;/strong&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Minor&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;del&gt;Average case processing costs&lt;/del&gt; &lt;strong&gt;&lt;em&gt;done&lt;/em&gt;&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Some code polishing&lt;/li&gt;
&lt;li&gt;Light proof feature&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  SDK
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Goals:&lt;/strong&gt;&lt;br&gt;
Rework chain synchronization process (SPV)&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Tasks:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Reworking chain synchronization process &lt;strong&gt;&lt;em&gt;done&lt;/em&gt;&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Manual QA &lt;strong&gt;&lt;em&gt;done&lt;/em&gt;&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Stabilizing Platform related workflows (Platform Test Suite) &lt;strong&gt;&lt;em&gt;done&lt;/em&gt;&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Updating grpc-web library &lt;strong&gt;&lt;em&gt;in progress&lt;/em&gt;&lt;/strong&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;DashPay Web Extension&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Wallet balance in USD &lt;strong&gt;&lt;em&gt;done&lt;/em&gt;&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Create/Reset/Backup Wallet flows &lt;strong&gt;&lt;em&gt;done&lt;/em&gt;&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Migrating extension from Manifest V2 to Manifest V3 &lt;strong&gt;&lt;em&gt;in progress&lt;/em&gt;&lt;/strong&gt; (needed for publishing to Chrome Store)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;What's next&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Reorgs handling and consensus rules fine tuning&lt;/li&gt;
&lt;li&gt;Secure keychain storage&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Protocol
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Goals:&lt;/strong&gt; Same block execution, fees and withdrawals&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Tasks:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Fee finalization (v23) in JS Drive and DPP &lt;strong&gt;&lt;em&gt;done&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Withdrawals:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Introduce withdrawals data contract &lt;strong&gt;&lt;em&gt;in review&lt;/em&gt;&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Implement the pooling process (type 0 only) for withdrawals &lt;strong&gt;&lt;em&gt;in review&lt;/em&gt;&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Update status of withdrawals after broadcasting &lt;strong&gt;&lt;em&gt;in review&lt;/em&gt;&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Add revision logic to IdentityCreditsWithdrawal transition &lt;strong&gt;&lt;em&gt;in review&lt;/em&gt;&lt;/strong&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Same Block Execution:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Use multiple database transactions for block processing &lt;strong&gt;will not be implemented&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Provide signature and block time in query handlers &lt;strong&gt;&lt;em&gt;done&lt;/em&gt;&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Fix for Reconnect logic in DAPI &lt;strong&gt;&lt;em&gt;done&lt;/em&gt;&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;contactRequest documents allow invalid toUserIds &lt;strong&gt;&lt;em&gt;done&lt;/em&gt;&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Identity v2 &lt;strong&gt;&lt;em&gt;in progress&lt;/em&gt;&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Efficient Data Serialization &lt;strong&gt;&lt;em&gt;in progress&lt;/em&gt;&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Integration of average case costs &lt;strong&gt;&lt;em&gt;in progress&lt;/em&gt;&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Integration RS-Platform into Platform &lt;strong&gt;&lt;em&gt;done&lt;/em&gt;&lt;/strong&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;What's left:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Major&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Fee Refunds&lt;/li&gt;
&lt;li&gt;Accomplish and test withdrawals&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Minor&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Logging of same block execution&lt;/li&gt;
&lt;li&gt;Use block candidate context in State Repository&lt;/li&gt;
&lt;li&gt;Deal with situation where fees are higher than Balance&lt;/li&gt;
&lt;li&gt;Verify fee processing costs&lt;/li&gt;
&lt;li&gt;Asset Lock and Unlock transactions integration&lt;/li&gt;
&lt;li&gt;BLS library rust binding&lt;/li&gt;
&lt;li&gt;Masternode reward distribution&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Rust Port Update
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Tasks:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Integrate Rust DPP into SDK, Drive, DAPI and test suite &lt;strong&gt;&lt;em&gt;in progress&lt;/em&gt;&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Initial glue figured out, DPP tests ported 159(68+91)/1174 &lt;strong&gt;&lt;em&gt;in progress&lt;/em&gt;&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Porting Consensus Errors Framework: 30/76 errors ported &lt;strong&gt;&lt;em&gt;in progress&lt;/em&gt;&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Successfully run platform test suite and test for Drive and Dapi &lt;strong&gt;&lt;em&gt;planned&lt;/em&gt;&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Integrating working BLS scheme into Rust DPP &lt;strong&gt;&lt;em&gt;done&lt;/em&gt;&lt;/strong&gt;
&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>web3</category>
      <category>opensource</category>
      <category>blockchain</category>
      <category>programming</category>
    </item>
    <item>
      <title>Decentralized Storage and Dash Platform</title>
      <dc:creator>Dash Core Group Devs</dc:creator>
      <pubDate>Fri, 25 Nov 2022 19:57:53 +0000</pubDate>
      <link>https://forem.com/dcgcrew/decentralized-storage-and-dash-platform-246k</link>
      <guid>https://forem.com/dcgcrew/decentralized-storage-and-dash-platform-246k</guid>
      <description>&lt;p&gt;There is a lot of hype surrounding web3 and for a good reason. Who wouldn’t want a smarter internet, immersive virtual worlds, and sophisticated creator economies? While the scope and potential of web3 are immense, it is just as important to talk about the building blocks of this ecosystem. One of the core things needed for the transition from web2 to web3 is decentralized storage.&lt;/p&gt;

&lt;p&gt;In this article, let’s get into the details and understand the advantages of decentralized storage. Finally, we will see how Dash Platform ensures data integrity with decentralized cloud storage.&lt;/p&gt;

&lt;h3&gt;
  
  
  What is decentralized storage?
&lt;/h3&gt;

&lt;p&gt;In a decentralized storage system, instead of storing all the data in a centralized server, you store chunks of it as blocks over multiple nodes in a network. Furthermore, the data is secured by cryptography. So, why go through the trouble of storing data in such an intricate manner? Surely, it will be much easier to use simple centralized cloud storage, right?&lt;/p&gt;

&lt;p&gt;Well, sure, the concept may be more straightforward to understand. However, centralized storage systems have several significant shortcomings.&lt;/p&gt;

&lt;h3&gt;
  
  
  The problems with centralized storage
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;#1 Susceptible to censorship&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The centralized storage system we are all familiar with is susceptible to censorship. Let’s take an example we are all familiar with. Wikipedia is a wonderful information resource, but it could be easily censored due to its centralized nature. For example, governments could suppress crucial information from being published on the country’s page.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;#2 Single point of vulnerability&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;When using a centralized storage service, you are essentially handing over control of your data to a third party. The problem with keeping all your data in one place is that you are essentially painting a very attractive target for potential hackers, as we saw during the infamous August 31, 2014, Celebgate hack. During the hack, someone hacked iCloud’s servers and leaked extremely private pictures of various celebrities.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;#3 Unethical Data Mismanagement&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Finally, let’s talk about data mismanagement. So far, we have seen multiple incidents of third-party service providers being irresponsible and unethical in managing user data. Facebook (now Meta) got in deep trouble when its systems allowed Cambridge Analytica to access the personal data of 87 million Facebook users. The data collected was later used to influence several high-profile elections.&lt;/p&gt;

&lt;h3&gt;
  
  
  The advantages of decentralized data storage
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;Security and privacy&lt;/em&gt;&lt;/strong&gt;&lt;br&gt;
Decentralized storage organically mitigates this since it stores your data across multiple independently-operated nodes. You don’t need to trust a singular provider because there aren’t any singular providers in this system. The data stored in a decentralized network is also encrypted via cryptographic hash algorithms, adding another layer of protection.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;Minimizing file loss&lt;/em&gt;&lt;/strong&gt;&lt;br&gt;
Since your data is stored across independently-operated nodes, the chances of file loss is reduced by a considerable amount. So, you are not dependent on a single service provider being constantly online or operational to have access to your data.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;Liveness&lt;/em&gt;&lt;/strong&gt;&lt;br&gt;
As we have seen time and again, websites tend to get very slow during high traffic. In some cases, the websites might crash altogether due to these traffic spikes. The reason is simple. There is only so much load that a single server can handle. A decentralized system that uses P2P technology isn’t dependent on one server. Any network load is shared among a distributed network of nodes, leading to fewer bottlenecks and a system that’s continually live.&lt;/p&gt;

&lt;h3&gt;
  
  
  Dash Platform’s web3 storage solution
&lt;/h3&gt;

&lt;p&gt;Dash Platform is a web3 technology stack that allows you to build dApps on the Dash network. Dash Platform consists of two components – Drive and DAPI.&lt;/p&gt;

&lt;p&gt;Drive is Dash Platform’s storage component, allowing for consensus-based verification and validation of user-created data. It is a layer-2 component that stores application data in Dash’s masternodes.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;How does it work? Let’s take a look.&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;The developer creating the application makes a data contract. This contract describes the data structures that will define the application.&lt;/li&gt;
&lt;li&gt;Data created by users of the application is validated and verified against this contract.&lt;/li&gt;
&lt;li&gt;When successfully validated, the application data is submitted to the Drive and stored on the masternode network.&lt;/li&gt;
&lt;li&gt;All data stored on the Dash network is protected by Dash’s consensus algorithm, ensuring data integrity and availability.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Conclusion
&lt;/h3&gt;

&lt;p&gt;Decentralized storage is one of the building blocks of the web3 revolution. Dash Platform offers a simple and effective way to store data in a decentralized network. Since application data is stored across many nodes on the Dash network, it is safe and always available for customers, business partners, and investors.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://dashplatform.readme.io" rel="noopener noreferrer"&gt;Learn more about the Dash Platform&lt;/a&gt;, and discover new opportunities for your applications!&lt;/p&gt;

&lt;p&gt;Originally posted on &lt;a href="https://www.dash.org/blog/decentralized-storage-and-dash-platform/" rel="noopener noreferrer"&gt;Dash blog&lt;/a&gt;&lt;/p&gt;

</description>
      <category>design</category>
      <category>discuss</category>
    </item>
  </channel>
</rss>
