Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
V
validator
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Boards
Labels
Milestones
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
Odysseus
validator
Commits
bcd7e288
Commit
bcd7e288
authored
Mar 25, 2024
by
贾浩@五瓣科技
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
update sync
parent
fa8ca32e
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
67 additions
and
0 deletions
+67
-0
validator.go
core/validator.go
+67
-0
No files found.
core/validator.go
View file @
bcd7e288
...
@@ -60,6 +60,24 @@ func RunValidator(q *quest.Quest, cfg *conf.Config) *Validator {
...
@@ -60,6 +60,24 @@ func RunValidator(q *quest.Quest, cfg *conf.Config) *Validator {
cfg
:
cfg
,
cfg
:
cfg
,
q
:
q
,
q
:
q
,
}
}
if
v
.
date
!=
""
{
// 当前5号,假设db 1号
// v.date = 1, 2,需要处理的是 2,3号
for
v
.
dateToTimestamp
(
v
.
date
)
<
v
.
yesterdayTimestamp
()
-
86400
{
if
err
=
v
.
SyncDayJob
(
v
.
dateToTimestamp
(
v
.
date
)
+
86400
);
err
!=
nil
{
return
nil
}
}
// v.date = 3, 如果当前时间超过提交昨天的时间,需要提交昨天的
if
v
.
dateToTimestamp
(
v
.
date
)
<
v
.
yesterdayTimestamp
()
&&
time
.
Now
()
.
After
(
time
.
Unix
(
v
.
todayTimestamp
()
+
int64
(
cfg
.
CommitOffset
),
0
))
{
if
err
=
v
.
SyncDayJob
(
v
.
dateToTimestamp
(
v
.
date
)
+
86400
);
err
!=
nil
{
return
nil
}
}
}
v
.
LoadMerkleTree
(
lastDay
)
v
.
LoadMerkleTree
(
lastDay
)
v
.
LoadMerkleSumTree
(
lastDay
)
v
.
LoadMerkleSumTree
(
lastDay
)
go
v
.
UpdateContractAddressJob
()
go
v
.
UpdateContractAddressJob
()
...
@@ -157,6 +175,51 @@ func (v *Validator) ProcessDayJob() {
...
@@ -157,6 +175,51 @@ func (v *Validator) ProcessDayJob() {
log
.
Info
(
"process day done"
)
log
.
Info
(
"process day done"
)
}
}
// SyncDayJob 同步任务
func
(
v
*
Validator
)
SyncDayJob
(
dateTimestamp
int64
)
(
err
error
)
{
dbLastDay
,
_
:=
getDBLastDayRoot
(
v
.
lvdb
)
if
dbLastDay
==
v
.
yesterdayString
()
&&
v
.
date
!=
""
{
log
.
WithField
(
"date"
,
v
.
date
)
.
Warn
(
"already process day job"
)
return
}
log
.
WithFields
(
log
.
Fields
{
"date"
:
v
.
timestampToDate
(
dateTimestamp
),
"date timestamp"
:
dateTimestamp
,
})
.
Debug
(
"sync day job"
)
v
.
LoadPendingProofs
(
dateTimestamp
,
dateTimestamp
+
86400
)
v
.
date
=
v
.
timestampToDate
(
dateTimestamp
)
dayProof
:=
v
.
Commit
()
mstRoot
,
_
,
err
:=
v
.
CommitMST
(
dayProof
)
if
err
!=
nil
{
log
.
WithError
(
err
)
.
Error
(
"failed to commit merkle sum tree"
)
return
}
objects
:=
v
.
state
.
IterAllObject
()
mtRoot
,
err
:=
v
.
CommitMT
(
objects
)
if
err
!=
nil
{
log
.
WithError
(
err
)
.
Error
(
"failed to commit merkle tree"
)
return
}
txHash
,
err
:=
v
.
rpc
.
SubmitProofs
(
dateTimestamp
,
mstRoot
,
mtRoot
)
if
err
!=
nil
{
log
.
WithError
(
err
)
.
Error
(
"submit proofs"
)
return
}
err
=
v
.
lvdb
.
Put
([]
byte
(
fmt
.
Sprintf
(
"txid:%s"
,
v
.
date
)),
txHash
.
Bytes
())
if
err
!=
nil
{
log
.
WithError
(
err
)
.
Error
(
"db failed to save txid"
)
return
}
log
.
WithField
(
"tx hash"
,
txHash
.
Hex
())
.
Info
(
"submit proofs to contract"
)
err
=
v
.
lvdb
.
Put
([]
byte
(
"lastday"
),
[]
byte
(
v
.
date
))
if
err
!=
nil
{
log
.
WithError
(
err
)
.
Error
(
"db failed to update last day"
)
return
}
log
.
Info
(
"sync day done"
)
return
}
// Commit statedb提交
// Commit statedb提交
func
(
v
*
Validator
)
Commit
()
(
dayProofs
map
[
common
.
Address
]
*
validatorv1
.
ValidatedProof
)
{
func
(
v
*
Validator
)
Commit
()
(
dayProofs
map
[
common
.
Address
]
*
validatorv1
.
ValidatedProof
)
{
st
:=
time
.
Now
()
st
:=
time
.
Now
()
...
@@ -310,6 +373,10 @@ func (v *Validator) dateToTimestamp(date string) int64 {
...
@@ -310,6 +373,10 @@ func (v *Validator) dateToTimestamp(date string) int64 {
return
t
.
Unix
()
return
t
.
Unix
()
}
}
func
(
v
*
Validator
)
timestampToDate
(
timestamp
int64
)
string
{
return
time
.
Unix
(
timestamp
,
0
)
.
Format
(
"2006-01-02"
)
}
func
(
v
*
Validator
)
duration
()
time
.
Duration
{
func
(
v
*
Validator
)
duration
()
time
.
Duration
{
return
3600
*
24
*
time
.
Second
return
3600
*
24
*
time
.
Second
}
}
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