Gemini dollar contract source code
Branch: master
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Type Name Latest commit message Commit time
Failed to load latest commit information.
.gitattributes Gemini dollar Sep 5, 2018
COPYRIGHT.txt Gemini dollar Sep 5, 2018
CustodianUpgradeable.sol Gemini dollar Sep 5, 2018
ERC20Impl.sol Gemini dollar Sep 5, 2018
ERC20ImplUpgradeable.sol Gemini dollar Sep 5, 2018
ERC20Interface.sol Gemini dollar Sep 5, 2018
ERC20Proxy.sol Gemini dollar Sep 5, 2018
ERC20Store.sol Gemini dollar Sep 5, 2018
LockRequestable.sol Gemini dollar Sep 5, 2018
PrintLimiter.sol Gemini dollar Sep 5, 2018

Gemini dollar

The Gemini dollar is an ERC20 compliant token backed by the U.S. dollar.

Contract Separation

The Gemini dollar token is not a single smart contract; instead, it is separated into three cooperating contracts.


This contract exposes the functions required by the ERC20 standard, and is the only contract with which a user will need to interact with. It is the permanent interface to the Gemini dollar.


This contract encapsulates all the logic of the Gemini dollar token. ERC20Proxy delegates all execution of ERC20 functions to its trusted instance ERC20Impl.


This contract owns the storage of the Gemini dollar ledger. Calls to the update functions on ERC20Store are limited to its trusted instance of ERC20Impl.


Each smart contract in the Gemini dollar system looks to a custodian for approval of important actions. This custodian may be another smart contract or a keyset (online or offline).


This contract provides re-usable code for custodianship and provision for passing the custodian role. All of ERC20Proxy, ERC20Impl, and ERC20Store inherit from this contract. This contract itself inherits from LockRequestable, which provides a cooperatively universally unique identifier generation scheme.


This contract provides general-purpose custodianship designed to be backed by an offline keyset. Approval requires dual control; time lock and revocation features are also provided.


The logical separation between the exposed ERC20 interface (ERC20Proxy), contract state (ERC20Store), and token logic (ERC20Impl) allows for upgradeability.


This contract provides re-usable code for replacing the active token logic: the active instance of ERC20Impl. It itself inherits from CustodianUpgradeable as the upgrade process is controlled by the custodian. Both ERC20Proxy and ERC20Store inherit from this contract.

Control of the Token Supply

Management of the token supply demands the security of an offline approval mechanism yet the flexibility of an online approval mechanism.


This contract provides custodianship of ERC20Impl to govern increases to supply of Gemini dollar tokens, with an offline approval mechanism granting limited privileges to an online approval mechanism.


Copyright (c) 2018 Gemini Trust Company LLC. All Rights Reserved