Giter Site home page Giter Site logo

falcon's People

Contributors

champo avatar federicobond avatar lucas-muun avatar mdb1 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

falcon's Issues

[Feature] LNUrl-Pay

I would be nice if muun supports LNUrl-pay feature. This would allow sending paymets to a static QR Code or LNUrl address.

Feature request: Sweep all / prevent dust

I recently did a transaction in an attempt to sweep all my funds, but in the end created a dust UTXO of ~600 satoshis.

This is bad hygiene for the UTXO set and bitcoin's blockchain.

I'd recommend the insufficient funds popup recommend an amount to prevent the creation of dust when trying to spend all of your bitcoin.

wallet ui?

there doesn't seem to be any example ui in the example app.

Option for BIT as Bitcoin unit

BITs (100 SATs) is becoming a popular bitcoin unit. It's already available on Coin Gecko and Coin Market Cap. It's a convenient denomination for a "Bitcoin checking account" because it's closer in size to dollars (which many things are priced in) than BTC or SAT. Any chance we could get BIT as an option for Bitcoin units in the wallet?

MacOS support

Could you add support for MacOS? iOS apps can run natively on on Mac so I don't see any reason why this shouldn't be possible.

lightning double spend

Muun wallet app v2.4.1 on iPhone 12 mini iOS 15.1 (turbo channels off).

Successfully received transaction from bluewallet lightning wallet which was reported as failed on the sender's side.
19400 sats arrived to muun wallet without leaving the bluewallet.

Payment hash: cbf4213fa35896c5ad4ab373605abd6445d7c259e67fb75a434ef8e080325951
Payment preimage: Ofaa676fd8fbe34c6cdbc9bddd64438fb2d70493f6c78f1ea390c5636aea35c2

The scenario and analysis by bluewallet team is fully described in:
BlueWallet/BlueWallet#4195

Feature request: add option to regenerate recovery code

I’ve previously gone through all the steps in the “Security” pane, and now the only option is to “Create another Emergency Kit”, which only saves another PDF and does not provide a recovery code to use with it.

Accessibility/labelling issues

Did some quick accessibility testing on iOS using Voice Control and VoiceOver, and stumbled across a few issues. The major one is that users relying on non-touch input cannot access their transaction history at all, as the button is not selectable. The other ones are minor and fixing them will help users better understand what is on the screen and what actions they can take.

Muun iOS app accessibility feedback

My test workflow is shown in this video (for a different app, but the workflow is the same). This was a pretty quick and casual test, I did not thoroughly go over every single screen.

Application crash on launch

Hi All,

Application is getting crash on launch at below code in DatabaseCoordinator. If I comment out the code. Its working. However while creating wallet: went to infinite loop or sometimes I got logged out from wallet app. Any suggestions ?

    migrator.registerMigration("challenge keys format") { _ in

        let fixKey = { (keyType: SecureStorage.Keys) -> () in
            if try self.secureStorage.has(keyType) {
                let publicKey = try self.secureStorage.get(keyType)
                if publicKey.count > 33,
                    let stringyKey = String(data: Data(hex: publicKey), encoding: .utf8) {
                    try self.secureStorage.store(stringyKey, at: keyType)
                }
            }
        }

		// Crash here

        try fixKey(.passwordPublicKey)
        try fixKey(.recoveryCodePublicKey)
    }

Logout

LN invoice time constraint makes Muun unsuitable for (web)shops

If I want to pay with Lightning in webshops or brick and mortar stores it's very common to get an invoice with a timespan of 10 minutes. Within this time, the invoice should be paid, because the amount of bitcoins needed are calculated on the current Bitcoin price (the price of the products are in local currency).
When I scan such an invoice with Muun it tells me "This payment needs a longer expiration time"
and "We suggest an expiration time of 1 hour or more"

This makes Muun unsuitable to be used when paying for products in above situations. Was this time constraint intentionally?
Can this be changed so that Muun is capable of paying invoices even when the invoice almost expires?

No lightning invoice amount?

When trying to add funds through Strike it requires the invoice to have an amount attached to it so I can't send anything to my muun wallet.

LNURL withdraw

I am playing around with lnurl-withdraw and seems like some other wallet (BlueWallet) works but Muun doesn't work the way I expect it to.

I have two urls in my webapp:

Computer and my iPhone are in the same network and BlueWallet works with exactly the same server configuration.

  1. I have a QR code
  2. Scan the QR code
  3. I see that my server returns both responses quite quickly - one after another.
  4. Muun keeps showing "Receiving from 192.168.0.24".
  5. Then it shows "192.168.0.24 is taking too long".
  6. I click "Go to home" button.

Success endpoint just returns this:

{
  "status": "OK"
}

May be Muun expects server to return something else?

Muun: singleton by design?

Hi maintainers 👋 I'm not sure if this is by design and, if so, I wonder why?

Summary: replicating a wallet on a second device drops the wallet from the first device.

Steps to reproduce

  1. Install and init a Muun wallet on a device. Me: on iOS in this case.
  2. install and init the same Muun wallet on a second device. Me: on Android in this case.
  3. Go to the first device and start Muun. Observe: need to reinitialize the wallet. Do that, reinitialize the same wallet on Device 1.
  4. Now go to the second device and start Muun: Observe: need to reinitialize the wallet on this device too.

Therefore it appears that Muun won't let the user have the same wallet active on more than one device.

Feature, or bug? If this is a feature, I'd love to know why.

I'd also like to know, if Muun has the ability to hose a wallet remotely, how is that a Good Thing? That's actually scary, no?

Thank you in advance for insight on this.

Camera not showing up when trying to scan QR code

Hi there! I was trying to pay a Lightning invoice this morning, but I noticed that the camera is not working anymore for some reason.

Preconditions

