"example" 메서드에 대해 example를 성공적으로 보냈습니다. 내부 거래 거래 토큰 전송 NFT 이체 토큰 세부 정보 전송 ID별 토큰 세부 정보 전송 토큰 보유자 로그 실행이 되돌립니다.
false
false
계약
0x01a91e8658544B305A7AD6d95D48a7c121737B15
개요
XCR 균형
0 XCR
XCR 가치
$--- (@ $---/XCR)
자세한 정보
컨트랙트 생성자
My Happy SVG 최근 25건의 내부 거래(모두 보기)
"%>
부모 Txn 해시
방법
블록 나이 에서 가치
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
My Happy SVG Latest 25 from a total of 323,666 transactions (+ 1 Pending)
트랜잭션 해시
방법
블록 나이 에서 가치 Txn 요정
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)
My Happy SVG Latest 25 from a total of 323,666 transactions (+ 1 Pending)
Transaction Hash
Method
블록 나이 에서 유형 항목
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 Source Code (Solidity)
Contract Security Audit
- Submit Audit Here
Contract ABI
Contract Creation Code
Deployed ByteCode Sourcemap
Swarm Source
ipfs://dceca8706b29e917dacf25fceef95acac8d90d765ac926663ce4096195952b61
My Happy SVG Latest 25 from a total of 323,666 transactions (+ 1 Pending)
Txn 해시 블록 나이 방법 My Happy SVG 로그
0xecf33c0f32a79068…
17453280 13 mins ago
0x22895118
deposit(bytes,bytes,bytes,bytes32)
DepositEvent (bytes pubkey, bytes withdrawal_credentials, bytes amount, bytes signature, bytes index)
[topic0] 0x649bbc62d0e31342afea4e5cd82d4049e7e1ee912fc0889aa790803be39038c5
00000000000000000000000000000000000000000000000000000000000000a0
00000000000000000000000000000000000000000000000000000000000000a0
00000000000000000000000000000000000000000000000000000000000000a0
00000000000000000000000000000000000000000000000000000000000000a0
00000000000000000000000000000000000000000000000000000000000000a0
00000000000000000000000000000000000000000000000000000000000000a0
00000000000000000000000000000000000000000000000000000000000000a0
00000000000000000000000000000000000000000000000000000000000000a0
00000000000000000000000000000000000000000000000000000000000000a0
00000000000000000000000000000000000000000000000000000000000000a0
00000000000000000000000000000000000000000000000000000000000000a0
00000000000000000000000000000000000000000000000000000000000000a0
00000000000000000000000000000000000000000000000000000000000000a0
00000000000000000000000000000000000000000000000000000000000000a0
00000000000000000000000000000000000000000000000000000000000000a0
00000000000000000000000000000000000000000000000000000000000000a0
00000000000000000000000000000000000000000000000000000000000000a0
00000000000000000000000000000000000000000000000000000000000000a0
00000000000000000000000000000000000000000000000000000000000000a0
00000000000000000000000000000000000000000000000000000000000000a0
0xecf33c0f32a79068…
17453280 13 mins ago
0x22895118
deposit(bytes,bytes,bytes,bytes32)
DepositEvent (bytes pubkey, bytes withdrawal_credentials, bytes amount, bytes signature, bytes index)
[topic0] 0x649bbc62d0e31342afea4e5cd82d4049e7e1ee912fc0889aa790803be39038c5
00000000000000000000000000000000000000000000000000000000000000a0
00000000000000000000000000000000000000000000000000000000000000a0
00000000000000000000000000000000000000000000000000000000000000a0
00000000000000000000000000000000000000000000000000000000000000a0
00000000000000000000000000000000000000000000000000000000000000a0
00000000000000000000000000000000000000000000000000000000000000a0
00000000000000000000000000000000000000000000000000000000000000a0
00000000000000000000000000000000000000000000000000000000000000a0
00000000000000000000000000000000000000000000000000000000000000a0
00000000000000000000000000000000000000000000000000000000000000a0
00000000000000000000000000000000000000000000000000000000000000a0
00000000000000000000000000000000000000000000000000000000000000a0
00000000000000000000000000000000000000000000000000000000000000a0
00000000000000000000000000000000000000000000000000000000000000a0
00000000000000000000000000000000000000000000000000000000000000a0
00000000000000000000000000000000000000000000000000000000000000a0
00000000000000000000000000000000000000000000000000000000000000a0
00000000000000000000000000000000000000000000000000000000000000a0
00000000000000000000000000000000000000000000000000000000000000a0
00000000000000000000000000000000000000000000000000000000000000a0
0xecf33c0f32a79068…
17453280 13 mins ago
0x22895118
deposit(bytes,bytes,bytes,bytes32)
DepositEvent (bytes pubkey, bytes withdrawal_credentials, bytes amount, bytes signature, bytes index)
[topic0] 0x649bbc62d0e31342afea4e5cd82d4049e7e1ee912fc0889aa790803be39038c5
00000000000000000000000000000000000000000000000000000000000000a0
00000000000000000000000000000000000000000000000000000000000000a0
00000000000000000000000000000000000000000000000000000000000000a0
00000000000000000000000000000000000000000000000000000000000000a0
00000000000000000000000000000000000000000000000000000000000000a0
00000000000000000000000000000000000000000000000000000000000000a0
00000000000000000000000000000000000000000000000000000000000000a0
00000000000000000000000000000000000000000000000000000000000000a0
00000000000000000000000000000000000000000000000000000000000000a0
00000000000000000000000000000000000000000000000000000000000000a0
00000000000000000000000000000000000000000000000000000000000000a0
00000000000000000000000000000000000000000000000000000000000000a0
00000000000000000000000000000000000000000000000000000000000000a0
00000000000000000000000000000000000000000000000000000000000000a0
00000000000000000000000000000000000000000000000000000000000000a0
00000000000000000000000000000000000000000000000000000000000000a0
00000000000000000000000000000000000000000000000000000000000000a0
00000000000000000000000000000000000000000000000000000000000000a0
00000000000000000000000000000000000000000000000000000000000000a0
00000000000000000000000000000000000000000000000000000000000000a0
My Happy SVG Latest 15 blocks produced
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
경고! 컨트랙트 바이트코드가 변경되어 확인된 바이트코드와 일치하지 않습니다. 따라서 이 스마트 컨트랙트와의 상호작용은 위험할 수 있습니다.
이 계약은 Sourcify를 통해 부분적으로 확인되었습니다.
계약 이름:
OSBTokenFactory
최적화 사용:
true
컴파일러 버전:
v0.8.16+commit.07a7930e
최적화 실행:
200
EVM 버전:
default
에서 확인되었습니다:
2024-04-10T04:42:38.805694Z

