Например, вот мой пример функции в смарт-контракте:
function adoptCreeptomas(uint256 beastQuantity, address referrer
) public payable whenNotPaused {
msg.sender.transfer(50);
}
И затем я пытаюсь проверить этот контракт:
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);
});
});
Журнал печати:before: 100--after: 100
Вот мой getBalance
метод:
export function getBalance(address) {
return web3.eth.getBalance(address)
}
Я не знаю, почему баланс счета не уменьшается. Пожалуйста, помогите мне.
Спасибо
Вы говорите, call()
когда вы adoptCreeptomas
. call()
делает его явно доступным только для чтения, без изменения состояния, пробной операцией. Он не подписан и не отправлен в сеть для майнинга, так что при следующем просмотре ничего не изменилось.
Посмотрите здесь для подробного объяснения. В чем разница между транзакцией и звонком?
Надеюсь, поможет.
штаб-квартира
{from: investor, value: ether(15)}
а не мой номер в методе передачи. например:msg.sender.transfer(10);
Значит ли это, что весь эфир будет потребляться функцией в контракте? Спасибо.штаб-квартира
Роб Хитченс
from
адреса наto
адрес, если транзакция прошла успешно.