A拥有1000万个数据集合,每个集合1万字
B想要统计A的某些字的频率,前提是A不能把所有的集合都给B
如果A想要向B证明自己的统计都是正确的,那么,
- A向B提供1000万个数据集合该字出现的频率
- 由B提出验证随机从1000万个数据集合提取某个集合,在数据hash后进行词频统计,多次检查无误后,则B相信A给出的数据是正确的
零知识证明
用符号代表原始数据,随机抽样,多次局部运算,降低偶然发生事件的概率
非交互式,签名:签名算法被破解概率很小,所以数据传播过程中被篡改的概率很小很小,所以相信数据是真的,所以不用多次交互证明数据的正确性
交互式,多次抽样验证:一次验证具有很高的偶然性,多次验证把偶然概率降到最低,因为样本量很大,随机验证能够确保概率降低到忽略不计
思想类推
通过这种方式,我们可以思考
银行贷快还款能力
信用额度查看
医院病历病史校验
...
合约代币主动收账功能
转账一直以来都是被动的,都是别人转给自己,那么在以太坊代币中是否可以由自己主动发起收账呢?
1. A要给B转账
2. A在合约中设置一个token,并绑定转账金额
3. A通过B的公钥把token和转账金额发送给B
4. B得到token后发起收账调用,等待成功后,调用合约检验该token的转账金额,如果和A发送的金额相等,那么则进行下一步操作