Overview
Max Total Supply
37,604 SACCT
Holders
36,876
Market
Volume (24H)
N/A
Min Price (24H)
N/A
Max Price (24H)
N/A
Other Info
Token Contract
Balance
1 SACCTLoading...
Loading
Loading...
Loading
Loading...
Loading
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:
UUPSProxyWithOwner
Compiler Version
v0.8.17+commit.8df45f5f
Optimization Enabled:
Yes with 200 runs
Other Settings:
default evmVersion
Contract Source Code (Solidity Standard Json-Input format)
//SPDX-License-Identifier: MIT
pragma solidity >=0.8.11 <0.9.0;
import {UUPSProxy} from "./UUPSProxy.sol";
import {OwnableStorage} from "../ownership/OwnableStorage.sol";
contract UUPSProxyWithOwner is UUPSProxy {
// solhint-disable-next-line no-empty-blocks
constructor(address firstImplementation, address initialOwner) UUPSProxy(firstImplementation) {
OwnableStorage.load().owner = initialOwner;
}
}//SPDX-License-Identifier: MIT
pragma solidity >=0.8.11 <0.9.0;
/**
* @title Library for access related errors.
*/
library AccessError {
/**
* @dev Thrown when an address tries to perform an unauthorized action.
* @param addr The address that attempts the action.
*/
error Unauthorized(address addr);
}//SPDX-License-Identifier: MIT
pragma solidity >=0.8.11 <0.9.0;
/**
* @title Library for address related errors.
*/
library AddressError {
/**
* @dev Thrown when a zero address was passed as a function parameter (0x0000000000000000000000000000000000000000).
*/
error ZeroAddress();
/**
* @dev Thrown when an address representing a contract is expected, but no code is found at the address.
* @param contr The address that was expected to be a contract.
*/
error NotAContract(address contr);
}//SPDX-License-Identifier: MIT
pragma solidity >=0.8.11 <0.9.0;
import "../errors/AccessError.sol";
library OwnableStorage {
bytes32 private constant _SLOT_OWNABLE_STORAGE =
keccak256(abi.encode("io.synthetix.core-contracts.Ownable"));
struct Data {
address owner;
address nominatedOwner;
}
function load() internal pure returns (Data storage store) {
bytes32 s = _SLOT_OWNABLE_STORAGE;
assembly {
store.slot := s
}
}
function onlyOwner() internal view {
if (msg.sender != getOwner()) {
revert AccessError.Unauthorized(msg.sender);
}
}
function getOwner() internal view returns (address) {
return OwnableStorage.load().owner;
}
}//SPDX-License-Identifier: MIT
pragma solidity >=0.8.11 <0.9.0;
abstract contract AbstractProxy {
fallback() external payable {
_forward();
}
receive() external payable {
_forward();
}
function _forward() internal {
address implementation = _getImplementation();
// solhint-disable-next-line no-inline-assembly
assembly {
calldatacopy(0, 0, calldatasize())
let result := delegatecall(gas(), implementation, 0, calldatasize(), 0, 0)
returndatacopy(0, 0, returndatasize())
switch result
case 0 {
revert(0, returndatasize())
}
default {
return(0, returndatasize())
}
}
}
function _getImplementation() internal view virtual returns (address);
}//SPDX-License-Identifier: MIT
pragma solidity >=0.8.11 <0.9.0;
contract ProxyStorage {
bytes32 private constant _SLOT_PROXY_STORAGE =
keccak256(abi.encode("io.synthetix.core-contracts.Proxy"));
struct ProxyStore {
address implementation;
bool simulatingUpgrade;
}
function _proxyStore() internal pure returns (ProxyStore storage store) {
bytes32 s = _SLOT_PROXY_STORAGE;
assembly {
store.slot := s
}
}
}//SPDX-License-Identifier: MIT
pragma solidity >=0.8.11 <0.9.0;
import "./AbstractProxy.sol";
import "./ProxyStorage.sol";
import "../errors/AddressError.sol";
import "../utils/AddressUtil.sol";
contract UUPSProxy is AbstractProxy, ProxyStorage {
constructor(address firstImplementation) {
if (firstImplementation == address(0)) {
revert AddressError.ZeroAddress();
}
if (!AddressUtil.isContract(firstImplementation)) {
revert AddressError.NotAContract(firstImplementation);
}
_proxyStore().implementation = firstImplementation;
}
function _getImplementation() internal view virtual override returns (address) {
return _proxyStore().implementation;
}
}//SPDX-License-Identifier: MIT
pragma solidity >=0.8.11 <0.9.0;
library AddressUtil {
function isContract(address account) internal view returns (bool) {
uint256 size;
assembly {
size := extcodesize(account)
}
return size > 0;
}
}{
"optimizer": {
"enabled": true,
"runs": 200
},
"outputSelection": {
"*": {
"*": [
"evm.bytecode",
"evm.deployedBytecode",
"devdoc",
"userdoc",
"metadata",
"abi"
]
}
}
}Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
Contract ABI
API[{"inputs":[{"internalType":"address","name":"firstImplementation","type":"address"},{"internalType":"address","name":"initialOwner","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[{"internalType":"address","name":"contr","type":"address"}],"name":"NotAContract","type":"error"},{"inputs":[],"name":"ZeroAddress","type":"error"},{"stateMutability":"payable","type":"fallback"},{"stateMutability":"payable","type":"receive"}]Contract Creation Code
608060405234801561001057600080fd5b5060405161037838038061037883398101604081905261002f916101de565b816001600160a01b0381166100575760405163d92e233d60e01b815260040160405180910390fd5b61006a8161010060201b6100471760201c565b610096576040516322a2d07b60e21b81526001600160a01b038216600482015260240160405180910390fd5b8061009f610106565b60000160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555050806100da61017260201b61004d1760201c565b80546001600160a01b0319166001600160a01b0392909216919091179055506102119050565b3b151590565b6000806040516020016101549060208082526021908201527f696f2e73796e7468657469782e636f72652d636f6e7472616374732e50726f786040820152607960f81b606082015260800190565b60408051601f19818403018152919052805160209091012092915050565b6000806040516020016101549060208082526023908201527f696f2e73796e7468657469782e636f72652d636f6e7472616374732e4f776e61604082015262626c6560e81b606082015260800190565b80516001600160a01b03811681146101d957600080fd5b919050565b600080604083850312156101f157600080fd5b6101fa836101c2565b9150610208602084016101c2565b90509250929050565b610158806102206000396000f3fe60806040523661001357610011610017565b005b6100115b60006100216100bb565b90503660008037600080366000845af43d6000803e808015610042573d6000f35b3d6000fd5b3b151590565b60008060405160200161009d9060208082526023908201527f696f2e73796e7468657469782e636f72652d636f6e7472616374732e4f776e61604082015262626c6560e81b606082015260800190565b60408051601f19818403018152919052805160209091012092915050565b60006100c56100d4565b546001600160a01b0316919050565b60008060405160200161009d9060208082526021908201527f696f2e73796e7468657469782e636f72652d636f6e7472616374732e50726f786040820152607960f81b60608201526080019056fea2646970667358221220022856d123431d9cd7d55747c0457f492769a6f29ef9cd86dfbdae1b3aeba06c64736f6c63430008110033000000000000000000000000cbf25513c912eeb8072972347afd2be94452b5e6000000000000000000000000ffffffaeff0b96ea8e4f94b2253f31abdd875847
Deployed Bytecode
0x60806040523661001357610011610017565b005b6100115b60006100216100bb565b90503660008037600080366000845af43d6000803e808015610042573d6000f35b3d6000fd5b3b151590565b60008060405160200161009d9060208082526023908201527f696f2e73796e7468657469782e636f72652d636f6e7472616374732e4f776e61604082015262626c6560e81b606082015260800190565b60408051601f19818403018152919052805160209091012092915050565b60006100c56100d4565b546001600160a01b0316919050565b60008060405160200161009d9060208082526021908201527f696f2e73796e7468657469782e636f72652d636f6e7472616374732e50726f786040820152607960f81b60608201526080019056fea2646970667358221220022856d123431d9cd7d55747c0457f492769a6f29ef9cd86dfbdae1b3aeba06c64736f6c63430008110033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
000000000000000000000000cbf25513c912eeb8072972347afd2be94452b5e6000000000000000000000000ffffffaeff0b96ea8e4f94b2253f31abdd875847
-----Decoded View---------------
Arg [0] : firstImplementation (address): 0xcbf25513C912eEB8072972347Afd2BE94452B5E6
Arg [1] : initialOwner (address): 0xffffffaEff0B96Ea8e4f94b2253f31abdD875847
-----Encoded View---------------
2 Constructor Arguments found :
Arg [0] : 000000000000000000000000cbf25513c912eeb8072972347afd2be94452b5e6
Arg [1] : 000000000000000000000000ffffffaeff0b96ea8e4f94b2253f31abdd875847
Loading...
Loading
[ Download: CSV Export ]
[ Download: CSV Export ]
A token is a representation of an on-chain or off-chain asset. The token page shows information such as price, total supply, holders, transfers and social links. Learn more about this page in our Knowledge Base.