Sözleşme
0x01a91e8658544B305A7AD6d95D48a7c121737B15
Genel Bakış
XCR DENGE
0 XCR
XCR DEĞER
$--- (@ $---/XCR)
Daha Fazla Bilgi
SÖZLEŞME YARATICISI
Ebeveyn Txn Hash |
Yöntem
|
Blok | Yaş | Kimden | için | "%>Değer | |
---|---|---|---|---|---|---|---|
0xecf33c0f32a79068…
|
Deposit
|
10 secs ago | 0xbAFA44...559c1138 | Beacon Deposit Contract | 32 ETH | ||
0xecf33c0f32a79068…
|
Deposit
|
10 secs ago | 0xbAFA44...559c1138 | Beacon Deposit Contract | 32 ETH | ||
0xecf33c0f32a79068…
|
Deposit
|
10 secs ago | 0xbAFA44...559c1138 | Beacon Deposit Contract | 32 ETH | ||
0xecf33c0f32a79068…
|
Deposit
|
10 secs ago | 0xbAFA44...559c1138 | Beacon Deposit Contract | 32 ETH | ||
0xecf33c0f32a79068…
|
Deposit
|
10 secs ago | 0xbAFA44...559c1138 | Beacon Deposit Contract | 32 ETH | ||
0xecf33c0f32a79068…
|
Deposit
|
10 secs ago | 0xbAFA44...559c1138 | Beacon Deposit Contract | 32 ETH | ||
0xecf33c0f32a79068…
|
Deposit
|
10 secs ago | 0xbAFA44...559c1138 | Beacon Deposit Contract | 32 ETH | ||
0xecf33c0f32a79068…
|
Deposit
|
10 secs ago | 0xbAFA44...559c1138 | Beacon Deposit Contract | 32 ETH | ||
0xecf33c0f32a79068…
|
Deposit
|
10 secs ago | 0xbAFA44...559c1138 | Beacon Deposit Contract | 32 ETH | ||
0xecf33c0f32a79068…
|
Deposit
|
10 secs ago | 0xbAFA44...559c1138 | Beacon Deposit Contract | 32 ETH | ||
0xecf33c0f32a79068…
|
Deposit
|
10 secs ago | 0xbAFA44...559c1138 | Beacon Deposit Contract | 32 ETH | ||
0xecf33c0f32a79068…
|
Deposit
|
10 secs ago | 0xbAFA44...559c1138 | Beacon Deposit Contract | 32 ETH | ||
0xecf33c0f32a79068…
|
Deposit
|
10 secs ago | 0xbAFA44...559c1138 | Beacon Deposit Contract | 32 ETH | ||
0xecf33c0f32a79068…
|
Deposit
|
10 secs ago | 0xbAFA44...559c1138 | Beacon Deposit Contract | 32 ETH | ||
0xecf33c0f32a79068…
|
Deposit
|
10 secs ago | 0xbAFA44...559c1138 | Beacon Deposit Contract | 32 ETH | ||
0xecf33c0f32a79068…
|
Deposit
|
10 secs ago | 0xbAFA44...559c1138 | Beacon Deposit Contract | 32 ETH | ||
0xecf33c0f32a79068…
|
Deposit
|
10 secs ago | 0xbAFA44...559c1138 | Beacon Deposit Contract | 32 ETH | ||
0xecf33c0f32a79068…
|
Deposit
|
10 secs ago | 0xbAFA44...559c1138 | Beacon Deposit Contract | 32 ETH | ||
0xecf33c0f32a79068…
|
Deposit
|
10 secs ago | 0xbAFA44...559c1138 | Beacon Deposit Contract | 32 ETH | ||
0xecf33c0f32a79068…
|
Deposit
|
10 secs ago | 0xbAFA44...559c1138 | Beacon Deposit Contract | 32 ETH |
|
İşlem Karması |
Yöntem
|
Blok | Yaş | Kimden | için | Değer | Txn Peri | |
---|---|---|---|---|---|---|---|---|---|
|
0xecf33c0f32a79068…
|
Transfer
|
12 hrs 44 mins ago | Catecoin: Deployer 2 |
IN
|
Beacon Deposit Co... | 30,000,000,000 | Catecoin (CATE) | |
|
0xecf33c0f32a79068…
|
Transfer
|
12 hrs 44 mins ago | Catecoin: Deployer 2 |
IN
|
Beacon Deposit Co... | 30,000,000,000 | Catecoin (CATE) | |
|
0xecf33c0f32a79068…
|
Transfer
|
12 hrs 44 mins ago | Catecoin: Deployer 2 |
IN
|
Beacon Deposit Co... | 30,000,000,000 | Catecoin (CATE) | |
|
0xecf33c0f32a79068…
|
Transfer
|
12 hrs 44 mins ago | Catecoin: Deployer 2 |
IN
|
Beacon Deposit Co... | 30,000,000,000 | Catecoin (CATE) | |
|
0xecf33c0f32a79068…
|
Transfer
|
12 hrs 44 mins ago | Catecoin: Deployer 2 |
IN
|
Beacon Deposit Co... | 30,000,000,000 | Catecoin (CATE) | |
|
0xecf33c0f32a79068…
|
Transfer
|
12 hrs 44 mins ago | Catecoin: Deployer 2 |
IN
|
Beacon Deposit Co... | 30,000,000,000 | Catecoin (CATE) | |
|
0xecf33c0f32a79068…
|
Transfer
|
12 hrs 44 mins ago | Catecoin: Deployer 2 |
IN
|
Beacon Deposit Co... | 30,000,000,000 | Catecoin (CATE) | |
|
0xecf33c0f32a79068…
|
Transfer
|
12 hrs 44 mins ago | Catecoin: Deployer 2 |
IN
|
Beacon Deposit Co... | 30,000,000,000 | Catecoin (CATE) | |
|
0xecf33c0f32a79068…
|
Transfer
|
12 hrs 44 mins ago | Catecoin: Deployer 2 |
IN
|
Beacon Deposit Co... | 30,000,000,000 | Catecoin (CATE) | |
|
0xecf33c0f32a79068…
|
Transfer
|
12 hrs 44 mins ago | Catecoin: Deployer 2 |
IN
|
Beacon Deposit Co... | 30,000,000,000 | Catecoin (CATE) | |
|
0xecf33c0f32a79068…
|
Transfer
|
12 hrs 44 mins ago | Catecoin: Deployer 2 |
IN
|
Beacon Deposit Co... | 30,000,000,000 | Catecoin (CATE) | |
|
0xecf33c0f32a79068…
|
Transfer
|
12 hrs 44 mins ago | Catecoin: Deployer 2 |
IN
|
Beacon Deposit Co... | 30,000,000,000 | Catecoin (CATE) | |
|
0xecf33c0f32a79068…
|
Transfer
|
12 hrs 44 mins ago | Catecoin: Deployer 2 |
IN
|
Beacon Deposit Co... | 30,000,000,000 | Catecoin (CATE) | |
|
0xecf33c0f32a79068…
|
Transfer
|
12 hrs 44 mins ago | Catecoin: Deployer 2 |
IN
|
Beacon Deposit Co... | 30,000,000,000 | Catecoin (CATE) | |
|
0xecf33c0f32a79068…
|
Transfer
|
12 hrs 44 mins ago | Catecoin: Deployer 2 |
IN
|
Beacon Deposit Co... | 30,000,000,000 | Catecoin (CATE) | |
|
0xecf33c0f32a79068…
|
Transfer
|
12 hrs 44 mins ago | Catecoin: Deployer 2 |
IN
|
Beacon Deposit Co... | 30,000,000,000 | Catecoin (CATE) | |
|
0xecf33c0f32a79068…
|
Transfer
|
12 hrs 44 mins ago | Catecoin: Deployer 2 |
IN
|
Beacon Deposit Co... | 30,000,000,000 | Catecoin (CATE) | |
|
0xecf33c0f32a79068…
|
Transfer
|
12 hrs 44 mins ago | Catecoin: Deployer 2 |
IN
|
Beacon Deposit Co... | 30,000,000,000 | Catecoin (CATE) | |
|
0xecf33c0f32a79068…
|
Transfer
|
12 hrs 44 mins ago | Catecoin: Deployer 2 |
IN
|
Beacon Deposit Co... | 30,000,000,000 | Catecoin (CATE) | |
|
0xecf33c0f32a79068…
|
Transfer
|
12 hrs 44 mins ago | Catecoin: Deployer 2 |
IN
|
Beacon Deposit Co... | 30,000,000,000 | Catecoin (CATE) |
|
Transaction Hash |
Method
|
Blok | Yaş | Kimden | için | Tip | Öğe | |
---|---|---|---|---|---|---|---|---|---|
|
0xecf33c0f32a79068…
|
Transfer
|
12 hrs 44 mins ago | Catecoin: Deployer 2 |
IN
|
Beacon Deposit Co... | ECR_721 |
Greeting Cards 2023 Limit
NFT: Greeting Cards 2023 Limited Ed
|
|
|
0xecf33c0f32a79068…
|
Transfer
|
12 hrs 44 mins ago | Catecoin: Deployer 2 |
IN
|
Beacon Deposit Co... | ECR_721 |
Greeting Cards 2023 Limit
NFT: Greeting Cards 2023 Limited Ed
|
|
|
0xecf33c0f32a79068…
|
Transfer
|
12 hrs 44 mins ago | Catecoin: Deployer 2 |
IN
|
Beacon Deposit Co... | ECR_721 |
Greeting Cards 2023 Limit
NFT: Greeting Cards 2023 Limited Ed
|
|
|
0xecf33c0f32a79068…
|
Transfer
|
12 hrs 44 mins ago | Catecoin: Deployer 2 |
IN
|
Beacon Deposit Co... | ECR_721 |
Greeting Cards 2023 Limit
NFT: Greeting Cards 2023 Limited Ed
|
|
|
0xecf33c0f32a79068…
|
Transfer
|
12 hrs 44 mins ago | Catecoin: Deployer 2 |
IN
|
Beacon Deposit Co... | ECR_721 |
Greeting Cards 2023 Limit
NFT: Greeting Cards 2023 Limited Ed
|
|
|
0xecf33c0f32a79068…
|
Transfer
|
12 hrs 44 mins ago | Catecoin: Deployer 2 |
IN
|
Beacon Deposit Co... | ECR_721 |
Greeting Cards 2023 Limit
NFT: Greeting Cards 2023 Limited Ed
|
|
|
0xecf33c0f32a79068…
|
Transfer
|
12 hrs 44 mins ago | Catecoin: Deployer 2 |
IN
|
Beacon Deposit Co... | ECR_721 |
Greeting Cards 2023 Limit
NFT: Greeting Cards 2023 Limited Ed
|
|
|
0xecf33c0f32a79068…
|
Transfer
|
12 hrs 44 mins ago | Catecoin: Deployer 2 |
IN
|
Beacon Deposit Co... | ECR_721 |
Greeting Cards 2023 Limit
NFT: Greeting Cards 2023 Limited Ed
|
|
|
0xecf33c0f32a79068…
|
Transfer
|
12 hrs 44 mins ago | Catecoin: Deployer 2 |
IN
|
Beacon Deposit Co... | ECR_721 |
Greeting Cards 2023 Limit
NFT: Greeting Cards 2023 Limited Ed
|
|
|
0xecf33c0f32a79068…
|
Transfer
|
12 hrs 44 mins ago | Catecoin: Deployer 2 |
IN
|
Beacon Deposit Co... | ECR_721 |
Greeting Cards 2023 Limit
NFT: Greeting Cards 2023 Limited Ed
|
|
|
0xecf33c0f32a79068…
|
Transfer
|
12 hrs 44 mins ago | Catecoin: Deployer 2 |
IN
|
Beacon Deposit Co... | ECR_721 |
Greeting Cards 2023 Limit
NFT: Greeting Cards 2023 Limited Ed
|
|
|
0xecf33c0f32a79068…
|
Transfer
|
12 hrs 44 mins ago | Catecoin: Deployer 2 |
IN
|
Beacon Deposit Co... | ECR_721 |
Greeting Cards 2023 Limit
NFT: Greeting Cards 2023 Limited Ed
|
|
|
0xecf33c0f32a79068…
|
Transfer
|
12 hrs 44 mins ago | Catecoin: Deployer 2 |
IN
|
Beacon Deposit Co... | ECR_721 |
Greeting Cards 2023 Limit
NFT: Greeting Cards 2023 Limited Ed
|
|
|
0xecf33c0f32a79068…
|
Transfer
|
12 hrs 44 mins ago | Catecoin: Deployer 2 |
IN
|
Beacon Deposit Co... | ECR_721 |
Greeting Cards 2023 Limit
NFT: Greeting Cards 2023 Limited Ed
|
|
|
0xecf33c0f32a79068…
|
Transfer
|
12 hrs 44 mins ago | Catecoin: Deployer 2 |
IN
|
Beacon Deposit Co... | ECR_721 |
Greeting Cards 2023 Limit
NFT: Greeting Cards 2023 Limited Ed
|
|
|
0xecf33c0f32a79068…
|
Transfer
|
12 hrs 44 mins ago | Catecoin: Deployer 2 |
IN
|
Beacon Deposit Co... | ECR_721 |
Greeting Cards 2023 Limit
NFT: Greeting Cards 2023 Limited Ed
|
|
|
0xecf33c0f32a79068…
|
Transfer
|
12 hrs 44 mins ago | Catecoin: Deployer 2 |
IN
|
Beacon Deposit Co... | ECR_721 |
Greeting Cards 2023 Limit
NFT: Greeting Cards 2023 Limited Ed
|
|
|
0xecf33c0f32a79068…
|
Transfer
|
12 hrs 44 mins ago | Catecoin: Deployer 2 |
IN
|
Beacon Deposit Co... | ECR_721 |
Greeting Cards 2023 Limit
NFT: Greeting Cards 2023 Limited Ed
|
|
|
0xecf33c0f32a79068…
|
Transfer
|
12 hrs 44 mins ago | Catecoin: Deployer 2 |
IN
|
Beacon Deposit Co... | ECR_721 |
Greeting Cards 2023 Limit
NFT: Greeting Cards 2023 Limited Ed
|
|
|
0xecf33c0f32a79068…
|
Transfer
|
12 hrs 44 mins ago | Catecoin: Deployer 2 |
IN
|
Beacon Deposit Co... | ECR_721 |
Greeting Cards 2023 Limit
NFT: Greeting Cards 2023 Limited Ed
|
Contract Source Code Verified
(Exact Match)
ContractName:
DepositContract
Optimization Enabled:
Yes
with
5000000
runs
Compiler Version:
v0.6.11+commit.5ef660b1
Other Settings:
default
evmVersion,
Unlicense
license
Contract Security Audit
Contract ABI
Contract Creation Code
Deployed ByteCode Sourcemap
Swarm Source
ipfs://dceca8706b29e917dacf25fceef95acac8d90d765ac926663ce4096195952b61
Descriptions included below are taken from the contract source code NatSpec. CVCscan does not provide any guarantees on their safety or accuracy.
Txn Hash | Blok | Yaş | Yöntem |
|
---|---|---|---|---|
0xecf33c0f32a79068…
|
17453280 | 13 mins ago |
0x22895118
|
DepositEvent (bytes
pubkey,
bytes
withdrawal_credentials,
bytes
amount,
bytes
signature,
bytes
index)
[topic0] 0x649bbc62d0e31342afea4e5cd82d4049e7e1ee912fc0889aa790803be39038c5
Hex
Hex
Number
Text
Address
Hex
Hex
Number
Text
Address
Hex
Hex
Number
Text
Address
Hex
Hex
Number
Text
Address
Hex
Hex
Number
Text
Address
Hex
Hex
Number
Text
Address
Hex
Hex
Number
Text
Address
Hex
Hex
Number
Text
Address
Hex
Hex
Number
Text
Address
Hex
Hex
Number
Text
Address
Hex
Hex
Number
Text
Address
Hex
Hex
Number
Text
Address
Hex
Hex
Number
Text
Address
Hex
Hex
Number
Text
Address
Hex
Hex
Number
Text
Address
Hex
Hex
Number
Text
Address
Hex
Hex
Number
Text
Address
Hex
Hex
Number
Text
Address
Hex
Hex
Number
Text
Address
Hex
Hex
Number
Text
Address
|
0xecf33c0f32a79068…
|
17453280 | 13 mins ago |
0x22895118
|
DepositEvent (bytes
pubkey,
bytes
withdrawal_credentials,
bytes
amount,
bytes
signature,
bytes
index)
[topic0] 0x649bbc62d0e31342afea4e5cd82d4049e7e1ee912fc0889aa790803be39038c5
Hex
Hex
Number
Text
Address
Hex
Hex
Number
Text
Address
Hex
Hex
Number
Text
Address
Hex
Hex
Number
Text
Address
Hex
Hex
Number
Text
Address
Hex
Hex
Number
Text
Address
Hex
Hex
Number
Text
Address
Hex
Hex
Number
Text
Address
Hex
Hex
Number
Text
Address
Hex
Hex
Number
Text
Address
Hex
Hex
Number
Text
Address
Hex
Hex
Number
Text
Address
Hex
Hex
Number
Text
Address
Hex
Hex
Number
Text
Address
Hex
Hex
Number
Text
Address
Hex
Hex
Number
Text
Address
Hex
Hex
Number
Text
Address
Hex
Hex
Number
Text
Address
Hex
Hex
Number
Text
Address
Hex
Hex
Number
Text
Address
|
0xecf33c0f32a79068…
|
17453280 | 13 mins ago |
0x22895118
|
DepositEvent (bytes
pubkey,
bytes
withdrawal_credentials,
bytes
amount,
bytes
signature,
bytes
index)
[topic0] 0x649bbc62d0e31342afea4e5cd82d4049e7e1ee912fc0889aa790803be39038c5
Hex
Hex
Number
Text
Address
Hex
Hex
Number
Text
Address
Hex
Hex
Number
Text
Address
Hex
Hex
Number
Text
Address
Hex
Hex
Number
Text
Address
Hex
Hex
Number
Text
Address
Hex
Hex
Number
Text
Address
Hex
Hex
Number
Text
Address
Hex
Hex
Number
Text
Address
Hex
Hex
Number
Text
Address
Hex
Hex
Number
Text
Address
Hex
Hex
Number
Text
Address
Hex
Hex
Number
Text
Address
Hex
Hex
Number
Text
Address
Hex
Hex
Number
Text
Address
Hex
Hex
Number
Text
Address
Hex
Hex
Number
Text
Address
Hex
Hex
Number
Text
Address
Hex
Hex
Number
Text
Address
Hex
Hex
Number
Text
Address
|
Block | Age | Transaction | Difficulty | Gas Used | Reward |
---|---|---|---|---|---|
0xecf33c0f32a79068…
|
34 days 21 hrs ago | 145 | 0.00 TH |
10,915,233 (36.38%)
|
0.026092595899657117 ETH |
0xecf33c0f32a79068…
|
34 days 21 hrs ago | 145 | 0.00 TH |
10,915,233 (36.38%)
|
0.026092595899657117 ETH |
0xecf33c0f32a79068…
|
34 days 21 hrs ago | 145 | 0.00 TH |
10,915,233 (36.38%)
|
0.026092595899657117 ETH |
0xecf33c0f32a79068…
|
34 days 21 hrs ago | 145 | 0.00 TH |
10,915,233 (36.38%)
|
0.026092595899657117 ETH |
0xecf33c0f32a79068…
|
34 days 21 hrs ago | 145 | 0.00 TH |
10,915,233 (36.38%)
|
0.026092595899657117 ETH |
0xecf33c0f32a79068…
|
34 days 21 hrs ago | 145 | 0.00 TH |
10,915,233 (36.38%)
|
0.026092595899657117 ETH |
0xecf33c0f32a79068…
|
34 days 21 hrs ago | 145 | 0.00 TH |
10,915,233 (36.38%)
|
0.026092595899657117 ETH |
0xecf33c0f32a79068…
|
34 days 21 hrs ago | 145 | 0.00 TH |
10,915,233 (36.38%)
|
0.026092595899657117 ETH |
0xecf33c0f32a79068…
|
34 days 21 hrs ago | 145 | 0.00 TH |
10,915,233 (36.38%)
|
0.026092595899657117 ETH |
0xecf33c0f32a79068…
|
34 days 21 hrs ago | 145 | 0.00 TH |
10,915,233 (36.38%)
|
0.026092595899657117 ETH |
0xecf33c0f32a79068…
|
34 days 21 hrs ago | 145 | 0.00 TH |
10,915,233 (36.38%)
|
0.026092595899657117 ETH |
0xecf33c0f32a79068…
|
34 days 21 hrs ago | 145 | 0.00 TH |
10,915,233 (36.38%)
|
0.026092595899657117 ETH |
0xecf33c0f32a79068…
|
34 days 21 hrs ago | 145 | 0.00 TH |
10,915,233 (36.38%)
|
0.026092595899657117 ETH |
0xecf33c0f32a79068…
|
34 days 21 hrs ago | 145 | 0.00 TH |
10,915,233 (36.38%)
|
0.026092595899657117 ETH |
0xecf33c0f32a79068…
|
34 days 21 hrs ago | 145 | 0.00 TH |
10,915,233 (36.38%)
|
0.026092595899657117 ETH |
0xecf33c0f32a79068…
|
34 days 21 hrs ago | 145 | 0.00 TH |
10,915,233 (36.38%)
|
0.026092595899657117 ETH |
0xecf33c0f32a79068…
|
34 days 21 hrs ago | 145 | 0.00 TH |
10,915,233 (36.38%)
|
0.026092595899657117 ETH |
0xecf33c0f32a79068…
|
34 days 21 hrs ago | 145 | 0.00 TH |
10,915,233 (36.38%)
|
0.026092595899657117 ETH |
0xecf33c0f32a79068…
|
34 days 21 hrs ago | 145 | 0.00 TH |
10,915,233 (36.38%)
|
0.026092595899657117 ETH |
0xecf33c0f32a79068…
|
34 days 21 hrs ago | 145 | 0.00 TH |
10,915,233 (36.38%)
|
0.026092595899657117 ETH |
QR Kodu
Uyarı! Sözleşme bayt kodu değiştirilmiştir ve doğrulanmış olanla eşleşmemektedir. Bu nedenle, bu akıllı sözleşme ile etkileşim riskli olabilir.
Bu sözleşme Sourcify aracılığıyla kısmen doğrulanmıştır.
- Sözleşme Adı:
- OSBTokenFactory
- Optimizasyon Etkin:
- gerçek
- Derleyici sürümü:
- v0.8.16+commit.07a7930e
- Optimizasyon Çalışmaları:
- 200
- EVM versiyonu:
- default
- Doğrulandı:
- 2024-04-10T04:42:38.805694Z
Kurucu Argümanları
0x000000000000000000000000f32fb8449ab77bd09c6f6997d28f19df322e34ad0000000000000000000000001e19f4b3b1cedce3eb000293d2b2595b88c8aab5000000000000000000000000232f28f71b63dc2fbb5713a9424852aad73970b9
Arg [0] (address) : 0xf32fb8449ab77bd09c6f6997d28f19df322e34ad
Arg [1] (address) : 0x1e19f4b3b1cedce3eb000293d2b2595b88c8aab5
Arg [2] (address) : 0x232f28f71b63dc2fbb5713a9424852aad73970b9
Dosya 1 . 1: Sözleşme kaynak kodu
// Sources flattened with hardhat v2.13.0 https://hardhat.org // File @openzeppelin/contracts/proxy/Clones.sol@v4.8.2 // SPDX-License-Identifier: MIT // OpenZeppelin Contracts (last updated v4.8.0) (proxy/Clones.sol) pragma solidity ^0.8.0; /** * @dev https://eips.ethereum.org/EIPS/eip-1167[EIP 1167] is a standard for * deploying minimal proxy contracts, also known as "clones". * * > To simply and cheaply clone contract functionality in an immutable way, this standard specifies * > a minimal bytecode implementation that delegates all calls to a known, fixed address. * * The library includes functions to deploy a proxy using either `create` (traditional deployment) or `create2` * (salted deterministic deployment). It also includes functions to predict the addresses of clones deployed using the * deterministic method. * * _Available since v3.4._ */ library Clones { /** * @dev Deploys and returns the address of a clone that mimics the behaviour of `implementation`. * * This function uses the create opcode, which should never revert. */ function clone(address implementation) internal returns (address instance) { /// @solidity memory-safe-assembly assembly { // Cleans the upper 96 bits of the `implementation` word, then packs the first 3 bytes // of the `implementation` address with the bytecode before the address. mstore(0x00, or(shr(0xe8, shl(0x60, implementation)), 0x3d602d80600a3d3981f3363d3d373d3d3d363d73000000)) // Packs the remaining 17 bytes of `implementation` with the bytecode after the address. mstore(0x20, or(shl(0x78, implementation), 0x5af43d82803e903d91602b57fd5bf3)) instance := create(0, 0x09, 0x37) } require(instance != address(0), "ERC1167: create failed"); } /** * @dev Deploys and returns the address of a clone that mimics the behaviour of `implementation`. * * This function uses the create2 opcode and a `salt` to deterministically deploy * the clone. Using the same `implementation` and `salt` multiple time will revert, since * the clones cannot be deployed twice at the same address. */ function cloneDeterministic(address implementation, bytes32 salt) internal returns (address instance) { /// @solidity memory-safe-assembly assembly { // Cleans the upper 96 bits of the `implementation` word, then packs the first 3 bytes // of the `implementation` address with the bytecode before the address. mstore(0x00, or(shr(0xe8, shl(0x60, implementation)), 0x3d602d80600a3d3981f3363d3d373d3d3d363d73000000)) // Packs the remaining 17 bytes of `implementation` with the bytecode after the address. mstore(0x20, or(shl(0x78, implementation), 0x5af43d82803e903d91602b57fd5bf3)) instance := create2(0, 0x09, 0x37, salt) } require(instance != address(0), "ERC1167: create2 failed"); } /** * @dev Computes the address of a clone deployed using {Clones-cloneDeterministic}. */ function predictDeterministicAddress( address implementation, bytes32 salt, address deployer ) internal pure returns (address predicted) { /// @solidity memory-safe-assembly assembly { let ptr := mload(0x40) mstore(add(ptr, 0x38), deployer) mstore(add(ptr, 0x24), 0x5af43d82803e903d91602b57fd5bf3ff) mstore(add(ptr, 0x14), implementation) mstore(ptr, 0x3d602d80600a3d3981f3363d3d373d3d3d363d73) mstore(add(ptr, 0x58), salt) mstore(add(ptr, 0x78), keccak256(add(ptr, 0x0c), 0x37)) predicted := keccak256(add(ptr, 0x43), 0x55) } } /** * @dev Computes the address of a clone deployed using {Clones-cloneDeterministic}. */ function predictDeterministicAddress( address implementation, bytes32 salt ) internal view returns (address predicted) { return predictDeterministicAddress(implementation, salt, address(this)); } } // File @openzeppelin/contracts/utils/Context.sol@v4.8.2 // OpenZeppelin Contracts v4.4.1 (utils/Context.sol) pragma solidity ^0.8.0; /** * @dev Provides information about the current execution context, including the * sender of the transaction and its data. While these are generally available * via msg.sender and msg.data, they should not be accessed in such a direct * manner, since when dealing with meta-transactions the account sending and * paying for execution may not be the actual sender (as far as an application * is concerned). * * This contract is only required for intermediate, library-like contracts. */ abstract contract Context { function _msgSender() internal view virtual returns (address) { return msg.sender; } function _msgData() internal view virtual returns (bytes calldata) { return msg.data; } } // File @openzeppelin/contracts/utils/Counters.sol@v4.8.2 // OpenZeppelin Contracts v4.4.1 (utils/Counters.sol) pragma solidity ^0.8.0; /** * @title Counters * @author Matt Condon (@shrugs) * @dev Provides counters that can only be incremented, decremented or reset. This can be used e.g. to track the number * of elements in a mapping, issuing ERC721 ids, or counting request ids. * * Include with `using Counters for Counters.Counter;` */ library Counters { struct Counter { // This variable should never be directly accessed by users of the library: interactions must be restricted to // the library's function. As of Solidity v0.5.2, this cannot be enforced, though there is a proposal to add // this feature: see https://github.com/ethereum/solidity/issues/4637 uint256 _value; // default: 0 } function current(Counter storage counter) internal view returns (uint256) { return counter._value; } function increment(Counter storage counter) internal { unchecked { counter._value += 1; } } function decrement(Counter storage counter) internal { uint256 value = counter._value; require(value > 0, "Counter: decrement overflow"); unchecked { counter._value = value - 1; } } function reset(Counter storage counter) internal { counter._value = 0; } } // File contracts/interfaces/IOSBLimitedToken.sol pragma solidity 0.8.16; interface IOSBLimitedToken { function initialize( address _owner, string memory _name, string memory _symbol, uint8 _decimals, uint256 _issueAmount, uint256 _maxTotalSupply ) external; } // File contracts/interfaces/IOSBTokenFactory.sol pragma solidity 0.8.16; interface IOSBTokenFactory {} struct ContractInfo { uint256 id; bool isLimited; address owner; address token; } // File contracts/interfaces/IOSBUnlimitedToken.sol pragma solidity 0.8.16; interface IOSBUnlimitedToken { function initialize( address _owner, string memory _name, string memory _symbol, uint8 _decimals, uint256 _issueAmount ) external; } // File contracts/interfaces/ISetting.sol pragma solidity 0.8.16; interface ISetting { function checkOnlySuperAdmin(address _caller) external view; function checkOnlyAdmin(address _caller) external view; function checkOnlySuperAdminOrController(address _caller) external view; function checkOnlyController(address _caller) external view; function isAdmin(address _account) external view returns (bool); function isSuperAdmin(address _account) external view returns (bool); function getSuperAdmin() external view returns (address); } error CallerIsNotTheSuperAdmin(); error CallerIsNotTheAdmin(); // File contracts/OSBTokenFactory.sol pragma solidity 0.8.16; contract OSBTokenFactory is IOSBTokenFactory, Context { ISetting public setting; address public osbLimitedTokenLib; address public osbUnlimitedTokenLib; using Counters for Counters.Counter; Counters.Counter public lastId; /// @dev Keep track of contract info from created ID. mapping(uint256 => ContractInfo) public contractInfos; // ============ ERRORS ============ error AddressIsZero(); // ============ EVENTS ============ /// @dev Emit an event when the contract is deployed. event ContractDeployed( address indexed setting, address indexed osbLimitedTokenLib, address indexed osbUnlimitedTokenLib ); /// @dev Emit an event when the osbLimitedTokenLib is updated. event SetOSBLimitedTokenLib(address indexed oldAddress, address indexed newAddress); /// @dev Emit an event when the osbUnlimitedTokenLib is updated. event SetOSBUnlimitedTokenLib(address indexed oldAddress, address indexed newAddress); /// @dev Emit an event when a contract created. event ContractCreated(uint256 indexed id, bool isLimited, address indexed owner, address indexed deployedContract); /** * @notice Setting states initial when deploy contract and only called once. * @param _setting Setting contract address. * @param _osbLimitedTokenLib OSBLimitedToken library address. * @param _osbUnlimitedTokenLib OSBUnlimitedToken library address. */ constructor(address _setting, address _osbLimitedTokenLib, address _osbUnlimitedTokenLib) { setting = ISetting(_setting); osbLimitedTokenLib = _osbLimitedTokenLib; osbUnlimitedTokenLib = _osbUnlimitedTokenLib; emit ContractDeployed(_setting, _osbLimitedTokenLib, _osbUnlimitedTokenLib); } // ============ ACCESS CONTROL/SANITY MODIFIERS ============ modifier onlySuperAdmin() { setting.checkOnlySuperAdmin(_msgSender()); _; } // ============ OWNER-ONLY ADMIN FUNCTIONS ============= /** * @notice Update the new OSBLimitedToken library address. * @param _library Library address. */ function setOSBLimitedToken(address _library) external onlySuperAdmin { if (_library == address(0)) revert AddressIsZero(); address oldAddress = osbLimitedTokenLib; osbLimitedTokenLib = _library; emit SetOSBLimitedTokenLib(oldAddress, _library); } /** * @notice Update the new OSBUnlimitedToken library address. * @param _library Library address. */ function setOSBUnlimitedToken(address _library) external onlySuperAdmin { if (_library == address(0)) revert AddressIsZero(); address oldAddress = osbUnlimitedTokenLib; osbUnlimitedTokenLib = _library; emit SetOSBUnlimitedTokenLib(oldAddress, _library); } // ============ EXTERNAL FUNCTIONS FOR CREATING AND MINT ============= /** * @dev Creates a new ERC20 token contract and initializes it with the specified parameters. * @param _owner The owner of the contract. * @param _name The name of the token. * @param _symbol The symbol of the token. * @param _decimals The number of decimals used to get its user representation. * @param _issueAmount The initial amount of tokens to be issued. * @param _maxTotalSupply The maximum total supply of tokens. * @return deployedContract The address of the deployed token contract. */ function createOSBLimitedToken( address _owner, string memory _name, string memory _symbol, uint8 _decimals, uint256 _issueAmount, uint256 _maxTotalSupply ) public returns (address deployedContract) { deployedContract = _createContract(true, _owner); IOSBLimitedToken(deployedContract).initialize(_owner, _name, _symbol, _decimals, _issueAmount, _maxTotalSupply); } /** * @dev Creates a new ERC20 token contract and initializes it with the specified parameters. * @param _owner The owner of the contract. * @param _name The name of the token. * @param _symbol The symbol of the token. * @param _decimals The number of decimals used to get its user representation. * @param _issueAmount The initial amount of tokens to be issued. * @return deployedContract The address of the deployed token contract. */ function createOSBUnlimitedToken( address _owner, string memory _name, string memory _symbol, uint8 _decimals, uint256 _issueAmount ) public returns (address deployedContract) { deployedContract = _createContract(false, _owner); IOSBUnlimitedToken(deployedContract).initialize(_owner, _name, _symbol, _decimals, _issueAmount); } // ============ PRIVATE FUNCTIONS ============= function _createContract(bool _isLimited, address _owner) private returns (address deployedContract) { lastId.increment(); uint256 currentId = lastId.current(); bytes32 salt = keccak256(abi.encodePacked(currentId)); address lib = _isLimited ? osbLimitedTokenLib : osbUnlimitedTokenLib; deployedContract = Clones.cloneDeterministic(lib, salt); contractInfos[currentId] = ContractInfo({ id: currentId, isLimited: _isLimited, owner: _owner, token: deployedContract }); emit ContractCreated(currentId, _isLimited, _owner, deployedContract); } }
Sözleşme ABI
[{"type":"constructor","stateMutability":"nonpayable","inputs":[{"type":"address","name":"_setting","internalType":"address"},{"type":"address","name":"_osbLimitedTokenLib","internalType":"address"},{"type":"address","name":"_osbUnlimitedTokenLib","internalType":"address"}]},{"type":"error","name":"AddressIsZero","inputs":[]},{"type":"event","name":"ContractCreated","inputs":[{"type":"uint256","name":"id","internalType":"uint256","indexed":true},{"type":"bool","name":"isLimited","internalType":"bool","indexed":false},{"type":"address","name":"owner","internalType":"address","indexed":true},{"type":"address","name":"deployedContract","internalType":"address","indexed":true}],"anonymous":false},{"type":"event","name":"ContractDeployed","inputs":[{"type":"address","name":"setting","internalType":"address","indexed":true},{"type":"address","name":"osbLimitedTokenLib","internalType":"address","indexed":true},{"type":"address","name":"osbUnlimitedTokenLib","internalType":"address","indexed":true}],"anonymous":false},{"type":"event","name":"SetOSBLimitedTokenLib","inputs":[{"type":"address","name":"oldAddress","internalType":"address","indexed":true},{"type":"address","name":"newAddress","internalType":"address","indexed":true}],"anonymous":false},{"type":"event","name":"SetOSBUnlimitedTokenLib","inputs":[{"type":"address","name":"oldAddress","internalType":"address","indexed":true},{"type":"address","name":"newAddress","internalType":"address","indexed":true}],"anonymous":false},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"id","internalType":"uint256"},{"type":"bool","name":"isLimited","internalType":"bool"},{"type":"address","name":"owner","internalType":"address"},{"type":"address","name":"token","internalType":"address"}],"name":"contractInfos","inputs":[{"type":"uint256","name":"","internalType":"uint256"}]},{"type":"function","stateMutability":"nonpayable","outputs":[{"type":"address","name":"deployedContract","internalType":"address"}],"name":"createOSBLimitedToken","inputs":[{"type":"address","name":"_owner","internalType":"address"},{"type":"string","name":"_name","internalType":"string"},{"type":"string","name":"_symbol","internalType":"string"},{"type":"uint8","name":"_decimals","internalType":"uint8"},{"type":"uint256","name":"_issueAmount","internalType":"uint256"},{"type":"uint256","name":"_maxTotalSupply","internalType":"uint256"}]},{"type":"function","stateMutability":"nonpayable","outputs":[{"type":"address","name":"deployedContract","internalType":"address"}],"name":"createOSBUnlimitedToken","inputs":[{"type":"address","name":"_owner","internalType":"address"},{"type":"string","name":"_name","internalType":"string"},{"type":"string","name":"_symbol","internalType":"string"},{"type":"uint8","name":"_decimals","internalType":"uint8"},{"type":"uint256","name":"_issueAmount","internalType":"uint256"}]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"_value","internalType":"uint256"}],"name":"lastId","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"address","name":"","internalType":"address"}],"name":"osbLimitedTokenLib","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"address","name":"","internalType":"address"}],"name":"osbUnlimitedTokenLib","inputs":[]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"setOSBLimitedToken","inputs":[{"type":"address","name":"_library","internalType":"address"}]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"setOSBUnlimitedToken","inputs":[{"type":"address","name":"_library","internalType":"address"}]},{"type":"function","stateMutability":"view","outputs":[{"type":"address","name":"","internalType":"contract ISetting"}],"name":"setting","inputs":[]}]
Sözleşme Oluşturma Kodu
0x608060405234801561001057600080fd5b50604051610ae7380380610ae783398101604081905261002f916100ba565b600080546001600160a01b03199081166001600160a01b0386811691821784556001805484168783169081179091556002805490941691861691821790935560405190937f8a14d1d7200360982eafa429b53edf408f7f589e6da6558f3c116c7f708327b391a45050506100fd565b80516001600160a01b03811681146100b557600080fd5b919050565b6000806000606084860312156100cf57600080fd5b6100d88461009e565b92506100e66020850161009e565b91506100f46040850161009e565b90509250925092565b6109db8061010c6000396000f3fe608060405234801561001057600080fd5b50600436106100935760003560e01c8063ac4a21b411610066578063ac4a21b414610164578063c0c9ce3014610177578063c1292cc31461018a578063c3d1222e146101a2578063fff99778146101b557600080fd5b80634fc749921461009857806364218c64146100c85780636794f004146100dd5780636892da9414610151575b600080fd5b6001546100ab906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b6100db6100d63660046106a6565b6101c8565b005b6101226100eb3660046106c8565b600460205260009081526040902080546001820154600290920154909160ff8116916001600160a01b036101009092048216911684565b6040805194855292151560208501526001600160a01b03918216928401929092521660608201526080016100bf565b6002546100ab906001600160a01b031681565b6100ab610172366004610795565b6102ab565b6000546100ab906001600160a01b031681565b6003546101949081565b6040519081526020016100bf565b6100db6101b03660046106a6565b61032a565b6100ab6101c3366004610822565b61040d565b6000546001600160a01b031663b357010a336040516001600160e01b031960e084901b1681526001600160a01b03909116600482015260240160006040518083038186803b15801561021957600080fd5b505afa15801561022d573d6000803e3d6000fd5b5050506001600160a01b03821690506102595760405163867915ab60e01b815260040160405180910390fd5b600180546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8f2afff1e0d2f2093c828d762c3100b7dc6db4b6a669975f8fb9f186f63677bf90600090a35050565b60006102b860008761048f565b60405163d72bdc5360e01b81529091506001600160a01b0382169063d72bdc53906102ef90899089908990899089906004016108ff565b600060405180830381600087803b15801561030957600080fd5b505af115801561031d573d6000803e3d6000fd5b5050505095945050505050565b6000546001600160a01b031663b357010a336040516001600160e01b031960e084901b1681526001600160a01b03909116600482015260240160006040518083038186803b15801561037b57600080fd5b505afa15801561038f573d6000803e3d6000fd5b5050506001600160a01b03821690506103bb5760405163867915ab60e01b815260040160405180910390fd5b600280546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f9f4aaace1d25addbd72ed2cf23cb5c722d9d92ef412a380c225dff12b71413a490600090a35050565b600061041a60018861048f565b604051630ba5715f60e31b81529091506001600160a01b03821690635d2b8af890610453908a908a908a908a908a908a9060040161094d565b600060405180830381600087803b15801561046d57600080fd5b505af1158015610481573d6000803e3d6000fd5b505050509695505050505050565b600061049f600380546001019055565b60006104aa60035490565b90506000816040516020016104c191815260200190565b6040516020818303038152906040528051906020012090506000856104f1576002546001600160a01b03166104fe565b6001546001600160a01b03165b905061050a81836105e3565b6040805160808101825285815288151560208083018281526001600160a01b038b81168587018181528883166060880181815260008e8152600488528a90209851895594516001890180549351861661010002610100600160a81b0319921515929092166001600160a81b03199094169390931717909155925160029096018054969092166001600160a01b031990961695909517905593519182529397509192909186917f1669c6c56df80dd8ceb465977fbfb157eaef647c232c2f5332a8179701a5b589910160405180910390a450505092915050565b6000763d602d80600a3d3981f3363d3d373d3d3d363d730000008360601b60e81c176000526e5af43d82803e903d91602b57fd5bf38360781b1760205281603760096000f590506001600160a01b0381166106845760405162461bcd60e51b815260206004820152601760248201527f455243313136373a2063726561746532206661696c6564000000000000000000604482015260640160405180910390fd5b92915050565b80356001600160a01b03811681146106a157600080fd5b919050565b6000602082840312156106b857600080fd5b6106c18261068a565b9392505050565b6000602082840312156106da57600080fd5b5035919050565b634e487b7160e01b600052604160045260246000fd5b600082601f83011261070857600080fd5b813567ffffffffffffffff80821115610723576107236106e1565b604051601f8301601f19908116603f0116810190828211818310171561074b5761074b6106e1565b8160405283815286602085880101111561076457600080fd5b836020870160208301376000602085830101528094505050505092915050565b803560ff811681146106a157600080fd5b600080600080600060a086880312156107ad57600080fd5b6107b68661068a565b9450602086013567ffffffffffffffff808211156107d357600080fd5b6107df89838a016106f7565b955060408801359150808211156107f557600080fd5b50610802888289016106f7565b93505061081160608701610784565b949793965091946080013592915050565b60008060008060008060c0878903121561083b57600080fd5b6108448761068a565b9550602087013567ffffffffffffffff8082111561086157600080fd5b61086d8a838b016106f7565b9650604089013591508082111561088357600080fd5b5061089089828a016106f7565b94505061089f60608801610784565b92506080870135915060a087013590509295509295509295565b6000815180845260005b818110156108df576020818501810151868301820152016108c3565b506000602082860101526020601f19601f83011685010191505092915050565b6001600160a01b038616815260a060208201819052600090610923908301876108b9565b828103604084015261093581876108b9565b60ff9590951660608401525050608001529392505050565b6001600160a01b038716815260c060208201819052600090610971908301886108b9565b828103604084015261098381886108b9565b60ff9690961660608401525050608081019290925260a090910152939250505056fea2646970667358221220ba3c4fd69da4dd0e7760f337830077287372226ef2e10893779c746f58bb258964736f6c63430008100033000000000000000000000000f32fb8449ab77bd09c6f6997d28f19df322e34ad0000000000000000000000001e19f4b3b1cedce3eb000293d2b2595b88c8aab5000000000000000000000000232f28f71b63dc2fbb5713a9424852aad73970b9
Dağıtılmış ByteCode
0x608060405234801561001057600080fd5b50600436106100935760003560e01c8063ac4a21b411610066578063ac4a21b414610164578063c0c9ce3014610177578063c1292cc31461018a578063c3d1222e146101a2578063fff99778146101b557600080fd5b80634fc749921461009857806364218c64146100c85780636794f004146100dd5780636892da9414610151575b600080fd5b6001546100ab906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b6100db6100d63660046106a6565b6101c8565b005b6101226100eb3660046106c8565b600460205260009081526040902080546001820154600290920154909160ff8116916001600160a01b036101009092048216911684565b6040805194855292151560208501526001600160a01b03918216928401929092521660608201526080016100bf565b6002546100ab906001600160a01b031681565b6100ab610172366004610795565b6102ab565b6000546100ab906001600160a01b031681565b6003546101949081565b6040519081526020016100bf565b6100db6101b03660046106a6565b61032a565b6100ab6101c3366004610822565b61040d565b6000546001600160a01b031663b357010a336040516001600160e01b031960e084901b1681526001600160a01b03909116600482015260240160006040518083038186803b15801561021957600080fd5b505afa15801561022d573d6000803e3d6000fd5b5050506001600160a01b03821690506102595760405163867915ab60e01b815260040160405180910390fd5b600180546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8f2afff1e0d2f2093c828d762c3100b7dc6db4b6a669975f8fb9f186f63677bf90600090a35050565b60006102b860008761048f565b60405163d72bdc5360e01b81529091506001600160a01b0382169063d72bdc53906102ef90899089908990899089906004016108ff565b600060405180830381600087803b15801561030957600080fd5b505af115801561031d573d6000803e3d6000fd5b5050505095945050505050565b6000546001600160a01b031663b357010a336040516001600160e01b031960e084901b1681526001600160a01b03909116600482015260240160006040518083038186803b15801561037b57600080fd5b505afa15801561038f573d6000803e3d6000fd5b5050506001600160a01b03821690506103bb5760405163867915ab60e01b815260040160405180910390fd5b600280546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f9f4aaace1d25addbd72ed2cf23cb5c722d9d92ef412a380c225dff12b71413a490600090a35050565b600061041a60018861048f565b604051630ba5715f60e31b81529091506001600160a01b03821690635d2b8af890610453908a908a908a908a908a908a9060040161094d565b600060405180830381600087803b15801561046d57600080fd5b505af1158015610481573d6000803e3d6000fd5b505050509695505050505050565b600061049f600380546001019055565b60006104aa60035490565b90506000816040516020016104c191815260200190565b6040516020818303038152906040528051906020012090506000856104f1576002546001600160a01b03166104fe565b6001546001600160a01b03165b905061050a81836105e3565b6040805160808101825285815288151560208083018281526001600160a01b038b81168587018181528883166060880181815260008e8152600488528a90209851895594516001890180549351861661010002610100600160a81b0319921515929092166001600160a81b03199094169390931717909155925160029096018054969092166001600160a01b031990961695909517905593519182529397509192909186917f1669c6c56df80dd8ceb465977fbfb157eaef647c232c2f5332a8179701a5b589910160405180910390a450505092915050565b6000763d602d80600a3d3981f3363d3d373d3d3d363d730000008360601b60e81c176000526e5af43d82803e903d91602b57fd5bf38360781b1760205281603760096000f590506001600160a01b0381166106845760405162461bcd60e51b815260206004820152601760248201527f455243313136373a2063726561746532206661696c6564000000000000000000604482015260640160405180910390fd5b92915050565b80356001600160a01b03811681146106a157600080fd5b919050565b6000602082840312156106b857600080fd5b6106c18261068a565b9392505050565b6000602082840312156106da57600080fd5b5035919050565b634e487b7160e01b600052604160045260246000fd5b600082601f83011261070857600080fd5b813567ffffffffffffffff80821115610723576107236106e1565b604051601f8301601f19908116603f0116810190828211818310171561074b5761074b6106e1565b8160405283815286602085880101111561076457600080fd5b836020870160208301376000602085830101528094505050505092915050565b803560ff811681146106a157600080fd5b600080600080600060a086880312156107ad57600080fd5b6107b68661068a565b9450602086013567ffffffffffffffff808211156107d357600080fd5b6107df89838a016106f7565b955060408801359150808211156107f557600080fd5b50610802888289016106f7565b93505061081160608701610784565b949793965091946080013592915050565b60008060008060008060c0878903121561083b57600080fd5b6108448761068a565b9550602087013567ffffffffffffffff8082111561086157600080fd5b61086d8a838b016106f7565b9650604089013591508082111561088357600080fd5b5061089089828a016106f7565b94505061089f60608801610784565b92506080870135915060a087013590509295509295509295565b6000815180845260005b818110156108df576020818501810151868301820152016108c3565b506000602082860101526020601f19601f83011685010191505092915050565b6001600160a01b038616815260a060208201819052600090610923908301876108b9565b828103604084015261093581876108b9565b60ff9590951660608401525050608001529392505050565b6001600160a01b038716815260c060208201819052600090610971908301886108b9565b828103604084015261098381886108b9565b60ff9690961660608401525050608081019290925260a090910152939250505056fea2646970667358221220ba3c4fd69da4dd0e7760f337830077287372226ef2e10893779c746f58bb258964736f6c63430008100033