Kip7 토큰 이름 및 심볼 생성

https://github.com/klaytn/caver-js/tree/dev/packages/caver-kct/src/contract/token/KIP7

위 소스코드를 통해서 KIP7을 발행하려합니다.

contract KIP7Token is KIP7Mintable, KIP7Burnable, KIP7Pausable, KIP7Metadata {
constructor(string memory name, string memory symbol, uint8 decimals, uint256 initialSupply) KIP7Metadata(name, symbol, decimals) public {
_mint(msg.sender, initialSupply);
}
}

상기 코드에서 토큰 이름 및 심볼, 소수점, 초기유통량을 설정해서 발행하려면 어떻게 해야하는지 안내 부탁드릴게요.

안녕하세요 :slight_smile: 질문주셔서 감사합니다.

먼저 caver-js에서는 KIP-7 token contract를 쉽게 배포할 수 있는 기능을 제공합니다.
caver-js v1.5.0 이상의 버전을 사용하는 경우에는 caver.kct.kip7.deploy를 사용할 수 있으며 v1.5.0 이전 버전의 경우 caver.klay.KIP7.deploy을 사용하실 수 있습니다.

deploy 함수를 호출할 때에 오브젝트 내부에 name, symbol, decimals, initialSupply를 정의하실 수 있으며 사용 방법은 아래 예제를 참고해 주세요.

// caver-js v1.5.0 이상 버전
const caver = new Caver('https://api.baobab.klaytn.net:8651/')
const deployer = caver.wallet.add(
    caver.wallet.keyring.createFromPrivateKey('0x0c66be6f6a0c539be9e99d883e897cdc10cb016a958c9a61485ae57cace5d7bf')
)

const kip7 = await caver.kct.kip7.deploy(
    {
        name: 'TokenName',
        symbol: 'TKN',
        decimals: 18,
        initialSupply: '100000000000000000000',
    },
    deployer.address
)
console.log(`Deployed KIP-7 token contract address: ${kip7.options.address}`)

console.log(`Token name: ${await kip7.name()}`)
console.log(`Token symbol: ${await kip7.symbol()}`)
console.log(`Token decimals: ${await kip7.decimals()}`)
console.log(`Token totalSupply: ${await kip7.totalSupply()}`)

위의 예제 코드는 caver-js v1.5.0 이상의 버전에서 동작하는 코드입니다.
v1.5.0 이전 버전의 경우 아래의 예제를 참고해 주세요.

const caver = new Caver('https://api.baobab.klaytn.net:8651/')
const deployer = caver.klay.accounts.wallet.add('0x0c66be6f6a0c539be9e99d883e897cdc10cb016a958c9a61485ae57cace5d7bf')

const kip7 = await caver.klay.KIP7.deploy(
    {
        name: 'TokenName',
        symbol: 'TKN',
        decimals: 18,
        initialSupply: '100000000000000000000',
    },
    deployer.address
)
console.log(`Deployed KIP-7 token contract address: ${kip7.options.address}`)

console.log(`Token name: ${await kip7.name()}`)
console.log(`Token symbol: ${await kip7.symbol()}`)
console.log(`Token decimals: ${await kip7.decimals()}`)
console.log(`Token totalSupply: ${await kip7.totalSupply()}`)

답장 감사합니다.
caver를 통해 컨트렉트를 deploy하면 scope에서 컨트렉트 verification을 위해 요구하는

  • Contract Address
  • Environment of the smart Contract
    • Compiler Type
    • Compiler Version
    • Open Source Licence Type
  • Smart Contract Detail
    • Optimization
    • Source code
      (or upload all files)
  • ABI-encoded value
  • EVM version

위 사항들을 모두 제출할 수 있나요?
클레이튼 ide을 통해 직접 컴파일하는 방식이 아니라서 소스코드나 emv version 등에 있어서 제출이 조금 어려울 수 있을 것 같은데 다른 부분 수정없이 caver.kct.kip7.deploy 를 사용하면 verification을 용이하게 할 수 있는지 답변 부탁드릴게요.

