El saldo de la cuenta no disminuye después de enviar ether

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 getBalancemé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

Respuestas (1)

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.

Muchas gracias. Hay un punto que no entiendo. Veo que mi saldo se reduce en un número puesto en contrato. por ejemplo: {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.
Creo que porque mi método siempre consumirá todo el éter de la entrada. Pero no estoy seguro. Si en este caso, ¿cómo puedo evitar esto para no usar el éter de todos los usuarios?
Lo primero es lo primero. Deberías ganache-cli o tu propia cadena privada para que la experimentación no cueste nada. El éter irá de la fromdirección a la todirección si la transacción es exitosa.