Bytecoin, SX, OpenBazaar, Zerocash: Decentralizing Finance

Preparing for use of a Decentralized Financial System

Here it is assumed that those reading this post may know very little or nothing about the use of decentralized financial systems, so this is intended as a step-by-step guide which provides the simplest possible approach for setup of these systems.  For simplification and for best protection of your information, this guide is intended for those who are preparing to use, or are using, open source operating systems (Linux based).  However, if you are still using Mac / OSX or Windows, links are provided for you to obtain more information.  This post will be referenced elsewhere on this blog in future posts that relate to community development and sustainable systems.  As has been the case in the past, the decentralization of giving processes is encouraged through this blog.  The blog’s author is a proponent and co-author of projects to decentralize giving in a community or larger charitable context as shown at http://abis.io and sx tools, which are covered later in this blog post.

Follow the steps under each main category in order.  You do not need to follow the installation instructions under every category ~ with one exception:  regardless of what operating system you are using, you must read and follow the instructions under the “Check and Update” section below, before proceeding further.  Please follow those instructions even if you already know what you are doing and feel like you can skip it, because there are parts of the “Check and Update” section that will save you trouble later.

To do what is described in this post,  you will need at least a laptop computer (ideally with dual core or greater processors) in fair or better condition (it doesn’t have to be new, but needs to work reasonably well), a reliable internet connection, and a power source.

If you are a software developer, you can try to do some of what is shown in this post with a good tablet or phablet (such as one with quad core processors) by using the Ubuntu/Android dual boot tech preview – but note that the mobile devices compatible with that tech preview are limited at this time.  If you are not a software developer, you’ll probably want to stick with a laptop or tower for the rest of this.

  (Some suggestions will be provided at the end of this post on how to power your device for these activities using renewable energy or use offsets if you wish to do that.)

Check and Update

First, understand what system you have, and how you can update that system.  Grab a pad or piece of paper and pencil so you can make a note of it.   This is important, so don’t skip this step!  This will vary depending on what machine you have, so head on over to “WhatsMyOS” ~ this will tell you how to find out what your operating system actually is (it may actually appear at the top of the page) along with instructions on how to find what version you are using.

Once you have that, you should write down your operating system and / or distribution, and what version it is.  Follow update and upgrade instructions that correspond to your system.

 A guide is provided here to update your OpenSSL which is particularly helpful for users of Mac / OSX, Debian / Ubuntu, or Fedora / CentOS.  Make sure and go through this update process.

Go ahead and skip the step in the guide which refers to upgrading or installing Bitcoin if you are not yet using Bitcoin.

Finally, if you are already using an free, open source operating system, after checking and updating your OpenSSL, skip ahead to the section below titled “The Tools.”

If You are Using Mac / OSX or Windows

If you are not yet using a free, open source operating system and are currently using Mac / OSX or Windows, it is recommended that you migrate away from those OSX or Windows systems.  Here is a guide that shows you how to migrate away from Mac / OSX or Windows easily and quickly as can be done.  With the recommended ‘Wubi’ style Ubuntu migration process described in the guide, you don’t need an installation CD, and you’ll be able to access the files you had on your previous operating system right from your new operating system once it’s installed, so this is a very convenient option. Even so, follow the instructions and do a backup before you begin, and write down any password you will associate with this process.

If you’ve chosen to migrate using the ‘Wubi’ Ubuntu system, on restart you’ll have a completely fresh system. After restart, you’ll need to update and upgrade along with with ensuring your new system has the right version of what it needs to be secure.  Here’s that guide showing you what to do after restart.  At this point, you can either follow the step in the guide which refers to Bitcoin or ignore it and just follow the other steps in the guide.

With the ‘Wubi’ Ubuntu installation, you will need to adjust it in order to ensure that it operates with enough memory in some of its files to run the programs (such as Bytecoin) that are covered later in this post.  Here are the commands showing how you do that.  You’ll start either by using the ctrl-alt-T key combination to open a terminal, or by using your Dash and typing in ‘terminal’ to find what you need to open.  From your open terminal, type the following (hit ‘enter’ after each line is typed or copied in and wait for it to complete and return before you enter the next line):

