今天下午请了半天假去银行办事,气到现在还没消。
事情是这样的:我要开个存款证明,办签证用。本来以为很简单,结果柜员说:“先生,您需要提供近半年的工资流水。”
我说:“我就开个存款证明,证明我有这么多钱在账上就行了吧?为什么要流水?”
她说:“规定。”
我说:“那我只打印工资入账那几行行不行?其他消费记录不想给别人看。”
她说:“不行,系统打出来就是全部。”
我站在那儿,心里一万只羊驼跑过。我就想让签证官知道我账户里有钱,结果柜员要把我每天点外卖、充话费、买咖啡的记录全打出来。这感觉就像你去面试,HR不光要看你学历证书,还要翻你小学作业本。
办完出来,在地铁上刷手机,突然看到Midnight的介绍。看着看着,我靠,这不就是刚才银行那破事的解药吗?
数据不上链,那存在哪儿?
我之前一直没搞懂一个问题:如果Midnight说数据不上链,那数据存哪儿?
今天仔细看了下官方文档,原来是存在本地。就是你自己的手机、电脑、或者你公司的服务器上。区块链上只存一个东西——证明。
打个比方:你有张身份证,原件在自己钱包里。去酒吧,保安要看年龄。你不用把身份证原件给他,只需要让他扫个码,机器显示“已成年——是”。这个“是”就是证明。身份证原件还在你兜里,没离开过你。
Midnight也是这个逻辑。你的交易金额、合约内容、个人信息,都在你自己设备里存着。需要验证的时候,本地生成一个零知识证明,把这个证明提交到链上。网络节点看一眼证明——哦,没问题——然后交易就过了。
整个过程,你的原始数据从来没离开过你的设备。
两种数据,两条轨道
Midnight把数据分成两条轨道跑。
一条叫公开状态,跑的是那些必须让全网知道的信息。比如交易有没有被验证、时间戳对不对、合约代码是什么。这些就像银行给你的回执单,所有人都能看见,也得看见。
另一条叫保护性状态,跑的是加密数据。交易金额、合约内容、你的个人信息,都在这条轨道上,而且是以加密形式存在你的本地。
这两条轨道是同时跑的。就像地铁有快慢线,互不干扰,但共同构成整个系统。
我理解了半天才明白:公开状态保证的是“可验证”,保护性状态保证的是“不泄露”。两者缺一不可。
想给谁看、给看多少,你自己定
Midnight还有个功能叫选择性披露。就是你可以在特定情况下,向特定对象公开特定数据。
比如今天我去银行这事。如果Midnight被用起来,流程应该是这样的:
柜员说:“需要证明您账户余额足够。”
我说:“好的。”
然后我在手机上一按,生成一个“这个人账户余额大于10万”的证明,发给她。她验证一下——哦,是真的。
至于我这10万是工资存的、还是别人转的、还是昨天卖股票赚的,她不知道,也不需要知道。我的消费记录、转账记录,统统不用给她看。
数据还在我自己手机里,只是给她看了一眼局部。
官方把这叫“数据最小化原则”——只披露必要的信息,不多给一个字。
听说已经有人在用了
查资料的时候看到,Midnight已经在跟一些机构合作了。
有个土耳其的医疗公司,管理着300万患者的医疗记录,正在探索用Midnight生成患者病历的证明。什么意思呢?就是比如你去新医院看病,不需要把以前的所有病历都传过去,只需要生成一个“这个病人做过这些检查”的证明。新医院验证一下,就能接着治,但看不到你以前的详细病历。
还有加州的医院在谈跨临床试验的数据共享。临床试验涉及很多敏感信息,但又需要多个机构协作。Midnight这套正好对路——数据不上链,只上证明,既保护隐私又能验证真实性。
(写到这儿手机响了,银行发短信说我的存款证明办好了,可以去取。我心想:是啊,办好了,但我的消费记录也都被打印出来了。算了,不想了。)
今天这事让我想明白一个道理:隐私不是要把所有事都藏起来,而是只让该知道的人知道该知道的事。
我去银行办业务,银行只需要知道我账户里有多少钱,不需要知道我每天几点起床、几点睡觉、买了什么东西。Midnight这套“数据本地存储+证明上链”的设计,正好解决这个问题。
可惜它还没普及。不然今天下午我就不用站在银行柜台前,看着柜员打印我的消费记录了。