Skip to content
Technical Reference

Registry

Hash-verified 0xcb6c1fa8…6ff665
Source details
Property Value
Keccak256 Hash 0xcb6c1fa88f25cc768a872653807808641d3e699291a176cdf5b1586ee06ff665
Source URL https://raw.githubusercontent.com/busytoby/atropa_pulsechain/58607494f7741b80525953e4a85bc99e66fd20fc/solidity/dysnomia/lib/registry.sol
Source Revision 58607494f7741b80525953e4a85bc99e66fd20fc
Source Status Canonical source snapshot; deployed bytecode equivalence is only established where a deployment record says so.
Compiler solc 0.8.21; optimizer enabled with 200 runs
Compiler Configuration {"evmVersion":"compiler-default","optimizer":{"enabled":true,"runs":200},"version":"0.8.21+commit.d9974bed.Linux.g++"}
Compilation Closure Hash 0xdf0151f0e52fe945ffa98df4e294104aa2e67b3be693743118221dd861fb652d
Compilation Closure Files 2
Hash Generated 2026-09-14T19:34:22Z

Registry is a flexible key-value storage contract supporting multiple data types. It provides a generic storage mechanism with type conversion utilities and ordered key tracking.

  • Kind: Contract
  • License: Sharia
  • Solidity: ^0.8.21
  • Source: lib/registry.sol
  1. selfRegistry
  2. MultiOwnable

Plain English Summary: Registry is a general-purpose database that can store any type of data. It’s like a universal key-value storage locker where you can save information by name (key) and retrieve it later. The game uses it for various internal bookkeeping.

Real-World Analogy: Think of Registry like a safe deposit box facility at a bank. Each box has a unique number (key), and you can store whatever you want inside (value). You can check if a box exists, count how many boxes are used, and retrieve contents by box number.

How It Affects Your Gameplay:

  • System storage - The game uses registries to store internal data
  • No overwrites - Once data is stored, it can only be removed (not changed)
  • Type flexible - Can store strings, numbers, or addresses with the same interface
Variable Type Visibility Mutability Initial Value NatSpec
_values mapping(bytes => bytes) private mutable ``
_inserted mapping(bytes => bool) private mutable ``
_indexOf mapping(bytes => uint256) private mutable ``
_keys bytes[] private mutable ``
constructorconstructor
constructor() MultiOwnable(msg.sender)
  • Modifiers: MultiOwnable(msg.sender)
Getfunction
function Get(bytes memory key) public view returns (bytes memory)

A callable deployment has not been resolved for this reference.

  • Visibility: public
  • State Mutability: view
  • Parameters: bytes memory key
  • Returns: bytes memory
Getfunction
function Get(uint256 idx) public view returns (bytes memory)

A callable deployment has not been resolved for this reference.

  • Visibility: public
  • State Mutability: view
  • Parameters: uint256 idx
  • Returns: bytes memory
Insertedfunction
function Inserted(bytes memory what) public view returns (bool)

A callable deployment has not been resolved for this reference.

  • Visibility: public
  • State Mutability: view
  • Parameters: bytes memory what
  • Returns: bool
Insertedfunction
function Inserted(string memory what) public view returns (bool)

A callable deployment has not been resolved for this reference.

  • Visibility: public
  • State Mutability: view
  • Parameters: string memory what
  • Returns: bool
Uint64ToBytesfunction
function Uint64ToBytes(uint64 what) public pure returns (bytes memory _w)

A callable deployment has not been resolved for this reference.

  • Visibility: public
  • State Mutability: pure
  • Parameters: uint64 what
  • Returns: bytes memory _w
Insertedfunction
function Inserted(uint64 what) public view returns (bool)

A callable deployment has not been resolved for this reference.

  • Visibility: public
  • State Mutability: view
  • Parameters: uint64 what
  • Returns: bool
Uint256ToBytesfunction
function Uint256ToBytes(uint256 what) public pure returns (bytes memory _w)

A callable deployment has not been resolved for this reference.

  • Visibility: public
  • State Mutability: pure
  • Parameters: uint256 what
  • Returns: bytes memory _w
Insertedfunction
function Inserted(uint256 what) public view returns (bool)

