mirror of
git://holbrook.no/eth-token-index
synced 2024-12-04 21:56:10 +01:00
Change identifiers to literal instead of hashes
This commit is contained in:
parent
3fc9d4ed58
commit
8b07a9f3dc
@ -1,3 +1,7 @@
|
|||||||
|
- 0.6.0
|
||||||
|
* Use literal keys instead of hashes in registry
|
||||||
|
- 0.5.0
|
||||||
|
* Update python classifiers
|
||||||
- 0.4.3
|
- 0.4.3
|
||||||
* Upgrade deps
|
* Upgrade deps
|
||||||
- 0.4.2
|
- 0.4.2
|
||||||
|
File diff suppressed because one or more lines are too long
@ -1 +1 @@
|
|||||||
[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"addedAccount","type":"address"},{"indexed":true,"internalType":"uint256","name":"accountIndex","type":"uint256"}],"name":"AddressAdded","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"inputs":[],"name":"acceptOwnership","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_token","type":"address"}],"name":"add","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_writer","type":"address"}],"name":"addWriter","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"_key","type":"bytes32"}],"name":"addressOf","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_writer","type":"address"}],"name":"deleteWriter","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_idx","type":"uint256"}],"name":"entry","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"entryCount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_token","type":"address"}],"name":"register","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"name":"registry","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes4","name":"_sum","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"_newOwner","type":"address"}],"name":"transferOwnership","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"}]
|
[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"_token","type":"address"}],"name":"AddressAdded","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"_symbol","type":"bytes32"},{"indexed":false,"internalType":"address","name":"_token","type":"address"}],"name":"AddressKey","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"_token","type":"address"}],"name":"AddressRemoved","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"_writer","type":"address"}],"name":"WriterAdded","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"_writer","type":"address"}],"name":"WriterDeleted","type":"event"},{"inputs":[{"internalType":"address","name":"_token","type":"address"}],"name":"activate","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"_token","type":"address"}],"name":"add","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_writer","type":"address"}],"name":"addWriter","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"_key","type":"bytes32"}],"name":"addressOf","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_token","type":"address"}],"name":"deactivate","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"_writer","type":"address"}],"name":"deleteWriter","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_idx","type":"uint256"}],"name":"entry","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"entryCount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_token","type":"address"}],"name":"register","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_token","type":"address"}],"name":"remove","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"_sum","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"_newOwner","type":"address"}],"name":"transferOwnership","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"}]
|
||||||
|
@ -1 +1 @@
|
|||||||
{"compiler":{"version":"0.8.18+commit.87f61d96"},"language":"Solidity","output":{"abi":[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"addedAccount","type":"address"},{"indexed":true,"internalType":"uint256","name":"accountIndex","type":"uint256"}],"name":"AddressAdded","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"inputs":[],"name":"acceptOwnership","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_token","type":"address"}],"name":"add","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_writer","type":"address"}],"name":"addWriter","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"_key","type":"bytes32"}],"name":"addressOf","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_writer","type":"address"}],"name":"deleteWriter","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_idx","type":"uint256"}],"name":"entry","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"entryCount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_token","type":"address"}],"name":"register","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"name":"registry","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes4","name":"_sum","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"_newOwner","type":"address"}],"name":"transferOwnership","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"}],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"compilationTarget":{"TokenUniqueSymbolIndex.sol":"TokenUniqueSymbolIndex"},"evmVersion":"byzantium","libraries":{},"metadata":{"bytecodeHash":"ipfs"},"optimizer":{"enabled":false,"runs":200},"remappings":[]},"sources":{"TokenUniqueSymbolIndex.sol":{"keccak256":"0xcf9df7f7998e4e1f3978bb9c9c4c3d530b995d7ab7fdc5b096df7229044b9e1f","license":"GPL-3.0-or-later","urls":["bzz-raw://479c6b796953506e685c9d03d1158606adc0d409d9f7de3dfff5c2b578f37eb5","dweb:/ipfs/QmRhpDCSTnrPYGQL2dDGee3GZAGiqoVBLLqXc2NaDP8gPz"]}},"version":1}
|
{"compiler":{"version":"0.8.18+commit.87f61d96"},"language":"Solidity","output":{"abi":[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"_token","type":"address"}],"name":"AddressAdded","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"_symbol","type":"bytes32"},{"indexed":false,"internalType":"address","name":"_token","type":"address"}],"name":"AddressKey","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"_token","type":"address"}],"name":"AddressRemoved","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"_writer","type":"address"}],"name":"WriterAdded","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"_writer","type":"address"}],"name":"WriterDeleted","type":"event"},{"inputs":[{"internalType":"address","name":"_token","type":"address"}],"name":"activate","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"_token","type":"address"}],"name":"add","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_writer","type":"address"}],"name":"addWriter","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"_key","type":"bytes32"}],"name":"addressOf","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_token","type":"address"}],"name":"deactivate","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"_writer","type":"address"}],"name":"deleteWriter","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_idx","type":"uint256"}],"name":"entry","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"entryCount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_token","type":"address"}],"name":"register","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_token","type":"address"}],"name":"remove","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"_sum","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"_newOwner","type":"address"}],"name":"transferOwnership","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"}],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"compilationTarget":{"TokenUniqueSymbolIndex.sol":"TokenUniqueSymbolIndex"},"evmVersion":"byzantium","libraries":{},"metadata":{"bytecodeHash":"ipfs"},"optimizer":{"enabled":false,"runs":200},"remappings":[]},"sources":{"TokenUniqueSymbolIndex.sol":{"keccak256":"0x2a6fff0204fcb0f35a4995b0679ed49bf3044e15956122f5aaaeeb95f9f61fd4","license":"AGPL-3.0-or-later","urls":["bzz-raw://1180f1d3ab2a9791db5cadf8637baaf6719d8089af03307e59a6c2b0ec70a2c4","dweb:/ipfs/QmWczv5ERbmVFBUbWdW87afzDbXsq31FtuujpJ3vyWk9WL"]}},"version":1}
|
||||||
|
@ -32,9 +32,9 @@ datadir = os.path.join(moddir, 'data')
|
|||||||
|
|
||||||
|
|
||||||
def to_identifier(s):
|
def to_identifier(s):
|
||||||
h = hashlib.new('sha256')
|
r = s.encode('utf-8').hex()
|
||||||
h.update(s.encode('utf-8'))
|
assert len(r) < 64
|
||||||
return h.digest().hex()
|
return '{:0<64}'.format(r)
|
||||||
|
|
||||||
|
|
||||||
class TokenUniqueSymbolIndex(TxFactory):
|
class TokenUniqueSymbolIndex(TxFactory):
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
[metadata]
|
[metadata]
|
||||||
name = eth-token-index
|
name = eth-token-index
|
||||||
version = 0.5.0
|
version = 0.6.0
|
||||||
description = Token symbol to address unique index
|
description = Token symbol to address unique index
|
||||||
author = Louis Holbrook
|
author = Louis Holbrook
|
||||||
author_email = dev@holbrook.no
|
author_email = dev@holbrook.no
|
||||||
|
@ -1,19 +1,35 @@
|
|||||||
pragma solidity >0.6.11;
|
pragma solidity >=0.8.0;
|
||||||
|
|
||||||
// SPDX-License-Identifier: GPL-3.0-or-later
|
// SPDX-License-Identifier: AGPL-3.0-or-later
|
||||||
|
|
||||||
contract TokenUniqueSymbolIndex {
|
contract TokenUniqueSymbolIndex {
|
||||||
|
|
||||||
// EIP 173
|
// EIP 173
|
||||||
address public owner;
|
address public owner;
|
||||||
address newOwner;
|
mapping(address => bool) isWriter;
|
||||||
mapping(address => bool) writers;
|
|
||||||
|
|
||||||
mapping ( bytes32 => uint256 ) public registry;
|
mapping ( bytes32 => uint256 ) registry;
|
||||||
|
//address[] tokenIndex;
|
||||||
|
mapping ( address => bytes32 ) tokenIndex;
|
||||||
address[] tokens;
|
address[] tokens;
|
||||||
|
|
||||||
event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); // EIP173
|
// Implements EIP173
|
||||||
event AddressAdded(address indexed addedAccount, uint256 indexed accountIndex); // AccountsIndex
|
event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
|
||||||
|
|
||||||
|
// Implements AccountsIndex
|
||||||
|
event AddressKey(bytes32 indexed _symbol, address _token);
|
||||||
|
|
||||||
|
// Implements AccountsIndex
|
||||||
|
event AddressAdded(address _token);
|
||||||
|
|
||||||
|
// Implements AccountsIndexMutable
|
||||||
|
event AddressRemoved(address _token);
|
||||||
|
|
||||||
|
// Implements Writer
|
||||||
|
event WriterAdded(address _writer);
|
||||||
|
|
||||||
|
// Implements Writer
|
||||||
|
event WriterDeleted(address _writer);
|
||||||
|
|
||||||
constructor() {
|
constructor() {
|
||||||
owner = msg.sender;
|
owner = msg.sender;
|
||||||
@ -33,8 +49,10 @@ contract TokenUniqueSymbolIndex {
|
|||||||
return tokens[idx];
|
return tokens[idx];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Attempt to register the token at the given address.
|
||||||
|
// Will revet if symbol cannot be retrieved, or if symbol already exists.
|
||||||
function register(address _token) public returns (bool) {
|
function register(address _token) public returns (bool) {
|
||||||
require(writers[msg.sender]);
|
require(isWriter[msg.sender]);
|
||||||
|
|
||||||
bytes memory token_symbol;
|
bytes memory token_symbol;
|
||||||
bytes32 token_symbol_key;
|
bytes32 token_symbol_key;
|
||||||
@ -44,14 +62,17 @@ contract TokenUniqueSymbolIndex {
|
|||||||
require(_ok);
|
require(_ok);
|
||||||
|
|
||||||
token_symbol = abi.decode(_r, (bytes));
|
token_symbol = abi.decode(_r, (bytes));
|
||||||
token_symbol_key = sha256(token_symbol);
|
require(token_symbol.length <= 32, 'ERR_TOKEN_SYMBOL_TOO_LONG');
|
||||||
|
token_symbol_key = bytes32(token_symbol);
|
||||||
|
|
||||||
idx = registry[token_symbol_key];
|
idx = registry[token_symbol_key];
|
||||||
require(idx == 0);
|
require(idx == 0);
|
||||||
|
|
||||||
registry[token_symbol_key] = tokens.length;
|
registry[token_symbol_key] = tokens.length;
|
||||||
tokens.push(_token);
|
tokens.push(_token);
|
||||||
emit AddressAdded(_token, tokens.length - 1);
|
tokenIndex[_token] = token_symbol_key;
|
||||||
|
emit AddressKey(token_symbol_key, _token);
|
||||||
|
emit AddressAdded(_token);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -60,6 +81,38 @@ contract TokenUniqueSymbolIndex {
|
|||||||
return register(_token);
|
return register(_token);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Implements AccountsIndexMutable
|
||||||
|
function remove(address _token) external returns (bool) {
|
||||||
|
uint256 i;
|
||||||
|
uint256 l;
|
||||||
|
|
||||||
|
require(isWriter[msg.sender], 'ERR_AXX');
|
||||||
|
require(tokenIndex[_token] != bytes32(0), 'ERR_NOT_FOUND');
|
||||||
|
|
||||||
|
l = tokens.length - 1;
|
||||||
|
|
||||||
|
i = registry[tokenIndex[_token]];
|
||||||
|
if (i < l) {
|
||||||
|
tokens[i] = tokens[l];
|
||||||
|
}
|
||||||
|
tokens.pop();
|
||||||
|
registry[tokenIndex[_token]] = 0;
|
||||||
|
emit AddressRemoved(_token);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Implements AccountsIndexMutable
|
||||||
|
function activate(address _token) public pure returns(bool) {
|
||||||
|
_token;
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Implements AccountsIndexMutable
|
||||||
|
function deactivate(address _token) public pure returns(bool) {
|
||||||
|
_token;
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
// Implements AccountsIndex
|
// Implements AccountsIndex
|
||||||
function entryCount() public view returns ( uint256 ) {
|
function entryCount() public view returns ( uint256 ) {
|
||||||
@ -68,43 +121,46 @@ contract TokenUniqueSymbolIndex {
|
|||||||
|
|
||||||
// Implements EIP173
|
// Implements EIP173
|
||||||
function transferOwnership(address _newOwner) public returns (bool) {
|
function transferOwnership(address _newOwner) public returns (bool) {
|
||||||
require(msg.sender == owner);
|
|
||||||
newOwner = _newOwner;
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Implements OwnedAccepter
|
|
||||||
function acceptOwnership() public returns (bool) {
|
|
||||||
address oldOwner;
|
address oldOwner;
|
||||||
|
|
||||||
require(msg.sender == newOwner);
|
require(msg.sender == owner);
|
||||||
oldOwner = owner;
|
oldOwner = owner;
|
||||||
owner = newOwner;
|
owner = _newOwner;
|
||||||
newOwner = address(0);
|
|
||||||
emit OwnershipTransferred(oldOwner, owner);
|
emit OwnershipTransferred(oldOwner, owner);
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Implements Writer
|
// Implements Writer
|
||||||
function addWriter(address _writer) public returns (bool) {
|
function addWriter(address _writer) public returns (bool) {
|
||||||
require(owner == msg.sender);
|
require(owner == msg.sender);
|
||||||
writers[_writer] = true;
|
isWriter[_writer] = true;
|
||||||
|
|
||||||
|
emit WriterAdded(_writer);
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Implements Writer
|
// Implements Writer
|
||||||
function deleteWriter(address _writer) public returns (bool) {
|
function deleteWriter(address _writer) public returns (bool) {
|
||||||
require(owner == msg.sender);
|
require(owner == msg.sender);
|
||||||
delete writers[_writer];
|
delete isWriter[_writer];
|
||||||
|
|
||||||
|
emit WriterDeleted(_writer);
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Implements EIP165
|
// Implements EIP165
|
||||||
function supportsInterface(bytes4 _sum) public pure returns (bool) {
|
function supportsInterface(bytes4 _sum) public pure returns (bool) {
|
||||||
if (_sum == 0xcbdb05c7) { // AccountsIndex
|
if (_sum == 0x12625fe5) { // Registry
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
if (_sum == 0xbb34534c) { // RegistryClient
|
if (_sum == 0xb7bca625) { // AccountsIndex
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
if (_sum == 0x9479f0ae) { // AccountsIndexMutable
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
if (_sum == 0x01ffc9a7) { // EIP165
|
if (_sum == 0x01ffc9a7) { // EIP165
|
||||||
@ -113,9 +169,6 @@ contract TokenUniqueSymbolIndex {
|
|||||||
if (_sum == 0x9493f8b2) { // EIP173
|
if (_sum == 0x9493f8b2) { // EIP173
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
if (_sum == 0x37a47be4) { // OwnedAccepter
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
if (_sum == 0x80c84bd6) { // Writer
|
if (_sum == 0x80c84bd6) { // Writer
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user