Go-libp2p dht PutValue error Key invalid record keytype

Ive been trying to use dht.PutValue but im struggling with the key… what is it exactly ? how do i generate it ?

I tried multihash.EncodeName([]byte(str), "hashing function") with sha2-256, sha2-512 … but i get the invalid record keytype error when i pass it to dht.PutValue

When i search in the documentation, i find it evaluating this function record.SplitKey(mHash.B58string())

// SplitKey takes a key in the form /$namespace/$path and splits it into
// $namespace and $path.

I dont know how to generate something with that form nor what namespace.

My code:
Creating the DHT

var dht *kaddht.IpfsDHT

newDHT := func(h host.Host) (routing.PeerRouting, error) {

var err error

ds, err := levelds.NewDatastore("", nil)

dht = kaddht.NewDHT(ctx, h, ds)

return dht, err


routing := libp2p.Routing(newDHT)

Creating the host

host, err := libp2p.New(ctx, transports ,listenAddrs ,muxers ,security , routing, )

Hashing the data

mBHash, err1 := mh.EncodeName(byte(str), “sha2-256”)
mHash, err2 := mh.Cast(mBHash)

Putting the data

dht.Validator(mHash.B58String(), byte(str))

Then i get

invalid record keytype