sudo su
swapoff -a
cd /host/ubuntu/disks/
mv swap.disk swap.disk.bak
dd if=/dev/zero of=swap.disk bs=1024 count=2097152
mkswap swap.disk
swapon -a
free -m

What this did is it increased your ‘swap space’ to 2 GB.  It could be made bigger, but for most purposes, this is big enough.  You can find more information about this process here.

[July 13 update to this post]: Recent updates for Ubuntu users of 12.04 LTS / Wubi in particular may result in a background error reporting application known as “whoopsie” to consume huge amounts of memory for your device, which slow it down tremendously, or on some machines, may cause it to freeze.  If this happens to you, use the following command from terminal to remove “whoopsie:”

sudo apt-get purge whoopsie

Finally, go click on your system settings (looks like a wrench on a gear) and under ‘brightness and lock,’ uncheck the “Dim screen to save power” option, as well as selecting ‘Never’ on the ‘Turn screen off when inactive for’ option.  You may find that this will avoid screen freeze.  However, if you don’t have that issue, you won’t need to change the ‘brightness and lock’ settings in this way.

Now that you’ve done that, take some time to familiarize yourself with Ubuntu security.  It’s different, and better, than that of Mac / OSX or Windows.  The page on Ubuntu security is pretty well done, but if you are still looking at options for full disk encryption (locking down your entire disk to keep it safe from busybodies), don’t bother with Truecrypt anymore. Other encryption recommendations (such as LUKS, mentioned on ‘Ubuntu Security’ page) are good.  More info on full disk encryption solutions, like LUKS and cryptsetup, can be found here.  At least initially, it is recommended here that if you are running the ‘Wubi’ Ubuntu installation, that you avoid attempting full disk encryption (for initial ease of use) as you get accustomed to the open source system.  You can come back to this later to try to add that layer of security if you wish.

It took a while to finish all this, so pat yourself on the back, take a walk, and come back:  You’re now ready to decentralize the financial system.

The Tools

Bytecoin

 Bytecoin is a decentralized, anonymous cryptocurrency that is based on cryptonote technology.  Bytecoin is not Bitcoin ~ those are two distinct systems, and bitcoin is not anonymous in its present form.  Bytecoin is the first decentralized virtual currency system to provide both anonymity and allow a user with any ordinary laptop of the day (and no special equipment) to both run the program as well as ‘mine’ the currency.  It is designed to run on your standard CPU only – no GPU, no ASICs, which avoids high equipment and energy costs, and other problems associated with them.  Additionally, it does not involve the use of any “master nodes,” and due to the nature of the ‘ring’ system used, it avoids the address reuse problem, thus no two transactions can be tied together.  Destinations are public keys, derived from a recipient’s address and sender’s random data.  Bytecoin’s developers have accomplished a lot in a few years of work.  As a result, Bytecoin offers anonymity that simply happens as a result of your use of it.  This works well for small communities and groups, since the design of Bytecoin technology makes it practically impossible for anyone to determine who you are in a group of anywhere between 30 and 60 people (or larger, which may vary and depends on the amount of bytes making up a transaction). The transaction involves a ‘ring signature’ generated by the network.  As transaction sizes grow, any group in which your transaction is hidden may also grow.  This growth is not without limits, but the anonymity it does offer is significant.

The software is multiplatform, but the following instructions will enable you to readily use this on standard Linux-based installations, including the ‘Wubi’ Ubuntu installation referenced earlier in the post.

If you have not yet done a bytecoin installation, note that there is now an elegant graphical wallet (available by download, with instructions provided here) which provides all Bytecoin features in one easy-to-use and intuitive interface. It looks like this:

Bytecoin Wallet: Overview

