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
  • #580

Closed
Open
Opened Mar 16, 2023 by 云 俞@6463443592 of 19 tasks completed2/19 tasks

v2.1.0 升级 v2.3.1 合约执行结果与升级 v2.3.0 结果不一致

【问题分类】

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

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

4个节点v2.1.0 停机升级,分别用v2.3.0 和 v2.3.1 版本替换二进制,和lib库。执行合约结果不一致。 v2.3.0结果正确, v2.3.1和v2.1.0结果一致但是都不正确

升级前v2.1.0:

metod: charCodeAt    args: [0]   result: [48]   txid: 174cc6f172895830ca109de92b000e6ce6455331137d41ff9e4b8890be01eced 
metod: int2str    args: [22]   result: []   txid: 174cc6f19773c0e0ca38ec0c81b7e54c4ec20cb526dd43dfb036cd1cc7341be0 
metod: tokenURI    args: [22]   result: [hello world]   txid: 174cc6f1bb2937b8cad6ccae6a37d9cabc80535cca6d4f08af0e4e081b3479ed 

升级后 v2.3.0

metod: charCodeAt    args: [0]   result: [48]   txid: 174cc72f65992108ca088d36f7f8da2aad359630562a4374b009f2c8bb0bef94 
metod: int2str    args: [22]   result: [2]   txid: 174cc72f8f989fd8ca22740c5c0132745a264e57ae864973a39cd50caa6f7405 
metod: tokenURI    args: [22]   result: [hello world2]   txid: 174cc72f938ac198cac36fbccebf6ffb4f24844258b94da6908ddd9d577ee07f 

清空清空所有数据和进程重新部署v2.1.0 进行升级操作

升级后 v2.3.1

metod: charCodeAt    args: [0]   result: [48]   txid: 174cc7b4d718cd80caaf716212b16e9fe0e353d486cf42e79a7cd30bc8006b6d 
metod: int2str    args: [22]   result: []   txid: 174cc7b4f7753a00ca8b7c71e8aaefda681ad900cd204a41b31fd131a70ee053 
metod: tokenURI    args: [22]   result: [hello world]   txid: 174cc7b503a2e318ca235fe13b881f508ba16ac320be450781d76861ce9baa00

另外如果部署的是v2.3.0停机升级为 v2.3.1 ,结果是正确的。

附测试合约:

  • contracts_bug2_sol_BugSimple.bin
  • contracts_bug2_sol_BugSimple.abi
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;

contract BugSimple {
    string public _tokenURI = "hello world";

    // value < 10
    function int2str(uint256 value) public pure returns (string memory) {
        bytes memory buffer = new bytes(1);
        buffer[0] = bytes1(uint8(48 + uint256(value % 10)));
        return string(buffer);
    }

    function tokenURI(uint256 tokenId) public view returns (string memory) {
        return string(abi.encodePacked(_tokenURI, int2str(tokenId)));
    }

    function baseURI() public view returns (string memory) {
        return _tokenURI;
    }

    function charCodeAt(string memory str) public pure returns (uint256) {
        bytes memory b = bytes(str);
        return uint256(uint8(b[0]));
    }
}

具体的现象,操作步骤,前置条件等,尽可能描述清楚,有截图说明更佳

【相关日志文件】(如果有报错日志请贴图,或者上传附件)

chainmaker-go 的 log/system.log & bin/panic.log file *

SDK 的 sdk.log file

【系统信息】(请填写系统信息,方便定位问题)

  • chainmaker-go version * : [v2.1.0]
  • OS & version * :
  • docker镜像 version:
  • 管理台 version:
    • 如果是管理台的相关问题,请附带管理台版本,如果不是可忽略。
  • 区块浏览器 version:
    • 如果是浏览器的相关问题,请附带浏览器版本,如果不是可忽略。
  • 合约IDE version:
    • 如果是合约IDE的相关问题,请附带合约IDE版本,如果不是可忽略。
  • web签名插件 version:
    • 如果是web签名插件的相关问题,请附带web签名插件版本,如果不是可忽略。
Edited Mar 16, 2023 by 云 俞
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#580

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