Есть ли способ получить метаданные (байт-код, ABI) развернутого контракта, если вы знаете только адрес контракта?
В geth в административном интерфейсе есть функция getContractinfo() , но при ее вызове я получаю сообщение об ошибке: Метод admin_getContractInfo не существует/недоступен
В документации ( https://github.com/ethereum/go-ethereum/wiki/Contracts-and-Transactions ) я видел пример, но я не думаю, что он работает:
// get the contract info for contract address to do manual verification
var info = admin.getContractInfo(address) // lookup, fetch, decode
var source = info.source;
var abiDef = info.abiDefinition
Для байт-кода вы можете использовать web3.eth.getCode(address)
.
Для ABI вам нужно получить его от того, кто написал контракт, или сгенерировать ABI из исходного кода. Как правило, вы не можете определить имена функций из байт-кода, потому что в байт-коде есть только хэш имен, дополнительная информация: нужен ли мне скомпилированный контракт только для того, чтобы получить определение ABI?
admin.getContractInfo
вроде удалили . (Обратите внимание, что для использования также были необходимы getContractInfo
более ранние шаги https://github.com/ethereum/go-ethereum/wiki/Contracts-and-Transactions#contract-info-metadata , включая saveInfo
метаданные.)
Да, но это немного хлопотно (вам нужно перепроектировать код/быть знакомым с байт-кодом EVM).
Здесь есть пример с развернутым контрактом .
Ричард Хоррокс
attach
консоли ed? Другиеadmin
команды работают?драгосб