У меня есть контракт, который создает другой контракт в функции. Я тестирую контракт, используя Ganache. При вызове этой функции с помощью geth она работает нормально. Но при вызове его с помощью моего dapp (yoman, gulp, bower и т. д.) он выдает мне «Ошибка: неверный адрес» через консоль браузера.
Я скопировал и вставил логику из моего децентрализованного приложения в geth, и она работает, как и ожидалось, и пользовательский интерфейс Ganache показывает транзакцию.
Ниже приведен код:
web3 = new Web3(new Web3.providers.HttpProvider("HTTP://127.0.0.1:7545"));
web3.eth.defaultAccount = web3.eth.accounts[0];
var myContract = web3.eth.contract([abi left out for readability]);
var contractAddress = '0xae01c97dc970ad45f7be5d23ba72ae24640e90b1';
var contract = myContract.at(contractAddress);
function sendPurchaseTrade() {
contract.makePurchaseTrade('0x427d25b7c0B71C1944df51765c55Bea1961e0a44', {value: 200000, gas: 3000000});
}
На соответствующей HTML-странице есть кнопка с onclick="sendPurchaseTrade();" .
Вызовы контракта без изменения состояния работают с децентрализованным приложением.
Есть идеи, почему тот же самый код будет работать на geth, но не в моем децентрализованном приложении?
Функция, содержащая контрактную транзакцию, должна была содержать оператор web3.eth.default = web3.eth.accounts[0] .
пользователь19510
web3.eth.defaultAccount
адрес, который вы ожидаете?солидитер
солидитер