Por ejemplo, aquí está mi función de ejemplo en un contrato inteligente:
function adoptCreeptomas(uint256 beastQuantity, address referrer
) public payable whenNotPaused {
msg.sender.transfer(50);
}
Y luego trato de probar este contrato:
describe("adopted creeptoma", async function() {
it('adopted', async function() {
let instance = await CreeptomaPresale.deployed();
let pre = convertEther(getBalance(investor));
await instance.adoptCreeptomas.call(beastQuantity, 0 {from: investor, value: ether(100)});
let after = convertEther(getBalance(investor));
console.log("before: " + pre + "--after: " + after);
});
});
El registro de impresión es:before: 100--after: 100
Aquí está mi getBalance
método:
export function getBalance(address) {
return web3.eth.getBalance(address)
}
No sé por qué el saldo de la cuenta no disminuye. Por favor, ayúdame.
Gracias
Usted está diciendo call()
cuando Ud adoptCreeptomas
. call()
lo convierte explícitamente en una operación de ejecución en seco de solo lectura, no de cambio de estado. No está firmado ni enviado a la red para la minería, por lo que la próxima vez que mires, nada ha cambiado.
Echa un vistazo aquí para una explicación detallada. ¿Cuál es la diferencia entre una transacción y una llamada?
Espero eso ayude.
hqt
{from: investor, value: ether(15)}
pero no mi número en la transferencia de método. por ejemplo:msg.sender.transfer(10);
Entonces, ¿eso significa que todo el éter será consumido por la función en el contrato? gracias.hqt
Rob Hitchens
from
dirección a lato
dirección si la transacción es exitosa.