Tech Tuesday Update #4: A Summary Of Last Week's Development

In case you’ve missed a previous edition and want to catch up, you can find all the previous Tech Tuesday updates here.

Without further ado, here are the past week’s tech highlights!

Agama released with new privacy project coin

Agama is a multi coin wallet. If you are a coin developer or an entrepreneur with thoughts of starting your own blockchain project - integrating your project with Agama Wallet can be done following these instructions and submitting a pull request to the team.

Portable easy to run zip files are available for download for Agama which now supports the privacy only transaction project PIRATE.

Download the latest Agama Wallet from the Komodo Platform website.

Welcome HUSH to bitcoin level security with Komodo dPoW

HUSH is a zCash fork and represents the first zCash fork to be notarized. GAME being the first external coin to receive bitcoin level security is a bitcoin fork, so the capabilities of dPoW for BTC/ZEC coins is now live. The type of integration changes depending on the internal code an external coin is based on, e.g. bitcoin version number. ZEC forks are based of bitcoin-0.11 whilst bitcoin forks themselves could be anything from 0.11 through to 0.15. Whether a coin is segwit activated and blocktime are other considerations for dPoW integration that must be customized when first integrated into the Notary Network.

A notarization round in the HUSH blockchain (also a zCash fork) will be approximately 4 HUSH blocks. HUSH is built with a blockchain reorganisation limit longer than 25 blocks - other chains may have this as well and it is this length of potential reorganisation that double spends become a problem.

In the event of a selfish (private) miner attempting to 51% attack the blockchain, the security service managed by Komodo’s dPoW to protect weaker chains limits the attackers window to approximately 4 blocks.

What is zk-SNARKs (zero knowledge) from Verus Project

The engineering abilities of the Komodo ecosystem has moved ahead in leaps and bounds with the collaboration and open culture of the Verus Project.

The Verus Project has a vision paper and phase I whitepaper with where the project will take the technology. The first milestone reached was creating a quantum resistant mining algorithm which is dominated by CPU miners globally. It uses and makes the advanced instruction set of modern CPUs act like ASICs for incredibly efficient mining.

Mike from Verus had this to say in their discord about what advantages zk-SNARKs has:

Just in case it's not clear for everyone, I want to clearly explain the point I was making about zero knowledge vs. encrypted. To recover the data, it must be encrypted, not just zero knowledge proven. To prove that a certain receiver is the receiver of a transaction or that the math between sources and destinations is correct, the original information does not need to be used. How this applies to a private transaction with zk-SNARKs is that the actual message and amount are there and encrypted, but the amount is never exposed, since the transaction can be proven correct without doing so, and there is no reference, no record stored whatsoever of sender or receiver, besides the ability for the sender or receiver to verify that they are a party to the transaction.

For privacy, nothing beats zero knowledge, because zero knowledge proofs separate the data from the proof of the data. That's why Monero and the ring sig based coins are all moving to bulletproofs or other forms of zero knowledge proofs. Lightning uses the Sphinx protocol, which is basically an improved Tor to provide multiple layers of encryption. This is still encryption of all relevant data, so theoretically, it can eventually be cracked, but to do so is very hard. To perform mathematical operations to ensure that transactions are correct, the lightning network needs to know the values of the transactions, which is another way to correlate who is doing what. This data also isn't used on zero knowledge transactions. While one can argue that Lighting has added a layer of privacy, I don't believe that privacy comes close to the theoretical privacy in zero knowledge systems.

Creating your own fiat gateway and StableCoin in testing

Last week in Tech Tuesday #3 we mentioned tokens, gateways and an oracle dApp for feeding non-blockchain pricing into some sort of gateway setup, like a StableCoin. In the past week, the testers have been hammering out some use cases and to explore how easy it is to create a gateway, one of them created an easy text driven tool to speed up their testing cycle.

These are some raw instructions from TonyL in #crypto-conditions channel used by testers to create and test gateway capabilities. The basics of creating a StableCoin or fiat gateway follow these steps - you really will only need to be following your jurisdictions laws (and python 3).

We will cover this topic in future Tuesdays and look at ways to create a GUI for it.

The very first user interface (a TUI for Text user interface) has been created by TonyL and here’s his discord announcement.

How to create your very own gateway with the testing gateways_cc_cli.py tool:

  • clone https://github.com/tonymorony/kmd_cc_qa and run gateways_cc_cli.py (it should be run by python3)
    Be sure komodod is in your PATH and daemon for desired assetchain is running
  • Press 0 to Create Token (Use same name as the name of asset you want to tokenize e.g. KMD. Please note that supply setting in 10e8)
  • Press 2 to Create Oracle (Use Ihh type and name of asset as well) It will also automatically register it and subscribe once
  • If you'll need to broadcast blockchain height more than once in one block it might be a good idea to create some more subscribe UTXOs for your oracle by pressing 3 and use Oracle subscription UTXO generator
  • Then you have to convert your tokens for usage with gatewayCC (for this use the [5] Tokens converter tool)
    Just follow the steps, input all the needed details and your transaction should get to rawmempool (and you'll get back to menu without any notification, sorry about that)
  • Wait till transaction from step 4 mined and you have everything now to finally bind the gateway by [6] Bind gateway
    Just use the txids which you get from previous steps where needed and read the hinds and your gatewaybind transaction should get to rawmempool (and you'll get back to menu without any notification, sorry about that).
    ! Please note that you have to input real token supply here (you can get it from tokeninfo it's what you used on step 1 but with 8 zeros)
    After this transaction mined your gateway should be ready and you'll able to check it by gatewaysinfo transactionidfromstep5
  • Compile oraclefeed dAPP and wait for the next update

Blockchain virtualization in a docker container became easier

There really isn’t such a thing as a virtualized blockchain. There is no “hardware” to virtualize, but there is a network that can be virtualized. The network application and suite of protocols surrounding a blockchain dApp is a hard thing to test so it’s important to be able to rely on development paradigms that are familiar to a development and operations team if a project is to adopt blockchain technology.

Komodo’s custom consensus framework provides developers with:

  • Consensus extending abilities - so things like 3rd party smart contract frameworks can be integrated (a bounty for a solidity interpreter); and,
  • Centralized data to be made available to decentralized applications (oracles); and,
  • Streamable on-chain payment channels (optionally) secured by the enormous computation power of the bitcoin network; and,
  • Custom consensus modules, like a blockchain enforced faucet; and,
  • Gateway functionality enforced by locking value to customer expectations (e.g. fiat gateway); and,
  • Interchain contracts, through blockchain interoperability open standards; and,
  • Even more to be developed

These solutions are provided out-of-the-box in the upcoming release due in Q1 2019 although they do require some understanding of the power they provide, making changes to them or creating new ones based off these examples for any custom blockchain project is much simpler than creating new blockchain rules.

The options for testing this software has recently been extended to provide containerized environment although still a work in progress. Drop into the #developer channel of discord for more information, the developer docs are currently being written.

Thank you Komodo developers, what an exciting week!