Skip to content
feyd27 edited this page Jun 23, 2019 · 2 revisions

Aggregator User Guide

The Aggregator is a Proof of capacity miner proxy for Linux/Unix/Windows. It has been conceived and developed by the Proof of Capacity Consortium and is released under GNU General Public License v3.0. This document describes the features available in Aggregator version 1.2.x.

A miner proxy is an application used to forward nonces from plot files mined on different machines to the configured pool or wallet (in case of solo mining). Note that in case the Aggregator is used, all miners have to be configured to submit nonces to the Aggregator, instead of submitting them to the pool or wallet.

Dual chain PoC mining is supported as of Aggregator version 1.2.0.


The Aggreagtor is distributed as an executable. The source code is also available for users who wish to compile it themselves.

The Aggregator executable can be downloaded from the PoCC GitHub repository:

After the file has been downloaded, users should unpack the archive, which contains the executable and the configuration file. In order for Aggregator to work, the executable and the configuration file have to be stored in the same directory.

The configuration file is given in YAML format, a human-readable data serialization language.

Aggregator Usage

The Aggregator is a command line interface application. In order to run the application, users should start the Command Prompt, navigate to the directory where the executable has been stored and run the application by typing:


The configuration file contains default settings that will produce the screen shown above.

The operation of the Aggregator to which an instance of Scavenger 1.7.8 is sending deadlines is shown in the image below:


The user should provide all Aggregator configuration parameters to the config.yaml file that comes with the executable and configure all their miners to submit deadlines to the Aggregator.

Aggregator Configuration

  • listenAddr: "" The address the proxy listens to i.e. the address the connected miner(s) should submit deadlines to.

  • scanTime: 20 The maximum allowed scan time for plots in seconds. The parameter serves to prevent collisions in case of dual chain mining, by stopping the scanning process after the expiry of the set time on the secondary chain, in case a block appears on the primary mined chain.

  • displayMiners: true/false If set to true, it will display miner information at the beginning of each round. If set to false no miner information will be displayed.

Primary And Secondary Chain Configuration

The configuration of the chains that are mined should be set up in accordance with the mining setup - single or dual chain. In case the user mines one blockchain, the set of parameters referring to the secondary chain can be omitted (commented out by preceding every line in the configuration with a # or deleted) from the configuration file.

  • primarySubmitURL:/secondarySubmitURL: "" The setting refers to the pool or wallet URL where the deadlines should be submitted to by the Aggregator. Note that both the protocol (http, https or wss) as well as the port number have to be provided.

  • primaryTargetDeadline:/secondaryTargetDeadline: 31536000 The target deadline in seconds.

  • primaryPassphrase:/secondaryPassphrase: "" The passphrase for solo mining. In case one is provided, it will overwrite the one set in the miner. In case the setting is left blank, the passphrase provided in the miner will be forwarded.

  • primaryIpForwarding:/secondaryIpForwarding: false/true sets the X-Forwarded-For header

  • primaryIgnoreWorseDeadlines:/secondaryIgnoreWorseDeadlines: true/false If set to true if a shorter deadline has already been found, the deadline will be ignored.

  • primaryAccountKey:/secondaryAccountKey: "" In case a mining pool requires an account key to be provided, provide the pertinent key between double quotes.

Additional Information

The additional information is not a mandatory section of the Aggregator configuration. It offers the setting of two parameters:

  • minerName: "Aggregator" An arbitrary string that will be sent to the mining pool.

  • minerAlias: "" An arbitrary string, which, if set is the miner alias.


The section is not mandatory for Aggregator operation. It offers just one configuration option:

  • fileLogging: false/true Enable logging by setting the option to true or disable it by setting it to false. If the option is set to true, Aggregator will create a log.txt file to store application logs. In case the logging is turned on, all application outputs shown in the CLI will be written to a text file.

Aggregator Protection

The section of the config.yaml file that offers the configuration of Aggregator protection is mandatory for the operation of the proxy application. The protection settings are important as a preventive actions against DDoS attacks.

  • minersPerIP: 100 Sets the number of miners that are allowed to communicate with a single IP address the Aggregator listens to.

  • rateLimit: 45 Defines the maximum requests per seconds the Aggregator will consider per IP.

  • burstRate: 10 Sets the size of the queued requests the Aggregator will consider.

  • lieDetector: false/true If set to true, it will ignore all requests from the miner for 15 minutes if a false deadline has been sent to the proxy.

The rate limit and the burst rate are settings in a common context. In case the rate limit is set to 10 - it implies that the Aggregator will consider 10 requests per IP address in a second. The setting of 10 implies that one request is received every 100ms (1000ms/10=100ms). In case the requests don't arrive in equal intervals (e.g. the second request arrives 30ms after the first request), the incoming requests are queued, and processed after the expiration of the uniform interval - in this example this would mean that the second, queued, request would be processed after the expiration of 100ms after the first request was received by the proxy.

Compiling The Aggregator

In order to compile Aggregator from the source code available as a .zip archive or as a a .tar.gz archive, it's required to have Go version 1.11 or higher installed on the system. To install Go and configure the environment, users should refer to the Go Programming Language website. To compile the application, use:

go build

The compiled binary is run as described above.

Clone this wiki locally
You can’t perform that action at this time.