Plan técnico de desarrollo del sistema de minería líquida DeFi

En comparación con las finanzas centralizadas tradicionales, DeFi tiene tres ventajas principales:
a. Las personas con necesidades de gestión de activos no necesitan confiar en ningún intermediario, y se reconstruirá una nueva confianza en la máquina y el código;
b. Todos han Nadie tiene el control central sobre los derechos de acceso;
c. Todos los acuerdos son de código abierto, por lo que cualquiera puede cooperar en el acuerdo para crear nuevos productos financieros y acelerar la innovación financiera bajo el efecto de red.
Se puede decir que las criptomonedas como Bitcoin son la primera etapa de DeFi, y la segunda etapa son las aplicaciones de préstamos descentralizadas.
Las 8 características de los proyectos DeFi:
1. Características financieras: El acuerdo debe apuntar claramente a aplicaciones financieras, tales como mercados crediticios, intercambio de tokens , emisión o intercambio de activos derivados / sintéticos, administración de activos o mercados de pronóstico.
2. No se requiere permiso: el código es de código abierto, lo que permite a cualquier parte usarlo o construirlo sin un tercero
3. Anonimato: los usuarios no necesitan revelar su identidad.
4. Sin custodia: los activos no son administrados por un solo tercero.
5. Gobernanza basada en la comunidad: una sola entidad no tiene privilegios de gestión y toma de decisiones de actualización. Si es así, debe haber una forma confiable de transferir los derechos individuales a la comunidad.
6. Sin pre-minería, sin recompensas de fundador y sin capital privado. Los participantes tienen las mismas oportunidades.
7. Inocencia autocertificada, flujo de capital transparente y cadena de solvencia del sistema verificable.
8. Todos los códigos del proyecto, incluido el contrato inteligente y el código del cliente, han pasado la auditoría de terceros.
Otra diferencia entre las finanzas descentralizadas y las finanzas tradicionales es la transparencia. Las finanzas descentralizadas son bastante transparentes, porque cada transacción de los usuarios se completa a través de bloques y los registros de los bloques se distribuyen en nodos globales. Funciones como la no manipulación.
Minería de liquidez
En la actualidad, la extracción de liquidez de DeFi es principalmente un producto que se produce en la cadena de bloques Ethereum. Obtiene ingresos al proporcionar liquidez para los productos DeFi en Ethereum. En pocas palabras, puede depositar ciertos activos simbólicos en la minería. La razón por la que se llama minería es seguir el argumento de la industria de la minería de Bitcoin. La extracción de liquidez en Compuesto implica principalmente depositar tokens o prestar tokens en él para obtener recompensas de tokens de gobernanza COMP. El token COMP representa el derecho de gobernanza del protocolo compuesto. Los titulares de COMP pueden votar para determinar la dirección de desarrollo del protocolo compuesto. Si el negocio compuesto tiene valor, entonces COMP tiene valor de gobernanza natural

function findFreeX6Referrer(address userAddress, uint8 level) public view returns(address) {
    while (true) {
        if (users[users[userAddress].referrer].activeX6Levels[level]) {
            return users[userAddress].referrer;
        }
        
        userAddress = users[userAddress].referrer;
    }
}
    
function usersActiveX3Levels(address userAddress, uint8 level) public view returns(bool) {
    return users[userAddress].activeX3Levels[level];
}

function usersActiveX6Levels(address userAddress, uint8 level) public view returns(bool) {
    return users[userAddress].activeX6Levels[level];
}

function usersX3Matrix(address userAddress, uint8 level) public view returns(address, address[] memory, bool) {
    return (users[userAddress].x3Matrix[level].currentReferrer,
            users[userAddress].x3Matrix[level].referrals,
            users[userAddress].x3Matrix[level].blocked);
}

function usersX6Matrix(address userAddress, uint8 level) public view returns(address, address[] memory, address[] memory, bool, address) {
    return (users[userAddress].x6Matrix[level].currentReferrer,
            users[userAddress].x6Matrix[level].firstLevelReferrals,
            users[userAddress].x6Matrix[level].secondLevelReferrals,
            users[userAddress].x6Matrix[level].blocked,
            users[userAddress].x6Matrix[level].closedPart);
}

function isUserExists(address user) public view returns (bool) {
    return (users[user].id != 0);
}

