Blockchain 非预期反应

Blockchain 非预期反应,blockchain,ethereum,solidity,Blockchain,Ethereum,Solidity,在为投票区块链创建solidity类和ethers.js接口时,我得到了solidity意外响应 这里是solidity函数 function addVoter(string memory _email) public returns (string memory) { return string('test'); string memory key = random(_email); require(emailExists[key] == false); emailExist

在为投票区块链创建solidity类和ethers.js接口时,我得到了
solidity意外响应

这里是solidity函数

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;
}
该函数将创建一个新的“投票者”结构,并为其分配一个随机数

为了测试函数,在函数的开始处放置了一个返回值。

返回应该是系统响应

因此,我希望得到包含
“test”
字符串的内容。 相反,我得到了如下结果:

{ 散列:“0x2c9a61d3e903d706ca829d009d4fdd9f4c2972f17e7b0fb5e1c65b9a0f73436d”, 区块散列:“0x690948bea16c079b1ba33a0c79aa76e987b828e92aebacc477ec6f6a9152416e”, 区块编号:266, transactionIndex:0, 确认:1, 发件人:“0x6002D48140d30B26C0B8A7B77D7Fa11A41a61a9F”, gasPrice:BigNumber{u hex:'0x4a817c800'}, gasLimit:BigNumber{u hex:'0x5a53'}, 至:“0xaa0E1b62f1de3fdEC6474FFb78714b18b5477e4b”, 值:BigNumber{u hex:'0x0'}, 暂时:227, 数据:“0xACA848920000000000000000000000000…”, r:'0xE9AEF9A34B805240A4450845A640153292578B122CE487604ED3E4F135F70A3', s:'0x0EDDC482B19115E983018E4B9FE1541B35096FF61C581C559CC54F153527AE8', 五:27,, 创建:null, 原始:“0xf8ca81e38504a817c800825a5394aa0e1b62f…”, 网络ID:0, 等待:[函数] }

以上是使用ethers.js构建以下函数的结果

contract.addVoter('some_email').then((par) => {
    registered = par;
    console.log(par);
});
问题是,我们是否在代码中做了错误的事情,或者我们是否误解了什么

  • 在智能合约中,将该值存储在变量中,并在交易确认后使用
    call
    获取该值

  • 使用
    事件
    记录该值


  • 好的,但是我该怎么做呢?文档把我弄糊涂了。好吧,我找到了一种实现你提出的存储和调用方法的方法。