mirror of
https://github.com/kaspanet/kaspad.git
synced 2025-03-30 15:08:33 +00:00

* Add stability-tests * Fix requires * Fix golint errors * Update README.md * Remove payloadHash from everywhere * don't run vet on kaspad in stability-tests/install_and_test
59 lines
1015 B
Go
59 lines
1015 B
Go
package mine
|
|
|
|
import (
|
|
"compress/gzip"
|
|
"encoding/json"
|
|
"os"
|
|
)
|
|
|
|
// JSONBlock is a json representation of a block in mine format
|
|
type JSONBlock struct {
|
|
ID string `json:"id"`
|
|
Parents []string `json:"parents"`
|
|
}
|
|
|
|
func readBlocks(jsonFile string) (<-chan JSONBlock, error) {
|
|
f, err := os.Open(jsonFile)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
|
|
gzipReader, err := gzip.NewReader(f)
|
|
if err != nil {
|
|
panic(err)
|
|
}
|
|
defer gzipReader.Close()
|
|
|
|
decoder := json.NewDecoder(gzipReader)
|
|
|
|
blockChan := make(chan JSONBlock)
|
|
spawn("mineFromJson.readBlocks", func() {
|
|
// read open bracket
|
|
_, err := decoder.Token()
|
|
if err != nil {
|
|
panic(err)
|
|
}
|
|
|
|
// while the array contains values
|
|
for decoder.More() {
|
|
var block JSONBlock
|
|
// decode an array value (Message)
|
|
err := decoder.Decode(&block)
|
|
if err != nil {
|
|
panic(err)
|
|
}
|
|
|
|
blockChan <- block
|
|
}
|
|
|
|
// read closing bracket
|
|
_, err = decoder.Token()
|
|
if err != nil {
|
|
panic(err)
|
|
}
|
|
|
|
close(blockChan)
|
|
})
|
|
return blockChan, nil
|
|
}
|