Report from the frontlines: Dark Wallet alpha testing

Article by Phil Cohen:
dark wallet

 

“The value of cryptocurrency isn’t as a marketing ploy or to shave a few bucks off transaction fees, it’s a political statement—a radical and revolutionary tool.” - Cody Wilson, Dark Wallet co-founder

“computer science, computer science, the cutting edge, get involved …
Don’t just download the latest app, help design it.” - President Barack Obama

“No masters, no slaves, no babysitters…” - Dark Wallet lead developers

“There’s nothing wrong with asserting your privacy. Privacy is as apple-pie as the Constitution.” - Phil Zimmerman author of PGP

Screen Shot 2014-05-24 at 6.33.30 AMPrivacy is the right of every person.  Most legitimate governmental leaders and agencies, even the USA Department of Homeland Security, wouldn’t dare force us to remove all our curtains, window shades and mini blinds, with the claim that it was unfortunately necessary to provide safety and security.   Yes, terrorists and evil people, in general, benefit from privacy, but so do you and I.  It’s a fundamental right in a society that values private property and freedom of speech.  I’m a strong believer in the “keep your cotton pickin’ nose out of my business and private life” paradigm.

And that is why for the past several weeks I have been actively participating in the Dark Wallet alpha testing effort. DarkWallet Alpha3 (v0.3.1) is currently available for testing and I suggest that everyone get some hands-on time with this intuitive, easy to use, game changing application. I will immediately caution that the software is not quite ready for prime time and I would advise against using real Bitcoin. It does, however, function well enough to allow many to participate in and contribute significantly to the code development, review, debugging, testing and stable release candidate.   A totally professional-grade software offering is taking shape.

As the Dark Wallet website itself clearly states:

darkwallet Alpha3 (v0.3.1) available

Remember: this is only a alpha preview. Do not expect stable software yet.
Right now it is only available for Chrome/Chromium browsers.

IMPORTANT The wallet is Not Stable or Safe, and at this point you should
use it with real money only at Your Own Risk.

( In other words, DO NOT USE WITH REAL BITCOIN. )

You can use it with testnet coins so it’s safe to test like that though.
Choose testnet network when creating the identity.

 

The Dark Wallet Bitcoin testnet experience is not to be missed. In fact, it is an excellent opportunity for newcomers to get their feet wet with Bitcoin concepts and even some practical experience at no cost whatsoever. So, whether you are an old school Bitcoin millionaire or totally new to Bitcoin, there are many good reasons to explore the Dark Wallet alpha. Now, in any alpha test there will certainly be bugs of various severity so there is a link at the bottom of this article to the defect database, where you can read about all the current issues and report others that you may discover. You may submit requests for improvements there too. If you are a programmer, cryptographer, tester, technical writer etc. please become involved.

 

Getting started

The Dark Wallet alpha installs, very easily, as a chrome extension and the inScreen Shot 2014-05-24 at 6.29.48 AMstructions are clear and correct. The upgrade path from version to version works smoothly without any issues unless you don’t follow directions.  Do not ad lib upgrades or you certainly risk losing your contacts, pockets, addresses and coins. I have seen this happen to several testers who had no backups and thought the “seed” was all that was needed to restore from scratch. To be clear, the seed is needed to recreate your Dark Wallet identity and you, additionally, must have a backup to restore on top of the recreated identity. By following the upgrade instructions you might save yourself from that testing exercise.

Start by creating a testnet identity. By the way, you are free to establish as many pseudo identities as you desire, thereby making multiple identities the first layer of anonymity delivered in Dark Wallet. Explore the user interface and get a feel for the layout and grouping of functions. The user interface is advanced compared to other wallets yet easy to figure out. Think before you click and you are safe to explore.  Did I mention to not use real BTC? As you use the software and do your testing, it is critical that you make regular backups, as you would with any Bitcoin wallet. The “Backup all wallets” button is on the Identities page and, on Linux, it leaves an encrypted JSON file, as a backup, in your Downloads directory.  This file should be copied to a second secure device like a memory stick or local backup drive. A restore can be performed from the same Identities page.
The Lobby

