lontivero on Nostr: We've completely redesign our network isolation code. When Wasabi Wallet development ...
We've completely redesign our network isolation code.
When Wasabi Wallet development began, .NET lacked native support for routing HTTP traffic through Tor, despite having an excellent HttpClient. There was no built-in SOCKS proxy support, so Wasabi's creator implemented the SOCKS protocol to interact with Tor's SOCKS proxy and developed a custom HTTP/1.1 implementation from scratch. This allowed us to maintain network-level privacy by isolating identities behind different types of requests.
However, as time passed, our custom HTTP implementation started showing its limitations. It lacked support for redirects, so we had to build that feature in. When response compression became necessary, we had to add support for a couple of compression algorithms. Additionally, our coordinator announcer uses the Nostr protocol, which is based on WebSocket, meaning we would have had to implement the WebSocket protocol ourselves, too.
It became clear that we needed better building blocks. Continuing to implement low-level network protocols ourselves wasn't sustainable. For example, making a request to an HTTP/2 server would have required extensive work.
The good news is that with .NET 6, proxying HTTP traffic through a SOCKS proxy is now natively supported. This means we can replace all of our custom code with a higher-quality, more performant, efficient, and less memory-hungry HttpClient. This significantly reduces the complexity and volume of our code, improving both maintenance and performance.
#wasabiwallet #privacy #coinjoin #bitcoin
When Wasabi Wallet development began, .NET lacked native support for routing HTTP traffic through Tor, despite having an excellent HttpClient. There was no built-in SOCKS proxy support, so Wasabi's creator implemented the SOCKS protocol to interact with Tor's SOCKS proxy and developed a custom HTTP/1.1 implementation from scratch. This allowed us to maintain network-level privacy by isolating identities behind different types of requests.
However, as time passed, our custom HTTP implementation started showing its limitations. It lacked support for redirects, so we had to build that feature in. When response compression became necessary, we had to add support for a couple of compression algorithms. Additionally, our coordinator announcer uses the Nostr protocol, which is based on WebSocket, meaning we would have had to implement the WebSocket protocol ourselves, too.
It became clear that we needed better building blocks. Continuing to implement low-level network protocols ourselves wasn't sustainable. For example, making a request to an HTTP/2 server would have required extensive work.
The good news is that with .NET 6, proxying HTTP traffic through a SOCKS proxy is now natively supported. This means we can replace all of our custom code with a higher-quality, more performant, efficient, and less memory-hungry HttpClient. This significantly reduces the complexity and volume of our code, improving both maintenance and performance.
#wasabiwallet #privacy #coinjoin #bitcoin