IPFS系统开发|矿机交易所模式搭建

IPFS分布式存储模式
1、IPFS是一种去中心化,分布式的存储系统!
2、IPFS最终的应用场景是什么
IPFS它是一个分布式的存储网络,它最重要的应用就是存储。只是为了把某个文件永久地保存下来还不够,并且当需要的时候,还要能够把这些内容再重新找出来。存储和检索这两个的集合才构成了IPFS应用的最终的场景。
3、IPFS的目标:
星际文件系统(IPFS)的目标是创建分布式Web。点对点超媒体协议,使web更快、更安全、更开放。
4、IPFS如何存储数据
IPFS与以往传统的存储不同,IPFS是一种去中心化,分布式的存储系统!在IPFS中,文件存储在IPFS对象中,每个对象可以存储256kb的数据。对象还可以包含到另一个IPFS对象的链接,链接使存储大于256kb的数据成为可能。
例如,如果您只上传了一个小的文本文件,那么一个256kb的对象应该足以处理您的少量文本。
5、IPFS带来哪些改变
首先,IPFS改变了文件存储的方式。原来的存储方式是在一个中心点上存储整个文件,但是IPFS把一个大的文件打散成很多小文件,存储在整个网络的其他地方。
其次,数据在互联网上的传输方式也发生了改变。HTTP协议是在一个中心点查询数据,IPFS是一个点对点查询数据的通讯方式。有一点需要补充,IPFS是基于内容寻址的。
第三,带宽资源得到了优化配置。那以前中心化的模式,需要很大的带宽,IPFS可以从多节点上访问数据,可以选择从最近的节点上查询数据,可以节省大量的带宽资源。
第四,IPFS是一个模块化协议,它是由DHT—分布式哈希表、BitTorrent—BT协议技术、Git—版块化技术、SFS—自认证命名技术,这四个成熟技术组合形成的一种通讯协议方式。
6、IPFS的作用
IPFS从根本上改变了用户的搜索方式,通过IPFS,用户能够直接搜索到想要的内容。
以往,用户通过HTTP浏览器搜索文件首先要找到服务器的位置(IP地址),然后使用路径名称在服务器上查找文件。这样一来,只有文件所有者可以判断这是否是用户要找的文件,并且必须保证托管者不会移除文件或关闭服务器对文件做任何更改。
当文件被添加到IPFS节点上后将生成一个新名字,这个名字实际上是根据文件内容计算出的一个加密哈希。加密能够保证该哈希始终只表示这一文件的内容,哪怕只在文件中修改一个比特的数据,哈希都会完全不同。
当向IPFS询问哈希时,IPFS通过使用一个分布式哈希表,可以快速(在一个拥有10,000,000个节点的网络中只需20跳)找到拥有数据的节点进行检索,并使用哈希验证其是否是正确的数据。

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

猜你喜欢

转载自blog.csdn.net/T13242772558/article/details/109294445