네 안녕하세요. caver-js에서 컴파일해서 사용하고 있는 KIP-7에 대한 정보를 말씀드리겠습니다.

  • Contract Address : Contract Address는 deploy 후 리턴되는 인스턴스에서 값을 구하실 수 있습니다.

  • Environment of the smart Contract

    • Compiler Type : Solidity
    • Compiler Version : 0.5.6+commit.b259423e
    • Open Source Licence Type : MIT
  • Smart Contract Detail

  • ABI-encoded value :
    [
    {
    constant: true,
    inputs: [{ name: ‘interfaceId’, type: ‘bytes4’ }],
    name: ‘supportsInterface’,
    outputs: [{ name: ‘’, type: ‘bool’ }],
    payable: false,
    stateMutability: ‘view’,
    type: ‘function’,
    },
    {
    constant: true,
    inputs: [],
    name: ‘name’,
    outputs: [{ name: ‘’, type: ‘string’ }],
    payable: false,
    stateMutability: ‘view’,
    type: ‘function’,
    },
    {
    constant: false,
    inputs: [{ name: ‘spender’, type: ‘address’ }, { name: ‘value’, type: ‘uint256’ }],
    name: ‘approve’,
    outputs: [{ name: ‘’, type: ‘bool’ }],
    payable: false,
    stateMutability: ‘nonpayable’,
    type: ‘function’,
    },
    {
    constant: true,
    inputs: [],
    name: ‘totalSupply’,
    outputs: [{ name: ‘’, type: ‘uint256’ }],
    payable: false,
    stateMutability: ‘view’,
    type: ‘function’,
    },
    {
    constant: false,
    inputs: [{ name: ‘from’, type: ‘address’ }, { name: ‘to’, type: ‘address’ }, { name: ‘value’, type: ‘uint256’ }],
    name: ‘transferFrom’,
    outputs: [{ name: ‘’, type: ‘bool’ }],
    payable: false,
    stateMutability: ‘nonpayable’,
    type: ‘function’,
    },
    {
    constant: true,
    inputs: [],
    name: ‘decimals’,
    outputs: [{ name: ‘’, type: ‘uint8’ }],
    payable: false,
    stateMutability: ‘view’,
    type: ‘function’,
    },
    { constant: false, inputs: [], name: ‘unpause’, outputs: [], payable: false, stateMutability: ‘nonpayable’, type: ‘function’ },
    {
    constant: false,
    inputs: [{ name: ‘account’, type: ‘address’ }, { name: ‘amount’, type: ‘uint256’ }],
    name: ‘mint’,
    outputs: [{ name: ‘’, type: ‘bool’ }],
    payable: false,
    stateMutability: ‘nonpayable’,
    type: ‘function’,
    },
    {
    constant: false,
    inputs: [{ name: ‘recipient’, type: ‘address’ }, { name: ‘amount’, type: ‘uint256’ }],
    name: ‘safeTransfer’,
    outputs: [],
    payable: false,
    stateMutability: ‘nonpayable’,
    type: ‘function’,
    },
    {
    constant: false,
    inputs: [{ name: ‘sender’, type: ‘address’ }, { name: ‘recipient’, type: ‘address’ }, { name: ‘amount’, type: ‘uint256’ }],
    name: ‘safeTransferFrom’,
    outputs: [],
    payable: false,
    stateMutability: ‘nonpayable’,
    type: ‘function’,
    },
    {
    constant: false,
    inputs: [{ name: ‘amount’, type: ‘uint256’ }],
    name: ‘burn’,
    outputs: [],
    payable: false,
    stateMutability: ‘nonpayable’,
    type: ‘function’,
    },
    {
    constant: true,
    inputs: [{ name: ‘account’, type: ‘address’ }],
    name: ‘isPauser’,
    outputs: [{ name: ‘’, type: ‘bool’ }],
    payable: false,
    stateMutability: ‘view’,
    type: ‘function’,
    },
    {
    constant: true,
    inputs: [],
    name: ‘paused’,
    outputs: [{ name: ‘’, type: ‘bool’ }],
    payable: false,
    stateMutability: ‘view’,
    type: ‘function’,
    },
    { constant: false, inputs: [], name: ‘renouncePauser’, outputs: [], payable: false, stateMutability: ‘nonpayable’, type: ‘function’ },
    {
    constant: true,
    inputs: [{ name: ‘account’, type: ‘address’ }],
    name: ‘balanceOf’,
    outputs: [{ name: ‘’, type: ‘uint256’ }],
    payable: false,
    stateMutability: ‘view’,
    type: ‘function’,
    },
    {
    constant: false,
    inputs: [{ name: ‘account’, type: ‘address’ }, { name: ‘amount’, type: ‘uint256’ }],
    name: ‘burnFrom’,
    outputs: [],
    payable: false,
    stateMutability: ‘nonpayable’,
    type: ‘function’,
    },
    {
    constant: false,
    inputs: [{ name: ‘account’, type: ‘address’ }],
    name: ‘addPauser’,
    outputs: [],
    payable: false,
    stateMutability: ‘nonpayable’,
    type: ‘function’,
    },
    { constant: false, inputs: [], name: ‘pause’, outputs: [], payable: false, stateMutability: ‘nonpayable’, type: ‘function’ },
    {
    constant: true,
    inputs: [],
    name: ‘symbol’,
    outputs: [{ name: ‘’, type: ‘string’ }],
    payable: false,
    stateMutability: ‘view’,
    type: ‘function’,
    },
    {
    constant: false,
    inputs: [{ name: ‘account’, type: ‘address’ }],
    name: ‘addMinter’,
    outputs: [],
    payable: false,
    stateMutability: ‘nonpayable’,
    type: ‘function’,
    },
    { constant: false, inputs: [], name: ‘renounceMinter’, outputs: [], payable: false, stateMutability: ‘nonpayable’, type: ‘function’ },
    {
    constant: false,
    inputs: [{ name: ‘to’, type: ‘address’ }, { name: ‘value’, type: ‘uint256’ }],
    name: ‘transfer’,
    outputs: [{ name: ‘’, type: ‘bool’ }],
    payable: false,
    stateMutability: ‘nonpayable’,
    type: ‘function’,
    },
    {
    constant: true,
    inputs: [{ name: ‘account’, type: ‘address’ }],
    name: ‘isMinter’,
    outputs: [{ name: ‘’, type: ‘bool’ }],
    payable: false,
    stateMutability: ‘view’,
    type: ‘function’,
    },
    {
    constant: false,
    inputs: [
    { name: ‘sender’, type: ‘address’ },
    { name: ‘recipient’, type: ‘address’ },
    { name: ‘amount’, type: ‘uint256’ },
    { name: ‘data’, type: ‘bytes’ },
    ],
    name: ‘safeTransferFrom’,
    outputs: [],
    payable: false,
    stateMutability: ‘nonpayable’,
    type: ‘function’,
    },
    {
    constant: true,
    inputs: [{ name: ‘owner’, type: ‘address’ }, { name: ‘spender’, type: ‘address’ }],
    name: ‘allowance’,
    outputs: [{ name: ‘’, type: ‘uint256’ }],
    payable: false,
    stateMutability: ‘view’,
    type: ‘function’,
    },
    {
    constant: false,
    inputs: [{ name: ‘recipient’, type: ‘address’ }, { name: ‘amount’, type: ‘uint256’ }, { name: ‘data’, type: ‘bytes’ }],
    name: ‘safeTransfer’,
    outputs: [],
    payable: false,
    stateMutability: ‘nonpayable’,
    type: ‘function’,
    },
    {
    inputs: [
    { name: ‘name’, type: ‘string’ },
    { name: ‘symbol’, type: ‘string’ },
    { name: ‘decimals’, type: ‘uint8’ },
    { name: ‘initialSupply’, type: ‘uint256’ },
    ],
    payable: false,
    stateMutability: ‘nonpayable’,
    type: ‘constructor’,
    },
    { anonymous: false, inputs: [{ indexed: false, name: ‘account’, type: ‘address’ }], name: ‘Paused’, type: ‘event’ },
    { anonymous: false, inputs: [{ indexed: false, name: ‘account’, type: ‘address’ }], name: ‘Unpaused’, type: ‘event’ },
    { anonymous: false, inputs: [{ indexed: true, name: ‘account’, type: ‘address’ }], name: ‘PauserAdded’, type: ‘event’ },
    { anonymous: false, inputs: [{ indexed: true, name: ‘account’, type: ‘address’ }], name: ‘PauserRemoved’, type: ‘event’ },
    { anonymous: false, inputs: [{ indexed: true, name: ‘account’, type: ‘address’ }], name: ‘MinterAdded’, type: ‘event’ },
    { anonymous: false, inputs: [{ indexed: true, name: ‘account’, type: ‘address’ }], name: ‘MinterRemoved’, type: ‘event’ },
    {
    anonymous: false,
    inputs: [
    { indexed: true, name: ‘from’, type: ‘address’ },
    { indexed: true, name: ‘to’, type: ‘address’ },
    { indexed: false, name: ‘value’, type: ‘uint256’ },
    ],
    name: ‘Transfer’,
    type: ‘event’,
    },
    {
    anonymous: false,
    inputs: [
    { indexed: true, name: ‘owner’, type: ‘address’ },
    { indexed: true, name: ‘spender’, type: ‘address’ },
    { indexed: false, name: ‘value’, type: ‘uint256’ },
    ],
    name: ‘Approval’,
    type: ‘event’,
    },
    ]

  • EVM version : 따로 EVM target version은 설정되지 않았습니다.

2 Likes

await is only valid in async function 코드실행시 에러가 나는데 혹시 문의드려도 될까요?

await 키워드는 async 함수에서만 사용 가능합니다.
async함수가 아닌 경우 then을 사용해 주시거나 event emitter를 사용하여 구현하시면 됩니다.

해당 코드를 실행하면 어떤 에러가 발생하나요?

생성되었습니다. 답변 너무 감사드립니다. ㅠ.ㅠ :joy:

안녕하세요, 시간이 지나 다시 한번 해당 정보 안내 부탁드리겠습니다.
소스코드의 경우 url이 변경된 것 같습니다.
컨트렉은 당시 caver.kct.kip7.deploy 로 배포했었습니다.

  • Compiler version
  • Open Source License Type
  • Optimization 여부
  • Optimization Runs: Solidity에서 200이 default 값입니다. 컴파일 과정에서 변경을 한 경우 알려주셔야 합니다.
  • Source code: 파일이 여러개인 경우 flatten해서 싱글 파일 하나로 만들어주셔야 합니다. 실제 체인상에 디플로이된 코드를 flatten해서 주셔야 합니다. (반드시 컴파일된 형태로 전달 부탁드립니다.)
  • ABI-encoded constructor arguments or Raw ABI Code(truncated)
  • EVM version
1 Like

소스코드를 안내해주신 깃헙에서 받아 하나의 파일로 만들었습니다.
해당 파일로 Klaytn IDE 에서 정상적으로 컴파일되고 기 배포된 스마트컨트렉트 주소에 연결해 함수들 작동하는 것까지 확인했습니다.
해당 소스코드를 오지스 측에 전달했는데 verification 진행 시 Byte code and transaction input data do not match. 오류 발생한다고 하네요. 어떤 부분이 잘못되었는지 안내 가능할까요?
소스코드는 주석 제거하고 아래 붙여드립니다.

