ZenCash Software Development Projects Update

Rolf Versluis
Horizen
Published in
7 min readMay 5, 2017

Things are getting even busier for the ZenCash team! Launch for ZenCash is on May 23rd at 7 pm eastern time (2300 UTC), and we are getting everything ready.

As we have asked for people to assist with different parts of the operation, it is gratifying to see some people step up and take responsibility, getting things done, and working on a regular basis to help with the launch of the cryptocurrency. The people that are working now are going to be the first people we turn to after the launch, when there are proposals, projects, and funding. Both talk and action are necessary to succeed, and at this point I know I really appreciate the action people are taking!

I thought it might help to explain what we are working on, and our priorities, from a software development side. **

ZenCash Node Software

The one most important thing right now is to have ZenCash node software written, tested, and reliable. Without this, there won’t be a ZenCash! As long as the node software can be downloaded, installed, and run in production, we will have a successful launch. This is what our developers are primarily focused on right now. The ZenCash Github project page is the location for this effort.

It is very helpful that ZenCash is based on Zclassic, and will start out as a chain split. That means the Zclassic blockchain will continue with no changes planned, and on May 23rd ZenCash will start a new branch of the Zclassic blockchain, and there will be a full ZenCash blockchain, including all the prior history of the Zclassic blockchain. There are some things that need to be done to prepare for the chain split. The biggest one is protection against replay attacks.

Here is a good explanation of a replay attack on Reddit

lucasjkr 13 points 9 months ago

Say there is only one blockchain, and I have coins on that chain. The chain then forks, and I now have coins on Chain A and Chain B. I want to buy something with my coins on Chain A, so i create and send a transaction, transferring coins from Address A (which is mine) to Address B (which is who I’m sending the coins to).

I then go to my Chain B wallet and find the coins on that address are gone from my Chain B wallet too.

That’s because someone broadcast the transaction that I sent on Chain A to nodes on Chain B. The nodes have no way of knowing which chain a transaction is meant for, and the validly signed transition moving my Chain A coins is just as valid on Chain B.

It could have been the person I sent my coins to sneaking themselves extra coins. It could have been an attacker, who just wanted to rattle confidence in the whole system and who is therefore rebroadcasting EVERY transaction one of chain to another chain.

And this can happen anytime — someone can hold their coins on both chains for years to see which one wins out — turns out both stay relevant and used, and they make a transaction on one, without moving their other coins at the same time — anyone can rebroadcast that transaction on the second chain whenever they want, and as long as those coins exist on the second chain, those coins will be moved, whether it’s a second later or five years later.

Basically, if a fork were to ever happen and both sides wanted to continue to operate independent of one another, one fork would have to establish essentially a salt to get added to their transaction before signing that’s only recognized by one side but not the other. Which would be very difficult, given that its all open source, the rules, salts and everything else are available to anyone to inspect at any time.

Obviously, nobody who owns Zclassic now and ZenCash in the future wants to be the victim of a replay attack!

What you can expect to see in the next week or so on the ZenCash software is a progression:

  1. ZenCash Node software beta version with testnet published at ZenCash Github
  2. Team deploying Node software on servers using the testnet.
  3. Team using wallets on testnet.
  4. Finding any issues and fixing them.

ZenCash Eleos Wallets

In parallel with the ZenCash node software, the Wallet software for ZenCash will be released. The Eleos GUI wallet is already available for Zcash and Zclassic for Linux Ubuntu on PC, Mac, and Windows. I’ve installed and run all three, and they work well. Because ZenCash is very similar to Zclassic, when the ZenCash node software is available, it will be straightforward to put this node software into the Eleos wallets for ZenCash and release a version supporting ZenCash.

Will there be other wallets supporting ZenCash? Of course there will! These are on the roadmap. One of the big advantages of having a ZenCash funded decentralized governance organization is the ability to have proposal, projects, and priorities. A usable cryptocurrency requires usable wallets.

The Eleos GUI Wallet for ZenCash, Zclassic, and Zcash are the next highest priority for our developers.

ZenCash Secure Messaging

Imagine using the same high security system that you use to send your cryptocurrency to send messages. And not just one to one messages, also one to many. These messages are encrypted in the blockchain, and transmitted rapidly from Wallet to Secure Node, to the blockchain, and back to user Wallets. They’re not instant, and can’t be very long….but they’re secure, anonymous, and no one can tell if you are sending messages, money, or both.

