Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
S
share
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
JIRA
JIRA
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Registry
Registry
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
pengjun
share
Commits
92103a23
Commit
92103a23
authored
Feb 15, 2019
by
pengjun
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Update mv协议.md
parent
6861d2e3
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
22 additions
and
19 deletions
+22
-19
mw协议.md
mw协议.md
+22
-19
No files found.
m
v
协议.md
→
m
w
协议.md
View file @
92103a23
#MV(mimble-vimble)协议
# MW(Mimble-Wimble)协议
#MV(mimble-vimble)协议
# MW(Mimble-Wimble)协议
##1. 背景
##
1. 背景
任何货币系统,包括电子现金,数字资产等,都需要满足两个条件,
任何货币系统,包括电子现金,数字资产等,都需要满足两个条件,
*
接收的货币等于发送的货币,不凭空产生货币
*
接收的货币等于发送的货币,不凭空产生货币
...
@@ -8,16 +8,17 @@
...
@@ -8,16 +8,17 @@
比特币交易通过暴露3个属性:发送方地址、发送比特币的数量、接收方地址来满足,而Mimblewimble则可以在不暴露这3个属性的情况下,满足货币系统的这两个条件
比特币交易通过暴露3个属性:发送方地址、发送比特币的数量、接收方地址来满足,而Mimblewimble则可以在不暴露这3个属性的情况下,满足货币系统的这两个条件
##2. 特点
##
2. 特点
Mimblewimble协议是一种优化比特币的隐私保护协议,它能节省存储容量,提供更强的隐私保护能力,有以下特点:
Mimblewimble协议是一种优化比特币的隐私保护协议,它能节省存储容量,提供更强的隐私保护能力,有以下特点:
*
区块链中没有地址和账户,每次转账中接收方都要构建新的交易见证。
*
区块链中没有地址和账户,每次转账中接收方都要构建新的交易见证。
*
交易金额隐藏,只验证输入等于输出,没有多余货币产生
*
交易金额隐藏,只验证输入等于输出,没有多余货币产生
*
中间状态的交易可以合并,更少的信息使得追踪更加困难
*
中间状态的交易可以合并,更少的信息使得追踪更加困难
> 交易合并是指如果在要打包到区块的所有交易中,先有A转给B钱,后又有B转给C一定的钱,那么不需要全部记录这两笔交易,只需要记录A转给C多少钱,合并交易的中间状态,同时附上B的签名,就可以既保证交易的安全又确保不双花的同时减小UTXO集合大小,显著减少区块存储所需空间
> 交易合并是指如果在要打包到区块的所有交易中,先有A转给B钱,后又有B转给C一定的钱,那么不需要全部记录这两笔交易,只需要记录A转给C多少钱,合并交易的中间状态,同时附上B的签名,就可以既保证交易的安全又确保不双花的同时减小UTXO集合大小,显著减少区块存储所需空间
##3. 实现
##
3. 实现
###3.1 交易金额隐藏
###
3.1 交易金额隐藏
实现主要基于椭圆曲线不可逆的特性。假设有交易输入vi1和vi2,输出vo3,椭圆曲线H,我们可以将交易中描述为v
*
H。 由于ECC加法特性,我们可以验证交易的输出总和等于输入总和:
实现主要基于椭圆曲线不可逆的特性。假设有交易输入vi1和vi2,输出vo3,椭圆曲线H,我们可以将交易中描述为v
*
H。 由于ECC加法特性,我们可以验证交易的输出总和等于输入总和:
vi1 + vi2 = vo3 => vi1*H + vi2*H = vo3*H
vi1 + vi2 = vo3 => vi1*H + vi2*H = vo3*H
...
@@ -45,7 +46,7 @@ Mimblewimble协议是一种优化比特币的隐私保护协议,它能节省
...
@@ -45,7 +46,7 @@ Mimblewimble协议是一种优化比特币的隐私保护协议,它能节省
通过致盲因子,交易金额被隐藏在Commitment中,节点验证的时候只需验证输出和输入的Commitment之差是否为零即可,无需了解交易金额
通过致盲因子,交易金额被隐藏在Commitment中,节点验证的时候只需验证输出和输入的Commitment之差是否为零即可,无需了解交易金额
###3.2 所有权
###
3.2 所有权
用来掩盖实际交易值的致盲因子是一个私钥,这个私钥可以用来证明值的所有权
用来掩盖实际交易值的致盲因子是一个私钥,这个私钥可以用来证明值的所有权
假如Alice给你发了3个币并且隐藏了这个数字,你选择了28作为你的致盲因子(在实际中是一个非常大的数字)。 区块链上的某处显示以下交易输出,并只能由你来用(做交易输入):
假如Alice给你发了3个币并且隐藏了这个数字,你选择了28作为你的致盲因子(在实际中是一个非常大的数字)。 区块链上的某处显示以下交易输出,并只能由你来用(做交易输入):
...
@@ -75,7 +76,7 @@ X, 上述加法的输出值,是对所有人可见的。 但是值3只有你和
...
@@ -75,7 +76,7 @@ X, 上述加法的输出值,是对所有人可见的。 但是值3只有你和
这个关联到每笔交易的签名,附加一些额外数据(比如交易费),被称为交易核(transaction kernel)
这个关联到每笔交易的签名,附加一些额外数据(比如交易费),被称为交易核(transaction kernel)
###3.3 核销
###
3.3 核销
区块让矿工将多个交易组合成一个单个集合添加到链中。 在下面的区块表示中,包含3个交易,我们只显示交易的输入和输出。 输入关联其花费的输出。 前一个区块中包含的输出标记为小写字母x。
区块让矿工将多个交易组合成一个单个集合添加到链中。 在下面的区块表示中,包含3个交易,我们只显示交易的输入和输出。 输入关联其花费的输出。 前一个区块中包含的输出标记为小写字母x。
I1(x1) --- O1
I1(x1) --- O1
...
@@ -116,8 +117,8 @@ X, 上述加法的输出值,是对所有人可见的。 但是值3只有你和
...
@@ -116,8 +117,8 @@ X, 上述加法的输出值,是对所有人可见的。 但是值3只有你和
*
所有的交易结构已被删除,使得区分哪个输出与哪个输入匹配成为不可能任务
*
所有的交易结构已被删除,使得区分哪个输出与哪个输入匹配成为不可能任务
然而,区块仍然可验证!
然而,区块仍然可验证!
##
4. MV
交易
##
4. MW
交易
###4.1 MimbleWimble交易包括以下内容
###
4.1 MimbleWimble交易包括以下内容
*
一组输入,参考和花费一组以前的输出
*
一组输入,参考和花费一组以前的输出
*
一组新的输出包括:
*
一组新的输出包括:
*
一个值和一个致盲因子(它只是一个新的私钥)在曲线上相乘并相加为r.G + v.H
*
一个值和一个致盲因子(它只是一个新的私钥)在曲线上相乘并相加为r.G + v.H
...
@@ -125,20 +126,22 @@ X, 上述加法的输出值,是对所有人可见的。 但是值3只有你和
...
@@ -125,20 +126,22 @@ X, 上述加法的输出值,是对所有人可见的。 但是值3只有你和
*
明确的交易费用
*
明确的交易费用
*
一个签名,通过采取excess value(所有输出加费用之和减去输入)并将其用作私钥来计算
*
一个签名,通过采取excess value(所有输出加费用之和减去输入)并将其用作私钥来计算
###4.2 交易构建
###
4.2 交易构建
以Grin交易为例
以Grin交易为例


