Как отправить wei / eth на адрес договора?(используя трюфельный тест javascript) - PullRequest
0 голосов
/ 10 октября 2018

Я пытаюсь отправить wei / eth на адрес моего договора о солидности, который имеет внешнюю функцию возврата к оплате.Мой тест javascript для трюфелей, приведенный ниже, не приводит к получению баланса в экземпляре instance.address.Разве instance.address не является адресом смарт-контракта, получающим wei?Может кто-нибудь определить, почему console.logging баланса приводит к 0?Или заметить, что мне не хватает?

Спасибо!

const TestContract = artifacts.require("TestContract");


contract('TestContract', async (accounts) => { 

it('should send 1 ether to TestContract', async () => {
  let instance = await TestContract.deployed();

  instance.send({from: accounts[1], value: 1000000000000000000}); 
  let balance = await web3.eth.getBalance(instance.address);
  console.log('instance.address balance: ' + parseInt(balance));
)}

Ответы [ 3 ]

0 голосов
/ 11 октября 2018

Решено!Я забыл, что должен был отправить транзакцию через web3, и вот так:

web3.eth.sendTransaction({})

В любом случае, спасибо!

0 голосов
/ 11 октября 2018

Поскольку вы не предоставляете контракт в своем вопросе, я предполагаю, что ваш контракт выглядит следующим образом.

Путь к файлу :

. / Contract / TestContract.sol

pragma solidity ^0.4.23;

contract TestContract {

    // all logic goes here...

    function() public payable {
        // payable fallback to receive and store ETH
    }

}

С этим, если вы хотите отправить ETH из accounts[1] в TestContract, используя JS, вот как это сделать:

Путь к файлу :

. / Test / TestContract.js

const tc = artifacts.require("TestContract");

contract('TestContract', async (accounts) => {

    let instance;

    // Runs before all tests in this block.
    // Read about .new() VS .deployed() here:
    // https://twitter.com/zulhhandyplast/status/1026181801239171072
    before(async () => {
        instance = await tc.new();
    })

    it('TestContract balance should starts with 0 ETH', async () => {
        let balance = await web3.eth.getBalance(instance.address);
        assert.equal(balance, 0);
    })

    it('TestContract balance should has 1 ETH after deposit', async () => {
        let one_eth = web3.toWei(1, "ether");
        await web3.eth.sendTransaction({from: accounts[1], to: instance.address, value: one_eth});
        let balance_wei = await web3.eth.getBalance(instance.address);
        let balance_ether = web3.fromWei(balance_wei.toNumber(), "ether");
        assert.equal(balance_ether, 1);
    })

})

См. Мой комментарий в коде выше, чтобы узнатьПодробнее о различиях между ключевым словом .new() и .deployed() в Truffle.

Полный исходный код моего решения можно найти здесь .

0 голосов
/ 10 октября 2018

Вы можете отправить по адресу, а не объекту.

instance.send({from: accounts[1], value: 1000000000000000000});

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...