Difference between revisions of "Ethereum"

From Organic Design wiki
(Ethereum news: Nice clear overview of the whole drama)
(Running geth on the classic chain)
Line 99: Line 99:
 
personal.unlockAccount(eth.accounts[0])
 
personal.unlockAccount(eth.accounts[0])
 
eth.sendTransaction({from: eth.accounts[0], to: "0x1234....abcd", value: web3.toWei(1, "ether")})
 
eth.sendTransaction({from: eth.accounts[0], to: "0x1234....abcd", value: web3.toWei(1, "ether")})
 +
</source>
 +
 +
== Running geth on the classic chain ==
 +
First set up a new directory for the classic data and then use the ''--datadir'' and ''--oppose-dao-fork'' options as discussed on the classic wiki [http://ethcwiki.org/index.php?title=Classic_wallet_setup here], e.g.
 +
<source lang="bash">
 +
mkdir ~/classic_data
 +
.../build/bin/geth --datadir ~/classic_data --oppose-dao-fork
 +
</source>
 +
Then wait for it to sync, and copy the keys across from the original datadir's ''keystore'' directory.
 +
 +
To attach a JavaScript console to the ''geth'' instance, you need to do the following syntax because the ''--datadir'' option doesn't work for ''attach'':
 +
<source lang="bash">
 +
.../build/bin/geth attach ipc:~/classic/geth.ipc
 
</source>
 
</source>
  

Revision as of 19:35, 3 August 2016

Ethereum is a crypto-currency that has been under development since about 2013 and is lead by Vitalik Buterin. The Ethereum business is based in Crypto valley in Switzerland. Ethereum is not just another "alt coin" though, it really is the next generation of this paradigm, taking it out of the basic currency role by offering full-scale general purpose distributed application development and testing framework. Ethereum does still have an associated currency aspect called "Ether" (ETH) which performs the important role of "fuel" in the Ethereum network. Distributed applications in the Ethereum network require payments in the form of Ether to fuel every computational step and storage operation on the system.

Bitcoin and Litecoin are often thought of as the gold and silver of the crypto-currencies. To continue with that analogy, Ethereum could be considered as the "oil" of crypto-currency since it plays the role of fuel which can be used for any generic application. Another interesting and important aspect is that Ethereum could help to pave the way towards how a real-world resource-based economy might be implemented, which seems to be the only viable way to transcend the economic bottom-line problem.

How Ethereum relates to the Organic Design vision

How can you even assess whether something has a stable value? it's not very useful for something to have a stable price with respect to current currencies since they themselves are devaluing (USD has lost 90% of it's value since the federal reserve act of 1913).

Ideally prices should reflect the true cost of their production, but under the current system such costs are externalised so that, for example, when we buy a cellphone for $50 there's actually another $1000 being subsidised by the poorer nations, so in many areas the true cost should be much higher.

But on the other hand there's also the fact that our current system thrives on inefficiency. We live under a system that pays people to turn a blind eye to allow disasters such as the BP gulf of Mexico oil spill and Fukoshima to occur because they boost the economy. Even our measurement for how well we're doing as a nation, GDP, looks better if we can waste, destroy or pillage more. If the system didn't have an economic bottom line it would be far more efficient, making costs in many areas lower.

So a properly designed system of money is really not possible without a proper design for society as a whole, but of course this cannot happen using the rules of the current system. Voting is not a solution, the best it can do is offer some control over how fast we destroy ourselves, but remember that whoever you vote for is a vote to keep the current system running.

That means we, the people, have to start building this new society ourselves, and while we don't know everything about the way it must work, we do know that it must be decentralised, transparent and accountable and should be a general framework on which groups, organisations and institutions of all kinds can operate.

And this is exactly what Ethereum is about. It takes the ideas behind Bitcoin and extends them to contracts in general, and then shows how one can build organisations from collections of contracts working together.

Ether

Ethereum has an associated currency aspect called "Ether" (ETH) which performs the important role of "fuel" in the Ethereum network. Distributed applications in the Ethereum network require payments in the form of Ether to fuel every computational step and storage operation on the system.

Bitcoin and Litecoin are often thought of as the gold and silver of the crypto-currencies. To continue with that analogy, Ethereum could be considered as the "oil" of crypto-currency since it plays the role of fuel which can be used for any generic application. Another interesting and important aspect is that Ethereum could help to pave the way towards how a real-world resource-based economy might be implemented, which seems to be the only viable way to transcend the economic bottom-line problem.

On 23 July 2014 the "Genesis Sale" began which will last for 42 days and allows Ether to be pre-purchased with Bitcoin in the form of a cold-storage wallet that can be converted to Ether after the network is established in late 2014 or early 2015.

Ether will be mined and probably use a hybrid proof-of-work/proof-of-stake system that should have a very quick block time of around 12 seconds and use Turing-completeness to make FPGA/ASIC hardware infeasible for mining. Ether will not be issued at more than 26% per annum of the initial genesis sale total.

Frontier release

The Frontier Release Logo

Frontier is the first in a series of releases that punctuate the roadmap for the development of Ethereum. Frontier will be followed by ‘Homestead’, ‘Metropolis’ and ‘Serenity’ throughout the coming year, each adding new features and improving the user friendliness and security of the platform.

Ethereum is special and different from other software projects in that its release also involves launching a live network. After a year and a half of development the Proof of Concept series completed 9 cycles. The 10th iteration resulted in the Olympic testnet, which gradually led to the Release Candidate client for Frontier.

