obfs4 does not work
meek-azure does not work
The speed of snowflake is too slow., You can’t download a 1MB file in 5 minutes.
I suggest that Tor use a new bridge libp2p
There are several reasons to consider using libp2p as a networking layer to create a robust P2P application:
Modularity: libp2p is designed to be modular, allowing developers to mix and match different components to meet the needs of their particular application. This makes it easy to customize the networking stack to fit the specific requirements of any P2P application.
Extensive transport configurability: libp2p provides a set of specifications that can be adapted to support various transport protocols, allowing libp2p applications to operate in various runtime and networking environments as the wealth of transport protocol choices makes it possible to use libp2p in a variety of scenarios.
Versatility: In addition to supporting a wide range of transports, libp2p offers a range of discovery mechanisms, data storage and retrieval patterns, and is also implemented in many programming languages, providing developers with great flexibility when building P2P applications.
Security: libp2p includes several security features, such as peer identity verification using public key cryptography and encrypted communication between peers using modern cryptographic algorithms.
Robustness: libp2p is a robust and reliable networking protocol that is designed to withstand stress, disturbance, and change. Its features and design choices ensure that it is able to function effectively and efficiently in a wide range of environments, and it is able to recover quickly from disruptions or failures. It also offers protection against network attacks through the use of mitigation techniques.
Resiliency: P2P networks are often more resilient than traditional client-server networks, as there is no single point of failure. libp2p includes features such as peer discovery and content routing that help to ensure that the network remains available and accessible even if some peers are offline or unreachable.
Efficiency: P2P networks can be more efficient in resource utilization, as data is distributed across multiple peers rather than stored on a central server. libp2p includes various storage and retrieval patterns that allow developers to distribute data efficiently across the network, making it possible to store and retrieve data in a cost-effective and scalable way.
Piercing NAT Barriers: libp2p is equipped with capabilities for NAT traversal, which allows P2P communication between peers even when they are behind NAT devices or firewalls. This helps to maintain the connectivity of the network and ensure that it remains accessible despite the presence of these obstacles.
Message Distribution and Dissemination: One such pattern libp2p uses is publish/subscribe (pubsub), which allows a sender (publisher) to send a message to multiple recipients (subscribers) without the publisher having to know who the subscribers are. libp2p implements pubsub through the use of protocols like gossipsub, providing developers with a flexible and efficient means of exchanging data and messages within their P2P applications.
Interoperability: libp2p implementations in different programming languages and libp2p releases across versions are designed to be interoperable with one another. This enables applications /from different language ecosystems to communicate seamlessly. This helps to promote a healthy, interconnected ecosystem of P2P applications.
Decentralization: One of the main advantages of P2P networks is their decentralized nature, allowing them to operate without a central authority. libp2p is designed to facilitate decentralized communication between peers, making it possible to build P2P applications resistant to censorship and more resilient in the face of network disruptions.
The Satoshi client discovers the IP address and port of nodes in several different ways.
- Nodes discover their own external address by various methods.
- Nodes receive the callback address of remote nodes that connect to them.
- Nodes makes DNS request to receive IP addresses.
- Nodes can use addresses hard coded into the software.
- Nodes exchange addresses with other nodes.
- Nodes store addresses in a database and read that database on startup.
- Nodes can be provided addresses as command line arguments
- Nodes read addresses from a user provided text file on startup