pragma solidity ^0.5.0;

library SafeMath {

    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        uint256 c = a + b;
        require(c >= a, "SafeMath: addition overflow");

        return c;
    }


    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        return sub(a, b, "SafeMath: subtraction overflow");
    }


    function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b <= a, errorMessage);
        uint256 c = a - b;

        return c;
    }


    function mul(uint256 a, uint256 b) internal pure returns (uint256) {

        if (a == 0) {
            return 0;
        }

        uint256 c = a * b;
        require(c / a == b, "SafeMath: multiplication overflow");

        return c;
    }


    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        return div(a, b, "SafeMath: division by zero");
    }


    function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        
        require(b > 0, errorMessage);
        uint256 c = a / b;
        
        return c;
    }


    function mod(uint256 a, uint256 b) internal pure returns (uint256) {
        return mod(a, b, "SafeMath: modulo by zero");
    }


    function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b != 0, errorMessage);
        return a % b;
    }
}

library Address {

    function isContract(address account) internal view returns (bool) {

        uint256 size;

        assembly { size := extcodesize(account) }
        return size > 0;
    }
}

library Roles {
    struct Role {
        mapping (address => bool) bearer;
    }

    function add(Role storage role, address account) internal {
        require(!has(role, account), "Roles: account already has role");
        role.bearer[account] = true;
    }

    function remove(Role storage role, address account) internal {
        require(has(role, account), "Roles: account does not have role");
        role.bearer[account] = false;
    }


    function has(Role storage role, address account) internal view returns (bool) {
        require(account != address(0), "Roles: account is the zero address");
        return role.bearer[account];
    }
}

interface IKIP13 {

    function supportsInterface(bytes4 interfaceId) external view returns (bool);
}

contract KIP13 is IKIP13 {

    bytes4 private constant _INTERFACE_ID_KIP13 = 0x01ffc9a7;

    mapping(bytes4 => bool) private _supportedInterfaces;

    constructor () internal {
        _registerInterface(_INTERFACE_ID_KIP13);
    }

    function supportsInterface(bytes4 interfaceId) external view returns (bool) {
        return _supportedInterfaces[interfaceId];
    }

    function _registerInterface(bytes4 interfaceId) internal {
        require(interfaceId != 0xffffffff, "KIP13: invalid interface id");
        _supportedInterfaces[interfaceId] = true;
    }
}

contract IKIP7 is IKIP13 {

    function totalSupply() external view returns (uint256);

    function balanceOf(address account) external view returns (uint256);

    function transfer(address recipient, uint256 amount) external returns (bool);

    function allowance(address owner, address spender) external view returns (uint256);

    function approve(address spender, uint256 amount) external returns (bool);

    function transferFrom(address sender, address recipient, uint256 amount) external returns (bool);

    function safeTransfer(address recipient, uint256 amount, bytes memory data) public;

    function safeTransfer(address recipient, uint256 amount) public;

    function safeTransferFrom(address sender, address recipient, uint256 amount, bytes memory data) public;

    function safeTransferFrom(address sender, address recipient, uint256 amount) public;

    event Transfer(address indexed from, address indexed to, uint256 value);

    event Approval(address indexed owner, address indexed spender, uint256 value);
}

contract KIP7 is KIP13, IKIP7 {
    using SafeMath for uint256;
    using Address for address;


    bytes4 private constant _KIP7_RECEIVED = 0x9d188c22;

    mapping (address => uint256) private _balances;

    mapping (address => mapping (address => uint256)) private _allowances;

    uint256 private _totalSupply;


    bytes4 private constant _INTERFACE_ID_KIP7 = 0x65787371;

    constructor () public {

        _registerInterface(_INTERFACE_ID_KIP7);
    }


    function totalSupply() public view returns (uint256) {
        return _totalSupply;
    }

    function balanceOf(address account) public view returns (uint256) {
        return _balances[account];
    }

    function transfer(address recipient, uint256 amount) public returns (bool) {
        _transfer(msg.sender, recipient, amount);
        return true;
    }

    function allowance(address owner, address spender) public view returns (uint256) {
        return _allowances[owner][spender];
    }

    function approve(address spender, uint256 value) public returns (bool) {
        _approve(msg.sender, spender, value);
        return true;
    }

    function transferFrom(address sender, address recipient, uint256 amount) public returns (bool) {
        _transfer(sender, recipient, amount);
        _approve(sender, msg.sender, _allowances[sender][msg.sender].sub(amount));
        return true;
    }

    function safeTransfer(address recipient, uint256 amount) public {
        safeTransfer(recipient, amount, "");
    }

    function safeTransfer(address recipient, uint256 amount, bytes memory data) public {
        transfer(recipient, amount);
        require(_checkOnKIP7Received(msg.sender, recipient, amount, data), "KIP7: transfer to non KIP7Receiver implementer");
    }

    function safeTransferFrom(address sender, address recipient, uint256 amount) public {
        safeTransferFrom(sender, recipient, amount, "");
    }

    function safeTransferFrom(address sender, address recipient, uint256 amount, bytes memory data) public {
        transferFrom(sender, recipient, amount);
        require(_checkOnKIP7Received(sender, recipient, amount, data), "KIP7: transfer to non KIP7Receiver implementer");
    }

    function _transfer(address sender, address recipient, uint256 amount) internal {
        require(sender != address(0), "KIP7: transfer from the zero address");
        require(recipient != address(0), "KIP7: transfer to the zero address");

        _balances[sender] = _balances[sender].sub(amount);
        _balances[recipient] = _balances[recipient].add(amount);
        emit Transfer(sender, recipient, amount);
    }

    function _mint(address account, uint256 amount) internal {
        require(account != address(0), "KIP7: mint to the zero address");

        _totalSupply = _totalSupply.add(amount);
        _balances[account] = _balances[account].add(amount);
        emit Transfer(address(0), account, amount);
    }

    function _burn(address account, uint256 value) internal {
        require(account != address(0), "KIP7: burn from the zero address");

        _totalSupply = _totalSupply.sub(value);
        _balances[account] = _balances[account].sub(value);
        emit Transfer(account, address(0), value);
    }

    function _approve(address owner, address spender, uint256 value) internal {
        require(owner != address(0), "KIP7: approve from the zero address");
        require(spender != address(0), "KIP7: approve to the zero address");

        _allowances[owner][spender] = value;
        emit Approval(owner, spender, value);
    }

    function _burnFrom(address account, uint256 amount) internal {
        _burn(account, amount);
        _approve(account, msg.sender, _allowances[account][msg.sender].sub(amount));
    }

    function _checkOnKIP7Received(address sender, address recipient, uint256 amount, bytes memory _data)
        internal returns (bool)
    {
        if (!recipient.isContract()) {
            return true;
        }

        bytes4 retval = IKIP7Receiver(recipient).onKIP7Received(msg.sender, sender, amount, _data);
        return (retval == _KIP7_RECEIVED);
    }
}

contract MinterRole {
    using Roles for Roles.Role;

    event MinterAdded(address indexed account);
    event MinterRemoved(address indexed account);

    Roles.Role private _minters;

    constructor () internal {
        _addMinter(msg.sender);
    }

    modifier onlyMinter() {
        require(isMinter(msg.sender), "MinterRole: caller does not have the Minter role");
        _;
    }

    function isMinter(address account) public view returns (bool) {
        return _minters.has(account);
    }

    function addMinter(address account) public onlyMinter {
        _addMinter(account);
    }

    function renounceMinter() public {
        _removeMinter(msg.sender);
    }

    function _addMinter(address account) internal {
        _minters.add(account);
        emit MinterAdded(account);
    }

    function _removeMinter(address account) internal {
        _minters.remove(account);
        emit MinterRemoved(account);
    }
}

