Skip to content

Commit 352d75d

Browse files
committed
Format p2p.go
1 parent 4796516 commit 352d75d

File tree

1 file changed

+117
-116
lines changed

1 file changed

+117
-116
lines changed

hermes/src/network/p2p.go

Lines changed: 117 additions & 116 deletions
Original file line numberDiff line numberDiff line change
@@ -46,122 +46,123 @@ import (
4646

4747
//export RegisterObservationCallback
4848
func RegisterObservationCallback(f C.callback_t) {
49-
go func() {
50-
ctx := context.Background()
51-
52-
// Setup base network configuration.
53-
networkID := "/wormhole/mainnet/2"
54-
priv, _, err := crypto.GenerateKeyPair(crypto.Ed25519, -1)
55-
bootstrapPeers := []string{
56-
"/dns4/wormhole-mainnet-v2-bootstrap.certus.one/udp/8999/quic/p2p/12D3KooWQp644DK27fd3d4Km3jr7gHiuJJ5ZGmy8hH4py7fP4FP7",
57-
}
58-
59-
// Setup libp2p Connection Manager.
60-
mgr, err := connmgr.NewConnManager(
61-
100,
62-
400,
63-
connmgr.WithGracePeriod(0),
64-
)
65-
66-
if err != nil {
67-
err := fmt.Errorf("Failed to create connection manager: %w", err)
68-
fmt.Println(err)
69-
return
70-
}
71-
72-
// Setup libp2p Reactor.
73-
h, err := libp2p.New(
74-
libp2p.Identity(priv),
75-
libp2p.ListenAddrStrings(
76-
"/ip4/0.0.0.0/udp/30910/quic",
77-
"/ip6/::/udp/30910/quic",
78-
),
79-
libp2p.Security(libp2ptls.ID, libp2ptls.New),
80-
libp2p.Transport(libp2pquic.NewTransport),
81-
libp2p.ConnectionManager(mgr),
82-
libp2p.Routing(func(h host.Host) (routing.PeerRouting, error) {
83-
bootstrappers := make([]peer.AddrInfo, 0)
84-
for _, addr := range bootstrapPeers {
85-
ma, err := multiaddr.NewMultiaddr(addr)
86-
if err != nil {
87-
continue
88-
}
89-
90-
pi, err := peer.AddrInfoFromP2pAddr(ma)
91-
if err != nil || pi.ID == h.ID() {
92-
continue
93-
}
94-
95-
bootstrappers = append(bootstrappers, *pi)
96-
}
97-
idht, err := dht.New(ctx, h, dht.Mode(dht.ModeServer),
98-
dht.ProtocolPrefix(protocol.ID("/"+networkID)),
99-
dht.BootstrapPeers(bootstrappers...),
100-
)
101-
return idht, err
102-
}),
103-
)
104-
105-
if err != nil {
106-
err := fmt.Errorf("Failed to create libp2p host: %w", err)
107-
fmt.Println(err)
108-
return
109-
}
110-
111-
topic := fmt.Sprintf("%s/%s", networkID, "broadcast")
112-
ps, err := pubsub.NewGossipSub(ctx, h)
113-
if err != nil {
114-
err := fmt.Errorf("Failed to create Pubsub: %w", err)
115-
fmt.Println(err)
116-
return
117-
}
118-
119-
th, err := ps.Join(topic)
120-
if err != nil {
121-
err := fmt.Errorf("Failed to join topic: %w", err)
122-
fmt.Println(err)
123-
return
124-
}
125-
126-
sub, err := th.Subscribe()
127-
if err != nil {
128-
err := fmt.Errorf("Failed to subscribe topic: %w", err)
129-
fmt.Println(err)
130-
return
131-
}
132-
133-
for {
134-
for {
135-
select {
136-
case <-ctx.Done():
137-
return
138-
default:
139-
envelope, err := sub.Next(ctx)
140-
if err != nil {
141-
err := fmt.Errorf("Failed to receive Pubsub message: %w", err)
142-
fmt.Println(err)
143-
return
144-
}
145-
146-
// Definition for GossipMessage is generated by Protobuf, see `p2p.proto`.
147-
var msg GossipMessage
148-
err = proto.Unmarshal(envelope.Data, &msg)
149-
150-
switch msg.Message.(type) {
151-
case *GossipMessage_SignedObservation:
152-
case *GossipMessage_SignedVaaWithQuorum:
153-
vaaBytes := msg.GetSignedVaaWithQuorum().GetVaa()
154-
cBytes := C.CBytes(vaaBytes)
155-
defer C.free(cBytes)
156-
C.invoke(f, C.observation_t{
157-
vaa: (*C.char)(cBytes),
158-
vaa_len: C.size_t(len(vaaBytes)),
159-
})
160-
}
161-
}
162-
}
163-
}
164-
}()
49+
go func() {
50+
ctx := context.Background()
51+
52+
// Setup base network configuration.
53+
networkID := "/wormhole/testnet/2/1"
54+
priv, _, err := crypto.GenerateKeyPair(crypto.Ed25519, -1)
55+
bootstrapPeers := []string{
56+
//"/dns4/wormhole-mainnet-v2-bootstrap.certus.one/udp/8999/quic/p2p/12D3KooWQp644DK27fd3d4Km3jr7gHiuJJ5ZGmy8hH4py7fP4FP7",
57+
"/dns4/wormhole-testnet-v2-bootstrap.certus.one/udp/8999/quic/p2p/12D3KooWAkB9ynDur1Jtoa97LBUp8RXdhzS5uHgAfdTquJbrbN7i",
58+
}
59+
60+
// Setup libp2p Connection Manager.
61+
mgr, err := connmgr.NewConnManager(
62+
100,
63+
400,
64+
connmgr.WithGracePeriod(0),
65+
)
66+
67+
if err != nil {
68+
err := fmt.Errorf("Failed to create connection manager: %w", err)
69+
fmt.Println(err)
70+
return
71+
}
72+
73+
// Setup libp2p Reactor.
74+
h, err := libp2p.New(
75+
libp2p.Identity(priv),
76+
libp2p.ListenAddrStrings(
77+
"/ip4/0.0.0.0/udp/30910/quic",
78+
"/ip6/::/udp/30910/quic",
79+
),
80+
libp2p.Security(libp2ptls.ID, libp2ptls.New),
81+
libp2p.Transport(libp2pquic.NewTransport),
82+
libp2p.ConnectionManager(mgr),
83+
libp2p.Routing(func(h host.Host) (routing.PeerRouting, error) {
84+
bootstrappers := make([]peer.AddrInfo, 0)
85+
for _, addr := range bootstrapPeers {
86+
ma, err := multiaddr.NewMultiaddr(addr)
87+
if err != nil {
88+
continue
89+
}
90+
91+
pi, err := peer.AddrInfoFromP2pAddr(ma)
92+
if err != nil || pi.ID == h.ID() {
93+
continue
94+
}
95+
96+
bootstrappers = append(bootstrappers, *pi)
97+
}
98+
idht, err := dht.New(ctx, h, dht.Mode(dht.ModeServer),
99+
dht.ProtocolPrefix(protocol.ID("/"+networkID)),
100+
dht.BootstrapPeers(bootstrappers...),
101+
)
102+
return idht, err
103+
}),
104+
)
105+
106+
if err != nil {
107+
err := fmt.Errorf("Failed to create libp2p host: %w", err)
108+
fmt.Println(err)
109+
return
110+
}
111+
112+
topic := fmt.Sprintf("%s/%s", networkID, "broadcast")
113+
ps, err := pubsub.NewGossipSub(ctx, h)
114+
if err != nil {
115+
err := fmt.Errorf("Failed to create Pubsub: %w", err)
116+
fmt.Println(err)
117+
return
118+
}
119+
120+
th, err := ps.Join(topic)
121+
if err != nil {
122+
err := fmt.Errorf("Failed to join topic: %w", err)
123+
fmt.Println(err)
124+
return
125+
}
126+
127+
sub, err := th.Subscribe()
128+
if err != nil {
129+
err := fmt.Errorf("Failed to subscribe topic: %w", err)
130+
fmt.Println(err)
131+
return
132+
}
133+
134+
for {
135+
for {
136+
select {
137+
case <-ctx.Done():
138+
return
139+
default:
140+
envelope, err := sub.Next(ctx)
141+
if err != nil {
142+
err := fmt.Errorf("Failed to receive Pubsub message: %w", err)
143+
fmt.Println(err)
144+
return
145+
}
146+
147+
// Definition for GossipMessage is generated by Protobuf, see `p2p.proto`.
148+
var msg GossipMessage
149+
err = proto.Unmarshal(envelope.Data, &msg)
150+
151+
switch msg.Message.(type) {
152+
case *GossipMessage_SignedObservation:
153+
case *GossipMessage_SignedVaaWithQuorum:
154+
vaaBytes := msg.GetSignedVaaWithQuorum().GetVaa()
155+
cBytes := C.CBytes(vaaBytes)
156+
defer C.free(cBytes)
157+
C.invoke(f, C.observation_t{
158+
vaa: (*C.char)(cBytes),
159+
vaa_len: C.size_t(len(vaaBytes)),
160+
})
161+
}
162+
}
163+
}
164+
}
165+
}()
165166
}
166167

167168
func main() {

0 commit comments

Comments
 (0)