TronChainスマートコントラクトシステムの開発と作成

パブリックチェーン:パブリックチェーンは、世界中の誰でも読み取ることができるブロックチェーンです。世界中の誰もがトランザクションを送信して、トランザクションが有効かどうかを確認できます。世界中の誰もがコンセンサスプロセスに参加できます。転送するブロックを決定します。チェーンに追加するプロセスと現在の状態は何ですか。集中型または準集中型の信頼に代わるものとして、パブリックチェーンは暗号経済学によって保護されています-一般原則、つまり誰かが持つことができるコンセンサスの程度に従って、仕事の証明または公平性の証明およびその他のメカニズムを使用して、経済的インセンティブと暗号化検証の組み合わせプロセスの影響は、使用できる経済的リソースの量に比例します。これらのブロックチェーンは、一般に「完全に分散化されている」と見なされます。

TronChain TRON:
スマートコントラクトテクノロジーに基づいて構築され、人々によって、そして人々のために構築されたDeFiサポートモデル。
これは、世界で最も透過的で、最もp2pで、最も分散化されたサポートシステムです
。TronChainTRONスマートコントラクトは、すべての人のために設計されています。 TRONブロックチェーンとスマートコントラクトテクノロジーに完全に基づいたDeFiサポートファンドを提供します。
参加者は誰でもTRXをコミュニティファンドに寄付し、TRONCHAINコミュニティメンバーをサポートすることができます。そうすることで、契約コードがアクティブになり、サポーターはコミュニティメンバー自身からのサポートを受け始めます。
これは100%分散型であり、コミュニティベースのプロジェクトです。これは、このプロジェクトに保証や追加の利益がないことを意味します。
これはP2Pサポートモデルであるため、TRONCHAINから受け取るすべての情報は他のコミュニティメンバーから受け取ります。
あなたは他の人をサポートし、他の人はあなたをサポートします。
アルゴリズムコードに基づいて、分散型の「サードパーティ」と見なすことができ、誰もが公平、透明、公正であることが保証されます。
仲介者や仲介者、管理者、会社や人間の相互作用はありません。
スマート契約のルールに従って、参加しているすべてのパートナーとパートナーの資金の公平性を効果的に保証します。

プログラミング言語とプログラム
スマートコントラクトを作成するには、スマートコントラクト言語(SCL)を使用する必要があります。これらは、スマートコントラクトを直接作成するか、スマートコントラクトにコンパイルするプログラミング言語です。Solidityは、Ethereum仮想マシン上で実行されるスマートコントラクトを作成するためのプログラミング言語です。これは、JavaScriptに似た構文を持つ高レベルの契約指向言語であり、主にEthereumEVMを対象としています。
Ethereum Virtual Machine(EVM)は、Ethereumでのスマートコントラクトのオペレーティング環境です。実際には完全に分離されています。つまり、EVMで実行されているコードは、ネットワーク、ファイルシステム、およびその他のプロセスにアクセスできません。スマートコントラクトは、他のスマートコントラクトへのアクセスが制限されており、ブロックチェーンネットワーク上で独立して動作します。
Ethereumネットワークでスマートコントラクトを
作成するに
は、高レベルのEthereum言語で作成する、EVMコンパイラを使用してバイトコードにコンパイル
する、Ethereumクライアントによってブロックチェーンネットワークにアップロードするという3つの主要なステップがあります
。よく知られているリソースの1つはGitHubです。これは、開発者がソフトウェアコードをホストするためのオンラインプラットフォームです。コードの各部分はリポジトリに保存されます。リポジトリは基本的に、すべてのコードコンポーネントを保存するフォルダです。
多くの人は、他の人のリポジトリをコピーして自分のアカウントに貼り付けてから、自分のものになるように微調整を行います。独自のプロジェクトの構築に役立つプロジェクトとリポジトリを検索して、ページを参照します。必要なリポジトリを見つけて開き、コンテンツを検索すると、便利なコードを含む複雑なコンテンツが多数含まれます。上記のプログラムとリソースを使用して、独自のスマート契約を作成することもできます。
スマートコントラクトはSCLで記述され、Ethereumスマートコントラクト機能はEthereum仮想マシンに帰属します。これは、Ethereumでのスマートコントラクトの運用環境です。

