solidity合约数据读取乱码
【问题分类】
- [] bug
- P2P网络相关(包含libp2p,liquid)
- 链账户身份与权限相关(证书问题、public、多签投票问题)
- 核心交易引擎相关(交易池、DAG)
- 共识相关
- 智能合约相关
- 存储相关
- SDK相关
- 长安链CMC工具
- 长安链管理台
- 长安链浏览器
- 长安链合约IDE
- 长安链web签名插件
- 跨链相关
- 轻节点相关
- 隐私计算相关
- 密码学相关
- 环境依赖
- 其他补充:
【问题描述】(请对问题进行描述,方便定位问题)
两个问题 1、通过evm部署的solidity合约。保存的Address类型数据的时候,浏览器读取的数据是乱码的。通过gosdk读取的数据也是乱码的,通过长安链管理平台或gosdk上链都一样,该如何处理呢?
2、保存string类型数据的时候,有大量的“\x00”的空字符。而且每次存不同的字符,存储的内容前都会有不一样的字符添加,不容易做字符裁剪。该如何处理呢?
合约如下:
//SPDX-License-Identifier: MIT
pragma solidity ^0.8.4;
contract LedgerBalance {
mapping(address => uint) public balances;
mapping(uint => address) public owners;
mapping(uint => string) public tokenURIs;
function setOwner(uint _id,address _to) public{
owners[_id]=_to;
}
function setMyBalance(uint _id) public {
balances[msg.sender] = _id;
}
function whoami() public view returns (address){
return msg.sender;
}
function getOwner(uint _id) public view returns (address) {
address own = owners[_id];
return own;
}
function setTokemURI(uint _id,string memory data) public {
tokenURIs[_id]=data;
}
function getTokemURI(uint _id) public view returns (string memory) {
string memory uria=tokenURIs[_id];
return uria;
}
function setBalance(uint _id, address _to) public {
balances[_to] = _id;
}
function getBalance(address _to) public view returns (uint256){
return balances[_to];
}
}
【相关日志文件】(如果有报错日志请贴图,或者上传附件)
【系统信息】(请填写系统信息,方便定位问题)
- chainmaker-go version * : [v2.3.2]
- **OS & version * :centos7
- **管理台 version:
To upload designs, you'll need to enable LFS and have an admin enable hashed storage. More information