Getting started with Truebit on Ethereum

Truebit Protocol
Truebit
Published in
4 min readApr 14, 2021
Token flows in the Truebit network

The Truebit microeconomy facilitates verifiable computations. This introductory article describes how Task Givers, Solvers, and Verifiers, can participate in the network.

Usage

Smart contracts can treat Truebit as a black box which takes in a function f with inputs x,y,z, … and returns f(x,y,z, …). The function f can be written in standard languages (C, C++, or Rust) using standard libraries without concern for Ethereum’s block gas limit. Truebit can read functions and data from Ethereum bytes, smart contract program code, or IPFS.

Users can perform all network interactions through the Truebit OS client, including obtaining, depositing, and disposing of Truebit TRU tokens. See the QuickStart guide for step-by-step operations, and familiarize yourself with Truebit OS on the Görli testnet before moving to Ethereum mainnet. We now break this discussion into user profile threads.

Task Givers

Task Givers issue computational tasks to the Truebit network. A Task Giver consists of two parts: a Task Owner and Task Submitter. The Task Owner provides a function f to be computed, some economic and virtual machine parameters (see below), and typically has a smart contract address. The Task Submitter provides applicable input(s) x, pays the TRU token expenses described below, and is a standard, human-operated address. The Task Owner can either deploy a smart contract through which the Task Submitter interacts, or she can submit tasks directly through Truebit OS. In the latter case, the Task Owner and the Task Submitter share an address.

The Task Giver must specify a blockLimit, the maximum number of blocks that a Solver or Verifier may spend executing the task before timing out. It is recommended to run the task locally, offline using Truebit OS’s task final command in order to determine an appropriate blockLimit value. The Task Giver should add some cushion (e.g., 30%) to allow for potential variance in hardware and instance run times.

The Task Owner must also specify the following economic parameters when issuing a task.

solverReward

solverReward is the amount of TRU that the Solver receives from the Task Submitter for correctly executing the task. At a minimum, the chosen solverReward value should cover the Solver’s operational costs.

verifierTax

verifierTax, also paid by the Task Submitter, is the total TRU split among Verifiers for executing the task. A higher verifierTax may attract a larger number of Verifiers.

minDeposit

minDeposit is the amount of TRU that each Solver or Verifier must bond in order to participate in the task. minDeposit should be roughly twice the operational cost of playing a verification game.

ownerFee

ownerFee is the amount of TRU that the Task Owner collects from the Task Submitter upon task issuance.

Solvers

Solvers perform tasks in exchange for TRU rewards. Solvers will run continuously in Truebit OS until stopped, and they will bid to solve each task issued on the network unless initialized with a filter. A filter imposes a minimum TRU reward and/or ratio of reward to blockLimit for participation. Each task has a single Solver, and the Task Submitter always has first right-of-refusal to solve his own task. If the Task Submitter does not elect to solve her own task, then a Solver is selected randomly from among those who register to participate. The client throttle parameter sets the maximum number of tasks that a Solver will process simultaneously.

Verifiers

Verifiers also execute tasks, and Verifiers’ solutions must match Solvers’ solutions in order to avoid dispute resolution. There is no limit to the number of Verifiers for each task, and the verifierTax is split equally among them. Verifiers initialized in Truebit OS will run continuously until stopped. As with Solvers, Verifiers can set filters which impose minimum TRU reward and/or ratio of reward to blockLimit for participation. The client throttle parameter sets the maximum number of tasks that a Verifier will process simultaneously.

Economics overview

Truebit’s microeconomy features a single token, called TRU, which Task Submitters use to remunerate Solvers and Verifiers. Upon receiving such payments, Solvers and Verifiers can then issue their own tasks. We now dive into macroeconomic details.

Token supply

TRU tokens are created and destroyed over time according to cumulative demand. Users can purchase or retire TRU tokens in exchange for ETH. Each purchase transaction deposits some ETH into a reserve escrow (the rest goes to the Company), and some ETH is withdrawn from the reserve through each retire transaction. Each Truebit task also burns TRU tokens. Check the task fees command in Truebit OS for the current burn rate and token price for current purchase and retire prices. Note that purchase transactions may result in price slippage, however retire transactions will not. The token contract address on Ethereum mainnet is 0xf65B5C5104c4faFD4b709d9D60a185eAE063276c.

Subsidies

For a limited time, Truebit’s incentive layer will automatically subsidize each task with extra TRU payments to its Task Owner, Solver, and Verifier(s). Run the bonus command in Truebit OS to check current subsidy amounts.

ETH Fees

In addition to the TRU costs described in the Task Giver section above, Users will incur some fees in ether (ETH). Each interaction with the Ethereum blockchain invokes gas fees paid to miners. Truebit (the Company) also collects a small ETH platform fee from Solvers and Task Submitters for each task. Verifiers do not pay platform fees. Each Solver address must also purchase a one-time license fee (paid to the Company) in order to participate in the network. Please check task fees and license price in Truebit OS for current pricing.

Glossary

IPFS

IPFS is a distributed system for storing and accessing files, websites, applications, and data. https://docs.ipfs.io/concepts/what-is-ipfs/

Gas fees

Gas refers to the fee required to successfully conduct a transaction on Ethereum. https://ethereum.org/en/developers/docs/gas/

--

--