使用web3.js调用智能合约,string长度受限?
发布于 1 个月前 作者 fastbee 162 次浏览 来自 以太坊

我写了个智能合约,里面有个function,可以接受string类型的数据,当前台传入的字符串稍微长一点(大概40个字符,其实也不长),就调用不成功,没反应。

struct poorer2{ bytes32 name; string info; }

uint s = 0;
mapping (uint => poorer2) public Poorers2;

function addPoorer2(bytes32 name,string info)returns (bool b){
	Poorers2[s++] = poorer2(name,info);
	AddPoorer2(name,info);
	return true;
}
7 回复

你是说第一个参数还是第二?

@路人-戊 第二个参数,info。很奇怪字符串一长,就插不到mapping中。但是我在remix brower中试过了是没问题的, 我是通过geth来连接truffle的。然后部署了个合约。geth我通过创世块搭建了私有链,也给gasLimit调大了,其他情况没找到。

@路人-戊 请问下,你见过这类问题吗?我暂时还没解决。。。

@fastbee 没,google下看看

我遇到过类似问题,是out of gas了,你调用函数的时候把gas设大一点试试,不仅仅是改创世区块的gaslimit

@VickyYH 我刚看到你的回复。…我最早的时候也是报这个错,网页console中会显示out of gas,但是我后来把创世区块的gasLimit调到了最大,后面就没有报错了,但是插入没反应,查询没结果。 你是怎么做的呢? “gasLimit”:“0xffffffff”

@fastbee 调用函数的时候添加gas参数,例子youCon.addPoorer2.sendTransaction(“参数1”,“参数2”,{from:web3.eth.accounts[0],gas:3000000})

回到顶部