2016-06-05 7 views

Antwort

2

Edit: Solidity da diese Antwort geändert hat zuerst geschrieben wurde, @ manuel-Aráoz hat die richtige Antwort.

Es gibt keine Möglichkeit, zu überprüfen, ob eine Adresse ein Vertrag ist. Eines der Ziele von Ethereum ist, dass Menschen und intelligente Verträge gleichermaßen behandelt werden. Dies führt in eine Zukunft, in der intelligente Verträge nahtlos mit Menschen und anderen Verträgen interagieren. Es könnte sich in der Zukunft ändern, aber für den Moment ist eine beliebige Adresse mehrdeutig.

0

Was Sie tun können, vorausgesetzt, Sie haben die Informationen zur Hand. Wenn die Absenderadresse der Transaktion null oder nicht belegt war, können Sie feststellen, ob es sich bei der Adresse um ein Vertragskonto oder eine EOA (externes Konto) handelt. , d. H. Wenn eine Erstellungsvertrags-Transaktion in dem Netzwerk gesendet wird, ist die Empfangsadresse in der Transaktion null/nicht verwendet.

Referenz von Github: https://github.com/ethereum/go-ethereum/wiki/Contracts-and-Transactions

Hoffnung, das hilft.

4

Das ist nicht etwas, das man aus einem Vertrag mit Solidity abfragen kann, aber wenn Sie nur wissen, sehlten, ob eine Adresse Vertrag Code oder nicht hält, können Sie überprüfen Ihre Geth Konsole oder ähnliches mit zB mit:

> eth.getCode("0xbfb2e296d9cf3e593e79981235aed29ab9984c0f") 

mit dem hex-String (hier 0xbfb2e296d9cf3e593e79981235aed29ab9984c0f) als Adresse, die Sie abfragen möchten. Dies wird den an dieser Adresse gespeicherten Bytecode zurückgeben.

Sie können auch einen Blockchain-Scanner verwenden, um den Quellcode des Vertrags unter dieser Adresse zu finden, z. B. the ecsol library wie unter etherscan.io angezeigt.

29

Ja, Sie können, indem Sie einige EVM Assembler-Code unter Verwendung der Adresse Code-Größe zu erhalten:

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

Hier einige [info] (http://ethereum.stackexchange.com/questions/14015/using- evm-assembly-um-die-Adresse-Code-Größe zu erhalten/14016 # 14016) wie diese Funktion funktioniert –

Verwandte Themen