Skip to content

Latest commit

 

History

History
27 lines (14 loc) · 2.39 KB

RUNNING_A_NODE.md

File metadata and controls

27 lines (14 loc) · 2.39 KB

Running an Ethereum Node

The greatest benefit from the Ethereum blockchain comes from running your own local node because the data is local and under consensus; however, this benefit comes at a huge price in disc space usage, processing requirements, and hassle. The QBlocks software assumes you are running a full local node. In fact, it assumes you are running an archive Parity node started with the following command line:

parity --tracing on --pruning archive

Generally speaking this requires a fairly capable machine, although we've seen it run on Mac laptop. The blockchain's data itself takes up nearly 500 GB disc space (as of Nov. 2017). An SSD hard drive is strongly encouraged.

The current version of QBlocks stores block data in its cache only when a block is requested. If you request ten blocks, only ten blocks are be written to the cache. In this way, a minimum imposition is made in addition to the blockchain.

If you ask QBlocks to retrieve every block (as we do), every block is written to the cache. In our case, we want to do system-wide data analytics, and the QBlocks cache takes up an additional 500 GB.

We store our QBlocks cache on an external SSD hard drive. We've found this SSD drive to be quite excellent for this purpose. Blockchain on a Stick.

Not Running an Ethereum Node

You may use a remote node if you wish or a testnet node by changing the rpcProvider option in the configuration file. The caching capabilities of QBlocks really shines in the remote scenario. Using QBlocks, we've seen performance increases of nearly two orders of magnitude over requesting the same data repeatedly from Infura.

By default, so as to not over burden your hard drive, QBlocks does not cache every request. For example, the getBlock command only caches if you tell it to with the [currently undocumented] --force option:

getBlock 1001001 --force

You may check where a block is with the whereBlock command:

whereBlock 1001001

The Infura platform does not run their nodes with --tracing on nor --pruning archive; therefore, the behavior of operations such as getState, getTokenInfo and getTrace, which are dependant on either tracing or archiving, is undefined.