EternalStorage.sol
View Source: contracts/storage/EternalStorage.sol
↘ Derived Contracts: ModuleRegistry, ModuleRegistryProxy, SecurityTokenRegistry, SecurityTokenRegistryProxy, STRGetter
EternalStorage
Contract Members
Constants & Variables
mapping(bytes32 => uint256) internal uintStorage;
mapping(bytes32 => string) internal stringStorage;
mapping(bytes32 => address) internal addressStorage;
mapping(bytes32 => bytes) internal bytesStorage;
mapping(bytes32 => bool) internal boolStorage;
mapping(bytes32 => int256) internal intStorage;
mapping(bytes32 => bytes32) internal bytes32Storage;
mapping(bytes32 => bytes32[]) internal bytes32ArrayStorage;
mapping(bytes32 => uint256[]) internal uintArrayStorage;
mapping(bytes32 => address[]) internal addressArrayStorage;
mapping(bytes32 => string[]) internal stringArrayStorage;
Functions
set
Set the key values using the Overloaded set
functions Ex- string version = "0.0.1"; replace to set(keccak256(abi.encodePacked("version"), "0.0.1"); same for the other variables as well some more example listed below ex1 - address securityTokenAddress = 0x123; replace to set(keccak256(abi.encodePacked("securityTokenAddress"), 0x123); ex2 - bytes32 tokenDetails = "I am ST20"; replace to set(keccak256(abi.encodePacked("tokenDetails"), "I am ST20"); ex3 - mapping(string => address) ownedToken; set(keccak256(abi.encodePacked("ownedToken", "Chris")), 0x123); ex4 - mapping(string => uint) tokenIndex; tokenIndex["TOKEN"] = 1; replace to set(keccak256(abi.encodePacked("tokenIndex", "TOKEN"), 1); ex5 - mapping(string => SymbolDetails) registeredSymbols; where SymbolDetails is the structure having different type of values as {uint256 date, string name, address owner} etc. registeredSymbols["TOKEN"].name = "MyFristToken"; replace to set(keccak256(abi.encodePacked("registeredSymbolsname", "TOKEN"), "MyFirstToken"); More generalized- set(keccak256(abi.encodePacked("registeredSymbols", "keyname"), "value");
function set(bytes32 _key, uint256 _value) internal nonpayable
Arguments
Name
Type
Description
_key
bytes32
_value
uint256
set
function set(bytes32 _key, address _value) internal nonpayable
Arguments
Name
Type
Description
_key
bytes32
_value
address
set
function set(bytes32 _key, bool _value) internal nonpayable
Arguments
Name
Type
Description
_key
bytes32
_value
bool
set
function set(bytes32 _key, bytes32 _value) internal nonpayable
Arguments
Name
Type
Description
_key
bytes32
_value
bytes32
set
function set(bytes32 _key, string _value) internal nonpayable
Arguments
Name
Type
Description
_key
bytes32
_value
string
set
function set(bytes32 _key, bytes _value) internal nonpayable
Arguments
Name
Type
Description
_key
bytes32
_value
bytes
deleteArrayAddress
Function used to delete the array element. Ex1- mapping(address => bytes32[]) tokensOwnedByOwner; For deleting the item from array developers needs to create a funtion for that similarly in this case we have the helper function deleteArrayBytes32() which will do it for us deleteArrayBytes32(keccak256(abi.encodePacked("tokensOwnedByOwner", 0x1), 3); -- it will delete the index 3
function deleteArrayAddress(bytes32 _key, uint256 _index) internal nonpayable
Arguments
Name
Type
Description
_key
bytes32
_index
uint256
deleteArrayBytes32
function deleteArrayBytes32(bytes32 _key, uint256 _index) internal nonpayable
Arguments
Name
Type
Description
_key
bytes32
_index
uint256
deleteArrayUint
function deleteArrayUint(bytes32 _key, uint256 _index) internal nonpayable
Arguments
Name
Type
Description
_key
bytes32
_index
uint256
deleteArrayString
function deleteArrayString(bytes32 _key, uint256 _index) internal nonpayable
Arguments
Name
Type
Description
_key
bytes32
_index
uint256
pushArray
Below are the helper functions to facilitate storing arrays of different data types. Ex1- mapping(address => bytes32[]) tokensOwnedByTicker; tokensOwnedByTicker[owner] = tokensOwnedByTicker[owner].push("xyz"); replace with pushArray(keccak256(abi.encodePacked("tokensOwnedByTicker", owner), "xyz");
function pushArray(bytes32 _key, address _value) internal nonpayable
Arguments
Name
Type
Description
_key
bytes32
bytes32 type
_value
address
[uint256, string, bytes32, address] any of the data type in array
pushArray
function pushArray(bytes32 _key, bytes32 _value) internal nonpayable
Arguments
Name
Type
Description
_key
bytes32
_value
bytes32
pushArray
function pushArray(bytes32 _key, string _value) internal nonpayable
Arguments
Name
Type
Description
_key
bytes32
_value
string
pushArray
function pushArray(bytes32 _key, uint256 _value) internal nonpayable
Arguments
Name
Type
Description
_key
bytes32
_value
uint256
setArray
used to intialize the array Ex1- mapping (address => address[]) public reputation; reputation[0x1] = new address; It can be replaced as setArray(hash('reputation', 0x1), new address);
function setArray(bytes32 _key, address[] _value) internal nonpayable
Arguments
Name
Type
Description
_key
bytes32
_value
address[]
setArray
function setArray(bytes32 _key, uint256[] _value) internal nonpayable
Arguments
Name
Type
Description
_key
bytes32
_value
uint256[]
setArray
function setArray(bytes32 _key, bytes32[] _value) internal nonpayable
Arguments
Name
Type
Description
_key
bytes32
_value
bytes32[]
setArray
function setArray(bytes32 _key, string[] _value) internal nonpayable
Arguments
Name
Type
Description
_key
bytes32
_value
string[]
getArrayAddress
Get functions to get the array of the required data type Ex1- mapping(address => bytes32[]) tokensOwnedByOwner; getArrayBytes32(keccak256(abi.encodePacked("tokensOwnedByOwner", 0x1)); It return the bytes32 array Ex2- uint256 _len = tokensOwnedByOwner[0x1].length; replace with getArrayBytes32(keccak256(abi.encodePacked("tokensOwnedByOwner", 0x1)).length;
function getArrayAddress(bytes32 _key) public view
returns(address[])
Arguments
Name
Type
Description
_key
bytes32
getArrayBytes32
function getArrayBytes32(bytes32 _key) public view
returns(bytes32[])
Arguments
Name
Type
Description
_key
bytes32
getArrayUint
function getArrayUint(bytes32 _key) public view
returns(uint256[])
Arguments
Name
Type
Description
_key
bytes32
setArrayIndexValue
set the value of particular index of the address array Ex1- mapping(bytes32 => address[]) moduleList; general way is -- moduleList[moduleType][index] = temp; It can be re-write as -- setArrayIndexValue(keccak256(abi.encodePacked('moduleList', moduleType)), index, temp);
function setArrayIndexValue(bytes32 _key, uint256 _index, address _value) internal nonpayable
Arguments
Name
Type
Description
_key
bytes32
_index
uint256
_value
address
setArrayIndexValue
function setArrayIndexValue(bytes32 _key, uint256 _index, uint256 _value) internal nonpayable
Arguments
Name
Type
Description
_key
bytes32
_index
uint256
_value
uint256
setArrayIndexValue
function setArrayIndexValue(bytes32 _key, uint256 _index, bytes32 _value) internal nonpayable
Arguments
Name
Type
Description
_key
bytes32
_index
uint256
_value
bytes32
setArrayIndexValue
function setArrayIndexValue(bytes32 _key, uint256 _index, string _value) internal nonpayable
Arguments
Name
Type
Description
_key
bytes32
_index
uint256
_value
string
getUintValue
Get function use to get the value of the singleton state variables Ex1- string public version = "0.0.1"; string _version = getString(keccak256(abi.encodePacked("version")); Ex2 - assert(temp1 == temp2); replace to assert(getUint(keccak256(abi.encodePacked(temp1)) == getUint(keccak256(abi.encodePacked(temp2)); Ex3 - mapping(string => SymbolDetails) registeredSymbols; where SymbolDetails is the structure having different type of values as {uint256 date, string name, address owner} etc. string _name = getString(keccak256(abi.encodePacked("registeredSymbols_name", "TOKEN"));
function getUintValue(bytes32 _variable) public view
returns(uint256)
Arguments
Name
Type
Description
_variable
bytes32
getBoolValue
function getBoolValue(bytes32 _variable) public view
returns(bool)
Arguments
Name
Type
Description
_variable
bytes32
getStringValue
function getStringValue(bytes32 _variable) public view
returns(string)
Arguments
Name
Type
Description
_variable
bytes32
getAddressValue
function getAddressValue(bytes32 _variable) public view
returns(address)
Arguments
Name
Type
Description
_variable
bytes32
getBytes32Value
function getBytes32Value(bytes32 _variable) public view
returns(bytes32)
Arguments
Name
Type
Description
_variable
bytes32
getBytesValue
function getBytesValue(bytes32 _variable) public view
returns(bytes)
Arguments
Name
Type
Description
_variable
bytes32
Last updated
Was this helpful?