Contract 0x91110c2f67e2881a8540417be9eadf5bc9f2f248

TxHash Block Age From To Value [TxFee]
0xa4c0aa0d26c1b2bd5db99858b109be0a6da74f43ffd10c31fd2699de0ce05776105825421 hr 4 mins ago0x4b82b1f8036c2ad6b559181c48d3e40f7f44c2e5 IN  0x91110c2f67e2881a8540417be9eadf5bc9f2f2480 Ether0.113868555
0xdc0f14281a9b442b1d3d9a706b73f5d009e1e58e16d97a6656d6b746a46b39bd105824931 hr 19 mins ago0x4b82b1f8036c2ad6b559181c48d3e40f7f44c2e5 IN  0x91110c2f67e2881a8540417be9eadf5bc9f2f2480 Ether0.000236823
0x3d6d8378bc84551496e6eed5eca6f13262b7b1520d6a269f2551f2ea6af46a17105824501 hr 32 mins ago0x4bc58769a5139ec2b76e93282ededc4cd2325853 IN  0x91110c2f67e2881a8540417be9eadf5bc9f2f2480 Ether0.000187082
0x5619ad0ee9f922aff498d868f7236ce0f4c989560cddd514827d2b95cc4a9ed6105820873 hrs 21 mins ago0x85cf1cb29f0c0352faebd863ec5c75444c838e39 IN  0x91110c2f67e2881a8540417be9eadf5bc9f2f2480 Ether0.000229969
0x4b519a644f50f016e85abdd62c846d97f8f7bf8d5317d678febfaab7cab50b95105776341 day 1 hr ago0x4bc58769a5139ec2b76e93282ededc4cd2325853 IN  0x91110c2f67e2881a8540417be9eadf5bc9f2f2480 Ether0.11359101
0x6496fcc1ab55bbc43e6dc47e3e89761402766ac8acf62a347c4dd08a0af097fd105776281 day 1 hr ago0x4bc58769a5139ec2b76e93282ededc4cd2325853 IN  0x91110c2f67e2881a8540417be9eadf5bc9f2f2480 Ether0.000188488
0xa2411903b6add1bf63204f1bff8273e41e4b57490c941de4150d553292ea1dc4105761861 day 9 hrs ago0xd3c2ebe309672ed8a24f2a8d13c4a34f7516eeb5 IN  0x91110c2f67e2881a8540417be9eadf5bc9f2f2480 Ether0.115054395
0x1f124f941448e09beed85cd1ebbd90dc62b10819b0c6458b4d16f065a0c4c50b105761671 day 9 hrs ago0xd3c2ebe309672ed8a24f2a8d13c4a34f7516eeb5 IN  0x91110c2f67e2881a8540417be9eadf5bc9f2f2480 Ether0.000208975
0xbd78c77e08fdd97ab533560bed5d149d0cc406b1720e236339613993fcd2b5b7105757821 day 11 hrs ago0x1b2d2797a56c9eba12aa821d643ab0dba66c3772 IN  0x91110c2f67e2881a8540417be9eadf5bc9f2f2480 Ether0.113834385
0x705b75dc9f7f9a8e4a9727111e5634cdd51a3a953f7190cd3dc4c27dfc39af31105757751 day 11 hrs ago0x1b2d2797a56c9eba12aa821d643ab0dba66c3772 IN  0x91110c2f67e2881a8540417be9eadf5bc9f2f2480 Ether0.000186417
0xaf944b37d4406f440f79bc200b9e3d2c601e3bd5e63290dffdc2922ff5bb68de105756341 day 12 hrs ago0x5711492f1bd0deaef451118648fcf603f06efe5e IN  0x91110c2f67e2881a8540417be9eadf5bc9f2f2480 Ether0.113616405
0xfb70831202006e5bd331b749f35c44999b8c27b2359923a6af89fec8eb3ef0b5105756111 day 12 hrs ago0x5711492f1bd0deaef451118648fcf603f06efe5e IN  0x91110c2f67e2881a8540417be9eadf5bc9f2f2480 Ether0.000235366
0xdeb63b507d0563256b524286138be42af303e4c6ea44d7aa0a591bf96d6879f9105729352 days 1 hr ago0xbadaa4d79467e2549cd0f956da3c8b8f08a04bad IN  0x91110c2f67e2881a8540417be9eadf5bc9f2f2480 Ether0.11358633
0xd8c8e169334de21babc0c29cd6c698ff521a4038c0ef21ec7b107e1864dc8029105729082 days 1 hr ago0xbadaa4d79467e2549cd0f956da3c8b8f08a04bad IN  0x91110c2f67e2881a8540417be9eadf5bc9f2f2480 Ether0.000185968
0x356fdef255448f0cbf0599c70c4c2ef58f8d5a1bb8b05b0b004c8133fc8a98e0105723312 days 4 hrs ago0x4aeb6312e1a425f0623ee193674e317e7710f37e IN  0x91110c2f67e2881a8540417be9eadf5bc9f2f2480 Ether0.11358066
0x172a108fc94f5cf569cc06f218d45dd93c928e3591ad509f0b16726efb69c162105723242 days 4 hrs ago0x4aeb6312e1a425f0623ee193674e317e7710f37e IN  0x91110c2f67e2881a8540417be9eadf5bc9f2f2480 Ether0.000186161
0x80f7fe2cfd116a2c08d4563ba5b53d496f3398ea4838e2884b8ef6ba8ac9796b105660873 days 12 hrs ago0x6d1cbfcba86baa6b50b079288f2efa5931d6c3b8 IN  0x91110c2f67e2881a8540417be9eadf5bc9f2f2480 Ether0.11358498
0xb67708c241d190e7050a4119fd8460868d6514f80af9c740f82bfb69b7ad1d9f105660133 days 12 hrs ago0x6d1cbfcba86baa6b50b079288f2efa5931d6c3b8 IN  0x91110c2f67e2881a8540417be9eadf5bc9f2f2480 Ether0.000232219
0x41dea6380e69aa00c3a6d355ac8b0ddc0bbaefde749b503c67a0f2a766b4b7f3105593624 days 22 hrs ago0x9c46ac89b26ee447126aaa42830b2f627c1b5f48 IN  0x91110c2f67e2881a8540417be9eadf5bc9f2f2480 Ether0.11380767
0xf322461284ab0acdb3f17565873cc245f817ae62175265b3f436295ac7093505105593324 days 22 hrs ago0x9c46ac89b26ee447126aaa42830b2f627c1b5f48 IN  0x91110c2f67e2881a8540417be9eadf5bc9f2f2480 Ether0.11380767
0xd99a408e3f70b5f48ecc642467496c3c774a4f51d3842dc86533d567f1fc92e0105526925 days 21 hrs ago0x9c46ac89b26ee447126aaa42830b2f627c1b5f48 IN  0x91110c2f67e2881a8540417be9eadf5bc9f2f2480 Ether0.11380767
0x62ed7706d2fedaefda0605c49a364668865cce9bfda2d8881ad97207ed7fd9e4105522985 days 22 hrs ago0x3ae1f3d1b5546d62035a2c5112e854f292acf2fa IN  0x91110c2f67e2881a8540417be9eadf5bc9f2f2480 Ether0.113880195
0xf7cd3b53578432b76dba59647bc3a7d1b8e0dc15611ca64adefc9e498bb8fe23105522845 days 22 hrs ago0x3ae1f3d1b5546d62035a2c5112e854f292acf2fa IN  0x91110c2f67e2881a8540417be9eadf5bc9f2f2480 Ether0.000203899
0x81f9f897c9e34dae83df8a54c51d4275e5410d5e2f77df83a02983f0f4b77f12105505126 days 4 hrs ago0xd355fe3451452b3b1de9c5d598293ecefdcb4270 IN  0x91110c2f67e2881a8540417be9eadf5bc9f2f2480 Ether0.11381193
0x57f92642ddf9379b60d8a77d401499484c8e25816ee0bf0837b5f0bafa4c23f5105497346 days 7 hrs ago0xdcdb20f8ab9b4509ee790f502f553f11fca764cf IN  0x91110c2f67e2881a8540417be9eadf5bc9f2f2480 Ether0.115718055
[ Download CSV Export 

Latest 25 internal transaction, Click here to view more Internal Transactions as a result of Contract Execution

Parent TxHash Block Age From To Value
0x29b79b42c28bef225af96615b0622f82b83ea7119661fd773074fc07954b11111058256159 mins ago0x91110c2f67e2881a8540417be9eadf5bc9f2f2480x2c650ff32fdd8fe97a8427bb9bb3dd71518c69cc0 Ether
0x29b79b42c28bef225af96615b0622f82b83ea7119661fd773074fc07954b11111058256159 mins ago0xde6d19d7a68d453244227b6ccc5d8e6c2314627a0x91110c2f67e2881a8540417be9eadf5bc9f2f2480 Ether
0x61886a6ec6b07784549c9964be8ab8c85f883491d8fc8b8d9a89bf5acfb31209105825441 hr 4 mins ago0x91110c2f67e2881a8540417be9eadf5bc9f2f2480x2c650ff32fdd8fe97a8427bb9bb3dd71518c69cc0 Ether
0x61886a6ec6b07784549c9964be8ab8c85f883491d8fc8b8d9a89bf5acfb31209105825441 hr 4 mins ago0xde6d19d7a68d453244227b6ccc5d8e6c2314627a0x91110c2f67e2881a8540417be9eadf5bc9f2f2480 Ether
0xa4c0aa0d26c1b2bd5db99858b109be0a6da74f43ffd10c31fd2699de0ce05776105825421 hr 4 mins ago0x91110c2f67e2881a8540417be9eadf5bc9f2f2480x2c650ff32fdd8fe97a8427bb9bb3dd71518c69cc0 Ether
0xa4c0aa0d26c1b2bd5db99858b109be0a6da74f43ffd10c31fd2699de0ce05776105825421 hr 4 mins ago0xde6d19d7a68d453244227b6ccc5d8e6c2314627a0x91110c2f67e2881a8540417be9eadf5bc9f2f2480 Ether
0xa4c0aa0d26c1b2bd5db99858b109be0a6da74f43ffd10c31fd2699de0ce05776105825421 hr 4 mins ago0x91110c2f67e2881a8540417be9eadf5bc9f2f2480x22f56100c6f18b656dbf1b156334206326fc672a0 Ether
0xa4c0aa0d26c1b2bd5db99858b109be0a6da74f43ffd10c31fd2699de0ce05776105825421 hr 4 mins ago0x91110c2f67e2881a8540417be9eadf5bc9f2f2480xb347b9f5b56b431b2cf4e1d90a5995f7519ca7920 Ether
0xa4c0aa0d26c1b2bd5db99858b109be0a6da74f43ffd10c31fd2699de0ce05776105825421 hr 4 mins ago0x91110c2f67e2881a8540417be9eadf5bc9f2f2480x2c650ff32fdd8fe97a8427bb9bb3dd71518c69cc0 Ether
0xdc0f14281a9b442b1d3d9a706b73f5d009e1e58e16d97a6656d6b746a46b39bd105824931 hr 19 mins ago0x91110c2f67e2881a8540417be9eadf5bc9f2f2480xb347b9f5b56b431b2cf4e1d90a5995f7519ca7920 Ether
0xdc0f14281a9b442b1d3d9a706b73f5d009e1e58e16d97a6656d6b746a46b39bd105824931 hr 19 mins ago0x91110c2f67e2881a8540417be9eadf5bc9f2f2480x2c650ff32fdd8fe97a8427bb9bb3dd71518c69cc0 Ether
0x3d6d8378bc84551496e6eed5eca6f13262b7b1520d6a269f2551f2ea6af46a17105824501 hr 32 mins ago0x91110c2f67e2881a8540417be9eadf5bc9f2f2480xb347b9f5b56b431b2cf4e1d90a5995f7519ca7920 Ether
0x3d6d8378bc84551496e6eed5eca6f13262b7b1520d6a269f2551f2ea6af46a17105824501 hr 32 mins ago0x91110c2f67e2881a8540417be9eadf5bc9f2f2480x2c650ff32fdd8fe97a8427bb9bb3dd71518c69cc0 Ether
0x5619ad0ee9f922aff498d868f7236ce0f4c989560cddd514827d2b95cc4a9ed6105820873 hrs 21 mins ago0x91110c2f67e2881a8540417be9eadf5bc9f2f2480xb347b9f5b56b431b2cf4e1d90a5995f7519ca7920 Ether
0x5619ad0ee9f922aff498d868f7236ce0f4c989560cddd514827d2b95cc4a9ed6105820873 hrs 21 mins ago0x91110c2f67e2881a8540417be9eadf5bc9f2f2480x2c650ff32fdd8fe97a8427bb9bb3dd71518c69cc0 Ether
0x4b519a644f50f016e85abdd62c846d97f8f7bf8d5317d678febfaab7cab50b95105776341 day 1 hr ago0x91110c2f67e2881a8540417be9eadf5bc9f2f2480x2c650ff32fdd8fe97a8427bb9bb3dd71518c69cc0 Ether
0x4b519a644f50f016e85abdd62c846d97f8f7bf8d5317d678febfaab7cab50b95105776341 day 1 hr ago0xde6d19d7a68d453244227b6ccc5d8e6c2314627a0x91110c2f67e2881a8540417be9eadf5bc9f2f2480 Ether
0x4b519a644f50f016e85abdd62c846d97f8f7bf8d5317d678febfaab7cab50b95105776341 day 1 hr ago0x91110c2f67e2881a8540417be9eadf5bc9f2f2480x22f56100c6f18b656dbf1b156334206326fc672a0 Ether
0x4b519a644f50f016e85abdd62c846d97f8f7bf8d5317d678febfaab7cab50b95105776341 day 1 hr ago0x91110c2f67e2881a8540417be9eadf5bc9f2f2480xb347b9f5b56b431b2cf4e1d90a5995f7519ca7920 Ether
0x4b519a644f50f016e85abdd62c846d97f8f7bf8d5317d678febfaab7cab50b95105776341 day 1 hr ago0x91110c2f67e2881a8540417be9eadf5bc9f2f2480x2c650ff32fdd8fe97a8427bb9bb3dd71518c69cc0 Ether
0x6496fcc1ab55bbc43e6dc47e3e89761402766ac8acf62a347c4dd08a0af097fd105776281 day 1 hr ago0x91110c2f67e2881a8540417be9eadf5bc9f2f2480xb347b9f5b56b431b2cf4e1d90a5995f7519ca7920 Ether
0x6496fcc1ab55bbc43e6dc47e3e89761402766ac8acf62a347c4dd08a0af097fd105776281 day 1 hr ago0x91110c2f67e2881a8540417be9eadf5bc9f2f2480x2c650ff32fdd8fe97a8427bb9bb3dd71518c69cc0 Ether
0xdb4ae543f5c7e342a9ba337fce7696eeeb545b93ecff81b09558269127de5ae1105762291 day 9 hrs ago0x91110c2f67e2881a8540417be9eadf5bc9f2f2480x2c650ff32fdd8fe97a8427bb9bb3dd71518c69cc0 Ether
0xdb4ae543f5c7e342a9ba337fce7696eeeb545b93ecff81b09558269127de5ae1105762291 day 9 hrs ago0xde6d19d7a68d453244227b6ccc5d8e6c2314627a0x91110c2f67e2881a8540417be9eadf5bc9f2f2480 Ether
0xa2411903b6add1bf63204f1bff8273e41e4b57490c941de4150d553292ea1dc4105761861 day 9 hrs ago0x91110c2f67e2881a8540417be9eadf5bc9f2f2480x2c650ff32fdd8fe97a8427bb9bb3dd71518c69cc0 Ether
[ Download CSV Export 
Warning: The compiled contract might be susceptible to ExpExponentCleanup (medium/high-severity), EventStructWrongData (very low-severity) Solidity Compiler Bugs.

Contract Source Code Verified (Similar Match)
Note: This contract matches the deployed ByteCode of the Verified Source Code for Contract 0xef600e4904fe0a2f4587ae94bcbed4c9e9aeb37a

Contract Name:
SecurityTokenRegistryProxy

Compiler Version
v0.4.24+commit.e67f0147

Optimization Enabled:
Yes

Runs (Optimizer):
200

Contract Source Code

pragma solidity ^0.4.24;

contract EternalStorage {

    /// @notice Internal mappings used to store all kinds on data into the contract
    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;

    /// @notice Internal mappings used to store arrays of different data types
    mapping(bytes32 => bytes32[]) internal bytes32ArrayStorage;
    mapping(bytes32 => uint256[]) internal uintArrayStorage;
    mapping(bytes32 => address[]) internal addressArrayStorage;
    mapping(bytes32 => string[]) internal stringArrayStorage;

    //////////////////
    //// set functions
    //////////////////
    /// @notice 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("registeredSymbols_name", "TOKEN"), "MyFirstToken");
    /// More generalized- set(keccak256(abi.encodePacked("registeredSymbols_<struct variable>", "keyname"), "value");

    function set(bytes32 _key, uint256 _value) internal {
        uintStorage[_key] = _value;
    }

    function set(bytes32 _key, address _value) internal {
        addressStorage[_key] = _value;
    }

    function set(bytes32 _key, bool _value) internal {
        boolStorage[_key] = _value;
    }

    function set(bytes32 _key, bytes32 _value) internal {
        bytes32Storage[_key] = _value;
    }

    function set(bytes32 _key, string _value) internal {
        stringStorage[_key] = _value;
    }

    ////////////////////
    /// get functions
    ////////////////////
    /// @notice 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 getBool(bytes32 _key) internal view returns (bool) {
        return boolStorage[_key];
    }

    function getUint(bytes32 _key) internal view returns (uint256) {
        return uintStorage[_key];
    }

    function getAddress(bytes32 _key) internal view returns (address) {
        return addressStorage[_key];
    }

    function getString(bytes32 _key) internal view returns (string) {
        return stringStorage[_key];
    }

    function getBytes32(bytes32 _key) internal view returns (bytes32) {
        return bytes32Storage[_key];
    }


    ////////////////////////////
    // deleteArray functions
    ////////////////////////////
    /// @notice 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


    //Deletes from mapping (bytes32 => array[]) at index _index
    function deleteArrayAddress(bytes32 _key, uint256 _index) internal {
        address[] storage array = addressArrayStorage[_key];
        require(_index < array.length, "Index should less than length of the array");
        array[_index] = array[array.length - 1];
        array.length = array.length - 1;
    }

    //Deletes from mapping (bytes32 => bytes32[]) at index _index
    function deleteArrayBytes32(bytes32 _key, uint256 _index) internal {
        bytes32[] storage array = bytes32ArrayStorage[_key];
        require(_index < array.length, "Index should less than length of the array");
        array[_index] = array[array.length - 1];
        array.length = array.length - 1;
    }

    //Deletes from mapping (bytes32 => uint[]) at index _index
    function deleteArrayUint(bytes32 _key, uint256 _index) internal {
        uint256[] storage array = uintArrayStorage[_key];
        require(_index < array.length, "Index should less than length of the array");
        array[_index] = array[array.length - 1];
        array.length = array.length - 1;
    }

    //Deletes from mapping (bytes32 => string[]) at index _index
    function deleteArrayString(bytes32 _key, uint256 _index) internal {
        string[] storage array = stringArrayStorage[_key];
        require(_index < array.length, "Index should less than length of the array");
        array[_index] = array[array.length - 1];
        array.length = array.length - 1;
    }

    ////////////////////////////
    //// pushArray functions
    ///////////////////////////
    /// @notice 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");

    /// @notice use to store the values for the array
    /// @param _key bytes32 type
    /// @param _value [uint256, string, bytes32, address] any of the data type in array
    function pushArray(bytes32 _key, address _value) internal {
        addressArrayStorage[_key].push(_value);
    }

    function pushArray(bytes32 _key, bytes32 _value) internal {
        bytes32ArrayStorage[_key].push(_value);
    }

    function pushArray(bytes32 _key, string _value) internal {
        stringArrayStorage[_key].push(_value);
    }

    function pushArray(bytes32 _key, uint256 _value) internal {
        uintArrayStorage[_key].push(_value);
    }

    /////////////////////////
    //// Set Array functions
    ////////////////////////
    /// @notice used to intialize the array
    /// Ex1- mapping (address => address[]) public reputation;
    /// reputation[0x1] = new address[](0); It can be replaced as
    /// setArray(hash('reputation', 0x1), new address[](0)); 
    
    function setArray(bytes32 _key, address[] _value) internal {
        addressArrayStorage[_key] = _value;
    }

    function setArray(bytes32 _key, uint256[] _value) internal {
        uintArrayStorage[_key] = _value;
    }

    function setArray(bytes32 _key, bytes32[] _value) internal {
        bytes32ArrayStorage[_key] = _value;
    }

    function setArray(bytes32 _key, string[] _value) internal {
        stringArrayStorage[_key] = _value;
    }

    /////////////////////////
    /// getArray functions
    /////////////////////////
    /// @notice 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) internal view returns(address[]) {
        return addressArrayStorage[_key];
    }

    function getArrayBytes32(bytes32 _key) internal view returns(bytes32[]) {
        return bytes32ArrayStorage[_key];
    }

    function getArrayString(bytes32 _key) internal view returns(string[]) {
        return stringArrayStorage[_key];
    }

    function getArrayUint(bytes32 _key) internal view returns(uint[]) {
        return uintArrayStorage[_key];
    }

    ///////////////////////////////////
    /// setArrayIndexValue() functions
    ///////////////////////////////////
    /// @notice 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 {
        addressArrayStorage[_key][_index] = _value;
    }

    function setArrayIndexValue(bytes32 _key, uint256 _index, uint256 _value) internal {
        uintArrayStorage[_key][_index] = _value;
    }

    function setArrayIndexValue(bytes32 _key, uint256 _index, bytes32 _value) internal {
        bytes32ArrayStorage[_key][_index] = _value;
    }

    function setArrayIndexValue(bytes32 _key, uint256 _index, string _value) internal {
        stringArrayStorage[_key][_index] = _value;
    }

        /////////////////////////////
        /// Public getters functions
        /////////////////////////////

    function getUintValues(bytes32 _variable) public view returns(uint256) {
        return uintStorage[_variable];
    }

    function getBoolValues(bytes32 _variable) public view returns(bool) {
        return boolStorage[_variable];
    }

    function getStringValues(bytes32 _variable) public view returns(string) {
        return stringStorage[_variable];
    }

    function getAddressValues(bytes32 _variable) public view returns(address) {
        return addressStorage[_variable];
    }

    function getBytes32Values(bytes32 _variable) public view returns(bytes32) {
        return bytes32Storage[_variable];
    }

    function getBytesValues(bytes32 _variable) public view returns(bytes) {
        return bytesStorage[_variable];
    }

}

/**
 * @title Proxy
 * @dev Gives the possibility to delegate any call to a foreign implementation.
 */
contract Proxy {

    /**
    * @dev Tells the address of the implementation where every call will be delegated.
    * @return address of the implementation to which it will be delegated
    */
    function _implementation() internal view returns (address);

    /**
    * @dev Fallback function.
    * Implemented entirely in `_fallback`.
    */
    function _fallback() internal {
        _delegate(_implementation());
    }

    /**
    * @dev Fallback function allowing to perform a delegatecall to the given implementation.
    * This function will return whatever the implementation call returns
    */
    function _delegate(address implementation) internal {
        /*solium-disable-next-line security/no-inline-assembly*/
        assembly {
            // Copy msg.data. We take full control of memory in this inline assembly
            // block because it will not return to Solidity code. We overwrite the
            // Solidity scratch pad at memory position 0.
            calldatacopy(0, 0, calldatasize)

            // Call the implementation.
            // out and outsize are 0 because we don't know the size yet.
            let result := delegatecall(gas, implementation, 0, calldatasize, 0, 0)

            // Copy the returned data.
            returndatacopy(0, 0, returndatasize)

            switch result
            // delegatecall returns 0 on error.
            case 0 { revert(0, returndatasize) }
            default { return(0, returndatasize) }
        }
    }

    function () public payable {
        _fallback();
    }
}

