func (bsj BlockStoreStateJSON) Save(db dbm.DB) { bytes, err := json.Marshal(bsj) if err != nil { PanicSanity(Fmt("Could not marshal state bytes: %v", err)) } db.Set(blockStoreKey, bytes) }
func LoadBlockStoreStateJSON(db dbm.DB) BlockStoreStateJSON { bytes := db.Get(blockStoreKey) if bytes == nil { return BlockStoreStateJSON{ Height: 0, } } bsj := BlockStoreStateJSON{} err := json.Unmarshal(bytes, &bsj) if err != nil { PanicCrisis(Fmt("Could not unmarshal bytes: %X", bytes)) } return bsj }
func LoadState(db dbm.DB) *State { s := &State{db: db} buf := db.Get(stateKey) if len(buf) == 0 { return nil } else { r, n, err := bytes.NewReader(buf), new(int), new(error) wire.ReadBinaryPtr(&s, r, 0, n, err) if *err != nil { // DATA HAS BEEN CORRUPTED OR THE SPEC HAS CHANGED Exit(Fmt("Data has been corrupted or its spec has changed: %v\n", *err)) } // TODO: ensure that buf is completely read. } return s }