More Info
Private Name Tags
ContractCreator
Latest 8 from a total of 8 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Set Audius Proxy... | 15258926 | 839 days ago | IN | 0 ETH | 0.00042373 | ||||
Upgrade To | 15221205 | 845 days ago | IN | 0 ETH | 0.00037707 | ||||
Initialize | 15221067 | 845 days ago | IN | 0 ETH | 0.00032544 | ||||
Initialize | 15221060 | 845 days ago | IN | 0 ETH | 0.00082332 | ||||
Upgrade To | 15221049 | 845 days ago | IN | 0 ETH | 0.00028001 | ||||
Initialize | 13751978 | 1078 days ago | IN | 0 ETH | 0.00242667 | ||||
Delegate Stake F... | 13045994 | 1188 days ago | IN | 0 ETH | 0.00162025 | ||||
0x60806040 | 11103298 | 1488 days ago | IN | 0 ETH | 0.03174424 |
View more zero value Internal Transactions in Advanced View mode
Advanced mode:
Loading...
Loading
Contract Name:
AudiusAdminUpgradeabilityProxy
Compiler Version
v0.5.17+commit.d19bba13
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2020-10-22 */ // File: @openzeppelin/upgrades/contracts/upgradeability/Proxy.sol pragma solidity ^0.5.0; /** * @title Proxy * @dev Implements delegation of calls to other contracts, with proper * forwarding of return values and bubbling of failures. * It defines a fallback function that delegates all calls to the address * returned by the abstract _implementation() internal function. */ contract Proxy { /** * @dev Fallback function. * Implemented entirely in `_fallback`. */ function () payable external { _fallback(); } /** * @return The Address of the implementation. */ function _implementation() internal view returns (address); /** * @dev Delegates execution to an implementation contract. * This is a low level function that doesn't return to its internal call site. * It will return to the external caller whatever the implementation returns. * @param implementation Address to delegate. */ function _delegate(address implementation) internal { 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) } } } /** * @dev Function that is run as the first thing in the fallback function. * Can be redefined in derived contracts to add functionality. * Redefinitions must call super._willFallback(). */ function _willFallback() internal { } /** * @dev fallback implementation. * Extracted to enable manual triggering. */ function _fallback() internal { _willFallback(); _delegate(_implementation()); } } // File: @openzeppelin/upgrades/contracts/utils/Address.sol pragma solidity ^0.5.0; /** * Utility library of inline functions on addresses * * Source https://raw.githubusercontent.com/OpenZeppelin/openzeppelin-solidity/v2.1.3/contracts/utils/Address.sol * This contract is copied here and renamed from the original to avoid clashes in the compiled artifacts * when the user imports a zos-lib contract (that transitively causes this contract to be compiled and added to the * build/artifacts folder) as well as the vanilla Address implementation from an openzeppelin version. */ library OpenZeppelinUpgradesAddress { /** * 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 account address of the account to check * @return whether the target address is a contract */ function isContract(address account) 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. // solhint-disable-next-line no-inline-assembly assembly { size := extcodesize(account) } return size > 0; } } // File: @openzeppelin/upgrades/contracts/upgradeability/BaseUpgradeabilityProxy.sol pragma solidity ^0.5.0; /** * @title BaseUpgradeabilityProxy * @dev This contract implements a proxy that allows to change the * implementation address to which it will delegate. * Such a change is called an implementation upgrade. */ contract BaseUpgradeabilityProxy is Proxy { /** * @dev Emitted when the implementation is upgraded. * @param implementation Address of the new implementation. */ event Upgraded(address indexed implementation); /** * @dev Storage slot with the address of the current implementation. * This is the keccak-256 hash of "eip1967.proxy.implementation" subtracted by 1, and is * validated in the constructor. */ bytes32 internal constant IMPLEMENTATION_SLOT = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc; /** * @dev Returns the current implementation. * @return Address of the current implementation */ function _implementation() internal view returns (address impl) { bytes32 slot = IMPLEMENTATION_SLOT; assembly { impl := sload(slot) } } /** * @dev Upgrades the proxy to a new implementation. * @param newImplementation Address of the new implementation. */ function _upgradeTo(address newImplementation) internal { _setImplementation(newImplementation); emit Upgraded(newImplementation); } /** * @dev Sets the implementation address of the proxy. * @param newImplementation Address of the new implementation. */ function _setImplementation(address newImplementation) internal { require(OpenZeppelinUpgradesAddress.isContract(newImplementation), "Cannot set a proxy implementation to a non-contract address"); bytes32 slot = IMPLEMENTATION_SLOT; assembly { sstore(slot, newImplementation) } } } // File: @openzeppelin/upgrades/contracts/upgradeability/UpgradeabilityProxy.sol pragma solidity ^0.5.0; /** * @title UpgradeabilityProxy * @dev Extends BaseUpgradeabilityProxy with a constructor for initializing * implementation and init data. */ contract UpgradeabilityProxy is BaseUpgradeabilityProxy { /** * @dev Contract constructor. * @param _logic Address of the initial implementation. * @param _data Data to send as msg.data to the implementation to initialize the proxied contract. * It should include the signature and the parameters of the function to be called, as described in * https://solidity.readthedocs.io/en/v0.4.24/abi-spec.html#function-selector-and-argument-encoding. * This parameter is optional, if no data is given the initialization call to proxied contract will be skipped. */ constructor(address _logic, bytes memory _data) public payable { assert(IMPLEMENTATION_SLOT == bytes32(uint256(keccak256('eip1967.proxy.implementation')) - 1)); _setImplementation(_logic); if(_data.length > 0) { (bool success,) = _logic.delegatecall(_data); require(success); } } } // File: contracts/AudiusAdminUpgradeabilityProxy.sol pragma solidity ^0.5.0; /** * @notice Wrapper around OpenZeppelin's UpgradeabilityProxy contract. * Permissions proxy upgrade logic to Audius Governance contract. * https://github.com/OpenZeppelin/openzeppelin-sdk/blob/release/2.8/packages/lib/contracts/upgradeability/UpgradeabilityProxy.sol * @dev Any logic contract that has a signature clash with this proxy contract will be unable to call those functions * Please ensure logic contract functions do not share a signature with any functions defined in this file */ contract AudiusAdminUpgradeabilityProxy is UpgradeabilityProxy { address private proxyAdmin; string private constant ERROR_ONLY_ADMIN = ( "AudiusAdminUpgradeabilityProxy: Caller must be current proxy admin" ); /** * @notice Sets admin address for future upgrades * @param _logic - address of underlying logic contract. * Passed to UpgradeabilityProxy constructor. * @param _proxyAdmin - address of proxy admin * Set to governance contract address for all non-governance contracts * Governance is deployed and upgraded to have own address as admin * @param _data - data of function to be called on logic contract. * Passed to UpgradeabilityProxy constructor. */ constructor( address _logic, address _proxyAdmin, bytes memory _data ) UpgradeabilityProxy(_logic, _data) public payable { proxyAdmin = _proxyAdmin; } /** * @notice Upgrade the address of the logic contract for this proxy * @dev Recreation of AdminUpgradeabilityProxy._upgradeTo. * Adds a check to ensure msg.sender is the Audius Proxy Admin * @param _newImplementation - new address of logic contract that the proxy will point to */ function upgradeTo(address _newImplementation) external { require(msg.sender == proxyAdmin, ERROR_ONLY_ADMIN); _upgradeTo(_newImplementation); } /** * @return Current proxy admin address */ function getAudiusProxyAdminAddress() external view returns (address) { return proxyAdmin; } /** * @return The address of the implementation. */ function implementation() external view returns (address) { return _implementation(); } /** * @notice Set the Audius Proxy Admin * @dev Only callable by current proxy admin address * @param _adminAddress - new admin address */ function setAudiusProxyAdminAddress(address _adminAddress) external { require(msg.sender == proxyAdmin, ERROR_ONLY_ADMIN); proxyAdmin = _adminAddress; } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[{"internalType":"address","name":"_logic","type":"address"},{"internalType":"address","name":"_proxyAdmin","type":"address"},{"internalType":"bytes","name":"_data","type":"bytes"}],"payable":true,"stateMutability":"payable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"implementation","type":"address"}],"name":"Upgraded","type":"event"},{"payable":true,"stateMutability":"payable","type":"fallback"},{"constant":true,"inputs":[],"name":"getAudiusProxyAdminAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"implementation","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"_adminAddress","type":"address"}],"name":"setAudiusProxyAdminAddress","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"_newImplementation","type":"address"}],"name":"upgradeTo","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"}]
Contract Creation Code
60806040526040516107233803806107238339818101604052606081101561002657600080fd5b8151602083015160408085018051915193959294830192918464010000000082111561005157600080fd5b90830190602082018581111561006657600080fd5b825164010000000081118282018810171561008057600080fd5b82525081516020918201929091019080838360005b838110156100ad578181015183820152602001610095565b50505050905090810190601f1680156100da5780820380516001836020036101000a031916815260200191505b5060408181527f656970313936372e70726f78792e696d706c656d656e746174696f6e0000000082525190819003601c0190208693508492506000805160206106c883398151915260001990910114905061013157fe5b610143826001600160e01b0361022616565b8051156101fb576000826001600160a01b0316826040518082805190602001908083835b602083106101865780518252601f199092019160209182019101610167565b6001836020036101000a038019825116818451168082178552505050505050905001915050600060405180830381855af49150503d80600081146101e6576040519150601f19603f3d011682016040523d82523d6000602084013e6101eb565b606091505b50509050806101f957600080fd5b505b5050600080546001600160a01b0319166001600160a01b0393909316929092179091555061028c9050565b6102398161028660201b6103751760201c565b6102745760405162461bcd60e51b815260040180806020018281038252603b8152602001806106e8603b913960400191505060405180910390fd5b6000805160206106c883398151915255565b3b151590565b61042d8061029b6000396000f3fe60806040526004361061003f5760003560e01c80631a31c07c146100495780633659cfe61461007a5780635c60da1b146100ad57806391f52f7c146100c2575b6100476100f5565b005b34801561005557600080fd5b5061005e61010f565b604080516001600160a01b039092168252519081900360200190f35b34801561008657600080fd5b506100476004803603602081101561009d57600080fd5b50356001600160a01b031661011e565b3480156100b957600080fd5b5061005e6101dd565b3480156100ce57600080fd5b50610047600480360360208110156100e557600080fd5b50356001600160a01b03166101ec565b6100fd61010d565b61010d610108610284565b6102a9565b565b6000546001600160a01b031690565b600054604080516080810190915260428082526001600160a01b039092163314916103b76020830139906101d05760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561019557818101518382015260200161017d565b50505050905090810190601f1680156101c25780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b506101da816102cd565b50565b60006101e7610284565b905090565b600054604080516080810190915260428082526001600160a01b039092163314916103b76020830139906102615760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831561019557818101518382015260200161017d565b50600080546001600160a01b0319166001600160a01b0392909216919091179055565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5490565b3660008037600080366000845af43d6000803e8080156102c8573d6000f35b3d6000fd5b6102d68161030d565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b61031681610375565b6103515760405162461bcd60e51b815260040180806020018281038252603b81526020018061037c603b913960400191505060405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc55565b3b15159056fe43616e6e6f742073657420612070726f787920696d706c656d656e746174696f6e20746f2061206e6f6e2d636f6e7472616374206164647265737341756469757341646d696e557067726164656162696c69747950726f78793a2043616c6c6572206d7573742062652063757272656e742070726f78792061646d696ea265627a7a72315820a551cf727c8099373373b8689dcdfc966296cba633c0ebc5ddca4eebe565568964736f6c63430005110032360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc43616e6e6f742073657420612070726f787920696d706c656d656e746174696f6e20746f2061206e6f6e2d636f6e74726163742061646472657373000000000000000000000000ea10fd3536fce6a5d40d55c790b96df33b26702f0000000000000000000000004deca517d6817b6510798b7328f2314d3003abac00000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000044485cc95500000000000000000000000018aaa7115705e8be94bffebde57af9bfc265b9980000000000000000000000004deca517d6817b6510798b7328f2314d3003abac00000000000000000000000000000000000000000000000000000000
Deployed Bytecode
0x60806040526004361061003f5760003560e01c80631a31c07c146100495780633659cfe61461007a5780635c60da1b146100ad57806391f52f7c146100c2575b6100476100f5565b005b34801561005557600080fd5b5061005e61010f565b604080516001600160a01b039092168252519081900360200190f35b34801561008657600080fd5b506100476004803603602081101561009d57600080fd5b50356001600160a01b031661011e565b3480156100b957600080fd5b5061005e6101dd565b3480156100ce57600080fd5b50610047600480360360208110156100e557600080fd5b50356001600160a01b03166101ec565b6100fd61010d565b61010d610108610284565b6102a9565b565b6000546001600160a01b031690565b600054604080516080810190915260428082526001600160a01b039092163314916103b76020830139906101d05760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561019557818101518382015260200161017d565b50505050905090810190601f1680156101c25780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b506101da816102cd565b50565b60006101e7610284565b905090565b600054604080516080810190915260428082526001600160a01b039092163314916103b76020830139906102615760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831561019557818101518382015260200161017d565b50600080546001600160a01b0319166001600160a01b0392909216919091179055565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5490565b3660008037600080366000845af43d6000803e8080156102c8573d6000f35b3d6000fd5b6102d68161030d565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b61031681610375565b6103515760405162461bcd60e51b815260040180806020018281038252603b81526020018061037c603b913960400191505060405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc55565b3b15159056fe43616e6e6f742073657420612070726f787920696d706c656d656e746174696f6e20746f2061206e6f6e2d636f6e7472616374206164647265737341756469757341646d696e557067726164656162696c69747950726f78793a2043616c6c6572206d7573742062652063757272656e742070726f78792061646d696ea265627a7a72315820a551cf727c8099373373b8689dcdfc966296cba633c0ebc5ddca4eebe565568964736f6c63430005110032
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
000000000000000000000000ea10fd3536fce6a5d40d55c790b96df33b26702f0000000000000000000000004deca517d6817b6510798b7328f2314d3003abac00000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000044485cc95500000000000000000000000018aaa7115705e8be94bffebde57af9bfc265b9980000000000000000000000004deca517d6817b6510798b7328f2314d3003abac00000000000000000000000000000000000000000000000000000000
-----Decoded View---------------
Arg [0] : _logic (address): 0xEA10Fd3536FcE6A5d40d55c790b96df33B26702f
Arg [1] : _proxyAdmin (address): 0x4DEcA517D6817B6510798b7328F2314d3003AbAC
Arg [2] : _data (bytes): 0x485cc95500000000000000000000000018aaa7115705e8be94bffebde57af9bfc265b9980000000000000000000000004deca517d6817b6510798b7328f2314d3003abac
-----Encoded View---------------
7 Constructor Arguments found :
Arg [0] : 000000000000000000000000ea10fd3536fce6a5d40d55c790b96df33b26702f
Arg [1] : 0000000000000000000000004deca517d6817b6510798b7328f2314d3003abac
Arg [2] : 0000000000000000000000000000000000000000000000000000000000000060
Arg [3] : 0000000000000000000000000000000000000000000000000000000000000044
Arg [4] : 485cc95500000000000000000000000018aaa7115705e8be94bffebde57af9bf
Arg [5] : c265b9980000000000000000000000004deca517d6817b6510798b7328f2314d
Arg [6] : 3003abac00000000000000000000000000000000000000000000000000000000
Deployed Bytecode Sourcemap
7537:2177:0:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;538:11;:9;:11::i;:::-;7537:2177;9076:106;;8:9:-1;5:2;;;30:1;27;20:12;5:2;9076:106:0;;;:::i;:::-;;;;-1:-1:-1;;;;;9076:106:0;;;;;;;;;;;;;;8839:167;;8:9:-1;5:2;;;30:1;27;20:12;5:2;8839:167:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;8839:167:0;-1:-1:-1;;;;;8839:167:0;;:::i;9259:101::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;9259:101:0;;;:::i;9536:175::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;9536:175:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;9536:175:0;-1:-1:-1;;;;;9536:175:0;;:::i;2084:93::-;2121:15;:13;:15::i;:::-;2143:28;2153:17;:15;:17::i;:::-;2143:9;:28::i;:::-;2084:93::o;9076:106::-;9137:7;9164:10;-1:-1:-1;;;;;9164:10:0;9076:106;:::o;8839:167::-;8928:10;;8940:16;;;;;;;;;;;;;-1:-1:-1;;;;;8928:10:0;;;8914;:24;;8940:16;;;;;8906:51;;;;;-1:-1:-1;;;8906:51:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;8906:51:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8968:30;8979:18;8968:10;:30::i;:::-;8839:167;:::o;9259:101::-;9308:7;9335:17;:15;:17::i;:::-;9328:24;;9259:101;:::o;9536:175::-;9637:10;;9649:16;;;;;;;;;;;;;-1:-1:-1;;;;;9637:10:0;;;9623;:24;;9649:16;;;;;9615:51;;;;;-1:-1:-1;;;9615:51:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27:10:-1;;8:100;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;9615:51:0;-1:-1:-1;9677:10:0;:26;;-1:-1:-1;;;;;;9677:26:0;-1:-1:-1;;;;;9677:26:0;;;;;;;;;;9536:175::o;4845:161::-;4659:66;4983:11;;4966:35::o;977:750::-;1284:12;1281:1;1278;1265:32;1478:1;1475;1461:12;1458:1;1442:14;1437:3;1424:56;1545:14;1542:1;1539;1524:36;1577:6;1634:36;;;;1698:14;1695:1;1688:25;1634:36;1653:14;1650:1;1643:25;5147:145;5210:37;5229:17;5210:18;:37::i;:::-;5259:27;;-1:-1:-1;;;;;5259:27:0;;;;;;;;5147:145;:::o;5435:313::-;5514:57;5553:17;5514:38;:57::i;:::-;5506:129;;;;-1:-1:-1;;;5506:129:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4659:66;5705:31;5696:47::o;3189:627::-;3761:20;3800:8;;;3189:627::o
Swarm Source
bzzr://a551cf727c8099373373b8689dcdfc966296cba633c0ebc5ddca4eebe5655689
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 30 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|---|---|---|---|---|
ETH | 100.00% | $0.145863 | 403,826,923.7094 | $58,903,406.57 |
Loading...
Loading
[ Download: CSV Export ]
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.