/**
 * Utility library of inline functions on addresses
 */
library AddressUtils {

  /**
   * Returns whether the target address is a contract
   * @dev This function will return false if invoked during the constructor of a contract,
   *  as the code is not actually created until after the constructor finishes.
   * @param addr address to check
   * @return whether the target address is a contract
   */
  function isContract(address addr) internal view returns (bool) {
    uint256 size;
    // XXX Currently there is no better way to check if there is a contract in an address
    // than to check the size of the code at that address.
    // See https://ethereum.stackexchange.com/a/14016/36603
    // for more details about how this works.
    // TODO Check this again before the Serenity release, because all addresses will be
    // contracts then.
    // solium-disable-next-line security/no-inline-assembly
    assembly { size := extcodesize(addr) }
    return size > 0;
  }

}

/**
 * @title UpgradeabilityProxy
 * @dev This contract represents a proxy where the implementation address to which it will delegate can be upgraded
 */
contract UpgradeabilityProxy is Proxy {

    // Version name of the current implementation
    string internal __version;

    // Address of the current implementation
    address internal __implementation;

    /**
    * @dev This event will be emitted every time the implementation gets upgraded
    * @param _newVersion representing the version name of the upgraded implementation
    * @param _newImplementation representing the address of the upgraded implementation
    */
    event Upgraded(string _newVersion, address indexed _newImplementation);

    /**
    * @dev Upgrades the implementation address
    * @param _newVersion representing the version name of the new implementation to be set
    * @param _newImplementation representing the address of the new implementation to be set
    */
    function _upgradeTo(string _newVersion, address _newImplementation) internal {
        require(
            __implementation != _newImplementation && _newImplementation != address(0),
            "Old address is not allowed and implementation address should not be 0x"
        );
        require(AddressUtils.isContract(_newImplementation), "Cannot set a proxy implementation to a non-contract address");
        require(bytes(_newVersion).length > 0, "Version should not be empty string");
        require(keccak256(abi.encodePacked(__version)) != keccak256(abi.encodePacked(_newVersion)), "New version equals to current");
        __version = _newVersion;
        __implementation = _newImplementation;
        emit Upgraded(_newVersion, _newImplementation);
    }

}

