The real price of Bitcoin in Bolivares Fuertes: BitVen.com

I’ve just released a tool for Venezuelans looking to know what the ACTUAL price of Bitcoin is in Bolivares Fuertes, it’s called BitVen.com

Most price tickers out there don’t know about Venezuela’s currency control reality and they post the Bitcoin price using the Government’s official dollar exchange rate, the problem is, that it’s really hard to access US dollars at that rate because of all the government blocks, this has inevitably lead to a huge USD black market.

BitVen tracks the price of Bitcoin using the current black market rate of the USD in Bolivares fuertes.

The app tells you the price of 1 Bitcoin in USD and VEF when opened, but it’s actually an interactive calculator, you can modify the amounts in any of the currencies and the equivalent value on the other two will be reflected as you type. For english speakers it will be a bit awkward seeing “.” as the thousand separator and “,” as the decimal separator, but this is a product with Spanish speakers in mind.

I made it thinking of my vision on what’s going to happen with Bitcoin in latin america, more specifically Venezuela, a country that actually needs bitcoin but doesn’t really know about it.
We’re currently in the initial phase of Bitcoin adoption, where you need to know what it is, what’s happening around it, and then you need tools like this to understand how the price fluctuates, for Venezuelan’s it’s very different as they have to deal with this dual-exchange situation, and sometimes you can see that even though the price rices for USD, the rise is not linear for BsF, as the price of the USD in the Venezuelan black market can be lower at the time.

I’ll be packaging it into an Android and iOS app as soon as I get the chance.

Technologies used
In case you’re wondering how it’s built, this is actually my first NodeJS app. I built a NodeJS service that fetches the Bitcoin price in USD from BitPay, grabs the USD/VEF price from DolarToday.org and spits out JSON. The page is done with plain HTML/Javascript, no third party libraries used for faster loading.

It was quite interesting working with NodeJS, I milked the s**t out of Javascript’s dynamic features to reuse code, by passing functions as parameters, and it was interesting to think the server interaction with callback after callback, NodeJS development is living in callback land.

Why it only took me less than 2 minutes to believe in Bitcoin

Seeing is believing.

I don’t care what Warren Buffet or all the Bitcoin nay sayers think, I care about how real, useful and freeing Bitcoin is today even in its infancy.

Just stare at any random minute of Blockchain transactions in realtime and you will see that Bitcoin is not something that will happen, it’s already moving a LOT of value TODAY.

No identity required, no government permission is required, no regulations are required to use it except the rules of its protocol.

It’s already working and people are moving anywhere from pennies to millions of dollars worth of bitcoins everyday without asking banks or governments for permission, all this wether you believe in it or not.

“it just works.” -Steve Jobs

How many lines of code are there inside Bitcoin-Core client?

According to cloc this is the line count breakdown, 87% of the project is all C/C++ header files and code.

http://cloc.sourceforge.net v 1.60  T=7.23 s (72.2 files/s, 43792.9 lines/s)
-------------------------------------------------------------------------------
Language                     files          blank        comment           code
-------------------------------------------------------------------------------
C++                            244           9985           6246         211500
C/C++ Header                   188           5346           4617          35399
Bourne Shell                    26           2576           2571          20090
make                            12            905           1105           7221
m4                              17            376             98           3697
Python                          18            333            224           1615
HTML                             3             85              0           1136
YAML                             8             21            115            545
C                                1             43             11            336
Objective C++                    2             37             14            153
CSS                              1             10              1             78
IDL                              1              1              0             20
XML                              1              0              0             10
-------------------------------------------------------------------------------
SUM:                           522          19718          15002         281800
-------------------------------------------------------------------------------

Setting up Eclipse as your IDE for Bitcoin C++ development on MacOSX.

If you are a Java developer used to the productivity levels achieved by working with eclipse’s code navigation, code completion and refactoring tools, it’s worth your time staying in eclipse for any sort of C++ development.

Screen Shot 2014-02-09 at 1.03.21 PM

This post refers specifically to getting your eclipse environment to work with a particular C++ Open Source project, The Bitcoin Project.

