func (seed *Seed) Bytes() []byte {
	return seed.seedBytes
}
Bytes marshals the Seed object into a sequence of Bytes that can be used to later restore the Seed by handing it into
the factory method.
package ed25519
import (
	"crypto/rand"
	"encoding/binary"
	"github.com/iotaledger/hive.go/byteutils"
	"github.com/mr-tron/base58"
	"github.com/oasisprotocol/ed25519"
	"golang.org/x/crypto/blake2b"
)
type Seed struct {
	seedBytes []byte
}
func NewSeed(optionalSeedBytes ...[]byte) *Seed {
	if len(optionalSeedBytes) >= 1 {
		if len(optionalSeedBytes[0]) < SeedSize {
			panic("seed is not long enough")
		}
		return &Seed{
			seedBytes: optionalSeedBytes[0],
		}
	}
	randomSeedBytes := make([]byte, ed25519.SeedSize)
	_, err := rand.Read(randomSeedBytes)
	if err != nil {
		panic(err)
	}
	return &Seed{
		seedBytes: randomSeedBytes,
	}
}
func (seed *Seed) KeyPair(n uint64) (keyPair *KeyPair) {
	keyPair = &KeyPair{}
	privateKey := ed25519.NewKeyFromSeed(seed.subSeed(n))
	publicKey := privateKey.Public().(ed25519.PublicKey)
	copy(keyPair.PrivateKey[:], privateKey)
	copy(keyPair.PublicKey[:], publicKey)
	return
}