Hardware: iPhone 13 Mini
iOS: 16.5 (20F66)
Muun version: 2.7.7 (1017)
Permissions: I double-checked my iOS settings to make sure that Camera access is allowed for Muun.

Steps to reproduce

  1. Go to "Wallet" tab
  2. Click "Send"
  3. Try to scan a QR code

Expected results

  1. After clicking "Send", a screen should show up with a camera view, to allow for QR code scanning

Actual results

  1. After clicking "Send", the scanning view shows up, but the camera view itself is blank. I am unable to scan a QR code

bug-screenshot

Reproducibility

Happens 3/3 times, even after I quit the app and start over.

Other notes

Please let me know if there is something else I can do to help! I'd love to be able to help further.

Add ability to use testnet network

Heya,

I'm from the Bitcoin Design community and we are major fans of your applications UX - it really is pushing the industry forward and making LN much more accessible!

One thing that would really help us designers experiment with your app, learn more about its inner workings and thus help us improve the overall UX of Bitcoin/LN alongside Muun would be the ability to run Muun in testnet mode (ideally buried in an advanced settings area as to not have noobs accidentally switch networks).

Validate and decode LNURL using muun: scheme prefix

I can send an LNURL withdrawal request using a deep link directly to Muun using something like the following "lightning:LNURL123...123". However anyone with more than one lightning wallet on iOS finds it impossible to have the URI open the correct wallet since iOS just opens the last wallet installed which supports the "lightning:" url scheme.

I can open Muun directly if I use "muun:LNURL123...123", however it doesn't process the invoice.

I think I've managed to follow the flow through your app and found that it just supports "lightning:"...

in AppDelegate.swift, the class AddressHelper tries to parse the URI:

// Deep/Universal links
func application(_ application: UIApplication,
                open url: URL,
                options: [UIApplication.OpenURLOptionsKey: Any] = [:] ) -> Bool {
    ...

    do {
        let paymentIntent = try AddressHelper.parse(url.absoluteString)
        ...
    }
}

Looking in AddressHelper.swift it'll hit parse(lnurl: raw), and then use the LibWallet Go code to try and validate:

// AddressHelper.swift
public enum AddressHelper {

    static let muunScheme = "muun:"
    static let bitcoinScheme = "bitcoin:"

    public static func parse(_ raw: String) throws -> PaymentIntent {
        if let address = try? parse(rawAddress: raw) {
            return address
        }
        if let invoice = try? parse(rawInvoice: raw) {
            return invoice
        }
        if let lnurl = parse(lnurl: raw) {
            return lnurl
        }
        throw MuunError(ParseError.addressError)
    }

    static func parse(lnurl: String) -> PaymentIntent? {
        if LibwalletLNURLValidate(lnurl) {
            return .lnurlWithdraw(lnurl: lnurl)
        }
        return nil
    }
}

In LibWallet, lnurl.go:

func LNURLValidate(qr string) bool {
	return lnurl.Validate(qr)
}

Leading to the final validate and decode in lnurl.go:

func Validate(qr string) bool {
	_, err := decode(qr)
	return err == nil
}

func decode(qr string) (*url.URL, error) {
	// handle fallback scheme
	if strings.HasPrefix(qr, "http://") || strings.HasPrefix(qr, "https://") {
		u, err := url.Parse(qr)
		if err != nil {
			return nil, err
		}
		qr = u.Query().Get("lightning")
	} else {
		// remove lightning prefix
		if strings.HasPrefix(strings.ToLower(qr), "lightning:") {
			qr = qr[len("lightning:"):]
		}
	}
	u, err := lnurl.LNURLDecode(qr)
	if err != nil {
		return nil, err
	}
	return url.Parse(string(u))
}

So here I can see that this only works by removing the "lightning:" prefix, leaving the "LNURL123...123" invoice to decode.

Other wallets like BlueWallet work by allowing "bluewallet:lightning:LNURL123...123", or in the case of Wallet of Satoshi, just allowing "walletofsatoshi:LNURL123...123".

Would it be possible to allow either the "muun:" or "muun:lightning:" scheme to decode and process the invoice, so I can open Muun directly? This would allow us at THNDR Games to add support for Muun wallet for our sats prize payments on iOS.

I think one solution could literally be to add an else clause to the above, but I don't know the codebase well enough to know if this is the only place "lightning" is used

else if strings.HasPrefix(strings.ToLower(qr), "muun:lightning:") {
	qr = qr[len("muun:lightning:"):]
}

As an aside, "muun:LNURL123...123" works fine with Muun on Android, so I don't know how the Apollo project version does it?

Thanks!

Very high lightning fees

Outgoing lightning payments now has very high fees.
For example:
photo_2023-08-26_19-16-05
This makes Muun almost unusable.
Lightning fees used to be very reasonable, but now they are similar to on-chain fees.

Test Payment Issue

Upon test payment from CryptoQR I got the following error 'this payment needs a longer expiration time Please request a new invoice with an expiration time of at least one hour, or try scanning an invoice with a smaller amount.' Amount is ZAR 1,00 any fixes for a crypto lay-person

Muun demanding a longer expiration time for a Strike deposit.

All I get when I try to send some BTC to Strike is this error message ...."this payment needs a longer expiration time". I've done this many times before problem free but this time I'm stuck without a clue what to do. It also suggests trying a smaller transaction amount but this is in the same range I always use. Just baffled. 🤔

Ability to scan QR code via photo

There are a lot of fun lightning demos I like to show people, but many of them involve scanning a QR code from the screen. For example, paying $0.50 to pay these sheep: https://twitch.tv/tanglesheep

In most wallets, you can take a screenshot, and then pick the screenshot from the QR scanner screen. Muun is lacking this which prevents a lot of these use cases unless you have a second device nearby.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.