¿Cómo obtener el saldo de un contrato usando web3.js?

He implementado un contrato de la siguiente manera y determinado su saldo en 5000 wei ( 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);
});

He implementado este contrato en Tobalabablockchain ( su github está aquí ) .

El balance de la dirección por la cual desarrollo este contrato es 20000000000000000000 weiel siguiente:

> 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

Sin embargo, cuando obtengo el saldo del contrato, es 0el siguiente:

> 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

Y aquí está la información de despliegue de este contrato:

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

Según el cual la dirección del contrato es0xD227398f81bAD20882B46ccdFfC71058025df341

¿Hay algo mal?

NOTA IMPORTANTE: he desarrollado este contrato: https://programtheblockchain.com/posts/2018/02/23/writing-a-simple-payment-channel/

Mientras tanto, cuando obtengo la dirección del contrato, ¡devuelve nulo !

> thisContract.options.address
null

Considerando que, con respecto a esta información ( https://tobalaba.etherscan.com/tx/0xb9834bd2ebbbb930208dbb17462169441c6b63542a01a43e3992ecf803cb0734 ) debe implementarse, ¿no? (Por favor, vea la captura de pantalla a continuación)

ingrese la descripción de la imagen aquí

¿A qué nodo estás conectado? ¿Estás seguro de que está actualizado?
En cuanto a por qué thisContract.options.addresses null, es porque nunca asignó una dirección. Podría usar thisContract.options.address = newContractInstance.options.addressen esa devolución de llamada si lo desea.
@smarx Gracias, estoy usando este nodo:enode://63c8ce2905100932230c1760fb29d36d08646979d1fd7abfa8393f5e7feaade3c9a078fd85b194ca040c8a0b2c541537f96deb76a7412c87e36cec16fe543e9f@192.168.136.128:30303
Entonces, ¿estás usando un nodo de paridad local? Verifique su número de bloque y compárelo con el de Etherscan para asegurarse de que su nodo esté actualizado.
@smarx Gracias, sí, acabo de recibir su saldo nuevamente y, afortunadamente, ahora está 5000 weiaquí: tobalaba.etherscan.com/address/… Aparentemente fue debido a la sincronización. Gracias
@smarx ahora el siguiente paso es cerrar el canal y llegar a un acuerdo. Gracias

Respuestas (1)

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