Source Code
Overview
ETH Balance
0 ETH
More Info
ContractCreator
Multichain Info
N/A
Latest 1 from a total of 1 transactions
| Transaction Hash |
Method
|
Block
|
From
|
To
|
Amount
|
||||
|---|---|---|---|---|---|---|---|---|---|
| Create New Pool | 30489067 | 99 days ago | IN | 0 ETH | 0.0000002 |
Loading...
Loading
Similar Match Source Code This contract matches the deployed Bytecode of the Source Code for Contract 0x5FeEc477...9B6727067 The constructor portion of the code might be different and could alter the actual behaviour of the contract
Contract Name:
UniswapV4PoolCreator
Compiler Version
v0.8.28+commit.7893614a
Optimization Enabled:
Yes with 200 runs
Other Settings:
paris EvmVersion
Contract Source Code (Solidity Standard Json-Input format)
// SPDX-License-Identifier: GPL-2.0-or-later
pragma solidity ^0.8.0;
interface IPoolManager {
struct PoolKey {
Currency2 currency0;
Currency2 currency1;
uint24 fee;
int24 tickSpacing;
address hooks;
}
/// @notice Initialize a new pool
/// @param key The pool key defining the pool parameters
/// @param sqrtPriceX96 The initial sqrt price of the pool as a Q64.96
function initialize(PoolKey calldata key, uint160 sqrtPriceX96) external;
}
interface IERC20 {
function decimals() external view returns (uint8);
}
// Currency type definition
type Currency2 is address;
/**
* @title UniswapV4PoolCreator
* @notice Creates Uniswap V4 pools with specific B0x token pricing
* @dev Sets initial price ratio of 20 B0x = 1 other token
*/
contract UniswapV4PoolCreator {
/// @notice The Uniswap V4 pool manager contract interface
IPoolManager public immutable poolManager;
/// @notice The address of the B0x token contract
address public immutable b0xToken;
// Events
/// @notice Event emitted when a new pool is created
event PoolCreated(
address indexed token0,
address indexed token1,
address indexed hookContract,
uint160 sqrtPriceX96
);
// Errors
error InvalidTokenAddress();
error InvalidHookContract();
error IdenticalTokens();
error ZeroAddress();
/// @notice Initializes the B0x token for properlly setting up the 0xBTC/B0x pool
/// @dev Sets B0x Token address for creating pool
/// @param _b0x Address of the B0x token contract to be mined
constructor(address _b0x) {
if (_b0x == address(0)) revert ZeroAddress();
b0xToken = _b0x;
// Note: Verify this address for your target network
poolManager = IPoolManager(0x05E73354cFDd6745C338b50BcFDfA3Aa6fA03408);
}
/**
* @notice Creates a new Uniswap V4 pool for b0x & 0xBTC
* @param tokenA First token address
* @param tokenB Second token address
* @param hookContract Hook contract address (use address(0) for no hooks)
*/
function createNewPool(
address tokenA,
address tokenB,
address hookContract
) public {
// Input validation
if (tokenA == address(0) || tokenB == address(0)) revert ZeroAddress();
if (tokenA == tokenB) revert IdenticalTokens();
// Sort tokens (required by Uniswap)
(address token0, address token1) = tokenA < tokenB
? (tokenA, tokenB)
: (tokenB, tokenA);
// Get token decimals
uint8 decimals0 = IERC20(token0).decimals();
uint8 decimals1 = IERC20(token1).decimals();
// Calculate decimal-adjusted price ratio
uint256 priceRatio = calculateDecimalAdjustedPrice(
token0,
token1,
decimals0,
decimals1
);
uint160 sqrtPriceX96 = sqrtPriceX96FromCalculatedRatio(
priceRatio,
token0,
token1
);
// Create PoolKey
IPoolManager.PoolKey memory key = IPoolManager.PoolKey({
currency0: Currency2.wrap(token0),
currency1: Currency2.wrap(token1),
fee: encodeDynamicFee(),
tickSpacing: 60,
hooks: hookContract
});
// Initialize the pool
poolManager.initialize(key, sqrtPriceX96);
emit PoolCreated(token0, token1, hookContract, sqrtPriceX96);
}
/**
* @notice Calculates decimal-adjusted price ratio
* @dev Economic ratio: 20 B0x = 1 other token (price = 1/20 = 0.05)
* @param token0 Sorted token0 address
* @param token1 Sorted token1 address
* @param decimals0 Token0 decimals
* @param decimals1 Token1 decimals
* @return priceRatio Price ratio in 18-decimal format
*/
function calculateDecimalAdjustedPrice(
address token0,
address token1,
uint8 decimals0,
uint8 decimals1
) internal view returns (uint256 priceRatio) {
if (token0 == b0xToken) {
// token0 is B0x, token1 is other token
// Uniswap price = token1/token0 = other/B0x = 0.05
uint256 numerator = 10**decimals1 * 1e18;
uint256 denominator = 20 * 10**decimals0;
priceRatio = numerator / denominator;
} else {
// token1 is B0x, token0 is other token
// Uniswap price = token1/token0 = B0x/other = 20
uint256 numerator = 20 * 10**decimals1 * 1e18;
uint256 denominator = 1 * 10**decimals0;
priceRatio = numerator / denominator;
}
return priceRatio;
}
/**
* @notice Converts price ratio to sqrtPriceX96 format
* @param priceRatio18Decimal Price ratio in 18-decimal format
* @return sqrtPriceX96 Square root price in X96 format
*/
function sqrtPriceX96FromPriceRatio(
uint256 priceRatio18Decimal
) public pure returns (uint160) {
if (priceRatio18Decimal == 0) return 0;
// Calculate sqrt(priceRatio) * 2^96
uint256 sqrtPrice = sqrt(priceRatio18Decimal);
// Convert to X96 format
return uint160((sqrtPrice * (2 ** 96)) / 1e9);
}
/**
* @notice Wrapper function for calculated ratio conversion
* @param priceRatio Price ratio from calculateDecimalAdjustedPrice
* @param token0 Token0 address (unused but kept for interface consistency)
* @param token1 Token1 address (unused but kept for interface consistency)
* @return sqrtPriceX96 Square root price in X96 format
*/
function sqrtPriceX96FromCalculatedRatio(
uint256 priceRatio,
address token0,
address token1
) public pure returns (uint160) {
return sqrtPriceX96FromPriceRatio(priceRatio);
}
/**
* @notice Debug function to understand decimal-adjusted prices
* @param tokenA First token address
* @param tokenB Second token address
* @return token0 Sorted token0 address
* @return token1 Sorted token1 address
* @return decimals0 Token0 decimals
* @return decimals1 Token1 decimals
* @return calculatedPriceRatio Calculated price ratio
* @return explanation Price calculation explanation
*/
function debugDecimalAdjustedPrice(
address tokenA,
address tokenB
) external view returns (
address token0,
address token1,
uint8 decimals0,
uint8 decimals1,
uint256 calculatedPriceRatio,
string memory explanation
) {
(token0, token1) = tokenA < tokenB
? (tokenA, tokenB)
: (tokenB, tokenA);
decimals0 = IERC20(token0).decimals();
decimals1 = IERC20(token1).decimals();
calculatedPriceRatio = calculateDecimalAdjustedPrice(
token0,
token1,
decimals0,
decimals1
);
if (token0 == b0xToken) {
explanation = "token0=B0x, price=other/B0x=0.05, 18-decimal format";
} else {
explanation = "token1=B0x, price=B0x/other=20, 18-decimal format";
}
return (
token0,
token1,
decimals0,
decimals1,
calculatedPriceRatio,
explanation
);
}
/**
* @notice Debug function to verify price calculations
* @param tokenA First token address
* @param tokenB Second token address
* @return scenario Price calculation scenario
* @return numerator Calculation numerator
* @return denominator Calculation denominator
* @return priceRatio Final price ratio
* @return expectedSqrtPriceX96 Expected sqrt price in X96 format
*/
function debugPriceCalculation(
address tokenA,
address tokenB
) external view returns (
string memory scenario,
uint256 numerator,
uint256 denominator,
uint256 priceRatio,
uint256 expectedSqrtPriceX96
) {
(address token0, address token1) = tokenA < tokenB
? (tokenA, tokenB)
: (tokenB, tokenA);
uint8 decimals0 = IERC20(token0).decimals();
uint8 decimals1 = IERC20(token1).decimals();
if (token0 == b0xToken) {
scenario = "B0x is token0, other is token1, price = other/B0x = 0.05";
numerator = 10**decimals1 * 1e18;
denominator = 20 * 10**decimals0;
} else {
scenario = "Other is token0, B0x is token1, price = B0x/other = 20";
numerator = 20 * 10**decimals1 * 1e18;
denominator = 1 * 10**decimals0;
}
priceRatio = numerator / denominator;
expectedSqrtPriceX96 = uint256(sqrtPriceX96FromPriceRatio(priceRatio));
return (
scenario,
numerator,
denominator,
priceRatio,
expectedSqrtPriceX96
);
}
/**
* @notice Encodes dynamic fee flag
* @return Dynamic fee flag (0x800000)
*/
function encodeDynamicFee() public pure returns (uint24) {
return 0x800000; // DYNAMIC_FEE_FLAG
}
/**
* @notice Babylonian square root implementation
* @param x Input value
* @return Square root of x
*/
function sqrt(uint256 x) internal pure returns (uint256) {
if (x == 0) return 0;
uint256 z = (x + 1) / 2;
uint256 y = x;
while (z < y) {
y = z;
z = (x / z + z) / 2;
}
return y;
}
}{
"optimizer": {
"enabled": true,
"runs": 200
},
"viaIR": true,
"evmVersion": "paris",
"outputSelection": {
"*": {
"*": [
"evm.bytecode",
"evm.deployedBytecode",
"devdoc",
"userdoc",
"metadata",
"abi"
]
}
}
}Contract ABI
API[{"inputs":[{"internalType":"address","name":"_b0x","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"IdenticalTokens","type":"error"},{"inputs":[],"name":"InvalidHookContract","type":"error"},{"inputs":[],"name":"InvalidTokenAddress","type":"error"},{"inputs":[],"name":"ZeroAddress","type":"error"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"token0","type":"address"},{"indexed":true,"internalType":"address","name":"token1","type":"address"},{"indexed":true,"internalType":"address","name":"hookContract","type":"address"},{"indexed":false,"internalType":"uint160","name":"sqrtPriceX96","type":"uint160"}],"name":"PoolCreated","type":"event"},{"inputs":[],"name":"b0xToken","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"tokenA","type":"address"},{"internalType":"address","name":"tokenB","type":"address"},{"internalType":"address","name":"hookContract","type":"address"}],"name":"createNewPool","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"tokenA","type":"address"},{"internalType":"address","name":"tokenB","type":"address"}],"name":"debugDecimalAdjustedPrice","outputs":[{"internalType":"address","name":"token0","type":"address"},{"internalType":"address","name":"token1","type":"address"},{"internalType":"uint8","name":"decimals0","type":"uint8"},{"internalType":"uint8","name":"decimals1","type":"uint8"},{"internalType":"uint256","name":"calculatedPriceRatio","type":"uint256"},{"internalType":"string","name":"explanation","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"tokenA","type":"address"},{"internalType":"address","name":"tokenB","type":"address"}],"name":"debugPriceCalculation","outputs":[{"internalType":"string","name":"scenario","type":"string"},{"internalType":"uint256","name":"numerator","type":"uint256"},{"internalType":"uint256","name":"denominator","type":"uint256"},{"internalType":"uint256","name":"priceRatio","type":"uint256"},{"internalType":"uint256","name":"expectedSqrtPriceX96","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"encodeDynamicFee","outputs":[{"internalType":"uint24","name":"","type":"uint24"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"poolManager","outputs":[{"internalType":"contract IPoolManager","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"priceRatio","type":"uint256"},{"internalType":"address","name":"token0","type":"address"},{"internalType":"address","name":"token1","type":"address"}],"name":"sqrtPriceX96FromCalculatedRatio","outputs":[{"internalType":"uint160","name":"","type":"uint160"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"uint256","name":"priceRatio18Decimal","type":"uint256"}],"name":"sqrtPriceX96FromPriceRatio","outputs":[{"internalType":"uint160","name":"","type":"uint160"}],"stateMutability":"pure","type":"function"}]Contract Creation Code
0x60c0346100bc57601f610cf038819003918201601f19168301916001600160401b038311848410176100c1578084926020946040528339810103126100bc57516001600160a01b0381168082036100bc57156100ab5760a0527305e73354cfdd6745c338b50bcfdfa3aa6fa03408608052604051610c1890816100d8823960805181818160d601526107bf015260a051818181608e015281816101fb0152818161043d0152610ac10152f35b63d92e233d60e01b60005260046000fd5b600080fd5b634e487b7160e01b600052604160045260246000fdfe608080604052600436101561001357600080fd5b600090813560e01c9081632325951e1461069a57508063367de4591461067b5780634cd5b93f146103a057806380c7f951146103825780638bd1304414610148578063a45195df14610105578063dc4c90d3146100c05763ea0175dd1461007957600080fd5b346100bd57806003193601126100bd576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b80fd5b50346100bd57806003193601126100bd576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b50346100bd5760603660031901126100bd5761011f61096c565b50610128610982565b506020610136600435610a4a565b6040516001600160a01b039091168152f35b50346100bd5760403660031901126100bd57610162610951565b61016a61096c565b906001600160a01b03808316908216101561037d57905b60405163313ce56760e01b81526001600160a01b03831691602082600481865afa918215610372578592610351575b5060405163313ce56760e01b81526001600160a01b039190911693602082600481885afa918215610346579083916102af9596979361030c575b508260ff926101f892610aaf565b917f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031686036102b357816040516102386060826109d9565b603381527f746f6b656e303d4230782c2070726963653d6f746865722f4230783d302e30356020820152720b080c4e0b591958da5b585b08199bdc9b585d606a1b6040820152945b60405198899889526020890152166040870152166060850152608084015260c060a084015260c0830190610998565b0390f35b816040516102c26060826109d9565b603181527f746f6b656e313d4230782c2070726963653d4230782f6f746865723d32302c206020820152700c4e0b591958da5b585b08199bdc9b585d607a1b604082015294610280565b60ff929350906103366101f89260203d60201161033f575b61032e81836109d9565b810190610a11565b939250906101ea565b503d610324565b6040513d88823e3d90fd5b61036b91925060203d60201161033f5761032e81836109d9565b90386101b0565b6040513d87823e3d90fd5b610181565b50346100bd57806003193601126100bd576020604051628000008152f35b50346100bd5760403660031901126100bd576103ba610951565b6103c261096c565b906001600160a01b038083169082161015610675575b60405163313ce56760e01b815291906001600160a01b0316602083600481845afa918215610648576004938593610653575b5060405163313ce56760e01b81529360209185919082906001600160a01b03165afa928315610648578493610627575b507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03160361056e576104d160405161047b6060826109d9565b603881527f42307820697320746f6b656e302c206f7468657220697320746f6b656e312c2060208201527f7072696365203d206f746865722f423078203d20302e30350000000000000000604082015292610a9e565b670de0b6b3a7640000810290808204670de0b6b3a7640000149015171561055a576104fc9091610a9e565b8060140290601482040361055a5761054193505b61051a8183610a2a565b6001600160a01b0361052b82610a4a565b169160405195869560a0875260a0870190610998565b9360208601526040850152606084015260808301520390f35b634e487b7160e01b84526011600452602484fd5b6105ce60405161057f6060826109d9565b603681527f4f7468657220697320746f6b656e302c2042307820697320746f6b656e312c2060208201527507072696365203d204230782f6f74686572203d2032360541b604082015292610a9e565b8060140290601482048103610613576801158e460913d000000290808204670de0b6b3a7640000149015171561055a579261060c6105419492610a9e565b9050610510565b634e487b7160e01b85526011600452602485fd5b61064191935060203d60201161033f5761032e81836109d9565b913861043a565b6040513d86823e3d90fd5b602091935061066e90823d841161033f5761032e81836109d9565b929061040a565b906103d8565b50346100bd5760203660031901126100bd576020610136600435610a4a565b90503461094d57606036600319011261094d576106b5610951565b906106be61096c565b6106c6610982565b926001600160a01b0381168015801561093c575b61092d576001600160a01b0383169080821461091e571015610918575b63313ce56760e01b83526001600160a01b03811691602084600481865afa9384156103465786946108f7575b5060405163313ce56760e01b81526001600160a01b039190911693602082600481885afa9081156108ec57610768936107639389936108cb575b50610aaf565b610a4a565b6040519360a0850185811067ffffffffffffffff8211176108b757604052828552856020860185815260408701926280000084526060880197603c8952608081019160018060a01b03169889835260018060a01b037f00000000000000000000000000000000000000000000000000000000000000001696873b156108b35760405163313b65df60e11b815292516001600160a01b039081166004850152945185166024840152955162ffffff1660448301525160020b6064820152905182166084820152921660a4830181905292829060c490829084905af180156103465761087c575b5060207f02d9b4a7992571001f4240d512b2b18180c5caf7eea0bec5dcaea29973857e6a91604051908152a480f35b856108ab7f02d9b4a7992571001f4240d512b2b18180c5caf7eea0bec5dcaea29973857e6a93976020936109d9565b95915061084d565b8580fd5b634e487b7160e01b87526041600452602487fd5b6108e591935060203d60201161033f5761032e81836109d9565b913861075d565b6040513d89823e3d90fd5b61091191945060203d60201161033f5761032e81836109d9565b9238610723565b906106f7565b635c6d7b7360e01b8752600487fd5b63d92e233d60e01b8652600486fd5b506001600160a01b038316156106da565b5080fd5b600435906001600160a01b038216820361096757565b600080fd5b602435906001600160a01b038216820361096757565b604435906001600160a01b038216820361096757565b919082519283825260005b8481106109c4575050826000602080949584010152601f8019910116010190565b806020809284010151828286010152016109a3565b90601f8019910116810190811067ffffffffffffffff8211176109fb57604052565b634e487b7160e01b600052604160045260246000fd5b90816020910312610967575160ff811681036109675790565b8115610a34570490565b634e487b7160e01b600052601260045260246000fd5b8015610a9857610a5990610b9f565b8060601b90808204600160601b1490151715610a8257633b9aca0090046001600160a01b031690565b634e487b7160e01b600052601160045260246000fd5b50600090565b60ff16604d8111610a8257600a0a90565b60009392906001600160a01b039081167f000000000000000000000000000000000000000000000000000000000000000090911603610b3957610af190610a9e565b90670de0b6b3a7640000820291808304670de0b6b3a7640000149015171561055a57610b1c90610a9e565b908160140291601483040361055a57610b36929350610a2a565b90565b610b4590939293610a9e565b90816014029160148304810361055a576801158e460913d000000291808304670de0b6b3a76400001490151715610b8b5790610b84610b369392610a9e565b9150610a2a565b634e487b7160e01b83526011600452602483fd5b8015610a985760018101808211610a825760011c815b828210610bc157505090565b90915081610bcf8183610a2a565b908101809111610a825760011c90610bb556fea26469706673582212202aef9b8cde815dbe34da3c2b3d7274a4546dc0899bb691b779a6c046413146e264736f6c634300081c0033000000000000000000000000b379a851ac41bcdf0c2564b88916b10e5a08daae
Deployed Bytecode
0x608080604052600436101561001357600080fd5b600090813560e01c9081632325951e1461069a57508063367de4591461067b5780634cd5b93f146103a057806380c7f951146103825780638bd1304414610148578063a45195df14610105578063dc4c90d3146100c05763ea0175dd1461007957600080fd5b346100bd57806003193601126100bd576040517f000000000000000000000000b379a851ac41bcdf0c2564b88916b10e5a08daae6001600160a01b03168152602090f35b80fd5b50346100bd57806003193601126100bd576040517f00000000000000000000000005e73354cfdd6745c338b50bcfdfa3aa6fa034086001600160a01b03168152602090f35b50346100bd5760603660031901126100bd5761011f61096c565b50610128610982565b506020610136600435610a4a565b6040516001600160a01b039091168152f35b50346100bd5760403660031901126100bd57610162610951565b61016a61096c565b906001600160a01b03808316908216101561037d57905b60405163313ce56760e01b81526001600160a01b03831691602082600481865afa918215610372578592610351575b5060405163313ce56760e01b81526001600160a01b039190911693602082600481885afa918215610346579083916102af9596979361030c575b508260ff926101f892610aaf565b917f000000000000000000000000b379a851ac41bcdf0c2564b88916b10e5a08daae6001600160a01b031686036102b357816040516102386060826109d9565b603381527f746f6b656e303d4230782c2070726963653d6f746865722f4230783d302e30356020820152720b080c4e0b591958da5b585b08199bdc9b585d606a1b6040820152945b60405198899889526020890152166040870152166060850152608084015260c060a084015260c0830190610998565b0390f35b816040516102c26060826109d9565b603181527f746f6b656e313d4230782c2070726963653d4230782f6f746865723d32302c206020820152700c4e0b591958da5b585b08199bdc9b585d607a1b604082015294610280565b60ff929350906103366101f89260203d60201161033f575b61032e81836109d9565b810190610a11565b939250906101ea565b503d610324565b6040513d88823e3d90fd5b61036b91925060203d60201161033f5761032e81836109d9565b90386101b0565b6040513d87823e3d90fd5b610181565b50346100bd57806003193601126100bd576020604051628000008152f35b50346100bd5760403660031901126100bd576103ba610951565b6103c261096c565b906001600160a01b038083169082161015610675575b60405163313ce56760e01b815291906001600160a01b0316602083600481845afa918215610648576004938593610653575b5060405163313ce56760e01b81529360209185919082906001600160a01b03165afa928315610648578493610627575b507f000000000000000000000000b379a851ac41bcdf0c2564b88916b10e5a08daae6001600160a01b03160361056e576104d160405161047b6060826109d9565b603881527f42307820697320746f6b656e302c206f7468657220697320746f6b656e312c2060208201527f7072696365203d206f746865722f423078203d20302e30350000000000000000604082015292610a9e565b670de0b6b3a7640000810290808204670de0b6b3a7640000149015171561055a576104fc9091610a9e565b8060140290601482040361055a5761054193505b61051a8183610a2a565b6001600160a01b0361052b82610a4a565b169160405195869560a0875260a0870190610998565b9360208601526040850152606084015260808301520390f35b634e487b7160e01b84526011600452602484fd5b6105ce60405161057f6060826109d9565b603681527f4f7468657220697320746f6b656e302c2042307820697320746f6b656e312c2060208201527507072696365203d204230782f6f74686572203d2032360541b604082015292610a9e565b8060140290601482048103610613576801158e460913d000000290808204670de0b6b3a7640000149015171561055a579261060c6105419492610a9e565b9050610510565b634e487b7160e01b85526011600452602485fd5b61064191935060203d60201161033f5761032e81836109d9565b913861043a565b6040513d86823e3d90fd5b602091935061066e90823d841161033f5761032e81836109d9565b929061040a565b906103d8565b50346100bd5760203660031901126100bd576020610136600435610a4a565b90503461094d57606036600319011261094d576106b5610951565b906106be61096c565b6106c6610982565b926001600160a01b0381168015801561093c575b61092d576001600160a01b0383169080821461091e571015610918575b63313ce56760e01b83526001600160a01b03811691602084600481865afa9384156103465786946108f7575b5060405163313ce56760e01b81526001600160a01b039190911693602082600481885afa9081156108ec57610768936107639389936108cb575b50610aaf565b610a4a565b6040519360a0850185811067ffffffffffffffff8211176108b757604052828552856020860185815260408701926280000084526060880197603c8952608081019160018060a01b03169889835260018060a01b037f00000000000000000000000005e73354cfdd6745c338b50bcfdfa3aa6fa034081696873b156108b35760405163313b65df60e11b815292516001600160a01b039081166004850152945185166024840152955162ffffff1660448301525160020b6064820152905182166084820152921660a4830181905292829060c490829084905af180156103465761087c575b5060207f02d9b4a7992571001f4240d512b2b18180c5caf7eea0bec5dcaea29973857e6a91604051908152a480f35b856108ab7f02d9b4a7992571001f4240d512b2b18180c5caf7eea0bec5dcaea29973857e6a93976020936109d9565b95915061084d565b8580fd5b634e487b7160e01b87526041600452602487fd5b6108e591935060203d60201161033f5761032e81836109d9565b913861075d565b6040513d89823e3d90fd5b61091191945060203d60201161033f5761032e81836109d9565b9238610723565b906106f7565b635c6d7b7360e01b8752600487fd5b63d92e233d60e01b8652600486fd5b506001600160a01b038316156106da565b5080fd5b600435906001600160a01b038216820361096757565b600080fd5b602435906001600160a01b038216820361096757565b604435906001600160a01b038216820361096757565b919082519283825260005b8481106109c4575050826000602080949584010152601f8019910116010190565b806020809284010151828286010152016109a3565b90601f8019910116810190811067ffffffffffffffff8211176109fb57604052565b634e487b7160e01b600052604160045260246000fd5b90816020910312610967575160ff811681036109675790565b8115610a34570490565b634e487b7160e01b600052601260045260246000fd5b8015610a9857610a5990610b9f565b8060601b90808204600160601b1490151715610a8257633b9aca0090046001600160a01b031690565b634e487b7160e01b600052601160045260246000fd5b50600090565b60ff16604d8111610a8257600a0a90565b60009392906001600160a01b039081167f000000000000000000000000b379a851ac41bcdf0c2564b88916b10e5a08daae90911603610b3957610af190610a9e565b90670de0b6b3a7640000820291808304670de0b6b3a7640000149015171561055a57610b1c90610a9e565b908160140291601483040361055a57610b36929350610a2a565b90565b610b4590939293610a9e565b90816014029160148304810361055a576801158e460913d000000291808304670de0b6b3a76400001490151715610b8b5790610b84610b369392610a9e565b9150610a2a565b634e487b7160e01b83526011600452602483fd5b8015610a985760018101808211610a825760011c815b828210610bc157505090565b90915081610bcf8183610a2a565b908101809111610a825760011c90610bb556fea26469706673582212202aef9b8cde815dbe34da3c2b3d7274a4546dc0899bb691b779a6c046413146e264736f6c634300081c0033
Loading...
Loading
Loading...
Loading
Loading...
Loading
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.