Needless to say, the last month proved to be quite intense. Many events occurred during this short time frame - good and bad. Unfortunately, the bad events received the most attention. This development update will attempt to shed light on the good things that the development team accomplished.
First and foremost, we’d like to thank the community. Your hopeful spirit in the face of adversity, the tireless discussions in Slack, and every single contribution help the project mature. Thank you.
One of the major concerns voiced by a majority of you is the lack of frequent updates. This update marks the end of that trend. We will continue to provide minor updates on a more frequent basis. Please bear in mind that our development team sacrifices their free-time to help with the project, so please remain patient. We continue to look for more people to get involved with the “behind the scenes” work. Some of this doesn’t require any programming knowledge - you could help write documentation or updates! Please let us know if you’d like to help.
Now on to the actual development update! Please note: A hard fork will be required for these changes to take effect. One is planned for block 783000, which will be created around March 15, 2016.
Another essential op code has been integrated in preparation for escrow transactions for our decentralized marketplace. This function allows for a specified amount of coins to be locked into a double deposit escrow. If the funds are not spent, they will eventually be destroyed. The plan is to allow these coins to be recycled as stake rewards in the future.
A double deposit escrow is a 2-of-2 multi-signature address that is funded by two parties. Both parties then have to sign the transaction to unlock the coins. A single party will not be able to steal the coins within the escrow address. A double deposit escrow can be extended if required, by sending it to yet another double deposit address.
ShadowChat messages have been soft capped at 4KB for normal messages and 512 bytes for anonymous messages to prepare for the upcoming market release. Messages will require a payment made to the network in the near future to prevent spammers from flooding the market with listings and effectively serve as a listing fee as well as to protect the network from flooding of messages.
Proof of Stake Version 3
We’ve successfully integrated Blackcoin’s Proof of Stake protocol version 3. This update will require a hard fork of the blockchain as a few of the consensus rules have changed. Summary of changes:
- 2% static inflation of the total current money supply. Previously this 2% inflation was only applied for the amount of coins being staked which resulted in an inflation rate much less than 2%. New static stake reward around .27 SDC/block and rising.
- New stake modifier - new blocks can no longer be found before the previous block is found and accepted by all other nodes. The new stake modifier is a hash of the stake kernel and the previous stake modifier, making it impossible to find blocks in the future.
- Removal of checkpoint servers - increased competition for staking. Checkpoint servers would previously force all nodes to accept the first block it received as the newest block across the entire network.
- Removal of coin weight - all new competing blocks are treated equally. There is no longer an advantage for blocks with biggest reward or most weight.
Before we explain the fix of the recently discovered ring signature flaw, we want to thank Shen Noether from the Monero Research Lab for his contribution to our project. He spotted a vulnerability which effectively rendered our ring signature implementation useless. For his efforts, he was awarded the highest bug bounty available.
All ring signatures transactions that have occurred prior to this fix had a flaw in the KeyImage of the Ring Signature allowing anyone to see which public key signed the transaction. Anonymity was not completely lost, as the use of Stealth Addresses still protected the recipient of the transaction.
At first we thought to fix the keyImage by picking a different base point for the hashing function. Editing the base point is a tedious matter requiring complete transparency. The seed for the generator was the known timestamp value embedded in the source code.
We eventually decided against it, basing the anonymity on a single base point isn’t something we were very comfortable with. Instead we decided to get rid of the generator in the equation and use a different process to map the hash to the curve. The hash of the public is turned into a BN (Big Number) and then used as an X value on the curve. If X is not on the curve, 1 is added to it till a valid input is found. The benefits of this approach are transparency and more resistance against possible deanonymization attacks.
The graphical user interface (GUI) front-end is undergoing rapid development. It is nearly done and there is a whole list of changes and improvements thanks to crz.
A few months of work have gone into updating and preparing the GUI for the decentralized marketplace, here is the list of all changes and future plans.
- Better and cleaner overview page
- Simplified main menu sidebar
- Market (overview page with thumbnail listing/tables view, listings page, add item in shopping basket)
- Restyled almost all sections in the wallet
- Made better key management section (more logic)
- Better send page (split in send payment/balance transfer)
- More user-friendly tooltips in all sections
- Tweaks / bug-fixes and more.
- Simplified Key Management
- Removed news (attack vector)
- Mobile/Tablet friendly (responsive)
- Redoing Chat inbox and Chat/Address book slide-in from right.
- Last MP sections (e.g. user/id profile page and check-out wizard page)
- More filters on tables (e.g. checkbox show stake on/off)
- Better search
- Fix Modals
- Language filter option in the market listings
A community project has been launched of around 8 members that will cooperate to create a video tutorial series after the release of GUI 2.0. This will include basic installation instructions and will evolve to more complicated subjects as we go.
Previously, whenever synchronizing your Shadow wallet with the bootstrap file, the application would become unresponsive (white screen) although it was working just fine in the background. This is an issue of the past, as we’ve implemented asynchronous indexing to load up the GUI whilst the bootstrap process is in progress. The issue made our client look ‘buggy’ which we didn’t like very much. Special thanks to dasource for this improvement!
Blockchain Download - 10 Minute Full Synchronization
While bootstrap-by-file process is faster than the normal bootstrap-by-network method, it’s still too slow for our likings. We’ve come to understand that waiting time can have a huge impact on the willingness to use a program. Most people want to use it the instant they’ve opened it and the long waiting time is a struggle, we decided to speed this process up immensely. You can now download a blockchain.zip on Github (https://github.com/shadowproject/blockchain) thanks to dasource! Place the contents of this zip file into your shadowcoin folder and you’ll be in sync within 10 minutes!
Work in Progress: Tor Seed Nodes
We highly advise people to run their ShadowCash nodes through the Tor network. To make this process easier we decided to hardcode tor seed nodes in the future. This feature is not yet available in this release because our seed nodes have ShadowChat disabled. There’s a small bug that causes the CPU usage to skyrocket and we want to address that first.
An issue raised by the community was the status of the donation funds that were exchanged for Isidor Zeuner’s cryptography review. We’re awaiting a response from Zeuner in an attempt to retrieve these funds.
We've made great advances on the wikipedia page. A lot of people worked together to lift it out of the shadows and created a draft that contains a lot more information. We're still in the process of expanding the information and increasing the readability. Anyone is free to join our Slack channels and help a hand. In joining us, you'll be learning a lot more about the mechanisms and principles behind Shadow.
Our documentation has been steadily growing since the start. A new set of instructions have been added to get your Shadow node running securely through Tor and more minor content has been added to expand this knowledge base. It is still under heavy development with lots of empty sections but volunteers are slowly making very good progress! We'd like to thank LiteBit for his contributions.
Allien decided that it was time to give our project website a new look. Him and ffmad have updated the design and made enhancements to prepare translations for all of the content.
We also decided to get rid of any third party websites to free our website from tracking. Our promotional video, previously hosted on YouTube, is now self-hosted on our own servers by VideoJS. We also plan on doing this for our documentation website in order to get rid of any trackers that may come with these third party websites..
We want to thank all contributors for these translations especially sdc-linux, allien, ffmad, Tulsene and code. There was a lot to be translated text but we’ve made great progress so far we hope to continue these efforts.
Not everyone in the world can read English. By providing translations for our websites we uncover a new segment of our target audience. One could argue that the countries that currently have the biggest need for privacy and anonymity are countries where English is not widely spoken and understood.
Those who want to help our translations efforts can do so through Transifex. The languages previewed are not the only ones - you can add your own language.
Reddit Design Overhauled
We'd like to thank LiteBit for their contributions on the Reddit design, it's more beautiful than ever! https://www.reddit.com/r/shadowcash
The Shadow Team