/**
 * @title OwnedUpgradeabilityProxy
 * @dev This contract combines an upgradeability proxy with basic authorization control functionalities
 */
contract OwnedUpgradeabilityProxy is UpgradeabilityProxy {

    // Owner of the contract
    address private __upgradeabilityOwner;

    /**
    * @dev Event to show ownership has been transferred
    * @param _previousOwner representing the address of the previous owner
    * @param _newOwner representing the address of the new owner
    */
    event ProxyOwnershipTransferred(address _previousOwner, address _newOwner);

    /**
    * @dev Throws if called by any account other than the owner.
    */
    modifier ifOwner() {
        if (msg.sender == _upgradeabilityOwner()) {
            _;
        } else {
            _fallback();
        }
    }

    /**
    * @dev the constructor sets the original owner of the contract to the sender account.
    */
    constructor() public {
        _setUpgradeabilityOwner(msg.sender);
    }

    /**
    * @dev Tells the address of the owner
    * @return the address of the owner
    */
    function _upgradeabilityOwner() internal view returns (address) {
        return __upgradeabilityOwner;
    }

    /**
    * @dev Sets the address of the owner
    */
    function _setUpgradeabilityOwner(address _newUpgradeabilityOwner) internal {
        require(_newUpgradeabilityOwner != address(0), "Address should not be 0x");
        __upgradeabilityOwner = _newUpgradeabilityOwner;
    }

    /**
    * @notice Internal function to provide the address of the implementation contract
    */
    function _implementation() internal view returns (address) {
        return __implementation;
    }

    /**
    * @dev Tells the address of the proxy owner
    * @return the address of the proxy owner
    */
    function proxyOwner() external ifOwner returns (address) {
        return _upgradeabilityOwner();
    }

    /**
    * @dev Tells the version name of the current implementation
    * @return string representing the name of the current version
    */
    function version() external ifOwner returns (string) {
        return __version;
    }

    /**
    * @dev Tells the address of the current implementation
    * @return address of the current implementation
    */
    function implementation() external ifOwner returns (address) {
        return _implementation();
    }

    /**
    * @dev Allows the current owner to transfer control of the contract to a newOwner.
    * @param _newOwner The address to transfer ownership to.
    */
    function transferProxyOwnership(address _newOwner) external ifOwner {
        require(_newOwner != address(0), "Address should not be 0x");
        emit ProxyOwnershipTransferred(_upgradeabilityOwner(), _newOwner);
        _setUpgradeabilityOwner(_newOwner);
    }

    /**
    * @dev Allows the upgradeability owner to upgrade the current version of the proxy.
    * @param _newVersion representing the version name of the new implementation to be set.
    * @param _newImplementation representing the address of the new implementation to be set.
    */
    function upgradeTo(string _newVersion, address _newImplementation) external ifOwner {
        _upgradeTo(_newVersion, _newImplementation);
    }

    /**
    * @dev Allows the upgradeability owner to upgrade the current version of the proxy and call the new implementation
    * to initialize whatever is needed through a low level call.
    * @param _newVersion representing the version name of the new implementation to be set.
    * @param _newImplementation representing the address of the new implementation to be set.
    * @param _data represents the msg.data to bet sent in the low level call. This parameter may include the function
    * signature of the implementation to be called with the needed payload
    */
    function upgradeToAndCall(string _newVersion, address _newImplementation, bytes _data) external payable ifOwner {
        _upgradeTo(_newVersion, _newImplementation);
        /*solium-disable-next-line security/no-call-value*/
        require(address(this).call.value(msg.value)(_data), "Fail in executing the function of implementation contract");
    }

}

