DAPP区块链公排互助系统开发丨技术分析搭建
2023-06-13 09:14:40 时间
UserStruct memory userStruct;
currUserID++;
userStruct = UserStruct({
isExist: true,
id: currUserID,
referrerID: 0,
referral: new address[](0)
});
users[ownerWallet] = userStruct;
userList[currUserID] = ownerWallet;
for(uint i = 1; i <= 10; i++) {
users[ownerWallet].levelExpired[i] = 55555555555;
}
}
function () external payable {
uint level;
if(msg.value == LEVEL_PRICE[1]) level = 1;
else if(msg.value == LEVEL_PRICE[2]) level = 2;
else if(msg.value == LEVEL_PRICE[3]) level = 3;
else if(msg.value == LEVEL_PRICE[4]) level = 4;
else if(msg.value == LEVEL_PRICE[5]) level = 5;
else if(msg.value == LEVEL_PRICE[6]) level = 6;
else if(msg.value == LEVEL_PRICE[7]) level = 7;
else if(msg.value == LEVEL_PRICE[8]) level = 8;
else if(msg.value == LEVEL_PRICE[9]) level = 9;
else if(msg.value == LEVEL_PRICE[10]) level = 10;
else revert('Incorrect Value send');
if(users[msg.sender].isExist) buyLevel(level);
else if(level == 1) {
uint refId = 0;
address referrer = bytesToAddress(msg.data);
if(users[referrer].isExist) refId = users[referrer].id;
else revert('Incorrect referrer');
regUser(refId);
}
else revert('Please buy first level for 0.03 ETH');
}
function regUser(uint _referrerID) public payable {
require(address(oldSC) == address(0), 'Initialize not finished');
require(!users[msg.sender].isExist, 'User exist');
require(_referrerID > 0 && _referrerID <= currUserID, 'Incorrect referrer Id');
require(msg.value == LEVEL_PRICE[1], 'Incorrect Value');
if(users[userList[_referrerID]].referral.length >= REFERRER_1_LEVEL_LIMIT) _referrerID = users[findFreeReferrer(userList[_referrerID])].id;
UserStruct memory userStruct;
currUserID++;
userStruct = UserStruct({
isExist: true,
id: currUserID,
referrerID: _referrerID,
referral: new address[](0)
});
users[msg.sender] = userStruct;
userList[currUserID] = msg.sender;
users[msg.sender].levelExpired[1] = now + PERIOD_LENGTH;
users[userList[_referrerID]].referral.push(msg.sender);
payForLevel(1, msg.sender);
emit regLevelEvent(msg.sender, userList[_referrerID], now);
}
function buyLevel(uint _level) public payable {
require(users[msg.sender].isExist, 'User not exist');
require(_level > 0 && _level <= 10, 'Incorrect level');
if(_level == 1) {
require(msg.value == LEVEL_PRICE[1], 'Incorrect Value');
users[msg.sender].levelExpired[1] += PERIOD_LENGTH;
}
else {
require(msg.value == LEVEL_PRICE[_level], 'Incorrect Value');
for(uint l =_level - 1; l > 0; l--) require(users[msg.sender].levelExpired[l] >= now, 'Buy the previous level');
if(users[msg.sender].levelExpired[_level] == 0) users[msg.sender].levelExpired[_level] = now + PERIOD_LENGTH;
else users[msg.sender].levelExpired[_level] += PERIOD_LENGTH;
}
payForLevel(_level, msg.sender);
emit buyLevelEvent(msg.sender, _level, now);
}
function syncWithOldSC(uint limit) public {
require(address(oldSC) != address(0), 'Initialize closed');
require(msg.sender == ownerWallet, 'Access denied');
for(uint i = 0; i < limit; i++) {
address user = oldSC.userList(oldSCUserId);
(bool isExist,, uint referrerID) = oldSC.users(user);
if(isExist) {
oldSCUserId++;
address ref = oldSC.userList(referrerID);
if(!users[user].isExist && users[ref].isExist) {
users[user].isExist = true;
users[user].id = ++currUserID;
users[user].referrerID = users[ref].id;
相关文章
- 区块链技术在消费电子产品追溯系统中的应用
- web3.0+区块链dapp开发应用技术详细介绍
- 区块链学习(1)密钥,公钥和地址详解大数据
- minerLinux启动Ethminer:迈向区块链挖矿自由!(linux启动eth)
- 高盛加入区块链战局,目标是外汇交易
- 中国银行前行长李礼辉:全球区块链金融技术和监管还没有规模化的准备
- 工信部区块链论坛 | 乐视金融CEO王永利:区块链技术研发和应用的实践经验
- 区块链技术又添新拥趸,韩国交易所推创业公司股份交易平台
- 吕旭军:如何打造区块链数字资产交易?| 雷锋网公开课
- 巴黎银行联合安盛研发区块链基金分发平台,预计今年正式发布
- 专访| 普华永道合伙人季瑞华:技术不是区块链落地困难的关键,难在行业共识
- 以后提起贵州的象征,除了茅台可能就是区块链 | 数博会2017
- 北航蔡维德:区块链 新计算基础设施 | CCF-GAIR 2017
- 同步重塑Redis主从同步释放数据区块链潜力(修改redis 主从)
- IT巨头富士通发布新技术,帮助区块链验证源呼叫,防止“伪造交易源”
- 塞拉利昂利用区块链追踪选举结果,区块链史上首次参与到了政府选举中
- 王健林搅局区块链?万达:先与Centrality技术合作,不牵扯任何ICO
- 工信部:筹建全国首个区块链和分布式记账标准化技术委员会
- 中英金融科技论坛:监管科技增长较快 区块链等新技术挑战监管能力
- 基于微软Azure技术,全球首个区块链投资产品发布
- 中钞发布区块链技术平台,主攻信息公示资产登记两大场景
- 人民日报:人大法学院将积极回应区块链等新技术对法律制度的挑战
- 比特大陆吴忌寒:未来十年区块链技术发展的8大课题
- 孙启超:支撑区块链中的底层查询系统 | AI 研习社第 57 期猿桌会
- 区块链技术+共享经济,斐讯带来的不只是概念!
- 首批区块链信息服务备案清单出炉,共197个服务在列
- 消息称微软希望利用以太坊区块链来打击盗版Windows和Office
- 国务院陈道富:数字货币本质并非区块链技术,监管前先认清这四点
- 行业 | 区块链技术演进简史:人才都去了哪儿?最受开发欢迎的编程语言是?(下)