Commit 92103a23 authored by pengjun's avatar pengjun

Update mv协议.md

parent 6861d2e3
#MV(mimble-vimble)协议
# MW(Mimble-Wimble)协议
#MV(mimble-vimble)协议
# MW(Mimble-Wimble)协议
##1. 背景
## 1. 背景
任何货币系统,包括电子现金,数字资产等,都需要满足两个条件,
* 接收的货币等于发送的货币,不凭空产生货币
......@@ -8,16 +8,17 @@
比特币交易通过暴露3个属性:发送方地址、发送比特币的数量、接收方地址来满足,而Mimblewimble则可以在不暴露这3个属性的情况下,满足货币系统的这两个条件
##2. 特点
## 2. 特点
Mimblewimble协议是一种优化比特币的隐私保护协议,它能节省存储容量,提供更强的隐私保护能力,有以下特点:
* 区块链中没有地址和账户,每次转账中接收方都要构建新的交易见证。
* 交易金额隐藏,只验证输入等于输出,没有多余货币产生
* 中间状态的交易可以合并,更少的信息使得追踪更加困难
> 交易合并是指如果在要打包到区块的所有交易中,先有A转给B钱,后又有B转给C一定的钱,那么不需要全部记录这两笔交易,只需要记录A转给C多少钱,合并交易的中间状态,同时附上B的签名,就可以既保证交易的安全又确保不双花的同时减小UTXO集合大小,显著减少区块存储所需空间
##3. 实现
###3.1 交易金额隐藏
## 3. 实现
### 3.1 交易金额隐藏
实现主要基于椭圆曲线不可逆的特性。假设有交易输入vi1和vi2,输出vo3,椭圆曲线H,我们可以将交易中描述为v*H。 由于ECC加法特性,我们可以验证交易的输出总和等于输入总和:
vi1 + vi2 = vo3 => vi1*H + vi2*H = vo3*H
......@@ -45,7 +46,7 @@ Mimblewimble协议是一种优化比特币的隐私保护协议,它能节省
通过致盲因子,交易金额被隐藏在Commitment中,节点验证的时候只需验证输出和输入的Commitment之差是否为零即可,无需了解交易金额
###3.2 所有权
### 3.2 所有权
用来掩盖实际交易值的致盲因子是一个私钥,这个私钥可以用来证明值的所有权
假如Alice给你发了3个币并且隐藏了这个数字,你选择了28作为你的致盲因子(在实际中是一个非常大的数字)。 区块链上的某处显示以下交易输出,并只能由你来用(做交易输入):
......@@ -75,7 +76,7 @@ X, 上述加法的输出值,是对所有人可见的。 但是值3只有你和
这个关联到每笔交易的签名,附加一些额外数据(比如交易费),被称为交易核(transaction kernel)
###3.3 核销
### 3.3 核销
区块让矿工将多个交易组合成一个单个集合添加到链中。 在下面的区块表示中,包含3个交易,我们只显示交易的输入和输出。 输入关联其花费的输出。 前一个区块中包含的输出标记为小写字母x。
I1(x1) --- O1
......@@ -116,8 +117,8 @@ X, 上述加法的输出值,是对所有人可见的。 但是值3只有你和
* 所有的交易结构已被删除,使得区分哪个输出与哪个输入匹配成为不可能任务
然而,区块仍然可验证!
##4. MV交易
###4.1 MimbleWimble交易包括以下内容
## 4. MW交易
### 4.1 MimbleWimble交易包括以下内容
* 一组输入,参考和花费一组以前的输出
* 一组新的输出包括:
* 一个值和一个致盲因子(它只是一个新的私钥)在曲线上相乘并相加为r.G + v.H
......@@ -125,20 +126,22 @@ X, 上述加法的输出值,是对所有人可见的。 但是值3只有你和
* 明确的交易费用
* 一个签名,通过采取excess value(所有输出加费用之和减去输入)并将其用作私钥来计算
###4.2 交易构建
### 4.2 交易构建
以Grin交易为例
![transaction](resource/basic-transaction-wf.png)
###4.3 交易上链
### 4.3 交易上链
以Beam交易为例
![beam](resource/beam.png)
##5. 钱包
mv协议中并没有地址,也没有账户,发送交易一般需要使用钱包监听ip和端口,或者通过其他安全通道传递交易文件。当前实现mv协议的匿名币主要是grin和beam,beam的钱包在mv协议外实现了一个叫SBBS的插件,该插件可以生成动态地址(也可以生成永久地址,一般矿池和交易所才会),交易转账会比原生的mv协议相对友好。在sbbs插件中,beam的钱包和一般的以太坊钱包类似,但是要求交易的时候,双方钱包都要同时在线,否则默认24小时候地址就会失效。
## 5. 钱包
mw协议中并没有地址,也没有账户,发送交易一般需要使用钱包监听ip和端口,或者通过其他安全通道传递交易文件。当前实现mw协议的匿名币主要是grin和beam,beam的钱包在mw协议外实现了一个叫SBBS的插件,该插件可以生成动态地址(也可以生成永久地址,一般矿池和交易所才会),交易转账会比原生的mw协议相对友好。在sbbs插件中,beam的钱包和一般的以太坊钱包类似,但是要求交易的时候,双方钱包都要同时在线,否则默认24小时候地址就会失效。
![wallet](resource/033.jpg)
##6. 区块
上面提到过,mv协议的交易仅仅包含携带致盲因子的输入输出,手续费,以及签名,在mv区块中,包含区块头,输入输出列表和transaction kernel集合
## 6. 区块
上面提到过,mw协议的交易仅仅包含携带致盲因子的输入输出,手续费,以及签名,在mw区块中,包含区块头,输入输出列表和transaction kernel集合
* 区块信息
![block1](resource/block1.png)
......@@ -149,5 +152,5 @@ mv协议中并没有地址,也没有账户,发送交易一般需要使用钱
* kernel
![block3](resource/block3.png)
##7. 小结
mv协议具有强大的隐私保护能力和强匿名,但是同时,交易构建需要发送接收方配合,无论是在其他安全通道交易文件发送,还是是同时在线监听,都给使用场景带来一定的局限性。并且mv协议对智能合约的支持并不友好,grin号称能支持及简单的只能合约定义,beam没有看到有相关的描述。mv协议在纯匿名币上会有很好的应用,在公链上可能意义不大。反倒是其中使用到的类似schnorr签名,蒲公英协议这些隐私保护技术或许可以在公链上尝试。
\ No newline at end of file
## 7. 小结
mw协议具有强大的隐私保护能力和强匿名,但是同时,交易构建需要发送接收方配合,无论是在其他安全通道交易文件发送,还是是同时在线监听,都给使用场景带来一定的局限性。并且mw协议对智能合约的支持并不友好,grin号称能支持及简单的只能合约定义,beam没有看到有相关的描述。mw协议在纯匿名币上会有很好的应用,在公链上可能意义不大。反倒是其中使用到的类似schnorr签名,蒲公英协议这些隐私保护技术或许可以在公链上尝试。
\ No newline at end of file
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment