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
8b458a6e
Commit
8b458a6e
authored
Jun 28, 2019
by
mdj33
Committed by
vipwzw
Jul 02, 2019
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
debug log
parent
05ede7af
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
28 additions
and
29 deletions
+28
-29
paracommitmsg.go
plugin/consensus/para/paracommitmsg.go
+7
-0
action.go
plugin/dapp/paracross/executor/action.go
+21
-29
No files found.
plugin/consensus/para/paracommitmsg.go
View file @
8b458a6e
...
@@ -52,6 +52,7 @@ func (client *commitMsgClient) handler() {
...
@@ -52,6 +52,7 @@ func (client *commitMsgClient) handler() {
var
sendingMsgs
[]
*
pt
.
ParacrossNodeStatus
var
sendingMsgs
[]
*
pt
.
ParacrossNodeStatus
var
readTick
<-
chan
time
.
Time
var
readTick
<-
chan
time
.
Time
var
ticker
*
time
.
Ticker
var
ticker
*
time
.
Ticker
var
authAccountIn
bool
client
.
paraClient
.
wg
.
Add
(
1
)
client
.
paraClient
.
wg
.
Add
(
1
)
consensusCh
:=
make
(
chan
*
commitConsensRsp
,
1
)
consensusCh
:=
make
(
chan
*
commitConsensRsp
,
1
)
...
@@ -167,6 +168,12 @@ out:
...
@@ -167,6 +168,12 @@ out:
"consensHeight"
,
rsp
.
status
.
Height
,
"finishHeight"
,
finishHeight
,
"authIn"
,
rsp
.
authAccountIn
,
"sync"
,
isSync
,
"miner"
,
readTick
!=
nil
)
"consensHeight"
,
rsp
.
status
.
Height
,
"finishHeight"
,
finishHeight
,
"authIn"
,
rsp
.
authAccountIn
,
"sync"
,
isSync
,
"miner"
,
readTick
!=
nil
)
plog
.
Debug
(
"para consensus rcv"
,
"consensBlockHash"
,
common
.
ToHex
(
rsp
.
status
.
BlockHash
))
plog
.
Debug
(
"para consensus rcv"
,
"consensBlockHash"
,
common
.
ToHex
(
rsp
.
status
.
BlockHash
))
//每次账户加入nodegroup 重新设置finishHeight 重新发送,防止曾经发送过,又退出group场景
if
!
authAccountIn
&&
rsp
.
authAccountIn
&&
finishHeight
>
consensHeight
{
finishHeight
=
consensHeight
}
authAccountIn
=
rsp
.
authAccountIn
if
notification
==
nil
||
isRollback
||
!
rsp
.
authAccountIn
{
if
notification
==
nil
||
isRollback
||
!
rsp
.
authAccountIn
{
isSync
=
false
isSync
=
false
continue
continue
...
...
plugin/dapp/paracross/executor/action.go
View file @
8b458a6e
...
@@ -403,8 +403,7 @@ func (a *action) Commit(commit *pt.ParacrossCommitAction) (*types.Receipt, error
...
@@ -403,8 +403,7 @@ func (a *action) Commit(commit *pt.ParacrossCommitAction) (*types.Receipt, error
clog
.
Debug
(
"paracross.Commit check input done"
)
clog
.
Debug
(
"paracross.Commit check input done"
)
// 在完成共识之后来的, 增加 record log, 只记录不修改已经达成的共识
// 在完成共识之后来的, 增加 record log, 只记录不修改已经达成的共识
if
commit
.
Status
.
Height
<=
titleStatus
.
Height
{
if
commit
.
Status
.
Height
<=
titleStatus
.
Height
{
clog
.
Debug
(
"paracross.Commit record"
,
"node"
,
a
.
fromaddr
,
"titile"
,
commit
.
Status
.
Title
,
clog
.
Debug
(
"paracross.Commit record"
,
"node"
,
a
.
fromaddr
,
"titile"
,
commit
.
Status
.
Title
,
"height"
,
commit
.
Status
.
Height
)
"height"
,
commit
.
Status
.
Height
)
return
makeRecordReceipt
(
a
.
fromaddr
,
commit
),
nil
return
makeRecordReceipt
(
a
.
fromaddr
,
commit
),
nil
}
}
...
@@ -430,6 +429,8 @@ func (a *action) Commit(commit *pt.ParacrossCommitAction) (*types.Receipt, error
...
@@ -430,6 +429,8 @@ 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
}
}
//用commit.MainBlockHeight 判断更准确,如果用a.exec.MainHeight也可以,但是可能收到MainHeight之前的高度共识tx,
// 后面loopCommitTxDone时候也是用当前共识高度大于分叉高度判断
if
commit
.
Status
.
MainBlockHeight
>=
getDappForkHeight
(
pt
.
ForkLoopCheckCommitTxDone
)
{
if
commit
.
Status
.
MainBlockHeight
>=
getDappForkHeight
(
pt
.
ForkLoopCheckCommitTxDone
)
{
updateCommitBlockHashs
(
stat
,
commit
.
Status
)
updateCommitBlockHashs
(
stat
,
commit
.
Status
)
}
}
...
@@ -480,9 +481,9 @@ func (a *action) Commit(commit *pt.ParacrossCommitAction) (*types.Receipt, error
...
@@ -480,9 +481,9 @@ func (a *action) Commit(commit *pt.ParacrossCommitAction) (*types.Receipt, error
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
.
Debug
(
"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
.
Debug
(
"paracross.Commit commit detail"
,
"addr"
,
v
,
"hash"
,
hex
.
EncodeToString
(
stat
.
Details
.
BlockHash
[
i
]))
}
}
commitCount
:=
len
(
stat
.
Details
.
Addrs
)
commitCount
:=
len
(
stat
.
Details
.
Addrs
)
...
@@ -491,7 +492,7 @@ func (a *action) commitTxDone(nodeStatus *pt.ParacrossNodeStatus, stat *pt.Parac
...
@@ -491,7 +492,7 @@ func (a *action) commitTxDone(nodeStatus *pt.ParacrossNodeStatus, stat *pt.Parac
saveTitleHeight
(
a
.
db
,
calcTitleHeightKey
(
stat
.
Title
,
stat
.
Height
),
stat
)
saveTitleHeight
(
a
.
db
,
calcTitleHeightKey
(
stat
.
Title
,
stat
.
Height
),
stat
)
return
receipt
,
nil
return
receipt
,
nil
}
}
clog
.
Info
(
"paracross.Commit commit ----pass"
,
"most"
,
most
,
"mostHash"
,
hex
.
EncodeToString
([]
byte
(
mostHash
)))
clog
.
Debug
(
"paracross.Commit commit ----pass"
,
"most"
,
most
,
"mostHash"
,
hex
.
EncodeToString
([]
byte
(
mostHash
)))
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
)
...
@@ -520,7 +521,7 @@ func (a *action) commitTxDoneStep2(nodeStatus *pt.ParacrossNodeStatus, stat *pt.
...
@@ -520,7 +521,7 @@ func (a *action) commitTxDoneStep2(nodeStatus *pt.ParacrossNodeStatus, stat *pt.
}
}
saveTitle
(
a
.
db
,
calcTitleKey
(
titleStatus
.
Title
),
titleStatus
)
saveTitle
(
a
.
db
,
calcTitleKey
(
titleStatus
.
Title
),
titleStatus
)
clog
.
Info
(
"paracross.Commit commit done"
,
"height"
,
nodeStatus
.
Height
,
"statusBlockHash"
,
hex
.
EncodeToString
(
nodeStatus
.
BlockHash
))
clog
.
Debug
(
"paracross.Commit commit done"
,
"height"
,
nodeStatus
.
Height
,
"statusBlockHash"
,
hex
.
EncodeToString
(
nodeStatus
.
BlockHash
))
//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
()
{
...
@@ -552,7 +553,7 @@ func (a *action) procCrossTxs(status *pt.ParacrossNodeStatus) (*types.Receipt, e
...
@@ -552,7 +553,7 @@ func (a *action) procCrossTxs(status *pt.ParacrossNodeStatus) (*types.Receipt, e
}
}
if
enableParacrossTransfer
&&
status
.
Height
>
0
&&
haveCrossTxs
{
if
enableParacrossTransfer
&&
status
.
Height
>
0
&&
haveCrossTxs
{
clog
.
Info
(
"paracross.Commit commitDone do cross"
,
"height"
,
status
.
Height
,
"havecross"
,
haveCrossTxs
)
clog
.
Debug
(
"paracross.Commit commitDone do cross"
,
"height"
,
status
.
Height
,
"havecross"
,
haveCrossTxs
)
crossTxReceipt
,
err
:=
a
.
execCrossTxs
(
status
)
crossTxReceipt
,
err
:=
a
.
execCrossTxs
(
status
)
if
err
!=
nil
{
if
err
!=
nil
{
return
nil
,
err
return
nil
,
err
...
@@ -588,7 +589,7 @@ func (a *action) loopCommitTxDone(title string) (*types.Receipt, error) {
...
@@ -588,7 +589,7 @@ func (a *action) loopCommitTxDone(title string) (*types.Receipt, error) {
stat
,
err
:=
getTitleHeight
(
a
.
db
,
calcTitleHeightKey
(
title
,
loopHeight
))
stat
,
err
:=
getTitleHeight
(
a
.
db
,
calcTitleHeightKey
(
title
,
loopHeight
))
if
err
!=
nil
{
if
err
!=
nil
{
clog
.
Error
(
"paracross.loopCommitTxDone getTitleHeight failed"
,
"
err"
,
err
)
clog
.
Error
(
"paracross.loopCommitTxDone getTitleHeight failed"
,
"
title"
,
title
,
"height"
,
loopHeight
,
"err"
,
err
.
Error
()
)
return
receipt
,
err
return
receipt
,
err
}
}
//防止无限循环
//防止无限循环
...
@@ -613,20 +614,14 @@ func (a *action) checkCommitTxDone(title string, stat *pt.ParacrossHeightStatus,
...
@@ -613,20 +614,14 @@ func (a *action) checkCommitTxDone(title string, stat *pt.ParacrossHeightStatus,
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
{
return
nil
,
errors
.
Wrapf
(
err
,
"getTitle:%s"
,
a
.
fromaddr
)
return
nil
,
errors
.
Wrapf
(
err
,
"getTitle:%s"
,
title
)
}
}
//
如果是平行链自共识首次切换
,可以在正常流程里面再触发
//
待共识的stat的高度大于当前status高度+1,说明共识不连续,退出,如果是平行链自共识首次切换场景
,可以在正常流程里面再触发
if
stat
.
Height
>
status
.
Height
+
1
{
if
stat
.
Height
>
status
.
Height
+
1
{
return
nil
,
nil
return
nil
,
nil
}
}
updateCommitAddrs
(
stat
,
nodes
)
most
,
_
:=
getMostCommit
(
stat
)
if
!
isCommitDone
(
nodes
,
most
)
{
return
nil
,
nil
}
return
a
.
commitTxDoneByStat
(
stat
,
status
,
nodes
,
receipt
)
return
a
.
commitTxDoneByStat
(
stat
,
status
,
nodes
,
receipt
)
}
}
...
@@ -635,18 +630,18 @@ func (a *action) checkCommitTxDone(title string, stat *pt.ParacrossHeightStatus,
...
@@ -635,18 +630,18 @@ func (a *action) checkCommitTxDone(title string, stat *pt.ParacrossHeightStatus,
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.commitTxDoneByStat"
,
"stat.title"
,
stat
.
Title
,
"stat.height"
,
stat
.
Height
,
"notes"
,
len
(
nodes
))
clog
.
Debug
(
"paracross.commitTxDoneByStat"
,
"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.commitTxDoneByStat detail"
,
"addr"
,
v
,
"hash"
,
hex
.
EncodeToString
(
stat
.
Details
.
BlockHash
[
i
]))
clog
.
Debug
(
"paracross.commitTxDoneByStat detail"
,
"addr"
,
v
,
"hash"
,
hex
.
EncodeToString
(
stat
.
Details
.
BlockHash
[
i
]))
}
}
updateCommitAddrs
(
stat
,
nodes
)
commitCount
:=
len
(
stat
.
Details
.
Addrs
)
commitCount
:=
len
(
stat
.
Details
.
Addrs
)
most
,
mostHash
:=
getMostCommit
(
stat
)
most
,
mostHash
:=
getMostCommit
(
stat
)
if
!
isCommitDone
(
nodes
,
most
)
{
if
!
isCommitDone
(
nodes
,
most
)
{
saveTitleHeight
(
a
.
db
,
calcTitleHeightKey
(
stat
.
Title
,
stat
.
Height
),
stat
)
return
nil
,
nil
return
receipt
,
nil
}
}
clog
.
Info
(
"paracross.commitTxDoneByStat ----pass"
,
"most"
,
most
,
"mostHash"
,
hex
.
EncodeToString
([]
byte
(
mostHash
)))
clog
.
Debug
(
"paracross.commitTxDoneByStat ----pass"
,
"most"
,
most
,
"mostHash"
,
hex
.
EncodeToString
([]
byte
(
mostHash
)))
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
)
r
:=
makeCommitStatReceipt
(
stat
)
r
:=
makeCommitStatReceipt
(
stat
)
...
@@ -669,7 +664,6 @@ func (a *action) commitTxDoneByStat(stat *pt.ParacrossHeightStatus, titleStatus
...
@@ -669,7 +664,6 @@ func (a *action) commitTxDoneByStat(stat *pt.ParacrossHeightStatus, titleStatus
//add commit done receipt
//add commit done receipt
receiptDone
:=
makeDoneReceipt
(
a
.
exec
.
GetMainHeight
(),
mostStatus
,
int32
(
most
),
int32
(
commitCount
),
int32
(
len
(
nodes
)))
receiptDone
:=
makeDoneReceipt
(
a
.
exec
.
GetMainHeight
(),
mostStatus
,
int32
(
most
),
int32
(
commitCount
),
int32
(
len
(
nodes
)))
receipt
=
mergeReceipt
(
receipt
,
receiptDone
)
receipt
=
mergeReceipt
(
receipt
,
receiptDone
)
clog
.
Info
(
"paracross.commitTxDoneByStat ----pass"
,
"most"
,
most
,
"mostHash"
,
hex
.
EncodeToString
([]
byte
(
mostHash
)))
return
a
.
commitTxDoneStep2
(
mostStatus
,
stat
,
titleStatus
,
receipt
)
return
a
.
commitTxDoneStep2
(
mostStatus
,
stat
,
titleStatus
,
receipt
)
}
}
...
@@ -718,7 +712,7 @@ func (a *action) execCrossTx(tx *types.TransactionDetail, crossTxHash []byte) (*
...
@@ -718,7 +712,7 @@ 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
.
Debug
(
"paracross.Commit WithdrawCoins"
,
"txHash"
,
hex
.
EncodeToString
(
crossTxHash
))
return
receiptWithdraw
,
nil
return
receiptWithdraw
,
nil
}
}
return
nil
,
nil
return
nil
,
nil
...
@@ -726,7 +720,7 @@ func (a *action) execCrossTx(tx *types.TransactionDetail, crossTxHash []byte) (*
...
@@ -726,7 +720,7 @@ func (a *action) execCrossTx(tx *types.TransactionDetail, crossTxHash []byte) (*
}
}
func
getCrossTxHashs
(
api
client
.
QueueProtocolAPI
,
status
*
pt
.
ParacrossNodeStatus
)
([][]
byte
,
[]
byte
,
error
)
{
func
getCrossTxHashs
(
api
client
.
QueueProtocolAPI
,
status
*
pt
.
ParacrossNodeStatus
)
([][]
byte
,
[]
byte
,
error
)
{
if
!
(
status
.
MainBlockHeight
>=
getDappForkHeight
(
pt
.
ForkCommitTx
)
)
{
if
status
.
MainBlockHeight
<
getDappForkHeight
(
pt
.
ForkCommitTx
)
{
return
status
.
CrossTxHashs
,
status
.
CrossTxResult
,
nil
return
status
.
CrossTxHashs
,
status
.
CrossTxResult
,
nil
}
}
...
@@ -752,8 +746,7 @@ func getCrossTxHashs(api client.QueueProtocolAPI, status *pt.ParacrossNodeStatus
...
@@ -752,8 +746,7 @@ func getCrossTxHashs(api client.QueueProtocolAPI, status *pt.ParacrossNodeStatus
if
!
bytes
.
Equal
(
status
.
CrossTxHashs
[
0
],
crossCheckHash
)
{
if
!
bytes
.
Equal
(
status
.
CrossTxHashs
[
0
],
crossCheckHash
)
{
clog
.
Error
(
"getCrossTxHashs para hash not equal"
,
"paraHeight"
,
status
.
Height
,
clog
.
Error
(
"getCrossTxHashs para hash not equal"
,
"paraHeight"
,
status
.
Height
,
"mainHeight"
,
status
.
MainBlockHeight
,
"mainHash"
,
hex
.
EncodeToString
(
status
.
MainBlockHash
),
"mainHeight"
,
status
.
MainBlockHeight
,
"mainHash"
,
hex
.
EncodeToString
(
status
.
MainBlockHash
),
"main.crossHash"
,
hex
.
EncodeToString
(
crossCheckHash
),
"main.crossHash"
,
hex
.
EncodeToString
(
crossCheckHash
),
"commit.crossHash"
,
hex
.
EncodeToString
(
status
.
CrossTxHashs
[
0
]),
"commit.crossHash"
,
hex
.
EncodeToString
(
status
.
CrossTxHashs
[
0
]),
"main.baseHash"
,
hex
.
EncodeToString
(
baseCheckTxHash
),
"commit.baseHash"
,
hex
.
EncodeToString
(
status
.
TxHashs
[
0
]))
"main.baseHash"
,
hex
.
EncodeToString
(
baseCheckTxHash
),
"commit.baseHash"
,
hex
.
EncodeToString
(
status
.
TxHashs
[
0
]))
for
_
,
hash
:=
range
baseHashs
{
for
_
,
hash
:=
range
baseHashs
{
clog
.
Error
(
"getCrossTxHashs base tx hash"
,
"txhash"
,
hex
.
EncodeToString
(
hash
))
clog
.
Error
(
"getCrossTxHashs base tx hash"
,
"txhash"
,
hex
.
EncodeToString
(
hash
))
...
@@ -767,8 +760,7 @@ func getCrossTxHashs(api client.QueueProtocolAPI, status *pt.ParacrossNodeStatus
...
@@ -767,8 +760,7 @@ func getCrossTxHashs(api client.QueueProtocolAPI, status *pt.ParacrossNodeStatus
//只获取跨链tx
//只获取跨链tx
rst
,
err
:=
hex
.
DecodeString
(
string
(
status
.
CrossTxResult
))
rst
,
err
:=
hex
.
DecodeString
(
string
(
status
.
CrossTxResult
))
if
err
!=
nil
{
if
err
!=
nil
{
clog
.
Error
(
"getCrossTxHashs decode string"
,
"CrossTxResult"
,
string
(
status
.
CrossTxResult
),
clog
.
Error
(
"getCrossTxHashs decode rst"
,
"CrossTxResult"
,
string
(
status
.
CrossTxResult
),
"paraHeight"
,
status
.
Height
)
"commit.height"
,
status
.
Height
)
return
nil
,
nil
,
types
.
ErrInvalidParam
return
nil
,
nil
,
types
.
ErrInvalidParam
}
}
...
@@ -789,7 +781,7 @@ func (a *action) execCrossTxs(status *pt.ParacrossNodeStatus) (*types.Receipt, e
...
@@ -789,7 +781,7 @@ 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
.
Debug
(
"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
])
...
...
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