A callable deployment has not been resolved for this reference.

  • Visibility: public
  • State Mutability: view
  • Parameters: uint256 what
  • Returns: bool
AddressToBytesfunction
function AddressToBytes(address what) public pure returns (bytes memory _w)

A callable deployment has not been resolved for this reference.

  • Visibility: public
  • State Mutability: pure
  • Parameters: address what
  • Returns: bytes memory _w
Insertedfunction
function Inserted(address what) public view returns (bool)

A callable deployment has not been resolved for this reference.

  • Visibility: public
  • State Mutability: view
  • Parameters: address what
  • Returns: bool
Countfunction
function Count() public view returns (uint256)

A callable deployment has not been resolved for this reference.

  • Visibility: public
  • State Mutability: view
  • Returns: uint256
GetHashByIndexfunction
function GetHashByIndex(uint256 index) public view returns (bytes memory)

A callable deployment has not been resolved for this reference.

  • Visibility: public
  • State Mutability: view
  • Parameters: uint256 index
  • Returns: bytes memory
Registerfunction
function Register(bytes memory key, bytes memory value) public onlyOwners

A callable deployment has not been resolved for this reference.

  • Visibility: public
  • Modifiers: onlyOwners
  • Parameters: bytes memory key, bytes memory value
Registerfunction
function Register(string memory _key, bytes memory value) public onlyOwners

A callable deployment has not been resolved for this reference.

  • Visibility: public
  • Modifiers: onlyOwners
  • Parameters: string memory _key, bytes memory value
Registerfunction
function Register(string memory _key, string memory value) public onlyOwners

A callable deployment has not been resolved for this reference.

  • Visibility: public
  • Modifiers: onlyOwners
  • Parameters: string memory _key, string memory value
Registerfunction
function Register(string memory _key, uint64 value) public onlyOwners

A callable deployment has not been resolved for this reference.

  • Visibility: public
  • Modifiers: onlyOwners
  • Parameters: string memory _key, uint64 value
Registerfunction
function Register(string memory _key, uint256 value) public onlyOwners

A callable deployment has not been resolved for this reference.

  • Visibility: public
  • Modifiers: onlyOwners
  • Parameters: string memory _key, uint256 value
Registerfunction
function Register(string memory _key, address value) public onlyOwners

A callable deployment has not been resolved for this reference.

  • Visibility: public
  • Modifiers: onlyOwners
  • Parameters: string memory _key, address value
Registerfunction
function Register(uint64 _key, bytes memory value) public onlyOwners

A callable deployment has not been resolved for this reference.

  • Visibility: public
  • Modifiers: onlyOwners
  • Parameters: uint64 _key, bytes memory value
Registerfunction
function Register(uint64 _key, string memory value) public onlyOwners

A callable deployment has not been resolved for this reference.

  • Visibility: public
  • Modifiers: onlyOwners
  • Parameters: uint64 _key, string memory value
Registerfunction
function Register(uint64 _key, uint64 value) public onlyOwners

A callable deployment has not been resolved for this reference.

  • Visibility: public
  • Modifiers: onlyOwners
  • Parameters: uint64 _key, uint64 value
Registerfunction
function Register(uint64 _key, uint256 value) public onlyOwners

A callable deployment has not been resolved for this reference.

  • Visibility: public
  • Modifiers: onlyOwners
  • Parameters: uint64 _key, uint256 value
Registerfunction
function Register(uint64 _key, address value) public onlyOwners

A callable deployment has not been resolved for this reference.

  • Visibility: public
  • Modifiers: onlyOwners
  • Parameters: uint64 _key, address value
Registerfunction
function Register(uint256 _key, bytes memory value) public onlyOwners

A callable deployment has not been resolved for this reference.

  • Visibility: public
  • Modifiers: onlyOwners
  • Parameters: uint256 _key, bytes memory value
Registerfunction
function Register(uint256 _key, string memory value) public onlyOwners

A callable deployment has not been resolved for this reference.

  • Visibility: public
  • Modifiers: onlyOwners
  • Parameters: uint256 _key, string memory value
Registerfunction
function Register(uint256 _key, uint64 value) public onlyOwners

