Ich baue einen Marktplatz für Kryptowährungen auf, auf dem Benutzer hauptsächlich kleine Ticketartikel (im Wert von 10 bis 50 US-Dollar) mit Kryptowährung kaufen und verkaufen. Die „Minergebühren“ machen den Betrieb jedoch unerschwinglich teuer.
SZENARIO:
Ich habe einen Marktplatz mit Verkäufern und Käufern, auf dem ein Benutzer sowohl Verkäufer als auch Käufer sein kann. Ein Käufer muss Geld auf sein Konto einzahlen (Kontostand aufladen), bevor er Kryptowährung auf der Plattform ausgeben kann. Für jeden neuen Benutzer würden wir eine eindeutige Adresse generieren, sodass alle an diese Adresse eingezahlten Gelder diesem Benutzer gutgeschrieben würden. Es macht es einfach zu wissen, wem eine Gutschrift gutgeschrieben werden soll, wenn wir eine Einzahlung an eine bestimmte Adresse erkennen. Mein Hauptdilemma betrifft die Auszahlungen an den Anbieter und die Erhebung der Plattformgebühr (siehe unten).
Nachdem der Käufer einen Artikel (unter Verwendung des Kontostands) gekauft hat, wird die Zahlung treuhänderisch aufbewahrt, bis der Artikel an den Käufer geliefert wird. Sobald der Artikel geliefert wurde, wird die Zahlung abzüglich einer „Plattformtransaktionsgebühr“ von 1,9 % (die an den Plattformbesitzer gezahlt wird) an den Verkäufer „überwiesen“. Ein Verkäufer kann seine Einnahmen jederzeit abheben, nachdem er eine pauschale Abhebungsgebühr von 5 $ bezahlt hat. Ebenso kann ein Käufer seine Einzahlung (Kontostand) jederzeit gegen die gleiche Pauschalgebühr von 5 $ abheben. Denken Sie daran, dass eine Auszahlung durch einen Verkäufer normalerweise Zahlungen aus Hunderten von Transaktionen umfasst (die alle von zahlreichen Käufern und zahlreichen Adressen stammen). Es kann auch eine Einzahlung enthalten, die der Verkäufer selbst getätigt hat, um sein Guthaben aufzufüllen.
Wenn eine einzelne Bestellung abgeschlossen ist (dh ein Produkt geliefert wird), ist es offensichtlich nicht möglich, die Zahlung von der Brieftasche des Käufers auf die private Brieftasche des Verkäufers zu übertragen, da dies jedes Mal, wenn eine Bestellung auf der Website aufgegeben wird, eine „Mining-Gebühr“ verursachen würde. Stattdessen würden wir uns auf das in dieser Antwort beschriebene interne Ledger-Konzept verlassen .
Kurz gesagt, basierend auf dem Ledger-Konzept würden wir, wenn ein Produkt für 25 $ verkauft wird, dem Verkäufer eine bestimmte Art von Kryptowährung im Wert von 25 $ „gutschreiben“, ohne die Transaktion tatsächlich an die Blockchain zu übertragen. In ähnlicher Weise würden wir die 25 US-Dollar an Krypto vom Guthaben des Käufers „abziehen“ (unter Verwendung einer internen Datenbank, ohne tatsächlich etwas an die Blockchain zu übertragen). Nehmen wir nun an, ein Anbieter schließt 100 Transaktionen * 25 $ ab, wenn Bitcoin 10.000 $ pro BTC wert ist. Wir würden dem Anbieter also jetzt 2.500 USD oder 0,25 BTC (abzüglich 1,9 % Plattformgebühr) schulden.
DAS PROBLEM
Wenn der Verkäufer sich entscheidet, seine Einnahmen abzuheben, würden die 0,25 BTC von 100 verschiedenen Adressen (100 Käufern) stammen, was offensichtlich zu übermäßigen Miner-Gebühren führen wird. Da der Website-Eigentümer für jede Transaktion eine Gebühr von 1,9 % erhebt, würde es einen ähnlichen Prozess nach sich ziehen, wenn der Website-Eigentümer die gesamte kleine Kryptowährung, die er von 100 Adressen verdient, auf 1 Adresse konsolidieren wollte (und die relativen Kosten für die Plattformbesitzer).
ZEITSLOT ANSATZ
Eine Lösung für dieses Problem könnte darin bestehen, dass alle Benutzer der Website Gelder an eine einzige Kryptowährungsadresse einzahlen. Dies macht es natürlich schwierig zu verfolgen, wer wer ist, wenn Sie eine Einzahlung tätigen, da alle an dieselbe Adresse senden. Es ist möglich, die Adresse einem einzelnen Benutzer für einen bestimmten Zeitraum („Zeitfenster“) zuzuweisen und dann den Benutzer mit dem dedizierten „Zeitfenster“ zu kreditieren, aber dieser Ansatz ist nicht ideal, da wir nachverfolgen müssten, welcher Benutzer Zugriff hatte an die Adresse zu einem bestimmten Zeitpunkt. Darüber hinaus erinnern sich Benutzer möglicherweise nicht daran, dass die Adresszuweisung zeitkritisch ist, und können zu einem späteren Zeitpunkt unter dem „Zeitfenster“ einer anderen Person Einzahlungen an diese Adresse vornehmen. Es ist auch sehr verwirrend für den Benutzer und würde immer noch Dutzende eindeutiger Adressen erfordern, wenn die Site viele Benutzer hat. Jedoch,
Vermutlich gibt es andere Lösungen für dieses Problem, da es viele Websites mit ähnlicher Funktionalität gibt. Was ist die branchenübliche Lösung für dieses Problem? Was sind einige Möglichkeiten, es anzugehen? Jeder Einblick wird sehr geschätzt.
Hinweis: Der Marktplatz unterstützt Einzahlungen/Auszahlungen in Bitcoin, Ethereum, Bitcoin Cash, Ripple, Litecoin, USDC und USDT.
Hinweis: Ich bin offen für eine native Lösung, die auf dem Blockchain-Client oder einer API-Lösung einer seriösen Firma basiert.
Wie @chytrik bereits beschrieben hat, löst die Wiederverwendung von Adressen Ihr Problem für UTXO-basierte Coins nicht, jede Transaktionsausgabe muss unabhängig davon einzeln referenziert werden.
Wenn Ihre Benutzer auf Ihrer Website einzahlen, möchten Sie ihnen separate Adressen geben, damit Sie nachverfolgen können, wessen internes Guthaben gutgeschrieben werden soll. Danach befinden sich die Gelder jedoch in Ihrer Obhut. Das bedeutet, dass Sie Ihren UXTO-Pool verwalten können und sollten. Ein guter Anfang wäre, regelmäßig kleinere Beträge in größeren UTXOs außerhalb der Spitzenzeiten zu konsolidieren, wenn die Gebührensätze niedrig sind. Vielleicht finden Sie diesen Artikel über das UTXO-Management für Unternehmens-Wallets interessant.
Im Allgemeinen eignen sich Bitcoin-On-Chain-Zahlungen nicht für schnelle Mikrozahlungen – wie Sie festgestellt haben, sind die Gebühren ein zu großer Teil des Wertes. Die Antwort von Bitcoin darauf ist das Lightning Network, ein Sofortzahlungsnetzwerk, das Multisignatur-basierte Zahlungskanäle nutzt.
Eine Lösung für dieses Problem könnte darin bestehen, dass alle Benutzer der Website Gelder an eine einzige Kryptowährungsadresse einzahlen
Dies ist definitiv keine Lösung für das Problem, das Sie skizziert haben. Beim Erstellen einer Transaktion gibt es keinen Unterschied zwischen der Konsolidierung vieler Zahlungen, die an dieselbe Adresse geleistet wurden, und der Konsolidierung vieler Zahlungen, die an eindeutige Adressen geleistet wurden. Jede Zahlung, die Sie einbeziehen, stellt eine einzelne Eingabe für die Transaktion dar.
So wie es klingt, verwechseln Sie das Konzept eines kontobasierten Modells für Transaktionen und eines UTXO-basierten Modells für Transaktionen (was Bitcoin verwendet).
Ich baue einen Marktplatz für Kryptowährungen auf, auf dem Benutzer hauptsächlich kleine Ticketartikel (im Wert von 10 bis 50 US-Dollar) mit Kryptowährung kaufen und verkaufen. Die „Minergebühren“ machen den Betrieb jedoch unerschwinglich teuer.
Verwenden Sie Segwit für On-Chain-Transaktionen, Batching, wo immer möglich, UTXO-Konsolidierung über Wochenenden, sobald Sie viele kleine Eingaben haben, und verwenden Sie die neuesten Technologien, wenn sie verfügbar sind, wie z. B. Taproot
Versuchen Sie, weniger On-Chain- und mehr Layer-2-Lösungen wie LN und Liquid zu verwenden
Kompromisse einschließlich unterschiedlicher Dezentralisierungsgrade und Vertrauensannahmen bei der Verwendung von Liquid oder beliebigen Bitcoin-Sidechains
Pieter Wuille
SOS
Murch