runRunning eth without any arguments will sync your node to a public blockchain. It is also possible to create or sync to another blockchain (see Custom blockchains with eth). Interacting with your node can be done with geth or the Ethereum console: Using gethUsing the Ethereum ConsoleThe Ethereum console is a node.js application that connects to a running eth/geth node and provides access to web3 objects. Note: https://github.com/ethereum/ethereum-console It can be installed using npm: Notice:
Notice: usage:
Connect to the Ethereum node via ipc to remotely control it via the global variable web3 (web3.admin also appears) If no parameters are given, connect to the default ipc socket Enter interactive mode. parameter:Connect to the given ipc socket (if it does not end in .ipc, use ipc://) Executes the given JavaScript file, ending in .js, non-interactively. The script needs to call process.exit() to terminate the console. What is a module?What is the main executable file?
Deprecated executable, will be retired soon
What are the different modules?
– ethkey: independent key management – ethminer: standalone ethash miner – ethvm: standalone Ethereum virtual machine execution facility – evmjit: Ethereum Virtual Machine Library Just-in-Time Compiler – libethash: ethash mining proof-of-work algorithm implementation – libethash-cl: ethash mining code for GPU mining (OpenCL) – libethashseal: A generic wrapper around the proof-of-work sealing engine. Also includes the raw state of all ethash-based chains – libethcore: a collection of core data structures and concepts – libethereum: The main consensus engine (minus the Ethereum Virtual Machine). Includes state and blockchain classes – libevm: Ethereum virtual machine implementation (interpreter). – libevmasm: Ethereum virtual machine assembly tool, also includes optimizer - libevmcore: A low-level data structure for the Ethereum virtual machine, opcodes, gas costs, etc. – liblll: low-level LISP-like language compiler and assembler - libnatspec: natspec script evaluator (confirmation information) – libtestutils: Utilities for testing code – lllc: LLL compiler command line interface
– bench: tree-structured benchmarking – libdevcore: data architecture, utilities, rlp, tree structures, in-memory databases – libdevcrypto: cryptographic primitives, depends on libsecp256k1 and libcrypto++ – libp2p: core peer-to-peer networking implementation (except for specific subprotocols) – rlp: standalone rlp encoder/decoder
– docs: documentation, found at http://solidity.readthedocs.org/ – libsolidity: the actual implementation – analysis: reference resolution, type checking… (enhanced AST annotation) – ast: Abstract syntax tree and type system – codegen: Generate assembly code from commented AST – formal: formal verification – interface: external interface for libsolidity users – parsing: parser (creates uncommented AST) - solc: command line compiler
– eth: command line client/node – libjsconsole: JavaScript console to access the deprecated eth, to be replaced by nodejs app – libjsengine: potential engine for libjsconsole, will be removed soon – libweb3jsonrpc: json-rpc server-side endpoint, providing http and IPC (unix socket, windows pipe) connectors – libwebthree: service connectors for Ethereum, swarm/ipfs and whisper – libwhisper: whisper implementation
– cmake: build system cmake files, including instructions for interactive dependencies – utils: external dependencies # json_spirit: JSON parser for Boost's Spirit library # libscrypt: scrypt implementation # secp256k1: SECP 256k1 ECDSA signature algorithm implementation Automatic setup of cpp-ethereumAt the time of writing this document, all cpp-ethereum automation is driven by a Jerkins instance hosted at http://52.28.164.97 The setup has a "nice alias" at http://ethbuilds.com, but it is owned by Bob Summerwill personally, not the Ethereum Foundation, and may end up pointing to something in the future. It parallels the Ethereum download page examples for Go and Python builds. The fact that we have two different automation systems is not ideal and is for historical reasons. It would make sense to consolidate all Ethereum Foundation projects into a single, ongoing automation setup, but it would be a lot of work. We are discussing it. It should be more approachable once the repo reorg is done for the C++ codebase. The current Jenkins setup is missing the normalized continuous integration goal, which is its main weakness. There is no single URL you can visit to find out if the C++ build at HEAD is valid or broken. There is not even a URL you can visit per repository to find out if a private repository is valid or broken. We also lost the webthree-umbrella automation as a whole to know if the set of repositories we were releasing was valid or broken. We have automation for pull requests. They are built against development branches of the repositories they depend on. When testing changes which involve multiple repositories, there is a mechanism for specifying alternative branches for those dependencies. But it's broken. This is a Jenkins project for PR automation. Whenever a new PR is created or the content of an existing PR branch is updated, they are automatically triggered through Github webhooks:
Here are some other Jenkins projects we have:
Bob has no idea what these Jenkins targets are. They may be obsolete.
We are making a conscious effort to move our automation scripts from Jenkins to Git to reduce the "voodoo factor" in our automation. It's still a work in progress, but there are a few key scripts we use for automation:
But we still have some orphaned scripts within Jenkins:
Setting up a new Jenkins slave is a nightmare process. Here’s how to add an OS X slave. The process for other platforms will be different, but we won’t have to do that yet.
- Agree to the Xcode selection license – brew update – brew update – Install first things first (http://www.ethdocs.org/en/latest/ethereum-clients/cpp-ethereum/building-from-source/osx.html) – Install Ruby —– See https://github.com/rbenv/rbenv#homebrew-on-mac-os-x —– Brew install rbenv —–rbenv init —– Rbenv install 1.9.3-p551 —– Add eval “$(rbenv init –)” to ~/.bash_profile: - Use Java web-start to connect to slaves (need to lower security settings) – Cut-paste the PATH from the device into the configuration field for the node in Jenkins: —– Example: /Users/administrator/.rbenv/shims:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin Known Issues
In the next article, we will introduce "Ethereum Series (10): Introduction to Go, Java, Python, Ruby, and JS Clients" Thanks to Azure and Bob from the Chaoxi team for participating in the translation and proofreading of "Ethereum Homestead Documentation". |
<<: US Credit Unions Launch CULedger Blockchain Alliance
Although palmistry is divided into left hand for ...
After the "Wei Zexi" incident, both net...
In the field of physiognomy, a person's facia...
What personality advantages do women with thick l...
Characteristics of people who have difficulty get...
Bitcoin prices hit new highs on multiple exchange...
1. Look at the eyebrows From the perspective of p...
There may be some conflicts between the mother-in...
58.com, a magical website." This brainwashin...
The love line is an important line that can predi...
On January 26, according to the Beijing High Peop...
Moles can be divided into broad and narrow meaning...
A broken palm is a rare type of palm print, in wh...
In physiognomy, the fate of each person can actua...
When will you be successful? 1. A high, full fore...