A callable deployment has not been resolved for this reference.

  • Visibility: public
  • Modifiers: onlyOwners
  • Parameters: uint256 _key, uint64 value
Registerfunction
function Register(uint256 _key, uint256 value) public onlyOwners

A callable deployment has not been resolved for this reference.

  • Visibility: public
  • Modifiers: onlyOwners
  • Parameters: uint256 _key, uint256 value
Registerfunction
function Register(uint256 _key, address value) public onlyOwners

A callable deployment has not been resolved for this reference.

  • Visibility: public
  • Modifiers: onlyOwners
  • Parameters: uint256 _key, address value
Registerfunction
function Register(address _key, bytes memory value) public onlyOwners

A callable deployment has not been resolved for this reference.

  • Visibility: public
  • Modifiers: onlyOwners
  • Parameters: address _key, bytes memory value
Registerfunction
function Register(address _key, string memory value) public onlyOwners

A callable deployment has not been resolved for this reference.

  • Visibility: public
  • Modifiers: onlyOwners
  • Parameters: address _key, string memory value
Registerfunction
function Register(address _key, uint64 value) public onlyOwners

A callable deployment has not been resolved for this reference.

  • Visibility: public
  • Modifiers: onlyOwners
  • Parameters: address _key, uint64 value
Registerfunction
function Register(address _key, uint256 value) public onlyOwners

A callable deployment has not been resolved for this reference.

  • Visibility: public
  • Modifiers: onlyOwners
  • Parameters: address _key, uint256 value
Registerfunction
function Register(address _key, address value) public onlyOwners

A callable deployment has not been resolved for this reference.

  • Visibility: public
  • Modifiers: onlyOwners
  • Parameters: address _key, address value
Removefunction
function Remove(bytes memory key) public onlyOwners

A callable deployment has not been resolved for this reference.

  • Visibility: public
  • Modifiers: onlyOwners
  • Parameters: bytes memory key
Removefunction
function Remove(string memory _key) public onlyOwners

A callable deployment has not been resolved for this reference.

  • Visibility: public
  • Modifiers: onlyOwners
  • Parameters: string memory _key
Removefunction
function Remove(uint64 _key) public onlyOwners

A callable deployment has not been resolved for this reference.

  • Visibility: public
  • Modifiers: onlyOwners
  • Parameters: uint64 _key
Removefunction
function Remove(uint256 _key) public onlyOwners

A callable deployment has not been resolved for this reference.

  • Visibility: public
  • Modifiers: onlyOwners
  • Parameters: uint256 _key
Removefunction
function Remove(address _key) public onlyOwners

A callable deployment has not been resolved for this reference.

  • Visibility: public
  • Modifiers: onlyOwners
  • Parameters: address _key

This contract inherits the members below from its parents. See each parent’s dedicated MD for full signatures, NatSpec, and semantics.

External & Public Functions

Function Signature State Mutability
owner function owner() external view virtual returns (address) view
renounceOwnership function renounceOwnership(address toRemove) public virtual onlyOwners nonpayable
addOwner function addOwner(address newOwner) public virtual onlyOwners nonpayable

Internal Functions

Function Signature
_checkOwner function _checkOwner() internal view virtual
_changeOwnership function _changeOwnership(address cOwner, bool cState) internal virtual

Events

Event Parameters
OwnershipUpdate address indexed newOwner, bool indexed state

Errors

Error Parameters
OwnableUnauthorizedAccount address origin, address account, address what
OwnableInvalidOwner address origin, address owner, address what

Modifiers

Modifier Parameters
onlyOwners (none)
function Uint64ToBytes(uint64 what) public pure returns (bytes memory)
  • Description: Converts uint64 to 8-byte representation
  • In Plain English: Prepare a 64-bit number for storage by converting it to the registry’s internal format. Required when storing Soul IDs or other numeric identifiers that need to be looked up later.
function Uint256ToBytes(uint256 what) public pure returns (bytes memory)
  • Description: Converts uint256 to 32-byte representation
  • In Plain English: Prepare a large number (like token amounts or Waat positions) for storage by converting it to the registry’s internal format.
