-
-
[原创]分享加密货币(的一种:比特币)从零开始学(3)比特承诺
-
发表于: 2020-4-6 07:39 21806
-
终于有闲工夫来水一下论坛了,随着前段时间的疫情影响,比特币价格遭遇腰斩的境地。那么作为研究技术的我们可以看看加密货币中非常重要的一个基础概念---------比特承诺。
简单的来说,比特承诺可以看作一种防作弊的手段。那么来看例子:
我们想象在真实世界中小明和小红玩抛硬币的游戏,小明抛,小红看。那么对于通常情况来说很难作弊,没错(除非小明会魔法)。那么我们把这个情况从线下转为线上呢,想象一下,小明和小红各自在家抛硬币,通过网络小红告诉小明,我抛了多少,然后小明告诉小红,我抛了多少,那么最终大家互相达成一个共识输出,也就是 小明输出:自己抛的结果+小红告诉他的结果,小红输出:自己抛得结果+小明抛得结果。 是不是有点混乱了,思考一下,这样的模型安全吗?
好公布答案,那么肯定是不安全的。原因?
虽然最后双方达成了协议,但是先发送结果的人比较吃亏,比较被动,因为后发送消息的小明可以决定自己到底发送什么样的消息给小红,那么对小红来说她就很被动。那么讨论这个问题的意义何在? 我们再回到加密货币的实际意义中来,我们希望设计一个协议,达到的目的是:首先,我们知道交易必定有人是付钱的,有人是拿货物交换钱,这里又涉及到一个经典的模型(好吧其实没啥关系。。),其实也就是淘宝- -(高大上的名字,有兴趣可以自行查找论文,叫escrow模型)。淘宝相当于一个第三方的保障平台。。这里分两种情况,有担保人和无担保人。在无担保人的情况下,重点就在于,我们在网上交易的时候,付钱的人希望自己在拿到货物之前对方不能打开我的钱袋拿钱(所谓比特承诺的隐藏性质hiding),并且你还得证明,这个钱袋是真的属于付钱人的钱袋(因为在网上交易很难确认你是谁,那么我们能做得其实也就是通过比特承诺的绑定性质binding,来证明这是你付的钱)。 那么在有担保人的情况下,其实也是一个道理,这是一种大类的应用场景。那么聪明的读者一定想到了,公私钥体系岂不是完美契合这个性质,答案是肯定的。关于这点,不得不提到著名的以太坊智能合约中经典的hash time lock contract,可以说这是比特承诺的一个体现了,任何拥有数字货币的人都可以在公链上发起一个合同,这个合同就像一个上锁的宝藏盒子而且定时了,如果超过拥有者规定的时间,别人也不能取钱,但是在那段可以取钱的时间里,拥有者不能改变宝藏盒子里的内容。非常经典了,所以说比特承诺是加密货币中一个基本概念,几乎所有的加密货币都会有类似的概念,不仅仅在比特币中。毕竟,要在网上完成类似的交易,不是一件简单的事情。好了差不多理解了比特承诺的实际应用之后,我们来从学术角度分析一下其安全性。以单个比特来举例子,首先整个过程分为两步,第一步:类似封装的过程,把宝藏放进宝藏盒子的过程,然后上锁,连拥有者自己也不能改变其中的内容,因为这个上锁的盒子会被发给下家。第二步:打开,在经过规定的时间之后,或者别的情况,例如收到货了,或者得到什么东西了,拥有者必须向下家发送钥匙,让下家亲自打开宝藏盒子,而宝藏盒子中可能是上家的信物(突然想到血指纹- -),任何能证明上家身份的东西。到这里整个过程结束了。我们回顾一下,中间两个性质:1.隐藏hiding ,2.绑定binding。前面说了,以单个比特举例,我们假设宝藏盒子里不是1就是0。那么对于隐藏属性来说,我们至少有1/2的几率猜到是1还是0,(这里直接衍生,想象有1000个比特,是不是就是1/2的1000次方概率能猜到)。不过这是最完美的情况下,在实际情况下,我们可能可以通过不同宝藏盒子的形状,盒子重量等等(边信道手法,来间接增加我们猜到其中内容的概率),只是举个例子这里。但不论怎么说,这概率应该差不多是1/2+一个极小值。那么当我们去分析实际协议的时候,如果说它不满足这个条件,也就是说1/2加上的不是一个极小值,那么我们可以说此协议不具备隐藏属性。同样的道理在绑定属性上就很难直接说了,因为对于绑定属性来说,没有1或者0,只有绑定成功了(证明身份了)或者说有人伪造了身份,那么还是考虑最完美的情况,那就是无法伪造身份,那么对于攻击者来说,攻破的概率是0,但是世界上没有完美的事情,那么对于现实中,我们可以猜测,起码有那么一点点微小的概率,可以导致身份被伪造,这也是可以接受的,因为现实世界很多事情都是这样,比如所有正在看这篇文章的各位,都有机率(尽管很小),立马就中一张5000w的彩票,这也是可能发生的,所以只要被伪造的概率不大于一个微小值,那么我们说,此协议满足绑定性质。
以上,是加密货币中比较重要的概念,不知道有没有讲清楚,大概表达了自己的理解,如果有错请不吝指出。其实说白了,这些协议的设计都是为了公平性,和保证交易的安全,虽然说同时满足条件保证了网络交易相对的公平性,但其实还是会发生很多实际问题,这毕竟还是属于p2p交易,没有使用区块链本身的性质,但其实这是矛盾的,因为你要上链那么就牺牲了一部分时间效率,但是得到了一定的安全保障,因为你们的交易不是私下里进行,而是有很多双眼睛在盯着你们,甚至于你们还有一个担保人来辅助你们完成交易,但是如果不上链,其实还是回到我最初举得例子,先发送的人还是被动,因为收到的人可以不作为。又或者是抵赖,甚至伪造身份。同样的概念,可以想象,本来应该付钱的人不付钱,那么怎么办,该如何保证安全和公平,这里其实牵涉到智能合约的概念了,如果大家有兴趣我会在后续的文章里继续更新。
[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!
赞赏
他的文章
看原图
赞赏
雪币:
留言: