Ethereum: Difference between revisions
| Line 12: | Line 12: | ||
=== Usage === | === Usage === | ||
==== Create an Account ==== | |||
personal.newAccount("Write here a good, randomly generated, passphrase!") | |||
==== Get Balance ==== | ==== Get Balance ==== | ||
web3.fromWei(eth.getBalance(eth.coinbase), "ether") | web3.fromWei(eth.getBalance(eth.coinbase), "ether") | ||
| Line 22: | Line 25: | ||
==== Start CPU Mining ==== | ==== Start CPU Mining ==== | ||
miner.setEtherbase(eth.accounts[0]) | miner.setEtherbase(eth.accounts[0]) | ||
miner.start() | miner.start() | ||
== CPP-Ethereum (eth) == | == CPP-Ethereum (eth) == | ||
Revision as of 04:49, 5 September 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
Create an Account
personal.newAccount("Write here a good, randomly generated, passphrase!")
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:
- Download and compile the most recent version of LLVM. The packaged version of LLVM available from the official repositories is only version 3.7.
- 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/
- 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.
- 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
Example:
./geth --networkid 34093 --genesis ~/ethereum/genesis.json --datadir ~/ethereum --etherbase="0xdc9b165c433c8a6ae48713e8eae926767af0bca0" console miner.start(1)
Then attach to the instance with:
./geth --networkid 34093 --genesis ~/ethereum/genesis.json --datadir ~/ethereum --etherbase="0xdc9b165c433c8a6ae48713e8eae926767af0bca0" --ipcpath ~/ethereum/geth.ipc attach
See Also
Greeter contract tutorial