A secure and anonymous chatroom is nicely integrated into Dark Wallet.  My perspective is that the contributions of the Dark Wallet lobby are, in itself, noteworthy and particularly valuable given the nature of Dark Wallet and the sensibilities of its users. The integral lobby provides several advancements that I will attempt to cover here. Locate the Channels menu where you should select Trollnet if you want to contribute to or monitor the communications.

On the right side, at the top you can see your “channel” which has a clickable magnet next to it. This allows you to send a “beacon” to contacts so they know you’re in the lobby and looking for them.

Below that is your private, permanent, identity displayed as a four word cryptographic signature.

Continuing down find your changeable, random, cloak. Cloaks are anonymous and when you click the tiny circle arrow adjacent to your cloak it will change. Anytime you feel like it you can change your cloak identity.
This is your pseudo-identity within the lobby, displayed as a second four word signature. Every time you restart the wallet and enter the lobby you’ll get a new random cloak. Under your cloak is the peers list which includes all of the cloaks for others present in the lobby right now.

You can have private chats with your peers by clicking on their associated speech bubble. The speech bubble turns solid if you have an unread message in the private chat. The clickable chain link allows you to send your identity to that particular individual so they can choose to add you to their contacts. Once you have accomplished identity pairing with another user, you see each others’ identity, free from cloaking.

It is my understanding that communications in the Dark Wallet lobby are encrypted with an ephemeral key-pair so, not only do you have layers of anonymity and the ability to change your cloak, all of the things that you communicate in there are only available as clear text to other lobby participants. In a private chat I believe that the conversation is likewise confidential between the two parties and generally impenetrable.

 

Testnet Bitcoin

You are going to need some testnet3 Bitcoin to perform any serious testing and there are a few ways to get it. Note that testnet bitcoin is finanScreen Shot 2014-05-24 at 6.29.31 AMcially worthless which is why it has value! Don’t get any ideas about selling testnet coins and kindly send them to a faucet when you are done using them.

Here are two easy ways to obtain some testcoin:

1. Click on “Wallet” and select an existing pocket or make a new one. Now click on Overview and copy the stealth address. Find your way to the Dark Wallet lobby, select the Trollnet channel and ask if anyone there will send you some testcoin. Paste the stealth address into the chat channel. Most of the time, that works.  Also, while exploring the Lobby, I advise that you collect some testing partners if you are motivated to explore the more advanced features. Or if you are less experienced offer to work with one of the more skilled testers. To test and play with multisig funds, for example, you’ll need a team of three or more! If someone sends you coin, go watch the transaction mature at Wallet->All->History->Last 10.

The stealth address is a secret, only useful within Dark Wallet, as it is encrypted to conceal the actual, standard, blockchain address.   Note that the addresses under the “Addresses” tab are all standard blockchain addresses that fully inter-operate with conventional Bitcoin wallets. Stealth Addresses are the second layer of anonymity in Dark Wallet.

2. If nobody is currently in the Lobby, you may get some testcoin at a testcoin3 faucet. Navigate to a pocket and select the Addresses tab. You may create new addresses if you like. Copy one of your standard addresses. Do not use a stealth address for this since only Dark Wallet understands them. Head over to a testcoin3 faucet and paste your address as the webpage allows, complete the captcha and go watch the transaction appear as unconfirmed and progress through full confirmation.

 

More about pockets and addresses:

One of the new concepts, introduced in Dark Wallet, is pockets.  You can have many pockets for structuring your finances and they are where the usual blockchain addresses are contained. Create a pocket and then create some addresses there. One nice effect of pockets is that you can spend from one without “tying up” all your coins as you wait for your change to be returned. When you send from one pocket, the coins in your other pockets remain continuously available. Create some change addresses too.

