Desarrollo del sistema IPFS | construcción del modelo de intercambio de máquinas mineras

Modo de almacenamiento distribuido IPFS
1. IPFS es un sistema de almacenamiento distribuido descentralizado
2. ¿Cuál es el escenario de aplicación final de
IPFS ? IPFS es una red de almacenamiento distribuido, y su aplicación más importante es el almacenamiento. No es suficiente guardar un determinado archivo de forma permanente y poder encontrar el contenido nuevamente cuando sea necesario. La combinación de almacenamiento y recuperación constituye el escenario final de las aplicaciones IPFS.
3. El objetivo de IPFS: El objetivo del
Sistema de archivos interplanetario (IPFS) es crear una Web distribuida. El protocolo hipermedia punto a punto hace que la web sea más rápida, segura y abierta.
4. ¿Cómo almacena IPFS los datos?
IPFS es diferente del almacenamiento tradicional en el pasado. ¡IPFS es un sistema de almacenamiento descentralizado y distribuido! En IPFS, los archivos se almacenan en objetos IPFS y cada objeto puede almacenar 256 kb de datos. El objeto también puede contener un enlace a otro objeto IPFS, lo que hace posible almacenar datos de más de 256 kb.
Por ejemplo, si solo cargó un archivo de texto pequeño, entonces un objeto de 256 kb debería ser suficiente para manejar su pequeña cantidad de texto.
5. ¿Qué cambios trae IPFS?
Primero, IPFS ha cambiado la forma en que se almacenan los archivos. El método de almacenamiento original es almacenar el archivo completo en un punto central, pero IPFS divide un archivo grande en muchos archivos pequeños y los almacena en otros lugares de la red.
En segundo lugar, también ha cambiado la forma en que se transmiten los datos en Internet. El protocolo HTTP es para consultar datos en un punto central, e IPFS es un método de comunicación punto a punto para consultar datos. Debe agregarse una cosa, IPFS se basa en el direccionamiento de contenido.
En tercer lugar, se han optimizado los recursos de ancho de banda. El modo centralizado anterior requiere mucho ancho de banda. IPFS puede acceder a los datos de varios nodos y puede elegir consultar los datos del nodo más cercano, lo que puede ahorrar una gran cantidad de recursos de ancho de banda.
En cuarto lugar, IPFS es un protocolo modular, que es una combinación de DHT (tabla hash distribuida), BitTorrent (tecnología de protocolo BT, tecnología de bloqueo Git) y SFS (tecnología de nombres autocertificada). Método de protocolo de comunicación.
6. La función de
IPFS IPFS ha cambiado fundamentalmente la forma en que los usuarios buscan. A través de IPFS, los usuarios pueden buscar directamente el contenido que desean.
En el pasado, los usuarios buscaban archivos a través de un navegador HTTP primero para encontrar la ubicación (dirección IP) del servidor y luego usaban el nombre de la ruta para encontrar el archivo en el servidor. De esta manera, solo el propietario del archivo puede determinar si este es el archivo que está buscando el usuario y debe asegurarse de que el custodio no elimine el archivo ni cierre el servidor para realizar cambios en el archivo.
Cuando el archivo se agrega al nodo IPFS, se generará un nuevo nombre, que en realidad es un hash criptográfico calculado en función del contenido del archivo. El cifrado puede garantizar que el hash siempre represente solo el contenido de este archivo, incluso si solo se modifica un bit de datos en el archivo, el hash será completamente diferente.
Al solicitar un hash a IPFS, IPFS utiliza una tabla hash distribuida para rápidamente (solo 20 saltos en una red con 10,000,000 nodos) encontrar el nodo con los datos para recuperar y usar el hash para verificar si es Son los datos correctos.

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

Supongo que te gusta

Origin blog.csdn.net/T13242772558/article/details/109294445
Recomendado
Clasificación