Why use a token?

Just like taxi drivers who must hold medallions to do business in many parts of the world, users wishing to operate as sellers or shops must stake a minimum amount of DTH tokens for entry. This requirement helps Dether attract only real users willing to engage in authentic transactions on the marketplace and on the Dether map.

Unlike traditional marketplaces and protocols that take fees on transactions, a token also has its benefits, especially when building a decentralized network that grows organically.

Among the multiple reasons, the two most important are:


By allowing any party to easily register and operate on the Dether network, it would be reasonable to expect significant counts of low-quality or fraudulent listings. To prevent this, a staking mechanism requires that participants have “skin in the game” by locking in a minimum amount of DTH prior to transacting.


Network attackers may raise capital and attempt a network takeover by staking large amounts to create many fraudulent accounts, increasing network congestion and undermining the overall legitimacy of the network. With the DTH token, any attempts to aggressively purchase en masse will be met with sharp price increases, which would make the attack far more expensive and likely unprofitable.

The DTH token

The DTH token is an ERC20/ERC223 token. To interact with the Dether protocol, most of the functions go through the transfer() function of ERC223, in which you add data to the bytes field, which allows the Dether smart contract to parse the bytes field and execute the function. This model helps achieve high token interaction in Dether's smart contracts in only one transaction.

Example: open an auction on a zone

To open an auction on a zone, you need to send enough DTH to the zone contract you want to own, with the right information in params:

This function from the ERC223 standards will be used, with the right information in the _data field.

function transfer(address _to, uint _value, bytes memory _data) public returns (bool);

On the Zone.sol contract, when receiving DTH token the tokenFallback() function will be triggered, and the first character of the _data field will be checked to know what the contract should do.

/// @notice ERC223 receiving function called by Dth contract
/// @param _from Who send DTH to this contract
/// @param _value How much DTH was sent to this contract
/// @param _data Additional bytes data sent
function tokenFallback(address _from, uint _value, bytes memory _data)
// onlyWhenZoneEnabled
require(inited == true, "contract not yet initialized");
require(msg.sender == address(dth), "can only be called by dth contract");
// require caller neither zone owner, neither active bidder
bytes1 func = toBytes1(_data, 0);
// require(func == bytes1(0x40) || func == bytes1(0x41) || func == bytes1(0x42) || func == bytes1(0x43), "did not match Zone function");
if (func == bytes1(0x41)) { // claimFreeZone
_claimFreeZone(_from, _value);
} else if (func == bytes1(0x42)) { // bid
_bid(_from, _value);
} else if (func == bytes1(0x43)) { // topUp
_topUp(_from, _value);

All the work to construct the transaction is abstracted in detherJS library.

Economic incentives

Owning a zone

By owning a zone, you:

  • are the only teller able to operate on that area
  • set the staking price for shops willing to advertise their offer on your zone
  • have the possibility to take daily fees on shops' advertising located on your zone

Taxes system

Every 24 hours, zone owners pay a tax of 0.04% of their own staked DTH. To open an auction on a zone, a bidder needs to pay 4% of what is already staked in DTH on the zone in order to be able to participate in the auction.

These fees go to the TaxCollector.sol contract.
Fees will either be burnt, or be allocating into a developer fund. More details concerning this will be forthcoming.

Referral system

As a Dapp (developer), you can refer someone to join the network. As a reward, you can get a part of the taxes they’ve paid in DTH tokens.