go-libp2p-core
go-libp2p-core copied to clipboard
peer.ID does not work as map key in JSON maps
Since peer.ID
s defines themselves as str
, defining a map[peer.ID]<type>
and marshaling that to JSON does not make use of the MarshalText()
facility to encode the map keys. Somehow default encoding/decoding when doing it doesn't work (it decodes peers with different IDs but doesn't complain, which is worse).
See https://github.com/golang/go/issues/28827
Probably doing the same thing as cid
s and switching to type ID struct { str string }
would fix this.
However, this might be very breaking because people rely on doing pid1 == pid2
(and I think that would stop working, at least from outside this package? it is not clear from the Go documentation).
Thoughts?
Let's not change that, the pid1 == pid2
test is prevalent in the codebase.
pid1 == pid2
would still work with type ID struct { str string }
. The only issue would be pid1 == ""
(which we do use) but I can live with that.