【发布时间】:2021-10-06 12:55:36
【问题描述】:
我正在努力创建一个可靠的彩票智能合约。我尝试了几种方法,首先我将所有玩家地址存储在一个数组中,但不幸的是,该逻辑失败,只是因为数组执行速度慢(当条目超过 1000 个时)。
现在我正在尝试映射mapping(address => Struct) entries;。现在我在这里做了什么。我创建了一个包含用户第一个票号和用户最后一个票号的结构,即uint userFstTcktNumber;
uint userLstTcktNumber;
这是我的结构
struct UserInfo {
uint userFstTcktNumber;
uint userLstTcktNumber;
} UserInfo userinfo;
然后我创建了一个映射
mapping(address => UserInfo ) public entry;
然后我创建了一个函数来输入映射和结构中的值。
function letsdo(uint first, uint last) public{
entry[msg.sender];
userinfo.userLstTcktNumber = first;
userinfo.userLstTcktNumber = last;
}
现在我想做什么?我只想从与地址对应的映射和结构中获取值,假设我有来自地址1 to 10 的 10 个条目"0x617F2E2fD72FD9D5503197092aC168c91465E7f2" 。我还有来自 11 to 51 的另外 50 个条目来自另一个地址 "0x14723A09ACff6D2A60DcdF7aA4AFf308FDDC160C"。
为了返回这个,我使用了函数
function get(address) public view returns(uint, uint){
return (userinfo.userFstTcktNumber, userinfo.userLstTcktNumber);
}
但它没有返回我预期的结果。
无论我在get() 中传递了什么地址,它总是返回userFstTcktNumber 为0。
这段代码有什么问题?
【问题讨论】: