Skip to content

Instantly share code, notes, and snippets.

@tav
Created April 4, 2011 01:43
Show Gist options
  • Save tav/901035 to your computer and use it in GitHub Desktop.
Save tav/901035 to your computer and use it in GitHub Desktop.

Amp currency lacks scarcity so arbitrarily inflationary.

I am not sure how the Amp currency lacks scarcity. Perhaps I live in a different reality but, where I come from, computational resources are very much a finite resource. Around here, millions of people actually queue up to buy new devices!

Now, if you're lucky enough that computational devices are a free good in your reality, then please please please send me the equivalent of a million top-end IBM System X servers. I'll even pay for the shipping! ;p

I apologise for the cheeky tone. On a more serious front, the built-in demurrage does act very much like inflation. And like inflation, it stimulates the circulation of the currency and thus economic activity — this is very much by design.

It ties value directly to social/technological progress and enables a self-regulating monetary system that interest rate targets could only fantasise about...

Centralised mint=single point of failure. =(

This is an excellent criticism. One that I am happy to say has been rectified since I wrote that email.

But, before explaining the solution, perhaps it'd be worthwhile explaining why the centralised mint design was chosen in the first place.

Let's take a simple system that allows anyone to become a mint, i.e. supports multiple currencies. In such a system, the rational choice is for each person to be their own mint.

This sounds great in principle, however, the transactional costs of such a system would simply be impractical. With just 10 currencies, there are only 90 possible exchange rates between any two.

However, that number increases rather dramatically as the number of currencies goes up -- for N currencies, there are (N^2 - N) permutations -- e.g. with just 500 currencies, there are almost a quarter of a million possible exchange rates!!

One might suggest that certain currencies will be favoured for such forex transactions -- which begs the question of why there need to be multiple currencies in the first place.

And even if we ignore that question, there's still the fact that in any given network the power law will apply and there will be a long tail of currency permutations for which finding a valid exchange rate would be an extremely expensive computation.

And this is not even taking into account that mints aren't guaranteed to be available -- perhaps due to simple network partitioning, perhaps due to operational failure or perhaps even due to denial of service attacks or legal notices.

Now, in contrast to multiple currency systems, proof of work systems like hashcash and bitcoin don't generally suffer this problem. The entire bitcoin network for example acts as a single, decentralised mint.

And though some people may start their own forked bitcoin networks, in general, the only need for foreign exchange is with traditional currencies like the dollar.

However, proof of work systems are generally rather wasteful of actual resources -- and I say this as someone who implemented a hashcash-based messaging system back in 2001 and even drafted a hashcash-based OAuth 3.0 spec last year.

Perhaps at some point we'd be able to come up with computationally verifiable puzzles that serve a greater need like curing cancer, but for now, these systems are simply an outlet for wasting resources like energy.

Furthermore, one of the useful aspects of modern-day transactions are that they occur in real-time. I simply hand over my money and, assuming the trustworthiness of the seller, I have what I wanted.

With proof of work systems, there's a significant delay between the transaction being initiated and it being validated. And though this could be worked around through the use of intermediaries, a digital system should strive to be at least as good as cash and not worse.

Going back to multiple currency systems, there's the issue that a mint could at any point issue a bazillion units to itself and defraud everyone else. To address this, systems like opcd and ripple have played with the web of trust idea and use that to set credit limits.

I alluded to this with the various references to Trust Maps in the original Amp post. Unfortunately, dealing with multiple currencies and trust networks imposed not only a significant computational overhead, but also made it very hard to come up with an easy-to-understand user experience.

These issues combined with the issues of bootstrapping led me to decide upon a centralised mint as the most effective path of least resistance. But I'm happy to say that some time later Mamading (@evangineer) and I were able to come up with a more elegant solution =)

In short, it's the exact same as before, except that:

  • Anyone can issue their own Amps! These are simply different brands of the same currency, i.e. Amps are interchangeable and do not have any distinctive properties besides the brand.

  • Unless specific parties explicitly announce that they will support multi-brand transactions, all normal transactions are limited to two parties and their respective brands.

So if Alice wanted to pay Bob for a service, she would only be able to use either Amps of her own brand or Bob's brand. This simplifies the transactional complexities to laughably trivial levels.

Thanks to the fact that Amps are actually backed by computational resources, a party's AmpHost can always call upon the Amps offered by another party (effectively an IOU) and verify whether they live up to their promise or not.

It can then -- similar to how bittorrent manages connections -- decide on how to engage with the given party in future transactions, e.g. accept more Amps, give a good credit rating, etc.

After spending nearly a decade trying to fix the issues of our monetary system with financial cryptography, it amazed me that the above system involved none of the usual complexities of blinding, time stamping authorities, etc.

It's just a simple accounting system and can be extended with lots of support structures quite easily, e.g. Trust Maps-based credit rating, brands could act as guarantors of other brands, exchanges could facilitate multi-brand transactions, etc.

Anyways, I hope I've made some sense and addressed the issue of the centralised mint satisfactorily. Please let me know otherwise.

-- Thanks, [email protected]

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment