allow bip324 v2 connections for bitcoin clients that don't support bip324 yet
More BIP-324 information
Clients (local) <--> bitcoin-bip324-proxy <--> External p2p peers (remote)
go build .
./bitcoin-bip324-proxy
{"level":"info","message":"metrics listen addr: 127.0.0.1:9333"}
{"level":"info","message":"Listening on 127.0.0.1:8324 as proxy server"}
this will start proxy and listen on localhost:8324 patch your client to always connect to the proxy at port 8324 for peer connections and the proxy will route to the real peer address, trying v2 protocol
./bitcoin-bip324-proxy --peers=12.34.56.78:8333,45.67.78.98:8333
{"level":"info","message":"metrics listen addr: 127.0.0.1:9333"}
{"level":"info","message":"Listening on 127.0.0.1:38400 as direct proxy to 12.34.56.78:8333"}
{"level":"info","message":"Listening on 127.0.0.1:38401 as direct proxy to 45.67.78.98:8333"}
{"level":"info","message":"Listening on 127.0.0.1:8324 as proxy server"}
this will work like simple example above and in addition listen on two more ports. now your client can use "proxy:38400 as a peer address and all traffic will get routed to the real peer "12.34.56.78:8333". same with port 38401, it will route all traffic to real peer "45.67.78.98:8333"
in this way no patching of client is needed but the downside is that the list of peers is static. possible improvement idea: keep listen ports static (so you can configure peers in client) but route to dynamic list of peers that is refreshing
- crypto
- ellswift pub key and encrypt/decrypt primitives
- fschacha20
- FSChaCha20 and FSChaCha20Poly1305 for stream encryption
- transport
- v2Handshake to set up v2 bip324 server or client connection
- still lots to do :-)
- replace lots of the ugly code in crypto package
- more metrics
- more tests
- docker image
- ...
The exporter is heavily based on the python version of the proxy by theStack.