ZenCash extends the Secure Messaging capabilities of Zcash and Zclassic by increasing the message field space to 1024 bytes from 512 bytes.

The ZenCash Eleos wallet will also have the ability to create a private Z_address from a word. Why is this important? If I want to send secure messages to a bunch of people at once, I tell them to go to their wallet and create an address from the words #BlockOpsSays. The wallet will create the same private address for everyone. Then I can send a message to that z_address, and everyone who has that channel on their wallet will get it!

Secure Node Tracking System

Another project involves the Secure Nodes. Because some of the coinbase mining reward is being redirected to ZenCash nodes that meet certain criteria, there has to be a way to verify the nodes. This is done through performance testing.

Please note that this is not the requirement to run the ZenCash node software on a system, these are the specific requirements for Secure Nodes.

Secure Node requirements:

  1. Operate ZenCash node software on a capable system.
  • Recommended memory is more than 4GB
  • Decent internet connection
  • Secured to prevent hacking.
  • Maintain entire ZenCash blockchain on the system.
  1. Provide a valid SSL certificate to the ZenCash Node software to use for communicating with other nodes and wallets.
  2. Keep at least 42 ZenCash on the server in a t_address for staking
  3. Monitor the SecureNode channel for challenge messages from SecureNodeHQ approximately every 10 minutes (in a z_transaction message field)
  4. Respond to challenge with identifying information of the Secure Node.
  5. Challenge response will be a combination of things:
  • Send a shielded message to SecureNodeHQ containing public t_address and GNUnet document location in message field
  • Publish a document to GNUnet signed with private t_address including:
  • public t_address of staking Zen, which will also be used for reward payment.
  • SSL certificate and IP address
  • Block header from blockchain
  • Other information that may be necessary to make sure it is a unique server
  1. Other potential requirements that may come up in future to allow ZenCash system to use the Secure Nodes for consensus and computing power

The Secure Node tracking system will publish the challenges, and the responses from the Secure Node will be tracked and published on a web page for visibility. Payments will be done on a regular basis.

Governance System

ZenCash will have an allocation of miner rewards for a Distributed Governance Organization. It won’t start out as Autonomous, although that is a roadmap goal. For this to work, there will be the following application:

  • Proposal System
  • Voting System
  • Project Funding Allocation System
  • Governance Reporting System

OK, we don’t have those created yet. It’s one of the reason we need to be able to get funding from the blockchain. We need to be able to hire developers to make these systems for us.

Reporting and Information Systems

One of the things we want to do is provide information about how things are going, statistics on the elements of the system that make up the ZenCash blockchain, how Secure Node and Governance funds are distributes, as well as updates, roadmaps, and everything else. This blog is part of the system, and we will have more as time goes on.

Funding of the Team and Software Developer Contracting

Right now there is no funding! Everything we are doing is for free!

Although I have to say, the situation we are in is really good. We have a solid team of contributors coming from the open source Zclassic community. Many people are helping in many different ways. The core team and other contributors are focusing on the things that are going to make the system work. Right now we are entirely staffed by volunteers and contributors. There has not been an Initial Coin Offering, there has been no Investors, and we want to keep it that way. We want to bootstrap into production and control our own destiny going forward.

We are betting that ZenCash is going to be successful, and that we will be rewarded by continuing to own Zclassic and receiving the equivalent allocation of ZenCash after the chain split. There is no one who wants ZenCash to succeed more than the team of people who have been contributing time, effort, and money to get us to where we are right now.

So, if you are a software developer, and would like to contribute for free now, you will be one of the first people we turn to when we start contracting developers with ZenCash to create and improve our software applications in the future.

More Information

Find out more about ZenCash here:

ZenCash Website

ZenCash Blog

ZenCash YouTube Channel

ZenCash Wiki

ZenCash Slack Invite

ZenCash Blog on Medium

ZenCash on Twitter

ZenCash on Github

ZenCash on Bitcointalk

** A quick note — I am not a software developer. I may be getting some of the information slightly wrong, and I may provide corrections in the future. I’m technical (electrical, nuclear, and data network engineer) but not a developer.

Originally published at ZenCash Blog.

--

--

Rolf Versluis
Horizen

Techie, Sales Guy, Business Owner. Former US Navy Submarine Officer. Co-Founder and Executive Adviser for Horizen Cryptocurrency