我想将结构数组从固定更改为动态,当我从数组编译器中删除参数时抛出错误

问题描述

pragma solidity ^ 0.4.17;

合同签名{

struct signature {
    string value;
    uint rate;
    address sender_acc;
    
}

signature[5] public unverified_sig; // struct array is fixed but I want dynamic,if i del 5 then it 
                                    //gives error  mentioned in the end


function add_signature(string rec_signature) public {
    unverified_sig[0].sender_acc=msg.sender;
    unverified_sig[0].value=rec_signature;
    unverified_sig[0].rate=0;
}

}

输出错误: 交易到Signature.add_signature错误:VM错误:无效的操作码。无效的操作码可能引发了执行。调试事务以获取更多信息。

解决方法

您使用哪个版本的Solidity?我在Remix中使用0.5.0进行了编译。动态结构数组没有任何问题。但是,有一个警告是该功能的气体成本太高,将超过气体极限。

函数Storage.add_signature的气体需求是无限的:如果 功能的气体需求高于块气体极限,它 无法执行。请避免功能或动作出现循环 修改大面积存储空间(包括清除或复制) 存储阵列)

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...