Skip to content

GitLab

  • Projects
  • Groups
  • Snippets
  • Help
    • Loading...
  • Sign in
issue
issue
  • Project overview
    • Project overview
    • Details
    • Activity
    • Releases
  • Repository
    • Repository
    • Files
    • Commits
    • Branches
    • Tags
    • Contributors
    • Graph
    • Compare
  • Issues 23
    • Issues 23
    • List
    • Boards
    • Labels
    • Service Desk
    • Milestones
  • Wiki
    • Wiki
  • Snippets
    • Snippets
  • Members
    • Members
  • Activity
  • Graph
  • Create a new issue
  • Commits
  • Issue Boards
Collapse sidebar

新注册的用户请输入邮箱并保存,随后登录邮箱激活账号。后续可直接使用邮箱登录!

  • chainmaker
  • issueissue
  • Issues
  • #977

Closed
Open
Opened Jan 17, 2024 by jayson luk@VBAA1 of 18 tasks completed1/18 tasks

solidity合约数据读取乱码

【问题分类】

  • [] bug
  • P2P网络相关(包含libp2p,liquid)
  • 链账户身份与权限相关(证书问题、public、多签投票问题)
  • 核心交易引擎相关(交易池、DAG)
  • 共识相关
  • 智能合约相关
  • 存储相关
  • SDK相关
  • 长安链CMC工具
  • 长安链管理台
  • 长安链浏览器
  • 长安链合约IDE
  • 长安链web签名插件
  • 跨链相关
  • 轻节点相关
  • 隐私计算相关
  • 密码学相关
  • 环境依赖
  • 其他补充:

【问题描述】(请对问题进行描述,方便定位问题)

两个问题 1、通过evm部署的solidity合约。保存的Address类型数据的时候,浏览器读取的数据是乱码的。通过gosdk读取的数据也是乱码的,通过长安链管理平台或gosdk上链都一样,该如何处理呢?

image

image

2、保存string类型数据的时候,有大量的“\x00”的空字符。而且每次存不同的字符,存储的内容前都会有不一样的字符添加,不容易做字符裁剪。该如何处理呢?

image

合约如下:

//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:
Edited Jan 17, 2024 by jayson luk
To upload designs, you'll need to enable LFS and have an admin enable hashed storage. More information
Assignee
Assign to
None
Milestone
None
Assign milestone
Time tracking
None
Due date
None
Reference: chainmaker/issue#977

Copyright © 2021 ChainMaker Org. All Rights Reserved. 长安链 版权所有。