function AddressToBytes(address what) public pure returns (bytes memory)
  • Description: Converts address to 20-byte representation
  • In Plain English: Prepare a contract or wallet address for storage by converting it to the registry’s internal format. Useful when indexing data by who owns it or where it came from.
  • Any contract needing generic storage

Register only adds new keys - it won’t overwrite existing values:

if(!_inserted[key]) {
_inserted[key] = true;
_indexOf[key] = _keys.length;
_values[key] = value;
_keys.push(key);
}

Remove uses swap-and-pop pattern to maintain array without gaps:

bytes memory lastKey = _keys[_keys.length - 1];
_indexOf[lastKey] = index;
_keys[index] = lastKey;
_keys.pop();

Everything is stored as bytes internally. Type-specific overloads handle conversion:

  • strings → bytes directly
  • uint64 → 8 bytes (little-endian)
  • uint256 → 32 bytes (little-endian)
  • address → 20 bytes
Registry registry = new Registry();
// Store values
registry.Register("myKey", "myValue");
registry.Register("userId", uint64(12345));
registry.Register(someAddress, "Alice");
// Check existence
bool exists = registry.Inserted("myKey");
// Retrieve
bytes memory value = registry.Get("myKey");
// Iterate
uint256 count = registry.Count();
for(uint256 i = 0; i < count; i++) {
bytes memory key = registry.GetHashByIndex(i);
bytes memory val = registry.Get(i);
}
// Remove
registry.Remove("myKey");
  • Insert: O(1) plus mapping writes
  • Get: O(1)
  • Remove: O(1) due to swap-and-pop
  • Count: O(1)
  • Enumeration: O(n)





Inherited functions and getters (4)
Registry.addOwner(address newOwner)Simulate / call

A callable deployment has not been resolved for this reference.

Registry.owner(address cOwner)Read

A callable deployment has not been resolved for this reference.

Registry.owner()Read

A callable deployment has not been resolved for this reference.

Registry.renounceOwnership(address toRemove)Simulate / call

A callable deployment has not been resolved for this reference.

The compiled ABI below is produced by solc 0.8.21 from the exact source bytes recorded in Source details. Consumers can paste it directly into ethers/web3/viem.

