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
748ba0cb
Commit
748ba0cb
authored
Jun 27, 2019
by
vipwzw
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
auto ci
parent
29629ee7
Hide whitespace changes
Inline
Side-by-side
Showing
7 changed files
with
315 additions
and
226 deletions
+315
-226
action.go
plugin/dapp/paracross/executor/action.go
+75
-85
exec_del_local.go
plugin/dapp/paracross/executor/exec_del_local.go
+1
-1
exec_local.go
plugin/dapp/paracross/executor/exec_local.go
+1
-1
paracross.go
plugin/dapp/paracross/executor/paracross.go
+14
-15
superaccount.go
plugin/dapp/paracross/executor/superaccount.go
+6
-6
paracross.pb.go
plugin/dapp/paracross/types/paracross.pb.go
+215
-115
type.go
plugin/dapp/paracross/types/type.go
+3
-3
No files found.
plugin/dapp/paracross/executor/action.go
View file @
748ba0cb
...
@@ -162,21 +162,21 @@ func makeRecordReceipt(addr string, commit *pt.ParacrossCommitAction) *types.Rec
...
@@ -162,21 +162,21 @@ func makeRecordReceipt(addr string, commit *pt.ParacrossCommitAction) *types.Rec
}
}
func
makeDoneReceipt
(
execMainHeight
int64
,
commit
*
pt
.
ParacrossNodeStatus
,
func
makeDoneReceipt
(
execMainHeight
int64
,
commit
*
pt
.
ParacrossNodeStatus
,
most
,
commitCount
,
totalCount
int32
)
*
types
.
Receipt
{
most
,
commitCount
,
totalCount
int32
)
*
types
.
Receipt
{
log
:=
&
pt
.
ReceiptParacrossDone
{
log
:=
&
pt
.
ReceiptParacrossDone
{
TotalNodes
:
totalCount
,
TotalNodes
:
totalCount
,
TotalCommit
:
commitCount
,
TotalCommit
:
commitCount
,
MostSameCommit
:
most
,
MostSameCommit
:
most
,
Title
:
commit
.
Title
,
Title
:
commit
.
Title
,
Height
:
commit
.
Height
,
Height
:
commit
.
Height
,
StateHash
:
commit
.
StateHash
,
StateHash
:
commit
.
StateHash
,
BlockHash
:
commit
.
BlockHash
,
BlockHash
:
commit
.
BlockHash
,
TxCounts
:
commit
.
TxCounts
,
TxCounts
:
commit
.
TxCounts
,
TxResult
:
commit
.
TxResult
,
TxResult
:
commit
.
TxResult
,
TxHashs
:
commit
.
TxHashs
,
TxHashs
:
commit
.
TxHashs
,
CrossTxHashs
:
commit
.
CrossTxHashs
,
CrossTxHashs
:
commit
.
CrossTxHashs
,
CrossTxResult
:
commit
.
CrossTxResult
,
CrossTxResult
:
commit
.
CrossTxResult
,
MainBlockHeight
:
commit
.
MainBlockHeight
,
MainBlockHeight
:
commit
.
MainBlockHeight
,
MainBlockHash
:
commit
.
MainBlockHash
,
MainBlockHash
:
commit
.
MainBlockHash
,
}
}
...
@@ -226,16 +226,15 @@ func getMostCommit(stat *pt.ParacrossHeightStatus) (int, string) {
...
@@ -226,16 +226,15 @@ func getMostCommit(stat *pt.ParacrossHeightStatus) (int, string) {
}
}
//需要在ForkLoopCheckCommitTxDone后使用
//需要在ForkLoopCheckCommitTxDone后使用
func
getMostResults
(
mostHash
[]
byte
,
stat
*
pt
.
ParacrossHeightStatus
)
([]
byte
,
[]
byte
,[]
byte
,
[]
byte
)
{
func
getMostResults
(
mostHash
[]
byte
,
stat
*
pt
.
ParacrossHeightStatus
)
([]
byte
,
[]
byte
,
[]
byte
,
[]
byte
)
{
for
i
,
hash
:=
range
stat
.
Details
.
BlockHash
{
for
i
,
hash
:=
range
stat
.
Details
.
BlockHash
{
if
bytes
.
Equal
(
mostHash
,
hash
)
{
if
bytes
.
Equal
(
mostHash
,
hash
)
{
return
stat
.
Details
.
TxResult
[
i
],
stat
.
Details
.
TxHashs
[
i
],
stat
.
Details
.
CrossTxResult
[
i
],
stat
.
Details
.
CrossTxHashs
[
i
]
return
stat
.
Details
.
TxResult
[
i
],
stat
.
Details
.
TxHashs
[
i
],
stat
.
Details
.
CrossTxResult
[
i
],
stat
.
Details
.
CrossTxHashs
[
i
]
}
}
}
}
return
nil
,
nil
,
nil
,
nil
return
nil
,
nil
,
nil
,
nil
}
}
func
hasCommited
(
addrs
[]
string
,
addr
string
)
(
bool
,
int
)
{
func
hasCommited
(
addrs
[]
string
,
addr
string
)
(
bool
,
int
)
{
for
i
,
a
:=
range
addrs
{
for
i
,
a
:=
range
addrs
{
if
a
==
addr
{
if
a
==
addr
{
...
@@ -403,14 +402,13 @@ func (a *action) Commit(commit *pt.ParacrossCommitAction) (*types.Receipt, error
...
@@ -403,14 +402,13 @@ func (a *action) Commit(commit *pt.ParacrossCommitAction) (*types.Receipt, error
stat
.
MainHeight
=
commit
.
Status
.
MainBlockHeight
stat
.
MainHeight
=
commit
.
Status
.
MainBlockHeight
stat
.
MainHash
=
commit
.
Status
.
MainBlockHash
stat
.
MainHash
=
commit
.
Status
.
MainBlockHash
}
}
if
a
.
exec
.
GetMainHeight
()
>=
getDappForkHeight
(
pt
.
ForkLoopCheckCommitTxDone
){
if
a
.
exec
.
GetMainHeight
()
>=
getDappForkHeight
(
pt
.
ForkLoopCheckCommitTxDone
)
{
stat
.
Details
.
TxResult
=
append
(
stat
.
Details
.
TxResult
,
commit
.
Status
.
TxResult
)
stat
.
Details
.
TxResult
=
append
(
stat
.
Details
.
TxResult
,
commit
.
Status
.
TxResult
)
stat
.
Details
.
TxHashs
=
append
(
stat
.
Details
.
TxHashs
,
commit
.
Status
.
TxHashs
[
0
])
stat
.
Details
.
TxHashs
=
append
(
stat
.
Details
.
TxHashs
,
commit
.
Status
.
TxHashs
[
0
])
stat
.
Details
.
CrossTxResult
=
append
(
stat
.
Details
.
CrossTxResult
,
commit
.
Status
.
CrossTxResult
)
stat
.
Details
.
CrossTxResult
=
append
(
stat
.
Details
.
CrossTxResult
,
commit
.
Status
.
CrossTxResult
)
stat
.
Details
.
CrossTxHashs
=
append
(
stat
.
Details
.
CrossTxHashs
,
commit
.
Status
.
CrossTxHashs
[
0
])
stat
.
Details
.
CrossTxHashs
=
append
(
stat
.
Details
.
CrossTxHashs
,
commit
.
Status
.
CrossTxHashs
[
0
])
}
}
receipt
=
makeCommitReceipt
(
a
.
fromaddr
,
commit
,
nil
,
stat
)
receipt
=
makeCommitReceipt
(
a
.
fromaddr
,
commit
,
nil
,
stat
)
}
else
{
}
else
{
var
copyStat
pt
.
ParacrossHeightStatus
var
copyStat
pt
.
ParacrossHeightStatus
...
@@ -423,7 +421,7 @@ func (a *action) Commit(commit *pt.ParacrossCommitAction) (*types.Receipt, error
...
@@ -423,7 +421,7 @@ func (a *action) Commit(commit *pt.ParacrossCommitAction) (*types.Receipt, error
found
,
index
:=
hasCommited
(
stat
.
Details
.
Addrs
,
a
.
fromaddr
)
found
,
index
:=
hasCommited
(
stat
.
Details
.
Addrs
,
a
.
fromaddr
)
if
found
{
if
found
{
stat
.
Details
.
BlockHash
[
index
]
=
commit
.
Status
.
BlockHash
stat
.
Details
.
BlockHash
[
index
]
=
commit
.
Status
.
BlockHash
if
a
.
exec
.
GetMainHeight
()
>=
getDappForkHeight
(
pt
.
ForkLoopCheckCommitTxDone
){
if
a
.
exec
.
GetMainHeight
()
>=
getDappForkHeight
(
pt
.
ForkLoopCheckCommitTxDone
)
{
stat
.
Details
.
TxResult
[
index
]
=
commit
.
Status
.
TxResult
stat
.
Details
.
TxResult
[
index
]
=
commit
.
Status
.
TxResult
stat
.
Details
.
TxHashs
[
index
]
=
commit
.
Status
.
TxHashs
[
0
]
stat
.
Details
.
TxHashs
[
index
]
=
commit
.
Status
.
TxHashs
[
0
]
stat
.
Details
.
CrossTxResult
[
index
]
=
commit
.
Status
.
CrossTxResult
stat
.
Details
.
CrossTxResult
[
index
]
=
commit
.
Status
.
CrossTxResult
...
@@ -432,7 +430,7 @@ func (a *action) Commit(commit *pt.ParacrossCommitAction) (*types.Receipt, error
...
@@ -432,7 +430,7 @@ func (a *action) Commit(commit *pt.ParacrossCommitAction) (*types.Receipt, error
}
else
{
}
else
{
stat
.
Details
.
Addrs
=
append
(
stat
.
Details
.
Addrs
,
a
.
fromaddr
)
stat
.
Details
.
Addrs
=
append
(
stat
.
Details
.
Addrs
,
a
.
fromaddr
)
stat
.
Details
.
BlockHash
=
append
(
stat
.
Details
.
BlockHash
,
commit
.
Status
.
BlockHash
)
stat
.
Details
.
BlockHash
=
append
(
stat
.
Details
.
BlockHash
,
commit
.
Status
.
BlockHash
)
if
a
.
exec
.
GetMainHeight
()
>=
getDappForkHeight
(
pt
.
ForkLoopCheckCommitTxDone
){
if
a
.
exec
.
GetMainHeight
()
>=
getDappForkHeight
(
pt
.
ForkLoopCheckCommitTxDone
)
{
stat
.
Details
.
TxResult
=
append
(
stat
.
Details
.
TxResult
,
commit
.
Status
.
TxResult
)
stat
.
Details
.
TxResult
=
append
(
stat
.
Details
.
TxResult
,
commit
.
Status
.
TxResult
)
stat
.
Details
.
TxHashs
=
append
(
stat
.
Details
.
TxHashs
,
commit
.
Status
.
TxHashs
[
0
])
stat
.
Details
.
TxHashs
=
append
(
stat
.
Details
.
TxHashs
,
commit
.
Status
.
TxHashs
[
0
])
stat
.
Details
.
CrossTxResult
=
append
(
stat
.
Details
.
CrossTxResult
,
commit
.
Status
.
CrossTxResult
)
stat
.
Details
.
CrossTxResult
=
append
(
stat
.
Details
.
CrossTxResult
,
commit
.
Status
.
CrossTxResult
)
...
@@ -444,13 +442,13 @@ func (a *action) Commit(commit *pt.ParacrossCommitAction) (*types.Receipt, error
...
@@ -444,13 +442,13 @@ func (a *action) Commit(commit *pt.ParacrossCommitAction) (*types.Receipt, error
}
}
//平行链fork pt.ForkCommitTx=0,主链在ForkCommitTx后支持nodegroup,这里平行链dappFork一定为true
//平行链fork pt.ForkCommitTx=0,主链在ForkCommitTx后支持nodegroup,这里平行链dappFork一定为true
if
types
.
IsDappFork
(
commit
.
Status
.
MainBlockHeight
,
pt
.
ParaX
,
pt
.
ForkCommitTx
)
{
if
types
.
IsDappFork
(
commit
.
Status
.
MainBlockHeight
,
pt
.
ParaX
,
pt
.
ForkCommitTx
)
{
updateCommitAddrs
(
stat
,
nodes
,
a
.
exec
.
GetMainHeight
())
updateCommitAddrs
(
stat
,
nodes
,
a
.
exec
.
GetMainHeight
())
}
}
if
commit
.
Status
.
Height
>
titleStatus
.
Height
+
1
{
if
commit
.
Status
.
Height
>
titleStatus
.
Height
+
1
{
saveTitleHeight
(
a
.
db
,
calcTitleHeightKey
(
commit
.
Status
.
Title
,
commit
.
Status
.
Height
),
stat
)
saveTitleHeight
(
a
.
db
,
calcTitleHeightKey
(
commit
.
Status
.
Title
,
commit
.
Status
.
Height
),
stat
)
//平行链由主链共识无缝切换,即接收第一个收到的高度,可以不从0开始
//平行链由主链共识无缝切换,即接收第一个收到的高度,可以不从0开始
paraSwitch
,
err
:=
isParaSelfConsensSwitch
(
a
.
db
,
stat
,
titleStatus
)
paraSwitch
,
err
:=
isParaSelfConsensSwitch
(
a
.
db
,
stat
,
titleStatus
)
if
err
!=
nil
{
if
err
!=
nil
{
return
nil
,
err
return
nil
,
err
}
}
...
@@ -458,11 +456,11 @@ func (a *action) Commit(commit *pt.ParacrossCommitAction) (*types.Receipt, error
...
@@ -458,11 +456,11 @@ func (a *action) Commit(commit *pt.ParacrossCommitAction) (*types.Receipt, error
return
receipt
,
nil
return
receipt
,
nil
}
}
}
}
return
a
.
commitTxDone
(
commit
.
Status
,
stat
,
titleStatus
,
nodes
,
receipt
)
return
a
.
commitTxDone
(
commit
.
Status
,
stat
,
titleStatus
,
nodes
,
receipt
)
}
}
func
(
a
*
action
)
commitTxDone
(
nodeStatus
*
pt
.
ParacrossNodeStatus
,
stat
*
pt
.
ParacrossHeightStatus
,
titleStatus
*
pt
.
ParacrossStatus
,
func
(
a
*
action
)
commitTxDone
(
nodeStatus
*
pt
.
ParacrossNodeStatus
,
stat
*
pt
.
ParacrossHeightStatus
,
titleStatus
*
pt
.
ParacrossStatus
,
nodes
map
[
string
]
struct
{},
receipt
*
types
.
Receipt
)
(
*
types
.
Receipt
,
error
)
{
nodes
map
[
string
]
struct
{},
receipt
*
types
.
Receipt
)
(
*
types
.
Receipt
,
error
)
{
clog
.
Info
(
"paracross.Commit commit"
,
"stat.title"
,
stat
.
Title
,
"stat.height"
,
stat
.
Height
,
"notes"
,
len
(
nodes
))
clog
.
Info
(
"paracross.Commit commit"
,
"stat.title"
,
stat
.
Title
,
"stat.height"
,
stat
.
Height
,
"notes"
,
len
(
nodes
))
for
i
,
v
:=
range
stat
.
Details
.
Addrs
{
for
i
,
v
:=
range
stat
.
Details
.
Addrs
{
clog
.
Info
(
"paracross.Commit commit detail"
,
"addr"
,
v
,
"hash"
,
hex
.
EncodeToString
(
stat
.
Details
.
BlockHash
[
i
]))
clog
.
Info
(
"paracross.Commit commit detail"
,
"addr"
,
v
,
"hash"
,
hex
.
EncodeToString
(
stat
.
Details
.
BlockHash
[
i
]))
...
@@ -482,12 +480,11 @@ func (a *action)commitTxDone(nodeStatus *pt.ParacrossNodeStatus, stat *pt.Paracr
...
@@ -482,12 +480,11 @@ func (a *action)commitTxDone(nodeStatus *pt.ParacrossNodeStatus, stat *pt.Paracr
receiptDone
:=
makeDoneReceipt
(
a
.
exec
.
GetMainHeight
(),
nodeStatus
,
int32
(
most
),
int32
(
commitCount
),
int32
(
len
(
nodes
)))
receiptDone
:=
makeDoneReceipt
(
a
.
exec
.
GetMainHeight
(),
nodeStatus
,
int32
(
most
),
int32
(
commitCount
),
int32
(
len
(
nodes
)))
receipt
=
mergeReceipt
(
receipt
,
receiptDone
)
receipt
=
mergeReceipt
(
receipt
,
receiptDone
)
return
a
.
commitTxDoneStep2
(
nodeStatus
,
stat
,
titleStatus
,
receipt
)
return
a
.
commitTxDoneStep2
(
nodeStatus
,
stat
,
titleStatus
,
receipt
)
}
}
func
(
a
*
action
)
commitTxDoneStep2
(
nodeStatus
*
pt
.
ParacrossNodeStatus
,
stat
*
pt
.
ParacrossHeightStatus
,
titleStatus
*
pt
.
ParacrossStatus
,
func
(
a
*
action
)
commitTxDoneStep2
(
nodeStatus
*
pt
.
ParacrossNodeStatus
,
stat
*
pt
.
ParacrossHeightStatus
,
titleStatus
*
pt
.
ParacrossStatus
,
receipt
*
types
.
Receipt
)
(
*
types
.
Receipt
,
error
)
{
receipt
*
types
.
Receipt
)
(
*
types
.
Receipt
,
error
){
titleStatus
.
Title
=
nodeStatus
.
Title
titleStatus
.
Title
=
nodeStatus
.
Title
titleStatus
.
Height
=
nodeStatus
.
Height
titleStatus
.
Height
=
nodeStatus
.
Height
...
@@ -503,7 +500,7 @@ func (a *action)commitTxDoneStep2(nodeStatus *pt.ParacrossNodeStatus, stat *pt.P
...
@@ -503,7 +500,7 @@ func (a *action)commitTxDoneStep2(nodeStatus *pt.ParacrossNodeStatus, stat *pt.P
//parallel chain not need to process cross commit tx here
//parallel chain not need to process cross commit tx here
if
types
.
IsPara
()
{
if
types
.
IsPara
()
{
//平行连进行奖励分配
//平行连进行奖励分配
rewardReceipt
,
err
:=
a
.
reward
(
nodeStatus
,
stat
)
rewardReceipt
,
err
:=
a
.
reward
(
nodeStatus
,
stat
)
//错误会导致和主链处理的共识结果不一致
//错误会导致和主链处理的共识结果不一致
if
err
!=
nil
{
if
err
!=
nil
{
clog
.
Error
(
"paracross mining reward err"
,
"height"
,
nodeStatus
.
Height
,
clog
.
Error
(
"paracross mining reward err"
,
"height"
,
nodeStatus
.
Height
,
...
@@ -515,16 +512,15 @@ func (a *action)commitTxDoneStep2(nodeStatus *pt.ParacrossNodeStatus, stat *pt.P
...
@@ -515,16 +512,15 @@ func (a *action)commitTxDoneStep2(nodeStatus *pt.ParacrossNodeStatus, stat *pt.P
}
}
//主链,处理跨链交易
//主链,处理跨链交易
r
,
err
:=
a
.
procCrossTxs
(
nodeStatus
)
r
,
err
:=
a
.
procCrossTxs
(
nodeStatus
)
if
err
!=
nil
{
if
err
!=
nil
{
return
nil
,
err
return
nil
,
err
}
}
receipt
=
mergeReceipt
(
receipt
,
r
)
receipt
=
mergeReceipt
(
receipt
,
r
)
return
receipt
,
nil
return
receipt
,
nil
}
}
func
(
a
*
action
)
procCrossTxs
(
status
*
pt
.
ParacrossNodeStatus
)
(
*
types
.
Receipt
,
error
)
{
func
(
a
*
action
)
procCrossTxs
(
status
*
pt
.
ParacrossNodeStatus
)(
*
types
.
Receipt
,
error
){
haveCrossTxs
:=
len
(
status
.
CrossTxHashs
)
>
0
haveCrossTxs
:=
len
(
status
.
CrossTxHashs
)
>
0
if
status
.
Height
>
0
&&
types
.
IsDappFork
(
status
.
MainBlockHeight
,
pt
.
ParaX
,
pt
.
ForkCommitTx
)
&&
len
(
status
.
CrossTxHashs
[
0
])
==
0
{
if
status
.
Height
>
0
&&
types
.
IsDappFork
(
status
.
MainBlockHeight
,
pt
.
ParaX
,
pt
.
ForkCommitTx
)
&&
len
(
status
.
CrossTxHashs
[
0
])
==
0
{
haveCrossTxs
=
false
haveCrossTxs
=
false
...
@@ -536,14 +532,13 @@ func (a *action) procCrossTxs(status *pt.ParacrossNodeStatus)(*types.Receipt, er
...
@@ -536,14 +532,13 @@ func (a *action) procCrossTxs(status *pt.ParacrossNodeStatus)(*types.Receipt, er
if
err
!=
nil
{
if
err
!=
nil
{
return
nil
,
err
return
nil
,
err
}
}
return
crossTxReceipt
,
nil
return
crossTxReceipt
,
nil
}
}
return
nil
,
nil
return
nil
,
nil
}
}
//由于可能对当前块的共识交易进行处理,需要全部数据保存到statedb,通过tx获取数据无法处理当前块的场景
//由于可能对当前块的共识交易进行处理,需要全部数据保存到statedb,通过tx获取数据无法处理当前块的场景
func
(
a
*
action
)
loopCommitTxDone
(
title
string
)
(
*
types
.
Receipt
,
error
)
{
func
(
a
*
action
)
loopCommitTxDone
(
title
string
)
(
*
types
.
Receipt
,
error
)
{
receipt
:=
&
types
.
Receipt
{}
receipt
:=
&
types
.
Receipt
{}
nodes
,
_
,
err
:=
getParacrossNodes
(
a
.
db
,
title
)
nodes
,
_
,
err
:=
getParacrossNodes
(
a
.
db
,
title
)
...
@@ -556,14 +551,14 @@ func (a *action) loopCommitTxDone(title string)(*types.Receipt, error){
...
@@ -556,14 +551,14 @@ func (a *action) loopCommitTxDone(title string)(*types.Receipt, error){
return
nil
,
errors
.
Wrapf
(
err
,
"getTitle:%s"
,
title
)
return
nil
,
errors
.
Wrapf
(
err
,
"getTitle:%s"
,
title
)
}
}
//当前共识高度还未到分叉高度,则不处理
//当前共识高度还未到分叉高度,则不处理
if
titleStatus
.
GetMainHeight
()
<
getDappForkHeight
(
pt
.
ForkLoopCheckCommitTxDone
){
if
titleStatus
.
GetMainHeight
()
<
getDappForkHeight
(
pt
.
ForkLoopCheckCommitTxDone
)
{
return
nil
,
errors
.
Wrapf
(
pt
.
ErrForkHeightNotReach
,
return
nil
,
errors
.
Wrapf
(
pt
.
ErrForkHeightNotReach
,
"titleHeight:%d,forkHeight"
,
titleStatus
.
MainHeight
,
getDappForkHeight
(
pt
.
ForkLoopCheckCommitTxDone
))
"titleHeight:%d,forkHeight"
,
titleStatus
.
MainHeight
,
getDappForkHeight
(
pt
.
ForkLoopCheckCommitTxDone
))
}
}
loopHeight
:=
titleStatus
.
Height
loopHeight
:=
titleStatus
.
Height
for
{
for
{
loopHeight
++
loopHeight
++
stat
,
err
:=
getTitleHeight
(
a
.
db
,
calcTitleHeightKey
(
title
,
loopHeight
))
stat
,
err
:=
getTitleHeight
(
a
.
db
,
calcTitleHeightKey
(
title
,
loopHeight
))
...
@@ -572,28 +567,27 @@ func (a *action) loopCommitTxDone(title string)(*types.Receipt, error){
...
@@ -572,28 +567,27 @@ func (a *action) loopCommitTxDone(title string)(*types.Receipt, error){
return
receipt
,
err
return
receipt
,
err
}
}
//防止无限循环
//防止无限循环
if
stat
.
MainHeight
>
a
.
exec
.
GetMainHeight
(){
if
stat
.
MainHeight
>
a
.
exec
.
GetMainHeight
()
{
return
receipt
,
nil
return
receipt
,
nil
}
}
r
,
err
:=
a
.
checkCommitTxDone
(
title
,
stat
,
nodes
)
r
,
err
:=
a
.
checkCommitTxDone
(
title
,
stat
,
nodes
)
if
err
!=
nil
{
if
err
!=
nil
{
clog
.
Error
(
"paracross.Commit checkExecCommitTxDone"
,
"para title"
,
title
,
"height"
,
stat
.
Height
,
"error"
,
err
,
)
clog
.
Error
(
"paracross.Commit checkExecCommitTxDone"
,
"para title"
,
title
,
"height"
,
stat
.
Height
,
"error"
,
err
)
return
receipt
,
nil
return
receipt
,
nil
}
}
if
r
==
nil
{
if
r
==
nil
{
return
receipt
,
nil
return
receipt
,
nil
}
}
receipt
=
mergeReceipt
(
receipt
,
r
)
receipt
=
mergeReceipt
(
receipt
,
r
)
}
}
return
receipt
,
nil
return
receipt
,
nil
}
}
func
(
a
*
action
)
checkCommitTxDone
(
title
string
,
stat
*
pt
.
ParacrossHeightStatus
,
nodes
map
[
string
]
struct
{})
(
*
types
.
Receipt
,
error
)
{
func
(
a
*
action
)
checkCommitTxDone
(
title
string
,
stat
*
pt
.
ParacrossHeightStatus
,
nodes
map
[
string
]
struct
{})(
*
types
.
Receipt
,
error
){
receipt
:=
&
types
.
Receipt
{}
receipt
:=
&
types
.
Receipt
{}
status
,
err
:=
getTitle
(
a
.
db
,
calcTitleKey
(
title
))
status
,
err
:=
getTitle
(
a
.
db
,
calcTitleKey
(
title
))
if
err
!=
nil
{
if
err
!=
nil
{
...
@@ -605,20 +599,19 @@ func (a *action) checkCommitTxDone(title string,stat *pt.ParacrossHeightStatus,n
...
@@ -605,20 +599,19 @@ func (a *action) checkCommitTxDone(title string,stat *pt.ParacrossHeightStatus,n
return
nil
,
nil
return
nil
,
nil
}
}
updateCommitAddrs
(
stat
,
nodes
,
a
.
exec
.
GetMainHeight
())
updateCommitAddrs
(
stat
,
nodes
,
a
.
exec
.
GetMainHeight
())
most
,
_
:=
getMostCommit
(
stat
)
most
,
_
:=
getMostCommit
(
stat
)
if
!
isCommitDone
(
nodes
,
most
)
{
if
!
isCommitDone
(
nodes
,
most
)
{
return
nil
,
nil
return
nil
,
nil
}
}
return
a
.
commitTxDoneByStat
(
stat
,
status
,
nodes
,
receipt
)
return
a
.
commitTxDoneByStat
(
stat
,
status
,
nodes
,
receipt
)
}
}
//只根据stat的信息在commitDone之后重构一个commitStatus做后续处理
//只根据stat的信息在commitDone之后重构一个commitStatus做后续处理
func
(
a
*
action
)
commitTxDoneByStat
(
stat
*
pt
.
ParacrossHeightStatus
,
titleStatus
*
pt
.
ParacrossStatus
,
func
(
a
*
action
)
commitTxDoneByStat
(
stat
*
pt
.
ParacrossHeightStatus
,
titleStatus
*
pt
.
ParacrossStatus
,
nodes
map
[
string
]
struct
{},
receipt
*
types
.
Receipt
)
(
*
types
.
Receipt
,
error
)
{
nodes
map
[
string
]
struct
{},
receipt
*
types
.
Receipt
)
(
*
types
.
Receipt
,
error
)
{
clog
.
Info
(
"paracross.Commit commit"
,
"stat.title"
,
stat
.
Title
,
"stat.height"
,
stat
.
Height
,
"notes"
,
len
(
nodes
))
clog
.
Info
(
"paracross.Commit commit"
,
"stat.title"
,
stat
.
Title
,
"stat.height"
,
stat
.
Height
,
"notes"
,
len
(
nodes
))
for
i
,
v
:=
range
stat
.
Details
.
Addrs
{
for
i
,
v
:=
range
stat
.
Details
.
Addrs
{
...
@@ -635,25 +628,25 @@ func (a *action) commitTxDoneByStat(stat *pt.ParacrossHeightStatus,titleStatus *
...
@@ -635,25 +628,25 @@ func (a *action) commitTxDoneByStat(stat *pt.ParacrossHeightStatus,titleStatus *
stat
.
Status
=
pt
.
ParacrossStatusCommitDone
stat
.
Status
=
pt
.
ParacrossStatusCommitDone
saveTitleHeight
(
a
.
db
,
calcTitleHeightKey
(
stat
.
Title
,
stat
.
Height
),
stat
)
saveTitleHeight
(
a
.
db
,
calcTitleHeightKey
(
stat
.
Title
,
stat
.
Height
),
stat
)
txRst
,
txHash
,
crossTxRst
,
crossTxHash
:=
getMostResults
([]
byte
(
mostHash
),
stat
)
txRst
,
txHash
,
crossTxRst
,
crossTxHash
:=
getMostResults
([]
byte
(
mostHash
),
stat
)
finalStatus
:=
&
pt
.
ParacrossNodeStatus
{
finalStatus
:=
&
pt
.
ParacrossNodeStatus
{
MainBlockHash
:
stat
.
MainHash
,
MainBlockHash
:
stat
.
MainHash
,
MainBlockHeight
:
stat
.
MainHeight
,
MainBlockHeight
:
stat
.
MainHeight
,
Title
:
stat
.
Title
,
Title
:
stat
.
Title
,
Height
:
stat
.
Height
,
Height
:
stat
.
Height
,
BlockHash
:
[]
byte
(
mostHash
),
BlockHash
:
[]
byte
(
mostHash
),
TxResult
:
txRst
,
TxResult
:
txRst
,
TxHashs
:
[][]
byte
{
txHash
},
TxHashs
:
[][]
byte
{
txHash
},
CrossTxResult
:
crossTxRst
,
CrossTxResult
:
crossTxRst
,
CrossTxHashs
:
[][]
byte
{
crossTxHash
},
CrossTxHashs
:
[][]
byte
{
crossTxHash
},
}
}
//stat.ConsensBlockHash = []byte(mostHash)
//stat.ConsensBlockHash = []byte(mostHash)
//add commit done receipt
//add commit done receipt
receiptDone
:=
makeDoneReceipt
(
a
.
exec
.
GetMainHeight
(),
finalStatus
,
int32
(
most
),
int32
(
commitCount
),
int32
(
len
(
nodes
)))
receiptDone
:=
makeDoneReceipt
(
a
.
exec
.
GetMainHeight
(),
finalStatus
,
int32
(
most
),
int32
(
commitCount
),
int32
(
len
(
nodes
)))
receipt
=
mergeReceipt
(
receipt
,
receiptDone
)
receipt
=
mergeReceipt
(
receipt
,
receiptDone
)
clog
.
Info
(
"paracross.Commit commit ----pass"
,
"most"
,
most
,
"mostHash"
,
hex
.
EncodeToString
([]
byte
(
mostHash
)))
clog
.
Info
(
"paracross.Commit commit ----pass"
,
"most"
,
most
,
"mostHash"
,
hex
.
EncodeToString
([]
byte
(
mostHash
)))
return
a
.
commitTxDoneStep2
(
finalStatus
,
stat
,
titleStatus
,
receipt
)
return
a
.
commitTxDoneStep2
(
finalStatus
,
stat
,
titleStatus
,
receipt
)
}
}
//平行链自共识无缝切换条件:1,平行链没有共识过,2:commit高度是大于自共识分叉高度且上一次共识的主链高度小于自共识分叉高度,保证只运行一次,
//平行链自共识无缝切换条件:1,平行链没有共识过,2:commit高度是大于自共识分叉高度且上一次共识的主链高度小于自共识分叉高度,保证只运行一次,
...
@@ -700,16 +693,15 @@ func (a *action) execCrossTx(tx *types.TransactionDetail, crossTxHash []byte) (*
...
@@ -700,16 +693,15 @@ func (a *action) execCrossTx(tx *types.TransactionDetail, crossTxHash []byte) (*
return
nil
,
errors
.
Cause
(
err
)
return
nil
,
errors
.
Cause
(
err
)
}
}
clog
.
Info
(
"paracross.Commit WithdrawCoins"
,
"txHash"
,
hex
.
EncodeToString
(
crossTxHash
))
clog
.
Info
(
"paracross.Commit WithdrawCoins"
,
"txHash"
,
hex
.
EncodeToString
(
crossTxHash
))
return
receiptWithdraw
,
nil
return
receiptWithdraw
,
nil
}
}
return
nil
,
nil
return
nil
,
nil
}
}
func
getCrossTxHashs
(
api
client
.
QueueProtocolAPI
,
status
*
pt
.
ParacrossNodeStatus
)
([][]
byte
,
[]
byte
,
error
)
{
func
getCrossTxHashs
(
api
client
.
QueueProtocolAPI
,
status
*
pt
.
ParacrossNodeStatus
)
([][]
byte
,
[]
byte
,
error
)
{
if
!
types
.
IsDappFork
(
status
.
MainBlockHeight
,
pt
.
ParaX
,
pt
.
ForkCommitTx
){
if
!
types
.
IsDappFork
(
status
.
MainBlockHeight
,
pt
.
ParaX
,
pt
.
ForkCommitTx
)
{
return
status
.
CrossTxHashs
,
status
.
CrossTxResult
,
nil
return
status
.
CrossTxHashs
,
status
.
CrossTxResult
,
nil
}
}
...
@@ -719,7 +711,6 @@ func getCrossTxHashs(api client.QueueProtocolAPI, status *pt.ParacrossNodeStatus
...
@@ -719,7 +711,6 @@ func getCrossTxHashs(api client.QueueProtocolAPI, status *pt.ParacrossNodeStatus
return
nil
,
nil
,
types
.
ErrCheckTxHash
return
nil
,
nil
,
types
.
ErrCheckTxHash
}
}
blockDetail
,
err
:=
GetBlock
(
api
,
status
.
MainBlockHash
)
blockDetail
,
err
:=
GetBlock
(
api
,
status
.
MainBlockHash
)
if
err
!=
nil
{
if
err
!=
nil
{
return
nil
,
nil
,
err
return
nil
,
nil
,
err
...
@@ -760,7 +751,6 @@ func getCrossTxHashs(api client.QueueProtocolAPI, status *pt.ParacrossNodeStatus
...
@@ -760,7 +751,6 @@ func getCrossTxHashs(api client.QueueProtocolAPI, status *pt.ParacrossNodeStatus
}
}
func
(
a
*
action
)
execCrossTxs
(
status
*
pt
.
ParacrossNodeStatus
)
(
*
types
.
Receipt
,
error
)
{
func
(
a
*
action
)
execCrossTxs
(
status
*
pt
.
ParacrossNodeStatus
)
(
*
types
.
Receipt
,
error
)
{
var
receipt
types
.
Receipt
var
receipt
types
.
Receipt
...
@@ -774,23 +764,23 @@ func (a *action) execCrossTxs(status *pt.ParacrossNodeStatus) (*types.Receipt, e
...
@@ -774,23 +764,23 @@ func (a *action) execCrossTxs(status *pt.ParacrossNodeStatus) (*types.Receipt, e
}
}
for
i
:=
0
;
i
<
len
(
crossTxHashs
);
i
++
{
for
i
:=
0
;
i
<
len
(
crossTxHashs
);
i
++
{
clog
.
Info
(
"paracross.Commit commitDone"
,
"do cross number"
,
i
,
"hash"
,
hex
.
EncodeToString
(
crossTxHashs
[
i
]),
clog
.
Info
(
"paracross.Commit commitDone"
,
"do cross number"
,
i
,
"hash"
,
hex
.
EncodeToString
(
crossTxHashs
[
i
]),
"res"
,
util
.
BitMapBit
(
crossTxResult
,
uint32
(
i
)))
"res"
,
util
.
BitMapBit
(
crossTxResult
,
uint32
(
i
)))
if
util
.
BitMapBit
(
crossTxResult
,
uint32
(
i
))
{
if
util
.
BitMapBit
(
crossTxResult
,
uint32
(
i
))
{
tx
,
err
:=
GetTx
(
a
.
api
,
crossTxHashs
[
i
])
tx
,
err
:=
GetTx
(
a
.
api
,
crossTxHashs
[
i
])
if
err
!=
nil
{
if
err
!=
nil
{
clog
.
Crit
(
"paracross.Commit Load Tx failed"
,
"para title"
,
title
,
"para height"
,
status
.
Height
,
clog
.
Crit
(
"paracross.Commit Load Tx failed"
,
"para title"
,
title
,
"para height"
,
status
.
Height
,
"para tx index"
,
i
,
"error"
,
err
,
"txHash"
,
hex
.
EncodeToString
(
crossTxHashs
[
i
]))
"para tx index"
,
i
,
"error"
,
err
,
"txHash"
,
hex
.
EncodeToString
(
crossTxHashs
[
i
]))
return
nil
,
err
return
nil
,
err
}
}
if
tx
==
nil
{
if
tx
==
nil
{
clog
.
Error
(
"paracross.Commit Load Tx failed"
,
"para title"
,
title
,
"para height"
,
status
.
Height
,
clog
.
Error
(
"paracross.Commit Load Tx failed"
,
"para title"
,
title
,
"para height"
,
status
.
Height
,
"para tx index"
,
i
,
"error"
,
err
,
"txHash"
,
hex
.
EncodeToString
(
crossTxHashs
[
i
]))
"para tx index"
,
i
,
"error"
,
err
,
"txHash"
,
hex
.
EncodeToString
(
crossTxHashs
[
i
]))
return
nil
,
types
.
ErrHashNotExist
return
nil
,
types
.
ErrHashNotExist
}
}
receiptCross
,
err
:=
a
.
execCrossTx
(
tx
,
crossTxHashs
[
i
])
receiptCross
,
err
:=
a
.
execCrossTx
(
tx
,
crossTxHashs
[
i
])
if
err
!=
nil
{
if
err
!=
nil
{
clog
.
Error
(
"paracross.Commit execCrossTx"
,
"para title"
,
title
,
"para height"
,
status
.
Height
,
clog
.
Error
(
"paracross.Commit execCrossTx"
,
"para title"
,
title
,
"para height"
,
status
.
Height
,
"para tx index"
,
i
,
"error"
,
err
)
"para tx index"
,
i
,
"error"
,
err
)
return
nil
,
errors
.
Cause
(
err
)
return
nil
,
errors
.
Cause
(
err
)
}
}
...
...
plugin/dapp/paracross/executor/exec_del_local.go
View file @
748ba0cb
...
@@ -77,7 +77,7 @@ func (e *Paracross) ExecDelLocal_NodeConfig(payload *pt.ParaNodeAddrConfig, tx *
...
@@ -77,7 +77,7 @@ func (e *Paracross) ExecDelLocal_NodeConfig(payload *pt.ParaNodeAddrConfig, tx *
}
}
key
:=
calcLocalNodeTitleDone
(
g
.
Title
,
g
.
TargetAddr
)
key
:=
calcLocalNodeTitleDone
(
g
.
Title
,
g
.
TargetAddr
)
set
.
KV
=
append
(
set
.
KV
,
&
types
.
KeyValue
{
Key
:
key
,
Value
:
nil
})
set
.
KV
=
append
(
set
.
KV
,
&
types
.
KeyValue
{
Key
:
key
,
Value
:
nil
})
}
else
if
log
.
Ty
==
pt
.
TyLogParacrossCommitDone
{
}
else
if
log
.
Ty
==
pt
.
TyLogParacrossCommitDone
{
var
g
pt
.
ReceiptParacrossDone
var
g
pt
.
ReceiptParacrossDone
types
.
Decode
(
log
.
Log
,
&
g
)
types
.
Decode
(
log
.
Log
,
&
g
)
g
.
Height
=
g
.
Height
-
1
g
.
Height
=
g
.
Height
-
1
...
...
plugin/dapp/paracross/executor/exec_local.go
View file @
748ba0cb
...
@@ -81,7 +81,7 @@ func (e *Paracross) ExecLocal_NodeConfig(payload *pt.ParaNodeAddrConfig, tx *typ
...
@@ -81,7 +81,7 @@ func (e *Paracross) ExecLocal_NodeConfig(payload *pt.ParaNodeAddrConfig, tx *typ
}
}
key
:=
calcLocalNodeTitleDone
(
g
.
Title
,
g
.
TargetAddr
)
key
:=
calcLocalNodeTitleDone
(
g
.
Title
,
g
.
TargetAddr
)
set
.
KV
=
append
(
set
.
KV
,
&
types
.
KeyValue
{
Key
:
key
,
Value
:
types
.
Encode
(
&
g
)})
set
.
KV
=
append
(
set
.
KV
,
&
types
.
KeyValue
{
Key
:
key
,
Value
:
types
.
Encode
(
&
g
)})
}
else
if
log
.
Ty
==
pt
.
TyLogParacrossCommitDone
{
}
else
if
log
.
Ty
==
pt
.
TyLogParacrossCommitDone
{
var
g
pt
.
ReceiptParacrossDone
var
g
pt
.
ReceiptParacrossDone
types
.
Decode
(
log
.
Log
,
&
g
)
types
.
Decode
(
log
.
Log
,
&
g
)
...
...
plugin/dapp/paracross/executor/paracross.go
View file @
748ba0cb
...
@@ -69,7 +69,6 @@ func (c *Paracross) checkTxGroup(tx *types.Transaction, index int) ([]*types.Tra
...
@@ -69,7 +69,6 @@ func (c *Paracross) checkTxGroup(tx *types.Transaction, index int) ([]*types.Tra
func
(
c
*
Paracross
)
saveLocalParaTxs
(
tx
*
types
.
Transaction
,
isDel
bool
)
(
*
types
.
LocalDBSet
,
error
)
{
func
(
c
*
Paracross
)
saveLocalParaTxs
(
tx
*
types
.
Transaction
,
isDel
bool
)
(
*
types
.
LocalDBSet
,
error
)
{
var
payload
pt
.
ParacrossAction
var
payload
pt
.
ParacrossAction
err
:=
types
.
Decode
(
tx
.
Payload
,
&
payload
)
err
:=
types
.
Decode
(
tx
.
Payload
,
&
payload
)
if
err
!=
nil
{
if
err
!=
nil
{
...
@@ -85,22 +84,22 @@ func (c *Paracross) saveLocalParaTxs(tx *types.Transaction, isDel bool) (*types.
...
@@ -85,22 +84,22 @@ func (c *Paracross) saveLocalParaTxs(tx *types.Transaction, isDel bool) (*types.
return
nil
,
err
return
nil
,
err
}
}
return
c
.
udpateLocalParaTxs
(
commit
.
Status
.
Title
,
commit
.
Status
.
Height
,
crossTxHashs
,
crossTxResult
,
isDel
)
return
c
.
udpateLocalParaTxs
(
commit
.
Status
.
Title
,
commit
.
Status
.
Height
,
crossTxHashs
,
crossTxResult
,
isDel
)
}
}
//无法获取到commit tx信息,从commitDone 结构里面构建
//无法获取到commit tx信息,从commitDone 结构里面构建
func
(
c
*
Paracross
)
saveLocalParaTxsFork
(
commitDone
*
pt
.
ReceiptParacrossDone
,
isDel
bool
)
(
*
types
.
LocalDBSet
,
error
)
{
func
(
c
*
Paracross
)
saveLocalParaTxsFork
(
commitDone
*
pt
.
ReceiptParacrossDone
,
isDel
bool
)
(
*
types
.
LocalDBSet
,
error
)
{
status
:=
&
pt
.
ParacrossNodeStatus
{
status
:=
&
pt
.
ParacrossNodeStatus
{
MainBlockHash
:
commitDone
.
MainBlockHash
,
MainBlockHash
:
commitDone
.
MainBlockHash
,
MainBlockHeight
:
commitDone
.
MainBlockHeight
,
MainBlockHeight
:
commitDone
.
MainBlockHeight
,
Title
:
commitDone
.
Title
,
Title
:
commitDone
.
Title
,
Height
:
commitDone
.
Height
,
Height
:
commitDone
.
Height
,
BlockHash
:
commitDone
.
BlockHash
,
BlockHash
:
commitDone
.
BlockHash
,
TxResult
:
commitDone
.
TxResult
,
TxResult
:
commitDone
.
TxResult
,
TxHashs
:
commitDone
.
TxHashs
,
TxHashs
:
commitDone
.
TxHashs
,
CrossTxResult
:
commitDone
.
CrossTxResult
,
CrossTxResult
:
commitDone
.
CrossTxResult
,
CrossTxHashs
:
commitDone
.
CrossTxHashs
,
CrossTxHashs
:
commitDone
.
CrossTxHashs
,
}
}
crossTxHashs
,
crossTxResult
,
err
:=
getCrossTxHashs
(
c
.
GetAPI
(),
status
)
crossTxHashs
,
crossTxResult
,
err
:=
getCrossTxHashs
(
c
.
GetAPI
(),
status
)
...
@@ -108,11 +107,11 @@ func (c *Paracross) saveLocalParaTxsFork(commitDone *pt.ReceiptParacrossDone,isD
...
@@ -108,11 +107,11 @@ func (c *Paracross) saveLocalParaTxsFork(commitDone *pt.ReceiptParacrossDone,isD
return
nil
,
err
return
nil
,
err
}
}
return
c
.
udpateLocalParaTxs
(
commitDone
.
Title
,
commitDone
.
Height
,
crossTxHashs
,
crossTxResult
,
isDel
)
return
c
.
udpateLocalParaTxs
(
commitDone
.
Title
,
commitDone
.
Height
,
crossTxHashs
,
crossTxResult
,
isDel
)
}
}
func
(
c
*
Paracross
)
udpateLocalParaTxs
(
paraTitle
string
,
paraHeight
int64
,
crossTxHashs
[][]
byte
,
crossTxResult
[]
byte
,
isDel
bool
)
(
*
types
.
LocalDBSet
,
error
)
{
func
(
c
*
Paracross
)
udpateLocalParaTxs
(
paraTitle
string
,
paraHeight
int64
,
crossTxHashs
[][]
byte
,
crossTxResult
[]
byte
,
isDel
bool
)
(
*
types
.
LocalDBSet
,
error
)
{
var
set
types
.
LocalDBSet
var
set
types
.
LocalDBSet
if
len
(
crossTxHashs
)
==
0
{
if
len
(
crossTxHashs
)
==
0
{
...
@@ -139,7 +138,7 @@ func (c *Paracross) udpateLocalParaTxs(paraTitle string, paraHeight int64,crossT
...
@@ -139,7 +138,7 @@ func (c *Paracross) udpateLocalParaTxs(paraTitle string, paraHeight int64,crossT
return
nil
,
err
return
nil
,
err
}
}
if
payload
.
Ty
==
pt
.
ParacrossActionAssetTransfer
{
if
payload
.
Ty
==
pt
.
ParacrossActionAssetTransfer
{
kv
,
err
:=
c
.
updateLocalAssetTransfer
(
paraHeight
,
paraTx
.
Tx
,
success
,
isDel
)
kv
,
err
:=
c
.
updateLocalAssetTransfer
(
paraHeight
,
paraTx
.
Tx
,
success
,
isDel
)
if
err
!=
nil
{
if
err
!=
nil
{
return
nil
,
err
return
nil
,
err
}
}
...
@@ -267,7 +266,7 @@ func (c *Paracross) initLocalAssetWithdraw(paraHeight int64, tx *types.Transacti
...
@@ -267,7 +266,7 @@ func (c *Paracross) initLocalAssetWithdraw(paraHeight int64, tx *types.Transacti
return
&
types
.
KeyValue
{
Key
:
key
,
Value
:
types
.
Encode
(
&
asset
)},
nil
return
&
types
.
KeyValue
{
Key
:
key
,
Value
:
types
.
Encode
(
&
asset
)},
nil
}
}
func
(
c
*
Paracross
)
updateLocalAssetTransfer
(
paraHeight
int64
,
tx
*
types
.
Transaction
,
success
,
isDel
bool
)
(
*
types
.
KeyValue
,
error
)
{
func
(
c
*
Paracross
)
updateLocalAssetTransfer
(
paraHeight
int64
,
tx
*
types
.
Transaction
,
success
,
isDel
bool
)
(
*
types
.
KeyValue
,
error
)
{
clog
.
Debug
(
"para execLocal"
,
"tx hash"
,
hex
.
EncodeToString
(
tx
.
Hash
()))
clog
.
Debug
(
"para execLocal"
,
"tx hash"
,
hex
.
EncodeToString
(
tx
.
Hash
()))
key
:=
calcLocalAssetKey
(
tx
.
Hash
())
key
:=
calcLocalAssetKey
(
tx
.
Hash
())
...
...
plugin/dapp/paracross/executor/superaccount.go
View file @
748ba0cb
...
@@ -612,11 +612,11 @@ func (a *action) nodeVote(config *pt.ParaNodeAddrConfig) (*types.Receipt, error)
...
@@ -612,11 +612,11 @@ func (a *action) nodeVote(config *pt.ParaNodeAddrConfig) (*types.Receipt, error)
}
}
receipt
=
mergeReceipt
(
receipt
,
r
)
receipt
=
mergeReceipt
(
receipt
,
r
)
if
a
.
exec
.
GetMainHeight
()
>
getDappForkHeight
(
pt
.
ForkLoopCheckCommitTxDone
){
if
a
.
exec
.
GetMainHeight
()
>
getDappForkHeight
(
pt
.
ForkLoopCheckCommitTxDone
)
{
//node quit后,如果committx满足2/3目标,自动触发commitDone
//node quit后,如果committx满足2/3目标,自动触发commitDone
r
,
err
=
a
.
loopCommitTxDone
(
config
.
Title
)
r
,
err
=
a
.
loopCommitTxDone
(
config
.
Title
)
if
err
!=
nil
{
if
err
!=
nil
{
clog
.
Error
(
"unpdateNodeGroup.loopCommitTxDone"
,
"title"
,
title
,
"err"
,
err
.
Error
())
clog
.
Error
(
"unpdateNodeGroup.loopCommitTxDone"
,
"title"
,
title
,
"err"
,
err
.
Error
())
}
}
receipt
=
mergeReceipt
(
receipt
,
r
)
receipt
=
mergeReceipt
(
receipt
,
r
)
}
}
...
@@ -673,9 +673,9 @@ func unpdateNodeGroup(db dbm.KV, title, addr string, add bool) (*types.Receipt,
...
@@ -673,9 +673,9 @@ func unpdateNodeGroup(db dbm.KV, title, addr string, add bool) (*types.Receipt,
}
}
}
}
}
}
err
=
db
.
Set
(
key
,
types
.
Encode
(
&
item
))
err
=
db
.
Set
(
key
,
types
.
Encode
(
&
item
))
if
err
!=
nil
{
if
err
!=
nil
{
return
nil
,
errors
.
Wrapf
(
err
,
"unpdateNodeGroup set dbkey=%s"
,
key
)
return
nil
,
errors
.
Wrapf
(
err
,
"unpdateNodeGroup set dbkey=%s"
,
key
)
}
}
return
makeParaNodeGroupReceipt
(
title
,
&
copyItem
,
&
item
),
nil
return
makeParaNodeGroupReceipt
(
title
,
&
copyItem
,
&
item
),
nil
}
}
...
...
plugin/dapp/paracross/types/paracross.pb.go
View file @
748ba0cb
...
@@ -28,6 +28,10 @@ const _ = proto.ProtoPackageIsVersion2 // please upgrade the proto package
...
@@ -28,6 +28,10 @@ const _ = proto.ProtoPackageIsVersion2 // please upgrade the proto package
type
ParacrossStatusDetails
struct
{
type
ParacrossStatusDetails
struct
{
Addrs
[]
string
`protobuf:"bytes,1,rep,name=addrs,proto3" json:"addrs,omitempty"`
Addrs
[]
string
`protobuf:"bytes,1,rep,name=addrs,proto3" json:"addrs,omitempty"`
BlockHash
[][]
byte
`protobuf:"bytes,2,rep,name=blockHash,proto3" json:"blockHash,omitempty"`
BlockHash
[][]
byte
`protobuf:"bytes,2,rep,name=blockHash,proto3" json:"blockHash,omitempty"`
TxResult
[][]
byte
`protobuf:"bytes,3,rep,name=txResult,proto3" json:"txResult,omitempty"`
TxHashs
[][]
byte
`protobuf:"bytes,4,rep,name=txHashs,proto3" json:"txHashs,omitempty"`
CrossTxResult
[][]
byte
`protobuf:"bytes,5,rep,name=crossTxResult,proto3" json:"crossTxResult,omitempty"`
CrossTxHashs
[][]
byte
`protobuf:"bytes,6,rep,name=crossTxHashs,proto3" json:"crossTxHashs,omitempty"`
XXX_NoUnkeyedLiteral
struct
{}
`json:"-"`
XXX_NoUnkeyedLiteral
struct
{}
`json:"-"`
XXX_unrecognized
[]
byte
`json:"-"`
XXX_unrecognized
[]
byte
`json:"-"`
XXX_sizecache
int32
`json:"-"`
XXX_sizecache
int32
`json:"-"`
...
@@ -72,6 +76,34 @@ func (m *ParacrossStatusDetails) GetBlockHash() [][]byte {
...
@@ -72,6 +76,34 @@ func (m *ParacrossStatusDetails) GetBlockHash() [][]byte {
return
nil
return
nil
}
}
func
(
m
*
ParacrossStatusDetails
)
GetTxResult
()
[][]
byte
{
if
m
!=
nil
{
return
m
.
TxResult
}
return
nil
}
func
(
m
*
ParacrossStatusDetails
)
GetTxHashs
()
[][]
byte
{
if
m
!=
nil
{
return
m
.
TxHashs
}
return
nil
}
func
(
m
*
ParacrossStatusDetails
)
GetCrossTxResult
()
[][]
byte
{
if
m
!=
nil
{
return
m
.
CrossTxResult
}
return
nil
}
func
(
m
*
ParacrossStatusDetails
)
GetCrossTxHashs
()
[][]
byte
{
if
m
!=
nil
{
return
m
.
CrossTxHashs
}
return
nil
}
type
ParacrossHeightStatus
struct
{
type
ParacrossHeightStatus
struct
{
// ing, done
// ing, done
Status
int32
`protobuf:"varint,1,opt,name=status,proto3" json:"status,omitempty"`
Status
int32
`protobuf:"varint,1,opt,name=status,proto3" json:"status,omitempty"`
...
@@ -243,6 +275,8 @@ type ParacrossStatus struct {
...
@@ -243,6 +275,8 @@ type ParacrossStatus struct {
Title
string
`protobuf:"bytes,1,opt,name=title,proto3" json:"title,omitempty"`
Title
string
`protobuf:"bytes,1,opt,name=title,proto3" json:"title,omitempty"`
Height
int64
`protobuf:"varint,2,opt,name=height,proto3" json:"height,omitempty"`
Height
int64
`protobuf:"varint,2,opt,name=height,proto3" json:"height,omitempty"`
BlockHash
[]
byte
`protobuf:"bytes,3,opt,name=blockHash,proto3" json:"blockHash,omitempty"`
BlockHash
[]
byte
`protobuf:"bytes,3,opt,name=blockHash,proto3" json:"blockHash,omitempty"`
MainHeight
int64
`protobuf:"varint,4,opt,name=mainHeight,proto3" json:"mainHeight,omitempty"`
MainHash
[]
byte
`protobuf:"bytes,5,opt,name=mainHash,proto3" json:"mainHash,omitempty"`
XXX_NoUnkeyedLiteral
struct
{}
`json:"-"`
XXX_NoUnkeyedLiteral
struct
{}
`json:"-"`
XXX_unrecognized
[]
byte
`json:"-"`
XXX_unrecognized
[]
byte
`json:"-"`
XXX_sizecache
int32
`json:"-"`
XXX_sizecache
int32
`json:"-"`
...
@@ -294,6 +328,20 @@ func (m *ParacrossStatus) GetBlockHash() []byte {
...
@@ -294,6 +328,20 @@ func (m *ParacrossStatus) GetBlockHash() []byte {
return
nil
return
nil
}
}
func
(
m
*
ParacrossStatus
)
GetMainHeight
()
int64
{
if
m
!=
nil
{
return
m
.
MainHeight
}
return
0
}
func
(
m
*
ParacrossStatus
)
GetMainHash
()
[]
byte
{
if
m
!=
nil
{
return
m
.
MainHash
}
return
nil
}
type
ParacrossConsensusStatus
struct
{
type
ParacrossConsensusStatus
struct
{
Title
string
`protobuf:"bytes,1,opt,name=title,proto3" json:"title,omitempty"`
Title
string
`protobuf:"bytes,1,opt,name=title,proto3" json:"title,omitempty"`
ChainHeight
int64
`protobuf:"varint,2,opt,name=chainHeight,proto3" json:"chainHeight,omitempty"`
ChainHeight
int64
`protobuf:"varint,2,opt,name=chainHeight,proto3" json:"chainHeight,omitempty"`
...
@@ -2054,6 +2102,12 @@ type ReceiptParacrossDone struct {
...
@@ -2054,6 +2102,12 @@ type ReceiptParacrossDone struct {
StateHash
[]
byte
`protobuf:"bytes,6,opt,name=stateHash,proto3" json:"stateHash,omitempty"`
StateHash
[]
byte
`protobuf:"bytes,6,opt,name=stateHash,proto3" json:"stateHash,omitempty"`
TxCounts
uint32
`protobuf:"varint,7,opt,name=txCounts,proto3" json:"txCounts,omitempty"`
TxCounts
uint32
`protobuf:"varint,7,opt,name=txCounts,proto3" json:"txCounts,omitempty"`
TxResult
[]
byte
`protobuf:"bytes,8,opt,name=txResult,proto3" json:"txResult,omitempty"`
TxResult
[]
byte
`protobuf:"bytes,8,opt,name=txResult,proto3" json:"txResult,omitempty"`
BlockHash
[]
byte
`protobuf:"bytes,9,opt,name=blockHash,proto3" json:"blockHash,omitempty"`
TxHashs
[][]
byte
`protobuf:"bytes,10,rep,name=txHashs,proto3" json:"txHashs,omitempty"`
CrossTxResult
[]
byte
`protobuf:"bytes,11,opt,name=crossTxResult,proto3" json:"crossTxResult,omitempty"`
CrossTxHashs
[][]
byte
`protobuf:"bytes,12,rep,name=crossTxHashs,proto3" json:"crossTxHashs,omitempty"`
MainBlockHash
[]
byte
`protobuf:"bytes,13,opt,name=mainBlockHash,proto3" json:"mainBlockHash,omitempty"`
MainBlockHeight
int64
`protobuf:"varint,14,opt,name=mainBlockHeight,proto3" json:"mainBlockHeight,omitempty"`
XXX_NoUnkeyedLiteral
struct
{}
`json:"-"`
XXX_NoUnkeyedLiteral
struct
{}
`json:"-"`
XXX_unrecognized
[]
byte
`json:"-"`
XXX_unrecognized
[]
byte
`json:"-"`
XXX_sizecache
int32
`json:"-"`
XXX_sizecache
int32
`json:"-"`
...
@@ -2140,6 +2194,48 @@ func (m *ReceiptParacrossDone) GetTxResult() []byte {
...
@@ -2140,6 +2194,48 @@ func (m *ReceiptParacrossDone) GetTxResult() []byte {
return
nil
return
nil
}
}
func
(
m
*
ReceiptParacrossDone
)
GetBlockHash
()
[]
byte
{
if
m
!=
nil
{
return
m
.
BlockHash
}
return
nil
}
func
(
m
*
ReceiptParacrossDone
)
GetTxHashs
()
[][]
byte
{
if
m
!=
nil
{
return
m
.
TxHashs
}
return
nil
}
func
(
m
*
ReceiptParacrossDone
)
GetCrossTxResult
()
[]
byte
{
if
m
!=
nil
{
return
m
.
CrossTxResult
}
return
nil
}
func
(
m
*
ReceiptParacrossDone
)
GetCrossTxHashs
()
[][]
byte
{
if
m
!=
nil
{
return
m
.
CrossTxHashs
}
return
nil
}
func
(
m
*
ReceiptParacrossDone
)
GetMainBlockHash
()
[]
byte
{
if
m
!=
nil
{
return
m
.
MainBlockHash
}
return
nil
}
func
(
m
*
ReceiptParacrossDone
)
GetMainBlockHeight
()
int64
{
if
m
!=
nil
{
return
m
.
MainBlockHeight
}
return
0
}
type
ReceiptParacrossRecord
struct
{
type
ReceiptParacrossRecord
struct
{
Addr
string
`protobuf:"bytes,1,opt,name=addr,proto3" json:"addr,omitempty"`
Addr
string
`protobuf:"bytes,1,opt,name=addr,proto3" json:"addr,omitempty"`
Status
*
ParacrossNodeStatus
`protobuf:"bytes,2,opt,name=status,proto3" json:"status,omitempty"`
Status
*
ParacrossNodeStatus
`protobuf:"bytes,2,opt,name=status,proto3" json:"status,omitempty"`
...
@@ -2620,121 +2716,125 @@ func init() {
...
@@ -2620,121 +2716,125 @@ func init() {
func
init
()
{
proto
.
RegisterFile
(
"paracross.proto"
,
fileDescriptor_6a397e38c9ea6747
)
}
func
init
()
{
proto
.
RegisterFile
(
"paracross.proto"
,
fileDescriptor_6a397e38c9ea6747
)
}
var
fileDescriptor_6a397e38c9ea6747
=
[]
byte
{
var
fileDescriptor_6a397e38c9ea6747
=
[]
byte
{
// 1819 bytes of a gzipped FileDescriptorProto
// 1878 bytes of a gzipped FileDescriptorProto
0x1f
,
0x8b
,
0x08
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x02
,
0xff
,
0xd4
,
0x59
,
0xcd
,
0x6f
,
0x24
,
0x47
,
0x1f
,
0x8b
,
0x08
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x02
,
0xff
,
0xd4
,
0x59
,
0x4f
,
0x73
,
0x23
,
0x47
,
0x15
,
0x9f
,
0x9e
,
0x4f
,
0xcf
,
0xb3
,
0x3d
,
0x6b
,
0x57
,
0xd6
,
0xde
,
0x61
,
0x48
,
0x36
,
0xa3
,
0x56
,
0x15
,
0xd7
,
0xe8
,
0x9f
,
0xad
,
0x67
,
0x5b
,
0x6b
,
0x77
,
0xd6
,
0x5e
,
0x21
,
0x92
,
0x8d
,
0x6a
,
0x2a
,
0x40
,
0x06
,
0x56
,
0x0e
,
0xf1
,
0x42
,
0x10
,
0x8a
,
0x10
,
0x6c
,
0x9c
,
0xc4
,
0x63
,
0x25
,
0x1b
,
0x45
,
0x50
,
0x06
,
0xb6
,
0x1c
,
0xe2
,
0x85
,
0x50
,
0x54
,
0x8a
,
0x82
,
0x8d
,
0x93
,
0x58
,
0xae
,
0xb0
,
0xa9
,
0x6d
,
0x07
,
0x4e
,
0x48
,
0xf4
,
0xce
,
0x94
,
0x3d
,
0x2d
,
0x66
,
0xba
,
0x7b
,
0xbb
,
0x6a
,
0x12
,
0x9b
,
0xd4
,
0xd8
,
0x81
,
0x2b
,
0xb3
,
0x52
,
0xdb
,
0x9e
,
0x42
,
0x9a
,
0x99
,
0x9d
,
0x6e
,
0x25
,
0x36
,
0x37
,
0x1b
,
0x02
,
0xee
,
0x9c
,
0x90
,
0x38
,
0xc3
,
0x99
,
0x3f
,
0x81
,
0x3f
,
0x80
,
0xdc
,
0xf8
,
0x0f
,
0xb8
,
0x8a
,
0xe2
,
0xce
,
0x89
,
0xaa
,
0x9c
,
0xe1
,
0xcc
,
0x47
,
0xe0
,
0x03
,
0x10
,
0x4e
,
0x1c
,
0xb8
,
0x73
,
0x71
,
0xe7
,
0xc0
,
0x15
,
0xbd
,
0x57
,
0x55
,
0xdd
,
0x55
,
0x35
,
0x1f
,
0x6b
,
0x2d
,
0x7b
,
0xc9
,
0xcd
,
0xe3
,
0xce
,
0x81
,
0x2b
,
0xf5
,
0x5e
,
0x77
,
0xcf
,
0x74
,
0xb7
,
0x46
,
0x5a
,
0xb3
,
0xec
,
0x85
,
0x9b
,
0xef
,
0xd5
,
0xab
,
0xf7
,
0xf1
,
0xab
,
0xf7
,
0xd5
,
0x63
,
0xb8
,
0x97
,
0xc7
,
0x45
,
0x3c
,
0x2e
,
0x32
,
0xde
,
0xeb
,
0xd7
,
0xaf
,
0xdf
,
0x7b
,
0xfd
,
0x7b
,
0x7f
,
0x7a
,
0x04
,
0xf7
,
0xf2
,
0xb8
,
0x88
,
0x27
,
0x21
,
0x8e
,
0xf3
,
0x22
,
0x93
,
0x19
,
0x6b
,
0xc9
,
0xdb
,
0x9c
,
0x8b
,
0xc1
,
0xbe
,
0x2c
,
0xe2
,
0x54
,
0x45
,
0x26
,
0xc4
,
0x51
,
0x5e
,
0x64
,
0x32
,
0x63
,
0x1d
,
0x79
,
0x9b
,
0x73
,
0x31
,
0xdc
,
0x93
,
0x45
,
0xc4
,
0x63
,
0x99
,
0x64
,
0xa9
,
0x3a
,
0x19
,
0xec
,
0x8c
,
0xb3
,
0xf9
,
0xbc
,
0xa4
,
0xf6
,
0x9e
,
0xcd
,
0x9c
,
0x8a
,
0x78
,
0x22
,
0x93
,
0x2c
,
0x55
,
0x2b
,
0xc3
,
0xed
,
0x49
,
0x36
,
0x9f
,
0x97
,
0xd4
,
0xee
,
0xb2
,
0xf1
,
0xaf
,
0xc7
,
0xd3
,
0x38
,
0x31
,
0x9c
,
0x1e
,
0xbf
,
0xe1
,
0xe3
,
0x85
,
0xcc
,
0x0a
,
0x45
,
0xb3
,
0x59
,
0x36
,
0xf9
,
0xe5
,
0xe4
,
0x3a
,
0x4e
,
0x0c
,
0xa7
,
0xcf
,
0x6f
,
0xf8
,
0x64
,
0x21
,
0xb3
,
0x87
,
0x9f
,
0xc0
,
0xe1
,
0x67
,
0x46
,
0xf9
,
0x85
,
0x8c
,
0xe5
,
0x42
,
0x7c
,
0xc0
,
0x65
,
0x9c
,
0xcc
,
0x42
,
0xd1
,
0xe1
,
0x5f
,
0x03
,
0x38
,
0xf8
,
0xd4
,
0x68
,
0x3f
,
0x97
,
0xb1
,
0x5c
,
0x88
,
0x0f
,
0xb8
,
0x04
,
0xbb
,
0x0f
,
0xad
,
0x78
,
0x32
,
0x29
,
0x44
,
0x3f
,
0x18
,
0x36
,
0x8e
,
0xba
,
0x91
,
0x22
,
0xd8
,
0x8c
,
0x93
,
0x99
,
0x60
,
0xf7
,
0xa1
,
0x13
,
0x4f
,
0xa7
,
0x85
,
0x18
,
0x04
,
0xa3
,
0xd6
,
0x61
,
0x2f
,
0xeb
,
0xd0
,
0x25
,
0x9d
,
0xa3
,
0x58
,
0x4c
,
0xfb
,
0xf5
,
0x61
,
0xe3
,
0x68
,
0x27
,
0xaa
,
0x18
,
0xe1
,
0x52
,
0x04
,
0x7b
,
0x1d
,
0x7a
,
0xa4
,
0x74
,
0x1c
,
0x8b
,
0xeb
,
0x41
,
0x73
,
0xd4
,
0x3a
,
0xdc
,
0x8e
,
0x3f
,
0x03
,
0x38
,
0x28
,
0xd5
,
0x8d
,
0x78
,
0x72
,
0x3d
,
0x95
,
0x4a
,
0x29
,
0x3b
,
0x84
,
0xb6
,
0xa0
,
0x2a
,
0x06
,
0x1b
,
0xc2
,
0xa6
,
0xbc
,
0x89
,
0xb8
,
0x58
,
0xcc
,
0xe4
,
0xa0
,
0x45
,
0x8b
,
0x25
,
0xcd
,
0xbf
,
0xfa
,
0xc1
,
0x30
,
0x38
,
0x6a
,
0x45
,
0x9a
,
0x42
,
0x2b
,
0x32
,
0x91
,
0x33
,
0xde
,
0xaf
,
0x0f
,
0x06
,
0xb0
,
0x21
,
0x6f
,
0x50
,
0x4a
,
0x0c
,
0xda
,
0xb4
,
0x64
,
0x48
,
0xf6
,
0x16
,
0xec
,
0xd0
,
0xf9
,
0x03
,
0xb4
,
0x42
,
0x04
,
0x4a
,
0x4f
,
0xe9
,
0x76
,
0xbf
,
0x31
,
0x0c
,
0x8e
,
0x1a
,
0x91
,
0xa6
,
0xd8
,
0x17
,
0x66
,
0x6b
,
0x87
,
0xd6
,
0x5d
,
0x26
,
0x0b
,
0x61
,
0x5b
,
0x33
,
0x94
,
0x92
,
0x2e
,
0x09
,
0x39
,
0x8f
,
0xa0
,
0x33
,
0x51
,
0xee
,
0xf5
,
0x9b
,
0xc3
,
0xe0
,
0x68
,
0xfb
,
0xe4
,
0x8d
,
0x63
,
0x42
,
0xe2
,
0xbc
,
0xf0
,
0x6f
,
0x01
,
0xec
,
0x97
,
0xee
,
0x8c
,
0x79
,
0x72
,
0x75
,
0x2d
,
0x95
,
0x53
,
0xec
,
0x00
,
0x78
,
0x75
,
0x0c
,
0x91
,
0x91
,
0x66
,
0x0f
,
0x01
,
0xe6
,
0x71
,
0x92
,
0x2a
,
0x97
,
0xfa
,
0x2d
,
0x52
,
0xba
,
0x82
,
0x7e
,
0x0d
,
0x82
,
0x51
,
0x70
,
0xd8
,
0x89
,
0x34
,
0x85
,
0x5e
,
0xca
,
0x44
,
0xce
,
0xf8
,
0x6a
,
0x71
,
0xd8
,
0x00
,
0xb6
,
0x88
,
0xc2
,
0xa8
,
0xda
,
0xc3
,
0xe0
,
0x68
,
0x27
,
0x2a
,
0xe9
,
0xf0
,
0xa0
,
0x39
,
0x0a
,
0xd0
,
0x4b
,
0x22
,
0x50
,
0xfa
,
0x9a
,
0x76
,
0x0f
,
0x5a
,
0xa3
,
0xe0
,
0xb0
,
0x15
,
0xdf
,
0x01
,
0xf4
,
0x57
,
0x06
,
0x15
,
0x89
,
0xfc
,
0x15
,
0xc5
,
0xe5
,
0xba
,
0xd7
,
0xdc
,
0xe8
,
0x5e
,
0x69
,
0x8a
,
0xfd
,
0x00
,
0x36
,
0xa6
,
0x2a
,
0x3c
,
0x83
,
0xf6
,
0x28
,
0x38
,
0xdc
,
0x3a
,
0x7e
,
0xe3
,
0x8b
,
0x14
,
0x96
,
0x34
,
0x1b
,
0xc2
,
0x36
,
0xbe
,
0x79
,
0x22
,
0x9f
,
0xd0
,
0x6b
,
0xb5
,
0xe9
,
0xb5
,
0x88
,
0xae
,
0xe2
,
0xa8
,
0x3e
,
0x86
,
0x91
,
0x91
,
0x66
,
0x0f
,
0x01
,
0xe6
,
0x71
,
0x92
,
0x2a
,
0x93
,
0x6c
,
0x16
,
0x3b
,
0x82
,
0x7b
,
0x8a
,
0x7c
,
0xbf
,
0x7c
,
0xb9
,
0x0e
,
0x49
,
0xf9
,
0xec
,
0xf0
,
0x97
,
0x06
,
0x1d
,
0x52
,
0x6a
,
0x71
,
0x30
,
0x70
,
0x44
,
0x61
,
0x54
,
0xbb
,
0xa3
,
0x00
,
0x03
,
0x67
,
0xe8
,
0x70
,
0xcf
,
0x43
,
0xb2
,
0x0a
,
0x24
,
0x58
,
0x1d
,
0x48
,
0xdd
,
0x09
,
0xc4
,
0x49
,
0x8f
,
0x06
,
0x01
,
0xf0
,
0x9f
,
0x01
,
0x0c
,
0x6a
,
0x9d
,
0x8a
,
0x44
,
0xfe
,
0x8a
,
0xfc
,
0x72
,
0xcd
,
0x6b
,
0xaf
,
0x35
,
0x69
,
0xa5
,
0xc7
,
0x5f
,
0x6d
,
0x24
,
0x4f
,
0xb3
,
0x54
,
0xf0
,
0x54
,
0x2c
,
0x36
,
0x1b
,
0xc2
,
0xe8
,
0xaf
,
0x43
,
0x0a
,
0x4b
,
0x9a
,
0x8d
,
0x60
,
0x0b
,
0x41
,
0x97
,
0xc8
,
0x27
,
0x84
,
0x96
,
0x2e
,
0xa1
,
0xa6
,
0x15
,
0x34
,
0xca
,
0x9a
,
0xcd
,
0x62
,
0x6f
,
0xc1
,
0xee
,
0x58
,
0xa9
,
0x1a
,
0xd9
,
0xd0
,
0xba
,
0xc5
,
0x66
,
0xb1
,
0x43
,
0xb8
,
0xa7
,
0xc8
,
0xf7
,
0x4b
,
0xe4
,
0x6c
,
0x90
,
0x94
,
0xcf
,
0x0e
,
0xbf
,
0x4c
,
0xf6
,
0x5d
,
0xd8
,
0xd3
,
0x8c
,
0x0a
,
0x84
,
0x26
,
0x19
,
0x5a
,
0xe2
,
0x87
,
0x7f
,
0x0a
,
0x80
,
0x0c
,
0xe0
,
0x9e
,
0x17
,
0xca
,
0xca
,
0x93
,
0xa0
,
0xde
,
0x93
,
0xa6
,
0xe3
,
0x89
,
0x83
,
0xcf
,
0x16
,
0xa1
,
0x9b
,
0x9f
,
0x66
,
0x13
,
0x8e
,
0x08
,
0x9e
,
0x66
,
0xe9
,
0x55
,
0x72
,
0xbd
,
0xc6
,
0xc1
,
0x1e
,
0x45
,
0xd2
,
0xc2
,
0xe7
,
0x7f
,
0xeb
,
0xa7
,
0x7d
,
0x0d
,
0x7f
,
0xb4
,
0xaf
,
0xe1
,
0x24
,
0x4b
,
0x05
,
0xd4
,
0xb3
,
0x9c
,
0xfc
,
0xda
,
0x8d
,
0xea
,
0x59
,
0x8e
,
0x74
,
0x32
,
0x21
,
0x1f
,
0xba
,
0x51
,
0x3d
,
0x4f
,
0xc5
,
0x62
,
0xbd
,
0x91
,
0x18
,
0x9a
,
0xeb
,
0xea
,
0x3c
,
0x65
,
0xa9
,
0xcd
,
0x22
,
0xe8
,
0x2b
,
0x99
,
0x30
,
0x06
,
0x4d
,
0xac
,
0x1c
,
0x6d
,
0x8c
,
0xfe
,
0x46
,
0x4d
,
0x5f
,
0xc4
,
0xb3
,
0x05
,
0xa7
,
0x55
,
0x63
,
0xfb
,
0x5e
,
0x5c
,
0x26
,
0xfb
,
0x36
,
0xec
,
0x6a
,
0x46
,
0x15
,
0xc1
,
0x36
,
0x1d
,
0xb4
,
0xb7
,
0xdc
,
0x8d
,
0x14
,
0xa1
,
0x1e
,
0x32
,
0x49
,
0xc5
,
0x47
,
0x45
,
0xf6
,
0x1b
,
0x9e
,
0x52
,
0x1a
,
0xc4
,
0x0f
,
0x7f
,
0x1f
,
0x00
,
0x43
,
0x33
,
0x3f
,
0xc9
,
0xa6
,
0x1c
,
0xc3
,
0x7f
,
0x92
,
0xa5
,
0x97
,
0x62
,
0xa8
,
0x15
,
0x2b
,
0xfc
,
0x59
,
0xe5
,
0xd7
,
0xcf
,
0x33
,
0xc9
,
0x55
,
0x96
,
0xaf
,
0x29
,
0x54
,
0xc9
,
0xd5
,
0x0a
,
0x03
,
0xfb
,
0xd0
,
0xcc
,
0x72
,
0xb2
,
0x6b
,
0x27
,
0x6a
,
0x66
,
0x39
,
0xd2
,
0xc9
,
0xb4
,
0x91
,
0x49
,
0x2e
,
0xa8
,
0x48
,
0xbb
,
0x91
,
0x22
,
0xc2
,
0x3f
,
0x06
,
0x70
,
0xdf
,
0x0e
,
0xed
,
0x94
,
0x6c
,
0xe8
,
0x45
,
0xcd
,
0x64
,
0xca
,
0x18
,
0xb4
,
0x31
,
0xed
,
0xf5
,
0x61
,
0xf4
,
0x1b
,
0x35
,
0x7c
,
0xa2
,
0xd1
,
0x37
,
0x6e
,
0x06
,
0x96
,
0x9b
,
0x0f
,
0x01
,
0xf2
,
0x22
,
0xcb
,
0x33
,
0x11
,
0xcf
,
0x7d
,
0x1e
,
0xcf
,
0x16
,
0x9c
,
0x02
,
0xb4
,
0x13
,
0x29
,
0x42
,
0xa1
,
0x20
,
0x49
,
0xc5
,
0x47
,
0x45
,
0xce
,
0x27
,
0x3a
,
0x91
,
0x2d
,
0x0e
,
0x26
,
0xc1
,
0xf3
,
0x45
,
0x22
,
0xcf
,
0x4d
,
0xb8
,
0x9a
,
0xb2
,
0xf6
,
0x2b
,
0x9e
,
0x12
,
0x86
,
0xd1
,
0xd5
,
0x8a
,
0x15
,
0xfe
,
0xa4
,
0xb2
,
0xeb
,
0x67
,
0x99
,
0xe4
,
0x6a
,
0xa2
,
0xb9
,
0xba
,
0x26
,
0x5a
,
0x16
,
0x80
,
0xe1
,
0x7f
,
0x03
,
0xd8
,
0x33
,
0x2e
,
0x95
,
0xee
,
0x2a
,
0x45
,
0x56
,
0x54
,
0x19
,
0x3c
,
0x23
,
0x93
,
0x5c
,
0x50
,
0x85
,
0xe9
,
0x45
,
0x8a
,
0x08
,
0x7f
,
0x28
,
0x14
,
0x83
,
0x12
,
0xc5
,
0x4a
,
0x65
,
0x7d
,
0xb5
,
0xca
,
0x86
,
0xfd
,
0x26
,
0x0f
,
0x01
,
0x64
,
0x17
,
0xc0
,
0x7d
,
0xdb
,
0xb5
,
0xb3
,
0xa9
,
0x8e
,
0xbe
,
0x31
,
0x33
,
0xb0
,
0xcc
,
0x7c
,
0x08
,
0x90
,
0x5c
,
0x5c
,
0x73
,
0xca
,
0x7f
,
0x8d
,
0xbc
,
0xc5
,
0xf1
,
0x91
,
0x6e
,
0x2d
,
0x21
,
0xcd
,
0xde
,
0x36
,
0x17
,
0x59
,
0x9e
,
0x89
,
0x78
,
0x76
,
0x36
,
0xd5
,
0x59
,
0x60
,
0x71
,
0x10
,
0x40
,
0xcf
,
0x17
,
0x89
,
0xe8
,
0xb5
,
0xa9
,
0xcd
,
0x7c
,
0xc3
,
0x6a
,
0x33
,
0x2e
,
0xfa
,
0x1a
,
0x58
,
0xac
,
0xd0
,
0xab
,
0x22
,
0x3c
,
0x33
,
0xee
,
0x6a
,
0xca
,
0x4a
,
0xa8
,
0x76
,
0x7d
,
0x42
,
0x75
,
0xac
,
0x00
,
0x86
,
0xff
,
0x0e
,
0x9b
,
0x93
,
0xc1
,
0x8e
,
0xaa
,
0x50
,
0x43
,
0x5b
,
0xc5
,
0xb2
,
0x65
,
0x17
,
0x4b
,
0xf8
,
0xf7
,
0x00
,
0x60
,
0xd7
,
0x98
,
0x54
,
0x9a
,
0xa3
,
0xa2
,
0x18
,
0x94
,
0x51
,
0xac
,
0x54
,
0x36
,
0xeb
,
0x55
,
0xb6
,
0x0e
,
0x22
,
0x3e
,
0xe6
,
0x49
,
0x2e
,
0x8d
,
0x62
,
0x9d
,
0x6a
,
0xab
,
0x5e
,
0xe3
,
0x1d
,
0x68
,
0x8f
,
0xec
,
0x3b
,
0x79
,
0x08
,
0x20
,
0xe3
,
0xe2
,
0x8a
,
0x53
,
0xf2
,
0xe8
,
0xc8
,
0x5b
,
0x1c
,
0x3f
,
0xd2
,
0xe9
,
0x94
,
0x20
,
0x58
,
0xf6
,
0xa9
,
0xca
,
0xd4
,
0x48
,
0x0b
,
0xb2
,
0xef
,
0x41
,
0x33
,
0x2f
,
0xf8
,
0x9d
,
0xa5
,
0x48
,
0xb3
,
0xb7
,
0x4d
,
0xf4
,
0xba
,
0x54
,
0xa3
,
0xbe
,
0x66
,
0xd5
,
0x28
,
0x37
,
0xfa
,
0x17
,
0x04
,
0xce
,
0xf6
,
0xc9
,
0x03
,
0xef
,
0x82
,
0x01
,
0x3b
,
0x22
,
0x21
,
0xf6
,
0x0e
,
0x74
,
0xc6
,
0x3a
,
0xb0
,
0x08
,
0xfb
,
0xcb
,
0x22
,
0x9b
,
0xd3
,
0x81
,
0x1b
,
0x2a
,
0xbd
,
0x0d
,
0x6d
,
0x25
,
0xda
,
0x8b
,
0xa2
,
0xe0
,
0xa9
,
0xd4
,
0xbd
,
0x75
,
0xad
,
0xbc
,
0x91
,
0x0b
,
0xff
,
0x12
,
0xc0
,
0x1b
,
0x5e
,
0xa6
,
0x9d
,
0x68
,
0xe1
,
0x9f
,
0x03
,
0xd8
,
0x8f
,
0xf8
,
0x84
,
0x27
,
0xb9
,
0x34
,
0x8a
,
0x35
,
0xd4
,
0x00
,
0xe8
,
0x05
,
0x8a
,
0x7d
,
0x9e
,
0x4f
,
0x62
,
0xc9
,
0x1d
,
0x58
,
0x02
,
0x0f
,
0x96
,
0xb7
,
0xb5
,
0xea
,
0x6e
,
0xe3
,
0x1d
,
0xe8
,
0x4e
,
0x68
,
0x95
,
0x42
,
0xb0
,
0x6c
,
0x53
,
0x85
,
0xd4
,
0x48
,
0x0b
,
0x77
,
0x2a
,
0x9c
,
0x6f
,
0xae
,
0x08
,
0xc7
,
0xf3
,
0xf0
,
0x87
,
0x95
,
0x87
,
0x8d
,
0x17
,
0xdf
,
0x29
,
0xb2
,
0xef
,
0x40
,
0x3b
,
0x2f
,
0xf8
,
0xe7
,
0x14
,
0x9c
,
0xad
,
0xe3
,
0x07
,
0xde
,
0x06
,
0x13
,
0xec
,
0xbd
,
0xfc
,
0x4f
,
0x00
,
0x0f
,
0x3c
,
0x2f
,
0xe9
,
0xfd
,
0xb2
,
0x94
,
0x2f
,
0xe5
,
0xd9
,
0xea
,
0xb6
,
0x88
,
0x84
,
0xd8
,
0x3b
,
0xb0
,
0x31
,
0x59
,
0x14
,
0x05
,
0x4f
,
0xa5
,
0x2e
,
0xcc
,
0x2b
,
0xe5
,
0x8d
,
0xed
,
0xe6
,
0x53
,
0x63
,
0x29
,
0x9f
,
0xf0
,
0x3c
,
0x93
,
0xf1
,
0x0c
,
0x55
,
0x9b
,
0xa4
,
0xb7
,
0x38
,
0x5c
,
0xf8
,
0x87
,
0x00
,
0xde
,
0xf0
,
0x1c
,
0x40
,
0x2b
,
0x50
,
0xec
,
0xb3
,
0x7c
,
0x1a
,
0x4b
,
0xee
,
0xd8
,
0x15
,
0x89
,
0x42
,
0xb3
,
0x94
,
0x6d
,
0xad
,
0xa8
,
0x62
,
0x50
,
0x73
,
0xcf
,
0x84
,
0xa4
,
0xc3
,
0x84
,
0x25
,
0xf0
,
0xc2
,
0xf2
,
0xb6
,
0xb6
,
0x4e
,
0xb9
,
0xf3
,
0xf5
,
0x1a
,
0x77
,
0x3c
,
0x0b
,
0xbf
,
0x36
,
0x1d
,
0x96
,
0x34
,
0xeb
,
0x43
,
0x07
,
0xf3
,
0x2b
,
0x12
,
0x52
,
0x67
,
0x95
,
0x21
,
0xd1
,
0xe6
,
0x5f
,
0x59
,
0xd8
,
0x7a
,
0xf1
,
0x9e
,
0xd2
,
0xca
,
0x7f
,
0x05
,
0xf0
,
0xc0
,
0xb3
,
0x92
,
0xee
,
0x2f
,
0x24
,
0x4b
,
0xb9
,
0x0a
,
0x96
,
0x12
,
0xab
,
0x15
,
0x59
,
0x9c
,
0xf0
,
0x77
,
0x01
,
0xbc
,
0x66
,
0xc2
,
0x4b
,
0xf9
,
0x12
,
0xce
,
0xea
,
0x6b
,
0xbe
,
0x8b
,
0xa7
,
0xd6
,
0x12
,
0x9e
,
0x70
,
0x3d
,
0x93
,
0xf1
,
0x3d
,
0x2b
,
0xb2
,
0x45
,
0xfe
,
0x7f
,
0x75
,
0xb1
,
0xb2
,
0xc7
,
0xa8
,
0x62
,
0xd2
,
0x3d
,
0xe6
,
0x85
,
0x0c
,
0x55
,
0x1b
,
0xd0
,
0x5b
,
0x1c
,
0xac
,
0xa8
,
0x44
,
0xe1
,
0xb1
,
0x84
,
0xb6
,
0x4e
,
0x54
,
0x31
,
0x75
,
0x14
,
0x7e
,
0xe5
,
0x7b
,
0xf1
,
0x4a
,
0xea
,
0x7b
,
0x08
,
0xdb
,
0x15
,
0xfa
,
0xc6
,
0x27
,
0x9b
,
0xa8
,
0x62
,
0x66
,
0x42
,
0xd2
,
0x62
,
0x97
,
0x16
,
0x4b
,
0x1a
,
0x3b
,
0x3e
,
0xe2
,
0x2b
,
0x12
,
0x52
,
0x75
,
0x87
,
0x0a
,
0xb7
,
0x33
,
0xb3
,
0xbd
,
0xb6
,
0x60
,
0x3b
,
0x4e
,
0xc1
,
0xfe
,
0x23
,
0x80
,
0x81
,
0xa3
,
0xca
,
0x90
,
0x78
,
0xe6
,
0x34
,
0x4b
,
0xb9
,
0x72
,
0x96
,
0x80
,
0xd5
,
0x89
,
0x2c
,
0x4e
,
0xf8
,
0x97
,
0x49
,
0x36
,
0xb4
,
0xab
,
0xaa
,
0xf6
,
0xc4
,
0xab
,
0xda
,
0x81
,
0x97
,
0xb2
,
0xd6
,
0xfd
,
0xb2
,
0x9b
,
0x00
,
0x5e
,
0x33
,
0xee
,
0x9e
,
0x16
,
0xd9
,
0x22
,
0xff
,
0x9f
,
0xaa
,
0x58
,
0x59
,
0x63
,
0x54
,
0x6c
,
0x8f
,
0x9d
,
0xb2
,
0x5d
,
0x79
,
0xc3
,
0xa9
,
0x8b
,
0x1f
,
0xf8
,
0x95
,
0xbb
,
0xe9
,
0x4a
,
0x59
,
0x32
,
0xe9
,
0x1a
,
0xf3
,
0xc2
,
0x3c
,
0x0a
,
0xbf
,
0xf2
,
0xad
,
0x78
,
0x25
,
0xf9
,
0x3d
,
0x82
,
0xad
,
0x16
,
0x53
,
0xb8
,
0x1f
,
0xf1
,
0xe7
,
0xe5
,
0x38
,
0xa6
,
0x0a
,
0x4f
,
0xaf
,
0xb2
,
0xf5
,
0x09
,
0x92
,
0x2a
,
0xfa
,
0xc6
,
0x26
,
0x9b
,
0x75
,
0x87
,
0x0c
,
0xb7
,
0x91
,
0xd9
,
0x5d
,
0x99
,
0xb0
,
0x1b
,
0x4e
,
0x98
,
0x19
,
0x60
,
0x8f
,
0xb5
,
0x86
,
0x15
,
0xeb
,
0x9a
,
0xbe
,
0x1f
,
0x9e
,
0xc2
,
0x61
,
0xc4
,
0x45
,
0xc2
,
0xfe
,
0x25
,
0x80
,
0xa1
,
0x87
,
0x24
,
0x3b
,
0xb4
,
0x75
,
0x59
,
0x7b
,
0xec
,
0x65
,
0xed
,
0xd0
,
0xee
,
0x98
,
0x52
,
0xcf
,
0xf4
,
0x1d
,
0x68
,
0x24
,
0x13
,
0x35
,
0xb8
,
0x36
,
0xf4
,
0x1b
,
0x94
,
0x09
,
0x83
,
0xac
,
0xb5
,
0xbf
,
0x4c
,
0xdb
,
0x23
,
0x27
,
0x6d
,
0x6b
,
0x77
,
0x38
,
0x79
,
0xf1
,
0x3d
,
0x3f
,
0xcf
,
0xb0
,
0x88
,
0x3d
,
0x25
,
0x14
,
0x97
,
0x60
,
0x8f
,
0x6c
,
0x2d
,
0x9b
,
0x62
,
0x27
,
0x45
,
0x7f
,
0x73
,
0xd7
,
0x6d
,
0x29
,
0xd3
,
0xe2
,
0x1a
,
0xee
,
0x47
,
0xfc
,
0x79
,
0xd9
,
0x8e
,
0x29
,
0xc3
,
0xd3
,
0x08
,
0x60
,
0x1f
,
0x0f
,
0x69
,
0xde
,
0x9f
,
0x3c
,
0x8d
,
0x93
,
0xf4
,
0x69
,
0x9c
,
0x5b
,
0x4f
,
0x1e
,
0xcb
,
0x6c
,
0x35
,
0x40
,
0x12
,
0xd3
,
0x03
,
0xec
,
0xb6
,
0xd6
,
0xb2
,
0x7c
,
0x5d
,
0x51
,
0xf7
,
0xc3
,
0xac
,
0x5f
,
0x68
,
0x54
,
0xf8
,
0x15
,
0xc3
,
0xdb
,
0xdb
,
0x1a
,
0x1b
,
0xf7
,
0xb6
,
0xa6
,
0xbb
,
0xb7
,
0x13
,
0x38
,
0x88
,
0xb8
,
0xc8
,
0x9d
,
0xa3
,
0xd4
,
0x35
,
0x7d
,
0x0b
,
0x5a
,
0xc9
,
0x54
,
0x35
,
0xae
,
0x85
,
0x1f
,
0xa8
,
0x61
,
0x5e
,
0xb9
,
0x41
,
0xe8
,
0x1f
,
0x43
,
0x2b
,
0x91
,
0x7c
,
0x6e
,
0xa2
,
0xe9
,
0x35
,
0xf5
,
0x06
,
0x65
,
0xc2
,
0x53
,
0x4c
,
0x62
,
0x4f
,
0x09
,
0xf9
,
0x25
,
0xd8
,
0x23
,
0x5b
,
0xcb
,
0x5b
,
0xd1
,
0x38
,
0x0e
,
0x47
,
0x4a
,
0x2c
,
0xfc
,
0x57
,
0x43
,
0x15
,
0x58
,
0x89
,
0x89
,
0x2e
,
0xb0
,
0x3a
,
0xdf
,
0x49
,
0xd1
,
0x6f
,
0x03
,
0xd8
,
0xc3
,
0x45
,
0xea
,
0xf7
,
0xc7
,
0x4f
,
0xe3
,
0x24
,
0x7d
,
0xb7
,
0x60
,
0x17
,
0x2d
,
0x55
,
0xcb
,
0x4e
,
0x40
,
0xcb
,
0x98
,
0xcb
,
0xc4
,
0xcd
,
0xb0
,
0x62
,
0xd8
,
0x1a
,
0xe7
,
0xd6
,
0x95
,
0x07
,
0xab
,
0x87
,
0x21
,
0xe5
,
0xfe
,
0xca
,
0x61
,
0xa8
,
0xb5
,
0x76
,
0x18
,
0x1b
,
0x96
,
0xcf
,
0x5e
,
0x53
,
0x88
,
0x15
,
0x6a
,
0x4d
,
0x07
,
0xb5
,
0x10
,
0x76
,
0xf2
,
0x82
,
0x57
,
0x6a
,
0xbb
,
0x43
,
0x5f
,
0xf8
,
0x81
,
0x6a
,
0xe6
,
0x95
,
0x19
,
0x14
,
0xfd
,
0x23
,
0xe8
,
0x24
,
0x92
,
0xc6
,
0x5b
,
0x64
,
0xdc
,
0xe1
,
0xb9
,
0xc8
,
0xb6
,
0xbd
,
0x55
,
0x51
,
0x6b
,
0xc0
,
0x60
,
0xb8
,
0x5e
,
0xcf
,
0x8d
,
0x37
,
0x03
,
0xcb
,
0x1b
,
0xc7
,
0xe0
,
0x48
,
0x89
,
0x85
,
0xff
,
0x68
,
0xa9
,
0x04
,
0x2b
,
0x58
,
0x8d
,
0x86
,
0x92
,
0x87
,
0x1a
,
0x44
,
0x29
,
0xb0
,
0xa5
,
0x34
,
0x94
,
0x0c
,
0xc4
,
0x5e
,
0xde
,
0x63
,
0xa2
,
0x13
,
0xec
,
0x2d
,
0xd8
,
0xc1
,
0x93
,
0xaa
,
0x61
,
0x27
,
0xa0
,
0x59
,
0xcc
,
0x65
,
0xe2
,
0x9c
,
0x66
,
0x8b
,
0x54
,
0x8a
,
0x7e
,
0x97
,
0x1a
,
0x5b
,
0x49
,
0xab
,
0xb3
,
0x88
,
0x8b
,
0xc5
,
0x4c
,
0x58
,
0x59
,
0x31
,
0xec
,
0x09
,
0xcb
,
0x67
,
0xaf
,
0x48
,
0xc4
,
0x2a
,
0x6a
,
0x6d
,
0x27
,
0x6a
,
0x21
,
0xf6
,
0x41
,
0xad
,
0xfb
,
0x86
,
0xc6
,
0x96
,
0x2b
,
0x6f
,
0x50
,
0x83
,
0xe8
,
0x6f
,
0xd3
,
0xf7
,
0x8d
,
0x6c
,
0xe7
,
0x05
,
0xaf
,
0x0e
,
0x57
,
0x83
,
0xa0
,
0xc3
,
0x73
,
0x23
,
0xdb
,
0xf5
,
0xc7
,
0x4c
,
0xa5
,
0x21
,
0x69
,
0xd3
,
0x44
,
0x98
,
0x2f
,
0xcd
,
0xd5
,
0x1d
,
0x85
,
0xa9
,
0xc3
,
0x44
,
0xcf
,
0x35
,
0x43
,
0x01
,
0x9d
,
0xe1
,
0x7a
,
0xda
,
0x35
,
0x1a
,
0x4a
,
0x1e
,
0x6a
,
0x10
,
0xa5
,
0xc0
,
0xa6
,
0xd2
,
0x50
,
0x29
,
0xd9
,
0x25
,
0x25
,
0x0e
,
0x8f
,
0x3d
,
0x82
,
0xfd
,
0x34
,
0x4b
,
0x4f
,
0x69
,
0xfb
,
0xbe
,
0x34
,
0x32
,
0xd4
,
0x43
,
0xea
,
0x24
,
0x5b
,
0xa4
,
0x52
,
0x0c
,
0x7a
,
0x54
,
0xd8
,
0x4a
,
0xda
,
0x79
,
0x64
,
0x4e
,
0xf6
,
0xc8
,
0xc9
,
0xe5
,
0x83
,
0xf0
,
0x63
,
0xeb
,
0xa3
,
0x4a
,
0x1d
,
0x3d
,
0xa1
,
0x4f
,
0x3e
,
0x81
,
0x1a
,
0x52
,
0xeb
,
0x1e
,
0x59
,
0x5b
,
0x2f
,
0x78
,
0x64
,
0x6d
,
0xab
,
0x98
,
0xae
,
0x7f
,
0x64
,
0x6c
,
0x2e
,
0xd6
,
0xc7
,
0x87
,
0x9b
,
0xfb
,
0x5e
,
0x42
,
0x94
,
0xc5
,
0x28
,
0xd5
,
0x02
,
0x48
,
0xc7
,
0xed
,
0x2c
,
0x3f
,
0xb2
,
0xd8
,
0x23
,
0xd8
,
0x4b
,
0xb3
,
0xf4
,
0x84
,
0x46
,
0xf7
,
0x0b
,
0x63
,
0x64
,
0x4f
,
0x93
,
0x94
,
0x17
,
0x2f
,
0xaf
,
0x0b
,
0xd3
,
0x27
,
0x11
,
0x17
,
0x7c
,
0x76
,
0x55
,
0xee
,
0xf2
,
0x9f
,
0x8c
,
0x5c
,
0x5e
,
0x08
,
0x3f
,
0xb6
,
0x5e
,
0x64
,
0x6a
,
0xe9
,
0x09
,
0x3d
,
0x58
,
0xb1
,
0xb8
,
0x94
,
0x3e
,
0x5b
,
0x91
,
0xcf
,
0x0e
,
0xbf
,
0x6a
,
0x5a
,
0x5f
,
0x16
,
0xda
,
0xe2
,
0xbb
,
0xd8
,
0x1a
,
0x58
,
0x2f
,
0x17
,
0x17
,
0xfb
,
0x1e
,
0x20
,
0xca
,
0x64
,
0x94
,
0x6a
,
0x00
,
0xa4
,
0xe5
,
0xa7
,
0x49
,
0x31
,
0x1a
,
0x6d
,
0xf1
,
0x75
,
0xdf
,
0xa2
,
0x1d
,
0xeb
,
0xa8
,
0x16
,
0x69
,
0x69
,
0xf6
,
0x18
,
0x5a
,
0xca
,
0x8b
,
0x97
,
0xd7
,
0x85
,
0xf0
,
0x49
,
0xc4
,
0x39
,
0x9f
,
0x5d
,
0x96
,
0xb3
,
0x3c
,
0xc1
,
0x67
,
0x73
,
0x74
,
0x7c
,
0xc5
,
0x12
,
0xe0
,
0x47
,
0x35
,
0xaa
,
0x45
,
0x4a
,
0x96
,
0xfd
,
0x04
,
0x76
,
0x63
,
0x33
,
0xf2
,
0xd9
,
0xe1
,
0x57
,
0x6d
,
0xeb
,
0x55
,
0xa2
,
0x4f
,
0x7c
,
0x17
,
0x4b
,
0x23
,
0x7a
,
0xa3
,
0x21
,
0xb8
,
0xbc
,
0xc4
,
0x2f
,
0xe6
,
0x2b
,
0x5e
,
0xe8
,
0x4e
,
0x79
,
0xa0
,
0x2f
,
0x3f
,
0xc1
,
0x33
,
0x4f
,
0x7c
,
0xdd
,
0x3f
,
0xd1
,
0xf6
,
0x75
,
0xdc
,
0x88
,
0xb4
,
0x34
,
0x7b
,
0x0c
,
0x9d
,
0x39
,
0x1a
,
0x61
,
0x0e
,
0x47
,
0xb5
,
0xc8
,
0x95
,
0x2e
,
0xaf
,
0xff
,
0x22
,
0x91
,
0xd3
,
0x49
,
0x11
,
0x7f
,
0x49
,
0x5e
,
0x33
,
0x04
,
0xf8
,
0x5e
,
0x8d
,
0x1b
,
0x91
,
0x92
,
0x65
,
0x3f
,
0x82
,
0x9d
,
0x58
,
0x08
,
0x2e
,
0x19
,
0xed
,
0x5f
,
0x37
,
0x87
,
0xe5
,
0x75
,
0xc3
,
0x60
,
0x8f
,
0x61
,
0x4b
,
0x1a
,
0xc3
,
0xed
,
0xcd
,
0x2f
,
0xf0
,
0xbd
,
0x7f
,
0xc9
,
0x0b
,
0x5d
,
0x29
,
0xf7
,
0xf5
,
0xe6
,
0x27
,
0xb8
,
0x26
,
0xcc
,
0xe2
,
0x86
,
0x4b
,
0x41
,
0xbc
,
0xf4
,
0xa5
,
0x31
,
0xd7
,
0xd9
,
0x6c
,
0xae
,
0x14
,
0x64
,
0x1f
,
0x42
,
0xcf
,
0xb8
,
0x11
,
0xb9
,
0xd2
,
0xe5
,
0xf6
,
0x9f
,
0x27
,
0xf2
,
0x7a
,
0x5a
,
0xc4
,
0x5f
,
0x10
,
0xa2
,
0xfd
,
0x28
,
0xb8
,
0xcc
,
0x3e
,
0xbc
,
0xe1
,
0x63
,
0x2a
,
0x8c
,
0x0a
,
0x25
,
0xd7
,
0x9e
,
0x12
,
0x19
,
0xd5
,
0xed
,
0x66
,
0xb1
,
0xdc
,
0x6e
,
0x18
,
0xec
,
0x31
,
0x6c
,
0x4a
,
0x73
,
0x70
,
0x77
,
0xfd
,
0xc1
,
0xa5
,
0x22
,
0xef
,
0x12
,
0x7b
,
0x0f
,
0x20
,
0x2d
,
0xd7
,
0x51
,
0x2a
,
0x9f
,
0x4d
,
0x0b
,
0xe7
,
0xa8
,
0x16
,
0x20
,
0x6e
,
0xfa
,
0xc2
,
0x1c
,
0xb7
,
0xb1
,
0xfe
,
0xb8
,
0x52
,
0x90
,
0x7d
,
0x08
,
0x7d
,
0xa3
,
0xe0
,
0x59
,
0xe2
,
0xec
,
0x23
,
0xb8
,
0x97
,
0xba
,
0xa3
,
0x8d
,
0x8a
,
0x6c
,
0xe3
,
0xf0
,
0x1b
,
0xd5
,
0x22
,
0x22
,
0xfb
,
0xf0
,
0x86
,
0x4f
,
0x28
,
0x31
,
0xaa
,
0x28
,
0xb9
,
0xe7
,
0x29
,
0x91
,
0x71
,
0x23
,
0xf2
,
0xff
,
0x12
,
0xce
,
0x1c
,
0x79
,
0xab
,
0x17
,
0x82
,
0xba
,
0xbc
,
0x7d
,
0xbf
,
0xa3
,
0x3f
,
0x9b
,
0x70
,
0x36
,
0xb1
,
0xf7
,
0x00
,
0xd2
,
0x72
,
0x1c
,
0xa5
,
0xf4
,
0x59
,
0x37
,
0x70
,
0x8e
,
0x1b
,
0x91
,
0x25
,
0x0e
,
0x1f
,
0x5a
,
0x73
,
0xd8
,
0x4a
,
0x96
,
0x75
,
0x33
,
0xd8
,
0x5a
,
0x2e
,
0xee
,
0x96
,
0xda
,
0xdf
,
0xce
,
0x3e
,
0x82
,
0x7b
,
0xa9
,
0xdb
,
0xda
,
0x28
,
0xc9
,
0xd6
,
0x36
,
0xbf
,
0x71
,
0x23
,
0xf2
,
0x37
,
0x77
,
0x66
,
0xf0
,
0x52
,
0x6a
,
0x3a
,
0x3f
,
0x03
,
0xa8
,
0x29
,
0xfc
,
0xae
,
0x3f
,
0x85
,
0x37
,
0x5f
,
0x61
,
0xcf
,
0x91
,
0xb7
,
0x7a
,
0x20
,
0x68
,
0xca
,
0xdb
,
0xf7
,
0x37
,
0xf4
,
0xb3
,
0x09
,
0xfb
,
0xf0
,
0x2a
,
0xe7
,
0xf0
,
0xc7
,
0xce
,
0x47
,
0x40
,
0x95
,
0xc1
,
0x2f
,
0x55
,
0xdd
,
0xbf
,
0xaf
,
0xe3
,
0x54
,
0x81
,
0xd5
,
0x87
,
0x2d
,
0xb0
,
0xac
,
0xea
,
0xc1
,
0xd6
,
0x70
,
0x71
,
0x37
,
0x68
,
0x7f
,
0xd7
,
0xe9
,
0x77
,
0xb5
,
0xd1
,
0xa2
,
0xeb
,
0xae
,
0xa8
,
0xc1
,
0xd2
,
0x8a
,
0x8a
,
0x2b
,
0x15
,
0x52
,
0x0a
,
0x46
,
0xc1
,
0x4b
,
0xd0
,
0x74
,
0xbe
,
0x21
,
0xa8
,
0x2e
,
0xfc
,
0xae
,
0xdf
,
0x85
,
0xd7
,
0x6f
,
0x2a
,
0xfb
,
0x0d
,
0xba
,
0xcd
,
0x62
,
0xdf
,
0x86
,
0x1e
,
0xae
,
0xa5
,
0x17
,
0xf1
,
0x9c
,
0x6b
,
0xa1
,
0x06
,
0x09
,
0xf0
,
0xc7
,
0xce
,
0x23
,
0xa0
,
0x42
,
0xf0
,
0x4b
,
0x65
,
0xf7
,
0xdf
,
0x5b
,
0xd8
,
0xd5
,
0x5d
,
0x6d
,
0x79
,
0xdc
,
0x6a
,
0x52
,
0x34
,
0x57
,
0x4f
,
0x8a
,
0x96
,
0x3f
,
0x5f
,
0xab
,
0x1e
,
0xde
,
0xde
,
0xd4
,
0x34
,
0xe8
,
0xba
,
0x23
,
0x6a
,
0xb0
,
0x34
,
0xa2
,
0xe2
,
0x48
,
0x85
,
0x94
,
0x0a
,
0xa3
,
0x0e
,
0xba
,
0xc3
,
0x3b
,
0x1b
,
0x7a
,
0xf8
,
0x96
,
0xdb
,
0xc3
,
0xc3
,
0x5f
,
0x2d
,
0xe7
,
0x47
,
0xc4
,
0xc7
,
0x59
,
0xcd
,
0x62
,
0xdf
,
0x84
,
0x3e
,
0x8e
,
0xa5
,
0xe7
,
0xf1
,
0x9c
,
0x6b
,
0xa1
,
0x16
,
0x09
,
0x79
,
0xdc
,
0x31
,
0x79
,
0x55
,
0xf9
,
0x11
,
0x7e
,
0x0b
,
0xb6
,
0xcb
,
0xe3
,
0xcb
,
0x1b
,
0x0c
,
0x4f
,
0x4d
,
0x09
,
0xaa
,
0x53
,
0xb4
,
0xeb
,
0x3b
,
0x45
,
0xc7
,
0xef
,
0xaf
,
0x55
,
0x0d
,
0xef
,
0xae
,
0xab
,
0xe1
,
0x1b
,
0xad
,
0x58
,
0x53
,
0x6a
,
0x6b
,
0xa9
,
0x96
,
0xac
,
0x4b
,
0xc4
,
0xc2
,
0x9f
,
0xa8
,
0x77
,
0xf9
,
0x61
,
0x6b
,
0x6a
,
0xf8
,
0xa6
,
0x57
,
0xc3
,
0x9d
,
0xde
,
0xd2
,
0xf3
,
0x7b
,
0x8b
,
0x55
,
0xe1
,
0xe1
,
0x05
,
0x25
,
0xfc
,
0x6d
,
0x1d
,
0xf6
,
0x9d
,
0xfd
,
0xe7
,
0xeb
,
0xf5
,
0xaa
,
0xdd
,
0x97
,
0x7d
,
0xd5
,
0xae
,
0x15
,
0x7e
,
0xeb
,
0x2e
,
0x15
,
0x7e
,
0xbb
,
0xa6
,
0xc2
,
0x2f
,
0xf5
,
0xdf
,
0x9d
,
0x3b
,
0xf6
,
0xdf
,
0xf5
,
0xaa
,
0x67
,
0xf0
,
0x9a
,
0x03
,
0x01
,
0xa1
,
0x89
,
0xa5
,
0xda
,
0x26
,
0x6f
,
0xfc
,
0x9d
,
0x69
,
0x7e
,
0x6d
,
0xff
,
0x0d
,
0x7f
,
0xb1
,
0x8c
,
0xf8
,
0x88
,
0x4f
,
0xb2
,
0x62
,
0xfa
,
0xaa
,
0x10
,
0x1f
,
0x09
,
0xae
,
0x48
,
0xcb
,
0xa9
,
0x92
,
0xf3
,
0x5f
,
0x05
,
0x3d
,
0x5b
,
0xfd
,
0x26
,
0x4b
,
0x3b
,
0xa0
,
0x7e
,
0x03
,
0xb6
,
0xca
,
0xe5
,
0x8b
,
0x1b
,
0xbc
,
0x30
,
0x15
,
0x15
,
0xad
,
0x58
,
0x53
,
0x6a
,
0x0e
,
0xf3
,
0xa3
,
0xd6
,
0xdf
,
0xea
,
0xd0
,
0xab
,
0x46
,
0x1b
,
0xb6
,
0x57
,
0x4c
,
0x32
,
0xfc
,
0x96
,
0x30
,
0xab
,
0xc6
,
0xc6
,
0x0b
,
0xbc
,
0x5d
,
0x7f
,
0x46
,
0xb8
,
0xcb
,
0x67
,
0xa6
,
0xf0
,
0xd7
,
0x4d
,
0xd8
,
0x49
,
0x86
,
0x7f
,
0x53
,
0x33
,
0xcb
,
0xcc
,
0x02
,
0x2d
,
0x33
,
0x7c
,
0xba
,
0xa4
,
0x6c
,
0xe1
,
0x04
,
0x73
,
0x26
,
0xba
,
0xff
,
0x2f
,
0x9c
,
0xf6
,
0x5e
,
0x16
,
0xa7
,
0xbd
,
0x0a
,
0xa7
,
0xe1
,
0x29
,
0xbc
,
0xfa
,
0x56
,
0x64
,
0x71
,
0xac
,
0x8c
,
0x6a
,
0x92
,
0x45
,
0x4d
,
0x21
,
0x3f
,
0x9e
,
0x23
,
0x56
,
0x06
,
0xe6
,
0x84
,
0x80
,
0xa2
,
0x89
,
0xc5
,
0xa7
,
0x4b
,
0xd6
,
0xf8
,
0x53
,
0xe0
,
0x52
,
0xb8
,
0x22
,
0x2d
,
0x72
,
0x45
,
0xa1
,
0x4d
,
0x8e
,
0xed
,
0x5e
,
0xa1
,
0x4d
,
0x7f
,
0xd3
,
0x42
,
0x7e
,
0x3b
,
0x7f
,
0x96
,
0xa7
,
0x8a
,
0x88
,
0x7f
,
0x2b
,
0x68
,
0x59
,
0xfd
,
0x9d
,
0x2c
,
0x4d
,
0xb5
,
0x76
,
0x7e
,
0x84
,
0x7f
,
0xcd
,
0xf4
,
0xc7
,
0xa3
,
0xa6
,
0xac
,
0x67
,
0x03
,
0xe7
,
0xd9
,
0xe8
,
0x47
,
0x32
,
0x7c
,
0x6e
,
0x44
,
0x6a
,
0x42
,
0xbf
,
0x6a
,
0xd6
,
0xd8
,
0x30
,
0x10
,
0x64
,
0xf8
,
0x3a
,
0x32
,
0x20
,
0xc3
,
0xdf
,
0x54
,
0x4b
,
0xef
,
0x83
,
0x07
,
0x24
,
0xb1
,
0xc4
,
0xa7
,
0x1f
,
0x87
,
0xe2
,
0x22
,
0xd6
,
0x52
,
0x87
,
0x6a
,
0x9e
,
0x33
,
0xf3
,
0x24
,
0x90
,
0x19
,
0x5e
,
0x5d
,
0x52
,
0x36
,
0x25
,
0x0a
,
0xfa
,
0x66
,
0x64
,
0x71
,
0xf5
,
0xad
,
0x38
,
0xb8
,
0x46
,
0x89
,
0xc5
,
0x78
,
0xcc
,
0x85
,
0xe8
,
0x3f
,
0xa0
,
0xe0
,
0x0c
,
0x79
,
0x2c
,
0x44
,
0xb5
,
0xe9
,
0x44
,
0x4d
,
0x21
,
0x3f
,
0x9e
,
0x63
,
0xac
,
0x4c
,
0xc8
,
0x15
,
0x85
,
0x67
,
0xf2
,
0xe7
,
0x06
,
0x74
,
0xcb
,
0x1f
,
0xb4
,
0xd9
,
0x4f
,
0x61
,
0xeb
,
0x8c
,
0x4b
,
0x7a
,
0x02
,
0xb6
,
0x72
,
0x6c
,
0x60
,
0x2a
,
0xda
,
0xf4
,
0x9b
,
0x9e
,
0x18
,
0xb7
,
0xf3
,
0x67
,
0xd9
,
0x4c
,
0x3f
,
0x87
,
0x57
,
0xbe
,
0xdc
,
0xf3
,
0x0b
,
0x59
,
0x24
,
0xe9
,
0xf5
,
0xe0
,
0xcd
,
0xe5
,
0x9d
,
0xc0
,
0xf9
,
0xd5
,
0x35
,
0x65
,
0x5d
,
0x1b
,
0x38
,
0xd7
,
0x46
,
0x9f
,
0xfd
,
0xf0
,
0xba
,
0x31
,
0x5a
,
0x3a
,
0xc3
,
0xf6
,
0x30
,
0xac
,
0xb1
,
0x1f
,
0x03
,
0x7c
,
0x92
,
0x08
,
0xa9
,
0x93
,
0x61
,
0xb7
,
0x52
,
0xf1
,
0x69
,
0x32
,
0x49
,
0x62
,
0x89
,
0x4f
,
0x9f
,
0xbb
,
0xe2
,
0x22
,
0xd6
,
0x52
,
0x07
,
0x6a
,
0x98
,
0xaf
,
0x38
,
0x58
,
0x1b
,
0x0c
,
0x56
,
0xe5
,
0x82
,
0x12
,
0x0d
,
0x6b
,
0xec
,
0x33
,
0x60
,
0x67
,
0x9c
,
0x82
,
0xb2
,
0x0b
,
0x36
,
0xc4
,
0x62
,
0x32
,
0xe1
,
0x42
,
0x0c
,
0x1e
,
0x90
,
0x73
,
0x86
,
0x3c
,
0xfe
,
0xb2
,
0x05
,
0xbd
,
0xf3
,
0x61
,
0xa5
,
0x62
,
0x55
,
0xe1
,
0x0e
,
0xd6
,
0xe6
,
0x57
,
0x58
,
0x63
,
0x17
,
0xd0
,
0x33
,
0xd1
,
0xf2
,
0x0f
,
0x06
,
0xf6
,
0x63
,
0xd8
,
0x3c
,
0xe5
,
0x92
,
0xae
,
0x80
,
0xed
,
0x96
,
0x37
,
0xf7
,
0xfc
,
0xdc
,
0x51
,
0xdb
,
0x9b
,
0x1b
,
0xa7
,
0x84
,
0xc8
,
0xc3
,
0x1a
,
0x7b
,
0x0f
,
0xf6
,
0xce
,
0xb8
,
0xa4
,
0x5c
,
0x16
,
0x49
,
0x7a
,
0x35
,
0x7c
,
0x73
,
0x79
,
0xca
,
0x71
,
0xbe
,
0x83
,
0x86
,
0x0d
,
0xf6
,
0x43
,
0xd4
,
0x2a
,
0xb7
,
0xcc
,
0x5e
,
0xa5
,
0x16
,
0xd3
,
0x62
,
0x70
,
0xe0
,
0xab
,
0x21
,
0xf1
,
0xb0
,
0xc6
,
0x80
,
0x9f
,
0x26
,
0x42
,
0x6a
,
0x30
,
0xec
,
0x54
,
0x2a
,
0x3e
,
0x49
,
0x66
,
0xc3
,
0x61
,
0x1d
,
0x16
,
0x1e
,
0x41
,
0xfb
,
0x5c
,
0x5c
,
0xdc
,
0xa6
,
0x63
,
0x1f
,
0x9a
,
0x7d
,
0x4d
,
0x9e
,
0x8b
,
0xd3
,
0x78
,
0x94
,
0x68
,
0xd8
,
0x60
,
0x9f
,
0x02
,
0x3b
,
0xe5
,
0xe4
,
0x94
,
0x9d
,
0x98
,
0x0f
,
0x2b
,
0x15
,
0x75
,
0x71
,
0x3d
,
0x95
,
0x9f
,
0xe7
,
0x61
,
0xed
,
0x59
,
0x9b
,
0xfe
,
0x2b
,
0xf0
,
0xf8
,
0x7f
,
0x01
,
0x00
,
0x89
,
0x3b
,
0x5c
,
0x89
,
0xaf
,
0xb0
,
0xc1
,
0xce
,
0xa1
,
0x6f
,
0xbc
,
0xb9
,
0xa3
,
0xb6
,
0x37
,
0xd7
,
0x00
,
0xff
,
0xff
,
0xed
,
0xd7
,
0xdd
,
0x61
,
0x72
,
0x18
,
0x00
,
0x00
,
0xf6
,
0x3d
,
0x91
,
0x87
,
0x0d
,
0xf6
,
0x1e
,
0xec
,
0x9e
,
0x72
,
0x49
,
0xd0
,
0x2a
,
0xab
,
0x6a
,
0xbf
,
0x52
,
0x8b
,
0xb0
,
0x18
,
0xee
,
0xfb
,
0x6a
,
0x48
,
0x3c
,
0x6c
,
0xb0
,
0x47
,
0xd0
,
0x3d
,
0x13
,
0xe7
,
0xb7
,
0xe9
,
0xc4
,
0x0f
,
0xcd
,
0x9e
,
0x26
,
0xcf
,
0xc4
,
0x49
,
0xbc
,
0xb8
,
0xba
,
0x96
,
0x9f
,
0xe5
,
0x61
,
0xe3
,
0x59
,
0x97
,
0xfe
,
0xa5
,
0x79
,
0xfc
,
0x9f
,
0x00
,
0x00
,
0x00
,
0xff
,
0xff
,
0x01
,
0x9c
,
0x04
,
0x0e
,
0x02
,
0x1a
,
0x00
,
0x00
,
}
}
// Reference imports to suppress errors if they are not otherwise used.
// Reference imports to suppress errors if they are not otherwise used.
...
...
plugin/dapp/paracross/types/type.go
View file @
748ba0cb
...
@@ -19,13 +19,13 @@ var (
...
@@ -19,13 +19,13 @@ var (
// ForkCommitTx main chain support paracross commit tx
// ForkCommitTx main chain support paracross commit tx
ForkCommitTx
=
"ForkParacrossCommitTx"
ForkCommitTx
=
"ForkParacrossCommitTx"
//平行链配置项对应主链的ForkCommitTx 高度
//平行链配置项对应主链的ForkCommitTx 高度
MainForkParacrossCommitTx
=
"MainForkParacrossCommitTx"
MainForkParacrossCommitTx
=
"MainForkParacrossCommitTx"
// ParaSelfConsensForkHeight para self consens height string
// ParaSelfConsensForkHeight para self consens height string
ParaSelfConsensForkHeight
=
"MainParaSelfConsensusForkHeight"
ParaSelfConsensForkHeight
=
"MainParaSelfConsensusForkHeight"
//ForkLoopCheckCommitTxDone 循环检查共识交易done的fork
//ForkLoopCheckCommitTxDone 循环检查共识交易done的fork
ForkLoopCheckCommitTxDone
=
"ForkLoopCheckCommitTxDone"
ForkLoopCheckCommitTxDone
=
"ForkLoopCheckCommitTxDone"
//MainLoopCheckCommitTxDoneForkHeight 平行链的配置项,对应主链的ForkLoopCheckCommitTxDone高度
//MainLoopCheckCommitTxDoneForkHeight 平行链的配置项,对应主链的ForkLoopCheckCommitTxDone高度
MainLoopCheckCommitTxDoneForkHeight
=
"MainLoopCheckCommitTxDoneForkHeight"
MainLoopCheckCommitTxDoneForkHeight
=
"MainLoopCheckCommitTxDoneForkHeight"
)
)
func
init
()
{
func
init
()
{
...
...
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