为了支持用户隐私,是否可以通过"zk-SNARK“或”公告“隐藏事务的发送方地址或接收方地址?或者我们只能隐藏映射到一个地址的值?
假设以下映射:
mapping (address => bytes32) userData;通常,使用非交互式零知识证明(如"zk-SNARK“或”防弹“),我们能够将映射到地址(即userData)的值隐藏如下:
mapping (address => bytes32) userDataHash;然后,通过零知识证明,我们可以证明,如果userDataHash满足一个条件?例如,证明一个加密的数字在给定的范围内,而不透露关于该数字的任何其他信息。
但是,假设不是Data,而是希望隐藏事务发送方(即address)。我们希望保持用户/发送者本人的机密性,而不是他们的数据。
有可能为此目的使用保密地址吗?
发布于 2019-01-05 23:51:11
大致上,与交易隐私有关的有三个方面。
现在,有一点我不能百分之百肯定。has有屏蔽地址的概念,类似于来自monero的环签名/隐秘地址。从这篇博文https://medium.com/coinmonks/monero-vs-zcash-and-the-race-to-anonymity-4322b0a9bd90中可以看出,使用ZK(?)实现屏蔽地址是可能的:
Z现货支持可选功能,以实现包括发送方、接收方和金额在内的事务的隐私。以“t”(t-addrs)开头的Zcash地址被认为是透明的,类似于比特币交易。“屏蔽”事务与以“z”(z-addrs)开头的地址一起使用,这些事务被认为是完全匿名的。值得注意的是,截至2017年12月,只有4%的现金交易受到保护。对于z-addr,zk-SNARKs用于隐藏z-addr之间的输出.因此,从t-addr到z-addr的事务将显示ZEC离开hidden,但是输出将隐藏到z-addr。
更新:我只是偶然发现了这个。这是有可能实现隐私在所有三个方面(发送者,接收者,价值),只有ZK-咆哮。有关使用https://medium.com/@atvanguard/zkdai-private-dai-transactions-on-ethereum-using-zk-snarks-9e3ef4676e22库的示例,请参见ZoKrates。
发布于 2018-12-27 18:40:27
严格地说,不可能隐藏Ethereum事务的发送方。这是因为可以直接提取发件人的公钥,从而提取地址。一个有效的Ethereum事务包含v,r,s (以及其他字段),它构成ECDSA签名。
下面是从空灵-功用提取公钥的示例:
/**
* ECDSA public key recovery from signature
* @param {Buffer} msgHash
* @param {Number} v
* @param {Buffer} r
* @param {Buffer} s
* @return {Buffer} publicKey
*/
exports.ecrecover = function (msgHash, v, r, s) {
const signature = Buffer.concat([exports.setLength(r, 32), exports.setLength(s, 32)], 64)
const recovery = v - 27
if (recovery !== 0 && recovery !== 1) {
throw new Error('Invalid signature v value')
}
const senderPubKey = secp256k1.recover(msgHash, signature, recovery)
return secp256k1.publicKeyConvert(senderPubKey, false).slice(1)
}一个有效的事务还包含一个to字段,它可以是接收者地址(在发送醚时),也可以是智能契约地址。当部署新合同(来自坚实的文档)时,它是空的:
如果未设置目标帐户(事务没有接收方或收件人设置为null),则事务将创建新合同。
这意味着,如果使用零知识证明创建自己的令牌契约,理论上可以隐藏接收方的地址。您可能会实现一个与Zcash类似的协议,但是人们将能够检索发件人的地址。根据您的要求,这可能是问题,也可能不是问题。作为一个边节点,有一个很好的概念验证式混合器,它使用zk。
我不熟悉元素机密地址,但是根据元素网站,他们使用自己的块链,可以选择地与另一个块链挂钩(它作为一个侧链部署;像Ethereum这样的块链被用作信任锚)。因此,它与以太没有直接关系。
https://ethereum.stackexchange.com/questions/57619
复制相似问题