"Error: dirección no válida" para dapp, funciona en geth (Ganache)

Tengo un contrato que crea otro contrato en una función. Estoy probando el contrato usando Ganache. Al llamar a esta función usando geth, funciona bien. Pero cuando lo llamo usando mi dapp (Yeoman, Gulp, Bower, etc.) me da "Error: dirección no válida" a través de la consola del navegador.

Copié y pegué la lógica de mi dapp en geth y funciona como se esperaba en geth, y la interfaz de usuario de Ganache muestra la transacción.

El siguiente es el código:

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});
}

La página HTML respectiva tiene un botón con onclick="sendPurchaseTrade();" .

Las llamadas que no cambian de estado al contrato funcionan con el dapp.

¿Alguna idea de por qué exactamente el mismo código funcionará en geth pero no en mi dapp?

¿Contiene web3.eth.defaultAccountla dirección que esperas?
De hecho, lo hace. (mostrado a través de console.log())
El código funciona fuera de la función. Supongo que algún tipo de problema de alcance.

Respuestas (1)

La función que contenía la transacción del contrato tenía que tener la declaración web3.eth.default = web3.eth.accounts[0] dentro de ella.