Ethereum: Difference between revisions

From Leo's Notes
This page was last edited on 31 August 2015, at 07:20.
No edit summary
No edit summary
Line 104: Line 104:
</syntaxhighlight>
</syntaxhighlight>


== See Also ==
Greeter contract tutorial
* https://www.ethereum.org/greeter
* Chicken Lottery: https://www.reddit.com/r/ethereum/comments/3ivfyn/lotto_pollo_lottery_chicken/
[[Category:Linux]]
[[Category:Linux]]
{{Navbox Linux}}
{{Navbox Linux}}

Revision as of 07:20, 31 August 2015

Ethereum is a crypto platform for running smart contracts and exchanging Ether.

My address is 0xd2f887eda1b28c8714dbb2cf63a59f77fb68fb94

Go-Ethereum (geth)

The Ethereum client written in Go.

Setup

On a Fedora 22 machine, download and install the go client from golang's website. Compile the most recent version of go-ethereum using the official client and then run geth.

The Fedora 22 version of go will not work.

Usage

Get Balance

web3.fromWei(eth.getBalance(eth.coinbase), "ether")

Get my address

eth.coinbase

or

eth.accounts[0]

Start CPU Mining

miner.setEtherbase(eth.accounts[0]) 
miner.start() 

CPP-Ethereum (eth)

The official C++ version of the Ethereum client.

Setup Overview

On a Fedora 22 machine, you will need to:

  1. Download and compile the most recent version of LLVM. The packaged version of LLVM available from the official repositories is only version 3.7.
  2. Git clone v0.4.1 branch of the libjson-rpc-cpp code base. Versions higher may not compile. The most recent version fails due to dependency issues. Install to /usr or /opt/
  3. Install QT5.5 from the official website using their binary blob installer. The official repository does not have QT5 webengine. Neither does the official source.
  4. Compile ethereum using the dependencies installed above.

Some dependencies:

yum -y install  libffi-devel cryptopp cryptopp-devel \
  argtable argtable-devel libmicrohttpd libmicrohttpd libmicrohttpd-devel \
  cmake jsoncpp-devel jsoncpp gmp-devel \
  leveldb-devel leveldb-devel pocl

Build LLVM 3.8

git clone http://llvm.org/git/llvm.git
cd llvm
mkdir build ; cd build
../configure --prefix=/opt/llvm --enable-libffi
make -j 8
make install

Build libjson-rpc-cpp

git clone https://github.com/cinemast/libjson-rpc-cpp
cd libjson-rpc-cpp
git checkout tags/v0.4.1
mkdir -p build
cd build
cmake -DCMAKE_INSTALL_PREFIX=/usr ..
make
sudo make install
sudo ldconfig

Build Ethereum

You may want to make a symlink for llvm/include/llvm-c and llvm/include/llvm in /usr so that the cmake files can find it. Defining LLVM_DIR is not sufficient.

git clone ethereum-cpp
cd ethereum-cpp
mkdir build
cd build
LLVM_DIR=/opt/llvm/include CMAKE_PREFIX_PATH=/opt/llvm/include:/opt/Qt5.5.0/Tools:/opt/Qt5.5.0/5.5/gcc_64/ cmake -DCMAKE_INSTALL_PREFIX=/opt/ethereum ..

Other Topics

Backing up your key

Copy the ~/.ethereum/keystore as a backup. It contains your encrypted key. Also, don't forget your passphrase.

Private Test Net

To start your own test network with your own ether, install geth and then do the following:

mkdir /tmp/eth/70
geth console
personal.newAccount('password')
eth.accounts[0]

// you can check the eth.accounts[0] address, copy it and memo to somewhere
// control + c then escape from geth console.

// next make the private net genesisblock json file.
vim privatenet_genesis_block.json 
// this is my sample of testnet genesis block json  thank you @karalabe san
{
    "nonce": "0xlitebeefdeadbeef",
    "timestamp": "0x0", 
    "parentHash": "0x0000000000000000000000000000000000000000000000000000000000000000", 
    "extraData": "0x634f727365", 
    "gasLimit": "0x8000000", 
    "difficulty": "0x400", 
    "mixhash": "0x0000000000000000000000000000000000000000000000000000000000000000", 
    "coinbase": "0x3333333333333333333333333333333333333333",
    "alloc": {
   }
}
// then use the previous eth.accounts[0] to the {should be input } place.
geth --datadir="/tmp/eth/70" --etherbase="{should be input }" --genesis privatenet_genesis_block.json console
privatenet


See Also

Greeter contract tutorial