Before you start setting up eclipse, please make sure you can build Bitcoin from the command line, this way you know that you have everything necessary to build Bitcoin, even if you’re still getting a few errors showing in Eclipse, in the end Eclipse will be using the Makefiles provided by the project whenever we need to compile (and it can do so incrementally when possible saving you a lot of compilation time)

I’m assuming you have installed:
– eclipse
eclipse CDT tools, up to date for the version of eclipse you’re working with (I’m still working with Juno)
– Qt/Eclipse plugin (optionally)
– All the dependencies (autoconf automake berkeley-db4 boost miniupnpc openssl pkg-config protobuf qt gdb) necessary to build Bitcoin which are easily installable via HomeBrew.

1. Let’s import the bitcoin/ project to our workspace.

File > Import > Existing Code as Makefile Project

Screen Shot 2014-02-09 at 12.41.45 PM

 

Look for the bitcoin/ git checkout folder, and make sure you use the GNU Autotools Toolchain

Screen Shot 2014-02-09 at 12.43.05 PM

 

Click Finish.

2. Fixing the C++ compiler Path and Symbols.

Right click on the project containing folder in the Project Explorer > Properties.
Go to C/C++ General > Paths and Symbols > Languages: GNU C++ >  “Includes” Tab and make sure it looks something like the screenshot below (I got those paths by looking at  the  ones used by the Makefiles in the Bitcoin. Hit Apply , OK, then wait for the reindexing, you might still have a few weird errors because of how the compiler checking settings are.

Screen Shot 2014-02-09 at 12.55.38 PM

3. Remove a few more issues like “Error: Invalid arguments candidates are: void resize(?, int)."

We open again the project Properties, this time we go to C/C++ General > Preproessor Include Paths, Macros, etc.
Click on the Providers tab and make sure “CDT GCC Built-in Compiler Settings [Shared]” is checked. Hit Apply, OK, wait for reindexing.
If there are still errors, you might want to just delete them and refresh the project (F5 on the project folder in the Project explorer), all errors should be gone by now.

Screen Shot 2014-02-09 at 1.01.25 PM

Now start working just as fast as you’re used to with Java on Eclipse.

 

Code completion…

Screen Shot 2014-02-09 at 1.09.39 PM

 

Project wide renaming refactors in seconds…

Screen Shot 2014-02-09 at 1.10.07 PM

 

 

Find references of variables, methods, classes (Cmd+Shift+G)

Screen Shot 2014-02-09 at 1.23.37 PM

 

Find all the implementations of an interface (Cmd+T)

Screen Shot 2014-02-09 at 3.34.39 PM

and best of all

Interactive debugging with gdb*

Screen Shot 2014-02-11 at 1.21.07 PM

and all the tools you know and love from Eclipse.

*Setting up GDB debugging

To do step by step debugging you can use gdb, if you don’t have it installed just go to your Terminal and type brew install gdb.

On your command line, execute your Makefile to create an executable, once it appears on your Project Explorer you can Right click on it Debug As > Debug Configuration…

Screen Shot 2014-02-11 at 1.31.43 PM

then make sure you have set gdb as the executable debugger in the “Debugger” configuration tab, then just set your breakpoints and debug away!

Screen Shot 2014-02-11 at 1.32.00 PM

Not so fast… 🙁

As of Mac OSX 10.9, Apple decided that you cannot use gdb unless the gdb executable is signed with a certificate, they want you to use their super duper lldb debugger, but it’s still not compatible with Eclipse, you know, so you use their XCode IDE instead of what you want to use…

Anyways, signing the gdb at /usr/local/bin/gdb is not that hard.

To sign it you can create a certificate, or use an existing developer certificate. In my case, I already had a Mac Developer certificate so it was a very simple process, just issuing a single command in the Terminal and I finally got rid of the "Unable to find Mach task port for process-id 93213: (os/kern) failure (0x5).\n (please check gdb is codesigned - see taskgated(8))" error.

codesign -s “Name of my certificate here” /usr/local/bin/gdb

Then I tried debugging, I got a password dialog to verify I was the owner of the certificate, and then gdb could take over and then I could do my step by step debugging, with the ocassional crash.

Happy Hacking.

How to actually build bitcoin on Mac OSX 10.9.1

First of all, if you have Macports, do yourself a favor and get rid of it.

Then make sure you have Homebrew installed and all the packages installed by it up to date.

1. Let’s install all the dependencies for Bitcoin hacking.

brew install autoconf automake berkeley-db4 boost miniupnpc openssl pkg-config protobuf qt libtool

2. Make sure you have the right OpenSSL version installed. Type the following on your terminal:

openssl version

you should see “OpenSSL 1.0.1f 6 Jan 2014.”

if you see an older version, do

brew update
brew upgrade

OpenSSL should be upgraded, you may or may not have to issue a “brew link openssl” or even a “brew link --overwrite openssl” if it’s giving you trouble.

3. Now, let’s configure, and make. I strongly suggest you add the boost library path when configuring, otherwise you may get nasty “Undefined symbols for architecture x86_64” compilation errors. During the time I wrote this, homebrew had installed boost 1.55 in my system, and the boost lib path was /usr/local/Cellar/boost/1.55.0/lib so I invoked the following:

./configure --with-boost-libdir=/usr/local/Cellar/boost/1.55.0/lib

After that I just issued a

make

And I was done.

If you want to hack the bitcoin-qt client like me, head to src/qt/, there should be a bitcoin-qt executable there now.

Enjoy

building cgminer from source on OSX

so you cloned the cgminer repo from github to build on your OSX machine and you get this bullshit error

$ ./autogen.sh
readlink: illegal option -- f
usage: readlink [-n] [file ...]
usage: dirname path
touch: /ltmain.sh: Permission denied
Use of chdir('') or chdir(undef) as chdir() is deprecated at /usr/local/bin/autoreconf line 670.
Configuring...
./autogen.sh: line 10: /configure: No such file or directory

readlink works differently in OSX and the current version of the autogen.sh script seems like it wasn’t tested on OSX (wonder why didn’t they use a simple bs_dir=`pwd`, the answer is probably canonical paths and what not).

To keep moving along, open the autogen.sh script and just change the value of the bs_dir variable to the full real path of where you have cloned the cgminer source code.

then execute your autogen script, make sure to enable compilation flags for your ASIC hardware, in my case I remember seeing ‘icarus’ on a binary build of cgminer I tried before, so I did

./autogen.sh --enable-icarus

you might want to enable all of them if you’re not sure what hardware you have or you will have in the future as you may not like the joys of building software (check out the the README for all the –enable-xxx options available)

If you’re getting errors on your configuration script due to missing dependencies, I strongly recommend you use Homebrew to install these packages (if you are using Macports or Fink, I strongly suggest you completely remove that crap from your computer and go 100% with brew, it works really well if you’re building a lot of code on a regular basis):

brew install autoconf automake autoreconf libtool openssl curses curl

brew, at the point of this writing didn’t have libcurl, so that one you will have to download, ./configure, make and sudo make install yourself from here http://curl.haxx.se/download.html (I used version 7.34 when I did it)

after that the autogen script should work, and then you should be just one ‘make’ away from your goal.

Sending money: Banks vs BitCoin

So I’m in desperate need to send money to my family in Venezuela this week, and sadly they’ve still not adopted (or even heard off, much less understood bitcoin yet) and I’ve been forced to wire some money to an account in Perú to a friend of the family. I cannot send the money directly to Venezuela since my country is now ruled by a communist dictator which has a strong control over currency exchange, pretty much making Venezuela’s Bolivar useless.

So I start my Wire transfer on my bank’s website, and I’m asked to do the following things:

You need to create a “wire recipient” if this is the first time sending money to that person/institution. This means, re-validating who I am via SMS Code, then entering the recipient’s bank address in Perú (something I had to google), the recipient’s address (something I had to massage to fit the bank’s form), a bank routing number (SWIFT or ABA), a description of the recipient, a nickname for the recipient, and ultimately the freaking bank account number.

About 10 minutes later I finally start the Wire Scheduling process, after I’m done with yet another long form and several verification steps, the bank tells me that I’ll have to pay an additional $40 fee…

This number seems to come out right out of Gandalf’s anus, some banks charge $12, some charge $19, but you know bank’s are there to steal from us all.

The next day I get a phone call from someone who claims to be from the bank, I ignore these calls just in case it’s a scammer trying to get my bank account information. Then at night I try to log in to the bank’s website, sometime around 11pm, only to find out that I need to call the bank’s 800 number because my account has been locked due to irregular activity, F my life, here we go! (and I’m paying $40 for this?)

I call the bank, a process I dread as I hate phone calls, people and even much more the call center world with its cheesy waiting music and advertising. I luckily wait just about a minute with some cheesy music in the background as expected (spending the minutes from my wireless phone plan) and then a guy has to ask me about 5 different questions to verify that I’m not a scammer, turns out they even know what cars I’ve bought in the past, information they shouldn’t know in the first place since I’ve never given it to them… (can I sue them for privacy breach?), and then he proceeds to ask me the relationship between me and the person I tried to send the money to…

What the *bleep* do you need to know ?! and If I were doing some nasty things like weapons dealings or some kind of money laundering for drug dealing, or sending money to my mistress, do you think I’d tell really you? Stupid corporate rules and regulations are a self inflicted falacy.

After being analy probed as If I were some kind of criminal by my banking institution, the one charging me USD $40 to do its job through a process that should be immediat, the guy tells me that “the wire transfer HAD BEEN CANCELLED” but he’s going to reprocess it for me, and that it should take TWO DAYS to get there “because it’s an international transfer”

At this point I want to raise hell and have the transfer fee refunded, for forty bucks the money should’ve travelled back in time and gotten there the day before!

Just so you know, all this stupidity for a mere $2,000, lord knows what would’ve happened I had tried to send over $500k over there, maybe the FBI would’ve raided my house or something.

now… 🙂

How would this process be with BitCoin?

I’d open my BitCoin wallet.
I’d paste the wallet address of my friend, it would look something like this: “1FXiLXuq7Pr5FgHbwcciyvw7VJ4b3nGZPA”
I’d enter the corresponding amount in Bitcoins
I’d optionally enter a comission fee for the miners (miners are other people who run computers to find bitcoins and process transfers and collect the optional fees) to speed up the transfer, something like BTC 0.0002 (the equivalent of about $0.25) would suffice to make the transfer be processed faster by the peer to peer network, the money transfer would be confirmed in about 20 minutes. (If I didn’t pay a fee, maybe it’d take a couple of days people say, I’ve yet to try fee less transfers)
Send.
Simply put, Fuck Banks.

If you have a bit of vision, and if you remember how the internet has disrupted industry after industry it’s a no brainer to see that the banking industry will be firing a hell of a lot of unneeded people in the future. I’m not saying banks will die, but a lot of people won’t be necessary, a trend seen everywhere technological disruption comes to solve problems, and boy does banking have a lot of inconveniences.

As Bitcoin becomes more adopted, it will make absolutely no sense to have most of your money in the bank, you will be able to trade with people worldwide without dealing with exchange rates, or explaining yourself to nosy instituions, your money will be safe without safes (to those in the bank security industry, you better start thinking how to make BitCoin safer for retail and eCommerce), it will be accesible 24/7, you’re able to use it from a computer, smartphone. That’s a lot of people that don’t need to be part of the equation of money storage and money transfer.
and so you know, here’s some people transfering really big and small amounts of money via BitTorrent, no questions asked, fees optional.

it’s not weird to see million dollar transactions every day, in fact, just yesterday the equivalent of about $246.6 million dollars were transacted on the BitCoin network, and about $30 million dollars were traded on the BitCoin markets, and we’re talking here about the early adopter crowd alone.

We geeks tend to live the future about 2 to 5 years in advance, you might want to pay a little more attention to what we’re doing with money.

How to import a backed up wallet in Bitcoin-Qt

The Bitcoin-Qt client has an export feature, but not an import feature, importing a wallet is a bit of a manual process and it can be quite scary for the non-computer saavy since you need to do this kind of stuff because you got a new computer or your old one broke.

First, close the Bitcoin-Qt client.

Then you have to localize your Bitcoin folder. For Windows, it should be here:

%APPDATA%\Bitcoin

In that folder, there should be a wallet.dat file.

If you have currently no bitcoins in your wallet, you can just delete that file and replace it with your backup.
If you have some bitcoins in this wallet as well, backup that wallet file as well, or send all the coins to an address from your backed up wallet.

When you placed the other wallet.dat file in place, you should run Bitcoin-Qt with the -rescan option. Here’s how to do that in Windows:

Go to C:\Program Files (x86)\Bitcoin using Windows Explorer.

In that folder, hold shift and right-click and select “Open command window here”
1

In the command prompt, type bitcoin-qt.exe -rescan and hit enter
2

Now Bitcoin-Qt should start and rescan the blockchain to calculate the balances of the addresses in your wallet.dat file.

BitCoin essentials and must have bookmarks

BitCoin is probably the most exciting thing to happen to money since the history of… money, as off the shelf computer harware, software, cryptographic tools, and p2p internet technology have come together to create a currency that:

– Doesn’t need a bank to be secure or to validate transactions, it’s decentralized.

– Can be transfered to anyone in the planet without central intermediaries or government permissions for very low fees (about $0.25 for a $4 million dollar transaction low enough for you?), and in any amount (no minimums, hello microtransactions, no holdbacks or questions asked by a branch manager if you send too much) creating the potential of bringing every country in the world to participate in global trade without the need for bank accounts or credit cards.

– Requires no human identity, it’s basically anonymous.

– Runs on an open source protocol and open source software.

There is a controlled and finite amount of Bitcoins available in the market, unlike Fiat currencies, there won’t be central banks printing money out of thin air and the value of the currency will rise as a BitCoin based economy includes more people and more capital (deflationary currency).

This post is essentially to save you the time it took me to find what I consider the most interesting and useful websites today around the currency.

If you want to trade BitCoins for local currencies you will need an exchange, an there’s very different kinds of them, on some they hold your money (both in BitCoin and a hard currency) so you can trade it like you’d trade a commodity on Wall Street, others allow you to transact directly with people willing to buy/sell Bitcoin through bank transfers, money orders, or face to face meetings.

For BitCoin to work without a centralized authority it depends on a vast network of computers volunteers put out to verify each transaction. In this process these volunteers collect fees and mine new BitCoins. These processes are very very computational intensive, but the rewards are enough to process every transaction, and they are commonly known as “mining”. At this point in time, it’s very hard to mine bitcoin on your own so you will be better off joining a pool of miners and sharing the rewards, also you will have to buy specific hardware to mine fast, as mining with CPUs or GPUs is pointless. The difficulty of mining increases linearly as less coins are left to be mined.

Here are my BitCoin Bookmarks

Exchanges
MtGox.com: Japan based company, will have to wire money to bank account in Japan, will be hard to get hard currency out, however it has the highest volume of transaction and the biggest pay per BitCoin, probably due to the difficulty of getting the money out.

BitStamp.net: UK based company,
prices are lower than MtGox, if you set up both accounts you can make good money on the price differences if you time things right.

CoinBase.com: A San Francisco based company, it makes it easy to purchase Bitcoin if you have an US Bank account as they have implemented bank integration in their platform, prices here are considerably lower than MtGox, however it may take 7 days for your purchase to take effect which puts you at risk in case of a probable drop in price during that time.

mcxNOW.com: an exchange that lets you trade not just bitcoin but other cryptocurrencies, you get interest on your deposit. They claim to have written the whole thing entirely in C++ (according to them for speed an security, I bet they didn’t know well written Java can be faster), they have no Google Analytics tracking, and they’ve implemented their own encrypted database. Trade fees of 0.25%, not so friendly user interface.

LocalBitCoins.com Helsinki, Finland based – Trade in any city people to people, probably the simplest way to get cheap coins although it might require getting your ass outside the house to either meet somebody at a Starbucks, Bank, or to send an actual Money Order via Western Union (yes at the office, some buyers are like that, they don’t do Online Money Orders). LocalBitCoins.com will hold the Bitcoins in escrow when you begin a transaction, once the seller receives the funds (be it via cash deposit, cash transaction in person, money order) then LocalBitCoins will release the funds into the buyer’s target wallet.

(Update Dec 16th 2013)
CoinTap.co, buy Bitcoin on your local stores using pre-paid cards you can redeem online. According to BitCoin Owl the Canadian company CoinTap announced at the Inside Bitcoin conference in Vegas (December 2013) that they’ll be bringing their pre-paid cards to Walmarts and 7-Elevens, as of now if you live in Alberta the cards are available at some retail locations and they should be coming to the US in a few months.

Paypal would make Bitcoin a lot easier, but they currently seem to be at war against the currency, perhaps because of regulators or banking interests being part of their board, who knows, the thing is that you can’t do anything related to BitCoin with your paypal account or they will freeze your account. They’re missing out on so much, Paypal could be the number one BitCoin exchange and rake in millions of dollars a day on fees.

ICBit, trade Bitcoin futures.

BTOracle.com, Trade BitCoin options.

Mining Pools
I’ve tried a few mining pools, but I’ll recommend you my favorite btcguild.com, the others have unclear reporting, seem outdated and shady. If you know of a great mining pool please recommend it.

You can configure your mining software to do multi pool mining, so you can join several of them.

Analytics & Trading Tools
ClarkMoody BitCoin Live Chart & Order Book, the most responsive and simple tool I’ve found so far to check pricing and the order book.

BlockChain.info, this is a great tool to find out information about transactions, wallets and activity, to see how BitCoin transactions are being processed in real time something which is really eye opening when you see people sending tens of thousands of dollars over BitCoin, it will make you a believer. There’s also a section with what I would call “macroeconomics” information about the BitCoin economy like the amount of BitCoin available, Market Cap, Number of Transactions, Hash Rate, difficulty, Mining Operating Margin and many other indicators.

RTBTC: The Real Time Bitcoin Trading Platform, I’ve not tried this yet, but if you’re serious about trading Bitcoin and you have accounts in Mt.Gox and Bitstamp you can trade on both using this tool for about $10 a month on average, payments in Bitcoin.

Mining Software Projects
CGMiner source code on github, very active project lead by Con Kolivas, the best mining tool I found so far.

This is how to build a cgminer binary for windows, you want to make sure you build your own so you’re sure nobody is stealing bitcoins from you, you never know what people may have done to the code before building.

In case you can’t/won’t compile, here’s a CGMiner Binary for MacOSX

Mining Hardware
You can learn how to mine with an ASIC (Application Specific Integrated Cicuit) hardware with a “cheap” USB Block Erupter. When you mine, you’re basically checking cryptographic hashes for every transaction in the chain of a BitCoin as it moves from wallet to wallet, these little Erupters are able to verify +330 Million hashes per second, or “330 MH/s” (MegaHash per second), if you do the math you will see that the cost of 1 Gigahash per second is quite high with these devices, however, they’re accesible.

If you want to do some serious mining you will need a lot more power and soon you will be needing hardware that can get you close to the Terahash, as the difficulty is increasing and there’s more and more minings competing against you.

If you want faster hardware take a look at what ButterFly Labs has to offer, and divide the price by Gigahash, you will see that the cost per Gigahash is way lower.

Casinos

If you’re in the US these sites might not be available to you, but basically the idea is your bet some BitCoin, the site “rolls dice” and you either win or lose. I found out about this looking at the transactions feed on BlockChain.info.

I’ve not tried any of these, but I’ve seen transactions going back and forth

Satoshi Dice
BetCoin Dice
bitZino
BC Casino