问题描述
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的气体需求是无限的:如果 功能的气体需求高于块气体极限,它 无法执行。请避免功能或动作出现循环 修改大面积存储空间(包括清除或复制) 存储阵列)