首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用web3打印智能合同余额

使用web3打印智能合同余额
EN

Ethereum用户
提问于 2020-05-16 13:44:32
回答 1查看 849关注 0票数 0

我试图使用web3打印智能合同的余额,但它没有显示任何错误,但在客户端应用程序上,它如下所示:

你的余额:

/合同/临时合同:

代码语言:javascript
复制
function () external payable {
        // payable fallback to receive and store ETH
        if(msg.value < 10 ether){
        revert();
        }
        balanceOf[msg.sender] += msg.value;
    }

    function getBalance() external view returns (uint) {
        return address(this).balance;   //this keyword refers to the smart contract address
    }

/src/js/app.js:

代码语言:javascript
复制
 App.contracts.kyc.deployed().then(function(instance) {
          kycInstance = instance;          
    var bal=kycInstance.getBalance();
              $("#SmartBalance").html("Your Balance: " + bal);
        // #smartbalance is an id for the HTML file
});
EN

回答 1

Ethereum用户

发布于 2020-05-16 13:59:17

Javascript函数kycInstance.getBalance返回一个需要解析的Promise对象,以便获得从相应的Solidity函数返回的实际值。

例如,要做到这一点,一种方法是改变这种情况:

代码语言:javascript
复制
kycInstance.getBalance();
$("#SmartBalance").html("Your Balance: " + bal);

对此:

代码语言:javascript
复制
kycInstance.getBalance().then(function(bal) {
    $("#SmartBalance").html("Your Balance: " + bal);
});

注意,由于Solidity函数返回一个uint,Javascript中的bal类型取决于您使用的web3.js版本:

  • 在web3.jsv0.x:typeof bal == BigNumber
  • 在web3.jsv1.x:typeof bal == String

因此,如果您使用的是web3.jsv0.x,那么最好打印"Your Balance: " + bal.toFixed()

票数 1
EN
页面原文内容由Ethereum提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://ethereum.stackexchange.com/questions/83467

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档