Как получить баланс контракта с помощью web3.js?

Я развернул контракт следующим образом и определил его баланс равным 5000 вэй ( value: 5000):

const thisContract = new web3.eth.Contract(abi);
thisContract.deploy({  
    data: bytecode,
    arguments: [ "0x84f0c8fC2F6bc8394EB77BaAAe89cB6e12C048C2", 86400]
}).send({
    from: "0x3455D7167A2EE2d660EE85F8e90C6b3B1cCB7163",
    gas: 5000000 ,
    gasPrice: '3000000000',
    value: 5000 // here I have determined the balance.
}, function(error, transactionHash) {
    console.log(error);
    console.log(transactionHash);
    console.log('function exec');
}).then(function(newContractInstance) {
    console.log('Contract Instance:' + newContractInstance.options.address);
});

Я развернул этот контракт на Tobalabaблокчейне ( его github здесь. )

Баланс адреса, по которому я разработал этот контракт, выглядит 20000000000000000000 weiследующим образом:

> web3.eth.getBalance('0x3455D7167A2EE2d660EE85F8e90C6b3B1cCB7163').then(console.log)
Promise {
  <pending>,
  domain: 
   Domain {
     domain: null,
     _events: 
      { removeListener: [Function: updateExceptionCapture],
        newListener: [Function: updateExceptionCapture],
        error: [Function: debugDomainError] },
     _eventsCount: 3,
     _maxListeners: undefined,
     members: [] } }
> 20000000000000000000

Однако, когда я получаю баланс контракта, это выглядит 0следующим образом:

> web3.eth.getBalance('0xd227398f81bad20882b46ccdffc71058025df341').then(console.log)
Promise {
  <pending>,
  domain: 
   Domain {
     domain: null,
     _events: 
      { removeListener: [Function: updateExceptionCapture],
        newListener: [Function: updateExceptionCapture],
        error: [Function: debugDomainError] },
     _eventsCount: 3,
     _maxListeners: undefined,
     members: [] } }
> 0

А вот информация о развертывании этого контракта:

https://tobalaba.etherscan.com/address/0xd227398f81bad20882b46ccdffc71058025df341

В соответствии с которым адрес контракта0xD227398f81bAD20882B46ccdFfC71058025df341

Что-то не так?

ВАЖНОЕ ПРИМЕЧАНИЕ: Я разработал этот контракт: https://programtheblockchain.com/posts/2018/02/23/writing-a-simple-payment-channel/

Между тем, когда я получаю адрес контракта, он возвращает null !

> thisContract.options.address
null

Принимая во внимание, что в отношении этой информации ( https://tobalaba.etherscan.com/tx/0xb9834bd2ebbbb930208dbb17462169441c6b63542a01a43e3992ecf803cb0734 ) она должна быть развернута, не так ли? (Пожалуйста, смотрите снимок экрана ниже)

введите описание изображения здесь

К какому узлу вы подключены? Вы уверены, что она актуальна?
Что касается того, почему thisContract.options.address, nullэто потому, что вы никогда не назначали адрес. Вы можете использовать thisContract.options.address = newContractInstance.options.addressэтот обратный вызов, если хотите.
@smarx Спасибо, я использую этот узел:enode://63c8ce2905100932230c1760fb29d36d08646979d1fd7abfa8393f5e7feaade3c9a078fd85b194ca040c8a0b2c541537f96deb76a7412c87e36cec16fe543e9f@192.168.136.128:30303
Итак, вы используете локальный узел четности? Проверьте его номер блока и сравните с номером на Etherscan, чтобы убедиться, что ваш узел обновлен.
@smarx Спасибо, да, я только что снова получил его баланс, и, к счастью, он теперь 5000 weiздесь: tobalaba.etherscan.com/address/… Очевидно, из-за синхронизации. Спасибо
@smarx теперь следующий шаг - закрыть канал и произвести расчет. Спасибо

Ответы (1)

balance = await web3.eth.getBalance(contract_address);