在松露控制台中我正在执行以下语句,
result = token.balanceOf(accounts[1])
Run Code Online (Sandbox Code Playgroud)
该语句返回以下输出。
<BN: 8ac7230489e80000>
Run Code Online (Sandbox Code Playgroud)
正如这里所建议的,我正在尝试使用toNumber()and toString。但我收到以下错误。
result = token.balanceOf(accounts[1])
result.toString()
output: '[object Promise]'
result.toNumber()
TypeError: result.toNumber is not a function
Run Code Online (Sandbox Code Playgroud) 我正在尝试将 bytes 转换为 Solidity 的 uint256 。这是坚固性代码,
// SPDX-License-Identifier: MIT
pragma solidity 0.8.13;
contract Sample {
function getValue(bytes memory a) external pure returns(uint256 value) {
assembly {
value := mload(add(a, 0x20))
}
}
}
Run Code Online (Sandbox Code Playgroud)
ganache-cli然后我部署了我尝试在松露控制台中调用的代码getValue,如下所示:
(await contract.getValue(web3.utils.hexToBytes('0xa'))).toString()
Run Code Online (Sandbox Code Playgroud)
我预计值 10 将返回。但我收到以下错误,
Thrown:
TypeError: param.substring is not a function
at evalmachine.<anonymous>:1:19
at evalmachine.<anonymous>:2:49
at sigintHandlersWrap (vm.js:269:15)
at Script.runInContext (vm.js:124:14)
at runScript (/Users/xyz/.nvm/versions/node/v12.14.0/lib/node_modules/truffle/build/webpack:/packages/core/lib/console.js:366:1)
at Console.interpret (/Users/xyz/.nvm/versions/node/v12.14.0/lib/node_modules/truffle/build/webpack:/packages/core/lib/console.js:381:1)
at bound (domain.js:419:14)
at REPLServer.runBound [as eval] (domain.js:432:12)
at REPLServer.onLine (repl.js:715:10)
at REPLServer.emit (events.js:210:5) …Run Code Online (Sandbox Code Playgroud) 我们可以将资金从地址(此)转移到收件人。但是有没有什么方法可以将资金直接从 msg.sender 钱包转移到收件人呢?我无法在调用 payoutBonus 调用时设置 msg.value。因为我只能在 payoutBonus 方法中获得金额。
function payoutBonus(address recipient) public payable returns (bool) {
// bonus = calculateBonus();
//transfer this bonus to recipient from msg.sender;
return true;
}
Run Code Online (Sandbox Code Playgroud)