我有一份合同如下-
contract getSchwifty {
string internal constant seeWhatYouGot = "I want to see what you got!";
string internal contestResult;
mapping(uint=>string) Record;
// Contract constructor that takes a string param
function getSchwifty(string _contestResult) public {
contestResult = _contestResult;
}
function addRecord(uint id, string hashData) public {
Record[id] = hashData;
}
function getRecord(uint id) public returns (string) {
return Record[id];
}
function showMeWhatYouGot() external pure returns (string) {
return seeWhatYouGot;
}
function enterContest(string _contestEntry) external view returns (string) {
// completely disregard the _contestEntry ;)
return contestResult;
}
}我使用web3客户端部署这个契约,然后尝试调用addRecord和getRecord函数。当我使用method.send()执行此操作时,没有发现任何错误:
simpleContract.methods.getRecord(123).send({from: '0xAA74487ec1cA68932baC64dF05d27a9CA6f8e156'}).then(console.log,console.log)
Promise {
<pending>,
domain:
Domain {
domain: null,
_events: { error: [Function: debugDomainError] },
_eventsCount: 1,
_maxListeners: undefined,
members: [] } }
> { blockHash: '0xeb3d7f287dd6da1dc824c2c433185db12e6292f4592894cdd6c82d6678c787f3',
blockNumber: 12065,
contractAddress: null,
cumulativeGasUsed: 21464,
from: '0xaa74487ec1ca68932bac64df05d27a9ca6f8e156',
gasUsed: 21464,
logsBloom: '0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000',
root: '0x696db44230e2701d1840643dee2543f58cb7ed042d75edba0c1e3ce739e76932',
to: '0x6ee9957aef5f4073c6af71441ec7962527c37674',
transactionHash: '0x46c4cb28ce7b0c99d91c6744ad12f29585ae215f048378270e8dcb252b093c03',
transactionIndex: 0,
events: {} }但是,我想查看getRecord的实际结果,因此使用method.call()尝试了getRecord函数。现在我看到一个错误。
simpleContract.methods.getRecord(123).call({from: '0xAA74487ec1cA68932baC64dF05d27a9CA6f8e156',gas: 0x66A84}).then(console.log,console.log)
Promise {
<pending>,
domain:
Domain {
domain: null,
_events: { error: [Function: debugDomainError] },
_eventsCount: 1,
_maxListeners: undefined,
members: [] } }
> Error: Returned values aren't valid, did it run Out of Gas?
at ABICoder.decodeParameters (/node_modules/web3-eth-abi/src/index.js:226:15)
at Contract._decodeMethodReturn (/node_modules/web3-eth-contract/src/index.js:465:22)
at Method.outputFormatter (/node_modules/web3-eth-contract/src/index.js:818:46)
at Method.formatOutput (/node_modules/web3-core-method/src/index.js:163:54)
at sendTxCallback (/node_modules/web3-core-method/src/index.js:473:33)
at /node_modules/web3-core-requestmanager/src/index.js:147:9
at XMLHttpRequest.request.onreadystatechange (/node_modules/web3-providers-http/src/index.js:91:13)
at XMLHttpRequestEventTarget.dispatchEvent (/node_modules/xhr2-cookies/dist/xml-http-request-event-target.js:34:22)
at XMLHttpRequest._setReadyState (/node_modules/xhr2-cookies/dist/xml-http-request.js:208:14)
at XMLHttpRequest._onHttpResponseEnd (/node_modules/xhr2-cookies/dist/xml-http-request.js:318:14)
at IncomingMessage.<anonymous> (/node_modules/xhr2-cookies/dist/xml-http-request.js:289:61)
at emitNone (events.js:111:20)
at IncomingMessage.emit (events.js:208:7)
at endReadableNT (_stream_readable.js:1064:12)
at _combinedTickCallback (internal/process/next_tick.js:138:11)
at process._tickDomainCallback (internal/process/next_tick.js:218:9)不确定,这个错误意味着什么。我对气体限制很满意: gasLimit: 67790268488,
有几个问题-
提前谢谢。技术冠军
发布于 2018-10-16 17:45:07
function getRecord(uint id) external view returns (string) {
return Record[id];
}请参阅承诺-事件
https://ethereum.stackexchange.com/questions/60666
复制相似问题