IPFS和编辑权限

5
我刚刚将一个由5张图片组成的文件夹上传到IPFS(使用Mac桌面IPFS客户端应用程序,所以这是一个非常简单的拖放操作)。
既然我是创建并发布此文件夹的人,这是否意味着只有我能够对其进行进一步修改-例如添加或删除更多图像?还是在IPFS上的任何人都可以这样做?
如果他们可以,那么有没有办法防止这种情况发生?
=======================================
更新后的问题:
我的具体用例与更新ERC721令牌的元数据有关 - 在它们被铸造之后。
例如,想象一个游戏,其中某些对象 - 比如说一个魔法剑 - 在其所有者完成一定任务或使用一定次数后获得特殊的能力。因此,我们希望通过编辑其元数据来更新此剑的属性,并将此更新后的元数据文件重新提交到区块链中。
例如,如果我们的游戏有100把剑,最初上传到IPFS的文件夹包含所有100个json文件(每个剑一个文件),那么我相信IPFS仍然允许您通过它们的具体可读名称(而不仅仅是哈希值)访问哈希文件夹中的特定文件。 因此,如果我们的剑恰好是剑#76,我们的JSON文件的命名约定是这种格式:“sword000.json” ,则剑#76的JSON元数据文件将具有以下路径: http://ipfs.infura.io/QmY2xxxxxxxxxxxxxxxxxxxxxx/sword076.json 如果我们编辑了“ sword076.json”文件并将其拖放回主JSON文件夹中,则它显然会导致该文件夹的哈希/CID值发生更改。但是,只要我们能够更新我们的Solidity合同的“tokenURI”方法以查找并从此新更新的HASH / CID文件夹名称中提供我们的“.json”文件,我们仍然可以按照它们的常规英文名称引用其中的单个文件。这意味着我们可以继续使用这些文件。
无论是否采用这种方案,我们肯定可以讨论,但是我首先想回到我的原始问题/关注点,即我想确保我们是唯一可以更新文件夹内容的人,没有其他人有权限这样做。
这有道理吗?
1个回答

6

IPFS是不可变的,这意味着当您将目录和文件添加到IPFS时,该目录将基于目录内容获得唯一的CID。因此从某种意义上讲,没有人可以修改它,甚至包括您自己,因为它是不可变的。我认为更多了解IPFS工作原理的背景可以解决这种困惑。

当您将东西添加到IPFS时,每个文件都会被哈希,并赋予一个CID。对于目录也是如此,但它们的CID可以更容易地理解为目录内容的总和。因此,如果目录中的任何文件被更新、添加或删除,目录将获得新的CID。

了解了这一点,如果其他人以完全相同的方式添加了完全相同的内容,他们最终会得到完全相同的CID!因此,如果两个人添加了相同的CID,第三个人请求该文件(或目录),那么两个节点都能够提供数据,因为我们知道它完全相同。如果您仅共享了CID,并且另一个节点固定了它,那么两个节点都将具有相同的数据,因此如果任何人请求它,两个节点都能够提供它。

因此,您的本地副本不能被任何人编辑。从某种意义上说,如果您依赖IPFS CID作为数据地址,甚至包括您自己!这就是为什么IPFS通常被称为“不可变”的原因,因为您通过IPFS CID请求的任何数据都将始终相同。如果更改任何数据,则会获得新的CID。

更多信息可以在这里找到:内容寻址不可变性

如果您阅读了所有内容并认为“那我想要可变数据怎么办?”,我建议您研究一下IPNS,如果您正在寻找一个工具来自动更新IPNS,则可以考虑ipfs-sync


1
@Discoradian 感谢您的回答 - 非常感激!我应该用不同的措辞来表达我的问题,因为我对IPFS非常熟悉,了解如何添加/删除文件会更改文件夹哈希、CID等。我想要理解的是 - 如果“只有我被允许进一步修改”我上传到IPFS的文件夹,还是“任何人都可以在IPFS上做到这一点?”这仅仅是一个关于权限的问题,而不是实用性或可变性。我更新了我的问题,以便完整地说明我想要实现的目标 - 请查看一下! - Sirab33
@Sirab33,我已经阅读了你更新的问题。所以你明白当文件被更新时,目录CID会发生变化,你在Solidity中更新这个很好。那么问题不应该更多地是“谁可以更新tokenuri方法?”因为任何人都可以下载你的IPFS文件,更改它们,并使用新的CID上传它们,因为IPFS完全开放。然而,我假设你的tokenuri方法涉及权限,那真正指向的是内容。所以要解决的真正问题是“谁可以更新TokenURI?”如果只有你可以,听起来你已经准备好了。 - Discordian
@Discoradian 感谢您再次回复。回答您的问题:“问题不应该更多地是‘谁可以更新tokenuri方法吗?’” 答案是“不是。我的问题仍然是我一直想问的,其要点是:任何人都可以更新IPFS上的任何目录吗?” 我更新原始问题的原因是为了向您提供更多关于我为什么提出原始问题的背景,但我从未改变过我的原始问题。实际上,我在更新的问题中字面上说“我首先想回到我的原始问题/关注点。” 也许您忽略了这一点。 - Sirab33
无论如何,你现在回答了我的原始问题,写下了“IPFS是完全开放的” - 这实际上让我感到非常惊讶,甚至可以说是疯狂的。因为如果有人可以将任何东西上传到任何现有的IPFS目录中 - 即使是他们没有创建的目录,那么这似乎就是一种混乱的邀请。我想我需要更深入地挖掘一下这个问题。无论如何,再次感谢! - Sirab33
@Sirab33,我不确定混淆的原因在哪里,但数据是不可变的,因此没有人可以向现有的IPFS目录中添加任何内容,它始终是一个副本,对于不同的数据有不同的哈希值。 - Discordian
或许为了更加明确,IPFS中不存在编辑/更新/修改的概念,因此也就没有真正的权限。事实上,基本上只有添加和固定这两个操作。对于造成的任何困惑,我深感抱歉。 - Discordian

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接