Click to expand JSON ABI
[
{
"inputs": [],
"stateMutability": "nonpayable",
"type": "constructor"
},
{
"inputs": [
{
"internalType": "address",
"name": "origin",
"type": "address"
},
{
"internalType": "address",
"name": "owner",
"type": "address"
},
{
"internalType": "address",
"name": "what",
"type": "address"
}
],
"name": "OwnableInvalidOwner",
"type": "error"
},
{
"inputs": [
{
"internalType": "address",
"name": "origin",
"type": "address"
},
{
"internalType": "address",
"name": "account",
"type": "address"
},
{
"internalType": "address",
"name": "what",
"type": "address"
}
],
"name": "OwnableUnauthorizedAccount",
"type": "error"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "newOwner",
"type": "address"
},
{
"indexed": true,
"internalType": "bool",
"name": "state",
"type": "bool"
}
],
"name": "OwnershipUpdate",
"type": "event"
},
{
"inputs": [
{
"internalType": "address",
"name": "what",
"type": "address"
}
],
"name": "AddressToBytes",
"outputs": [
{
"internalType": "bytes",
"name": "_w",
"type": "bytes"
}
],
"stateMutability": "pure",
"type": "function"
},
{
"inputs": [],
"name": "Count",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "idx",
"type": "uint256"
}
],
"name": "Get",
"outputs": [
{
"internalType": "bytes",
"name": "",
"type": "bytes"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "bytes",
"name": "key",
"type": "bytes"
}
],
"name": "Get",
"outputs": [
{
"internalType": "bytes",
"name": "",
"type": "bytes"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "index",
"type": "uint256"
}
],
"name": "GetHashByIndex",
"outputs": [
{
"internalType": "bytes",
"name": "",
"type": "bytes"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "what",
"type": "uint256"
}
],
"name": "Inserted",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint64",
"name": "what",
"type": "uint64"
}
],
"name": "Inserted",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "string",
"name": "what",
"type": "string"
}
],
"name": "Inserted",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "what",
"type": "address"
}
],
"name": "Inserted",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "bytes",
"name": "what",
"type": "bytes"
}
],
"name": "Inserted",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "_key",
"type": "address"
},
{
"internalType": "uint256",
"name": "value",
"type": "uint256"
}
],
"name": "Register",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint64",
"name": "_key",
"type": "uint64"
},
{
"internalType": "string",
"name": "value",
"type": "string"
}
],
"name": "Register",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "string",
"name": "_key",
"type": "string"
},
{
"internalType": "bytes",
"name": "value",
"type": "bytes"
}
],
"name": "Register",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "bytes",
"name": "key",
"type": "bytes"
},
{
"internalType": "bytes",
"name": "value",
"type": "bytes"
}
],
"name": "Register",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "string",
"name": "_key",
"type": "string"
},
{
"internalType": "address",
"name": "value",
"type": "address"
}
],
"name": "Register",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "string",
"name": "_key",
"type": "string"
},
{
"internalType": "uint64",
"name": "value",
"type": "uint64"
}
],
"name": "Register",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint64",
"name": "_key",
"type": "uint64"
},
{
"internalType": "address",
"name": "value",
"type": "address"
}
],
"name": "Register",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "_key",
"type": "address"
},
{
"internalType": "string",
"name": "value",
"type": "string"
}
],
"name": "Register",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "_key",
"type": "uint256"
},
{
"internalType": "string",
"name": "value",
"type": "string"
}
],
"name": "Register",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "_key",
"type": "address"
},
{
"internalType": "uint64",
"name": "value",
"type": "uint64"
}
],
"name": "Register",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint64",
"name": "_key",
"type": "uint64"
},
{
"internalType": "bytes",
"name": "value",
"type": "bytes"
}
],
"name": "Register",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint64",
"name": "_key",
"type": "uint64"
},
{
"internalType": "uint256",
"name": "value",
"type": "uint256"
}
],
"name": "Register",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "string",
"name": "_key",
"type": "string"
},
{
"internalType": "uint256",
"name": "value",
"type": "uint256"
}
],
"name": "Register",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "_key",
"type": "address"
},
{
"internalType": "address",
"name": "value",
"type": "address"
}
],
"name": "Register",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "_key",
"type": "uint256"
},
{
"internalType": "address",
"name": "value",
"type": "address"
}
],
"name": "Register",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint64",
"name": "_key",
"type": "uint64"
},
{
"internalType": "uint64",
"name": "value",
"type": "uint64"
}
],
"name": "Register",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "_key",
"type": "address"
},
{
"internalType": "bytes",
"name": "value",
"type": "bytes"
}
],
"name": "Register",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "string",
"name": "_key",
"type": "string"
},
{
"internalType": "string",
"name": "value",
"type": "string"
}
],
"name": "Register",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "_key",
"type": "uint256"
},
{
"internalType": "bytes",
"name": "value",
"type": "bytes"
}
],
"name": "Register",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "_key",
"type": "uint256"
},
{
"internalType": "uint64",
"name": "value",
"type": "uint64"
}
],
"name": "Register",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "_key",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "value",
"type": "uint256"
}
],
"name": "Register",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "bytes",
"name": "key",
"type": "bytes"
}
],
"name": "Remove",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "_key",
"type": "uint256"
}
],
"name": "Remove",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "string",
"name": "_key",
"type": "string"
}
],
"name": "Remove",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint64",
"name": "_key",
"type": "uint64"
}
],
"name": "Remove",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "_key",
"type": "address"
}
],
"name": "Remove",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "what",
"type": "uint256"
}
],
"name": "Uint256ToBytes",
"outputs": [
{
"internalType": "bytes",
"name": "_w",
"type": "bytes"
}
],
"stateMutability": "pure",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint64",
"name": "what",
"type": "uint64"
}
],
"name": "Uint64ToBytes",
"outputs": [
{
"internalType": "bytes",
"name": "_w",
"type": "bytes"
}
],
"stateMutability": "pure",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "newOwner",
"type": "address"
}
],
"name": "addOwner",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "cOwner",
"type": "address"
}
],
"name": "owner",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "owner",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "toRemove",
"type": "address"
}
],
"name": "renounceOwnership",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
}
]