如何将智能合约返回的地址转换为可读字符串?
Posted
技术标签:
【中文标题】如何将智能合约返回的地址转换为可读字符串?【英文标题】:How do I convert the address returned from my smart contract into a readable string? 【发布时间】:2019-06-05 13:58:21 【问题描述】:我有一个返回地址的简单 get 函数。在JS的前端,我想把这个地址转换成某种可读的函数,也就是一个字符串。
迁移我的合约后,我使用 web3 使用函数返回地址。但是,我在阅读它时遇到了麻烦。我希望避免将其转换为 .sol 文件中的字符串,以避免不必要的气体使用。
这是智能合约中的功能
function getBookAccounts() public returns(address)
return bookAccount;
这是试图通过控制台记录地址的 JS 文件
async showAccounts()
const contract = require('truffle-contract')
const simpleStorage = contract(SimpleStorageContract)
simpleStorage.setProvider(this.state.web3.currentProvider)
var currAccount = await this.simpleStorageInstance.getBookAccounts();
console.log('The address is ', currAccount)
很遗憾,我无法打印此地址。我猜我需要将它转换为字符串,而不是像solidity中使用的UTF8。
【问题讨论】:
【参考方案1】:确保您的 Solidity 函数被标记为 view
。否则 web3.js 的默认行为是发送一个事务,你可能会得到一个事务哈希。 (交易没有返回值。)
function getBookAccounts() public view returns (address)
如果您将函数更改为视图,web3.js 应该进行调用,而不是发送事务。这更快,不需要gas,并且可以返回一个值。
【讨论】:
是的,成功了。我不必像我想的那样将地址转换为字符串。以上是关于如何将智能合约返回的地址转换为可读字符串?的主要内容,如果未能解决你的问题,请参考以下文章