I was browsing your code about multiaddr, and just FYI, if the base58 you implemented is the "bitcoin flavored" one, it looks like it won't passe the bitcon base58 test, but as you're not using it, and as I did not found any spec about using base58 in multiaddr, I don't know if that normal or not ^^
https://github.com/bitcoin/bitcoin/blob/master/src/test/data/base58_encode_decode.json
I was browsing your code about multiaddr, and just FYI, if the base58 you implemented is the "bitcoin flavored" one, it looks like it won't passe the bitcon base58 test, but as you're not using it, and as I did not found any spec about using base58 in multiaddr, I don't know if that normal or not ^^
https://github.com/bitcoin/bitcoin/blob/master/src/test/data/base58_encode_decode.json