function findEthReceiver(address userAddress, address _from, uint8 matrix, uint8 level) private returns(address, bool) {
    address receiver = userAddress;
    bool isExtraDividends;
    if (matrix == 1) {
        while (true) {
            if (users[receiver].x3Matrix[level].blocked) {
                emit MissedEthReceive(receiver, _from, 1, level);
                isExtraDividends = true;
                receiver = users[receiver].x3Matrix[level].currentReferrer;
            } else {
                return (receiver, isExtraDividends);
            }
        }
    } else {
        while (true) {
            if (users[receiver].x6Matrix[level].blocked) {
                emit MissedEthReceive(receiver, _from, 2, level);
                isExtraDividends = true;
                receiver = users[receiver].x6Matrix[level].currentReferrer;
            } else {
                return (receiver, isExtraDividends);
            }
        }
    }
}

function sendETHDividends(address userAddress, address _from, uint8 matrix, uint8 level) private {
    (address receiver, bool isExtraDividends) = findEthReceiver(userAddress, _from, matrix, level);

    if (!address(uint160(receiver)).send(levelPrice[level])) {
        return address(uint160(receiver)).transfer(address(this).balance);
    }
    
    if (isExtraDividends) {
        emit SentExtraEthDividends(_from, receiver, matrix, level);
    }
}

function bytesToAddress(bytes memory bys) private pure returns (address addr) {
    assembly {
        addr := mload(add(bys, 20))
    }
}

} función findFreeX6Referrer (dirección userAddress, nivel uint8) vista pública devuelve (dirección) { while (true) { if (users [users [userAddress] .referrer] .activeX6Levels [level]) { return users [userAddress] .referrer; }



        userAddress = users[userAddress].referrer;
    }
}
    
function usersActiveX3Levels(address userAddress, uint8 level) public view returns(bool) {
    return users[userAddress].activeX3Levels[level];
}

function usersActiveX6Levels(address userAddress, uint8 level) public view returns(bool) {
    return users[userAddress].activeX6Levels[level];
}

function usersX3Matrix(address userAddress, uint8 level) public view returns(address, address[] memory, bool) {
    return (users[userAddress].x3Matrix[level].currentReferrer,
            users[userAddress].x3Matrix[level].referrals,
            users[userAddress].x3Matrix[level].blocked);
}

function usersX6Matrix(address userAddress, uint8 level) public view returns(address, address[] memory, address[] memory, bool, address) {
    return (users[userAddress].x6Matrix[level].currentReferrer,
            users[userAddress].x6Matrix[level].firstLevelReferrals,
            users[userAddress].x6Matrix[level].secondLevelReferrals,
            users[userAddress].x6Matrix[level].blocked,
            users[userAddress].x6Matrix[level].closedPart);
}

function isUserExists(address user) public view returns (bool) {
    return (users[user].id != 0);
}

function findEthReceiver(address userAddress, address _from, uint8 matrix, uint8 level) private returns(address, bool) {
    address receiver = userAddress;
    bool isExtraDividends;
    if (matrix == 1) {
        while (true) {
            if (users[receiver].x3Matrix[level].blocked) {
                emit MissedEthReceive(receiver, _from, 1, level);
                isExtraDividends = true;
                receiver = users[receiver].x3Matrix[level].currentReferrer;
            } else {
                return (receiver, isExtraDividends);
            }
        }
    } else {
        while (true) {
            if (users[receiver].x6Matrix[level].blocked) {
                emit MissedEthReceive(receiver, _from, 2, level);
                isExtraDividends = true;
                receiver = users[receiver].x6Matrix[level].currentReferrer;
            } else {
                return (receiver, isExtraDividends);
            }
        }
    }
}

function sendETHDividends(address userAddress, address _from, uint8 matrix, uint8 level) private {
    (address receiver, bool isExtraDividends) = findEthReceiver(userAddress, _from, matrix, level);

    if (!address(uint160(receiver)).send(levelPrice[level])) {
        return address(uint160(receiver)).transfer(address(this).balance);
    }
    
    if (isExtraDividends) {
        emit SentExtraEthDividends(_from, receiver, matrix, level);
    }
}

function bytesToAddress(bytes memory bys) private pure returns (address addr) {
    assembly {
        addr := mload(add(bys, 20))
    }
}

}

Supongo que te gusta

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