Friday, May 23, 2014

On "the death of Ripple"

On "the death of Ripple"

Announcements


Recently there has been a lot of buzz surrounding Ripple. On 2014-05-22 Jed, one of the creators of the Ripple system, announced he will be selling the XRPs (ripples) he received for developing the system. This wouldn't be newsworthy, if it wasn't for the sheer amount of currency being liquidated. At the inception of the system, Jed owned 9 billion XRPs, or 9% of the total available supply. Some of the currency was allegedly given away to various charities, but one can expect a good number of them to still be owned by Jed. The announcement has caused XRPs to drop in price dramatically, and Jed is still to sell his share (which he is planning to do two weeks from the announcement).

Another announcement was made today, on 2014-05-23 by Jesse from Kraken. He is one of the first investors to Ripple Labs, the company that took over the development of Ripple from Jed and other creators. Jesse resigned from the Board of Ripple Labs, stating that "I’m no longer confident in the management nor the company’s ability to recover from the founders’ perplexing allocation to themselves of 20% of the XRP".

Quick note - what are XRPs?


XRPs are a currency used inside of the Ripple protocol to pay for fees. They are mainly used as an anti-DoS measure. XRPs can be exchanged for any other currency inside of the Ripple system, and can also be sent to anyone in the system.

What this means for Ripple


A lot of people in the Bitcoin space appear to confuse two things - Ripple and ripples / XRPs. This situation is very similar to how people outside of the Bitcoin and Crypto space confuse Bitcoin with bitcoins. The former in both cases is the technology and the protocol running the system, while the latter is the currency and unit of account inside of that system. Just like Bitcoin is not just bitcoins, so Ripple is not just ripples. When the price of a single bitcoin has fallen from $30 in June 2011 by 68%, from $15 in August 2012 by 51%, from $266 in April 2013 by 61% and so on, people that thought Bitcoin==bitcoins declared Bitcoin to be dead. The protocol was unaffected, Bitcoin survived.

The story is similar right now with Ripple and XRPs. XRPs are falling in value, while the Ripple protocol is still strong. Just like the price of a bitcoin is the least interesting part of Bitcoin, so is the price of XRP when talking about Ripple.

At the same time, this incident creates a lot more bad press for Ripple and Ripple Labs. People holding XRPs and expecting a growth of value will be disappointed and may be bitter towards the system. A lot more people will once again start to call Ripple a scam. This could hinder adoption of the system further.

At the same time, once the XRPs are sold by Jed the market will become more decentralized. Someone estimated that in November 2013 there were about 7 billion XRPs in circulation. With Jed's stash, that number would increase that number to 16% of the total supply.

Quick note - do you need XRPs?


Since XRPs are a DoS prevention in the Ripple system, everyone needs some XRPs to use Ripple. However, the amount needed is very small. About 50 XRPs, roughly worth 15 cents at the current exchange rate, should be enough for almost everyone for a lifetime of use (assuming transaction fees remain the same). There are a few places that give one XRPs for free when they sign up for their Gateway, meaning that once doesn't need to buy any ripples to use the Ripple system. 

XRPs are an "app coin", like WoW gold or EVE Online's ISK, and don't make for a good currency otherwise.

What about Ripple Labs?


While Jed's declaration shook the market up, it's Jesse's insight that might be more worrying. XRP price be damned, but the Ripple system is mainly in the hands of Ripple Labs. I am wondering how the current situation is affecting the company and what will happen to them in the future.

To sum all up

XRP price is going down, but XRP != Ripple. Ripple is like Bitcoin in June 2011 - price is falling down, but the protocol and software is still strong. Unless Ripple Labs ditches the development of the software, Ripple is not dead. Don't put more money in XRP than you can afford to lose, it's an app coin.

Monday, April 28, 2014

Smart contracts and the demise of copycoins

Smart contracts and the demise of copycoins

Today I would like to talk about a few ways smart contracts in Crypto 2.0 systems can lead to the demise of copycoins. Lets start with some definitions:


  • Smart contract in this conversation denotes a program that exists in a cryptocurrency that can autonomously send and receive currency units according to given predefined rules.
  • A Crypto 2.0 system is a cryptocurrency that can support transactions in any user-defined currency. For example, Ripple, Ethereum and Mastercoin are all Crypto 2.0 systems.
  • A copycoin is a cryptocurrency that is identical to a number of other currencies (especially Bitcoin) from a technical standpoint. For example, Litecoin has a different block maturation speed and hashing algorithm, but is otherwise identical in features to Bitcoin. Just like Dogecoin, Auroracoin, Peercoin and Feathercoin, but unlike Namecoin, Ripple, Ethereum and Mastercoin which all do something innovative.
  • Ledger - an equivalent to a block for a Crypto 2.0 systems. I use this term to distinguish it from "blocks" that will be used to denote something inside of a Crypto 2.0 system.
Please note that technical aspects of a coin is not everything that makes a currency. The community is just as important. Just because a coin is a copycoin, doesn't mean it's not valuable - just look at Dogecoin.

Technical requirements