The form of a Bitcoin transaction is rather general, much more so than has been widely utilized until now. Pay attention here and you’ll have a better chance of understanding CoinJoin, coming up soon. The traditional BTC transaction pattern drains your entire address temporarily, for every send and a while later returns your change back to the original address.  You may have never noticed this if you haven’t goofed around with a blockchain explorer.  In an effort to further obscure any revealing data in the blockchain, Dark Wallet requires a separate and changeable change address where the change from a transaction is sent.  You can have many change addresses and switch them around as desired on a per pocket basis. Experiment with change addresses which allow you to manage exactly where your change is returned.

Dark Wallet displays how many times each of your blockchain addresses have been used and allows you to retire them as you desire. So, this merry-go-round of changing addresses is yet another layer of anonymity.

Since we are talking about addresses, what is a master address? It’s rather complex, so let’s just quote the DarkWallet wiki: The “master address” displayed in the pocket’s “Addresses” tab is the extended public key of a hierarchical deterministic wallet as described in BIP32. There is a lot to learn in this space and I’ll save BIP32 for another day.

The gory details of stealth addressing are easy to understand. Whenever a Dark Wallet user sends a payment to a stealth address, the software sends the coins to a different address that is a random encryption of the stealth address. The recipient’s Dark Wallet client then searches the blockchain for any address it can correctly decrypt with the user’s secret key. After the stealth payment is located, it is claimed for the user. If someone were to search for a stealth address using a blockchain explorer, nothing will be found, the transaction is essentially invisible.

 

Multisig Funds

Multisig funds are shared pockets that require approval from multiple identities in order to spend the coins in them. When the fund is established, managers, selected from Contacts, are defined and the number of approvals to spend is set. They are very useful and here are some of the more obvious things they enable.

To implement an escrow, specify the buyer, the seller and an agreed upon escrow officer;  2 of 3 approvals are needed to unlock the funds. For key loss prevention or a joint account, specify yourself, the trusted other party and require 1 of 2 signatures. Now either party can spend from the shared fund alone. I think of this last example as a nuke launch; specify 4 or more fund managers and require all to approve any spending.

CoinJoin, The secret sauce

The primary force of anonymity is the baked-in CoinJoin technology. It’s an automatic Bitcoin mixer that, over your transaction history, lays down a thick fog of uncertainty regarding tracking the addresses used in transactions that are recorded in the blockchain.  It’s like a house of mirrors that effectively obscures which addresses are related to each other and provides for a vastly improved experience of anonymity.

It works like this.   When you send coin, a brief time is spent looking for another random, unrelated, send on the Dark Wallet network. Since Bitcoin is a 24/7 world wide market, one is almost always available. Next, your conventional transaction is aggregated into a more complex multiple input / multiple output transaction that confuses ownership and heritage of all of the addresses involved by a factor of 2. As time goes on and mixed transactions accumulate on top of each other, the ability to track transactions for a “known” address becomes more and more difficult.  After 8-10 mixings it becomes really difficult and ultimately it becomes practically impossible. Even with the very best minds, fuzzy logic, genetic algorithms and a massive computational resource it all becomes too mathematically confused to unthread the tangle of information without a rather large degree of uncertainty remaining. You can even submit coins for mixing without spending them by easily transferring coins between pockets and sending them to your own addresses.

In the near future mixing will aggregate more than two random, unrelated, transactions, perhaps five or more, which will even further confuse and disrupt any remaining ability to connect or identify transactions.

This is by no means the first Bitcoin mixer ever developed, but it’s the first to be easily usable by practically anyone.

A short roadmap to the Dark Wallet Alpha3 user interface

Under Wallet you will find pockets which contain addresses, pocket actions allow you to mix coins in a pocket, move funds in one pocket to another pocket with mixing included, rename or delete a pocket

The pocket addresses section allows creation of new and viewing of all existing addresses in that pocket along with the relevant balance in BTC, converted to the world currency selected in settings as well as the total number of times the address has been used.  Change addresses for the pocket are included and managed here too. Access settings via the gear at the top right corner of the page and there are dozens of currencies supported.

pocket history displays transaction history for the selected pocket with the following filter options: last 10 , weekly, monthly and all

pocket overview displays latest transactions and provides access to the pocket’s stealth address. Alpha3 adds the ability to send coin from the selected pocket in the overview tab.

Selecting the “All” pocket displays information regarding all your pockets and addresses in one place.

The newly activated watch-only pockets allow for the monitoring of other peoples addresses, cold storage, paper wallets, cellphone wallets etc.

The “Send” tab provides access to sending funds in either BTC or the world currency specified in settings. Coins can also be sent directly from pocket overview.

Contacts - nothing conceptually new here, it’s just what it sounds like.  a place to keep contact information and reference other users, accounts, keys, addresses etc.

In alpha3, the potent multisig funds feature has been enabled.  One easily creates a multisig fund by specifying the fund managers from Contacts and how many signatures are required to spend.  Fund mangers sign or deny sends from their “Tasks” tab of the shared multisig fund pocket.  Payments are put on hold until the proper number of signatures are provided by the fund managers.

Conclusions

I haven’t covered every detail of this fascinating and impressive software. As more functionality is arriving with every weekly release, the Dark Wallet software developers and community has demonstrated traction and is making significant progress day by day. Multiple virtual identities, stealth addresses, change addresses, and CoinJoin blend to provide a formidable shield for those desiring anonymity. It interoperates with Bitcoin, which is the only crypto-currency that is widely usable for purchasing goods and services, adding a magnificent layer of uncertainty regarding which address have been associated with each other via transactions and who they might belong to. A massive confusion of addresses is accomplished partly by providing the ability to manage your own addresses to an extreme degree and partly through CoinJoin’s automatic transaction mixing. The lobby itself is an amazing achievement and my conclusion is that it provides superb protection from snoops for those that desire to chat privately with each other.

Why is privacy a good thing? You may be able to answer that for yourself with the following analogy. When using any postal service, one has a choice between a postcard or an envelope. It’s your choice which way to go. How would you feel if political leaders made envelopes illegal and each and every correspondence could be trivially snooped on? What if a government started opening mail at their own discretion and for their own motives? There is a right to privacy that does not, by itself, incriminate and Dark Wallet delivers the goods as an easy to use, fun to use and particularly exciting app. Allow me close by, once again, inviting you all to join in the Dark Wallet alpha test and community.  Until the next time, be well and be careful.

 

Important Links and Reference Material

Watch a Dark Wallet promotional video where Pres. Obama, himself, recommends that you get involved.
“Don’t just download the latest app, help design it.” - President Barack Obama

Dark Wallet motivation….

 

How you can help: https://wiki.unsystem.net/index.php/DarkWallet/HowToHelp
Home page: https://darkwallet.is/
Bugbase: https://github.com/darkwallet/darkwallet/issues
Wiki: https://wiki.unsystem.net/index.php/DarkWallet
Screenshots: https://wiki.unsystem.net/index.php/Category:DarkWallet_screenshots
Learn more about the Bitcoin testnet here: https://en.bitcoin.it/wiki/Testnet.

I like these testcoin3 faucets and there are many others:
http://kuttler.eu/bitcoin/btc/faucet/
http://faucet.xeno-genesis.com/

Extra Credit: Learn from Diffie: https://www.youtube.com/watch?v=1BJuuUxCaaY

Extra Credit : For those that might require a large volume of testcoin or are looking to learn all this more deeply. http://github.com/freewil/bitcoin-testnet-box offers a complete setup for easily mining your own supply of testnet3 coins. Remember, the only value testcoin has is that it’s worthless.

Extra Credit: What exactly is BIP32?

Other articles by rebphil that you might enjoy. 
Dark Wallet     Alpha Test Introduction    Dark Lobby   Alpha 4 update
Learning Crypto     DHM Key exchange     Eliptical Curve DSA     Greedy Mining
CannaCoin     IRC tipbot wallet     CannaStore
Tips for Phil:
BTC: 1JcNZ48vhNATfa96dXw8CVGhggSE2X795W
LTC: LVzr5taTj5Y4zG8MvpSGbQAT92YXrqdnpu
DRK: XhoZYuH64bbfbvTErPSKRi9jzMJA4QNNaM