MCPcopy Create free account
hub / github.com/DNAProject/DNA / init

Method init

validator/db/store.go:62–111  ·  view source on GitHub ↗
()

Source from the content-addressed store, hash-verified

60}
61
62func (self *Store) init() error {
63 prefix := []byte{byte(SYS_VERSION)}
64 version, err := self.db.Get(prefix)
65 if err != nil {
66 version = []byte{0x00}
67 }
68
69 if version[0] == 0x01 {
70 //test if genesis block in db
71 genesis, err := self.db.Get([]byte{byte(SYS_GENESIS_BLOCK)})
72 if err != nil {
73 self.bestBlockHeader = nil
74 self.genesisBlock = nil
75 return nil
76 }
77
78 self.genesisBlock, err = types.BlockFromRawBytes(genesis)
79 if err != nil {
80 return errors.New(fmt.Sprint("inconsist db: genesis block deserialize failed. cause of:\n ", err.Error()))
81 }
82
83 best, err := self.db.Get([]byte{byte(SYS_BEST_BLOCK_HEADER)})
84 if err != nil {
85 return errors.New("inconsist db: best blockheader not in db")
86 }
87
88 self.bestBlockHeader, err = types.HeaderFromRawBytes(best)
89 if err != nil {
90 return errors.New(fmt.Sprint("inconsist db: best blockheader deserialize failed. cause of:\n ", err.Error()))
91 }
92
93 return nil
94 } else {
95 self.bestBlockHeader = nil
96 self.genesisBlock = nil
97 // can not find version info
98 iter := self.db.NewIterator(nil)
99 if iter.Next() {
100 iter.Release()
101 return errors.New("not a fresh db")
102 }
103 iter.Release()
104
105 // put version to db
106 err := self.db.Put(prefix, []byte{0x01})
107
108 return err
109 }
110
111}
112
113func (self *Store) GetBestBlock() (BestBlock, error) {
114 if self.bestBlockHeader == nil {

Callers 1

NewStoreFunction · 0.95

Calls 8

BlockFromRawBytesFunction · 0.92
HeaderFromRawBytesFunction · 0.92
GetMethod · 0.65
ErrorMethod · 0.65
NewIteratorMethod · 0.65
NextMethod · 0.65
ReleaseMethod · 0.65
PutMethod · 0.65

Tested by

no test coverage detected