ABI, Spurious Functions, and Research Papers - Dusk Development Update #28
By Toghrul Maharramov

Mar 10, 2021

A monthly development update series created to embrace the transparency and inclusivity that we strive for at Dusk Network

Dusk Network is developing the privacy blockchain for financial applications. A blockchain-based ecosystem of programmable digital assets that meet industry compliance standards. Companies use Dusk Network to secure capital, trade assets, and access a full spectrum of financial services.

Key takeaways:

  • The implementation of an ABI, short for Application Binary Interface, improves consistency across the board of native function calls.
  • This month we have released three Dusk Network Papers: Whitepaper V3, XSC Paper V2, and Governance Paper V1.
  • In the next few weeks, the development team further improves the PLONK stability, adds an ABI inter-contract call patch, and plans to ease the life of future smart contract developers seeking to use zero-knowledge functionality on the Dusk Network.


Development

ABI - a native call solution

In the last 2 sprints (2 weeks each), and the sprint coming up a large part of our focus goes towards the ABI. ABI is short for “Application Binary Interface”, and we specifically need it to act as an interface between RUSK and Rusk VM. With the addition of an ABI, we make it possible for contracts to natively access host functionalities such as PLONK for zero-knowledge proof verification, or the Poseidon hashing algorithm for hashing.

Above all, implementing the ABI is important, because it creates consistency across the board. Using the ABI we can consistently expose host functions, but also spurious functions.

💡 Smart Contract methods & Spurious functions

Spurious functions are all the functions defined in the smart contract that do not cause a mutation of the storage. In other words, a spurious function is a call to the contract that does not trigger any update to the blockchain.

For example, when a user wants to know how many ‘bids’ are active in the consensus. This is a spurious function because it doesn't trigger anything in the smart contract. It just collects the requested information on the blockchain for you.

WebTech

The updated consensus is running stable on the Testnet. In the first sprint of this month, we have been stress-testing the nodes. The aim of these stress-tests is to create relative certainty about there being no critical bugs, before connecting it to the other components of the infrastructure. For example, during the recent stress tests of the node, we have been using the popular gossip protocol. In the next sprints we’ll replace the unstructured gossip protocol with the novel, and structured networking protocol called Kadcast.

The Webtech team is also working on tooling to solve a recently discovered bug in the synchronizer of the node. In rare cases, when a node falls behind it has difficulties to catch back up. This has to do with a protective filter that automatically discards duplicate blocks. While trivial to solve, it is difficult to consistently reproduce.


Research

This month has been a particularly busy one for the Research team, as not one, nor two, but THREE different paper releases have seen the light of day.

Whitepaper V3
The updated Whitepaper includes the latest advancements and specifications of Dusk Network: a privacy-preserving blockchain for smart contracts, financial applications, and regulated decentralised finance. The paper outlines some of Dusk Network’s very own inventions like the SBA consensus mechanism, Phoenix and Zedger transaction models, and a WASM-based Virtual Machine called Rusk VM.

XSC paper V2
In this paper we’re introducing a complete standard for the compliant issuance and trading of on-chain securities/security tokens. The standard makes for easy issuance and trading on the Dusk Network.

Governance Paper V1
Strong governance is at the heart of any serious blockchain project. With the release of the Dusk Network Governance paper, we detail the steps we’re taking towards a fully decentralized ecosystem.


Eagle Eye View - Roadmap

For a more thorough view of the Dusk Network development, please visit the Eagle Eye Roadmap image on our Roadmap webpage. Upcoming technical milestones can be found in the Dusk Ecosystem Roadmap.


[Please click the image to enlarge]

Outlook

In the current two-week sprint the R&D team is actively working on a couple of release updates that will not only be beneficial to the stability of the network, but will also make it easier for developers to write smart contracts that utilize zero-knowledge capabilities.

PLONK stability

The development team is fixing some minor issues that were preventing the finalization of the DUSK Contract in the previous sprint. By improving upon the circuit creation, they intend to increase the performance and usability of the entire PLONK library. For additional support of niche cases, the team adds “no_std” support. Examples of such cases are the Schnorr signature verification functionality inside a contract.

Inter-contract call ABI patch

“Inter-contract calls” stands for communication between different contracts. Inter-contract communication is particularly important for Dusk Network, as all transactions call upon the same DUSK Contract to pay for the fees. Besides, the inter-contract communication is required to create complex composable applications, such as Ethereum’s so-called “money legos”.

💡 DUSK Contract calls

The state transitions in Dusk Network are always initiated via a special function in the DUSK Contract called “execute”. As a result, any contract call requires the initiation of the inter-contract communication.

The inter-contract call ABI patch makes it possible for calls to carry an intermediate state. Without this ability to carry an intermediate state, we could find ourselves in situations in which the correct state is nowhere to be found. To best illustrate this, consider the following:

Alice wants to send 5 tokens to Charlie. While we would expect the transaction to be successful, it could also fail for various reasons. Perhaps Alice did not pay enough gas to complete the transaction! In this case, the contract will revert to the initial state, so no changes will be made.

However, Alice still needs to pay for the gas used, as otherwise she could spam the network for free. For the correct handling of this gas payment, the network cannot use the initial state (as in the initial state the gas payment is not deducted) or the final state (As there is none, the transaction did not succeed). That is where the intermediate state in the inter-contract call comes into play


Canonical annotations w/ MicroKelvin

As we are pushing the boundaries of zero-knowledge friendly smart contracts, we need to encode them in a way that developers can easily make use of the zero-knowledge functionality. Smart contract developers are familiar with WebAssembly, but can not be expected to know how to use the zero-knowledge friendly data structures by MicroKelvin. And that is exactly why we are creating annotations.

Essentially, annotations attach information that describes how to store a certain structure. Using annotations, Canonical can act as a Foreign Function Interface, and automatically translates code to the native system with its predefined set of annotations.

💡 A Whitelist example

When you create a whitelist (to allow certain users access to your functionality), you would create a data structure that is automatically annotated by Canonical. Via these annotations, RUSK host functions (such as PLONK, or Poseidon Hashing) can efficiently access and use its contents. For example, to prove in zero-knowledge that a certain transactor is indeed part of the whitelist, and thus authorized to make a trade.

Community

Lots of exciting things are happening as Dusk Network made its first steps onto the Binance Smart Chain DeFi ecosystem to explore the potential of large-scale DeFi adoption. More specifically, we are focusing on Regulated DeFi solutions, dubbed RegDeFi, bringing both privacy and auditability to the ecosystem.

At the same time the business team experiences increased traction on the traditional side, as we’ve not only teamed up with Business Accelerator Investor Ready, but also made progress with LTO Network to bring token-financing to Dutch companies.


About Dusk Network

Dusk Network is an open-source and privacy-oriented blockchain based on years of academic research. You can use Dusk Network to create smart contracts that control digital assets and securities.

Share this post

Subscribe to our newsletter

Dusk on GitHub Download Whitepaper