【问题标题】:My solidity function returns a transaction hash and not a uint我的solidity函数返回一个事务哈希而不是一个uint
【发布时间】:2020-07-03 13:53:33
【问题描述】:

我的函数一直返回一个事务哈希,但它应该返回一个 uint。我将其称为控制台 sale.priceOfEther() 中的一个函数。我正在使用solidity 0.5.0 和ganache。

    function priceOfEther() public view returns (uint256){
    uint256 maxTokenPrice = WEI_DECIMALS.div(100).mul(7); //max price $0.07 USD per token multiplied by wei early to avoid truncation by division.
    uint256 minTokenPrice = WEI_DECIMALS.div(1000).mul(7); //min price $0.007 USD per token multiplied by wei early to avoid truncation by division.
    uint256 minWeiPerToken = minTokenPrice.div(ethUSD);
    uint256 maxWeiPerToken = maxTokenPrice.div(ethUSD);
    uint256 increments = (maxWeiPerToken.sub(minWeiPerToken)).div(AVG_NUM_INVESTORS); 
    price = minWeiPerToken.add(increments.mul(count));
    if (price > maxWeiPerToken) {
        price = maxWeiPerToken;
    }
    assert(price != 0);        
    return price;
}

这是 truffle 控制台中返回的内容

{ tx: '0x8c3c2b4979117f380a7f6d39fd6f46e3566436ada25b5048ecaaef40743f5586',
  receipt: 
   { transactionHash: '0x8c3c2b4979117f380a7f6d39fd6f46e3566436ada25b5048ecaaef40743f5586',
     transactionIndex: 0,
     blockHash: '0xc3410bdede3bb7afe8889065dc8089a48d7e1285c63e7c43a205bd33d7cc0884',
     blockNumber: 11,
     from: '0x3f32e6ca9e7f433d0f5dea6b1024d3b0768e2dbf',
     to: '0x6bab62d945dfe3c862caf9a3b59c6c435f3de1d4',
     gasUsed: 50007,
     cumulativeGasUsed: 50007,
     contractAddress: null,
     logs: [],
     status: true,
     logsBloom: '0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000',
     rawLogs: [] },
  logs: [] }

【问题讨论】:

    标签: javascript solidity


    【解决方案1】:

    修改solidity函数为

    public view returns uint
    

    【讨论】:

    • 如果您想添加信息或以其他方式改进现有答案 (stackoverflow.com/a/63931934/7733418),请编辑现有答案,而不是添加另一个(非常短的)答案。否则,您可能会因为您只是重复使用另一个答案的解决方案核心而给您留下负面反馈的不那么细心的用户。
    • 您的答案可以通过额外的支持信息得到改进。请edit 添加更多详细信息,例如引用或文档,以便其他人可以确认您的答案是正确的。你可以找到更多关于如何写好答案的信息in the help center
    • Community Bot 绝对是不那么细心的用户之一......
    【解决方案2】:

    如果函数是视图,它必须返回整数,尝试纯修饰符或使用字符串。

    【讨论】:

    • 请更准确,添加示例代码。见How To Answer
    • 您是否知道您可以edit此答案帖子以添加信息、代码、解释或根据How to Answer进行其他改进?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-07-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-10-06
    相关资源
    最近更新 更多