Hier ist zum Beispiel meine Beispielfunktion in Smart Contract:
function adoptCreeptomas(uint256 beastQuantity, address referrer
) public payable whenNotPaused {
msg.sender.transfer(50);
}
Und dann versuche ich, diesen Vertrag zu testen:
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);
});
});
Das Druckprotokoll lautet:before: 100--after: 100
Hier ist meine getBalance
Methode:
export function getBalance(address) {
return web3.eth.getBalance(address)
}
Ich weiß nicht, warum der Kontostand nicht abnimmt. Bitte hilf mir.
Danke
Du sagst, call()
wenn du adoptCreeptomas
. call()
macht es explizit zu einem schreibgeschützten, nicht zustandsändernden Trockenlaufvorgang. Es wird nicht signiert oder zum Mining an das Netzwerk gesendet. Wenn Sie also das nächste Mal nachsehen, hat sich nichts geändert.
Schauen Sie hier für eine detaillierte Erklärung. Was ist der Unterschied zwischen einer Transaktion und einem Anruf?
Ich hoffe es hilft.
hqt
{from: investor, value: ether(15)}
aber nicht meine nummer bei method transfer. zum Beispiel:msg.sender.transfer(10);
Bedeutet das also, dass der gesamte Äther durch die Funktion im Vertrag verbraucht wird? Danke.hqt
Rob Hitchens
from
Adresse zuto
Adresse, wenn die Transaktion erfolgreich ist.