Skip to content

NicolasFlamel1/mwcwallet.com

Repository files navigation

mwcwallet.com

Description

Source code of the MimbleWimble Coin web wallet, mwcwallet.com.

Mwcwallet.com is a self-custodial web wallet that allows you to manage your MimbleWimble Coin in your web browser. It can be accessed as a website at https://mwcwallet.com, as an Onion Service at http://mwcwalletmiq3gdkmfbqlytxunvlxyli4m6zrqozk7xjc353ewqb6bad.onion, as a progressive web app, as a browser extension, or as a standalone HTML file.

This wallet also allows for you to manage your MimbleWimble Coin with Ledger and Trezor hardware wallets by being compatible with the Ledger MimbleWimble Coin app and Trezor firmware with MimbleWimble Coin support.

You can also use your own node, listener, and Tor proxy with this wallet thus allowing it to function without having to rely on any third parties.

Sending MWC To Exchanges Compatibility

Compatibility for sending MWC from the MimbleWimble Coin web wallet to exchanges:

TradeOgre
MWC web wallet website ✅ Requires version 2.2.0 or newer of the web wallet.
MWC web wallet Onion Service ✅ Requires version 2.2.0 or newer of the web wallet.
MWC web wallet progressive web app version ✅ Requires version 2.2.0 or newer of the web wallet.
MWC web wallet browser extension version ✅ Requires version 2.2.0 or newer of the web wallet.
MWC web wallet standalone version ✅ Requires version 2.2.0 or newer of the web wallet.

* This table assumes that the MimbleWimble Coin web wallet is using its default settings.

* WhiteBIT had temporarily suspended depositing and withdrawing MWC when this table was created which is why they aren't included.

* CORS issues can by bypassed by disabling CORS checks in your web browser, however this shouldn't be done without understanding the security implications of doing so.

Receiving MWC From Exchanges Compatibility

Compatibility for receiving MWC from exchanges to the MimbleWimble Coin web wallet:

TradeOgre
MWC web wallet website ✅ Requires version 2.2.0 or newer of the web wallet.
MWC web wallet Onion Service ✅ Requires version 2.2.0 or newer of the web wallet.
MWC web wallet progressive web app version ✅ Requires version 2.2.0 or newer of the web wallet.
MWC web wallet browser extension version ✅ Requires version 2.2.0 or newer of the web wallet.
MWC web wallet standalone version ✅ Requires version 2.2.0 or newer of the web wallet.

* This table assumes that the MimbleWimble Coin web wallet is using its default settings.

* WhiteBIT had temporarily suspended depositing and withdrawing MWC when this table was created which is why they aren't included.

* It's unlikely that any exchanges currently supports sending MWC to the MimbleWimble Coin web wallet when using a hardware wallet due to that needing a longer network read timeout.

Trust And Privacy Concerns

By default, the MimbleWimble Coin web wallet is not trustless and sacrifices some of its users' privacy in order to achieve a greater ease of use. This is true for any of the methods that can be used to access this web wallet including accessing it from its website at https://mwcwallet.com, accessing it from its Onion Service at http://mwcwalletmiq3gdkmfbqlytxunvlxyli4m6zrqozk7xjc353ewqb6bad.onion, accessing it from its progressive web app version, accessing it from its browser extension version, and accessing it from its standalone version.

However, this web wallet does provide a way to use it in a completely trustless and private way. This can be accomplished by performing the following steps.

  1. Use the Tor Browser to access this web wallet from its standalone version.
  2. Run your own MWC node and set the web wallet to use it in its settings.
  3. Run your own listener and set the web wallet to use it in its settings.

Accessing this web wallet in this way will remove the need to trust the servers hosting the site, listener, Tor proxy, and node. This will also preserve your privacy by not leaking your IP address to anyone that you send MWC to and your ISP won't be aware that you're using this web wallet.

Develop

This site can be ran from a local machine for development purposes. To do that, this repo's files are intended to reside at /srv/mwcwallet.com, but can be located anywhere as long as the root directive in the nginx.conf file correctly reflects the public_html folder's current location.

This repo includes a self-signed certificate, privkey.pem and fullchain.pem, that will work for https://mwcwallet.com and https://www.mwcwallet.com if fullchain.pem is added to your browser's trusted certificate authorities.

This site requires that the following are installed.

Translate

This site can easily integrate translations for different languages. All lines of translatable text can be obtained by running the following command.

(grep -Proh "(?<=getTranslation\()'((?:.*?[^\\\])?(?:\\\\)*)'(?=[\),])"; grep -Proh "(?<=getDefaultTranslation\()'((?:.*?[^\\\])?(?:\\\\)*)'(?=[\),])") | sort -u | sed -r "s/\$\$/ => '',/"

Those lines of text can then be translated and added to a language specific file in the public_html/languages folder. The following characters must be escaped when creating translations.

  • Escape % as %%.
  • Escape ' as \'.
  • Escape \ as \\.

Parameters can exist in translatable text, and they have the following meanings.

  • %d is a date.
  • %t is a time.
  • %u is a timestamp.
  • %s is a number.
  • %x is a translated text.
  • %y is a not translated text.
  • %c is a currency.
  • %l is a translated link.
  • %m is a not translated link.
  • %v is a version.

For example, here's what a file for a French translation, public_html/languages/french.php, may look like.

<?php

	$availableLanguages["fr-FR"] = [
	
		"Contributors" => [
			"Your name here" => "http://yourLinkHere"
		],
		
		"Constants" => [
		
			"Language" => "Français",
			
			"Direction" => "ltr",
			
			"Image" => "./images/countries/france.svg",
			
			"Currency" => "EUR",
			
			"Extension Locale Code" => "fr",
			
			"Fallback" => "fr"
		],
		
		"Text" => [
		
			'Copy' => 'Copie',
			'Value: %1$c' => 'Valeur: %1$c',
			.
			.
			.
			'Wallet %1$s' => 'Portefeuille %1$s'
		]
	];
?>