MIXIN白皮书连载之内核解读
MIXIN白皮书连载之内核解读
MIXIN内核是一个有限主节点上的快速地异步拜占庭容错的有向无环图来处理未花费的交易的系统。
简单来说,MIXIN的主节点数量有限,各个主节点之间的通讯采用了异步拜占庭容错机制,各个主节点构成的MIXIN网络内部数据传输是采用了有向无环图的形式来处理未花费交易。这个也比较好理解,各主节点类似BTC的矿池,我们不会关心各个矿池是如何运作的,不管是鱼池还是蚂蚁矿池挖矿,展现在我们面前在都是BTC网络完成打包交易。
BTC最初是人人都可以通过CPU挖矿,逐步演变成到现在比较集中的矿池挖矿,普通人就很难参与了。ETH差不多也是从分散到集约的演化路径,EOS则直接采用了集约的模式。追求效能最大化是一个自然经济系统天然的进化之路。MIXIN的系统也是采用了集约的节点模式,也只有这种模式才能做出一个高效的系统。
下面会对MIXIN所采用的技术做简短的描述(这些描述基本上参考了维基百科),目的只有有一个,让你知道:Mixin 没有发明任何新的技术,白皮书里描述的技术都是在其它的不同项目中应用的不同成熟技术。成熟的技术意味者较少的漏洞、较强的安全性,较低的切入成本、以及非常容易落地。
幽灵输出
Mixin 内核采用UTXO的方式管理交易,使用了 CryotoNote 的一次性秘钥生成算法、避免一个地址多次使用来提升隐私性。我们把这个一次性的公钥成为幽灵地址 (Ghost Address),这个公钥上的交易输出叫做幽灵输出 (Ghost Output)。
UTXO(Unspent Transaction Outputs)字面意思是未花费过的交易输出,是一种保障总量平衡的记账方式,UTXO是BTC最先采用的一种记账方式,后期被各类代币(ETH是另外一种记账方式)所采用。不同于普通的我有十块钱 你有五块钱 我要给你两块钱就直接给你两块钱。而是我的十块钱都给你你再找我八块钱。保证输入和输出总量平衡是utxo的核心。采用utxo方式记账,其交易顺序就不重要了,使得高并发成为可能。注意只是可能而已。
下面很多讲的就是CryptoNote算法的一些特性,有兴趣的就去看原文吧,这里就简单说说CryptoNote算法匿名性。对于BTC,所有地址的转账历史记录都可以在区块链上查询。而采用CryptoNote算法则隐藏了发送方和接收方地址之间的连接。
举个🌰A给B、C、D转账(A、B、C、D代表区块链上的三个地址)。在BTC网络中,你可以通过区块链查询到A分别给B、C、D转账。在CryptoNote算法的系统中,你只能看到有三笔交易,但是你无法看到这三笔转账是A发出来的。把这个🌰扩大到全网,CryptoNote算法匿名的特性就体现出来了,具体表现为你无法通过地址查看该地址的余额和交易记录,除非该地址的持有人愿意公开展示出来。当然基于MIXIN所开发出来的公链或者DAPP可以自行选择是否匿名。
CryptoNote 是一种应用层协议,支持多种分散的面向隐私的数字货币。比特币以及大多数数字货币对比基于CryptoNote的货币太透明了,Cryptonote类型的货币比较出名的有Monero(XMR)、Bytecoin(BCN)。然后现在只要进入MIXIN内核的所有代币都具有了Cryptonote协议的匿名特性,如同纸币流通一样不可标识的匿名。
异步拜占庭容错的 DAG网络
每个Mixin 内核节点需要抵押 10,000 个 XIN, 流通的 XIN 是 500,000 个,所以总的内核节点不会多于 50 个。另一方面为了防止权利过于集中,Mixin 内核需要至少 7 个节点才会启动。
所有的 Mixin 节点形成了一个松散的网状结构,它们的职责是交易验证和交易持久化保存。不像传统的区块链,Mixin 内核这里没有区块的概念,而是以单个交易为单位、尽快地将其指数级广播出去。
由于采用异步的 BFT 同步,双重支付 (双花) 不可能发生。基于UTXO 天然特性也使得事件的顺序不重要,所以在 DAG 里高并发也能得到保障。
下面的章节是假设全节点数量是20个,交易通过3个随机的全节点进行传输的示例来告诉我们整个MIXIN网络是如何快速地完成交易的,有兴趣的就自己看原文吧。
拜占庭将军问题(Byzantine Generals Problem),是由莱斯利·兰波特在其同名论文[1]中提出的分布式对等网络通信容错问题。1982年论文中提到。
1999年,卡斯托(Miguel Castro)与李斯克夫(Barbara Liskov)提出了实用拜占庭容错(PBFT)算法[9]。该算法能提供高性能的运算,使得系统可以每秒处理成千的请求,比起旧式系统快了一些。
POW的工作量证明就是解决比特币系统中拜占庭问题的关键,避免有问题的结点(“反叛的将军”)破坏数字货币系统里交易帐的正确性,是对整个系统的运行状态有着重要的意义。毫无疑问,BTC的POW机制是最公平的竞争机制,激烈的竞争,积累的强大算力保证了BTC的安全,只不过其他币种都很难学(很容易被算力攻击)。。。
DAG 并不是一个新概念或是技术,并且它当然也不是一个共识机制;它纯粹是起源于几个世纪前的一种数学结构。这个数学机构的特性得到了广泛的应用,地图导航也使用这种技术,也就是导航到某一个地点有很多路径。随后这种数学结构被一些项目所使用而已,最早的使用是在2013年,以色列希伯来学者在bitcointalik提出GHOST协议,引入DAG概念,原本是作为比特币的交易处理能力扩容解决方案,不过后面基于DAG技术就演化出很多项目,比较出名的有NXT、IOTA、ByteBall。。。
带处罚的 PoS
每个 Mixin 内核节点都至少需要 10,000 XIN, 大约占整个网络的 2%;而 Mixin 内核至少需要 7 个以上节点,大约是整个网络的 15%。
内核的BFT共识由非常严格的带处罚的 PoS 来保障,也就是说,如果一个内核节点被识别为攻击者的话,他的抵押就会被回收进矿池。
目前测试网络已经在运行了,关于节点加入、退出网络的规则也会随着测试网络进行不断的调整。比如说目前节点要求是10000XIN,第一年释放矿池中的10%也就是50000,因为释放的这50000XIN会稀释目前持有XIN的人的利益,所以加了一个规定一年后节点就要求是11000这么一个概念。同时为了保证整个网络的稳定,对于节点的退出也做出了一些惩罚(扣除1%的XIN)。随着测试网络的进行全节点也会调整一些规则或者加入更多的规则,所以下面的这段讲作恶节点的判定和申辩的就不用看了,你只要知道这个网络的POS惩罚机制很严厉就对了。
如果一个节点试图广播明显的双重支付事件,那它就会被认定为攻击者。一个事件是明显的,是指它的输入状态已经被至少 2/3的节点接受了。
一个节点第一次进行攻击,他的抵押(10000XIN)不会被立即收回,但他将被网络标记为潜在攻击者。同时整个内核的节点数会临时降为 K-1,潜在的攻击节点不会发现系统已经取消了其记账的权利。其它的节点还会继续广播给这个被标记了的节点,如果还收到来自这个标记节点的更多恶意事件,那么内核将会签名一个包含特定转账信息的事件 —— 将这个标记节点的抵押物转账回矿池。
被标记的节点会被永久从内核移除,但给予它一段时间向 Mixin 内核管理委员会做出陈述,然后由所有 XIN 持有者投票(比如说网络延迟导致某个节点做出错误的输入,轻节点(实际上就是XIN持有者)也是可以感知到网络延迟的)。
可信执行环境 (TEE, Trusted Execution Enviroment)
Mixin 内核已经是一个异步拜占庭容错共识机制的 DAG网络。为了保证将来的安全性,内核节点需要运行在 TEE 上。具体来说,Mixin 使用了 Intel SGX 技术来实现TEE 。
TEE 技术的实施,增强了 Mixin 内核3 点安全和可信的因素:
1.所有的内核节点都需要运行相同的同步规则;
2.由于 Intel SGX 的封闭性,即使 Mixin 内核是由一些先前的内核节点控制的,它也是可信的;
3.分布式的域通信会更安全。
这里的底层逻辑是,Mixin 系统某种程度上信任 Intel 的 SGX。
需要注意,Mixin 内核本身就是安全的(跟当前已有的 BFT 方案一样安全)。Intel SGX 只是让它更好而已。
TEE(Trust Execution Environment),也叫可信执行环境,是和REE(Rich Execution Environment)相对应的,是ARM的一种模式。一般也称TEE和REE为Secure World和Normal World。Linux都跑在Normal World上,但是有些安全性要求比较高的行为,例如指纹的比对,支付时候用私钥签名的动作等,就要放到Secure World里面去了。
可信执行环境TEE是移动设备(包含智能手机、平板电脑、机顶盒、智能电视等)主处理器上的一个安全区域,其可以保证加载到该环境内部的代码和数据的安全性、机密性以及完整性。TEE提供一个隔离的执行环境,提供的安全特征包含:隔离执行、可信应用的完整性、可信数据的机密性、安全存储等。
了解了这些,你就不会被后面一些号称什么可信的玩意给忽悠了,或者忽悠忽悠就忽悠瘸了,去卖拐也行。
轻量见证者 (Light Witness)
轻量节点 (Light Node),是对 Mixin 内核进行简化的支付验证的节点。它通常会记录自己所有的未花销的输出,来简单响应账户余额查询。
如果轻量节点本身也持有 XIN,那么它就有机会去做轻量见证者。轻量见证者,主动地监控内核,然后需要对攻击者陈述做出投票时,它们也会被安排自动投票。
轻量见证者的投票是根据他们的权益 (stake) 来算权重的。这个投票主要针对攻击者的网络连接状况,这样就能确定攻击行为是否只是网络延迟引起的。
所有的轻量见证者投票都会被加权计算到内核管理委员会,来对攻击者陈述做出投票。如果判定攻击者陈述无效,那么对攻击者的惩罚就最终成立。轻量见证者有动力去做这些投票,因为它们做了一些优秀工作的话,就能够得到挖矿回报。
换句话说持有XIN并将这些XIN放在持续在线的MIXIN钱包(比如MIXIN messenger)中就可以获取收益,按照之前的说法第一年这些轻节点可以获取5000XIN(轻节点获取收益是释放量的10%,此前说过第一年释放50000也就是50000*10%)
另外MIXIN messenger是一个自身网络的ONCHAIN钱包,对于其所支持的币种是OFFCHAIN,跨链(转出MIXIN网络)收取的超额手续费扣除矿工费也会按照9:1的比例分配给主、轻节点。