###4.3 交易上链
###
4.3 交易上链
以Beam交易为例
以Beam交易为例


##5. 钱包
##
5. 钱包
m
v协议中并没有地址,也没有账户,发送交易一般需要使用钱包监听ip和端口,或者通过其他安全通道传递交易文件。当前实现mv协议的匿名币主要是grin和beam,beam的钱包在mv协议外实现了一个叫SBBS的插件,该插件可以生成动态地址(也可以生成永久地址,一般矿池和交易所才会),交易转账会比原生的mv
协议相对友好。在sbbs插件中,beam的钱包和一般的以太坊钱包类似,但是要求交易的时候,双方钱包都要同时在线,否则默认24小时候地址就会失效。
m
w协议中并没有地址,也没有账户,发送交易一般需要使用钱包监听ip和端口,或者通过其他安全通道传递交易文件。当前实现mw协议的匿名币主要是grin和beam,beam的钱包在mw协议外实现了一个叫SBBS的插件,该插件可以生成动态地址(也可以生成永久地址,一般矿池和交易所才会),交易转账会比原生的mw
协议相对友好。在sbbs插件中,beam的钱包和一般的以太坊钱包类似,但是要求交易的时候,双方钱包都要同时在线,否则默认24小时候地址就会失效。


##6. 区块
##
6. 区块
上面提到过,m
v协议的交易仅仅包含携带致盲因子的输入输出,手续费,以及签名,在mv
区块中,包含区块头,输入输出列表和transaction kernel集合
上面提到过,m
w协议的交易仅仅包含携带致盲因子的输入输出,手续费,以及签名,在mw
区块中,包含区块头,输入输出列表和transaction kernel集合
*
区块信息
*
区块信息


...
@@ -149,5 +152,5 @@ mv协议中并没有地址,也没有账户,发送交易一般需要使用钱
...
@@ -149,5 +152,5 @@ mv协议中并没有地址,也没有账户,发送交易一般需要使用钱
*
kernel
*
kernel


##7. 小结
## 7. 小结
mv协议具有强大的隐私保护能力和强匿名,但是同时,交易构建需要发送接收方配合,无论是在其他安全通道交易文件发送,还是是同时在线监听,都给使用场景带来一定的局限性。并且mv协议对智能合约的支持并不友好,grin号称能支持及简单的只能合约定义,beam没有看到有相关的描述。mv协议在纯匿名币上会有很好的应用,在公链上可能意义不大。反倒是其中使用到的类似schnorr签名,蒲公英协议这些隐私保护技术或许可以在公链上尝试。
mw协议具有强大的隐私保护能力和强匿名,但是同时,交易构建需要发送接收方配合,无论是在其他安全通道交易文件发送,还是是同时在线监听,都给使用场景带来一定的局限性。并且mw协议对智能合约的支持并不友好,grin号称能支持及简单的只能合约定义,beam没有看到有相关的描述。mw协议在纯匿名币上会有很好的应用,在公链上可能意义不大。反倒是其中使用到的类似schnorr签名,蒲公英协议这些隐私保护技术或许可以在公链上尝试。
\ No newline at end of file
\ No newline at end of file
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment