在完成登录注册的页面时,出现了错误。
提示Returned error: VM Exception while processing transaction: out of gas
或者是如下图
智能合约的代码为:
contract Dapp {
struct UserStruct{
string Iden;
address UserAddress;
string UserName;
string UserPassword;
string Name;
uint Phone;
string Address2;
uint index;//存地址组中的下标
}
address[] public Addresses;
UserStruct[] public UserList;
mapping(address => UserStruct) public AddToUser;
function isExitUserAddress(address a) public view returns(bool result){
if (Addresses.length == 0) return false;
return (Addresses[AddToUser[a].index] == a);
}
//判断用户地址是否存在,第一个想法是利用映射AddToUser,猜想如果不在应该是得到undefind,不是,不可以
//那只能先判断地址数组中是否含有,没有就提示,有的话再根据映射来找
function findWordByadd(address a) public view returns(string memory){
require(!isExitUserAddress(a));
return (AddToUser[a].UserPassword);
}
//通过用户账号找到用户的密码
function findActByadd(address a) public view returns(string memory){
require(!isExitUserAddress(a));
return AddToUser[a].Iden;
}
//创建用户,一个地址只能创建一个用户,先把地址存入地址数组,创建用户结构体对象,加入对象数组,并加入映射
function CreatUser(string memory a,address b,string memory c,string memory d,string memory e,uint f,string memory g) public returns(uint) {
require(!isExitUserAddress(b));
Addresses.push(b);
UserStruct memory us=UserStruct(a,b,c,d,e,f,g,Addresses.length-1);
UserList.push(us);
AddToUser[b]=us;
return Addresses.length;
}
//获取用户个人信息
function findUser(address _userAddress) public view returns (string memory,address,string memory,string memory,string memory,uint,string memory) {
require(isExitUserAddress(_userAddress));
return(
AddToUser[_userAddress].Iden,
AddToUser[_userAddress].UserAddress,
AddToUser[_userAddress].UserName,
AddToUser[_userAddress].UserPassword,
AddToUser[_userAddress].Name,
AddToUser[_userAddress].Phone,
AddToUser[_userAddress].Address2);
}
html中就是在点击注册按钮时完成创建用户的函数即可,但是一直报错,说因为from:这里说会消耗完Gas
contract.methods.CreatUser($("#iden").val(),$("#zhuce_add1").val(),$("#zhuce_I").val(),$("#zhuce_pass").val(),$("#zhuce_na").val(),$("#zhuce_ph").val(),$("#zhuce_add2").val()).send({from:$("#zhuce_add1").val()}).then(console.log);
只要是在创建用户结构体的方法里,将用户结构体添加到给用户结构体数组,以及赋值给用户账号地址到结构体的映射中,就会爆出错误。
VM exception while processing transaction :out of gas
gas耗尽的死循环
你想为交易设置更高的gas
您想调整 ContractForm 组件上的 sendArgs({gas:})。
https://www.trufflesuite.com/docs/drizzle/react/react-components#contractform
多看,多查,多改,铭记于心