Wie erhalte ich den Saldo eines Vertrags mit web3.js?

Ich habe einen Vertrag wie folgt bereitgestellt und seinen Saldo auf 5000 Wei ( value: 5000) festgelegt:

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);
});

Ich habe diesen Vertrag auf TobalabaBlockchain bereitgestellt ( sein GitHub ist hier. )

Die Bilanz der Adresse, unter der ich diesen Vertrag entwickelt habe, lautet 20000000000000000000 weiwie folgt:

> 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

Wenn ich jedoch die Restsumme des Vertrages erhalte, ist es 0wie folgt:

> 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

Und hier sind die Informationen zur Bereitstellung dieses Vertrags:

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

Dementsprechend ist die Vertragsadresse0xD227398f81bAD20882B46ccdFfC71058025df341

Ist etwas falsch?

WICHTIGER HINWEIS: Ich habe diesen Vertrag entwickelt: https://programtheblockchain.com/posts/2018/02/23/writing-a-simple-payment-channel/

In der Zwischenzeit, wenn ich die Vertragsadresse erhalte, gibt sie null zurück !

> thisContract.options.address
null

Während, in Bezug auf diese Informationen ( https://tobalaba.etherscan.com/tx/0xb9834bd2ebbbb930208dbb17462169441c6b63542a01a43e3992ecf803cb0734 ) es bereitgestellt werden muss, nicht wahr? (Siehe Screenshot unten)

Geben Sie hier die Bildbeschreibung ein

Mit welchem ​​Knoten bist du verbunden? Bist du sicher, dass es aktuell ist?
Der Grund dafür thisContract.options.addressist null, dass Sie nie eine Adresse zugewiesen haben. Sie können thisContract.options.address = newContractInstance.options.addressdiesen Rückruf verwenden, wenn Sie möchten.
@smarx Danke, ich verwende diesen Knoten:enode://63c8ce2905100932230c1760fb29d36d08646979d1fd7abfa8393f5e7feaade3c9a078fd85b194ca040c8a0b2c541537f96deb76a7412c87e36cec16fe543e9f@192.168.136.128:30303
Sie verwenden also einen lokalen Paritätsknoten? Überprüfen Sie die Blocknummer und vergleichen Sie sie mit der auf Etherscan, um sicherzustellen, dass Ihr Knoten auf dem neuesten Stand ist.
@smarx Danke, ja ich habe gerade wieder sein Guthaben bekommen und zum Glück ist es jetzt 5000 weihier: tobalaba.etherscan.com/address/… Es lag anscheinend an der Synchronisation. Danke
@smarx jetzt ist der nächste Schritt, den Kanal zu schließen und eine Abrechnung zu machen. Danke

Antworten (1)

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