文章有点长……
当我决心持有越来越多的BTC时,我最担心的问题是,我存在Mixin钱包里的BTC安全吗?
于是,我开始了关于Mixin安全性的探索和思考……
-
我Mixin中的BTC真的是BTC吗?
-
这些BTC真的是我的吗?
-
为什么我转账到Mixin的BTC没了?是丢了吗?
- 为什么这些BTC没了,我还能成功从Mixin转出BTC?
- 我转出去用于swap、抵押、“坐牢”的币会没吗?
在探索的过程中遇到了上面这一系列的问题,通过查找答案,把整条逻辑线串了起来。
文章的后面,遗留了一个问题,期待大佬帮忙解答,希望大佬们也能指出文章中的问题,帮助到我和更多的小白们,感谢。
最后,是重要的免责声明。
如果你觉得这篇文章对你有帮助,点赞、转发和打赏都是对我莫大的认可和鼓励。
如果你能帮我修正、完善此文,那将是最大的认可和鼓励。
1.如何证明我有BTC
第一个问题是,如何证明我真有BTC?有的人,可能没有想过这个问题,我们还可能有假BTC吗?
如果把BTC简略的理解为传统世界的钱……
我拿传统世界,举个例子:
之前,网上就有报道过,有人把钱存到了假银行,这个假银行营业网点从装修、装饰到各个方面都跟一个真银行的营业网点一样。
当有人去这个假银行营业网点办理开户,存款时,其实他的钱都存到了这个假冒的银行营业网点里。
当这家假银行发展到一定的规模,吸引了一定的存款,卷钱跑了,储户的钱就没了,储户在假银行里查到的钱,无非就是一个数,还是一个提不出钱的假数。
类似的,我们如果去一个仿冒的银行网站,查询到的仿冒银行网站里,假账户的金额,当然也就只是个数,而已,不代表我们有真的钱。
所以,我们得去真银行,查我们的账户,是否真的有钱。
真银行,账户,钱,才能取出来,才是真的有钱。
对应到BTC:
- BTC的网络 = 银行的网络
- 我们数字钱包的地址 = 银行的账户
- BTC数额 = 银行账户里的金额
我们在真的BTC网络中,查询我们的钱包地址,就能查到钱包地址里真的BTC数额。
真BTC网络,钱包地址,BTC数额,才真的有真的BTC。
2.通过钱包地址查询BTC数量
明白“如何证明我有BTC”,接下来的问题就是,怎么查?
区块链是一个公共分布式数据库,这个数据库中记录着加密货币交易和地址余额,任何人都可以复制一份。
这就像银行后台的账本,我们可以在这个账本中根据账号查到余额和交易。
https://blockchair.com/就是复制了多种区块链“货币”账本供人们查询的网站,我们把这类网站称为区块链Explorer。
接下来,我们在BTC Explorer:https://blockchair.com/zh/bitcoin中,试着搜索一下地址:34xp4vRoCGJym3xR7yCVPFHoCNxv4Twseo
我们可以看到这个地址的BTC余额:
通过这种方式,我们就能查询到钱包地址的BTC数量,证明在BTC网络中,某个账户里真的有BTC,即,BTC网络中,所有人的账本里,都记录了这个账户有这么多BTC。
3.获取自己的Mixin中的BTC钱包地址
知道了怎么查BTC账户地址里的BTC,接下来,就是怎么找Mixin里面的我们的BTC账户地址。
打开Mixin上常用的钱包机器人,比如:ExinOne、小钱包、Mixin Wallet,找到转入的页面。
我以Mixin Wallet(ID:7000101500)为例:
在机器人首页,点击转入,可以看到钱包里的资产列表,然后点击Bitcoin,就会进入一个“充值BTC”的页面,如下:
页面中的“地址”,就是我的BTC充值地址,也就是任何人给我这个地址转BTC,就相当于我给我的账户打钱了。
然后,根据前面的内容,我们就可以到BTC Explorer里面查询我账户的BTC余额。
这里,我查到我的账户里没有BTC,也没有过交易记录。
4.充值和提取BTC
找到了Mixin里的BTC钱包地址,我决定用真金白银走一遍出入币流程,真金白银是因为转入转出都需要花费一定的BTC作为手续费(奖励给BTC矿工)。
下面,我从BigONE钱包里,通过Bitcoin网络转一点BTC到Mixin给我生成的充值地址。
很快,我通过BTC Explorer也确实查到了我的账户里的BTC。
在Mixin里,也收到了Team Mixin的转账:
接下来,试试把BTC再提出到BigONE:
类似转入Mixin,在钱包找到转出,添加BigONE的BTC钱包地址,然后选择添加的BigONE地址,将BTC转出。
输入6位PIN码后,就可以顺利的提交提币申请。
然后,通过BTC Explorer就可以看到BigONE地址中的,从Mixin提出的BTC了。
这么看,Mixin出入金很顺畅,其实BigONE和Mixin之间可以免费划转,但是为了验证过程,花了点BTC手续费,通过BTC网络完成了出入金。
问题来了,在Mixin官网上,在“工作原理”部分,我看到了下面的内容:
Mixin钱包里的BTC充值地址在区块链浏览器上查不到余额?Mixin的充值和提现不是同一个地址?这是什么意思?用户充值后,资产会按需转移至共同管理的地址?提现时,再由共同管理地址转出?
也就是说,我从BigONE把BTC转到Mixin,再从Mixin转回BigONE经历了下面的过程:
这就好比,我把钱从A账户转给B账户,当我想把钱转回A账户时,钱是从C账户转回了A账户。
那钱怎么从B账户到C账户了呢?这不对啊,因为转账需要知道私钥啊?有人可能会问,私钥是什么?
私钥,我们可以理解为是银行账户的密码,我们转账的时候都得提供密码,才能完成操作。
那Mixin怎么会知道我B账户的密码的?我怎么不知道?
那说明B账户、C账户并不真正属于我啊,密码在别人手里,我却不知道,那钱从A账户到B账户的过程,不就相当于我把钱从我的卡打到别人的卡里了吗?
带着问题,继续找,充值的BTC到底怎么从Mixin充值地址到了Mixin共管地址?
在Mixin官网上,工作原理部分,我看到:
哦,原来那个充值地址真的不是我的,而是Mixin创建并管理私钥的地址,通过Tag/Memo标识这个地址是分配给我用的。
Mixin确实用充值地址的密码把BTC转给了共管账户,又用共管账户的密码转回给我的BigONE地址。
接着往下看,看到了提现的说明:
果然,Mixin监测到提现请求后,会自动安排提现。
这里,又产生了新的担心,虽然,资金归集和转出操作都是代码执行的,但是我怎么能确保未来代码不改成不转出,也就是我把币都转给Mixin了,但是Mixin不让我提走了。
我不知道技术上现在有没有办法避免这个风险,但是从利益角度出发,哪怕不从理想主义的角度出发,我认为应该没问题,因为,Mixin一定是希望能吸纳更多的币进来,更多的用户进来,建造更丰富的生态,以此形成良性的循环,如果币只能进出不去,立马这个生态就废了,只能是吸纳了一些币,长远看,BTC的总价的占比一定会越来越低的,整个区块链市场也才刚刚开始,未来想象空间无比大,所以,只吸纳一些币是不划算的,发展生态才是更划算的,更何况,Mixin想改变世界呢?
另外,技术上也限制了利益的不平衡,就是如果Domain管理的资产超过Domain的抵押物,就是说我管的钱比我抵押防止我作恶的钱还多,Domain 的资产将被强制转移至由 35 个节点共同管理的冷钱包地址。
看上去,这个过程应该也是自动的。留个疑问等大佬解答。
5.Mixin如何确保私钥安全
因为是代码在自动的工作,我们先假设代码就是像描述的这样工作的,那就确保了我提交提币申请,Mixin会把我的币给我。
这样,我会放心的把币交给了Mixin。
但Mixin管着私钥是安全的吗?
Mixin官网是这么介绍的:
链上资产的流入和转出由Mixin Domain管理,Domain上没有完整地私钥,私钥是通过密钥分片技术分别由节点和Domain保管。
密钥分片有多重备份,不会丢,部分丢或者泄露也不会影响密钥安全性。私钥的最终使用,是主网节点和Domain通过(t-n)门限签名技术对交易分别签名,最后合成一个完整地签名将交易发出去的。
那密钥分片和(t-n)门限签名安全吗?下面是维基百科上关于该技术的介绍,内容不多,我理解为就是把一个很长的密码,分成多份,设定至少需要由几个有签名权限的角色签名就能生成完整地密码,系统通过完整地密码去进行交易。
https://en.wikipedia.org/wiki/Threshold_cryptosystem
至于从密码学的角度为什么这样就足够安全,就不知道了,但是这种方法应该是应用广泛和成熟的,已经被有效验证的方法。
至于为什么,就算部分丢或者泄露也不影响安全性,我看到相关介绍,我理解为:
- 有签名权的各方是独立的;
- n应该大于t,也就是说,需要签名的人数小于有权限的人数,比如我设定了n是5,即5个人有签名的权限,但是t是3,最少只要有任意3个人签名了,就能生成完整签名;
- 而且联合生成的签名,也没有透露谁签了名。
所以,Mixin可以安全的保管私钥。
至此,我们知道了,如何真的查到BTC,也知道我们把BTC交给了Mixin来管理出入金完整的逻辑链,资金账户的密码是基于密码学分片,安全可靠保管和自动使用的。
6.外环的BTC网络和内环的Mixin网络
前面这些信息,介绍是一个外环,我们在Mixin内部的各种交易行为,跟这个外环是没有关系的,前面的这些交易都发生在BTC网络中。
前面的例子,从BTC账户的角度可以理解为下面的模型:
中括号表示Mixin控制的BTC钱包,1个或n个Mixin外的钱包A们,把钱转给Mixin控制的钱包B们,每个B钱包都对应了一个用户,Mixin把B们的BTC,转给钱包C(假如当前规模就一个C,规模大了阔以扩展)集中管理,转出BTC时,由钱包C把BTC转给Mixin外面世界,即BTC网络中的钱包D们。
其实,这都发生在BTC网络中,只是B和C部分Mixin拥有控制权。
那对于都是Mixin网络的用户,他们之间的内部交易,就可以不用告诉BTC网络,可以记录在另外一本账本中。
这就好比,我给你干了个活,你给我1万块钱,这1万块进了我家里,我们分了各5000,我爱人给我捶捶肩,我给了她100块,我的钱成了4900,她有的钱成了5100,吃完饭后我把碗刷了,她又给了我1块,她的钱成了5099,我的钱成了4901,我们家内部我们两个人之间金额的总和还是1万块,只要钱没花出家门,那1万块就还在那,我们之间的交易记录,只记录在我们自己家的账本里就可以,外人也不知道。
那我们家和外人的交易,就发生、记录在BTC网络中,我们家内部,就是发生、记录在Mixin网络中。
BTC网络相当于一层网络,Mixin网络相当于二层网络。
我们看看官方的图:
可是为什么要这样呢?
因为BTC的共识机制导致区块确认比较慢,Mixin的机制导致区块确认很快。也就是,在大账本里转账很慢,有手续费,我们自己家小账本转账很快,还免手续费。
7.Mixin网络的去中心化
那Mixin网络这个内部账本上的交易,如何确保安全性呢?
通过前面的内容,我们可以理解,安全性的核心有两个东西:
-
去中心化;
-
私钥在手。
关于去中心化,列列几个我理解重要的点,来自Mixin官网介绍:
-
多节点
Mixin 的分布式账本是一个公开透明的去中心化账本,由 35 个主网节点共同记账和维护。所有充值、提现和转账都被记录在这个去中心化的分布式账本上,每一笔记录都包含了资产类型(例如比特币、以太坊等)、转账金额等信息。
-
没有权威节点
Mixin 采用 DAG 作为底层数据结构模型,Mixin 没有中心权威节点,数据不需要等待中心权威节点的最终确认。
通过限制引用数据的时间等机制确保异步高效运行,并通过异步拜占庭来保证共识结果的正确性。
-
可信
Mixin 使用 Intel SGX 作为 TEE 的实现来进一步提升安全性,所有主网节点都必须在可信执行环境中运行,确保主网节点 “正在运行的代码” 的确是 “它声称正在运行的代码”,没有人能够在不被察觉的情况下改变可信执行环境里正在运行的代码。
-
公开透明
类似BTC Explorer,通过区块链浏览器,可以查询到记录。
第三方团队 Blockchair:https://blockchair.com/mixin
Mixin 核心开发团队:https://mixin.one/snapshots
节点足够多,节点平等,正在运行的代码是真的,公开、透明、可查。
8.Mixin网络的私钥在手
那Mixin网络这个内部账本上的交易,如何确保安全性呢?
通过前面的内容,我们可以理解,安全性的核心有两个东西:
-
去中心化;
-
私钥在手。
关于私钥在手。
8.1.对于个人
个人的私钥,也是分片多签的,采用D3M-PIN技术,个人只需要记住整体私钥的其中一部分,即一个容易记得6位PIN码,然后签名形成完整私钥,大道理跟上面类似。
这样,你发出交易时用到的私钥,就相当于控在了自己手里。
8.2.对于Mixin生态上的服务提供方
我们在Mixin生态上的活动,有很多服务提供方,比如4swap,Pando等。
实际上,很多时候是我把钱转给了服务提供方的账户。
对于服务提供方的账户,Mixin网络采用的多重签名,在我理解,就是更强大的门限签名,区别在于:
但是安全性是一样的由多签来保证。
这个多签意味着,我把钱在Mixin上转给服务提供方,它不能随便作恶,乱动我的钱。
比如,我在4swap上,用pusd换btc,我是把pusd转给4swap的多签地址,也就是说转给4swap的那个账户,密码是基于多签的,不能某个人私自就把的钱卷走跑了,所以,关键点在于。4swap的多签方,不全是4swap的人。
比如上图,我把pusd转给4swap,想换BOX,实际上接收pusd的账户有上面这么多多签成员,4swap想卷钱跑了,BOX践行群这个节点会同意吗?显然绝大概率不会。
这就保证了我转给服务提供商的钱,跑不了。
综上,我账户的密码在我手里,我转给Mixin上的服务商,服务商卷不走钱。
但,这还有一个类似前面的问题,怎么保证中间商收到钱不会不给我了?代码改了,4swap签了名,Mixin也不给我转BOX了怎么办?
跟BTC网络的问题是一致的,怎么保证Mixin会把钱给我,逻辑应该是一致的。
9.疑问待解答
逻辑上,目前的机制应该是由代码保证的,所以,最终问题落到了代码上,如何确保不运行作恶的代码?
比如,代码被改成了币不转出,Mixin网络的共管账户不把钱转给我了,多签账户的账户不把钱转给我了,Domain管理的资产超过抵押物不强制转到冷钱包了,等等。
10.重要免责说明
文章的内容,受限于本人肤浅的理解,水平有限,难免有考虑不到之处。
另外,关于产生疑问的答案,主要来源于官方说明,我目前没有能力通过Mixin源码来判断,Mixin网络确实就是按官方说明的机制工作的。