This newly released wallet comes with an amazing twist:  It allows you to send to several users at once, a significant step toward realizing and developing compassion and microgiving potential in transactions.

(Note that if you’ve already installed bytecoin prior to the release of the graphical wallet, the wallet can import the .keys file you already are using with your existing password, but will create a .wallet file for further operations.)

If you are a Linux (Ubuntu or other) user and wish to use the reference client, refer to the below instructions.

  1. Download most of the software here at the Bytecoin page. Do this by clicking on the penguin under the Bytecoin Reference Client section on the left of the page.  Some guidelines are also provided here at the Bytecoin page to help with the process.   If for some reason you cannot access all of the page, it’s possible that you are using NoScript (or a similar script blocker), in which case, just select “Temporarily Allow All This Page” in your NoScript menu for that page (at the top left of your browser bar) to access the desired content.  When you’ve finished with this process, under your ‘home’ folder on your system, you should have a bytecoin folder.

  2. Once that’s all done, go back to the bytecoin page, and look at the ‘Blockchain’ section on the right hand side of the page. Now you’ll see a button that will allow you do download the blockchain.  You will likely be redirected to Mega for the blockchain download, and here you may be prompted to install Mega’s extension before you can access that download.  If so, continue by accepting that extension, and once it’s done, reload the page and proceed to download.  The blockchain zip file is large, and depending on your internet connection, might be downloaded very quickly (15 minutes) or very slowly (an hour).  This will likely be the slowest part of the process.

  3. Once the blockchain software has reached 100%, you want to do the following:  Right click on the file (it’s probably on your desktop) and look at is properties to find its file path.  Open a terminal by using the ctrl-alt-T command (or by using your Dash and just typing TERMINAL in the search bar to find the application) and you will see your username@ubuntu or something like that.  Make a note of it.  In order to unzip the blockchain file to the proper location and make it work easily, copy and paste the following into the terminal (the way this command is typed out below for you assumes that the file is on your desktop – if it’s not, you’ll need to change the file path in the command shown below).  Note also you need to replace ‘yourusername’ with your actual username:

    unzip /home/yourusername/Desktop/blockchain.zip -d ~/.bytecoin/
    
  4. You’ll notice it asks you if you want to say Y (yes) individually to get the files unzip, but also presents with A (all) to just go ahead and do it all.  Go ahead and type in A and hit enter.  It will then “inflate” the files (takes a little bit), it’s done when it returns a prompt.

  5. You are now ready to use bytecoin.  Close out of whatever terminals you have open and close any programs you have open.  Check and see if you have a browser open, if so, make sure and close that.  It will help for the startup process if you have other items closed when you do it.  For these reasons you may wish to write down the rest of the following instructions for bytecoin shown below (which are short), and then close this browser you are using.  Bookmark this page for reference to return here easily later.

  6. Open a terminal (ctrl-alt-T or from your Dash).  Open a second terminal in the same way.  In one of the terminals,  enter the following (change ‘yourusername’ to whatever your username is at your operating system / terminal) and hit enter after each line:

    cd /home/yourusername/bytecoin/
    ./launch bytecoind
  7. After a little while, the bytecoin program will tell you that “You are now synchronized with the network.  You may now start simplewallet.”  Occasionally you will see some red lines indicating signature mismatches.  Ignore these as the system will self-correct and continue to synchronize.

  8. Once bytecoin has shown you a line that says “You may now start simplewallet” do the following: Click on the second terminal – the one you haven’t done anything in yet.  In that one, type the following, again replacing ‘yourusername’ with whatever your username is, and hit enter after each line:

    cd /home/yourusername/bytecoin/
    ./launch simplewallet
  9. It will ask you for a wallet name.  Type wallet.bin and hit enter, then make a password.  Store your password somewhere safe (perhaps written down or stored in a safe), as there is no way to recover your password if you forget it.  At the wallet prompt, type refresh and hit enter, then type help for a list of commands.  You can mine (generate cryptocurrency for your wallet using your computer) simply by typing start_mining and hitting enter.  You can find your public address simply by typing address.  You can transfer funds to another user by using the following format for a command from your wallet (the number 10 instructs the wallet to maximize the amount of anonymity that the system can handle for the transaction where a ‘mix’ range is 1 to 10) – under the original bytecoin wallet, the command format to send funds was as follows:

    transfer 10 PublicAddressOfAnotherUser AmountofBytecoin
    

    However, with new updates for bytecoin (BCN) issued as of August 13, 2014 (please update if you haven’t!), the following command format should now be used to send funds (note that you can choose a fee anywhere from 0.01 to 10 bytecoin – the lowest possible fee, 0.01 bytecoin, is now 1000 times cheaper than it was previously, but the higher that you set it for any given transaction, the quicker your transaction is completed):

    transfer [mixin_count] [address] [-p payment_id] [-f fee]

    Below an example is provided of how that would look if you were to use a ‘mix’ count of 10, to send 10,000 bytecoin (BCN), with a fee of 5 bytecoin for a transaction. Note that you do not have to include any information about ‘payment_id.’ ‘Payment_ID’ is generated by BCN-accepting services, and information about it is provided to a customer after a customer makes a withdrawal request or an order, but is not needed to make common transfers from user to user.

    transfer 10 PublicAddressofAnotherUser 10000 -f 5 
    
  10. To stop using bytecoin, you need to exit the system in a certain way.  With the terminal active that you used to launch your wallet, if you started mining, make sure to type: stop_mining (and hit enter). No matter what, the final step in that wallet terminal is to type: exit (and hit enter).  Now close that terminal window.  You are left with the terminal where you launched bytecoind, which is showing you synchronization progress as well as a brief message about your mining having stopped.  In this remaining terminal, type: exit (and then hit enter / return).  A ‘stop signal’ will be sent by the program and any progress or work your device has done will be saved.  Once it shows you a message about the ‘SwappedVector’ hits and misses and returns you to a prompt, you can close the window.    To restart bytecoin, follow the instructions from step 6 above.

Mining Bytecoin

Mining bytecoin can be accomplished simply by typing start_mining and stop_mining from the wallet.  However, a more effective way to mine is to work with others by pooling computers’ resources to solve the puzzle that helps release bytecoin to your wallet(s).

There is a simple and direct way to do this which involves the use of “miner” software that does not require specialized hardware or high energy consumption, with only the computer that you have been using so far.  For the users who have gone through with the ‘Wubi’ installation of Ubuntu shown at the top of this post (Wubi install / Ubuntu 12.04 LTS), the following commands in your terminal will install and prepare the miner for your use with the ‘open source pools:’

sudo apt-get install libcurl4-gnutls-dev automake build-essential git
sudo apt-get install libtool
sudo apt-get install libssl-dev
git clone https://github.com/wolf9466/cpuminer-multi.git
cd cpuminer-multi
echo "autoreconf -i" >> autogen.sh
./autogen.sh
CFLAGS="-march=native" ./configure
make

The process then ends with a command to a bytecoin mining pool of your choosing, with the command line looking like this (so that any rewards achieved by mining are sent to your wallet):

./minerd -a cryptonight -o stratum+tcp://SiteOfYourChosenPool:PortNumberSpecifiedbyPool -u YourPublicBytecoinAddress -p x -t NumberofThreadsInNumericFormatSuchAsOneorTwo

However, you may find that (with some computers) you’ll get an error when you issue this command, such as, “”CPU does not have AES-NI, which is required.”  (More on that AES-NI thing here.) This is because not all computers’ hardware is compatible with the miner.  If that happens, you can try again starting with the CFLAGS line with the ‘configure’ part being slightly different, as follows:

CFLAGS="-march=native" ./configure --disable-aes-ni

Hit enter or return. When it’s done, type:  make  (and hit enter or return).

At this point, try the ./minerd command again and if that still gave you error(s), run the following commands from terminal:

git clone https://github.com/LucasJones/cpuminer-multi.git
cd cpuminer-multi
echo "autoreconf -i" >> autogen.sh
./autogen.sh
CFLAGS="-march=native" ./configure
make

Now you are now ready to issue again the command to a pool of your choosing in the following format:

./minerd -a cryptonight -o stratum+tcp://SiteOfYourChosenPool:PortNumberSpecifiedbyPool -u YourPublicBytecoinAddress -p x -t NumberofThreadsInNumericFormatSuchAsOneorTwo

At this point you will see the computer start mining the bytecoin ~ it will show you the progress of this effort.  Each pool is different in terms of the timing of distribution of any reward reached through mining.   If you want the miner and all things associated with it to stop running, open a new terminal, and type in:  pidof minerd    (then hit enter or return).   If it’s running it returns a number, type:  sudo kill (followed by the number you saw the computer return after the previous command) and hit enter.  Enter your password, end the process, and type exit to close the terminal.  In the future all you have to do to restart the mining process is use the command format shown above this paragraph (beginning with ./minerd) from terminal (after using the cd command in terminal to navigate to your cpuminer-multi folder).

For users of Ubuntu 14.04 x64, the miner is installed as follows:

Code:
sudo sysctl -w vm.nr_hugepages=X

where

Code:
X=number_of_threads * 3

sudo apt-get install libcurl4-gnutls-dev automake build-essential git
git clone https://github.com/wolf9466/cpuminer-multi.git
cd cpuminer-multi
echo "autoreconf -i" >> autogen.sh
./autogen.sh
CFLAGS="-march=native" ./configure
make

 

That should cover the bases, but if you are looking for additional guidance, see here.

SX

SX is a unique set of utilities, generally designed for administrators and software developers (but which can also be used by anyone with some grit and determination), that is intended to help enhance Bitcoin functionality without having to write code. SX is presently designed for installation on Ubuntu/Debian and ArchLinux operating systems.  It incorporates guidance for development of multisignature transactions as well as stealth transactions, which present a much greater degree of privacy than ordinary bitcoin transactions.  This allows you to use an ordinary public bitcoin address, but prevents passive observers from knowing your transaction history.

Instructions for how you can set up your own simple bitcoin client using SX are shown here.

You can find more installation instructions and contact info for developers of SX at this page.

Of note are sx tools, an additional development which provides – in part – a “charity donations” panel to help make the process of decentralizing giving easier for everyone.  It is strongly recommended that you check this out.

A specification to chart a path for implementation of concepts described at http://abis.io within the bytecoin (BCN) system, in a manner similar to the appearance of the sx tools “charity donations” panel, will soon be made available through this blog and other fora.

 

 OpenBazaar

OpenBazaar is truly an amazing development that is poised to allow anyone, anywhere to decentralize trade in a manner that does not involve fees beyond those associated with the financial network you choose (whether it’s bytecoin, bitcoin, or other).  Effectively, OpenBazaar and similar developments in the future could eventually strongly compete with or even eventually displace the centralized models such as those utilized by Ebay and Amazon.

At the time of this post, the project is in ‘alpha,’ and so at this time transactions and trade are not yet possible using OpenBazaar.  However, the software development is in high gear and people are welcomed to check out the summary of what’s been done, discuss in the forum and if you like, test it.  In fact, the developers have set up a way for you to take OpenBazaar for a test drive without you having to download anything at all. No downloads, no fancy commands, no spending, nothing.  This test link just enables you to play around with it and get an idea of what it looks and feels like at this stage of its development.  Check it out.


The OpenBazaar Introductory VideoOpenBazaar Intro Slideshow

 

 Zerocash

Zerocash is not yet launched and according to developers’ estimates, likely won’t be until the last couple months of 2014.  For this reason, there’s nothing to see here yet.  But this post would be incomplete without at least a mention of it, for one very simple reason:  Zerocash will be the first decentralized system which will enable total and complete anonymity of anyone using the network ~ with just 1 kilobyte of data involved in the transaction.

