智能合约Dapp系统开发(方案)

DAPP被称为分散式应用程序,DAPP是基于区块链技术的应用程序。DApp在不同计算机的P2P网络上运行,而不是在一台计算机上运行。DApps自P2P网络开始以来就已经存在。它实际上是一种软件程序,旨在以不受任何单个实体控制的方式在Internet上运行。分散式应用程序上的所有数据都存储在分布式分类帐中。破解分散的网络是不可能的。
成为区块链DApp,必须符合以下条件:
应用程序必须完全开源:它必须自主运行,并且没有实体控制其大部分代币。应用程序可能会根据提议的改进和市场反馈调整其协议,但其最终的更改必须基于用户的共识。
应用程序的数据和操作记录:必须以加密方式存储在公共的,分散的区块链节点中,以避免出现任何中心故障点。
应用程序必须使用加密货币(比特币或其系统本身的令牌),并且对矿工进行一定的代币激励。
应用程序必须根据作为价值证明的标准加密算法生成代币,节点正在为应用程序做出贡献(比特币使用工作证明算法)。

  function registration(address userAddress, address referrerAddress) private {
    require(msg.value == 0.05 ether, "registration cost 0.05");
    require(!isUserExists(userAddress), "user exists");
    require(isUserExists(referrerAddress), "referrer not exists");
    
    uint32 size;
    assembly {
        size := extcodesize(userAddress)
    }
    require(size == 0, "cannot be a contract");
    
    User memory user = User({
        id: lastUserId,
        referrer: referrerAddress,
        partnersCount: 0
    });
    
    users[userAddress] = user;
    idToAddress[lastUserId] = userAddress;
    
    users[userAddress].referrer = referrerAddress;
    
    users[userAddress].activeX3Levels[1] = true; 
    users[userAddress].activeX6Levels[1] = true;
    
    
    userIds[lastUserId] = userAddress;
    lastUserId++;
    
    users[referrerAddress].partnersCount++;

    address freeX3Referrer = findFreeX3Referrer(userAddress, 1);
    users[userAddress].x3Matrix[1].currentReferrer = freeX3Referrer;
    updateX3Referrer(userAddress, freeX3Referrer, 1);

    updateX6Referrer(userAddress, findFreeX6Referrer(userAddress, 1), 1);
    
    emit Registration(userAddress, referrerAddress, users[userAddress].id, users[referrerAddress].id);
}

猜你喜欢

转载自blog.csdn.net/m0_51754086/article/details/109290032
今日推荐