diff options
Diffstat (limited to 'packages/contracts/src/1.0.0/TokenRegistry/TokenRegistry.sol')
-rw-r--r-- | packages/contracts/src/1.0.0/TokenRegistry/TokenRegistry.sol | 308 |
1 files changed, 0 insertions, 308 deletions
diff --git a/packages/contracts/src/1.0.0/TokenRegistry/TokenRegistry.sol b/packages/contracts/src/1.0.0/TokenRegistry/TokenRegistry.sol deleted file mode 100644 index 7417a10a3..000000000 --- a/packages/contracts/src/1.0.0/TokenRegistry/TokenRegistry.sol +++ /dev/null @@ -1,308 +0,0 @@ -/* - - Copyright 2018 ZeroEx Intl. - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. - -*/ - -pragma solidity ^0.4.11; - -import { Ownable_v1 as Ownable } from "../Ownable/Ownable_v1.sol"; - -/// @title Token Registry - Stores metadata associated with ERC20 tokens. See ERC22 https://github.com/ethereum/EIPs/issues/22 -/// @author Amir Bandeali - <amir@0xProject.com>, Will Warren - <will@0xProject.com> -contract TokenRegistry is Ownable { - - event LogAddToken( - address indexed token, - string name, - string symbol, - uint8 decimals, - bytes ipfsHash, - bytes swarmHash - ); - - event LogRemoveToken( - address indexed token, - string name, - string symbol, - uint8 decimals, - bytes ipfsHash, - bytes swarmHash - ); - - event LogTokenNameChange(address indexed token, string oldName, string newName); - event LogTokenSymbolChange(address indexed token, string oldSymbol, string newSymbol); - event LogTokenIpfsHashChange(address indexed token, bytes oldIpfsHash, bytes newIpfsHash); - event LogTokenSwarmHashChange(address indexed token, bytes oldSwarmHash, bytes newSwarmHash); - - mapping (address => TokenMetadata) public tokens; - mapping (string => address) tokenBySymbol; - mapping (string => address) tokenByName; - - address[] public tokenAddresses; - - struct TokenMetadata { - address token; - string name; - string symbol; - uint8 decimals; - bytes ipfsHash; - bytes swarmHash; - } - - modifier tokenExists(address _token) { - require(tokens[_token].token != address(0)); - _; - } - - modifier tokenDoesNotExist(address _token) { - require(tokens[_token].token == address(0)); - _; - } - - modifier nameDoesNotExist(string _name) { - require(tokenByName[_name] == address(0)); - _; - } - - modifier symbolDoesNotExist(string _symbol) { - require(tokenBySymbol[_symbol] == address(0)); - _; - } - - modifier addressNotNull(address _address) { - require(_address != address(0)); - _; - } - - - /// @dev Allows owner to add a new token to the registry. - /// @param _token Address of new token. - /// @param _name Name of new token. - /// @param _symbol Symbol for new token. - /// @param _decimals Number of decimals, divisibility of new token. - /// @param _ipfsHash IPFS hash of token icon. - /// @param _swarmHash Swarm hash of token icon. - function addToken( - address _token, - string _name, - string _symbol, - uint8 _decimals, - bytes _ipfsHash, - bytes _swarmHash) - public - onlyOwner - tokenDoesNotExist(_token) - addressNotNull(_token) - symbolDoesNotExist(_symbol) - nameDoesNotExist(_name) - { - tokens[_token] = TokenMetadata({ - token: _token, - name: _name, - symbol: _symbol, - decimals: _decimals, - ipfsHash: _ipfsHash, - swarmHash: _swarmHash - }); - tokenAddresses.push(_token); - tokenBySymbol[_symbol] = _token; - tokenByName[_name] = _token; - LogAddToken( - _token, - _name, - _symbol, - _decimals, - _ipfsHash, - _swarmHash - ); - } - - /// @dev Allows owner to remove an existing token from the registry. - /// @param _token Address of existing token. - function removeToken(address _token, uint _index) - public - onlyOwner - tokenExists(_token) - { - require(tokenAddresses[_index] == _token); - - tokenAddresses[_index] = tokenAddresses[tokenAddresses.length - 1]; - tokenAddresses.length -= 1; - - TokenMetadata storage token = tokens[_token]; - LogRemoveToken( - token.token, - token.name, - token.symbol, - token.decimals, - token.ipfsHash, - token.swarmHash - ); - delete tokenBySymbol[token.symbol]; - delete tokenByName[token.name]; - delete tokens[_token]; - } - - /// @dev Allows owner to modify an existing token's name. - /// @param _token Address of existing token. - /// @param _name New name. - function setTokenName(address _token, string _name) - public - onlyOwner - tokenExists(_token) - nameDoesNotExist(_name) - { - TokenMetadata storage token = tokens[_token]; - LogTokenNameChange(_token, token.name, _name); - delete tokenByName[token.name]; - tokenByName[_name] = _token; - token.name = _name; - } - - /// @dev Allows owner to modify an existing token's symbol. - /// @param _token Address of existing token. - /// @param _symbol New symbol. - function setTokenSymbol(address _token, string _symbol) - public - onlyOwner - tokenExists(_token) - symbolDoesNotExist(_symbol) - { - TokenMetadata storage token = tokens[_token]; - LogTokenSymbolChange(_token, token.symbol, _symbol); - delete tokenBySymbol[token.symbol]; - tokenBySymbol[_symbol] = _token; - token.symbol = _symbol; - } - - /// @dev Allows owner to modify an existing token's IPFS hash. - /// @param _token Address of existing token. - /// @param _ipfsHash New IPFS hash. - function setTokenIpfsHash(address _token, bytes _ipfsHash) - public - onlyOwner - tokenExists(_token) - { - TokenMetadata storage token = tokens[_token]; - LogTokenIpfsHashChange(_token, token.ipfsHash, _ipfsHash); - token.ipfsHash = _ipfsHash; - } - - /// @dev Allows owner to modify an existing token's Swarm hash. - /// @param _token Address of existing token. - /// @param _swarmHash New Swarm hash. - function setTokenSwarmHash(address _token, bytes _swarmHash) - public - onlyOwner - tokenExists(_token) - { - TokenMetadata storage token = tokens[_token]; - LogTokenSwarmHashChange(_token, token.swarmHash, _swarmHash); - token.swarmHash = _swarmHash; - } - - /* - * Web3 call functions - */ - - /// @dev Provides a registered token's address when given the token symbol. - /// @param _symbol Symbol of registered token. - /// @return Token's address. - function getTokenAddressBySymbol(string _symbol) constant returns (address) { - return tokenBySymbol[_symbol]; - } - - /// @dev Provides a registered token's address when given the token name. - /// @param _name Name of registered token. - /// @return Token's address. - function getTokenAddressByName(string _name) constant returns (address) { - return tokenByName[_name]; - } - - /// @dev Provides a registered token's metadata, looked up by address. - /// @param _token Address of registered token. - /// @return Token metadata. - function getTokenMetaData(address _token) - public - constant - returns ( - address, //tokenAddress - string, //name - string, //symbol - uint8, //decimals - bytes, //ipfsHash - bytes //swarmHash - ) - { - TokenMetadata memory token = tokens[_token]; - return ( - token.token, - token.name, - token.symbol, - token.decimals, - token.ipfsHash, - token.swarmHash - ); - } - - /// @dev Provides a registered token's metadata, looked up by name. - /// @param _name Name of registered token. - /// @return Token metadata. - function getTokenByName(string _name) - public - constant - returns ( - address, //tokenAddress - string, //name - string, //symbol - uint8, //decimals - bytes, //ipfsHash - bytes //swarmHash - ) - { - address _token = tokenByName[_name]; - return getTokenMetaData(_token); - } - - /// @dev Provides a registered token's metadata, looked up by symbol. - /// @param _symbol Symbol of registered token. - /// @return Token metadata. - function getTokenBySymbol(string _symbol) - public - constant - returns ( - address, //tokenAddress - string, //name - string, //symbol - uint8, //decimals - bytes, //ipfsHash - bytes //swarmHash - ) - { - address _token = tokenBySymbol[_symbol]; - return getTokenMetaData(_token); - } - - /// @dev Returns an array containing all token addresses. - /// @return Array of token addresses. - function getTokenAddresses() - public - constant - returns (address[]) - { - return tokenAddresses; - } -} |