Skip to content
This repository has been archived by the owner on Sep 21, 2022. It is now read-only.

Commit

Permalink
Arrange the docs by filename and merge few files together (#305)
Browse files Browse the repository at this point in the history
  • Loading branch information
hhio618 committed Dec 2, 2020
1 parent d115c7c commit 3e2af55
Show file tree
Hide file tree
Showing 10 changed files with 212 additions and 223 deletions.
23 changes: 22 additions & 1 deletion docs/the-guide.md → docs/00_setup-and-usage.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,22 @@
description: Here are the nuts and bolts for mining TRB.
---

# The Guide
# Setup and usage

## Become a Miner

For over a decade now, the Bitcoin network has shown how proof-of-work can incentivize individuals and companies to compete for the honor of finding block rewards and achieving consensus. This phenomenon is global, and anonymous. The network is democratized and decentralized, because the creators have no direct control over who is providing computing power on their network.

Tellor takes this concept and applies it directly to the delivery of oracle data. Anyone who is able may start up telliot and begin competing for blocks. There is no whitelisting. Miners compete very much the same way that Bitcoin miners do, but with a twist. _Tellor Miners must also run a database from which to pull values to submit to the Tellor oracle._ When a "block" is found, the winners submit their data.

Mining is one of the most exciting ways to help Tellor grow and become a leader in the DeFi / Oracle space. Here are a few things to consider before jumping in:

As of now, mining requires you deposit 500 Tellor Tributes. These are a security deposit. If you are a malicious actor \(aka submit a bad value\), the community can vote to slash your 500 tokens.

* Mining requires access to an Ethereum node. If you don’t have your own node, you can use an Infura API endpoint.
* Miners must hold a balance of ETH to cover gas fees, which can be significant. Please reach out to the community to find the best tips for keeping gas costs under control.

The guide that follows assumes that you have access to a suitable machine running linux to use for mining. For information about what constitutes a "suitable machine", we recommend reaching out to the community.

## Download the Latest telliot

Expand Down Expand Up @@ -143,3 +158,9 @@ Where 5 and .01 are the defaults, the variables are the amount of time in minute

If the disputer is successful and finds a submitted outside of your acceptable range, a text file containing pertinent information will be created in your working directory \(the one you're running the miner out of\) in the format: `"possible-dispute-(blocktime).txt"`

# Disclaimer

If you are building a competing client, please contact us. A lot of the miner specifications are off-chain and a significant portion of the mining process hinges on the consensus of the Tellor community to determine what proper values are. Competing clients that change different pieces run the risk of being disputed by the community.

As an example, request ID 4 is BTC/USD. If the api's all go down, it is the responsibility of the miner to still submit a valid BTC/USD price. If they do not, they risk being disputed and slashed. For these reasons, please contribute openly to the official Tellor miner \(or an open source variant\), as consensus here is key. If your miner gets a different value than the majority of the other miners, you risk being punished!

178 changes: 178 additions & 0 deletions docs/01_configuation.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,178 @@
---
description: Telliot tweaks and settings to keep your rig running smoothly.
---
# Telliot configuration
## Cli reference
Telliot commands and config file options are as the following:
#### Required Flags <a id="docs-internal-guid-d1a57725-7fff-a753-9236-759dd3f42eed"></a>

* `--config` \(path to your config file.\)

#### Telliot Commands

* `--logConfig` \(location of logging config file; default path is current directory\)
* `mine` \(indicates to run the miner\)
* `mine -r` \(indicates to mine utilizing a remote server\)
* `dataserver` \(indicates to run the dataServer \(no mining\)\)
* `transfer` \(AMOUNT\) \(TOADDRESS\) \(indicates transfer, toAddress is Ethereum address and amount is number of Tributes \(eg. transfer 10 0xea... \(this transfers 10 tokens\)\)\)
* `approve` \(AMOUNT\) \(TOADDRESS\) \(ammount to approve the toaddress to send this amount of tokens
* `stake deposit` \(indicates to deposit 1000 tokens in the contract\)
* `stake request` \(indicates you wish to withdraw your stake\)
* `stake withdraw` \(withdraws your stake, run 1 week after request\)
* `stake status` \(shows your staking balance\)
* `balance` \(shows your balance\)

#### Config file options:

* `contractAddress` \(required\) - address of TellorContract
* `nodeURL` \(required\) - node URL \(e.g https://mainnet.infura.io/bbbb or https://localhost:8545 if own node\)
* `privateKey` \(required\) - privateKey for your address
* `databaseURL` \(required\) - where you are reading from for the server database \(if hosted\)
* `publicAddress` \(required\) - public address for your miner \(note, no 0x\)
* `ethClientTimeout` \(required\) - timeout for making requests from your node
* `trackerCycle` \(required\) - how often your database updates \(in seconds\)
* `trackers` \(required\) - which pieces of the database you update
* `dbFile` \(required\) - where you want to store your local database \(if self-hosting\)
* `serverHost` \(required\) - location to host server
* `serverWhitelist` \(required\) - whitelists which publicAddress can access the data server
* `fetchTimeout` - timeout for requesting data from an API
* `requestData` - sets wether your miner request data if challenge is 0. If yes, then you will addTip\(\) to this number. Enter a uint number representing request id to be requested \(e.g. 2\)
* `requestDataInterval` - min frequency at which to request data at \(in seconds, default 30\)
* `gasMultiplier` - Multiplies the submitted gasPrice \(e.g. 2 will double gas costs\)
* `gasMax` - a max for the gas price in gwei \(note: this max comes BEFORE the gas multiplier. So a max gas cost of 10 gwei, can have gas prices up to 20 if gasMultiplier is 2\)
* `heartbeat` - an integer that controls how frequently the miner process should report the hashrate \(larger is less frequent, try 1000000 to start\)
* `numProcessors` - an integer number of CPU cores/threads to use for mining. \(cpu mining is disabled if there is a suitable GPU is found
* `disputeTimeDelta` - how far back to store values for min/max range - default 5 \(in minutes\)
* `disputeThreshold` - percentage of acceptable range outside min/max for dispute checking - default
* `psrFolder` - folder location holding your psr.json file, default working directory

## Configuation

### useGPU

If you have one or more GPUs, they will be used for mining by default. Currently only Nvidia cards are supported, and the default behavior will work well for miners.

You can configure your GPUs as you wish by adding / editing the following lines in your config.json file:

```text
"useGPU":true,
"gpuConfig":{
"default":{
"groupSize":256,
"groups":4096,
"count":16
}
},
```

If you have multiple GPUs connected, you can specify different config settings for each card in the following format:

```text
"gpuConfig":{
"<GPUName1>":{
"groupSize":256,
"groups":4096,
"count":16
},
"<GPUName2>":{
"groupSize":256,
"groups":4096,
"count":16
},
"<GPUName3>":{
"disabled":true
},
}
```

Replace "GPUName1" with system name for each card. On most systems you can get a list of GPUs with `nvidia-smi -l`

You may edit the variables to try to improve hashrate for your GPU model:

* disabled: boolean on whether or not to disable a specific GPU
* groupSize - number of groups to split work into
* groups - number of groups of work submitted to the gpu at once
* count: number of hashes each thread executes in one pass

{% hint style="info" %}
Edit these variables at your own risk! Reach out to the community if you're unsure.
{% endhint %}

### Connecting to a Pool

There are mining pools available for mining TRB without staking 500 tokens. The pool server operator stakes 500 tokens for you, and you receive rewards roughly proportional to your hashrate as a fraction of the pool's hashrate.

{% hint style="info" %}
Each pool as different fees and instructions for hooking up. Be sure to read your pools documentation. Feel free to reach out to the community if you need help with mining pools.
{% endhint %}

Add the following lines to your config file:

```text
"enablePoolWorker": true,
"poolURL": "<poolURL>",
```

Where the poolURL is the link to your pool. \(e.g. [http://tellorpool.org](http://tellorpool.org) \)

You can change the job duration if needed. This is the time in seconds to grab information from the pool. The default time is 15 seconds.

```text
"poolJobDuration":10
```

### Running a Remote Data Server for Multiple Miners

{% hint style="info" %}
If you are setting up a Tellor miner for the first time, it might be a good idea to skip this section and come back after you're up and running with one miner.
{% endhint %}

If you are running multiple miners, there is no reason to run multiple databases \(the values you will submit should be identical\). In addition, querying the same API from multiple processes can lead to rate limits on the public API's. To get around this, you can utilize a system where you run one.

`tellor dataServer`

You can then start multiple miners that all read off the one database.

`tellor mine -r`

Create a config file for the dataServer and add the public addresses of all remote miners that want to read the database: \(0x prefix is retained here\)

```text
“serverWhitelist”: [
"0xyour-miner-address1",
"0xyour-miner-address2"
]
```

Create a separate copy of config.json for each miner and edit these to match your miner's characteristics.

In both your miner and dataServer config files, you must change the IP addresses to match the server and port you are hosting/reading from.

```text
"serverHost": "1.2.3.4",
"serverPort": 5000,
```

Note that your dataServer and miners must be started with separate commands.

For more detailed instructions:[ https://docs.google.com/document/d/1k8ELb1cXkEpztHkHUt8QTL4JCcnHw5\_yQjTKIHCaSCE](https://docs.google.com/document/d/1k8ELb1cXkEpztHkHUt8QTL4JCcnHw5_yQjTKIHCaSCE)


### LogConfig file options

The logging.config file consists of two fields: \* component \* level

The component is the package.component combination.

E.G. the Runner component in the tracker package would be: tracker.Runner

To turn on logging, add the component and the according level. Note the default level is "INFO", so to turn down the number of logs, enter "WARN" or "ERROR"

DEBUG - logs everything in INFO and additional developer logs

INFO - logs most information about the mining operation

WARN - logs all warnings and errors

ERROR - logs only serious errors
2 changes: 1 addition & 1 deletion docs/contributing.md → docs/03_contributing.md
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,7 @@ method before making a change.
The following section explains various suggestions and procedures to note during development.

### First Steps
* Familiarizing yourself with our [coding style guidelines.](coding-style-guide.md).
* Familiarizing yourself with our [coding style guidelines.](04_coding-style-guide.md).
* Familiarizing yourself with the [Makefile](../Makefile) commands, for example, `build`, `format`, `test`, `lint`.
`make help` will print all available commands with some description.

Expand Down
File renamed without changes.
File renamed without changes.
19 changes: 11 additions & 8 deletions docs/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -36,11 +36,11 @@ A list of all PSR's(pre specified requests) and the expected data can be found [


## Instructions for deployment
- [Telliot Instructions](the-guide.md)
- [Telliot Instructions](docs/00_setup-and-usage.md)

## Contributing and building from source
Contributions are very welcome!<br/>
See our [contributing.md](contributing.md) for more information.
See our [04_contributing.md](03_contributing.md) for more information.

## Run with Docker
Available tags: https://hub.docker.com/u/tellor
Expand All @@ -50,18 +50,21 @@ docker run -v $(pwd)/.local:/configs tellor/telliot:master mine
This repository is maintained by the [Tellor team](https://github.com/orgs/tellor-io/people)

### DISCLAIMER
Mine at your own risk.

Mining requires you deposit 1000 Tellor Tributes. These are a security deposity. If you are a malicious actor (aka submit a bad value), the community can vote to slash your 1000 tokens.
-------

Mining also requires submitting on-chain transactions on Ethereum. These transactions cost gas (ETH) and can sometimes be signifiant if the cost of gas on EThereum is high (i.e. the network is clogged). Please reach out to the community to find the best tips for keeping gas costs under control or at least being aware of the costs.
Mine at your own risk.

If you are building a competing client, please contact us. The miner specifications are off-chain and the validity of the mining process hinges on the consensus of the Tellor community to determine what proper values are. Competing clients that change different pieces run the risk of being disputed by the commmunity.
Mining requires you deposit 1000 Tellor Tributes. These are a security deposity. If you are a malicious actor (aka submit a bad value), the community can vote to slash your 1000 tokens.

There is no guaruntee of profit from mining.
Mining also requires submitting on-chain transactions on Ethereum. These transactions cost gas (ETH) and can sometimes be signifiant if the cost of gas on EThereum is high (i.e. the network is clogged). Please reach out to the community to find the best tips for keeping gas costs under control or at least being aware of the costs.

There is no promise that Tellor Tributes currently hold or will ever hold any value.
If you are building a competing client, please contact us. The miner specifications are off-chain and the validity of the mining process hinges on the consensus of the Tellor community to determine what proper values are. Competing clients that change different pieces run the risk of being disputed by the commmunity.

There is no guaruntee of profit from mining.

There is no promise that Tellor Tributes currently hold or will ever hold any value.

----------
### Copyright
Tellor Inc. 2019
116 changes: 0 additions & 116 deletions docs/configuation.md

This file was deleted.

10 changes: 0 additions & 10 deletions docs/disclaimer.md

This file was deleted.

Loading

0 comments on commit 3e2af55

Please sign in to comment.