The Ethereum network goes live when the clients consent on the genesis block and start mining transactions on it. The genesis block will reference an initial system state where all the accounts set up by the pre-sale exist with the correct amount of pre-issued ether allocated. Initially, the network will be in a "thawing" state allowing only blocks to be mined, but not transactions to be processed. This allows for users to have a break-in period to connect to the network while also building up its security.

In conjunction with the Frontier launch several exchanges will likely start enabling trade of Ether, which will provide necessary liquidity to the marketplace, allowing users and miners to transfer their holdings to other users requiring more or less Ether. As opposed to an earlier strategy, there is no plan to remove any contracts from the blockchain or otherwise alter the network to carry balances over to Homestead. In other words, the state in Homestead will be a direct and unmodified continuation of the state in Frontier.

Update: As discussed in their statement, the genesis block will not be available for download, but rather must be created by everyone who wishes to form the initial consensus of the network state. A script has been provided which can only be run after block 1028201 of the Ethereum testnet has been created (which should be about Thursday night). The script requires a hash of the block which we can calculate ourselves with web3.eth.getBlock(1028201).hash and it will also be posted on the Ethereum social media channels. This script can then create the genesis block when it has this hash passed to it in the --extradata parameter.

The release happened at about 15:20 UTC (July 30th 2015)! I was able to be part of the initial genesis block consensus, although I didn't obtain the hash of block 1028201 myself because I didn't have time to download the 77GB test-net blockchain, I used the hash provided on etherchain.org instead. I then ran the python script with the hash in the extradata parameter and a few minutes later my genesis block file was produced and I could run geth to submit my version of the genesis block to the network :-)

At the time of release they unveiled a new version of the main ethereum.org website, and a new introductory video which I've put at the top of this page.

See the Ethereum Launches blog post for more information.

The first Epoch switch was on 4th August 2015 (an epoch is 30,000 blocks, or about 100 hours) which means the so-called "thawing phase" being completed and so the gas-limit should soon start to rise up from 5000 to over 3 million which will mean that transactions will be able to start flowing in the network (a transaction requires about 21,000 gas) and the exchanges should start listing ETH in their markets! The gas limit has been on the move since the epoch change and is up to 6200 on the 6th.

Update: Transactions are flowing, gas limit is over 100K as of 03:00 UTC 7th. Poloniex exchange is the first to list ETH, but exchanges have been asked to delay deposits for 24hr in case the chain needs to be rolled back for any reason. Trading should begin at 03:50 UTC on August 8th if all is well.

Release concludes: Gas limit has reached the final value of "pi million" (3,141,592) on August 8th 2015 and trading began on a few exchanges. The price quickly found equilibrium at around $1.40 - not a bad start considering they were 23 cents in the pre-sale last year! The price will likely drop a fair bit now as the whales start dumping some of their holdings, but then it should steadily rise as the network starts to grow over the next few months.

Homestead release

It has been announced that the Homestead release will be on Pi Day (March 14th 2016). The ethereum.org website was updated for Homestead on March 7th and has downloads available for Mist, the Ethereum browser/wallet application. The Homestead release is all about making the project more accessible to ordinary people instead of just geeks, so Mist is a big step forward in achieving this!

Mist password bug

Mist installs easily on all platforms, and has a first-time set up procedure that allows users to import their presale wallet or set up a new account, and then transfer some value into the account from bitcoin if they wish. One problem which quite a few users seem to be having, including me, across all platforms is that Mist will not allow the presale wallet to be imported, saying that the password is incorrect. Many users, including me, have successfully imported the wallet into other Ethereum applications such as geth or the Kraken exchange, so we know that this is a bug in Mist rather than a simple case of having forgotten the password, so issue #182 has been raised about the problem.

Useful commands

This section lists some useful commands available from within geth, the JavaScript console for Ethereum. For a full description of all the commands available, see their wiki.

After installing you should first add an account and enter a password for it:

.../build/bin/geth account new

You can then start a node running in the background:

.../build/bin/geth --identity organicdesign &

And then in another terminal attach a console to it so you can control and query the running instance.

.../build/bin/geth attach

You can then start mining with the specified number of threads, and then stop again at some point:

miner.start(4)
miner.stop()

Check the balance of an account denominated in Ether:

eth.getBalance(eth.accounts[0]).toNumber()/1e18

Show the details of the current block:

eth.getBlock("latest")

Calculate the average time to solve a block with your current hash-rate and the current difficulty:

etm = eth.getBlock("latest").difficulty/miner.hashrate;Math.floor(etm/3600.)+"h"+Math.floor((etm%3600)/60)+"m"+Math.floor(etm%60)+"s";

Unlock an account and send 1 ETH from it using default gas amount, password is not supplied, so will be prompted:

personal.unlockAccount(eth.accounts[0])
eth.sendTransaction({from: eth.accounts[0], to: "0x1234....abcd", value: web3.toWei(1, "ether")})

Running geth on the classic chain

First set up a new directory for the classic data and then use the --datadir and --oppose-dao-fork options as discussed on the classic wiki here, e.g.

mkdir ~/classic_data
.../build/bin/geth --datadir ~/classic_data --oppose-dao-fork

Then wait for it to sync, and copy the keys across from the original datadir's keystore directory.

To attach a JavaScript console to the geth instance, you need to do the following syntax because the --datadir option doesn't work for attach:

.../build/bin/geth attach ipc:~/classic/geth.ipc

Ethereum Documentation

Block explorers and stats

Related Ethereum projects

Ethereum news

Ethereum links

See also