func Example_basicUsage() {
	dbPath := filepath.Join(os.TempDir(), "exampleusage")
	db, err := database.Create("ffldb", dbPath, wire.MainNet)
	if err != nil {
		fmt.Println(err)
		return
	}
	defer os.RemoveAll(dbPath)
	defer db.Close()
	err = db.Update(func(tx database.Tx) error {
		key := []byte("mykey")
		value := []byte("myvalue")
		if err := tx.Metadata().Put(key, value); err != nil {
			return err
		}
		if !bytes.Equal(tx.Metadata().Get(key), value) {
			return fmt.Errorf("unexpected value for key '%s'", key)
		}
		nestedBucketKey := []byte("mybucket")
		nestedBucket, err := tx.Metadata().CreateBucket(nestedBucketKey)
		if err != nil {
			return err
		}
		if nestedBucket.Get(key) != nil {
			return fmt.Errorf("key '%s' is not expected nil", key)
		}
		return nil
	})
	if err != nil {
		fmt.Println(err)
		return
	}
}
This example demonstrates creating a new database and using a managed
read-write transaction to store and retrieve metadata.
package database_test
import (
	"bytes"
	"fmt"
	"os"
	"path/filepath"
	"github.com/bitgo/prova/chaincfg"
	"github.com/bitgo/prova/database"
	_ "github.com/bitgo/prova/database/ffldb"
	"github.com/bitgo/prova/provautil"
	"github.com/bitgo/prova/wire"
)
func ExampleCreate() {
	dbPath := filepath.Join(os.TempDir(), "examplecreate")
	db, err := database.Create("ffldb", dbPath, wire.MainNet)
	if err != nil {
		fmt.Println(err)
		return
	}
	defer os.RemoveAll(dbPath)
	defer db.Close()
}