// SPDX-License-Identifier: MIT
pragma solidity >=0.8.0;
interface IInvite {
function addRecord(address) external returns(bool);
function getParents(address) external view returns(address[2] memory);
function getChilds(address) external view returns(address[] memory);
function getInviteNum(address) external view returns(uint256[2] memory);
}
// SPDX-License-Identifier: MIT
pragma solidity >=0.8.0;
import './interfaces/IInvite.sol'; // 注意路径,我把所有的接口合约都放在了interfaces目录下
contract Invite is IInvite {
address public factory; // 记录合约发布者地址
mapping(address => address[]) public inviteRecords; // 邀请记录 邀请人地址 => 被邀请人地址数组
mapping(address => address) public parents; // 记录上级 我的地址 => 我的上级地址
mapping(address => uint256[2]) public inviteNumRecords; // 记录邀请数量 我的地址 => [邀请的一级用户数量,邀请的二级用户数量]
address public firstAddress; // 合约发布时需要初始化第一个用户地址,否则无法往下绑定用户
uint256 public totalPeople;
constructor() {