To create a copycoin, one usually takes an existing code base from Bitcoin/Litecoin/whatever and changes a few settings:
  • Coin name, address net byte (to determine if addresses start with 1, L, D or whatever)
  • Block maturation time
  • Number of coins per block
  • Coin distribution model (whether the amount of coins per block drops in the future and how)
  • Whether any coins are premined
  • Hashing algorithm (SHA, Scrypt, whatever)
  • What "Proof Of" the coin uses for hashing (proof of work, proof of stake, etc.)
Tweaks to those variables alone give us about 99% of available coins out there. The thing is, all of those variables can be very easily encapsulated into a smart contract and ran on a Crypto 2.0 system. This means that most of the copycoins can in the future be ran as a part of a bigger currency system. Now that we know what we need, lets look how a smart contract for a new copycoin would look.

Crypto 2.0 benefits

When discussing something like this, we first need to ask ourselves "why?". Why would a copycoin benefit from running on a Crypto 2.0 system as opposed to running by itself? Here are a few reasons:
  • It may be more economical to run 1 Crypto 2.0 system with 100 coins on it, rather than 100 coins by themselves. If a coin has low transaction traffic, it will have a lot of overhead. One well utilized system can be run better at a scale
  • No 51% attacks - if the coin is run inside a system protected by a vast amount of computing power (Bitcoin), or is generally resistant to 51% attacks (Ripple), any subcoin will be immune to such attacks. This removes the fear of the dreaded multipools for many coins
  • Possibly faster transaction times - some networks are insanely fast in comparison to even the fastest copycoins. Dogecoin runs at 1 block per minute. Geistgeld used to do 1 block per 15 seconds, Ripple creates a ledger every 5 seconds (full confirmation, not just 1 confirmation) without running into a problem of block race. This means that the transaction speed on the network can be increased if a fast Crypto 2.0 system is used
  • Built-in exchange - A few Crypto 2.0 systems have a built-in distributed exchange, like Mastercoin or Ripple. This means a new coin on the system can be instantly traded there on the spot

Designing the smart contract

Now that we figured out why we want to do something, lets look at how this can be achieved.

To implement a copycoin with the conditions given above in a Crypto 2.0 system, we would create a smart contract that does the following:

  • Creates a new currency with a given name and currency symbol
  • Each time a valid "block" for the currency is created, it sends the block creator a specified amount of currency units
  • The amount sent is predefined by the distribution model
  • It charges fees for any transaction using a given currency and distributes it to the "miners"
Sounds fairly straightforward. Combining what I know about Ethereum (what their smart contracts can do) with what I know about Ripple (how the system handles custom currencies), implementing this would be easy. The most challenging bit would be validating "blocks" for a given currency. Lets look at that more closely...

"Blocks"

A "block" for a copycoin implemented in a Crypto 2.0 system would probably be more akin to a block header. Rather than containing all past transactions, it would be just a digest of what happened since a last block. Here is what would be needed in a block:
  • Reference to the current ledger of the Crypto 2.0 system - this would force new blocks to use new Crypto 2.0 ledger hashes to ensure only a new block can be submitted. In order for a block to be valid, the ledger used would need to be newer than the ledger used for the previous block
  • Specify the recipient of the block reward - simply stating who should receive the money
  • Reference the currency one is mining for - we don't want the same block to be used for more than 1 currency, unless we would be doing some merged mining
  • Pay the cost of running the smart contract - those operations are usually not free on the Crypto 2.0 systems
That's basically all that's needed for creating a basic block. The rest varies according to the Proof Of we'd be using.

Proof of Work

Fairly simple - each block created would have a nonce and the hash of the transaction needs to be smaller than a given difficulty. The difficulty would be adjusted by the smart contract based on how often the blocks are submitted.

The person submitting the block can also earn all the fees spent since the last block.

Proof of Stake

There are two ways of doing Proof of Stake. The simplest one is to ignore blocks entirely. This means that each time the currency is used and a fee is paid, the supply of the coin will diminish. Since getting paid based on how much coins you have or having the supply of coins diminish is really interchangeable (you end up having the same percentage of coins in the end), you don't need to create any blocks really.

Alternative Proof of Stake would pay all the people that currently hold the coin their fair stake. Whoever would pay for the block would initialize this distribution.

Proof of Burn

Whoever creates a new block has to pay a fee to create new coins. The fee would be converted to the coins based on a predefined ratio or algorithm. 

Combining proofs

There is no reason why those proofs can't be combined. For example, one could initialize a Proof of Work payout that also has a Proof of Burn to compensate the miner for the fees they paid to initialize the block reward payout or what have you.

Conclusions

It is possible that once smart contracts are well integrated into Crypto 2.0 systems like Ethereum, we will see a demise of the copycoins created in the old way.

I wonder whether this prediction will come true, or will I be proven wrong by too many people distrusting such solutions...

Tuesday, April 22, 2014

My experience with the various Bitcoin ATMs (Robocoin, Lamassu, Bitcoin Briefcase)

My experience with the various Bitcoin ATMs (Robocoin, Lamassu, Bitcoin Briefcase)

I wrote this piece on 2013 10 30 on /r/Bitcoin. I figure it is a decent writeup, so might as well post it here.




So this month I got the chance to interact with various Bitcoin ATMs - I played a bit with Robocoin today, and tested out Lamassu and the Bitcoin Briefcase during Money2020 event. So here are my thoughts on them as well as some other information people are interested in.

So first of all, Robocoin. It's the only one of those that both sells and purchases Bitcoin. The process is a bit cumbersome to start (having to scan your hand a few times to create an account and wait a few minutes for a mechanical turk to verify that it's in fact the right hand and so forth), but after that it's pretty straightforward.

Some people were concerned about the palm scanner (both online and at the location). The developers of the ATM explained that they need to do that since they need to limit one person from buying more than $3k worth per day so they don't fall under AML regulations. They had a choice of scanning your ID, or fingerprints or the palm and they chose the last one since there isn't a database for palms that would link that scan to your identity. Given the restrictions they had to work with, I don't think that was a bad choice. At the same time I know a lot of people are very security conscious and would rather avoid that altogether - both sides of the argument have their fair points.

I talked a bit with the developers of Robocoin as well as listened in to one of my friends ask them some interesting questions about security and other things. All in all I must say they came off as very competent people. They know their technical things, as well as various regulatory issues (for example apparently if someone prints a paper wallet on the machine, loads it up and then sells / gives it to someone else that's creating a derivative market and technically you shouldn't be doing that).

As for the machine itself, I would say it's a little crude at the moment. Since it has so many widgets, scanners and so forth it's easy to get lost in the process of using it. I definitely would like it refined over a few iterations. Other than that, it does everything you'd expect it to do - you can load up your phone wallet through QR scanner, create a paper wallet on the spot if you don't have a wallet yet, and you can buy and sell bitcoins as needed.

