func (bs *blockstore) Put(block *blocks.Block) error { k := block.Key().DsKey() // Has is cheaper than Put, so see if we already have it exists, err := bs.datastore.Has(k) if err == nil && exists { return nil // already stored. } return bs.datastore.Put(k, babel.ToBabelianAddressCompressed(block.Data)) }
func (bs *blockstore) PutMany(blocks []*blocks.Block) error { t, err := bs.datastore.Batch() if err != nil { return err } for _, b := range blocks { k := b.Key().DsKey() exists, err := bs.datastore.Has(k) if err == nil && exists { continue } err = t.Put(k, babel.ToBabelianAddressCompressed(b.Data)) if err != nil { return err } } return t.Commit() }