Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
P
plugin
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
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
link33
plugin
Commits
ce15f935
Commit
ce15f935
authored
Jan 28, 2021
by
madengji
Committed by
vipwzw
Sep 18, 2021
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
add role
parent
6e5bf601
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
8 changed files
with
63 additions
and
53 deletions
+63
-53
authorize.go
plugin/dapp/mix/executor/authorize.go
+1
-1
committree.go
plugin/dapp/mix/executor/committree.go
+15
-15
config.go
plugin/dapp/mix/executor/config.go
+4
-4
query.go
plugin/dapp/mix/executor/query.go
+4
-4
mix.proto
plugin/dapp/mix/proto/mix.proto
+22
-16
mix.pb.go
plugin/dapp/mix/types/mix.pb.go
+0
-0
mixbizdb.go
plugin/dapp/mix/wallet/mixbizdb.go
+7
-3
proof.go
plugin/dapp/mix/wallet/proof.go
+10
-10
No files found.
plugin/dapp/mix/executor/authorize.go
View file @
ce15f935
...
...
@@ -38,7 +38,7 @@ func (a *action) authParamCheck(input *mixTy.AuthorizePublicInput) error {
//authorize pubkey hash should be configured already
var
found
bool
for
_
,
k
:=
range
authPubKeys
.
Data
{
for
_
,
k
:=
range
authPubKeys
.
Pks
{
if
input
.
AuthorizePubKey
==
k
{
found
=
true
break
...
...
plugin/dapp/mix/executor/committree.go
View file @
ce15f935
...
...
@@ -87,7 +87,7 @@ func getNewTree() *merkletree.Tree {
func
calcTreeRoot
(
leaves
*
mixTy
.
CommitTreeLeaves
)
[]
byte
{
tree
:=
getNewTree
()
for
_
,
leaf
:=
range
leaves
.
Data
{
for
_
,
leaf
:=
range
leaves
.
Leaves
{
tree
.
Push
(
leaf
)
}
return
tree
.
Root
()
...
...
@@ -100,8 +100,8 @@ func getNewCommitLeaves() (*mixTy.CommitTreeLeaves, *mixTy.CommitTreeRoots) {
//第一个叶子节点都是固定的"00"字节
leaf
:=
[]
byte
(
"00"
)
leaves
.
Data
=
append
(
leaves
.
Data
,
leaf
)
roots
.
Data
=
append
(
roots
.
Data
,
calcTreeRoot
(
leaves
))
leaves
.
Leaves
=
append
(
leaves
.
Leaves
,
leaf
)
roots
.
Roots
=
append
(
roots
.
Roots
,
calcTreeRoot
(
leaves
))
return
leaves
,
roots
}
...
...
@@ -109,8 +109,8 @@ func getNewCommitLeaves() (*mixTy.CommitTreeLeaves, *mixTy.CommitTreeRoots) {
func
initNewLeaves
(
leaf
[][]
byte
)
*
types
.
Receipt
{
leaves
,
roots
:=
getNewCommitLeaves
()
if
len
(
leaf
)
>
0
{
leaves
.
Data
=
append
(
leaves
.
Data
,
leaf
...
)
roots
.
Data
=
append
(
roots
.
Data
,
calcTreeRoot
(
leaves
))
leaves
.
Leaves
=
append
(
leaves
.
Leaves
,
leaf
...
)
roots
.
Roots
=
append
(
roots
.
Roots
,
calcTreeRoot
(
leaves
))
}
return
makeCurrentTreeReceipt
(
leaves
,
roots
)
...
...
@@ -127,7 +127,7 @@ func archiveRoots(db dbm.KV, root []byte, leaves *mixTy.CommitTreeLeaves) (*type
if
err
!=
nil
{
return
nil
,
err
}
archiveRoots
.
Data
=
append
(
archiveRoots
.
Data
,
root
)
archiveRoots
.
Roots
=
append
(
archiveRoots
.
Roots
,
root
)
receiptArch
:=
makeTreeArchiveRootsReceipt
(
archiveRoots
)
return
mergeReceipt
(
receiptRootLeaves
,
receiptArch
),
nil
}
...
...
@@ -158,13 +158,13 @@ func pushTree(db dbm.KV, leaf [][]byte) (*types.Receipt, error) {
return
nil
,
err
}
leaves
.
Data
=
append
(
leaves
.
Data
,
leaf
...
)
leaves
.
Leaves
=
append
(
leaves
.
Leaves
,
leaf
...
)
currentRoot
:=
calcTreeRoot
(
leaves
)
roots
.
Data
=
append
(
roots
.
Data
,
currentRoot
)
roots
.
Roots
=
append
(
roots
.
Roots
,
currentRoot
)
r
:=
makeCurrentTreeReceipt
(
leaves
,
roots
)
//归档
if
len
(
leaves
.
Data
)
>=
mixTy
.
MaxTreeLeaves
{
if
len
(
leaves
.
Leaves
)
>=
mixTy
.
MaxTreeLeaves
{
receiptArch
,
err
:=
archiveRoots
(
db
,
currentRoot
,
leaves
)
if
err
!=
nil
{
return
nil
,
err
...
...
@@ -184,12 +184,12 @@ func checkTreeRootHashExist(db dbm.KV, hash []byte) bool {
var
roots
[][]
byte
currentRoots
,
err
:=
getCurrentCommitTreeRoots
(
db
)
if
err
==
nil
{
roots
=
append
(
roots
,
currentRoots
.
Data
...
)
roots
=
append
(
roots
,
currentRoots
.
Roots
...
)
}
archiveRoots
,
err
:=
getArchiveCommitRoots
(
db
)
if
err
==
nil
{
roots
=
append
(
roots
,
archiveRoots
.
Data
...
)
roots
=
append
(
roots
,
archiveRoots
.
Roots
...
)
}
for
_
,
k
:=
range
roots
{
...
...
@@ -250,7 +250,7 @@ func CalcTreeProve(db dbm.KV, rootHash, leaf string) (*mixTy.CommitTreeProve, er
}
leaves
,
err
:=
getCurrentCommitTreeLeaves
(
db
)
if
err
==
nil
{
p
,
err
:=
getProveData
(
transferFr2Bytes
(
leaf
),
leaves
.
Data
)
p
,
err
:=
getProveData
(
transferFr2Bytes
(
leaf
),
leaves
.
Leaves
)
if
err
==
nil
{
return
p
,
nil
}
...
...
@@ -261,7 +261,7 @@ func CalcTreeProve(db dbm.KV, rootHash, leaf string) (*mixTy.CommitTreeProve, er
if
err
!=
nil
{
return
nil
,
err
}
p
,
err
:=
getProveData
(
transferFr2Bytes
(
leaf
),
leaves
.
Data
)
p
,
err
:=
getProveData
(
transferFr2Bytes
(
leaf
),
leaves
.
Leaves
)
if
err
!=
nil
{
return
nil
,
errors
.
Wrapf
(
err
,
"hash=%s,leaf=%s"
,
rootHash
,
leaf
)
}
...
...
@@ -270,10 +270,10 @@ func CalcTreeProve(db dbm.KV, rootHash, leaf string) (*mixTy.CommitTreeProve, er
roots
,
err
:=
getArchiveCommitRoots
(
db
)
if
err
==
nil
{
for
_
,
root
:=
range
roots
.
Data
{
for
_
,
root
:=
range
roots
.
Roots
{
leaves
,
err
:=
getCommitRootLeaves
(
db
,
transferFr2String
(
root
))
if
err
==
nil
{
p
,
err
:=
getProveData
(
transferFr2Bytes
(
leaf
),
leaves
.
Data
)
p
,
err
:=
getProveData
(
transferFr2Bytes
(
leaf
),
leaves
.
Leaves
)
if
err
==
nil
{
return
p
,
nil
}
...
...
plugin/dapp/mix/executor/config.go
View file @
ce15f935
...
...
@@ -129,14 +129,14 @@ func (a *action) ConfigAddAuthPubKey(key string) (*types.Receipt, error) {
keys
,
err
:=
a
.
getAuthKeys
()
if
isNotFound
(
errors
.
Cause
(
err
))
{
keys
:=
&
mixTy
.
AuthPubKeys
{}
keys
.
Data
=
append
(
keys
.
Data
,
key
)
keys
.
Pks
=
append
(
keys
.
Pks
,
key
)
return
makeConfigAuthKeyReceipt
(
keys
),
nil
}
if
err
!=
nil
{
return
nil
,
err
}
keys
.
Data
=
append
(
keys
.
Data
,
key
)
keys
.
Pks
=
append
(
keys
.
Pks
,
key
)
return
makeConfigAuthKeyReceipt
(
keys
),
nil
}
...
...
@@ -147,11 +147,11 @@ func (a *action) ConfigDeleteAuthPubKey(key string) (*types.Receipt, error) {
}
var
newKeys
mixTy
.
AuthPubKeys
for
_
,
v
:=
range
keys
.
Data
{
for
_
,
v
:=
range
keys
.
Pks
{
if
key
==
v
{
continue
}
newKeys
.
Data
=
append
(
newKeys
.
Data
,
v
)
newKeys
.
Pks
=
append
(
newKeys
.
Pks
,
v
)
}
return
makeConfigAuthKeyReceipt
(
&
newKeys
),
nil
...
...
plugin/dapp/mix/executor/query.go
View file @
ce15f935
...
...
@@ -34,8 +34,8 @@ func (m *Mix) Query_GetLeavesList(in *mixTy.TreeInfoReq) (types.Message, error)
return
nil
,
err
}
var
resp
mixTy
.
TreeListResp
for
_
,
k
:=
range
leaves
.
Data
{
resp
.
Datas
=
append
(
resp
.
Data
s
,
transferFr2String
(
k
))
for
_
,
k
:=
range
leaves
.
Leaves
{
resp
.
Leaves
=
append
(
resp
.
Leave
s
,
transferFr2String
(
k
))
}
return
&
resp
,
nil
...
...
@@ -49,8 +49,8 @@ func (m *Mix) Query_GetRootList(in *types.ReqNil) (types.Message, error) {
return
nil
,
err
}
var
resp
mixTy
.
TreeListResp
for
_
,
k
:=
range
roots
.
Data
{
resp
.
Datas
=
append
(
resp
.
Data
s
,
transferFr2String
(
k
))
for
_
,
k
:=
range
roots
.
Roots
{
resp
.
Leaves
=
append
(
resp
.
Leave
s
,
transferFr2String
(
k
))
}
return
&
resp
,
nil
...
...
plugin/dapp/mix/proto/mix.proto
View file @
ce15f935
...
...
@@ -27,7 +27,7 @@ message ZkVerifyKeys{
}
message
AuthPubKeys
{
repeated
string
data
=
1
;
repeated
string
pks
=
1
;
}
message
PaymentKey
{
...
...
@@ -167,11 +167,11 @@ message ExistValue {
}
message
CommitTreeLeaves
{
repeated
bytes
data
=
1
;
repeated
bytes
leaves
=
1
;
}
message
CommitTreeRoots
{
repeated
bytes
data
=
1
;
repeated
bytes
roots
=
1
;
}
...
...
@@ -189,7 +189,7 @@ message TreeInfoReq{
}
message
TreeListResp
{
repeated
string
data
s
=
1
;
repeated
string
leave
s
=
1
;
}
// mix wallet part
...
...
@@ -289,8 +289,8 @@ message WithdrawProofResp{
string
authorizeSpendHash
=
3
;
string
noteHash
=
4
;
string
spendPrivKey
=
5
;
uint32
spendFlag
=
6
;
uint32
authorizeFlag
=
7
;
string
spendFlag
=
6
;
string
authorizeFlag
=
7
;
TreePathProof
treeProof
=
8
;
}
...
...
@@ -306,7 +306,7 @@ message AuthProofResp{
string
authHash
=
4
;
string
authorizeSpendHash
=
5
;
string
noteHash
=
6
;
uint32
spendFlag
=
7
;
string
spendFlag
=
7
;
TreePathProof
treeProof
=
8
;
}
...
...
@@ -331,8 +331,8 @@ message TransferInputProof{
string
authorizeSpendHash
=
3
;
string
noteHash
=
4
;
string
spendPrivKey
=
5
;
uint32
spendFlag
=
6
;
uint32
authorizeFlag
=
7
;
string
spendFlag
=
6
;
string
authorizeFlag
=
7
;
TreePathProof
treeProof
=
8
;
ShieldAmount
shieldAmount
=
9
;
string
amountRandom
=
10
;
...
...
@@ -372,14 +372,20 @@ enum NoteStatus{
USED
=
3
;
//已使用
}
enum
Role
{
SPENDER
=
0
;
RETURNER
=
1
;
AUTHORIZER
=
2
;
}
message
WalletIndexInfo
{
string
noteHash
=
1
;
string
nullifier
=
2
;
string
authorizeSpendHash
=
3
;
bool
isReturner
=
4
;
string
account
=
5
;
//账户地址
NoteStatus
status
=
6
;
SecretData
secret
=
7
;
string
noteHash
=
1
;
string
nullifier
=
2
;
string
authorizeSpendHash
=
3
;
Role
role
=
4
;
string
account
=
5
;
//账户地址
NoteStatus
status
=
6
;
SecretData
secret
=
7
;
}
...
...
plugin/dapp/mix/types/mix.pb.go
View file @
ce15f935
This diff is collapsed.
Click to expand it.
plugin/dapp/mix/wallet/mixbizdb.go
View file @
ce15f935
...
...
@@ -350,11 +350,15 @@ func (p *mixPolicy) decodeSecret(noteHash string, secretData string, privacyKeys
//如果授权为returnerAuthHash,则returner更新本地为VALID,spender侧仍为FROZEN,
info
.
AuthorizeSpendHash
=
"0"
if
len
(
rawData
.
AuthorizePubKey
)
>
LENNULLKEY
{
if
rawData
.
ReceiverPubKey
==
key
.
Privacy
.
PaymentKey
.
ReceiverPubKey
{
switch
key
.
Privacy
.
PaymentKey
.
ReceiverPubKey
{
case
rawData
.
ReceiverPubKey
:
info
.
Role
=
mixTy
.
Role_SPENDER
info
.
AuthorizeSpendHash
=
getFrString
(
mimcHashString
([]
string
{
rawData
.
ReceiverPubKey
,
rawData
.
Amount
,
rawData
.
NoteRandom
}))
}
else
if
rawData
.
ReturnPubKey
==
key
.
Privacy
.
PaymentKey
.
ReceiverPubKey
{
info
.
IsReturner
=
true
case
rawData
.
ReturnPubKey
:
info
.
Role
=
mixTy
.
Role_RETURNER
info
.
AuthorizeSpendHash
=
getFrString
(
mimcHashString
([]
string
{
rawData
.
ReturnPubKey
,
rawData
.
Amount
,
rawData
.
NoteRandom
}))
case
rawData
.
AuthorizePubKey
:
info
.
Role
=
mixTy
.
Role_AUTHORIZER
}
}
...
...
plugin/dapp/mix/wallet/proof.go
View file @
ce15f935
...
...
@@ -210,12 +210,12 @@ func (policy *mixPolicy) withdrawProof(req *mixTy.WithdrawProofReq) (*mixTy.With
resp
.
NullifierHash
=
note
.
Nullifier
resp
.
AuthorizeSpendHash
=
note
.
AuthorizeSpendHash
resp
.
NoteHash
=
note
.
NoteHash
resp
.
SpendFlag
=
1
if
note
.
IsReturner
{
resp
.
SpendFlag
=
0
resp
.
SpendFlag
=
"1"
if
note
.
Role
==
mixTy
.
Role_RETURNER
{
resp
.
SpendFlag
=
"0"
}
if
len
(
resp
.
AuthorizeSpendHash
)
>
LENNULLKEY
{
resp
.
AuthorizeFlag
=
1
resp
.
AuthorizeFlag
=
"1"
}
//get spend privacy key
...
...
@@ -260,10 +260,10 @@ func (policy *mixPolicy) authProof(req *mixTy.AuthProofReq) (*mixTy.AuthProofRes
resp
.
AuthHash
=
getFrString
(
mimcHashString
([]
string
{
resp
.
AuthPubKey
,
note
.
Secret
.
NoteRandom
}))
//default auto to paymenter
resp
.
SpendFlag
=
1
resp
.
SpendFlag
=
"1"
resp
.
AuthorizeSpendHash
=
getFrString
(
mimcHashString
([]
string
{
note
.
Secret
.
ReceiverPubKey
,
note
.
Secret
.
Amount
,
note
.
Secret
.
NoteRandom
}))
if
req
.
ToReturn
!=
0
{
resp
.
SpendFlag
=
0
resp
.
SpendFlag
=
"0"
//auth to returner
resp
.
AuthorizeSpendHash
=
getFrString
(
mimcHashString
([]
string
{
note
.
Secret
.
ReturnPubKey
,
note
.
Secret
.
Amount
,
note
.
Secret
.
NoteRandom
}))
}
...
...
@@ -313,12 +313,12 @@ func (policy *mixPolicy) getTransferInputPart(note *mixTy.WalletIndexInfo) (*mix
return
nil
,
errors
.
Wrapf
(
types
.
ErrInvalidParam
,
"payment pubkey from note=%s not match from privacyKey=%s,for account =%s"
,
note
.
Secret
.
ReceiverPubKey
,
privacyKey
.
Privacy
.
PaymentKey
.
ReceiverPubKey
,
note
.
Account
)
}
input
.
SpendFlag
=
1
if
note
.
IsReturner
{
input
.
SpendFlag
=
0
input
.
SpendFlag
=
"1"
if
note
.
Role
==
mixTy
.
Role_RETURNER
{
input
.
SpendFlag
=
"0"
}
if
len
(
input
.
AuthorizeSpendHash
)
>
LENNULLKEY
{
input
.
AuthorizeFlag
=
1
input
.
AuthorizeFlag
=
"1"
}
treeProof
,
err
:=
policy
.
getTreeProof
(
note
.
NoteHash
)
...
...
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