Binance USD (BUSD) Token Tracker | Etherscan (2023)

Contract Source Code (Solidity)

Outline

contract Proxy - function () - function _implementation() - function _delegate(address implementa ... - function _willFallback() - function _fallback() library AddressUtils - function isContract(address addr) contract UpgradeabilityProxy is Pr ... - function _implementation() - function _upgradeTo(address newImplem ... - function _setImplementation(address n ... contract AdminUpgradeabilityProxy ... * - function admin() - function implementation() - function changeAdmin(address newAdmin ... - function upgradeTo(address newImpleme ... - function upgradeToAndCall(address new ... - function _admin() - function _setAdmin(address newAdmin) - function _willFallback()

/** *Submitted for verification at Etherscan.io on 2019-09-09*/// File: contracts/zeppelin/Proxy.solpragma solidity 0.4.24;/** * @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: contracts/zeppelin/AddressUtils.solpragma solidity 0.4.24;/** * 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; }}// File: contracts/zeppelin/UpgradeabilityProxy.solpragma solidity 0.4.24;/** * @title UpgradeabilityProxy * @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 UpgradeabilityProxy is Proxy { /** * @dev Emitted when the implementation is upgraded. * @param implementation Address of the new implementation. */ event Upgraded(address implementation); /** * @dev Storage slot with the address of the current implementation. * This is the keccak-256 hash of "org.zeppelinos.proxy.implementation", and is * validated in the constructor. */ bytes32 private constant IMPLEMENTATION_SLOT = 0x7050c9e0f4ca769c69bd3a8ef740bc37934f8e2c036e5a723fd8ee048ed3f8c3; /** * @dev Contract constructor. * @param _implementation Address of the initial implementation. */ constructor(address _implementation) public { assert(IMPLEMENTATION_SLOT == keccak256("org.zeppelinos.proxy.implementation")); _setImplementation(_implementation); } /** * @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) private { require(AddressUtils.isContract(newImplementation), "Cannot set a proxy implementation to a non-contract address"); bytes32 slot = IMPLEMENTATION_SLOT; assembly { sstore(slot, newImplementation) } }}// File: contracts/zeppelin/AdminUpgradeabilityProxy.solpragma solidity 0.4.24;/** * @title AdminUpgradeabilityProxy * @dev This contract combines an upgradeability proxy with an authorization * mechanism for administrative tasks. * All external functions in this contract must be guarded by the * `ifAdmin` modifier. See ethereum/solidity#3864 for a Solidity * feature proposal that would enable this to be done automatically. */contract AdminUpgradeabilityProxy is UpgradeabilityProxy { /** * @dev Emitted when the administration has been transferred. * @param previousAdmin Address of the previous admin. * @param newAdmin Address of the new admin. */ event AdminChanged(address previousAdmin, address newAdmin); /** * @dev Storage slot with the admin of the contract. * This is the keccak-256 hash of "org.zeppelinos.proxy.admin", and is * validated in the constructor. */ bytes32 private constant ADMIN_SLOT = 0x10d6a54a4754c8869d6886b5f5d7fbfa5b4522237ea5c60d11bc4e7a1ff9390b; /** * @dev Modifier to check whether the `msg.sender` is the admin. * If it is, it will run the function. Otherwise, it will delegate the call * to the implementation. */ modifier ifAdmin() { if (msg.sender == _admin()) { _; } else { _fallback(); } } /** * Contract constructor. * It sets the `msg.sender` as the proxy administrator. * @param _implementation address of the initial implementation. */ constructor(address _implementation) UpgradeabilityProxy(_implementation) public { assert(ADMIN_SLOT == keccak256("org.zeppelinos.proxy.admin")); _setAdmin(msg.sender); } /** * @return The address of the proxy admin. */ function admin() external view ifAdmin returns (address) { return _admin(); } /** * @return The address of the implementation. */ function implementation() external view ifAdmin returns (address) { return _implementation(); } /** * @dev Changes the admin of the proxy. * Only the current admin can call this function. * @param newAdmin Address to transfer proxy administration to. */ function changeAdmin(address newAdmin) external ifAdmin { require(newAdmin != address(0), "Cannot change the admin of a proxy to the zero address"); emit AdminChanged(_admin(), newAdmin); _setAdmin(newAdmin); } /** * @dev Upgrade the backing implementation of the proxy. * Only the admin can call this function. * @param newImplementation Address of the new implementation. */ function upgradeTo(address newImplementation) external ifAdmin { _upgradeTo(newImplementation); } /** * @dev Upgrade the backing implementation of the proxy and call a function * on the new implementation. * This is useful to initialize the proxied contract. * @param newImplementation Address of the new implementation. * @param data Data to send as msg.data in the low level call. * It should include the signature and the parameters of the function to be * called, as described in * https://solidity.readthedocs.io/en/develop/abi-spec.html#function-selector-and-argument-encoding. */ function upgradeToAndCall(address newImplementation, bytes data) payable external ifAdmin { _upgradeTo(newImplementation); require(address(this).call.value(msg.value)(data)); } /** * @return The admin slot. */ function _admin() internal view returns (address adm) { bytes32 slot = ADMIN_SLOT; assembly { adm := sload(slot) } } /** * @dev Sets the address of the proxy admin. * @param newAdmin Address of the new proxy admin. */ function _setAdmin(address newAdmin) internal { bytes32 slot = ADMIN_SLOT; assembly { sstore(slot, newAdmin) } } /** * @dev Only fall back when the sender is not the admin. */ function _willFallback() internal { require(msg.sender != _admin(), "Cannot call fallback function from the proxy admin"); super._willFallback(); }}

Contract Security Audit

  • No Contract Security Audit Submitted- Submit Audit Here
[{"constant":false,"inputs":[{"name":"newImplementation","type":"address"}],"name":"upgradeTo","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"newImplementation","type":"address"},{"name":"data","type":"bytes"}],"name":"upgradeToAndCall","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"constant":true,"inputs":[],"name":"implementation","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"newAdmin","type":"address"}],"name":"changeAdmin","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"admin","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"inputs":[{"name":"_implementation","type":"address"}],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"payable":true,"stateMutability":"payable","type":"fallback"},{"anonymous":false,"inputs":[{"indexed":false,"name":"previousAdmin","type":"address"},{"indexed":false,"name":"newAdmin","type":"address"}],"name":"AdminChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"implementation","type":"address"}],"name":"Upgraded","type":"event"}]

Contract Creation Code

Decompile ByteCode Switch to Opcodes View

608060405234801561001057600080fd5b5060405160208061080d83398101604081815291517f6f72672e7a657070656c696e6f732e70726f78792e696d706c656d656e74617482527f696f6e00000000000000000000000000000000000000000000000000000000006020830152915190819003602301902081906000805160206107ed8339815191521461009157fe5b6100a381640100000000610104810204565b50604080517f6f72672e7a657070656c696e6f732e70726f78792e61646d696e0000000000008152905190819003601a0190206000805160206107cd833981519152146100ec57fe5b6100fe336401000000006101c2810204565b506101dc565b600061011c826401000000006105ae6101d482021704565b15156101af57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603b60248201527f43616e6e6f742073657420612070726f787920696d706c656d656e746174696f60448201527f6e20746f2061206e6f6e2d636f6e747261637420616464726573730000000000606482015290519081900360840190fd5b506000805160206107ed83398151915255565b6000805160206107cd83398151915255565b6000903b1190565b6105e2806101eb6000396000f30060806040526004361061006c5763ffffffff7c01000000000000000000000000000000000000000000000000000000006000350416633659cfe681146100765780634f1ef286146100975780635c60da1b146100b75780638f283970146100e8578063f851a44014610109575b61007461011e565b005b34801561008257600080fd5b50610074600160a060020a0360043516610138565b61007460048035600160a060020a03169060248035908101910135610172565b3480156100c357600080fd5b506100cc6101ea565b60408051600160a060020a039092168252519081900360200190f35b3480156100f457600080fd5b50610074600160a060020a0360043516610227565b34801561011557600080fd5b506100cc610339565b610126610364565b610136610131610411565b610436565b565b61014061045a565b600160a060020a031633600160a060020a03161415610167576101628161047f565b61016f565b61016f61011e565b50565b61017a61045a565b600160a060020a031633600160a060020a031614156101dd5761019c8361047f565b30600160a060020a03163483836040518083838082843782019150509250505060006040518083038185875af19250505015156101d857600080fd5b6101e5565b6101e561011e565b505050565b60006101f461045a565b600160a060020a031633600160a060020a0316141561021c57610215610411565b9050610224565b61022461011e565b90565b61022f61045a565b600160a060020a031633600160a060020a0316141561016757600160a060020a03811615156102e557604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603660248201527f43616e6e6f74206368616e6765207468652061646d696e206f6620612070726f60448201527f787920746f20746865207a65726f206164647265737300000000000000000000606482015290519081900360840190fd5b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f61030e61045a565b60408051600160a060020a03928316815291841660208301528051918290030190a1610162816104c7565b600061034361045a565b600160a060020a031633600160a060020a0316141561021c5761021561045a565b61036c61045a565b600160a060020a031633141561040957604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603260248201527f43616e6e6f742063616c6c2066616c6c6261636b2066756e6374696f6e20667260448201527f6f6d207468652070726f78792061646d696e0000000000000000000000000000606482015290519081900360840190fd5b610136610136565b7f7050c9e0f4ca769c69bd3a8ef740bc37934f8e2c036e5a723fd8ee048ed3f8c35490565b3660008037600080366000845af43d6000803e808015610455573d6000f35b3d6000fd5b7f10d6a54a4754c8869d6886b5f5d7fbfa5b4522237ea5c60d11bc4e7a1ff9390b5490565b610488816104eb565b60408051600160a060020a038316815290517fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b9181900360200190a150565b7f10d6a54a4754c8869d6886b5f5d7fbfa5b4522237ea5c60d11bc4e7a1ff9390b55565b60006104f6826105ae565b151561058957604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603b60248201527f43616e6e6f742073657420612070726f787920696d706c656d656e746174696f60448201527f6e20746f2061206e6f6e2d636f6e747261637420616464726573730000000000606482015290519081900360840190fd5b507f7050c9e0f4ca769c69bd3a8ef740bc37934f8e2c036e5a723fd8ee048ed3f8c355565b6000903b11905600a165627a7a72305820b274fe16b200679a229fcce27c65314a32b3cff995c434133f535dd565bba474002910d6a54a4754c8869d6886b5f5d7fbfa5b4522237ea5c60d11bc4e7a1ff9390b7050c9e0f4ca769c69bd3a8ef740bc37934f8e2c036e5a723fd8ee048ed3f8c30000000000000000000000005864c777697bf9881220328bf2f16908c9afcd7e


Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)

0000000000000000000000005864c777697Bf9881220328BF2f16908c9aFCD7e

-----Decoded View---------------
Arg [0] : _implementation (address): 0x5864c777697Bf9881220328BF2f16908c9aFCD7e

-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 0000000000000000000000005864c777697Bf9881220328BF2f16908c9aFCD7e


Deployed ByteCode Sourcemap

6184:3977:0:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;523:11;:9;:11::i;:::-;6184:3977;8524:111;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;8524:111:0;-1:-1:-1;;;;;8524:111:0;;;;;9191:199;;;;;-1:-1:-1;;;;;9191:199:0;;;;;;;;;;;;;7775:109;;8:9:-1;5:2;;;30:1;27;20:12;5:2;7775:109:0;;;;;;;;-1:-1:-1;;;;;7775:109:0;;;;;;;;;;;;;;8079:242;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;8079:242:0;-1:-1:-1;;;;;8079:242:0;;;;;7607:91;;8:9:-1;5:2;;;30:1;27;20:12;5:2;7607:91:0;;;;2181:103;2222:15;:13;:15::i;:::-;2248:28;2258:17;:15;:17::i;:::-;2248:9;:28::i;:::-;2181:103::o;8524:111::-;7062:8;:6;:8::i;:::-;-1:-1:-1;;;;;7048:22:0;:10;-1:-1:-1;;;;;7048:22:0;;7044:100;;;8598:29;8609:17;8598:10;:29::i;:::-;7044:100;;;7121:11;:9;:11::i;:::-;8524:111;:::o;9191:199::-;7062:8;:6;:8::i;:::-;-1:-1:-1;;;;;7048:22:0;:10;-1:-1:-1;;;;;7048:22:0;;7044:100;;;9292:29;9303:17;9292:10;:29::i;:::-;9348:4;-1:-1:-1;;;;;9340:18:0;9365:9;9376:4;;9340:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9332:50;;;;;;;;7044:100;;;7121:11;:9;:11::i;:::-;9191:199;;;:::o;7775:109::-;7832:7;7062:8;:6;:8::i;:::-;-1:-1:-1;;;;;7048:22:0;:10;-1:-1:-1;;;;;7048:22:0;;7044:100;;;7859:17;:15;:17::i;:::-;7852:24;;7044:100;;;7121:11;:9;:11::i;:::-;7775:109;:::o;8079:242::-;7062:8;:6;:8::i;:::-;-1:-1:-1;;;;;7048:22:0;:10;-1:-1:-1;;;;;7048:22:0;;7044:100;;;-1:-1:-1;;;;;8154:22:0;;;;8146:89;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8251:32;8264:8;:6;:8::i;:::-;8251:32;;;-1:-1:-1;;;;;8251:32:0;;;;;;;;;;;;;;;;;;;;;8294:19;8304:8;8294:9;:19::i;7607:91::-;7655:7;7062:8;:6;:8::i;:::-;-1:-1:-1;;;;;7048:22:0;:10;-1:-1:-1;;;;;7048:22:0;;7044:100;;;7682:8;:6;:8::i;9988:170::-;10055:8;:6;:8::i;:::-;-1:-1:-1;;;;;10041:22:0;:10;:22;;10033:85;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10129:21;:19;:21::i;4760:181::-;4243:66;4912:11;;4889:45::o;986:814::-;1309:12;1306:1;1303;1290:32;1513:1;1510;1496:12;1493:1;1477:14;1472:3;1459:56;1588:14;1585:1;1582;1567:36;1626:6;1695:36;;;;1765:14;1762:1;1755:25;1695:36;1714:14;1711:1;1704:25;9448:161;6739:66;9580:11;;9558:44::o;5092:155::-;5159:37;5178:17;5159:18;:37::i;:::-;5212:27;;;-1:-1:-1;;;;;5212:27:0;;;;;;;;;;;;;;;5092:155;:::o;9741:159::-;6739:66;9860:22;9845:48::o;5400:321::-;5601:12;5482:42;5506:17;5482:23;:42::i;:::-;5474:114;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;4243:66:0;5672:31;5657:57::o;2806:629::-;2863:4;3383:17;;3419:8;;2806:629::o

Swarm Source

bzzr://b274fe16b200679a229fcce27c65314a32b3cff995c434133f535dd565bba474
Top Articles
Latest Posts
Article information

Author: Carmelo Roob

Last Updated: 01/05/2023

Views: 6115

Rating: 4.4 / 5 (65 voted)

Reviews: 88% of readers found this page helpful

Author information

Name: Carmelo Roob

Birthday: 1995-01-09

Address: Apt. 915 481 Sipes Cliff, New Gonzalobury, CO 80176

Phone: +6773780339780

Job: Sales Executive

Hobby: Gaming, Jogging, Rugby, Video gaming, Handball, Ice skating, Web surfing

Introduction: My name is Carmelo Roob, I am a modern, handsome, delightful, comfortable, attractive, vast, good person who loves writing and wants to share my knowledge and understanding with you.