The idea of a stablecoin in Ethereum is to create a token that is pegged to the price of say $1 USD.
What are the main ways of achieving a stable cryptocurrency? What DApps are implementing them and how are their approaches different?
The idea of a stablecoin in Ethereum is to create a token that is pegged to the price of say $1 USD.
What are the main ways of achieving a stable cryptocurrency? What DApps are implementing them and how are their approaches different?
In alphabetical order, here are some DApps implementing a stablecoin, and the differences in their approaches. This is a community wiki for all to improve. (This is just a starting point.)
How do I know that each DC asset is backed by its real world counterpart?
We are working with our banking partner institute a mechanism whereby the bank will release daily proof-of-reserves (POR). Comparing this report to the DC assets visible on the Ethereum blockchain will show that every DC asset is fully backed by its government currency counterpart. Until we establish this mechanism, DC will release daily bank statements detailing existing deposit amounts.
Introducing Maker states:
Maker is able to maintain the price stability of the Dai through the Dai Credit System, which backs the Dai with collateral stored in Ethereum smart contracts, while simultaneously functioning as an internet-based, p2p credit market that commoditizes credit by allowing anyone with valid collateral to take out loans that have low transaction costs and no middle man fees.
String uses Contract For Difference (CFDs) as outlined in Slide 11 from a presentation given at DEVCon1:
“Liquidity Partners” bridge DAO to traditional finance by selling zero based CFDs they 100% hedge by purchasing underlying asset
Real world compliance framework governed by an association, with continuous auditing, horizontal legal relationships and practically secured using multi-signature systems. Compliance requires liquidity providers to honor “virtual” CFDs they sell to the DAO and also 100% hedge their positions by purchasing the underlying asset.
The best service to use for this is Oraclize.it.
The serves as an oracle for a number of currencies and variables (i.e. exchange rates, weather, etc) which are constantly updated by a Wolfram Mathematica server. As it says here, you shouldn't use contract for anything important. since it piggy backs on the Oraclize pricing internals it could suddenly change if Oraclize changes their pricing model.
You can called the USD-to-Wei oracle in your contract via this line:
USDOracle oracle = USDOracle(0x1c68f4f35ac5239650333d291e6ce7f841149937);
And you can interact with it via these two functions:
function WEI() constant returns (uint);
function USD() constant returns (uint);
Again, maybe you might want to look at the original contracts if you want to design your own, but that's a good starting point.
https://github.com/pipermerriam/ethereum-usd-oracle/blob/master/contracts/USDOracle.sol
See the previous answer for who's implemented what but a few approaches are: