Skip to content
This repository has been archived by the owner on Apr 21, 2024. It is now read-only.
/ dollar Public archive
forked from gemini/dollar

Gemini dollar contract source code

License

Notifications You must be signed in to change notification settings

myneTEC/dollar

 
 

Repository files navigation

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.

ERC20Proxy

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.

ERC20Impl

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

ERC20Store

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.

Custodianship

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).

CustodianUpgradeable

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.

Custodian

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.

Upgradeability

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

ERC20ImplUpgradeable

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.

PrintLimiter

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

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