WeBankBlockchain / WeBASE-Web

区块链中间件平台WeBASE管理平台
Apache License 2.0
49 stars 55 forks source link

发起交易页面上的solidity智能合约参数数据结构说明有误,误导用户 #499

Open AndyLvVip opened 1 year ago

AndyLvVip commented 1 year ago

版本:1.5.5

问题1:在页面上根本看不出下面这段话的转义符是什么

例如: set(bytes1[] a) -> ["0x12","0x34"];如果数组参数包含双引号,需转义,例如:set(string[] s) -> ["aaa"bbb","ccc"]。

问题2:struct里面的数组是不需要放在双引号内的,也就不存在双引号内的双引号需要转义问题

如set(StructA a) -> StructA{bool a, string[] b} -> [true,"["test string"]"]。struct中的数组需要放在双引号内,双引号内的双引号需要转义。

测试的智能合约

//SPDX-License-Identifier: UNLICENSED

pragma solidity >=0.6.0 <0.9.0;
pragma experimental ABIEncoderV2;

contract StructAContract {

    struct StructA {
        bool b;
        string[] a;
    }

    function testStruct(StructA memory a) public view returns (StructA memory s) {
        return a;
    }
}

测试通过的数据

[true, ["test string"]]