생성자 인수

0x000000000000000000000000f32fb8449ab77bd09c6f6997d28f19df322e34ad0000000000000000000000001e19f4b3b1cedce3eb000293d2b2595b88c8aab5000000000000000000000000232f28f71b63dc2fbb5713a9424852aad73970b9

Arg [0] (address) : 0xf32fb8449ab77bd09c6f6997d28f19df322e34ad
Arg [1] (address) : 0x1e19f4b3b1cedce3eb000293d2b2595b88c8aab5
Arg [2] (address) : 0x232f28f71b63dc2fbb5713a9424852aad73970b9

                              

파일 1 의 1: 계약 소스 코드

Sol2uml
새로운
// 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);
    }
}
        

계약 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":[]}]
              

계약 생성 코드

확인 및 게시
0x608060405234801561001057600080fd5b50604051610ae7380380610ae783398101604081905261002f916100ba565b600080546001600160a01b03199081166001600160a01b0386811691821784556001805484168783169081179091556002805490941691861691821790935560405190937f8a14d1d7200360982eafa429b53edf408f7f589e6da6558f3c116c7f708327b391a45050506100fd565b80516001600160a01b03811681146100b557600080fd5b919050565b6000806000606084860312156100cf57600080fd5b6100d88461009e565b92506100e66020850161009e565b91506100f46040850161009e565b90509250925092565b6109db8061010c6000396000f3fe608060405234801561001057600080fd5b50600436106100935760003560e01c8063ac4a21b411610066578063ac4a21b414610164578063c0c9ce3014610177578063c1292cc31461018a578063c3d1222e146101a2578063fff99778146101b557600080fd5b80634fc749921461009857806364218c64146100c85780636794f004146100dd5780636892da9414610151575b600080fd5b6001546100ab906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b6100db6100d63660046106a6565b6101c8565b005b6101226100eb3660046106c8565b600460205260009081526040902080546001820154600290920154909160ff8116916001600160a01b036101009092048216911684565b6040805194855292151560208501526001600160a01b03918216928401929092521660608201526080016100bf565b6002546100ab906001600160a01b031681565b6100ab610172366004610795565b6102ab565b6000546100ab906001600160a01b031681565b6003546101949081565b6040519081526020016100bf565b6100db6101b03660046106a6565b61032a565b6100ab6101c3366004610822565b61040d565b6000546001600160a01b031663b357010a336040516001600160e01b031960e084901b1681526001600160a01b03909116600482015260240160006040518083038186803b15801561021957600080fd5b505afa15801561022d573d6000803e3d6000fd5b5050506001600160a01b03821690506102595760405163867915ab60e01b815260040160405180910390fd5b600180546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8f2afff1e0d2f2093c828d762c3100b7dc6db4b6a669975f8fb9f186f63677bf90600090a35050565b60006102b860008761048f565b60405163d72bdc5360e01b81529091506001600160a01b0382169063d72bdc53906102ef90899089908990899089906004016108ff565b600060405180830381600087803b15801561030957600080fd5b505af115801561031d573d6000803e3d6000fd5b5050505095945050505050565b6000546001600160a01b031663b357010a336040516001600160e01b031960e084901b1681526001600160a01b03909116600482015260240160006040518083038186803b15801561037b57600080fd5b505afa15801561038f573d6000803e3d6000fd5b5050506001600160a01b03821690506103bb5760405163867915ab60e01b815260040160405180910390fd5b600280546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f9f4aaace1d25addbd72ed2cf23cb5c722d9d92ef412a380c225dff12b71413a490600090a35050565b600061041a60018861048f565b604051630ba5715f60e31b81529091506001600160a01b03821690635d2b8af890610453908a908a908a908a908a908a9060040161094d565b600060405180830381600087803b15801561046d57600080fd5b505af1158015610481573d6000803e3d6000fd5b505050509695505050505050565b600061049f600380546001019055565b60006104aa60035490565b90506000816040516020016104c191815260200190565b6040516020818303038152906040528051906020012090506000856104f1576002546001600160a01b03166104fe565b6001546001600160a01b03165b905061050a81836105e3565b6040805160808101825285815288151560208083018281526001600160a01b038b81168587018181528883166060880181815260008e8152600488528a90209851895594516001890180549351861661010002610100600160a81b0319921515929092166001600160a81b03199094169390931717909155925160029096018054969092166001600160a01b031990961695909517905593519182529397509192909186917f1669c6c56df80dd8ceb465977fbfb157eaef647c232c2f5332a8179701a5b589910160405180910390a450505092915050565b6000763d602d80600a3d3981f3363d3d373d3d3d363d730000008360601b60e81c176000526e5af43d82803e903d91602b57fd5bf38360781b1760205281603760096000f590506001600160a01b0381166106845760405162461bcd60e51b815260206004820152601760248201527f455243313136373a2063726561746532206661696c6564000000000000000000604482015260640160405180910390fd5b92915050565b80356001600160a01b03811681146106a157600080fd5b919050565b6000602082840312156106b857600080fd5b6106c18261068a565b9392505050565b6000602082840312156106da57600080fd5b5035919050565b634e487b7160e01b600052604160045260246000fd5b600082601f83011261070857600080fd5b813567ffffffffffffffff80821115610723576107236106e1565b604051601f8301601f19908116603f0116810190828211818310171561074b5761074b6106e1565b8160405283815286602085880101111561076457600080fd5b836020870160208301376000602085830101528094505050505092915050565b803560ff811681146106a157600080fd5b600080600080600060a086880312156107ad57600080fd5b6107b68661068a565b9450602086013567ffffffffffffffff808211156107d357600080fd5b6107df89838a016106f7565b955060408801359150808211156107f557600080fd5b50610802888289016106f7565b93505061081160608701610784565b949793965091946080013592915050565b60008060008060008060c0878903121561083b57600080fd5b6108448761068a565b9550602087013567ffffffffffffffff8082111561086157600080fd5b61086d8a838b016106f7565b9650604089013591508082111561088357600080fd5b5061089089828a016106f7565b94505061089f60608801610784565b92506080870135915060a087013590509295509295509295565b6000815180845260005b818110156108df576020818501810151868301820152016108c3565b506000602082860101526020601f19601f83011685010191505092915050565b6001600160a01b038616815260a060208201819052600090610923908301876108b9565b828103604084015261093581876108b9565b60ff9590951660608401525050608001529392505050565b6001600160a01b038716815260c060208201819052600090610971908301886108b9565b828103604084015261098381886108b9565b60ff9690961660608401525050608081019290925260a090910152939250505056fea2646970667358221220ba3c4fd69da4dd0e7760f337830077287372226ef2e10893779c746f58bb258964736f6c63430008100033000000000000000000000000f32fb8449ab77bd09c6f6997d28f19df322e34ad0000000000000000000000001e19f4b3b1cedce3eb000293d2b2595b88c8aab5000000000000000000000000232f28f71b63dc2fbb5713a9424852aad73970b9

