Solidity 意外响应
Solidity unexpected response
我正在 solidity unexpected response
创建一个实体 class 和一个与 ethers.js 的接口用于投票区块链
这是稳固函数
function addVoter(string memory _email) public returns (string memory) {
return string('test');
string memory key = random(_email);
require(emailExists[key] == false);
emailExists[key] = true;
voters[key] = Voter({auth_code:key, authorized:true, candidate_id:0, email:_email, voted:false, voter_address:msg.sender});
return key;
}
该函数将创建一个新的 "Voter" 结构并为其分配一个随机数。
要测试函数,请在函数的开头放置 return。
return应该是系统响应。
所以我希望得到包含 "test"
字符串的东西。
相反,我得到如下内容:
{
hash: '0x2c9a61d3e903d706ca829d009d4fdd9f4c2972f17e7b0fb5e1c65b9a0f73436d',
blockHash: '0x690948bea16c079b1ba33a0c79aa76e987b828e92aebacc477ec6f6a9152416e',
blockNumber: 266,
transactionIndex: 0,
confirmations: 1,
from: '0x6002D48140d30B26C0B8A7B77D7Fa11A41a61a9F',
gasPrice: BigNumber { _hex: '0x4a817c800' },
gasLimit: BigNumber { _hex: '0x5a53' },
to: '0xaa0E1b62f1de3fdEC6474FFb78714b18b5477e4b',
value: BigNumber { _hex: '0x0' },
nonce: 227,
data: '0xaca84892000000000000000000000000000000000000...',
r: '0xe9aef9a334b805240a4450845a640153292578b122ce487604ed3e4f135f70a3',
s: '0x0eddc482b19115e983018e4b9fe1541b325096ff61c581c559cc54f153527ae8',
v: 27,
creates: null,
raw: '0xf8ca81e38504a817c800825a5394aa0e1b62f...',
networkId: 0,
wait: [Function]
}
以上是用ethers.js
构建以下函数的结果
contract.addVoter('some_email').then((par) => {
registered = par;
console.log(par);
});
问题是,我们是在代码中做错了什么还是误解了什么?
在智能合约中,将该值存储在变量中,并在交易确认后使用call
获取该值。
使用event
记录值
我正在 solidity unexpected response
创建一个实体 class 和一个与 ethers.js 的接口用于投票区块链
这是稳固函数
function addVoter(string memory _email) public returns (string memory) {
return string('test');
string memory key = random(_email);
require(emailExists[key] == false);
emailExists[key] = true;
voters[key] = Voter({auth_code:key, authorized:true, candidate_id:0, email:_email, voted:false, voter_address:msg.sender});
return key;
}
该函数将创建一个新的 "Voter" 结构并为其分配一个随机数。
要测试函数,请在函数的开头放置 return。
return应该是系统响应。
所以我希望得到包含 "test"
字符串的东西。
相反,我得到如下内容:
{ hash: '0x2c9a61d3e903d706ca829d009d4fdd9f4c2972f17e7b0fb5e1c65b9a0f73436d', blockHash: '0x690948bea16c079b1ba33a0c79aa76e987b828e92aebacc477ec6f6a9152416e', blockNumber: 266, transactionIndex: 0, confirmations: 1, from: '0x6002D48140d30B26C0B8A7B77D7Fa11A41a61a9F', gasPrice: BigNumber { _hex: '0x4a817c800' }, gasLimit: BigNumber { _hex: '0x5a53' }, to: '0xaa0E1b62f1de3fdEC6474FFb78714b18b5477e4b', value: BigNumber { _hex: '0x0' }, nonce: 227, data: '0xaca84892000000000000000000000000000000000000...', r: '0xe9aef9a334b805240a4450845a640153292578b122ce487604ed3e4f135f70a3', s: '0x0eddc482b19115e983018e4b9fe1541b325096ff61c581c559cc54f153527ae8', v: 27, creates: null, raw: '0xf8ca81e38504a817c800825a5394aa0e1b62f...', networkId: 0, wait: [Function] }
以上是用ethers.js
构建以下函数的结果contract.addVoter('some_email').then((par) => {
registered = par;
console.log(par);
});
问题是,我们是在代码中做错了什么还是误解了什么?
在智能合约中,将该值存储在变量中,并在交易确认后使用
call
获取该值。使用
event
记录值