今天我去看@SignOfficial Sign文档的时候,我一直在想一个问题:怎么在不暴露隐私的前提下,证明“是你干的”?传统做法是零知识证明,技术很酷,但落地太难,谁来发凭证、谁来验证,绕一圈又回到中心化。
然后我看到了Sign的解决方案,说实话,第一眼没看懂。看了三遍才明白它有多巧妙。
核心机制叫临时密钥对+哈希锚定。你用一个邮箱登录,Sign调用椭圆曲线数字签名算法帮你生成一个临时的公私钥对。这个私钥只在你的浏览器内存里待一会儿,操作完就销毁,不存硬盘、不留痕迹。关键是Sign的服务器根本不知道你的私钥,整个过程在你本地完成。这就把“身份”从“服务器借给你的”变成了“你自己手里攥着的钥匙”。
但问题来了:如果这个临时密钥对销毁了,怎么证明你操作过?这就轮到哈希锚定。Sign把你的操作记录和邮箱地址,分别用SHA-256算出哈希值,然后用你的临时私钥,把这两个哈希值做一个BLS聚合签名,锚定到链上。
真正上链的不是你的邮箱,不是你的操作内容,只是一个聚合签名。但任何人拿到这个签名,都能验证两件事:第一,这个操作确实发生了;第二,这个操作确实是你授权的。验证方看不到你的邮箱,看不到你的任何信息。但如果你需要向某个机构证明“这笔交易是我的”,你可以出示原始数据,对方用链上的聚合签名一验就知道真假。
TokenTable处理了40多亿美金的分发,用的就是这套机制。每一笔分发的归属关系:谁发的、谁收的、什么条件触发,全部上链写死。200多个项目、4000多万钱包跑下来,没出过大问题。
说实话,看懂这个机制的时候我挺兴奋的。它不搞零知识证明那种复杂的密码学,就用哈希加聚合签名,同样做到“可验证但不可见”。不是去颠覆谁!#sign地缘政治基建 $SIGN