Apparently the ATM does Bitstamp rate +3% (I might be wrong about the exact exchange, but I know it's not the Canadian VirtEx, since they were quite unresponsive in communicating with the developers). While the rate might not be that great in comparison to some other ways of getting BTC, but in Canada it's not entirely unreasonable with VirtEx charging pretty high fees by itself.

So overall, Robocoin is an interesting ATM with some good developers behind it, but it needs some more work put in to streamline the experience.

Now about the other two ATMs.

Lamassu is a bit of opposite of Robocoin. It has a small and elegant form factor, has just a camera QR scanner, a deposit slot and a display monitor. You can only buy bitcoins with it. Since it has limited options on what it does, the process is quite straightforward - put money in, scan address and send bitcoins. I don't know how they will be handling the AML regulations - it will be an interesting thing to see what their approach will be once they start releasing their ATM into the wild.

Bitcoin Briefcase has neither the elegant form of a Lamassu nor the versatility of Robocoin, but it's a fun little hack to carry around to get people interested in Bitcoin. It only takes change and pays out into a paper wallet it prints. It has a small display bar, a slot to put coins in, a wallet printer and a button to accept your purchase. It's not really a tool for frequent Bitcoin purchases, but definitely an interesting prop to bring along with to introduce people to Bitcoin easily.


So overall, it's really interesting to see what is being developed in this space. Robocoin is a big machine that might not fit everywhere, so it needs it's own dedicated space in some Bitcoin-accepting business. Lamassu is elegant and small enough to be placed on some extra bit of counter space available. The Briefcase is a neat hack that you can take wherever you go.

Friday, April 18, 2014

MintChip, what it could've been...

MintChip, what it could've been...

MintChip was a project started by the Canadian Mint to create a government backed cryptocurrency. It was announced in 2012 with a MintChip Challange to develop various project concepts that would use the MintChip. Unfortunately, the project was stopped recently. I followed and analyzed the project early on, and I would like to share with you my ideas on what the MintChip could've done to the Bitcoin space and the Canadian consumers in general.


MintChip at a glance

First of all, lets get everyone up to speed about what the MintChip is or could've been. A number of hints have been released about the project, although a full technical specification was never released. I did approach a representative of the Canadian Mint during Money 2020 conference in 2013 about the algorithms behind the MintChip and the only answer I got was that it was above their pay grade. Regardless, here are some properties of the MintChip we can speculate would be part of the final implementation:
  • MintChip would operate in CAD and the currency itself would be backed in 100% by the Canadian Mint in form of Canadian Dollar currency. No fractional reserve.
  • Unlike Bitcoin, the currency would need to be able to be generated as needed. There would be no mining or anything like that. This suggests the system might be closer to Ripple or Open Transactions.
  • The system would facilitate payments of less than $1. This would probably mean payments would be cheap and there would be possibility of micropayments, unlike with credit cards.
  • Payments are instant and irrevocable
  • There is no restriction to who can use MintChip, it would probably be an anonymous system
  • MintChip would probably take a form of a proprietary hardware.
  • Transactions in MintChip could hapen between two people without either of them being connected to any network. This would probably mean the transaction data is stored in the hardware and the hardware would be forcing those rules. Without proprietary hardware and software this would probably be impossible.
The most important takeaways from this would be that MintChip would be operated by Canadian Mint, would be fully backed by CAD and that would be the currency used in the system. MintChip would be most likely as anonymous as Bitcoin and would allow anyone to make person-to-person payments at minimal cost. Proprietary hardware and lack of need for Internet connection are a take it or leave it bundle. If done away with, MintChip could be implemented in systems like Ripple, Mastercoin or Ethereum quite easily.

Now lets talk about what implications MintChip could've had if the project was ever fully realized...

Digital currency for everyone

Probably the biggest implication of MintChip would be that suddenly people could use digital currencies to replace a big chunk of their banking needs. This would have a big impact on a lot of Bitcoin businesses that are unbankable just due to the sole fact that they are dealing with Bitcoin. Bitcoin Exchanges would be using MintChip as a way of depositing and withdrawing money, people selling Bitcoins face-to-face could do so without the hassle of handling cash.

Introduction of MintChip would greatly lower the barrier to entry into Bitcoin. You would probably be able to go to any Canada Post location or to a bank and deposit money into MintChip. Canada Post would probably ask you no questions - they would probably handle your deposit just as gladly as they would sell you a silver coin from the Mint. The banks couldn't question why you would want to deposit money to MintChip, since they wouldn't know what you would be using it for later. Right now if you send money frequently to a Bitcoin Exchange, they might start questioning it and trying to stop it. I doubt they would be able to stop you depositing money to MintChip any more than they would stop you from withdrawing cash - both would be legal tender in Canada.

Adoption by businesses

Since the CAD on MintChip could easily be converted to cash, it would probably be slowly adopted by more and more businesses. You might be able to use it to pay your rent, buy groceries, pay bills, shop online, etc. A lot of businesses would love this solution - low fees, no chargebacks, it would be like having a credit card terminal only with less hassle, costs and chargebacks.

Probably a number of Bitcoin adopters would push for anyone they pay money to to adopt MintChip as a means of payment. This would allow them to bypass the banks entirely and be able to handle more and more of their business only in Bitcoin and MintChip. The Bitcoin adopters would probably love this idea since it would mean they don't have to worry about their banks shutting their accounts down if they exchange their BTC for CAD on a regular basis.

Decline of credit cards; be your own bank

There are people that use credit cards to purchase things they can't afford at the time. MintChip would not be for them. However, there are people that use credit cards just as a means of settling payments and they don't care about the credit. If MintChip was more widely adopted, they could move some or all of their purchases from credit cards onto MintChip.

This would work similarly if banks weren't making the use of debit cards something abnormal. Coming from Europe, debit cards are the norm. In Canada, credit cards are the norm and if you want to use a debit card you are charged some crazy fees for no reason...

Similarly, if people would be using their MintChips more often they would be more inclined to hold some of their savings on it. Just like with Bitcoin, with MintChip you could be your own bank. Nobody could freeze your account, take your money away, and you could transact in it as you would see fit.

Conclusion

It is a shame the MintChip project was cancelled. A government-backed cryptocurrency would break the iron hold banks have on the monopoly of digital money and allow Bitcoin users to transact the way they see fit without the fear of having their bank accounts shut down.

Wednesday, April 16, 2014

A few criticisms of Ethereum

A few criticisms of Ethereum

Ethereum is probably one of the most hyped projects in the cryptocurrency space as of late. It certainly gained more exposure from the Toronto Bitcoin Expo that took place last weekend and we can safely say whether it booms, busts or fizzles, everyone will know about it.

I recently took more time to do some more research on the project after my piece on Crypto 2.0 Systems and would like to give you some of my impressions of what I think is and might be an issue in regards to the project. Please keep in mind that I might be wrong in some areas, by no means do I claim to know everything about the project. Also please note that the project is still in development so those insights might become invalid with time.

Now, without further ado...

Technical aspects


Namecoin, it is not

For awhile now Ethereum was advertising itself as being able to replace Namecoin. Even in the whitepaper there is a section on that, not to mention t-shirts and what have you. Well, looking at the matter a bit deeper it doesn't look like Namecoin will become obsolete just yet...

What is the purpose of Namecoin? To create a decentralized DNS and allow anyone to register their domains on it. The system has a defined and unique state - either a domain is registered, or it is not, there is no ambiguity.

In Ethereum a DNS would be implementing some simple key-value storage. For example, assigning "127.0.0.1" to "foo.com". However, where is the data stored? Well, in Ethereum each account and each contract have their own data storage. There is no centralized data storage, which means custom data can only be stored in this way. This in turn means that there will never be one unique DNS in Ethereum, just a set of DNSs each different for each contract that creates them. Depending on which one you will read from, you may get different results for the same domain. If there will be some canonic DNS contract that everyone will agree to use, the problem is more negligible, but the fact still stands that until that happens there will be little use for such domains.

Create a currency, it might not be that simple...

Many Crypto 2.0 systems are built to deal with any number of currencies. Ethereum lets you do that with their scripting language. You can create a contract to issue and transfer currency easily. However, once you stop and think what is actually required for a currency to function well, the problem is not that simple.

First of all, you need a way to track how much money everyone has. This is simple. Secondly, you need a way to move money from one person to another. This is also simple. Next, the currency needs an issuer, which makes things more complicated.

We could take an approach similar to Ripple when it comes to currency issuers, and that would be the concept of a Gateway. The same currency from two different Gateways is not the same currency, similarly how BTC at MtGox is different from BTC at Bitstamp. This approach would work for any currency, be it fiat or digital. Implementing an option for a Gateway to create any currency in a contract shouldn't be too hard, but we would probably end up with a separate contract for each Gateway. This may complicate some other issues.

Another approach that might work for this could come in a form of Ethereum having awareness of what happens in other currencies. One could create a contract that creates a piece of currency in Ethereum each time a transaction sends money to a given address in say, Bitcoin. This approach would work well if you want to have proof-of-burn currencies, but wouldn't work too well if you would want to redeem the currency back in its original blockchain, unless that system would have some knowledge of the Ethereum blockchain. All in all it could allow for creating a currency without an issuer, but it would be more complicated than the Gateway approach.

So all in all, we would most likely end up having multiple contracts for multiple currencies. Now, to make those currencies more useful, we need to be able to trade them for one another. This probably would be the hardest and most resource-intensive task to be honest. A proper exchange engine needs to store data on users' balances, how much of their funds are frozen in trades, what trades they have issued, details about those trades, be able to sort those trades based on the price, match them in an order of price and date and do so in an effective manner. Now don't get me started on trading multiple currencies in a row to hop between them and get the final currency we want. Also, the engine would more often than not interface with arbitrary two Gateway contracts...

I have personally implemented a trade engine for a Bitcoin exchange, and believe me, it wasn't a code that was short or easy. I doubt creating a feature-complete decentralized exchange in Ethereum will be a straightforward task. It's easy to say that you can create any currency, it's a lot harder to make that currency do everything it needs to do.

Incentives and data bloating...

From what I heard from the Ethereum developers, the software will be running in a strict sandbox. It will not have access to anything outside of the Ethereum blockchain essentially. In order to use data from the outside world, someone will need to put that data into Ethereum explicitly. This is most often discussed in terms of say, price tickers for financial derivatives, but was also mentioned for fetching data from other blockchains and so forth. Since the data could swing an outcome of a contract, it would have to be provided by third parties that have no stake in the outcome.

Now the question is, what incentive would anyone have to be putting that data into the blockchain? If each transaction would cost a fee, they would be losing money with each new data point pushed into the blockchain. Similarly, not everyone might be interested in that data while they would have to store and process it all the time. For small pieces of data like a price ticker, I can see exchanges providing that service at their own cost, or someone running a donation-fuelled ticker. For bigger pieces of data, like info on external transactions, it might be a fee-for-service. At any rate, something like this would have to be kept in mind when discussing such need for data - it won't just magically appear in the blockchain.

I also wonder how data from external blockchains will be included into Ethereum. If we wanted to include data in a trust-less way for say, a transaction happening in Bitcoin, we would need to provide the transaction data, then add the merkle branch and a block header to prove that the transaction is a part of a block, and then perhaps an entire block header chain to show that the blocks are not fake? Alternatively, we could use trusted third parties to only provide informations on confirmed transactions.

All in all, it will certainly be interesting to see what solutions are used for this problem.

Non-technical aspects


Contracts and incentives

What is the incentive of creating a useful service for currencies like Bitcoin? People will want to use your services and you can charge them fees for doing so. What is the incentive of creating useful contracts in Ethereum? If you are from the core Ethereum team, you want to create them to make Ethereum more useful and boost adoption. If you are not, there probably isn't much money to be earned in the long run. If you create a contract that charges a fee, from what I understand it anyone can create a copy of that contract, remove the fee code and use that instead. Any contract you use anyone else can use, so you don't have exclusivity. You probably can expect some bounty for developing some useful code in the system, but I am yet to see any specific details about that. All in all, I think monetizing on creating new, useful contracts in Ethereum might be a problem for the system.

It's all about the interface

If you create the most useful service there is but the only way to communicate with it is through a command line or creating some code, few people will use it. Similarly in Ethereum creating a contract might only be half of the job. The other half would be creating a good user interface for people to be able to use your contract in a meaningful way. I think this aspect is not emphasized enough at this point and may put a lot of people off when they get their first impressions of Ethereum.

DAO hype

Decentralized Autonomous Organizations are an interesting concept promoted by Ethereum. In essence, it will allow groups to organize themselves in any way they see fit and allow for decentralized voting, money management and so forth. I have heard a number of people talk about how useful it will be to organize themselves as a DAO and what have you. Thinking about this, I don't believe DAOs will be the silver bullet to a lot of problems that some people make it out to be.

First of all, lets discuss the good things. Decentralized money management idea is great. It certainly would be useful to decentralized organizations. A decentralized voting system, well, it serves its purpose and as long as there is some good way to interface with it it might be better than running some centralized voting server. I don't see it as that much of an improvement, but there are some die-heart decentralized proponents out there, so they might find it useful.

The main problem with DAOs is their interface to the real world. Since the code is not an enforceable law just yet, DAO has as much impact on a group of people as they let it. Anything that is voted on that has an impact on the external world outside of Ethereum still has to go through the human filter before it takes an effect. If a DAO lets anyone put forward any proposal and let other people vote on it, who cares if 51% of people would vote on what colour to use in a room if the person owning the room wouldn't want to paint it anyway? Similarly, using democratic voting as a means to solve every problem would be as effective as doing a popularity context or going by mob rule. Unless a DAO contract has a code to represent every rule an organization would like to apply in a given context, it might not be as useful as organizing oneself in a more traditional fashion.

Personally, I am yet to see some good examples of what a DAO might be useful for (asides the mentioned money management and decentralized voting). I am guessing like many new ideas it is something worth exploring and iterating over, but it might not be what people thing it is.

Technical lead and presenting Ethereum to the public

I had an occasion to see Vitalik present the concept of Ethereum a few times. It appears that the project wants to put him forward quite often to do this sort of talks. My personal impression of him however, is that while he is technically proficient and may be the most knowledgeable person on Ethereum, he might not be the best person to be doing such presentations.

Vitalik shines when he is talking about and presenting some technical aspects that he knows about - be it talking about Simplified Payment Verification or creating various contracts in Ethereum. However, when it comes to more non-technical concepts, he isn't the best speaker. Similarly, putting him forward to explain Ethereum to mainly non-technical people might be a poor use of him as a resource.

I personally think the Ethereum team might benefit from having a more extrovert person that focuses on explaining Ethereum to non-technical people, and bringing in Vitalik to focus on the technical aspects of what they are developing. Using Vitalik for everything isn't all that optimal.

Nitpicks


Lets name all the denominations

Someone thought it would be a great idea to name all various denominations used in Ethereum. I wonder how many people will be using more than wei and ether, or remember the order those units come in. Coming from a metric background kilos and milis make sense to me and I can easily convert any orders of magnitude between piko and peta. If Ethereum will be pushing for those units to be used, we might end up with nonsense like the imperial system of units:




Summary

To sum all up, the Ethereum project isn't as easy as some people would believe. At the same time, I am looking forward to reading any counterpoints the Ethereum team might have to the above points so that I can better understand their project.

Useful links:


EDIT:

After sharing this post with the Ethereum community on Reddit, I got a few responses to my points. Be sure to read them as well.

Tuesday, April 15, 2014

Toronto Bitcoin Expo, a quick look

Toronto Bitcoin Expo, a quick look

Over the last weekend I was in Toronto for the Bitcoin Expo conference. Here is my overall impression of the event. I will probably elaborate on a few things in a later post.

Overall remarks

Looking back at the event, I personally feel it was promoting a few of its key sponsors - mainly Ethereum and CAVirtex. Both of them had large expo booths and were represented in multiple panels. Perhaps it is fitting since they are the two largest sponsors of the event, but I personally become saturated with them quickly.

To some extent, what was being presented wasn't much of news to anyone that keeps up to date with Bitcoin. Most of us already know that taxation with Bitcoin is a pain, that the laws surrounding Bitcoin are complicated and vary from place to place, and know about the various levels of security of Bitcoin wallets.

That being said, it was interesting to hear some peoples' opinions on a few matters. So lets get to it.

Quick summary

For those that want just a bite-size summary of what someone like myself took away from the conference, here it is:

  • Future of crypto currencies is not one global coin, it's plurality of coins. If a new currency is useful or beneficial in some way to some people, it will be used. We will have currencies specific to apps (like Air Miles or StackExchange reputation), tokens for various resources (say, payment for decentralized storage in decentralized Dropboxes or what have you), branded currencies (by companies, celebrities and whoever), as well as a plethora of others.
  • In the near future, if something can be decentralized, it will be. During the hackathon we had a decentralized Silk Road-style application created. Decentralized storage will soon be upon us. We have decentralized exchanges in form of Ripple and MasterCoin. Ethereum is decentralizing a lot of other things. All in all, soon we will have a number of things that will be decentralized just because it can be done.
  • Joseph David believes that Canadian senate hearing on cryptocurrencies went well and that the Canadian senate is looking favourably at Bitcoin. He regrets not putting enough emphasis on merchant protection and anti-chargeback features of Bitcoin.
  • There are so many opportunities in the Bitcoin space right now that most companies have to turn them down by the numbers and just focus on one or two things. This is a great time to be a developer, just like in the early days of the Internet.
  • Taxation and laws surrounding Bitcoin are complex and can vary from individual to individual. Best consult your lawyer and/or accountant while dealing in them. Alternatively, if you want to develop some all-in-one solution for handling Bitcoin taxation, you will have a lot of clients eager to throw money at you.
  • As usual, you should use good security when handling money. No one person should be able to make a significant withdrawal. Also, be aware of crafty people that use social engineering to try getting access to your site. Fake IDs are cheap, fake social profiles are cheap, and minimum KYC requirements are not enough for minimum security requirements when dealing with account resets and so forth.
  • Global Bitcoin Alliance is a really good organization to represent Bitcoin users. If you want to create your local branch, they already have all the resources you need.

Other

And some other random small remarks from the conference:

  • If you are a non-technical person making statements on the technical aspects of Bitcoin, you better do your research and do it good. One of the speakers was making a few claims along the lines of "Bitcoin Foundation owns the Bitcoin development team", "The dev team can make any change to the software sometimes against the community's will" (in regards to the lowering of the fees in Bitcoin Core), or that "Satoshi was probably Japanese, so for him high speed Internet was the norm, that's why future scalability of Bitcoin wasn't an issue for him". Ron Gross debunked all of such baseless claims in a great way. But the fact still remains - do your research and don't try spreading misconceptions.
  • There are some people that are good speakers and there are some people that don't work well on a panel. I won't be pointing fingers, but I would say that half of the people speaking at one panel weren't that good and it was rather painful to sit through.
  • To one of the people representing Blackcoin at the conference - if you are talking with a panellist after their talk with about 10 minutes to the next panel, be brief and let other people talk with them as well. It was rather annoying just standing there listening to a dragged-out conversation while there were about 5 other people that wanted to quickly engage with one of the panellists.

I think this about wraps up some basic remarks from the conference. I might expand on a few topics in a future post if there will be anything worth remarking about. I'm still mulling over the conference.

Saturday, March 15, 2014

Crypto 2.0 systems

Crypto 2.0 systems

Crypto 2.0 systems

Bitcoin is a great system designed for one specific purpose - creating and operating a decentralized currency without a trusted party to manage the system. However, there is a lot of room for growth in that space. Some people do want to create centralized currencies or tokens that would exist alongside Bitcoin or similar currencies. This would allow creation and distribution of say, shares in a company, currencies backed by commodities and a number of other assets people would want to hold and trade. This post is dedicated to exploring some of the more notable systems developed in this space.

Colored Coins

Colored Coins is a project focused on using bitcoins to denote various tradable assets.

The concept is very simple - anyone can denote a specific output of a transaction as creating a new asset - this gives the coins their colour. Each satoshi of that output would denote 1 share in that asset. Anyone holding those shares would have a right to the underlying asset backing them. Trading the assets is fairly simple - one would pay the asking price for them and in turn receive the shares in a Bitcoin transaction. There are some rules as to how colours are handled and preserved in case they are mixed with coins of other or no colour.

The Colored Coins are stored entirely in the Bitcoin blockchain. This gives the transaction the same level of security as anything that happens on the Bitcoin network, although it also has a few drawbacks. Each transaction takes the usual 6 confirmations to process irreversibly, and costs as much as any transaction would (sometimes more since some outputs might be considered unwanted dust). Since we're dealing in satoshis as the smallest unit of accounting, there is only a certain granularity we can achieve in the assets before it becomes too expensive to create such a number of shares (creating 1000000 shares would cost you 0.01BTC). One also has to use a specialized wallet that keeps track of the colours of all the coins in order to be able to transact in them.

Overall, Colored Coins is an interesting project, but it is unlikely it will scale to meet the future needs - it relies on piggy-backing the Bitcoin network too much.

Mastercoin

Mastercoin is a system that is also built on top of the Bitcoin blockchain that allows people to perform a lot of operations impossible in the raw Bitcoin protocol.

Mastercoin allows people to issue their own currencies, enter into hedging contracts, trade assets on a decentralized exchange, do decentralized gambling and will probably grow in feature set as time goes on. Since the Mastercoin project is being overseen by the Mastercoin Foundation it is likely that it will continue to expand. The Foundation has secured funds in bitcoin and mastercoin for this purpose and anyone can contribute code towards a set of goals and earn money this way.

Mastercoin offers all of the features of Colored Coins and more, but since it uses the Bitcoin blockchain as a way of storing information about its transactions, it is burdened by some of the same problems. Confirmation times take 10 minutes, and since the extra data needs to be tracked at all times, there is no easy way to do simplified transaction verification that is possible in Bitcoin. Some people also express very strong opinions as to whether the entire project can deliver on some of its promises.

Overall, Mastercoin is a strong step forward from Colored Coins. It has a strong development team behind it and enough funds to either realize its goals or at the very least give it the best shot possible. At the same time, it might be held back by the need to use the Bitcoin blockchain for storing data.

NXT

NXT is a very ambitious project. It combines a lot of features of projects that already exist into a single product. It uses a Proof of Stake mining algorithm from Peercoin, offers an alias system similar to one found in Namecoin and a messaging system like Bitmessage. There is also a number of other features planned, including a distributed exchange, file storage, smart contracts, turing-complete scripts and many others.

NXT has its own blockchain with 1 minute blocks, as well as its own codebase separate from Bitcoin (unlike a lot of "copycoins"). All coins in the circulation were sold in a fundraiser at coin's inception raising $800k for the development of the project.

There are a few criticisms directed at NXT. First of all, since NXT addresses are way shorter than Bitcoin and use only numbers, meaning that address collisions are inevitable. Because of this, there is a separate mechanism for handling such situations - whoever uses the address first owns it, the next person to generate the same address with a different keypair can't use it. This makes creating addresses offline very dangerous.

Another criticism is the use of PoS algorithm with all of the coins being sold up-front. This essentially gives a lot of power to the initial investors. They will earn most of all the fees in the system and they are incentivized to hoard their coins. With the value of nxts being many orders of magnitude higher than the initial price, some people see it as market manipulation.

Finally, I have heard that the NXT developer community is rather small. If there isn't enough interest in a project like this, it might be the final make-or-break of NXT.

Overall, NXT is a project with a good potential. Unburdened from the use of Bitcoin blockchain it certainly has more room to expand and grow than Colored Coins or perhaps even Mastercoin. At the same time, unless NXT starts gaining more trust and traction, it might not be going anywhere with its ambitious goals.

Ripple

Ripple calls itself an open payment system. What distinguishes it from the other projects already listed is the shifted focus from just representing assets to the fluid conversion of them.

Ripple does away with the traditional blocks and mining model used by various altcoins, instead replacing it by ledgers and consensus. This cuts down the full confirmation time from 6 blocks (1 hour in Bitcoin) to 5-10 seconds. This speed is unheard of in most altcoins.

Similarly to previously mentioned systems, Ripple also created all of its coins - ripples or XRP - at the inception of the system. A number of them have already been given out to a lot of people from the Bitcoin world as well as early developers. Ripple Labs aims to distribute half of the total supply of XRPs this way.

In Ripple, anyone can issue their own currency / IOU. As long as there is someone that trusts you are good for the money, they can accept that currency, be it USD, BTC, gold grams or anything else. Large, trusted entities emerge from this system (Gateways, which are similar to Bitcoin Exchanges), and markets form around the IOUs they provide.

Since Ripple was designed with trading in mind, it allows people to seamlessly trade between any two currencies, as long as there is a market for them. This means that if you give me a price in USD and I only have BTC, we can still do business - my BTCs will be automatically traded on the live market for USD and you will receive exactly as much as you asked for. Such a functionality is essential for Crypto 2.0 systems - it ensures market fluidity.

Similar to NXT, Ripple also aims to incorporate a turing-complete scripting language into its protocol. However, the timeline for this is unknown.

Since it's public release about a year ago, Ripple has attracted a lot of criticism from the Bitcoin community. First of all, a lot of people disliked the fact that all XRPs were created at the start of the system and given to the system creators. This is fundamentally different from how Bitcoin distribution works. Secondly, the system wasn't open source for months after release, standing again in contrast to Bitcoin's opensource philosophy. These were enough for a lot of people to create a mental short cut labelling Ripple as scam.

While the system has become open source already, the negative history will remain to most likely haunt Ripple for a long while. The amount of XRPs held by Ripple Labs can similarly be seen as a Sword of Democles hanging above the whole system. That amount of currency could disrupt the entire system if it was ever "cashed out" at one time - a very unlikely move if one is to believe Ripple Labs want to see the system flourish.

At the same time, that amount of XRPs as well as $9M gathered in funding will most likely be used by Ripple Labs to develop and promote the Ripple system. With that kind of money and a strong team to go along with, Ripple Labs can be a very strong contender in the market.

Overall, Ripple at this time presents itself as the strongest Crypto 2.0 system. The project is well funded, has a strong team working on it, the network is very fast and offers a lot of functionality. The main thing slowing down Ripple is the poor reputation it earned during its launch.

Ethereum

Ethereum is an upcoming project aiming to release the first currency with turing-complete scripting language. The project is still being developed, so the exact details might change before its release date.

The basis for Ethereum is a coin similar to a number seen before - 1 minute blocks, some coins are pre-mined and sold at the inception of the project to create funding for the development, other coins will be mined ad infinitum.

The main selling point of Ethereum that has everyone interested in the project is the turing-complete scripting language. This means that technically any sort of contract or concept can be implemented in the system. One can create their own currency, automated escrow, smart property and a number of other "buzzwords". If implemented correctly, this can be a very powerful selling feature for a lot of people. There are some limitations to all of this of course, but that's a topic for another day.

Probably the greatest challenge for Ethereum will be getting enough developers working on various scripts for it, and probably most importantly, a good user interface for those scripts. Depending on how this is handled, it might be the make or break of the system - if one needs to be a programmer to securely use Ethereum, it might not reach critical mass. At the moment it looks like everyone that uses a given script in the system will need to read it and understand it, or else risk losing their money to a possible scam.

To ensure the script cannot be used for malicious purposes, there is a limit to what data and resources it can access. It appears that it will only be able to access the data from its own blockchain. At the same time, anyone would be able to feed data into the blockchain - be it current price ticker, information about Bitcoin blockchain or a number of other. This might possibly bloat the system a lot if not handled correctly.

Overall, Ethereum at the moment is the Crypto 2.0 system with the most potential to disrupt the space if it succeeds. It holds the promise of virtually unlimited applications that can be built on top of it. At the same time, a few other projects from this list are also aiming to implement similar features into their systems, which would make the space very competitive very quickly.

Conclusions

There are a number of interesting Crypto 2.0 projects being constantly developed. Some of them, like Colored Coins and Mastercoin build themselves on top of the Bitcoin Blockchain for seamless integration with the leading Crypto 1.0 technology. Others, like NXT and Ripple aim at providing a number of key features as their selling points. Finally, systems like Ethereum aim to create solutions that have never been tried before in order to push the limits of what is possible.

Overall, the future looks very promising.

Useful resources