1
vendor/github.com/status-im/go-multiaddr-ethv4/.gitignore
generated
vendored
Normal file
1
vendor/github.com/status-im/go-multiaddr-ethv4/.gitignore
generated
vendored
Normal file
@@ -0,0 +1 @@
|
||||
vendor/
|
||||
15
vendor/github.com/status-im/go-multiaddr-ethv4/README.md
generated
vendored
Normal file
15
vendor/github.com/status-im/go-multiaddr-ethv4/README.md
generated
vendored
Normal file
@@ -0,0 +1,15 @@
|
||||
ETHv4 multiaddr library
|
||||
=======================
|
||||
|
||||
ETHv4 mutliaddr format adds a spec that is compatible with enode definition, for example:
|
||||
peer with identity 436cc6f674928fdc9a9f7990f2944002b685d1c37f025c1be425185b5b1f0900feaf1ccc2a6130268f9901be4a7d252f37302c8335a2c1a62736e9232691cc3a ip 174.138.105.243 and tcp port 30404 can be defined as enode:
|
||||
|
||||
```
|
||||
enode://436cc6f674928fdc9a9f7990f2944002b685d1c37f025c1be425185b5b1f0900feaf1ccc2a6130268f9901be4a7d252f37302c8335a2c1a62736e9232691cc3a@174.138.105.243:30404
|
||||
```
|
||||
|
||||
or as multiaddr
|
||||
|
||||
```
|
||||
/ip4/174.138.105.243/tcp/30404/ethv4/436cc6f674928fdc9a9f7990f2944002b685d1c37f025c1be425185b5b1f0900feaf1ccc2a6130268f9901be4a7d252f37302c8335a2c1a62736e9232691cc3a
|
||||
```
|
||||
67
vendor/github.com/status-im/go-multiaddr-ethv4/protocol.go
generated
vendored
Normal file
67
vendor/github.com/status-im/go-multiaddr-ethv4/protocol.go
generated
vendored
Normal file
@@ -0,0 +1,67 @@
|
||||
package ethv4
|
||||
|
||||
import (
|
||||
"errors"
|
||||
|
||||
"github.com/ethereum/go-ethereum/p2p/enode"
|
||||
"github.com/libp2p/go-libp2p/core/crypto"
|
||||
"github.com/libp2p/go-libp2p/core/peer"
|
||||
ma "github.com/multiformats/go-multiaddr"
|
||||
mh "github.com/multiformats/go-multihash"
|
||||
|
||||
btcec "github.com/btcsuite/btcd/btcec/v2"
|
||||
)
|
||||
|
||||
const (
|
||||
P_ETHv4 = 0x01EA
|
||||
)
|
||||
|
||||
func init() {
|
||||
if err := ma.AddProtocol(
|
||||
ma.Protocol{
|
||||
Name: "ethv4",
|
||||
Code: P_ETHv4,
|
||||
VCode: ma.CodeToVarint(P_ETHv4),
|
||||
Size: 312,
|
||||
Path: false,
|
||||
Transcoder: TranscoderETHv4,
|
||||
}); err != nil {
|
||||
panic(err)
|
||||
}
|
||||
}
|
||||
|
||||
var TranscoderETHv4 = ma.NewTranscoderFromFunctions(ethv4StB, ethv4BtS, func([]byte) error { return nil })
|
||||
|
||||
func ethv4StB(s string) ([]byte, error) {
|
||||
id, err := mh.FromB58String(s)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return id, err
|
||||
}
|
||||
|
||||
func ethv4BtS(b []byte) (string, error) {
|
||||
id, err := mh.Cast(b)
|
||||
if err != nil {
|
||||
return "", err
|
||||
}
|
||||
return id.B58String(), err
|
||||
}
|
||||
|
||||
// PeerIDToNodeID casts peer.ID (b58 encoded string) to discover.NodeID
|
||||
func PeerIDToNodeID(pid string) (n enode.ID, err error) {
|
||||
nodeid, err := peer.Decode(pid)
|
||||
if err != nil {
|
||||
return n, err
|
||||
}
|
||||
pubkey, err := nodeid.ExtractPublicKey()
|
||||
if err != nil {
|
||||
return n, err
|
||||
}
|
||||
seckey, ok := pubkey.(*crypto.Secp256k1PublicKey)
|
||||
if !ok {
|
||||
return n, errors.New("public key is not on the secp256k1 curve")
|
||||
}
|
||||
|
||||
return enode.PubkeyToIDV4((*btcec.PublicKey)(seckey).ToECDSA()), nil
|
||||
}
|
||||
Reference in New Issue
Block a user