contract KIP7Mintable is KIP13, KIP7, MinterRole {

    bytes4 private constant _INTERFACE_ID_KIP7MINTABLE = 0xeab83e20;

    constructor () public {

        _registerInterface(_INTERFACE_ID_KIP7MINTABLE);
    }


    function mint(address account, uint256 amount) public onlyMinter returns (bool) {
        _mint(account, amount);
        return true;
    }
}

contract IKIP7Receiver {

    function onKIP7Received(address _operator, address _from, uint256 _amount, bytes memory _data) public returns (bytes4);
}

contract KIP7Burnable is KIP13, KIP7 {

    bytes4 private constant _INTERFACE_ID_KIP7BURNABLE = 0x3b5a0bf8;

    constructor () public {

        _registerInterface(_INTERFACE_ID_KIP7BURNABLE);
    }
    
    function burn(uint256 amount) public {
        _burn(msg.sender, amount);
    }

    function burnFrom(address account, uint256 amount) public {
        _burnFrom(account, amount);
    }
}

contract PauserRole {
    using Roles for Roles.Role;

    event PauserAdded(address indexed account);
    event PauserRemoved(address indexed account);

    Roles.Role private _pausers;

    constructor () internal {
        _addPauser(msg.sender);
    }

    modifier onlyPauser() {
        require(isPauser(msg.sender), "PauserRole: caller does not have the Pauser role");
        _;
    }

    function isPauser(address account) public view returns (bool) {
        return _pausers.has(account);
    }

    function addPauser(address account) public onlyPauser {
        _addPauser(account);
    }

    function renouncePauser() public {
        _removePauser(msg.sender);
    }

    function _addPauser(address account) internal {
        _pausers.add(account);
        emit PauserAdded(account);
    }

    function _removePauser(address account) internal {
        _pausers.remove(account);
        emit PauserRemoved(account);
    }
}

contract Pausable is PauserRole {

    event Paused(address account);

    event Unpaused(address account);

    bool private _paused;

    constructor () internal {
        _paused = false;
    }

    function paused() public view returns (bool) {
        return _paused;
    }

    modifier whenNotPaused() {
        require(!_paused, "Pausable: paused");
        _;
    }

    modifier whenPaused() {
        require(_paused, "Pausable: not paused");
        _;
    }

    function pause() public onlyPauser whenNotPaused {
        _paused = true;
        emit Paused(msg.sender);
    }

    function unpause() public onlyPauser whenPaused {
        _paused = false;
        emit Unpaused(msg.sender);
    }
}

contract KIP7Pausable is KIP13, KIP7, Pausable {

    bytes4 private constant _INTERFACE_ID_KIP7PAUSABLE = 0x4d5507ff;

    constructor () public {
        // register the supported interfaces to conform to KIP17 via KIP13
        _registerInterface(_INTERFACE_ID_KIP7PAUSABLE);
    }

    function transfer(address to, uint256 value) public whenNotPaused returns (bool) {
        return super.transfer(to, value);
    }

    function transferFrom(address from, address to, uint256 value) public whenNotPaused returns (bool) {
        return super.transferFrom(from, to, value);
    }

    function approve(address spender, uint256 value) public whenNotPaused returns (bool) {
        return super.approve(spender, value);
    }
}

contract KIP7Metadata is KIP13, IKIP7 {
    string private _name;
    string private _symbol;
    uint8 private _decimals;

    bytes4 private constant _INTERFACE_ID_KIP7_METADATA = 0xa219a025;

    constructor (string memory name, string memory symbol, uint8 decimals) public {
        _name = name;
        _symbol = symbol;
        _decimals = decimals;


        _registerInterface(_INTERFACE_ID_KIP7_METADATA);
    }

    function name() public view returns (string memory) {
        return _name;
    }

    function symbol() public view returns (string memory) {
        return _symbol;
    }

    function decimals() public view returns (uint8) {
        return _decimals;
    }
}

contract KIP7Token is KIP7Mintable, KIP7Burnable, KIP7Pausable, KIP7Metadata {
    constructor(string memory name, string memory symbol, uint8 decimals, uint256 initialSupply) KIP7Metadata(name, symbol, decimals) public {
        _mint(msg.sender, initialSupply);
    }
}

저렇게만 봐서는 어떤 부분이 잘못되었는지 안내드리기 어렵습니다.
오지스측에 문의해서 어떤 데이터가 다른건지 문의하시기 바랍니다.

그리고 혹시 스마트 컨트랙트를 언제 배포하셨을까요?
컨트랙트를 꽤 이전에 배포한 경우 현재 제공되는 소스코드가 아닐 수도 있습니다.

1 Like

2020년 8월 4일 배포한 것으로 아래 컨트렉트입니다.

ABI는 안내해주신 깃헙에서 KIP7 부분만 아래처럼 제출했습니다.

const kip7JsonInterface = [
	    {
	        constant: true,
	        inputs: [{ name: 'interfaceId', type: 'bytes4' }],
	        name: 'supportsInterface',
	        outputs: [{ name: '', type: 'bool' }],
	        payable: false,
	        stateMutability: 'view',
	        type: 'function',
	    },
	    {
	        constant: true,
	        inputs: [],
	        name: 'name',
	        outputs: [{ name: '', type: 'string' }],
	        payable: false,
	        stateMutability: 'view',
	        type: 'function',
	    },
	    {
	        constant: false,
	        inputs: [{ name: 'spender', type: 'address' }, { name: 'value', type: 'uint256' }],
	        name: 'approve',
	        outputs: [{ name: '', type: 'bool' }],
	        payable: false,
	        stateMutability: 'nonpayable',
	        type: 'function',
	    },
	    {
	        constant: true,
	        inputs: [],
	        name: 'totalSupply',
	        outputs: [{ name: '', type: 'uint256' }],
	        payable: false,
	        stateMutability: 'view',
	        type: 'function',
	    },
	    {
	        constant: false,
	        inputs: [{ name: 'from', type: 'address' }, { name: 'to', type: 'address' }, { name: 'value', type: 'uint256' }],
	        name: 'transferFrom',
	        outputs: [{ name: '', type: 'bool' }],
	        payable: false,
	        stateMutability: 'nonpayable',
	        type: 'function',
	    },
	    {
	        constant: true,
	        inputs: [],
	        name: 'decimals',
	        outputs: [{ name: '', type: 'uint8' }],
	        payable: false,
	        stateMutability: 'view',
	        type: 'function',
	    },
	    { constant: false, inputs: [], name: 'unpause', outputs: [], payable: false, stateMutability: 'nonpayable', type: 'function' },
	    {
	        constant: false,
	        inputs: [{ name: 'account', type: 'address' }, { name: 'amount', type: 'uint256' }],
	        name: 'mint',
	        outputs: [{ name: '', type: 'bool' }],
	        payable: false,
	        stateMutability: 'nonpayable',
	        type: 'function',
	    },
	    {
	        constant: false,
	        inputs: [{ name: 'recipient', type: 'address' }, { name: 'amount', type: 'uint256' }],
	        name: 'safeTransfer',
	        outputs: [],
	        payable: false,
	        stateMutability: 'nonpayable',
	        type: 'function',
	    },
	    {
	        constant: false,
	        inputs: [{ name: 'sender', type: 'address' }, { name: 'recipient', type: 'address' }, { name: 'amount', type: 'uint256' }],
	        name: 'safeTransferFrom',
	        outputs: [],
	        payable: false,
	        stateMutability: 'nonpayable',
	        type: 'function',
	    },
	    {
	        constant: false,
	        inputs: [{ name: 'amount', type: 'uint256' }],
	        name: 'burn',
	        outputs: [],
	        payable: false,
	        stateMutability: 'nonpayable',
	        type: 'function',
	    },
	    {
	        constant: true,
	        inputs: [{ name: 'account', type: 'address' }],
	        name: 'isPauser',
	        outputs: [{ name: '', type: 'bool' }],
	        payable: false,
	        stateMutability: 'view',
	        type: 'function',
	    },
	    {
	        constant: true,
	        inputs: [],
	        name: 'paused',
	        outputs: [{ name: '', type: 'bool' }],
	        payable: false,
	        stateMutability: 'view',
	        type: 'function',
	    },
	    { constant: false, inputs: [], name: 'renouncePauser', outputs: [], payable: false, stateMutability: 'nonpayable', type: 'function' },
	    {
	        constant: true,
	        inputs: [{ name: 'account', type: 'address' }],
	        name: 'balanceOf',
	        outputs: [{ name: '', type: 'uint256' }],
	        payable: false,
	        stateMutability: 'view',
	        type: 'function',
	    },
	    {
	        constant: false,
	        inputs: [{ name: 'account', type: 'address' }, { name: 'amount', type: 'uint256' }],
	        name: 'burnFrom',
	        outputs: [],
	        payable: false,
	        stateMutability: 'nonpayable',
	        type: 'function',
	    },
	    {
	        constant: false,
	        inputs: [{ name: 'account', type: 'address' }],
	        name: 'addPauser',
	        outputs: [],
	        payable: false,
	        stateMutability: 'nonpayable',
	        type: 'function',
	    },
	    { constant: false, inputs: [], name: 'pause', outputs: [], payable: false, stateMutability: 'nonpayable', type: 'function' },
	    {
	        constant: true,
	        inputs: [],
	        name: 'symbol',
	        outputs: [{ name: '', type: 'string' }],
	        payable: false,
	        stateMutability: 'view',
	        type: 'function',
	    },
	    {
	        constant: false,
	        inputs: [{ name: 'account', type: 'address' }],
	        name: 'addMinter',
	        outputs: [],
	        payable: false,
	        stateMutability: 'nonpayable',
	        type: 'function',
	    },
	    { constant: false, inputs: [], name: 'renounceMinter', outputs: [], payable: false, stateMutability: 'nonpayable', type: 'function' },
	    {
	        constant: false,
	        inputs: [{ name: 'to', type: 'address' }, { name: 'value', type: 'uint256' }],
	        name: 'transfer',
	        outputs: [{ name: '', type: 'bool' }],
	        payable: false,
	        stateMutability: 'nonpayable',
	        type: 'function',
	    },
	    {
	        constant: true,
	        inputs: [{ name: 'account', type: 'address' }],
	        name: 'isMinter',
	        outputs: [{ name: '', type: 'bool' }],
	        payable: false,
	        stateMutability: 'view',
	        type: 'function',
	    },
	    {
	        constant: false,
	        inputs: [
	            { name: 'sender', type: 'address' },
	            { name: 'recipient', type: 'address' },
	            { name: 'amount', type: 'uint256' },
	            { name: 'data', type: 'bytes' },
	       ],
	        name: 'safeTransferFrom',
	        outputs: [],
	        payable: false,
	        stateMutability: 'nonpayable',
	        type: 'function',
	    },
	    {
	        constant: true,
	        inputs: [{ name: 'owner', type: 'address' }, { name: 'spender', type: 'address' }],
	        name: 'allowance',
	        outputs: [{ name: '', type: 'uint256' }],
	        payable: false,
	        stateMutability: 'view',
	        type: 'function',
	    },
	    {
	        constant: false,
	        inputs: [{ name: 'recipient', type: 'address' }, { name: 'amount', type: 'uint256' }, { name: 'data', type: 'bytes' }],
	        name: 'safeTransfer',
	        outputs: [],
	        payable: false,
	        stateMutability: 'nonpayable',
	        type: 'function',
	    },
	    {
	        inputs: [
	            { name: 'name', type: 'string' },
	            { name: 'symbol', type: 'string' },
	            { name: 'decimals', type: 'uint8' },
	            { name: 'initialSupply', type: 'uint256' },
	        ],
	        payable: false,
	        stateMutability: 'nonpayable',
	        type: 'constructor',
	    },
	    { anonymous: false, inputs: [{ indexed: false, name: 'account', type: 'address' }], name: 'Paused', type: 'event' },
	    { anonymous: false, inputs: [{ indexed: false, name: 'account', type: 'address' }], name: 'Unpaused', type: 'event' },
	    { anonymous: false, inputs: [{ indexed: true, name: 'account', type: 'address' }], name: 'PauserAdded', type: 'event' },
	    { anonymous: false, inputs: [{ indexed: true, name: 'account', type: 'address' }], name: 'PauserRemoved', type: 'event' },
	    { anonymous: false, inputs: [{ indexed: true, name: 'account', type: 'address' }], name: 'MinterAdded', type: 'event' },
	    { anonymous: false, inputs: [{ indexed: true, name: 'account', type: 'address' }], name: 'MinterRemoved', type: 'event' },
	    {
	        anonymous: false,
	        inputs: [
	            { indexed: true, name: 'from', type: 'address' },
	            { indexed: true, name: 'to', type: 'address' },
	            { indexed: false, name: 'value', type: 'uint256' },
	        ],
	        name: 'Transfer',
	        type: 'event',
	    },
	    {
	        anonymous: false,
	        inputs: [
	            { indexed: true, name: 'owner', type: 'address' },
	            { indexed: true, name: 'spender', type: 'address' },
	            { indexed: false, name: 'value', type: 'uint256' },
	        ],
	        name: 'Approval',
	        type: 'event',
	    },
	]

bytecode는