Essentially this process of decentralization and full anonymity will gradually provide individuals, associations, and small communities with a tremendous degree of empowerment, that will give them equal or greater footing than centralized federal governments (corporation-states) in today’s world.  This is historically significant, so take note, and keep your eyes on this project.

As described earlier in this post, bytecoin is the first decentralized virtual currency system to provide both anonymity and allow a user with any ordinary laptop of the day (and no special equipment) to both run the program as well as ‘mine’ the currency.  Where bytecoin’s characteristics allow it to hide you amongst a small group of users, the Zerocash project will, when launched and tested, enable you to be hidden as one entity or person in the whole network, which could ultimately involve many millions of people.

Zerocash will make total financial anonymity not only “lightweight,” but the project will be able to be used by other decentralized systems as well, including bitcoin.   You can find out more about Zerocash, and keep an eye on the project prior to its release, right here.

 

Further Reading, More Tools

The Decentralized Exchange (launched March 15, 2014) of Mastercoin.  (The decentralized exchange “enables peer-to-peer exchange of any cryptocurrency or token with any other cryptocurrency or token.”)

Distributed Currency Exchange (in development at time of this post) on OpenBazaar.  (Allows for the decentralised exchange of types of currencies using the flexible Ricardian contract system. Currency exchanges are not limited trades between crypto-currencies, but can also facilitate exchanges with fiat currencies using reversible and non-reversible payment systems.)

How to Use Solar Energy to Power Decentralized Cryptocurrency Mining (note, this is suggested for experimental use with systems that require minimal energy, such as bytecoin, which only utilizes your CPUs):

Bitcointalk on how to develop your own solar rig

Solarminer System

Biolite –  Stove technology, packable, USB friendly (captures waste heat from cooking and turns it into electricity for your USB connection), with this you can cook your food and charge your devices by burning wood and fiat currency.  Side note: How much energy can you get from burning a dollar bill? Find out here.

(Also consider searching for “bitcoin carbon offset” or find your own local or regional carbon offset program)

Privacy Pack, From ResetTheNet

Decentralized Giving for your Community:  ABIS, sx tools

Happy Decentralizing!

7 Comments

  1. Critical Community, Revisited
    Critical Community, Revisited July 1, 2014 at 5:07 am .

    […] similar movements may help with divestment or reinvestment processes that you have begun locally.  Cryptocurrency processes and decentralization of finance as described in this blog provide an alternative vehicle for your community to organize funding to help build necessary […]

  2. […] of finance.  To be able to understand or use different types of currencies, such as bitcoin and bytecoin, is important.  But without means for dis-intermediation – that is, if you have no way to […]

  3. […] of finance.  To be able to understand or use different types of currencies, such as bitcoin and bytecoin, is important.  But without means for dis-intermediation – that is, if you have no way to trade […]

  4. […] find ways to stifle innovation associated with the increase in such technologies, particularly if the implementations for such technologies are impractical to censor (or where most censorship regimes are totally ineffective).  This may […]

  5. […] Thus we have recommended some methods for decentralization of the financial system that involve anonymous and unlinkable methods of transaction.  We also recommend that you examine alternatives to the banks themselves, so as to ensure your […]

  6. […] into modern wallet technology now being developed.  I’ve remarked in my post, “Bytecoin, SX, OpenBazaar, Zerocash: Decentralizing Finance,” on the incredibly thoughtful development that Bytecoin (BCN) developers have begun to […]

  7. […] directly into modern wallet technology now being developed.  I’ve remarked in my post, “Bytecoin, SX, OpenBazaar, Zerocash: Decentralizing Finance,” on the incredibly thoughtful development that Bytecoin (BCN) developers have begun to […]

Post Comment

Skip to toolbar
Member of The Internet Defense League