/**
 * @title SecurityTokenRegistryProxy
 * @dev This proxy holds the storage of the SecurityTokenRegistry contract and delegates every call to the current implementation set.
 * Besides, it allows to upgrade the SecurityTokenRegistry's behaviour towards further implementations, and provides basic
 * authorization control functionalities
 */
/*solium-disable-next-line no-empty-blocks*/
contract SecurityTokenRegistryProxy is EternalStorage, OwnedUpgradeabilityProxy {

}

Contract ABI

[{"constant":false,"inputs":[],"name":"proxyOwner","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_variable","type":"bytes32"}],"name":"getBoolValues","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_variable","type":"bytes32"}],"name":"getUintValues","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"version","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_newVersion","type":"string"},{"name":"_newImplementation","type":"address"}],"name":"upgradeTo","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"implementation","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_variable","type":"bytes32"}],"name":"getStringValues","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_newVersion","type":"string"},{"name":"_newImplementation","type":"address"},{"name":"_data","type":"bytes"}],"name":"upgradeToAndCall","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"constant":true,"inputs":[{"name":"_variable","type":"bytes32"}],"name":"getBytes32Values","outputs":[{"name":"","type":"bytes32"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_variable","type":"bytes32"}],"name":"getAddressValues","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_variable","type":"bytes32"}],"name":"getBytesValues","outputs":[{"name":"","type":"bytes"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_newOwner","type":"address"}],"name":"transferProxyOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"payable":true,"stateMutability":"payable","type":"fallback"},{"anonymous":false,"inputs":[{"indexed":false,"name":"_previousOwner","type":"address"},{"indexed":false,"name":"_newOwner","type":"address"}],"name":"ProxyOwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"_newVersion","type":"string"},{"indexed":true,"name":"_newImplementation","type":"address"}],"name":"Upgraded","type":"event"}]

Contract Creation Code

60806040526100163364010000000061001b810204565b6100b4565b600160a060020a038116151561009257604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f416464726573732073686f756c64206e6f742062652030780000000000000000604482015290519081900360640190fd5b600d8054600160a060020a031916600160a060020a0392909216919091179055565b610dfb806100c36000396000f3006080604052600436106100b95763ffffffff7c0100000000000000000000000000000000000000000000000000000000600035041663025313a281146100c35780631d8acf1b146100f457806326839e531461012057806354fd4d501461014a5780635a8b1a9f146101d45780635c60da1b1461020257806369ba0fe914610217578063958a41dd1461022f578063b3447ac91461025b578063baed8bb114610273578063c6cb7ab81461028b578063f1739cae146102a3575b6100c16102c4565b005b3480156100cf57600080fd5b506100d86102d6565b60408051600160a060020a039092168252519081900360200190f35b34801561010057600080fd5b5061010c600435610313565b604080519115158252519081900360200190f35b34801561012c57600080fd5b50610138600435610328565b60408051918252519081900360200190f35b34801561015657600080fd5b5061015f61033a565b6040805160208082528351818301528351919283929083019185019080838360005b83811015610199578181015183820152602001610181565b50505050905090810190601f1680156101c65780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156101e057600080fd5b506100c16024600480358281019291013590600160a060020a039035166103ef565b34801561020e57600080fd5b506100d861045d565b34801561022357600080fd5b5061015f600435610488565b6100c1602460048035828101929082013591600160a060020a038235169160443590810191013561052b565b34801561026757600080fd5b50610138600435610648565b34801561027f57600080fd5b506100d860043561065a565b34801561029757600080fd5b5061015f600435610675565b3480156102af57600080fd5b506100c1600160a060020a03600435166106df565b6102d46102cf6107c4565b6107d3565b565b60006102e06107f7565b600160a060020a031633600160a060020a03161415610308576103016107f7565b9050610310565b6103106102c4565b90565b60009081526004602052604090205460ff1690565b60009081526020819052604090205490565b60606103446107f7565b600160a060020a031633600160a060020a0316141561030857600b805460408051602060026001851615610100026000190190941693909304601f810184900484028201840190925281815292918301828280156103e35780601f106103b8576101008083540402835291602001916103e3565b820191906000526020600020905b8154815290600101906020018083116103c657829003601f168201915b50505050509050610310565b6103f76107f7565b600160a060020a031633600160a060020a031614156104505761044b83838080601f016020809104026020016040519081016040528093929190818152602001838380828437508794506108069350505050565b610458565b6104586102c4565b505050565b60006104676107f7565b600160a060020a031633600160a060020a03161415610308576103016107c4565b60008181526001602081815260409283902080548451600260001995831615610100029590950190911693909304601f8101839004830284018301909452838352606093909183018282801561051f5780601f106104f45761010080835404028352916020019161051f565b820191906000526020600020905b81548152906001019060200180831161050257829003601f168201915b50505050509050919050565b6105336107f7565b600160a060020a031633600160a060020a031614156106395761058785858080601f016020809104026020016040519081016040528093929190818152602001838380828437508994506108069350505050565b30600160a060020a03163483836040518083838082843782019150509250505060006040518083038185875af1925050501515610634576040805160e560020a62461bcd02815260206004820152603960248201527f4661696c20696e20657865637574696e67207468652066756e6374696f6e206f60448201527f6620696d706c656d656e746174696f6e20636f6e747261637400000000000000606482015290519081900360840190fd5b610641565b6106416102c4565b5050505050565b60009081526006602052604090205490565b600090815260026020526040902054600160a060020a031690565b60008181526003602090815260409182902080548351601f600261010060018516150260001901909316929092049182018490048402810184019094528084526060939283018282801561051f5780601f106104f45761010080835404028352916020019161051f565b6106e76107f7565b600160a060020a031633600160a060020a031614156107b957600160a060020a0381161515610760576040805160e560020a62461bcd02815260206004820152601860248201527f416464726573732073686f756c64206e6f742062652030780000000000000000604482015290519081900360640190fd5b7f5a3e66efaa1e445ebd894728a69d6959842ea1e97bd79b892797106e270efcd96107896107f7565b60408051600160a060020a03928316815291841660208301528051918290030190a16107b481610ca0565b6107c1565b6107c16102c4565b50565b600c54600160a060020a031690565b3660008037600080366000845af43d6000803e8080156107f2573d6000f35b3d6000fd5b600d54600160a060020a031690565b600c54600160a060020a0382811691161480159061082c5750600160a060020a03811615155b15156108ce576040805160e560020a62461bcd02815260206004820152604660248201527f4f6c642061646472657373206973206e6f7420616c6c6f77656420616e64206960448201527f6d706c656d656e746174696f6e20616464726573732073686f756c64206e6f7460648201527f2062652030780000000000000000000000000000000000000000000000000000608482015290519081900360a40190fd5b6108d781610d2f565b1515610953576040805160e560020a62461bcd02815260206004820152603b60248201527f43616e6e6f742073657420612070726f787920696d706c656d656e746174696f60448201527f6e20746f2061206e6f6e2d636f6e747261637420616464726573730000000000606482015290519081900360840190fd5b81516000106109d2576040805160e560020a62461bcd02815260206004820152602260248201527f56657273696f6e2073686f756c64206e6f7420626520656d707479207374726960448201527f6e67000000000000000000000000000000000000000000000000000000000000606482015290519081900360840190fd5b816040516020018082805190602001908083835b60208310610a055780518252601f1990920191602091820191016109e6565b6001836020036101000a0380198251168184511680821785525050505050509050019150506040516020818303038152906040526040518082805190602001908083835b60208310610a685780518252601f199092019160209182019101610a49565b6001836020036101000a038019825116818451168082178552505050505050905001915050604051809103902060001916600b6040516020018082805460018160011615610100020316600290048015610af95780601f10610ad7576101008083540402835291820191610af9565b820191906000526020600020905b815481529060010190602001808311610ae5575b50509150506040516020818303038152906040526040518082805190602001908083835b60208310610b3c5780518252601f199092019160209182019101610b1d565b6001836020036101000a03801982511681845116808217855250505050505090500191505060405180910390206000191614151515610bc5576040805160e560020a62461bcd02815260206004820152601d60248201527f4e65772076657273696f6e20657175616c7320746f2063757272656e74000000604482015290519081900360640190fd5b8151610bd890600b906020850190610d37565b50600c805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a03831690811790915560408051602080825285518183015285517f8e05e0e35ff592971ca8b477d4285a33a61ded208d644042667b78693a472f5e938793928392918301919085019080838360005b83811015610c62578181015183820152602001610c4a565b50505050905090810190601f168015610c8f5780820380516001836020036101000a031916815260200191505b509250505060405180910390a25050565b600160a060020a0381161515610d00576040805160e560020a62461bcd02815260206004820152601860248201527f416464726573732073686f756c64206e6f742062652030780000000000000000604482015290519081900360640190fd5b600d805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b6000903b1190565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10610d7857805160ff1916838001178555610da5565b82800160010185558215610da5579182015b82811115610da5578251825591602001919060010190610d8a565b50610db1929150610db5565b5090565b61031091905b80821115610db15760008155600101610dbb5600a165627a7a72305820c0157b60606c5025d2f13e3c90534f739ccb0b39bef31a59c3158218e9fdf7d50029

Swarm Source

bzzr://c0157b60606c5025d2f13e3c90534f739ccb0b39bef31a59c3158218e9fdf7d5
Block Age Transaction Difficulty GasUsed Reward
Block Age Uncle Number Difficulty GasUsed Reward