60806040523480156200001157600080fd5b5060405162002f8438038062002f84833981018060405260808110156200003757600080fd5b8101908080516401000000008111156200005057600080fd5b828101905060208101848111156200006757600080fd5b81518560018202830111640100000000821117156200008557600080fd5b50509291906020018051640100000000811115620000a257600080fd5b82810190506020810184811115620000b957600080fd5b8151856001820283011164010000000082111715620000d757600080fd5b50509291906020018051906020019092919080519060200190929190505050838383620001116301ffc9a760e01b6200023260201b60201c565b62000129636578737160e01b6200023260201b60201c565b6200013a336200033b60201b60201c565b6200015263eab83e2060e01b6200023260201b60201c565b6200016a633b5a0bf860e01b6200023260201b60201c565b6200017b336200039c60201b60201c565b6000600660006101000a81548160ff021916908315150217905550620001ae634d5507ff60e01b6200023260201b60201c565b8260079080519060200190620001c692919062000816565b508160089080519060200190620001df92919062000816565b5080600960006101000a81548160ff021916908360ff1602179055506200021363a219a02560e01b6200023260201b60201c565b505050620002283382620003fd60201b60201c565b50505050620008c5565b63ffffffff60e01b817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161415620002cf576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f4b495031333a20696e76616c696420696e74657266616365206964000000000081525060200191505060405180910390fd5b6001600080837bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b62000356816004620005c960201b620024181790919060201c565b8073ffffffffffffffffffffffffffffffffffffffff167f6ae172837ea30b801fbfcdd4108aa1d5bf8ff775444fd70256b44e6bf3dfc3f660405160405180910390a250565b620003b7816005620005c960201b620024181790919060201c565b8073ffffffffffffffffffffffffffffffffffffffff167f6719d08c1888103bea251a4ed56406bd0c3e69723c8a1686e017e7bbe159b6f860405160405180910390a250565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415620004a1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601e8152602001807f4b4950373a206d696e7420746f20746865207a65726f2061646472657373000081525060200191505060405180910390fd5b620004bd81600354620006ad60201b620022d31790919060201c565b6003819055506200051c81600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054620006ad60201b620022d31790919060201c565b600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a35050565b620005db82826200073660201b60201c565b156200064f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f526f6c65733a206163636f756e7420616c72656164792068617320726f6c650081525060200191505060405180910390fd5b60018260000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6000808284019050838110156200072c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415620007bf576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602281526020018062002f626022913960400191505060405180910390fd5b8260000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106200085957805160ff19168380011785556200088a565b828001600101855582156200088a579182015b82811115620008895782518255916020019190600101906200086c565b5b5090506200089991906200089d565b5090565b620008c291905b80821115620008be576000816000905550600101620008a4565b5090565b90565b61268d80620008d56000396000f3fe608060405234801561001057600080fd5b506004361061018e5760003560e01c80636ef8d66d116100de578063983b2d5611610097578063aa271e1a11610071578063aa271e1a146107b6578063b88d4fde14610812578063dd62ed3e14610917578063eb7955491461098f5761018e565b8063983b2d56146107025780639865027514610746578063a9059cbb146107505761018e565b80636ef8d66d1461058157806370a082311461058b57806379cc6790146105e357806382dc1ec4146106315780638456cb591461067557806395d89b411461067f5761018e565b80633f4ba83a1161014b57806342842e0e1161012557806342842e0e1461046757806342966c68146104d557806346fbf68e146105035780635c975abb1461055f5761018e565b80633f4ba83a146103a957806340c10f19146103b3578063423f6cef146104195761018e565b806301ffc9a71461019357806306fdde03146101f8578063095ea7b31461027b57806318160ddd146102e157806323b872dd146102ff578063313ce56714610385575b600080fd5b6101de600480360360208110156101a957600080fd5b8101908080357bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19169060200190929190505050610a74565b604051808215151515815260200191505060405180910390f35b610200610adb565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610240578082015181840152602081019050610225565b50505050905090810190601f16801561026d5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6102c76004803603604081101561029157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610b7d565b604051808215151515815260200191505060405180910390f35b6102e9610c14565b6040518082815260200191505060405180910390f35b61036b6004803603606081101561031557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610c1e565b604051808215151515815260200191505060405180910390f35b61038d610cb7565b604051808260ff1660ff16815260200191505060405180910390f35b6103b1610cce565b005b6103ff600480360360408110156103c957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610e2e565b604051808215151515815260200191505060405180910390f35b6104656004803603604081101561042f57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610ea2565b005b6104d36004803603606081101561047d57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610ec0565b005b610501600480360360208110156104eb57600080fd5b8101908080359060200190929190505050610ee0565b005b6105456004803603602081101561051957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610eed565b604051808215151515815260200191505060405180910390f35b610567610f0a565b604051808215151515815260200191505060405180910390f35b610589610f21565b005b6105cd600480360360208110156105a157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610f2c565b6040518082815260200191505060405180910390f35b61062f600480360360408110156105f957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610f75565b005b6106736004803603602081101561064757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610f83565b005b61067d610fed565b005b61068761114e565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156106c75780820151818401526020810190506106ac565b50505050905090810190601f1680156106f45780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6107446004803603602081101561071857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506111f0565b005b61074e61125a565b005b61079c6004803603604081101561076657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611265565b604051808215151515815260200191505060405180910390f35b6107f8600480360360208110156107cc57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506112fc565b604051808215151515815260200191505060405180910390f35b6109156004803603608081101561082857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291908035906020019064010000000081111561088f57600080fd5b8201836020820111156108a157600080fd5b803590602001918460018302840111640100000000831117156108c357600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050509192919290505050611319565b005b6109796004803603604081101561092d57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061138c565b6040518082815260200191505060405180910390f35b610a72600480360360608110156109a557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001906401000000008111156109ec57600080fd5b8201836020820111156109fe57600080fd5b80359060200191846001830284011164010000000083111715610a2057600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050509192919290505050611413565b005b6000806000837bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060009054906101000a900460ff169050919050565b606060078054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610b735780601f10610b4857610100808354040283529160200191610b73565b820191906000526020600020905b815481529060010190602001808311610b5657829003601f168201915b5050505050905090565b6000600660009054906101000a900460ff1615610c02576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260108152602001807f5061757361626c653a207061757365640000000000000000000000000000000081525060200191505060405180910390fd5b610c0c8383611484565b905092915050565b6000600354905090565b6000600660009054906101000a900460ff1615610ca3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260108152602001807f5061757361626c653a207061757365640000000000000000000000000000000081525060200191505060405180910390fd5b610cae84848461149b565b90509392505050565b6000600960009054906101000a900460ff16905090565b610cd733610eed565b610d2c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260308152602001806125566030913960400191505060405180910390fd5b600660009054906101000a900460ff16610dae576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f5061757361626c653a206e6f742070617573656400000000000000000000000081525060200191505060405180910390fd5b6000600660006101000a81548160ff0219169083151502179055507f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa33604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a1565b6000610e39336112fc565b610e8e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260308152602001806125a86030913960400191505060405180910390fd5b610e98838361154c565b6001905092915050565b610ebc828260405180602001604052806000815250611413565b5050565b610edb83838360405180602001604052806000815250611319565b505050565b610eea3382611709565b50565b6000610f038260056118c690919063ffffffff16565b9050919050565b6000600660009054906101000a900460ff16905090565b610f2a336119a4565b565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610f7f82826119fe565b5050565b610f8c33610eed565b610fe1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260308152602001806125566030913960400191505060405180910390fd5b610fea81611aa5565b50565b610ff633610eed565b61104b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260308152602001806125566030913960400191505060405180910390fd5b600660009054906101000a900460ff16156110ce576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260108152602001807f5061757361626c653a207061757365640000000000000000000000000000000081525060200191505060405180910390fd5b6001600660006101000a81548160ff0219169083151502179055507f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a25833604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a1565b606060088054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156111e65780601f106111bb576101008083540402835291602001916111e6565b820191906000526020600020905b8154815290600101906020018083116111c957829003601f168201915b5050505050905090565b6111f9336112fc565b61124e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260308152602001806125a86030913960400191505060405180910390fd5b61125781611aff565b50565b61126333611b59565b565b6000600660009054906101000a900460ff16156112ea576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260108152602001807f5061757361626c653a207061757365640000000000000000000000000000000081525060200191505060405180910390fd5b6112f48383611bb3565b905092915050565b60006113128260046118c690919063ffffffff16565b9050919050565b611324848484610c1e565b5061133184848484611bca565b611386576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602e815260200180612528602e913960400191505060405180910390fd5b50505050565b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b61141d8383611265565b5061142a33848484611bca565b61147f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602e815260200180612528602e913960400191505060405180910390fd5b505050565b6000611491338484611db3565b6001905092915050565b60006114a8848484611faa565b611541843361153c85600260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461224a90919063ffffffff16565b611db3565b600190509392505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156115ef576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601e8152602001807f4b4950373a206d696e7420746f20746865207a65726f2061646472657373000081525060200191505060405180910390fd5b611604816003546122d390919063ffffffff16565b60038190555061165c81600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546122d390919063ffffffff16565b600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156117ac576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4b4950373a206275726e2066726f6d20746865207a65726f206164647265737381525060200191505060405180910390fd5b6117c18160035461224a90919063ffffffff16565b60038190555061181981600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461224a90919063ffffffff16565b600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a35050565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561194d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602281526020018061261d6022913960400191505060405180910390fd5b8260000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b6119b881600561235b90919063ffffffff16565b8073ffffffffffffffffffffffffffffffffffffffff167fcd265ebaf09df2871cc7bd4133404a235ba12eff2041bb89d9c714a2621c7c7e60405160405180910390a250565b611a088282611709565b611aa18233611a9c84600260008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461224a90919063ffffffff16565b611db3565b5050565b611ab981600561241890919063ffffffff16565b8073ffffffffffffffffffffffffffffffffffffffff167f6719d08c1888103bea251a4ed56406bd0c3e69723c8a1686e017e7bbe159b6f860405160405180910390a250565b611b1381600461241890919063ffffffff16565b8073ffffffffffffffffffffffffffffffffffffffff167f6ae172837ea30b801fbfcdd4108aa1d5bf8ff775444fd70256b44e6bf3dfc3f660405160405180910390a250565b611b6d81600461235b90919063ffffffff16565b8073ffffffffffffffffffffffffffffffffffffffff167fe94479a9f7e1952cc78f2d6baab678adc1b772d936c6583def489e524cb6669260405160405180910390a250565b6000611bc0338484611faa565b6001905092915050565b6000611beb8473ffffffffffffffffffffffffffffffffffffffff166124f3565b611bf85760019050611dab565b60008473ffffffffffffffffffffffffffffffffffffffff16639d188c22338887876040518563ffffffff1660e01b8152600401808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200183815260200180602001828103825283818151815260200191508051906020019080838360005b83811015611cd3578082015181840152602081019050611cb8565b50505050905090810190601f168015611d005780820380516001836020036101000a031916815260200191505b5095505050505050602060405180830381600087803b158015611d2257600080fd5b505af1158015611d36573d6000803e3d6000fd5b505050506040513d6020811015611d4c57600080fd5b81019080805190602001909291905050509050639d188c2260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149150505b949350505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611e39576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602381526020018061263f6023913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611ebf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001806125076021913960400191505060405180910390fd5b80600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040518082815260200191505060405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612030576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260248152602001806125f96024913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156120b6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260228152602001806125866022913960400191505060405180910390fd5b61210881600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461224a90919063ffffffff16565b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061219d81600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546122d390919063ffffffff16565b600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a3505050565b6000828211156122c2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601e8152602001807f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525060200191505060405180910390fd5b600082840390508091505092915050565b600080828401905083811015612351576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b61236582826118c6565b6123ba576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001806125d86021913960400191505060405180910390fd5b60008260000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b61242282826118c6565b15612495576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f526f6c65733a206163636f756e7420616c72656164792068617320726f6c650081525060200191505060405180910390fd5b60018260000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600080823b90506000811191505091905056fe4b4950373a20617070726f766520746f20746865207a65726f20616464726573734b4950373a207472616e7366657220746f206e6f6e204b495037526563656976657220696d706c656d656e746572506175736572526f6c653a2063616c6c657220646f6573206e6f742068617665207468652050617573657220726f6c654b4950373a207472616e7366657220746f20746865207a65726f20616464726573734d696e746572526f6c653a2063616c6c657220646f6573206e6f74206861766520746865204d696e74657220726f6c65526f6c65733a206163636f756e7420646f6573206e6f74206861766520726f6c654b4950373a207472616e736665722066726f6d20746865207a65726f2061646472657373526f6c65733a206163636f756e7420697320746865207a65726f20616464726573734b4950373a20617070726f76652066726f6d20746865207a65726f2061646472657373a165627a7a72305820e51fab94e7709d70e4b7ff4aaaf6428d983cfa2bbfb4be772ec2de87ea0a2b9f0029526f6c65733a206163636f756e7420697320746865207a65726f2061646472657373

