契約ドキュメンタリー交換システム開発(構築)

先物契約とも呼ばれる契約とは、将来の特定の時間と場所で特定の量と質の商品を配達するために先物取引所によって策定された標準化された契約を指します。簡単に言えば、それは将来ビジネスを行うことです。
契約取引は一種の金融デリバティブであり、スポット市場に関連する取引です。ユーザーは、将来の契約取引の増減を判断して価格の増減を判断することにより、長期契約の購入または短期契約の販売を選択できます。収入、これは契約取引の基本的な論理です。簡単に言えば、長いポジションを開いたユーザーの場合、ポジションを開いた後、ビットコインは上昇すると収益を上げ、下降すると損失を出します。逆に、ショートポジションをオープンしたユーザーの場合、ポジションをオープンした後、ビットコインは上昇すると損失を出し、下降すると収益を上げます。大多数のユーザーは、先物契約のマージンシステムを使用し、10倍または100倍のレバレッジを追加して大規模な資金を活用し、インデックスの変動を使用して低額の取引契約を購入し、高額の取引契約を販売することで、複数の利益を獲得します。
さまざまな配送方法に応じて、契約は永久契約と定期契約に分けることができます。両者の主な違いは、定期契約には納期が固定されているのに対し、永久契約には納期がないことです。その中で、定期契約は、納期の違いにより、当週契約、来週契約、四半期契約の3つに分類できます。もちろん、取引所が異なれば取引契約も異なり、それは時々異なります。
デジタル通貨取引には多くの種類の取引所があり、その中でコイン、OTC、C2C、先物、レバレッジなどがより多く使用され、契約取引システムは多くの種類に分けられます。
デジタル通貨取引市場の発展に伴い、為替市場全体において、契約取引は常に為替取引量の割合が高い場所であり、契約ドキュメンタリーモードの出現により、より多くの新規プレイヤーが契約モードに参加できるようになりました。
契約ドキュメンタリーはシステムに対して比較的高い要件があり、ドキュメンタリーはほぼ完全に同期され、正確である必要があります。この問題を解決するには、手動コピーが難しく、システムコピーしか実行できず、システムの処理にはより強力なテクノロジーが必要です。優れた戦略的投資家がいる優れたシステムだけが利益を上げることができるため、より多くのユーザーを継続的に引き付けることができます。

  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/m0_51754086/article/details/109315376