/
rootchain_state.go
85 lines (76 loc) · 2.13 KB
/
rootchain_state.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
package pls
import (
"math/big"
"sync"
"time"
)
type rootchainState struct {
rcm *RootChainManager
// contract parameters
costERO uint64
costERU uint64
costURBPrepare uint64
costURB uint64
costORB uint64
costNRB uint64
maxRequests uint64
requestGas uint64
lastEpoch uint64
currentFork uint64
lastUpdateTime time.Time
lock sync.Mutex
}
func newRootchainState(rcm *RootChainManager) *rootchainState {
rs := &rootchainState{rcm: rcm}
rs.costERO = rs.getCostERO()
rs.costERU = rs.getCostERU()
rs.costURBPrepare = rs.getCostURBPrepare()
rs.costURB = rs.getCostURB()
rs.costORB = rs.getCostORB()
rs.costNRB = rs.getCostNRB()
rs.maxRequests = rs.getMaxRequests()
rs.requestGas = rs.getRequestGas()
rs.lastEpoch = rs.getLastEpoch()
rs.currentFork = rs.getCurrentFork()
return rs
}
func (rs *rootchainState) getCostERU() uint64 {
r, _ := rs.rcm.rootchainContract.COSTERU(baseCallOpt)
return r.Uint64()
}
func (rs *rootchainState) getCostERO() uint64 {
r, _ := rs.rcm.rootchainContract.COSTERO(baseCallOpt)
return r.Uint64()
}
func (rs *rootchainState) getCostURBPrepare() uint64 {
r, _ := rs.rcm.rootchainContract.COSTURBPREPARE(baseCallOpt)
return r.Uint64()
}
func (rs *rootchainState) getCostURB() uint64 {
r, _ := rs.rcm.rootchainContract.COSTURB(baseCallOpt)
return r.Uint64()
}
func (rs *rootchainState) getCostORB() uint64 {
r, _ := rs.rcm.rootchainContract.COSTORB(baseCallOpt)
return r.Uint64()
}
func (rs *rootchainState) getCostNRB() uint64 {
r, _ := rs.rcm.rootchainContract.COSTNRB(baseCallOpt)
return r.Uint64()
}
func (rs *rootchainState) getMaxRequests() uint64 {
r, _ := rs.rcm.rootchainContract.MAXREQUESTS(baseCallOpt)
return r.Uint64()
}
func (rs *rootchainState) getRequestGas() uint64 {
r, _ := rs.rcm.rootchainContract.REQUESTGAS(baseCallOpt)
return r.Uint64()
}
func (rs *rootchainState) getLastEpoch() uint64 {
fork, _ := rs.rcm.rootchainContract.Forks(baseCallOpt, big.NewInt(int64(rs.currentFork)))
return fork.LastEpoch
}
func (rs *rootchainState) getCurrentFork() uint64 {
fork, _ := rs.rcm.rootchainContract.CurrentFork(baseCallOpt)
return fork.Uint64()
}