Contract
0xA5025FABA6E70B84F74e9b1113e5F7F4E7f4859f
12
Contract Overview
Balance:
132.240454975480350489 Ether
Token:
More Info
My Name Tag:
Not Available
[ Download CSV Export ]
Latest 25 internal transaction
[ Download CSV Export ]
This contract may be a proxy contract. Click on More Options and select Is this a proxy? to confirm and enable the "Read as Proxy" & "Write as Proxy" tabs.
Contract Name:
EternalStorageProxyForStormMultisender
Compiler Version
v0.4.20+commit.3155dd80
Optimization Enabled:
Yes with 200 runs
Other Settings:
default evmVersion
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2018-02-26 */ // File: contracts/EternalStorage.sol // Roman Storm Multi Sender // To Use this Dapp: https://poanetwork.github.io/multisender pragma solidity 0.4.20; /** * @title EternalStorage * @dev This contract holds all the necessary state variables to carry out the storage of any contract. */ contract EternalStorage { 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; } // File: contracts/UpgradeabilityOwnerStorage.sol // Roman Storm Multi Sender // To Use this Dapp: https://poanetwork.github.io/multisender pragma solidity 0.4.20; /** * @title UpgradeabilityOwnerStorage * @dev This contract keeps track of the upgradeability owner */ contract UpgradeabilityOwnerStorage { // Owner of the contract address private _upgradeabilityOwner; /** * @dev Tells the address of the owner * @return the address of the owner */ function upgradeabilityOwner() public view returns (address) { return _upgradeabilityOwner; } /** * @dev Sets the address of the owner */ function setUpgradeabilityOwner(address newUpgradeabilityOwner) internal { _upgradeabilityOwner = newUpgradeabilityOwner; } } // File: contracts/Proxy.sol // Roman Storm Multi Sender // To Use this Dapp: https://poanetwork.github.io/multisender pragma solidity 0.4.20; /** * @title Proxy * @dev Gives the possibility to delegate any call to a foreign implementation. */ contract Proxy { /** * @dev Fallback function allowing to perform a delegatecall to the given implementation. * This function will return whatever the implementation call returns */ function () public payable { address _impl = implementation(); require(_impl != address(0)); bytes memory data = msg.data; assembly { let result := delegatecall(gas, _impl, add(data, 0x20), mload(data), 0, 0) let size := returndatasize let ptr := mload(0x40) returndatacopy(ptr, 0, size) switch result case 0 { revert(ptr, size) } default { return(ptr, size) } } } /** * @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() public view returns (address); } // File: contracts/UpgradeabilityStorage.sol // Roman Storm Multi Sender // To Use this Dapp: https://poanetwork.github.io/multisender pragma solidity 0.4.20; /** * @title UpgradeabilityStorage * @dev This contract holds all the necessary state variables to support the upgrade functionality */ contract UpgradeabilityStorage { // Version name of the current implementation string internal _version; // Address of the current implementation address internal _implementation; /** * @dev Tells the version name of the current implementation * @return string representing the name of the current version */ function version() public view returns (string) { return _version; } /** * @dev Tells the address of the current implementation * @return address of the current implementation */ function implementation() public view returns (address) { return _implementation; } } // File: contracts/UpgradeabilityProxy.sol // Roman Storm Multi Sender // To Use this Dapp: https://poanetwork.github.io/multisender pragma solidity 0.4.20; /** * @title UpgradeabilityProxy * @dev This contract represents a proxy where the implementation address to which it will delegate can be upgraded */ contract UpgradeabilityProxy is Proxy, UpgradeabilityStorage { /** * @dev This event will be emitted every time the implementation gets upgraded * @param version representing the version name of the upgraded implementation * @param implementation representing the address of the upgraded implementation */ event Upgraded(string version, address indexed implementation); /** * @dev Upgrades the implementation address * @param version representing the version name of the new implementation to be set * @param implementation representing the address of the new implementation to be set */ function _upgradeTo(string version, address implementation) internal { require(_implementation != implementation); _version = version; _implementation = implementation; Upgraded(version, implementation); } } // File: contracts/OwnedUpgradeabilityProxy.sol // Roman Storm Multi Sender // To Use this Dapp: https://poanetwork.github.io/multisender pragma solidity 0.4.20; /** * @title OwnedUpgradeabilityProxy * @dev This contract combines an upgradeability proxy with basic authorization control functionalities */ contract OwnedUpgradeabilityProxy is UpgradeabilityOwnerStorage, UpgradeabilityProxy { /** * @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 the constructor sets the original owner of the contract to the sender account. */ function OwnedUpgradeabilityProxy(address _owner) public { setUpgradeabilityOwner(_owner); } /** * @dev Throws if called by any account other than the owner. */ modifier onlyProxyOwner() { require(msg.sender == proxyOwner()); _; } /** * @dev Tells the address of the proxy owner * @return the address of the proxy owner */ function proxyOwner() public view returns (address) { return upgradeabilityOwner(); } /** * @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) public onlyProxyOwner { require(newOwner != address(0)); ProxyOwnershipTransferred(proxyOwner(), newOwner); setUpgradeabilityOwner(newOwner); } /** * @dev Allows the upgradeability owner to upgrade the current version of the proxy. * @param version representing the version name of the new implementation to be set. * @param implementation representing the address of the new implementation to be set. */ function upgradeTo(string version, address implementation) public onlyProxyOwner { _upgradeTo(version, implementation); } /** * @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 version representing the version name of the new implementation to be set. * @param implementation 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 version, address implementation, bytes data) payable public onlyProxyOwner { upgradeTo(version, implementation); require(this.call.value(msg.value)(data)); } } // File: contracts/EternalStorageProxyForStormMultisender.sol // Roman Storm Multi Sender // To Use this Dapp: https://poanetwork.github.io/multisender pragma solidity 0.4.20; /** * @title EternalStorageProxy * @dev This proxy holds the storage of the token contract and delegates every call to the current implementation set. * Besides, it allows to upgrade the token's behaviour towards further implementations, and provides basic * authorization control functionalities */ contract EternalStorageProxyForStormMultisender is OwnedUpgradeabilityProxy, EternalStorage { function EternalStorageProxyForStormMultisender(address _owner) public OwnedUpgradeabilityProxy(_owner) {} }
[{"constant":true,"inputs":[],"name":"proxyOwner","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"version","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"version","type":"string"},{"name":"implementation","type":"address"}],"name":"upgradeTo","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"implementation","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"upgradeabilityOwner","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"version","type":"string"},{"name":"implementation","type":"address"},{"name":"data","type":"bytes"}],"name":"upgradeToAndCall","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"constant":false,"inputs":[{"name":"newOwner","type":"address"}],"name":"transferProxyOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"inputs":[{"name":"_owner","type":"address"}],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"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":"version","type":"string"},{"indexed":true,"name":"implementation","type":"address"}],"name":"Upgraded","type":"event"}]
Contract Creation Code
6060604052341561000f57600080fd5b6040516020806107c783398101604052808051915081905061003d8164010000000061064d61004482021704565b5050610066565b60008054600160a060020a031916600160a060020a0392909216919091179055565b610752806100756000396000f3006060604052600436106100825763ffffffff7c0100000000000000000000000000000000000000000000000000000000600035041663025313a2811461010457806354fd4d50146101335780635a8b1a9f146101bd5780635c60da1b1461021b5780636fde82021461022e578063958a41dd14610241578063f1739cae146102db575b600061008c61067c565b6100946102fa565b9150600160a060020a03821615156100ab57600080fd5b6000368080601f01602080910402602001604051908101604052818152929190602084018383808284378201915050505050509050600080825160208401855af43d604051816000823e828015610100578282f35b8282fd5b341561010f57600080fd5b61011761030a565b604051600160a060020a03909116815260200160405180910390f35b341561013e57600080fd5b610146610319565b60405160208082528190810183818151815260200191508051906020019080838360005b8381101561018257808201518382015260200161016a565b50505050905090810190601f1680156101af5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34156101c857600080fd5b61021960046024813581810190830135806020601f8201819004810201604051908101604052818152929190602084018383808284375094965050509235600160a060020a031692506103c1915050565b005b341561022657600080fd5b6101176102fa565b341561023957600080fd5b6101176103f6565b61021960046024813581810190830135806020601f82018190048102016040519081016040528181529291906020840183838082843782019150505050505091908035600160a060020a031690602001909190803590602001908201803590602001908080601f01602080910402602001604051908101604052818152929190602084018383808284375094965061040595505050505050565b34156102e657600080fd5b610219600160a060020a03600435166104c2565b600254600160a060020a03165b90565b60006103146103f6565b905090565b61032161067c565b60018054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156103b75780601f1061038c576101008083540402835291602001916103b7565b820191906000526020600020905b81548152906001019060200180831161039a57829003601f168201915b5050505050905090565b6103c961030a565b600160a060020a031633600160a060020a03161415156103e857600080fd5b6103f28282610557565b5050565b600054600160a060020a031690565b61040d61030a565b600160a060020a031633600160a060020a031614151561042c57600080fd5b61043683836103c1565b30600160a060020a0316348260405180828051906020019080838360005b8381101561046c578082015183820152602001610454565b50505050905090810190601f1680156104995780820380516001836020036101000a031916815260200191505b5091505060006040518083038185876187965a03f19250505015156104bd57600080fd5b505050565b6104ca61030a565b600160a060020a031633600160a060020a03161415156104e957600080fd5b600160a060020a03811615156104fe57600080fd5b7f5a3e66efaa1e445ebd894728a69d6959842ea1e97bd79b892797106e270efcd961052761030a565b82604051600160a060020a039283168152911660208201526040908101905180910390a16105548161064d565b50565b600254600160a060020a038281169116141561057257600080fd5b600182805161058592916020019061068e565b506002805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0383169081179091557f8e05e0e35ff592971ca8b477d4285a33a61ded208d644042667b78693a472f5e8360405160208082528190810183818151815260200191508051906020019080838360005b8381101561060f5780820151838201526020016105f7565b50505050905090810190601f16801561063c5780820380516001836020036101000a031916815260200191505b509250505060405180910390a25050565b6000805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b60206040519081016040526000815290565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106106cf57805160ff19168380011785556106fc565b828001600101855582156106fc579182015b828111156106fc5782518255916020019190600101906106e1565b5061070892915061070c565b5090565b61030791905b8082111561070857600081556001016107125600a165627a7a72305820bc3557fb7675244fad5562a2f58de4947082a096c0d74280e18e409c2fd2819400290000000000000000000000000039f22efb07a647557c7c5d17854cfd6d489ef3
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
0000000000000000000000000039f22efb07a647557c7c5d17854cfd6d489ef3
-----Decoded View---------------
Arg [0] : _owner (address): 0x0039f22efb07a647557c7c5d17854cfd6d489ef3
-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 0000000000000000000000000039f22efb07a647557c7c5d17854cfd6d489ef3
Swarm Source
bzzr://bc3557fb7675244fad5562a2f58de4947082a096c0d74280e18e409c2fd28194
A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.