/zora-contracts

A token factory that enables any person or community to tokenize any good or endeavour.

Primary LanguageJavaScriptMIT LicenseMIT

Zora: Enabling human progress

Zora

Bring your ideas to life.

Website: ourzora.com Instagram: @our.zora Twitter: @ourZORA

The token

The token contract that enables creators to tokenize any good, artwork, time or endeavour, with a maximum cap that can be in circulation at any given moment.

The token is able to be minted and burned by an approved minter. The cap is immutable and cannot be changed at any point past instantiation.

The tokens follow the Uniswap permit() function signature, enabling developers to pay gas for user transactions.

Contract

The TokenFactory contract is deployed at:

The token can be found in contracts/Token.sol and has the following interface:

interface IToken {
    // ERC20
    function totalSupply() external view returns (uint256);
    function balanceOf(address account) external view returns (uint256);
    function transfer(address recipient, uint256 amount) external returns (bool);
    function allowance(address owner, address spender) external view returns (uint256);
    function approve(address spender, uint256 amount) external returns (bool);
    function transferFrom(address sender, address recipient, uint256 amount) external returns (bool);
    event Transfer(address indexed from, address indexed to, uint256 value);
    event Approval(address indexed owner, address indexed spender, uint256 value);

    // Mint & Burn
    function mint(address account, uint256 amount) external returns (bool);
    function burn(uint256 amount) external;
    function burnFrom(address account, uint256 amount) external;

    // Pause
    function pause() external;
    function unpause() external;

    // Redeem
    function redeem(uint256 amount, bytes32 messageHash) external;
    event TokenRedeemed(address redeemer, uint256 amount, bytes32 messageHash);

    // Permit (signature approvals)
    function permit(address owner, address spender, uint256 value, uint256 deadline, uint8 v, bytes32 r, bytes32 s) external;
}

Deployment

make deploy/mainnet PRIVATE_KEY=xyz

make deploy/ropsten PRIVATE_KEY=xyz

make deploy/rinkeby PRIVATE_KEY=xyz

Misc

make flatten | pbcopy

License & Acknowledgements

MIT License.

Built by @kern over two cups of tea.