Overview

RigoBlock allows the creation of decentralized token pools. Designed with applications in mind, the protocol allows for multiple applications for asset management to leverage on the same incentive mechanism.

It allows the on-chain organization of digital tokens, while at the same time allowing to leverage on (almost) any kind of external decentralized token swap mechanism.

Protocol

The protocol is designed in a modular way and its core consists of the factories, which automatize the process of creating a token pools, keeping track of all token pools created in a global registry.

Drago

Drago.sol allows for the pooled organization of multiple tokens for multiple parties by leveraging external decentralized exchanges. When a user creates a Drago he becomes the "wizard" of the drago, which is a smart contract encoded to operate according to a predetermined set of rules.

DragoEventful

DragoEventful.sol collects all logs on all dragos created. If you want to find all the events related to a specific drago or a set of dragos or all dragos, you can query the data from just 1 smart contract.

DragoRegistry

DragoRegistry.sol is a registry of all token pools created with the RigoBlock protocol. A user can query the registry to obtain the data of a specific token pool or a set of token pools.

Kyc

Kyc.sol is an interface which can be implemented by any developer in their desired way. If enforced, a token pool operator is able to prevent non-whitelisted wallets to use the token pool he operates.

Vault

Vault.sol allows for the pooled organization of multiple tokens for multiple parties. Vaults act as costodial services for ETH and ERC20 tokens. Vaults operate as containers of tokens and have limited functionalities respect to Dragos.

VaultEventful

VaultEventful.sol collects all logs on all vaults created. If you want to find all the events related to a specific vault or a set of vaults or all vaults, you can query the data from just 1 smart contract.

Authorities

Authority

Authority.sol allows operating and setting some of the core functionalities of the RigoBlock protocol by a set of pre-approved authorities. In its own design, the protocol already embeds a governance system.

ExchangesAuthority

ExchangesAuthority.sol allows controlling the functionalities of the RigoBlock protocol related to the external decentralized exchanges by a set of pre-approved authorities. This part of the governance has been written in a separate contract to allow for more easy segregation of functions relevant to external dependencies.

Drago Factory

DragoFactory

DragoFactory.sol is a smart contract which is used to create Dragos and automatically register them in Registry.sol.

DragoFactoryLibrary

DragoFactoryLibrary.sol is a helper library which is used by the DragoFactory.sol contract. It is included in the DragoFactory.sol bytecode, hence direct interaction is neither needed nor possible.

Vault Factory

VaultFactory

VaultFactory.sol is a smart contract which is used to create Vaults and automatically register them in Registry.sol.

VaultFactoryLibrary

VaultFactoryLibrary.sol is a helper library which is used by the VaultFactory.sol contract. It is included in the VaultFactory.sol bytecode, hence direct interaction is neither needed nor possible.

Extensions

NavVerifier.sol is a contract which checks whether the unitary value of a Drago is in line with the estimate of the protocol's authorities'.

SigVerifier

SigVerifier.sol is a contract which checks whether a message has been signed by its expected signer. It is a requirement of one of the methods of the 0x V2 protocol, where a Wizard can trade on a 0x-based relayer on behalf of a smart contract based on the condition the specific smart contract confirms the offchain token swap is signed by the intended user, in the case of a Drago, its Wizard.

Adapters

AERCdex

AERCdex.sol is an adapter contract which allows interaction with ERCDex

AEthfinex

AEthfinex.sol is an adapter contract which allows interaction with Ethfinex Trustless

AWeth

AWeth.sol is an adapter contract which allows interaction with Wrapped Ether

AZeroExV1Fork

AZeroExV1Fork.sol is an adapter contract which allows interaction with a fork of 0x V1 which allows Wizards to swap tokens for the Dragos

AZeroExV2

AZeroExV2.sol is an adapter contract which allows interaction with 0x V2

Examples

Distribution

Distribution is a PoC contract which can be used by external platforms to charge distribution fees

Faucet

Faucet is a faucet contract to distribute a token when requested

Network

Network is a helper contract which returns the aggregate value of the token pools created with the RigoBlock protocol

Helpers

HGetDragoData

HGetDragoData is a helper contract which returns aggregate data of single of multiple token pools at once.

HGetMultipleBalances

HGetMultipleBalances is a helper contracts which queries and returns balances of multiple tokens at once

HGetPools

HGetPools is a helper contract which returns arrays of data of the RigoBlock protocol token pools.

rigotoken

Inflation

Inflation.sol determines at what conditions new Rigo tokens can be minted

RigoToken

RigoToken.sol is an ERC20 mintable token

ProofOfPerformance

ProofOfPerformance.sol is accountable for keeping track of collect calculations of the Proof of Performance rewards

tokens

ERC20

ERC20.sol is an ERC20 token token smart contract

ERC20Old

ERC20Old.sol is a previous ERC20 standard token which does not return a boolean on transfers

UnlimitedAllowanceToken

UnlimitedAllowanceToken.sol executes a transfer only if the allowance is lower than the biggest number accepted by solidity

WETH9

WETH9.sol is the Ether wrapper contract

WrapperLock

WrapperLock.sol is the Ethfinex Trustless wrapper for ERC20 tokens token with lockup

WrapperLockEth

WrapperLockEth.sol is the Ethfinex Trustless wrapper Ether token with lockup

Utils

LibFindMethod

LibFindMethod.sol returns a method of an ABI-encoded transaction

LibSanitize

LibSanitize.sol is a library which can be used to sanitize a string. It prevents injecting non-intended characters as a name or symbol in the DragoRegistry.sol. It can be used to check if a character is uppercase or lowercase.

Owned

Owned.sol allows a contract to be controlled by a specific address

OwnedUninitialized

OwnedUninitialized.sol allows a contract to be controlled by a specific address without initializing the owner at deployment

PoolFace

PoolFace.sol is the generic interface common to all token pools of the RigoBlock protocol

ReentrancyGuard

ReentrancyGuard.sol is a contract which prevent reentrancy attacks

SafeMath

SafeMath.sol is a contract for performing mathematical calculations

SafeMathLight

SafeMathLight.sol is a simplified and shorter version of SafeMath.sol

Exchanges

TokenTransferProxy

TokenTransferProxy.sol is the 0x token transfer proxy contract

ExchangeEfx

ExchangeEfx.sol is the Ethfinex Trustless settlement contract

ExchangeV1Fork

ExchangeV1Fork.sol is the 0x V1 fork which allows operating from smart contracts owners.