Desenvolvimento de sistema Dapp de contrato inteligente (plano)

O DAPP é chamado de aplicativo distribuído e o DAPP é um aplicativo baseado na tecnologia blockchain. O DApp é executado em redes P2P de diferentes computadores, não em um computador. DApps existem desde o início das redes P2P. Na verdade, é um programa de software projetado para ser executado na Internet de uma forma que não é controlada por nenhuma entidade. Todos os dados em aplicativos descentralizados são armazenados em um razão distribuído. É impossível quebrar uma rede descentralizada.
Para se tornar um DApp blockchain, as seguintes condições devem ser atendidas: o
aplicativo deve ser totalmente de código aberto: ele deve ser executado de forma autônoma e nenhuma entidade controla a maioria de seus tokens. O aplicativo pode ajustar seu protocolo com base nas melhorias propostas e feedback do mercado, mas suas alterações finais devem ser baseadas no consenso do usuário.
Dados do aplicativo e registros de operação: devem ser criptografados e armazenados em nós de blockchain públicos e descentralizados para evitar qualquer ponto central de falha.
O aplicativo deve usar criptomoeda (bitcoin ou seu token de sistema) e fornecer certos incentivos de token aos mineiros.
O aplicativo deve gerar tokens com base em um algoritmo de criptografia padrão como prova de valor, e o nó está contribuindo para o aplicativo (o Bitcoin usa um algoritmo de prova de trabalho).

  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);
}

Acho que você gosta

Origin blog.csdn.net/m0_51754086/article/details/109290032
Recomendado
Clasificación