プラグマの堅牢性> = 0.4.23 <0.6.0;

契約SmartMatrixForsage {

struct User {
    uint id;
    address referrer;
    uint partnersCount;
    
    mapping(uint8 => bool) activeX3Levels;
    mapping(uint8 => bool) activeX6Levels;
    
    mapping(uint8 => X3) x3Matrix;
    mapping(uint8 => X6) x6Matrix;
}

struct X3 {
    address currentReferrer;
    address[] referrals;
    bool blocked;
    uint reinvestCount;
}

struct X6 {
    address currentReferrer;
    address[] firstLevelReferrals;
    address[] secondLevelReferrals;
    bool blocked;
    uint reinvestCount;

    address closedPart;
}

uint8 public constant LAST_LEVEL = 12;

mapping(address => User) public users;
mapping(uint => address) public idToAddress;
mapping(uint => address) public userIds;
mapping(address => uint) public balances; 

uint public lastUserId = 2;
address public owner;

mapping(uint8 => uint) public levelPrice;

event Registration(address indexed user, address indexed referrer, uint indexed userId, uint referrerId);
event Reinvest(address indexed user, address indexed currentReferrer, address indexed caller, uint8 matrix, uint8 level);
event Upgrade(address indexed user, address indexed referrer, uint8 matrix, uint8 level);
event NewUserPlace(address indexed user, address indexed referrer, uint8 matrix, uint8 level, uint8 place);
event MissedEthReceive(address indexed receiver, address indexed from, uint8 matrix, uint8 level);
event SentExtraEthDividends(address indexed from, address indexed receiver, uint8 matrix, uint8 level);


constructor(address ownerAddress) public {
    levelPrice[1] = 0.025 ether;
    for (uint8 i = 2; i <= LAST_LEVEL; i++) {
        levelPrice[i] = levelPrice[i-1] * 2;
    }
    
    owner = ownerAddress;
    
    User memory user = User({
        id: 1,
        referrer: address(0),
        partnersCount: uint(0)
    });
    
    users[ownerAddress] = user;
    idToAddress[1] = ownerAddress;
    
    for (uint8 i = 1; i <= LAST_LEVEL; i++) {
        users[ownerAddress].activeX3Levels[i] = true;
        users[ownerAddress].activeX6Levels[i] = true;
    }
    
    userIds[1] = ownerAddress;
}

function() external payable {
    if(msg.data.length == 0) {
        return registration(msg.sender, owner);
    }
    
    registration(msg.sender, bytesToAddress(msg.data));
}

function registrationExt(address referrerAddress) external payable {
    registration(msg.sender, referrerAddress);
}

function buyNewLevel(uint8 matrix, uint8 level) external payable {
    require(isUserExists(msg.sender), "user is not exists. Register first.");
    require(matrix == 1 || matrix == 2, "invalid matrix");
    require(msg.value == levelPrice[level], "invalid price");
    require(level > 1 && level <= LAST_LEVEL, "invalid level");

    if (matrix == 1) {
        require(!users[msg.sender].activeX3Levels[level], "level already activated");

        if (users[msg.sender].x3Matrix[level-1].blocked) {
            users[msg.sender].x3Matrix[level-1].blocked = false;
        }

        address freeX3Referrer = findFreeX3Referrer(msg.sender, level);
        users[msg.sender].x3Matrix[level].currentReferrer = freeX3Referrer;
        users[msg.sender].activeX3Levels[level] = true;
        updateX3Referrer(msg.sender, freeX3Referrer, level);
        
        emit Upgrade(msg.sender, freeX3Referrer, 1, level);

    } else {
        require(!users[msg.sender].activeX6Levels[level], "level already activated"); 

        if (users[msg.sender].x6Matrix[level-1].blocked) {
            users[msg.sender].x6Matrix[level-1].blocked = false;
        }

        address freeX6Referrer = findFreeX6Referrer(msg.sender, level);
        
        users[msg.sender].activeX6Levels[level] = true;
        updateX6Referrer(msg.sender, freeX6Referrer, level);
        
        emit Upgrade(msg.sender, freeX6Referrer, 2, level);
    }
}    
pragma solidity >=0.4.23 <0.6.0;

契約SmartMatrixForsage {

struct User {
    uint id;
    address referrer;
    uint partnersCount;
    
    mapping(uint8 => bool) activeX3Levels;
    mapping(uint8 => bool) activeX6Levels;
    
    mapping(uint8 => X3) x3Matrix;
    mapping(uint8 => X6) x6Matrix;
}

struct X3 {
    address currentReferrer;
    address[] referrals;
    bool blocked;
    uint reinvestCount;
}

struct X6 {
    address currentReferrer;
    address[] firstLevelReferrals;
    address[] secondLevelReferrals;
    bool blocked;
    uint reinvestCount;

    address closedPart;
}

uint8 public constant LAST_LEVEL = 12;

mapping(address => User) public users;
mapping(uint => address) public idToAddress;
mapping(uint => address) public userIds;
mapping(address => uint) public balances; 

uint public lastUserId = 2;
address public owner;

mapping(uint8 => uint) public levelPrice;

event Registration(address indexed user, address indexed referrer, uint indexed userId, uint referrerId);
event Reinvest(address indexed user, address indexed currentReferrer, address indexed caller, uint8 matrix, uint8 level);
event Upgrade(address indexed user, address indexed referrer, uint8 matrix, uint8 level);
event NewUserPlace(address indexed user, address indexed referrer, uint8 matrix, uint8 level, uint8 place);
event MissedEthReceive(address indexed receiver, address indexed from, uint8 matrix, uint8 level);
event SentExtraEthDividends(address indexed from, address indexed receiver, uint8 matrix, uint8 level);


constructor(address ownerAddress) public {
    levelPrice[1] = 0.025 ether;
    for (uint8 i = 2; i <= LAST_LEVEL; i++) {
        levelPrice[i] = levelPrice[i-1] * 2;
    }
    
    owner = ownerAddress;
    
    User memory user = User({
        id: 1,
        referrer: address(0),
        partnersCount: uint(0)
    });
    
    users[ownerAddress] = user;
    idToAddress[1] = ownerAddress;
    
    for (uint8 i = 1; i <= LAST_LEVEL; i++) {
        users[ownerAddress].activeX3Levels[i] = true;
        users[ownerAddress].activeX6Levels[i] = true;
    }
    
    userIds[1] = ownerAddress;
}

function() external payable {
    if(msg.data.length == 0) {
        return registration(msg.sender, owner);
    }
    
    registration(msg.sender, bytesToAddress(msg.data));
}

function registrationExt(address referrerAddress) external payable {
    registration(msg.sender, referrerAddress);
}

function buyNewLevel(uint8 matrix, uint8 level) external payable {
    require(isUserExists(msg.sender), "user is not exists. Register first.");
    require(matrix == 1 || matrix == 2, "invalid matrix");
    require(msg.value == levelPrice[level], "invalid price");
    require(level > 1 && level <= LAST_LEVEL, "invalid level");

    if (matrix == 1) {
        require(!users[msg.sender].activeX3Levels[level], "level already activated");

        if (users[msg.sender].x3Matrix[level-1].blocked) {
            users[msg.sender].x3Matrix[level-1].blocked = false;
        }

        address freeX3Referrer = findFreeX3Referrer(msg.sender, level);
        users[msg.sender].x3Matrix[level].currentReferrer = freeX3Referrer;
        users[msg.sender].activeX3Levels[level] = true;
        updateX3Referrer(msg.sender, freeX3Referrer, level);
        
        emit Upgrade(msg.sender, freeX3Referrer, 1, level);

    } else {
        require(!users[msg.sender].activeX6Levels[level], "level already activated"); 

        if (users[msg.sender].x6Matrix[level-1].blocked) {
            users[msg.sender].x6Matrix[level-1].blocked = false;
        }

        address freeX6Referrer = findFreeX6Referrer(msg.sender, level);
        
        users[msg.sender].activeX6Levels[level] = true;
        updateX6Referrer(msg.sender, freeX6Referrer, level);
        
        emit Upgrade(msg.sender, freeX6Referrer, 2, level);
    }
}    

おすすめ

転載: blog.csdn.net/T13242772558/article/details/109176257