Ethereum: Difference between revisions
No edit summary |
m →CPP-Ethereum (eth): commenting out section |
||
| Line 70: | Line 70: | ||
<!-- Hiding this section for now... it is a bit out dated. | |||
=== CPP-Ethereum (eth) === | === CPP-Ethereum (eth) === | ||
| Line 122: | Line 124: | ||
$ 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 .. | $ 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 == | == Other == | ||
Revision as of 03:54, 30 June 2017
Ethereum is a crypto platform for running smart contracts and exchanging Ether.
My address is 0xd2f887eda1b28c8714dbb2cf63a59f77fb68fb94
Clients
There are a few clients that you can use.
Go-Ethereum (geth)
The Ethereum client written in Go.
Setup
To compile geth, ensure that you have go, gcc, and make installed. Then run:
$ git clone https://github.com/ethereum/go-ethereum
$ cd go-ethereum
$ make geth
geth will be compiled in build/bin/geth.
Usage
When starting geth, it will automatically start downloading the blockchain. It depends on UDP/30303. Ideally, the client should be accessible publicly via that port.
The default cache size used by geth is quite small, so for an initial sync run:
$ geth --datadir /path/to/ethereum-data --cache=1024
Whilst it is syncing, you can check the state of the client by starting and attaching an interactive console:
$ geth attach
> net.listening
true
> admin.peers
> eth.syncing
To create a private net, provide a custom --networkid value or provide a genesis json file with --genesis.
Other things you may want to do are:
| Task | Command |
|---|---|
| Create an account. Similar to creating a new address. | > personal.newAccount("Write here a good, randomly generated, passphrase!")
|
| Show account balance | > web3.fromWei(eth.getBalance(eth.coinbase), "ether")
|
| Show account address | > eth.coinbase
## or
> eth.accounts[0]
|
| Start CPU mining. Useful on testnets | > miner.setEtherbase(eth.accounts[0])
> miner.start()
|
Other
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
## In 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
{
"nonce": "0xlitebeefdeadbeef",
"timestamp": "0x0",
"parentHash": "0x0000000000000000000000000000000000000000000000000000000000000000",
"extraData": "0x634f727365",
"gasLimit": "0x8000000",
"difficulty": "0x400",
"mixhash": "0x0000000000000000000000000000000000000000000000000000000000000000",
"coinbase": "0x3333333333333333333333333333333333333333",
"alloc": {
}
}
## then use the previous eth.accounts[0] value as the etherbase value.
## The datadir should be somewhere else.
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
Dapp Information
TBA
See Also
Greeter contract tutorial
Contract Guide
DApp Tutorial