DeFi去中心化交易所繫統開發技術

2020-10-26 12:01:21

什麼是去中心化交易所?
在去中心化交易所中,使用者的資產直接託管在使用者自己的錢包裡,大大降低了交易所被盜或跑路導致使用者資產流失的風險。通過智慧合約完成的撮合交易和鏈上完成的結算清算,在提升透明度的同時,也大大減少了對中心媒介的依賴。
其實,這些還只是狹義的去中心化交易所,從廣義上講,去中心化交易所包括了所有的去中心化的價值和資產交換方式。由於信任的缺失,在許多現有的交易場景中,都需要各種形態的中心化交易所提供信任擔保。而區塊鏈技術將通過構建一個個無形的去中心化交易所,降低信任成本,逐漸重塑舊有的價值交換體系。
去中心化交易所優勢:
數位資產的真正持有者還是使用者本身,對自己的數位資產擁有絕對的所有權和控制權,不會因為交易所被盜等原因導致自己資產丟失,保證了數位資產的安全性。
通過開源智慧合約,將資產託管、撮合交易、資產清算都放在區塊鏈上。
用智慧合約來實現去中心化去信任的交易機制,解決了中心化交易所人為因素產生的內部運營風險、商業道德風險、資產盜用等嚴重影響使用者資產安全的風險。
使用者的託管資產可以自由轉移無需任何人審批,資產自由性更高。
由於使用者的賬戶金鑰是控制在自己手中,所以技術上駭客攻擊由集中式攻擊交易所改成針對分散式的個人賬戶進行攻擊,利潤空間下降反倒造成了相對安全性的提升。
在區塊鏈領域,追求「去中心化」是一個美好的願景,去中心化交易所目前還處於早期開發階段,距離成熟的模式還需市場的探索與技術上的實驗。
而要想真正做成去中心化交易所,目前尚有許多問題需要解決,比如:交易所使用方法的簡便化、區塊鏈底層技術等。

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