tengo dos funciones
Uno que devuelve web.eth.sendTransaction, que activa metamask por primera vez,
Y uno que devuelve contractInstance.function que actualiza una matriz en mi contrato. Lo que también activa la metamáscara.
Ambos están en la misma gran función en mi app.js,
Me gustaría obtener el mismo resultado, que es recibir un pago y luego actualizar el libro en el contrato, llamando solo una vez a metamask.
cual es la mejor practica?
markAdopted: function(adopters, account) {
var adoptionInstance;
App.contracts.Adoption.deployed().then(function(instance) {
adoptionInstance = instance;
return adoptionInstance.getAdopters.call();
}).then(function(adopters) {
for (i = 0; i < adopters.length; i++) {
console.log(adopters[i]);
if (adopters[i] !== '0x0000000000000000000000000000000000000000') {
$('.panel-pet').eq(i).find('button').text('Coped').attr('disabled', true);
}
}
}).catch(function(err) {
console.log(err.message);
});
},
handleAdopt: function(event) {
event.preventDefault();
var petId = parseInt($(event.target).data('id'));
var adoptionInstance;
var account;
var transactionStatus;
web3.eth.getAccounts(function(error, accounts) {
if (error) {
console.log(error);
}
account = accounts[0];
});
web3.eth.sendTransaction({
from: account,
to: '0xC5fdf4076b8F3A5357c5E395ab970B5B54098Fef',
value: '1000000000000000000'
}, function(error, result){
if(!error) {
console.log(result);
transactionStatus = true;
if (transactionStatus) {
App.contracts.Adoption.deployed().then(function(instance) {
adoptionInstance = instance;
return adoptionInstance.adopt(petId, {from: account});
}).then(function(result) {
return App.markAdopted();
}).catch(function(err) {
console.log(err.message);
});
}
}
else {
console.error(error);
transactionStatus = false;
}
});
}
};
A menos que esté dispuesto a pagar esa función de matriz de actualización y fusionar el código, esencialmente está solicitando que se completen 2 acciones que requerirán 2 activadores.
Una alternativa es conectar una cuenta mediana, de forma segura en el backend, para conectarse y activar la segunda llamada a través... Desafortunadamente, también incurrirá en el costo de la gasolina.
La mejor apuesta es tratar de repensar cómo se programa el contrato y tratar de hacer más con menos llamadas a funciones.
Ilán
reyhaynes
data
parámetro opcional? Te recomiendo que nos muestres el código de la transacción en sí.Ilán
reyhaynes
Ilán
Ilán