https://github.com/moneroexamples/compile-cpp-ethereum-on-arch
Compile cpp-ethereum on Arch Linux
https://github.com/moneroexamples/compile-cpp-ethereum-on-arch
Last synced: about 1 year ago
JSON representation
Compile cpp-ethereum on Arch Linux
- Host: GitHub
- URL: https://github.com/moneroexamples/compile-cpp-ethereum-on-arch
- Owner: moneroexamples
- Created: 2016-05-25T05:31:38.000Z (about 10 years ago)
- Default Branch: master
- Last Pushed: 2018-01-26T08:46:51.000Z (over 8 years ago)
- Last Synced: 2025-02-13T05:41:28.052Z (over 1 year ago)
- Homepage:
- Size: 33.2 KB
- Stars: 5
- Watchers: 2
- Forks: 2
- Open Issues: 2
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# Compile cpp-ethereum and solidity on Arch Linux
The example shows how to compile the current github version (as of 05 April 2016) of C++ version of [ethereum](http://ethereum.org/), i.e., [cpp-ethereum](https://github.com/ethereum/cpp-ethereum), on [Arch Linux](https://www.archlinux.org/).
## Dependencies
Before proceeding with the compilation, the following packages are required:
```bash
# from Arch official repositories
sudo pacman -Sy git base-devel cmake leveldb libmicrohttpd
```
## Compilation: cpp-ethereum
```bash
# clone webthree-umbrella repository
git clone --recursive https://github.com/ethereum/cpp-ethereum.git
# enter the folder after cloning its github repository
cd cpp-ethereum
# make a build folder and enter into it
mkdir -p build && cd build
#make sure ../cpp-ethereum/build/libs has the files: libbinaryen.a, libmpir.a
#copy these files from ../cpp-ethereum/build/deps/libs64 to ../cpp-ethereum/build/deps/lib
cp -r deps/lib64/libbinaryen.a deps/lib/
cp -r deps/lib64/libmpir.a deps/lib/
# create build files and specify Ethereum installation folder
cmake .. -DCMAKE_INSTALL_PREFIX=/opt/eth
# compile the source code
make
# alternatively it is possible to specify number of compilation threads
# for example to use 4 threads execute make as follows:
# make -j 4
# install the resulting binaries, shared libraries and header files into /opt
sudo make install
```
## Compilation: solidity
```bash
# go to your homefolder if still in ~/cpp-ethereum/build
cd ~
# clone webthree-umbrella repository
git clone --recursive https://github.com/ethereum/solidity.git
# enter the folder after cloning its github repository
cd solidity
# make a build folder and enter into it
mkdir -p build && cd build
# create build files and specify Ethereum installation folder
cmake .. -DCMAKE_INSTALL_PREFIX=/opt/eth
# compile the source code
make
# alternatively it is possible to specify number of compilation threads
# for example to use 4 threads execute make as follows:
# make -j 4
# install the resulting binaries, shared libraries and header files into /opt
sudo make install
```
After compilation and istallation of the cpp-ethereum and solidity, the `/opt/eth` should look as follows:
```bash
/opt/eth/
├── bin
│ ├── eth
│ ├── ethminer
│ ├── ethvm
│ ├── lllc
│ └── solc
└── lib
├── liblll.so
├── libsoldevcore.so
├── libsolevmasm.so
└── libsolidity.so
```
## Synchronize into Ropsten Revival testnet
To synchronize into [Ropsten Revival](https://github.com/ethereum/ropsten/blob/master/revival.md) testnet
network, the following command can be used. It is presented as an bash alias that can be
added you your `.bashrc` for easier use:
```
/opt/eth/bin/eth -j --rpccorsdomain "*" --ropsten --pin -t 1 --unsafe-transactions --peerset "required:20c9ad97c081d63397d7b685a412227a40e23c8bdc6688c6f37e97cfbc22d2b4d1db1510d8f61e6a8866ad7f0e17c02b14182d37ea7c3c8b9c2683aeb6b733a1@52.169.14.227:30303 required:6ce05930c72abc632c58e2e4324f7c7ea478cec0ed4fa2528982cf34483094e9cbc9216e7aa349691242576d552a2a56aaeae426c5303ded677ce455ba1acd9d@13.84.180.240:30303" --rpccorsdomain "http://127.0.0.1:8080" -a "0xdf9f93fe406920ae5335021b3fc016de3ab7070e"
```
`--unsafe-transactions` don't need to be used for synchrnonization. But later its easier to make test transactions using `geth` console. When using `mist` wallet, it does not matter.
`-j --rpccorsdomain "*"` are for working local copy of [browser-solidity](https://github.com/ethereum/browser-solidity).
`-a "0xdf9f93fe406920ae5335021b3fc016de3ab7070e"` is my coinbase address. You should replace it with yours when you create your first ropsten ether account.
`-t 1` sets number of mining threads
`--rpccorsdomain "http://127.0.0.1:8080"` is for when using [browser-solidity](https://github.com/ethereum/browser-solidity). Without this there might be CORS problems connectin to your `cpp-ethereum` node.
## Install geth
`cpp-ethereum` does not provide console interface. To interact with the `eth` node, `geth` JavaScript console can be used.
```
sudo pacman -S geth
```
To connect to eth node:
```
#in terminal 1: start eth node using eth alias created above
ethtestnet
#in terminal 2:
geth attach
```
Once connected can execute `eth.syncing` or `eth.blockNumber` to check current synchronization status.
```
> eth.syncing
{
currentBlock: 682915,
highestBlock: 688999,
startingBlock: 682603
}
> eth.blockNumber
683452
```
When fully sunced, mining can be started:
```
miner.start(1); // number in parenthesis does not matter.
```
Check mining hashrate:
```
> eth.mining
true
> eth.hashrate
56937
>
```
Check if we mined something, i.e., check coinbase balance:
```
> web3.fromWei(eth.getBalance(eth.coinbase))
51.7183586
```
## Other examples
Other examples can be found on [github](https://github.com/moneroexamples?tab=repositories).
Please know that some of the examples/repositories are not
finished and may not work as intended.
## How can you help?
Constructive criticism, code and website edits are always good. They can be made through github.