@@ -21,23 +21,36 @@ var (
21
21
)
22
22
23
23
//Update allBlockHeaders to the latest header. Start listening to broadcasted headers after.
24
- func Sync () {
25
- loadBlockHeaders ()
24
+ func Sync () error {
25
+ err := loadBlockHeaders ()
26
+ if err != nil {
27
+ return err
28
+ }
29
+
26
30
go incomingBlockHeaders ()
31
+
32
+ return nil
27
33
}
28
34
29
- func loadBlockHeaders () {
30
- var last * protocol.Block
35
+ func loadBlockHeaders () error {
31
36
32
37
//youngest = fetchBlockHeader(nil)
33
- if last = cstorage .ReadLastBlockHeader (); last != nil {
34
- var loaded []* protocol.Block
35
- loaded = loadDB (last , [32 ]byte {}, loaded )
36
- blockHeaders = append (blockHeaders , loaded ... )
38
+ last , err := cstorage .ReadLastBlockHeader ()
39
+ if err != nil || last == nil {
40
+ return err
41
+ }
42
+
43
+ loaded , err := loadDB (last , [32 ]byte {}, []* protocol.Block {})
44
+ if err != nil {
45
+ return err
37
46
}
38
47
48
+ blockHeaders = append (blockHeaders , loaded ... )
49
+
39
50
//The client is up to date with the network and can start listening for incoming headers.
40
51
network .Uptodate = true
52
+
53
+ return nil
41
54
}
42
55
43
56
func incomingBlockHeaders () {
@@ -114,15 +127,17 @@ func fetchBlockHeader(blockHash []byte) (blockHeader *protocol.Block) {
114
127
return blockHeader
115
128
}
116
129
117
- func loadDB (last * protocol.Block , abort [32 ]byte , loaded []* protocol.Block ) []* protocol.Block {
118
- var ancestor * protocol.Block
119
-
130
+ func loadDB (last * protocol.Block , abort [32 ]byte , loaded []* protocol.Block ) ([]* protocol.Block , error ) {
120
131
if last .PrevHash != abort {
121
- if ancestor = cstorage .ReadBlockHeader (last .PrevHash ); ancestor == nil {
122
- logger .Fatal ()
132
+ ancestor , err := cstorage .ReadBlockHeader (last .PrevHash )
133
+ if err != nil {
134
+ return nil , err
123
135
}
124
136
125
- loaded = loadDB (ancestor , abort , loaded )
137
+ loaded , err = loadDB (ancestor , abort , loaded )
138
+ if err != nil {
139
+ return nil , err
140
+ }
126
141
}
127
142
128
143
logger .Printf ("Header %x with height %v loaded from DB\n " ,
@@ -131,7 +146,7 @@ func loadDB(last *protocol.Block, abort [32]byte, loaded []*protocol.Block) []*p
131
146
132
147
loaded = append (loaded , last )
133
148
134
- return loaded
149
+ return loaded , nil
135
150
}
136
151
137
152
func loadNetwork (last * protocol.Block , abort [32 ]byte , loaded []* protocol.Block ) []* protocol.Block {
@@ -196,6 +211,7 @@ func getState(acc *Account, lastTenTx []*FundsTxJson) (err error) {
196
211
return err
197
212
}
198
213
214
+ // Check if account is sender of a transaction
199
215
if fundsTx .From == acc .Address {
200
216
//If Acc is no root, balance funds
201
217
if ! acc .IsRoot {
@@ -206,12 +222,14 @@ func getState(acc *Account, lastTenTx []*FundsTxJson) (err error) {
206
222
acc .TxCnt += 1
207
223
}
208
224
225
+ // Check if account is recipient of a transaction
209
226
if fundsTx .To == acc .Address {
210
227
acc .Balance += fundsTx .Amount
211
228
212
229
put (lastTenTx , ConvertFundsTx (fundsTx , "verified" ))
213
230
}
214
231
232
+ // Check if account is beneficiary of a block
215
233
if block .Beneficiary == acc .Address {
216
234
acc .Balance += fundsTx .Fee
217
235
}
0 commit comments