체인의정석

주소가 CA인지 체크하는 방법 본문

블록체인/Ethers & web3

주소가 CA인지 체크하는 방법

체인의정석 2022. 6. 24. 10:09
728x90
반응형

https://ethereum.stackexchange.com/questions/15641/how-does-a-contract-find-out-if-another-address-is-a-contract

 

How does a contract find out if another address is a contract?

Is it possible, from within a contract written in Solidity, to check if a contract is placed on a specific address or if this address does not contain any code?

ethereum.stackexchange.com

오픈씨의 wyvernExchange의 경우 아래와 같은 코드가 있었다. 

target이 스마트컨트렉트 형태의 지갑이기 때문에 이러한 형태가 있었는데 주소가 포함하는 바이트코드를 체크해서 확인을 하는 방법이다.

따라서 아래 구문을 사용하면 지갑이 CA인지 구분하고 이후 작업을 진행하는 것이 가능하다.

        /* Target must exist (prevent malicious selfdestructs just prior to order settlement). */
        uint size;
        address target = sell.target;
        assembly {
            size := extcodesize(target)
        }
        require(size > 0);
728x90
반응형
Comments