배포된 바이트코드

0x608060405234801561001057600080fd5b50600436106100935760003560e01c8063ac4a21b411610066578063ac4a21b414610164578063c0c9ce3014610177578063c1292cc31461018a578063c3d1222e146101a2578063fff99778146101b557600080fd5b80634fc749921461009857806364218c64146100c85780636794f004146100dd5780636892da9414610151575b600080fd5b6001546100ab906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b6100db6100d63660046106a6565b6101c8565b005b6101226100eb3660046106c8565b600460205260009081526040902080546001820154600290920154909160ff8116916001600160a01b036101009092048216911684565b6040805194855292151560208501526001600160a01b03918216928401929092521660608201526080016100bf565b6002546100ab906001600160a01b031681565b6100ab610172366004610795565b6102ab565b6000546100ab906001600160a01b031681565b6003546101949081565b6040519081526020016100bf565b6100db6101b03660046106a6565b61032a565b6100ab6101c3366004610822565b61040d565b6000546001600160a01b031663b357010a336040516001600160e01b031960e084901b1681526001600160a01b03909116600482015260240160006040518083038186803b15801561021957600080fd5b505afa15801561022d573d6000803e3d6000fd5b5050506001600160a01b03821690506102595760405163867915ab60e01b815260040160405180910390fd5b600180546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8f2afff1e0d2f2093c828d762c3100b7dc6db4b6a669975f8fb9f186f63677bf90600090a35050565b60006102b860008761048f565b60405163d72bdc5360e01b81529091506001600160a01b0382169063d72bdc53906102ef90899089908990899089906004016108ff565b600060405180830381600087803b15801561030957600080fd5b505af115801561031d573d6000803e3d6000fd5b5050505095945050505050565b6000546001600160a01b031663b357010a336040516001600160e01b031960e084901b1681526001600160a01b03909116600482015260240160006040518083038186803b15801561037b57600080fd5b505afa15801561038f573d6000803e3d6000fd5b5050506001600160a01b03821690506103bb5760405163867915ab60e01b815260040160405180910390fd5b600280546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f9f4aaace1d25addbd72ed2cf23cb5c722d9d92ef412a380c225dff12b71413a490600090a35050565b600061041a60018861048f565b604051630ba5715f60e31b81529091506001600160a01b03821690635d2b8af890610453908a908a908a908a908a908a9060040161094d565b600060405180830381600087803b15801561046d57600080fd5b505af1158015610481573d6000803e3d6000fd5b505050509695505050505050565b600061049f600380546001019055565b60006104aa60035490565b90506000816040516020016104c191815260200190565b6040516020818303038152906040528051906020012090506000856104f1576002546001600160a01b03166104fe565b6001546001600160a01b03165b905061050a81836105e3565b6040805160808101825285815288151560208083018281526001600160a01b038b81168587018181528883166060880181815260008e8152600488528a90209851895594516001890180549351861661010002610100600160a81b0319921515929092166001600160a81b03199094169390931717909155925160029096018054969092166001600160a01b031990961695909517905593519182529397509192909186917f1669c6c56df80dd8ceb465977fbfb157eaef647c232c2f5332a8179701a5b589910160405180910390a450505092915050565b6000763d602d80600a3d3981f3363d3d373d3d3d363d730000008360601b60e81c176000526e5af43d82803e903d91602b57fd5bf38360781b1760205281603760096000f590506001600160a01b0381166106845760405162461bcd60e51b815260206004820152601760248201527f455243313136373a2063726561746532206661696c6564000000000000000000604482015260640160405180910390fd5b92915050565b80356001600160a01b03811681146106a157600080fd5b919050565b6000602082840312156106b857600080fd5b6106c18261068a565b9392505050565b6000602082840312156106da57600080fd5b5035919050565b634e487b7160e01b600052604160045260246000fd5b600082601f83011261070857600080fd5b813567ffffffffffffffff80821115610723576107236106e1565b604051601f8301601f19908116603f0116810190828211818310171561074b5761074b6106e1565b8160405283815286602085880101111561076457600080fd5b836020870160208301376000602085830101528094505050505092915050565b803560ff811681146106a157600080fd5b600080600080600060a086880312156107ad57600080fd5b6107b68661068a565b9450602086013567ffffffffffffffff808211156107d357600080fd5b6107df89838a016106f7565b955060408801359150808211156107f557600080fd5b50610802888289016106f7565b93505061081160608701610784565b949793965091946080013592915050565b60008060008060008060c0878903121561083b57600080fd5b6108448761068a565b9550602087013567ffffffffffffffff8082111561086157600080fd5b61086d8a838b016106f7565b9650604089013591508082111561088357600080fd5b5061089089828a016106f7565b94505061089f60608801610784565b92506080870135915060a087013590509295509295509295565b6000815180845260005b818110156108df576020818501810151868301820152016108c3565b506000602082860101526020601f19601f83011685010191505092915050565b6001600160a01b038616815260a060208201819052600090610923908301876108b9565b828103604084015261093581876108b9565b60ff9590951660608401525050608001529392505050565b6001600160a01b038716815260c060208201819052600090610971908301886108b9565b828103604084015261098381886108b9565b60ff9690961660608401525050608081019290925260a090910152939250505056fea2646970667358221220ba3c4fd69da4dd0e7760f337830077287372226ef2e10893779c746f58bb258964736f6c63430008100033