2016-06-05 8 views

답변

2

편집 :이 답변 먼저 기록 된 이후 견고 함이 마누엘-aráoz @, 변경은 정답이있다.

주소가 계약인지 확인하는 방법은 없습니다. Ethereum의 목표 중 하나는 인간과 똑똑한 계약이 똑같이 취급되어야한다는 것입니다. 이것은 현명한 계약이 사람 및 기타 계약과 원활하게 상호 작용하는 미래로 이어집니다. 앞으로는 바뀔 수도 있지만 현재로서는 임의의 주소가 모호합니다.

0

가능한 정보와 함께 제공 할 수있는 일. 거래 발신자 주소가 null이거나 비어 있으면 주소가 계약 계정인지 EOA (외부 소유 계정)인지 알 수 있습니다. 즉, 네트워크에서 계약 생성 트랜잭션을 전송할 때 트랜잭션의 수신 주소는 null이거나 사용되지 않습니다. GitHub의에서

참고 :이 도움이 https://github.com/ethereum/go-ethereum/wiki/Contracts-and-Transactions

희망.

4

이것은 Solinity를 사용하는 계약서에서 쿼리 할 수있는 것이 아니지만 주소가 계약 코드를 보유하고 있는지 여부를 알고 싶다면 예 :

과 같은 geth 콘솔 또는 유사한 것을 사용하여 확인할 수 있습니다.
> eth.getCode("0xbfb2e296d9cf3e593e79981235aed29ab9984c0f") 

16 진수 문자열 (여기 0xbfb2e296d9cf3e593e79981235aed29ab9984c0f)을 쿼리하려는 주소로 사용하십시오. 그러면 해당 주소에 저장된 바이트 코드가 반환됩니다.

블록 체인 스캐너를 사용하여 해당 주소에서 계약의 소스 코드를 찾을 수도 있습니다 (예 : the ecsol library). etherscan.io으로 표시됩니다.

29

예는, 주소 '코드 크기를 얻기 위해 일부 EVM 어셈블리 코드를 사용하여 할 수 있습니다

다음
function isContract(address addr) returns (bool) { 
    uint size; 
    assembly { size := extcodesize(addr) } 
    return size > 0; 
} 
+0

(일부 [정보]입니다 http://ethereum.stackexchange.com/questions/14015/using- evm-assembly-to-get-the-address-code-size/14016 # 14016)이이 함수의 작동 방식 –