好哥哥们,NFT中包含持有者才能看的加密数据是怎么实现的?

好哥哥们,NFT中包含持有者才能看的加密数据是怎么实现的?

1 Like

数据托管的,并没有存在链上

1 Like

这个东西的实现方法真是好难想…
我琢么了一上午,只是确定了,加解密过程绝对不能发生在链上的事实…

1 Like

我现在有一个去中心化的小思路,

称 NFT背面的数据 为 message
称 持有某个token_id的人 为 owner

我们使 NFT_cell 中包含 messageowner.pubkey 加密后的结果 Cipher
当发生NFT_Cell.Transfer时, 要求from在链下使用自己的privkey 解密 Cipher,并使用to.pubkey加密message 得到新Cipher2
Cipher2包含在NFT_cell的data中即可

但难点是,链上合约无法验证output.NFT_Cell中的Cipher2确实是使用 to.pubkey加的密…
换句话说 from在转让NFT_cell的时候可以作恶,不使用to.pubkey加密,从而使to虽然持有NFT但无法获取 message

我把上述密码学问题 总结如下:

Alice 使用 Bob 的公钥 PubKey_Bob 对消息message 进行 Encrypt,得到密文Cipher
我作为中间人,如何在没有解密用的私钥PrivKey_Bob 的条件下验证 Cipher 确实是使用PubKey_Bob 加的密? 有什么密码学方案满足这个需求?

有一种密码学方案叫做代理重加密,简单描述,NFT发行方用公钥对NFT加密,然后转移的时候,可以授权重加密到一个新的密钥对,半可信中间人可以实施这个重加密。

不过用简单加密其实够了,因为这件事最重要的点在于,A转移NFT给B时重新加密,要验证A密钥加密前的内容=B密钥加密前的内容,我觉得这个应该也是有密码学方案可以做的。

1 Like

可以搜 “zero knowledge contingent payment”,我觉得是类似的问题。

1 Like