Wie finde ich programmgesteuert heraus, ob dieses Telefon eine Brieftasche mit mindestens einer bestimmten willkürlichen Menge an Bitcoin darin hat?

Der Anwendungsfall ist: Ich habe eine Bitcoin-fähige App A, die dann eine Bitcoin-Zahlungsanforderung auslösen möchte, die von einer Bitcoin-Brieftasche auf dem Telefon über den BIB20/bitcoin: URL-Mechanismus ausgeführt werden soll. Anstatt die Zahlungsanforderung direkt und sofort für eine beliebige Menge Bitcoin zu generieren, gibt es eine Möglichkeit, die Bitcoin-Brieftasche zu fragen, ob sie zuerst mindestens N Bitcoins enthält?

Danke, John von Kimbrough Software

Obwohl es vielleicht nicht Ihre Absicht ist, fragen Sie im Wesentlichen, wie man Malware schreibt. Wie viel Geld jemand in seiner Brieftasche hat, ist nicht Sache einer anderen App, daher glaube ich nicht, dass es Brieftaschen gibt, die dies offenlegen. Das ist wie in einem Kaufhaus, das Ihre Brieftasche oder Handtasche durchsucht, wenn Sie zur Tür kommen. Es ist eine Invasion und keine seriöse Sache.
dem stimme ich grundsätzlich nicht zu. Sie gehen fälschlicherweise davon aus, dass ich nicht zuerst um Erlaubnis für diese Informationen gebeten habe. Ich freue mich, eine App zu registrieren, bei der zuerst nach dieser Erlaubnis gefragt wird. Die Zahlung von N Bitcoins anzufordern und dabei zuzusehen, wie es fehlschlägt, ist vergleichbar damit, diese Tatsache zu kennen, und das kann über BIP20 erfolgen, aber unordentlich
Wie dem auch sei, aber mir sind noch keine Wallet-Apps bekannt, die es anderen Apps ermöglichen, diese Informationen abzufragen. Wahrscheinlich ist dies aus Sicherheitsgründen. Es sollte nicht in der Verantwortung Ihrer Anwendung liegen, zu prüfen, ob sich der Benutzer einen Kauf leisten kann, bevor Sie versuchen, dem Benutzer eine Rechnung zu stellen.
Es sollte ein grundlegendes Merkmal der Wallet-Funktionalität sein, dass berechtigte Benutzer verschiedene berechtigte Fakten darüber kennen.
Meiner Meinung nach sollte dieses neue Paradigma in der digitalen Manipulation von Geld, das Bitcoin darstellt, die Fähigkeit beinhalten, das zu ersetzen, was früher von Menschen getan wurde, durch Algorithmen, die ordnungsgemäß zugelassen sind und auf Brieftaschen arbeiten. Beispielsweise können insbesondere HD-Wallets Unternehmensstrukturen ausdrücken. Etwas wie „Es sollte nicht in der Verantwortung Ihrer Anwendung liegen“ zu sagen, um diese Fakten über den Ort zu kennen, an dem eine Entität alle ihre Schlüssel speichert, ist zu restriktiv. Ich möchte in der Lage sein, ad hoc zu wissen, ob eine Abteilung in meinem Unternehmen einen Überschuss oder ein Defizit aufweist.
Sie finden das vielleicht irrelevant, aber angesichts der anfänglichen Analogie möchte ich hinzufügen, dass, wenn Sie eine Bank anrufen und fragen, ob eine Person über genügend Geld verfügt, um einen Scheck zu bezahlen, den die Person Ihnen ausgestellt hat, die Bank Ihnen mit Ja oder Nein antworten wird. Als ich ein Geschäft führte, tat ich dies, um zu verhindern, dass ich einen Scheck einreichte, was dazu führte, dass mir Gebühren für unzureichende Deckung berechnet wurden, wenn der Scheck der Person zurückgewiesen wurde. Bei Bitcoins scheint es ähnlich zu sein, zumal ich die Personen, mit denen ich Coins tausche, normalerweise nicht kenne.

Antworten (2)

Das ist konstruktionsbedingt nicht möglich. Wie Jestin sagte, ist das Guthaben der Brieftasche nicht die Angelegenheit anderer Apps.

Auf der von Ihnen verwalteten Android-Brieftasche (übrigens!) Kann ich sehen, dass meine Brieftaschendatei verschlüsselt ist. Meine Brieftasche fragt mich jedoch nicht nach einem Passwort, um meinen Transaktionsverlauf und mein Guthaben zu berechnen (nur „Sicherheit > Brieftasche wiederherstellen“ fragt mich jemals nach einem Passwort). Die Brieftasche ist also ein Benutzerprozess, der mein Guthaben berechnen kann. Warum kann ein anderer Benutzerprozess im Prinzip nicht dasselbe erreichen, indem er denselben Code repliziert und dieselben Dateien liest?
Verdammt, meine Brieftasche kann auch Münzen ausgeben, ohne eine „Ausgabe-PIN“ festgelegt zu haben. Hier ist also ein Benutzerprozess, der Zugriff auf meine privaten Schlüssel hat, ohne mich nach einem Passwort zu fragen .... Ich bin jetzt sehr verwirrt :(
Ok, ich fühle mich jetzt besser von Nick ODells Kommentar unten, ich vermute, dass der Code beim Wiederherstellen einer Brieftasche die privaten Schlüssel aus der Brieftaschendatei holt und sie in irgendeiner Form in einer Datei speichert, die zur Brieftaschenanwendung gehört (und die nicht sein kann). von einem anderen Benutzerprozess gelesen)
Auf Android sind Apps gegeneinander isoliert. Eine andere App kann also nicht auf die Wallet-Datei zugreifen, selbst wenn sie nicht verschlüsselt ist.

