truffle develop
Есть ли способ получить экземпляр контракта с адреса контракта из консоли ?
У меня есть удаленный ec2 с установленным truffle/geth и работающим экземпляром truffle development. С локальной truffle develop
консоли я развернул свои контракты в этой удаленной сети (используя файл truffle migrate --compile-all --reset --network remote_network_name
). Контракты успешно развернуты, и у меня есть адрес, где хранится контракт.
В truffle develop
консоли на удаленном сервере я попытался Contract_Name.deployed().then(function(instance) {app = instance; })
получить экземпляр, но получаю сообщение Contract_Name is undefined
об ошибке.
truffle develop
Есть ли способ получить экземпляр контракта с адреса контракта с консоли на удаленном сервере ?
Может что-то вроде MyContract = new Contract.at("ContractAddress")
?
Есть гораздо более простой способ использования трюфеля.
Сначала включите артефакт контракта, как при создании нового контракта в truffle.
пусть MyContract = артефакты.require("./MyContract.sol");
затем в сценарии:
let myContract = await MyContract.at('мой адрес контракта');
Таким образом, нет необходимости брать ABI из другого файла и т. д.
Лично я предпочитаю, чтобы в Truffle не нужно было знать или нуждаться в адресе моего развернутого контракта, чтобы получить его экземпляр. Возможно, вы не помните адрес вашего контракта или адрес был спрятан глубоко в терминале, поскольку новое содержимое продвигает старое содержимое дальше.
Чтобы получить развернутый экземпляр контракта, не зная адреса контракта, нужно использовать метод контракта deployed()
следующим образом:
const deployedContractInstance = await MyContract.deployed()
Вот и все!
Теперь у вас есть доступ ко всем атрибутам и методам, предоставляемым вашим контрактом, например, вы можете получить адрес, просто выполнив deployedContractInstance.address
.
Решено! Вам нужны две вещи, чтобы получить экземпляр контракта в удаленной сети:
truffle migrate --compile-all --reset --network remote_network_name
в вашей локальной консоли разработки truffle, Truffle создаст объектное представление json вашего контракта в вашем локальном build/
каталоге. Внутри этого объекта json вы можете найти массив ABI вашего контракта.Имея эти две части информации, вы можете войти в консоль разработки трюфелей на удаленном сервере и получить экземпляр своего контракта с помощью следующих команд:
var MyContract = new web3.eth.Contract(abiArray);
var contractInstance = await MyContract.at(contractAddress);
ПРИМЕЧАНИЕ. Предполагается, что вы используете web3.js версии 0.2xx. Если вы используете web3.js 1.0, обратитесь к этой документации .
Исмаэль
build/
каталог с артефактами развертывания на удаленный сервер.ВзломBadCode
Исмаэль