이렇게 제출하신게 맞으실까요?

만약 위에 말씀드린 byteCode로 제출하셨다면

60806040523480156200001157600080fd5b50604051620026cb380380620026cb833981018060405260808110156200003757600080fd5b8101908080516401000000008111156200005057600080fd5b828101905060208101848111156200006757600080fd5b81518560018202830111640100000000821117156200008557600080fd5b50509291906020018051640100000000811115620000a257600080fd5b82810190506020810184811115620000b957600080fd5b8151856001820283011164010000000082111715620000d757600080fd5b505092919060200180519060200190929190805190602001909291905050508383836200010a33620001a260201b60201c565b6200011b336200020360201b60201c565b6000600560006101000a81548160ff02191690831515021790555082600690805190602001906200014e9291906200067b565b508160079080519060200190620001679291906200067b565b5080600860006101000a81548160ff021916908360ff1602179055505050506200019833826200026460201b60201c565b505050506200072a565b620001bd8160036200042e60201b62001d3b1790919060201c565b8073ffffffffffffffffffffffffffffffffffffffff167f6ae172837ea30b801fbfcdd4108aa1d5bf8ff775444fd70256b44e6bf3dfc3f660405160405180910390a250565b6200021e8160046200042e60201b62001d3b1790919060201c565b8073ffffffffffffffffffffffffffffffffffffffff167f6719d08c1888103bea251a4ed56406bd0c3e69723c8a1686e017e7bbe159b6f860405160405180910390a250565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141562000308576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601e8152602001807f4b4950373a206d696e7420746f20746865207a65726f2061646472657373000081525060200191505060405180910390fd5b62000324816002546200051260201b62001bf61790919060201c565b60028190555062000382816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546200051260201b62001bf61790919060201c565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a35050565b6200044082826200059b60201b60201c565b15620004b4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f526f6c65733a206163636f756e7420616c72656164792068617320726f6c650081525060200191505060405180910390fd5b60018260000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60008082840190508381101562000591576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141562000624576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526022815260200180620026a96022913960400191505060405180910390fd5b8260000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10620006be57805160ff1916838001178555620006ef565b82800160010185558215620006ef579182015b82811115620006ee578251825591602001919060010190620006d1565b5b509050620006fe919062000702565b5090565b6200072791905b808211156200072357600081600090555060010162000709565b5090565b90565b611f6f806200073a6000396000f3fe608060405234801561001057600080fd5b50600436106101375760003560e01c80636ef8d66d116100b857806395d89b411161007c57806395d89b4114610507578063983b2d561461058a57806398650275146105ce578063a9059cbb146105d8578063aa271e1a1461063e578063dd62ed3e1461069a57610137565b80636ef8d66d1461040957806370a082311461041357806379cc67901461046b57806382dc1ec4146104b95780638456cb59146104fd57610137565b80633f4ba83a116100ff5780633f4ba83a146102ed57806340c10f19146102f757806342966c681461035d57806346fbf68e1461038b5780635c975abb146103e757610137565b806306fdde031461013c578063095ea7b3146101bf57806318160ddd1461022557806323b872dd14610243578063313ce567146102c9575b600080fd5b610144610712565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610184578082015181840152602081019050610169565b50505050905090810190601f1680156101b15780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b61020b600480360360408110156101d557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506107b4565b604051808215151515815260200191505060405180910390f35b61022d61084b565b6040518082815260200191505060405180910390f35b6102af6004803603606081101561025957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610855565b604051808215151515815260200191505060405180910390f35b6102d16108ee565b604051808260ff1660ff16815260200191505060405180910390f35b6102f5610905565b005b6103436004803603604081101561030d57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610a65565b604051808215151515815260200191505060405180910390f35b6103896004803603602081101561037357600080fd5b8101908080359060200190929190505050610ad9565b005b6103cd600480360360208110156103a157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610ae6565b604051808215151515815260200191505060405180910390f35b6103ef610b03565b604051808215151515815260200191505060405180910390f35b610411610b1a565b005b6104556004803603602081101561042957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610b25565b6040518082815260200191505060405180910390f35b6104b76004803603604081101561048157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610b6d565b005b6104fb600480360360208110156104cf57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610b7b565b005b610505610be5565b005b61050f610d46565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561054f578082015181840152602081019050610534565b50505050905090810190601f16801561057c5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6105cc600480360360208110156105a057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610de8565b005b6105d6610e52565b005b610624600480360360408110156105ee57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610e5d565b604051808215151515815260200191505060405180910390f35b6106806004803603602081101561065457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610ef4565b604051808215151515815260200191505060405180910390f35b6106fc600480360360408110156106b057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610f11565b6040518082815260200191505060405180910390f35b606060068054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156107aa5780601f1061077f576101008083540402835291602001916107aa565b820191906000526020600020905b81548152906001019060200180831161078d57829003601f168201915b5050505050905090565b6000600560009054906101000a900460ff1615610839576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260108152602001807f5061757361626c653a207061757365640000000000000000000000000000000081525060200191505060405180910390fd5b6108438383610f98565b905092915050565b6000600254905090565b6000600560009054906101000a900460ff16156108da576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260108152602001807f5061757361626c653a207061757365640000000000000000000000000000000081525060200191505060405180910390fd5b6108e5848484610faf565b90509392505050565b6000600860009054906101000a900460ff16905090565b61090e33610ae6565b610963576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526030815260200180611e386030913960400191505060405180910390fd5b600560009054906101000a900460ff166109e5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f5061757361626c653a206e6f742070617573656400000000000000000000000081525060200191505060405180910390fd5b6000600560006101000a81548160ff0219169083151502179055507f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa33604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a1565b6000610a7033610ef4565b610ac5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526030815260200180611e8a6030913960400191505060405180910390fd5b610acf8383611060565b6001905092915050565b610ae3338261121b565b50565b6000610afc8260046113d690919063ffffffff16565b9050919050565b6000600560009054906101000a900460ff16905090565b610b23336114b4565b565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610b77828261150e565b5050565b610b8433610ae6565b610bd9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526030815260200180611e386030913960400191505060405180910390fd5b610be2816115b5565b50565b610bee33610ae6565b610c43576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526030815260200180611e386030913960400191505060405180910390fd5b600560009054906101000a900460ff1615610cc6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260108152602001807f5061757361626c653a207061757365640000000000000000000000000000000081525060200191505060405180910390fd5b6001600560006101000a81548160ff0219169083151502179055507f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a25833604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a1565b606060078054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610dde5780601f10610db357610100808354040283529160200191610dde565b820191906000526020600020905b815481529060010190602001808311610dc157829003601f168201915b5050505050905090565b610df133610ef4565b610e46576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526030815260200180611e8a6030913960400191505060405180910390fd5b610e4f8161160f565b50565b610e5b33611669565b565b6000600560009054906101000a900460ff1615610ee2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260108152602001807f5061757361626c653a207061757365640000000000000000000000000000000081525060200191505060405180910390fd5b610eec83836116c3565b905092915050565b6000610f0a8260036113d690919063ffffffff16565b9050919050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6000610fa53384846116da565b6001905092915050565b6000610fbc8484846118d1565b611055843361105085600160008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611b6d90919063ffffffff16565b6116da565b600190509392505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611103576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601e8152602001807f4b4950373a206d696e7420746f20746865207a65726f2061646472657373000081525060200191505060405180910390fd5b61111881600254611bf690919063ffffffff16565b60028190555061116f816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611bf690919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156112be576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4b4950373a206275726e2066726f6d20746865207a65726f206164647265737381525060200191505060405180910390fd5b6112d381600254611b6d90919063ffffffff16565b60028190555061132a816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611b6d90919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a35050565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561145d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526022815260200180611eff6022913960400191505060405180910390fd5b8260000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b6114c8816004611c7e90919063ffffffff16565b8073ffffffffffffffffffffffffffffffffffffffff167fcd265ebaf09df2871cc7bd4133404a235ba12eff2041bb89d9c714a2621c7c7e60405160405180910390a250565b611518828261121b565b6115b182336115ac84600160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611b6d90919063ffffffff16565b6116da565b5050565b6115c9816004611d3b90919063ffffffff16565b8073ffffffffffffffffffffffffffffffffffffffff167f6719d08c1888103bea251a4ed56406bd0c3e69723c8a1686e017e7bbe159b6f860405160405180910390a250565b611623816003611d3b90919063ffffffff16565b8073ffffffffffffffffffffffffffffffffffffffff167f6ae172837ea30b801fbfcdd4108aa1d5bf8ff775444fd70256b44e6bf3dfc3f660405160405180910390a250565b61167d816003611c7e90919063ffffffff16565b8073ffffffffffffffffffffffffffffffffffffffff167fe94479a9f7e1952cc78f2d6baab678adc1b772d936c6583def489e524cb6669260405160405180910390a250565b60006116d03384846118d1565b6001905092915050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611760576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526023815260200180611f216023913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156117e6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526021815260200180611e176021913960400191505060405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040518082815260200191505060405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611957576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526024815260200180611edb6024913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156119dd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526022815260200180611e686022913960400191505060405180910390fd5b611a2e816000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611b6d90919063ffffffff16565b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611ac1816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611bf690919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a3505050565b600082821115611be5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601e8152602001807f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525060200191505060405180910390fd5b600082840390508091505092915050565b600080828401905083811015611c74576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b611c8882826113d6565b611cdd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526021815260200180611eba6021913960400191505060405180910390fd5b60008260000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b611d4582826113d6565b15611db8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f526f6c65733a206163636f756e7420616c72656164792068617320726f6c650081525060200191505060405180910390fd5b60018260000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550505056fe4b4950373a20617070726f766520746f20746865207a65726f2061646472657373506175736572526f6c653a2063616c6c657220646f6573206e6f742068617665207468652050617573657220726f6c654b4950373a207472616e7366657220746f20746865207a65726f20616464726573734d696e746572526f6c653a2063616c6c657220646f6573206e6f74206861766520746865204d696e74657220726f6c65526f6c65733a206163636f756e7420646f6573206e6f74206861766520726f6c654b4950373a207472616e736665722066726f6d20746865207a65726f2061646472657373526f6c65733a206163636f756e7420697320746865207a65726f20616464726573734b4950373a20617070726f76652066726f6d20746865207a65726f2061646472657373a165627a7a7230582046cf18507473dba8d9eb81778c6691ebb284e365d9eb55d60cff433de73351040029526f6c65733a206163636f756e7420697320746865207a65726f2061646472657373

이걸로 한 번 부탁드립니다.

1 Like

위에 올려드린 소스코드만 제출하고 별도로 byteCode는 제출하지 않았습니다.

상기 이슈는 해결했습니다.
한 가지 더 질문을 드리면 KAS의 KIP7 API를 통해 배포한 컨트렉트도 scope의 verification을 위한 정보가 동일할까요?

KAS 카테고리로 질문 올려주시면 정확한 답변 받으실 수 있습니다.
감사합니다.

안녕하세요 여쭤볼게 있습니다…
말씀하신 예제로 배포는잘되었습니다만… 콘솔로그를 찍을때
Uncaught TypeError: kip7.name is not a function 라는식으로 에러가 뜨는데 어떻게 해결해야되는지 알고싶습니다.

에러가 발생한 소스코드를 올려주실 수 있으신가요?