Dies ist definitiv möglich. Wenn Ihre Anwendung als Root ausgeführt wird, kann sie auf die Wallet-Dateien von Bitcoin-Wallets zugreifen, die normalerweise feste Dateinamen und Dateiheader haben. Der Nachteil dieses Ansatzes ist, dass jemand Bitcoins von Ihren Kunden stehlen und Malware installieren kann, wenn Ihre Software eine Schwachstelle aufweist.

Wie könnte man das sonst machen? Eine Bitcoin-Wallet könnte eine API implementieren, sodass Anwendungen auf demselben Telefon den Bitcoin-Saldo abfragen können. Es gibt definitiv ein Argument dafür, dies zu ermöglichen. Ich würde es nicht mit dem Durchwühlen einer Handtasche beim Betreten eines Kaufhauses vergleichen - es ist am ähnlichsten, wie DigitalOcean mir einen Cent berechnet und die Belastung storniert, um zu testen, ob meine Kreditkarte gültig ist, bevor es Server an mich vermietet.

Wie Andreas Schildbach sagt, wird dies bewusst nicht implementiert. (Beachten Sie, dass Schildbach der Betreuer dieser Android-Wallet ist und einer der Mitwirkenden an BitcoinJ ist, das viele Android-Wallets hinter den Kulissen verwenden.) Warum möchten Sie diese Funktion nicht? Ein Grund ist, dass viele Anwendungen durch Werbung/Datenerfassung unterstützt werden. Wenn diese API zur Verfügung gestellt würde, würden viele Anwendungen, die keinen Grund haben, diese Informationen zu haben, danach fragen. Sie können sich vorstellen, dass diese Unternehmen Datensätze verkaufen würden, die E-Mail-Adressen und Bitcoin-Guthaben enthalten – der Haupteffekt dieser Funktion wäre, einen weiteren Vektor für Phishing-Bitcoin-Benutzer hinzuzufügen.

danke Nick; eine nachdenkliche Antwort. Die Geldbörsen-Metapher funktioniert, wenn man die persönlichen Finanzen betrachtet, wackelt aber natürlich, wenn man den Unternehmenskontext betrachtet. Ich denke, das Argument dafür, die API nicht zu haben, wird mit der Zeit durch die Vorteile, diese API in Wallets zu haben, zunichte gemacht. Wir werden Algorithmen recht bald erlauben, sich in unserem Namen an Ausgabenmustern zu beteiligen, als Unternehmen und als Einzelpersonen. Das Argument, dass viele aktuelle Apps Ihre Telefoninhalte vergewaltigen, entkräftet nicht die guten Verwendungsmöglichkeiten, die andere Apps haben, um Zugriff auf Ihre Kontakte zu erhalten.
@KimbroughSoftware Meine Intuition ist, dass die meisten Menschen nicht nach einer Brieftasche für ihr Unternehmen suchen – sie suchen nach einer Brieftasche für sich selbst. Wenn sie etwas für ihr Unternehmen wollen, sind sie besser mit einer Brieftasche wie BitGo bedient, nicht mit einer Android-Brieftasche. Ich meine, was ist, wenn der Typ, der die Gelder hält, mit ihnen davonläuft? Was ist, wenn er sein Telefon in eine Pfütze fallen lässt und Millionen von Dollar an Vermögenswerten zerstört? Und wenn Sie natürlich möchten, dass jemand den Inhalt einer HD-Geldbörse prüfen kann, ohne sie ausgeben zu können, können Sie ihm das xpub geben.
vereinbart, aber die unvermeidliche Existenz dieser API ist unabhängig von Android, denke ich. und die Metapher von „Brieftasche“ wird sich verändern, sobald wir erkennen, dass ein einzelnes Stück Software wie eine Brieftasche nicht die gesamte Kreativität von Währungsalgorithmen enthalten kann, die wahrscheinlich in den kommenden Jahren auftauchen wird. Die Brieftasche ist derzeit ein Schlüsselwächter mit manueller Benutzerabmeldung an sinnvollen menschlichen Transaktionsgrenzen. Wenn wir zustimmen, dass unsere manuelle Brieftasche für etwas „bezahlt“, stimmen wir einem Algorithmus zu, um N geeignete UXTOs zu finden. Diese Idee verallgemeinert sich am Ende zu einer reichhaltigeren Wächter-API, glaube ich.
@NickODell Ich verstehe nicht, warum die App als Root ausgeführt werden muss. Meine wallet.dat-Datei (sagen wir) auf dem Bitcoin-Kern gehört dem Benutzer, was übersehe ich?
@SvenWilliamson Android segmentiert Dateien nach Anwendung, sodass eine Anwendung nicht auf die Dateien einer anderen zugreifen kann. Als Root können Sie diese Schutzmaßnahmen ignorieren.