智慧合約Dapp系統開發(方案)

2020-10-28 20:00:59

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