Bitcoin Forum
May 05, 2024, 05:23:53 PM *
News: Latest Bitcoin Core release: 27.0 [Torrent]
 
   Home   Help Search Login Register More  
Pages: [1]
  Print  
Author Topic: Unbestätigte Transaktion im Mempool finden  (Read 121 times)
onleines (OP)
Full Member
***
Offline Offline

Activity: 368
Merit: 212


Don't buy Bitcoin - Earn it


View Profile WWW
October 09, 2019, 06:54:49 AM
 #1

Ich suche eine Möglichkeit, um eine bestimmte Transaktion im Mempool zu finden.

Wenn ich als Händler darauf warte, ob der Kunde eine Bitcoin Transaktion losgeschickt hat, dann müsste ich diese Zahlung bereits nach Millisekunden im Mempool sehen.
Die Transaktion ist zwar noch unbestätigt, aber schon auf dem Weg.

Wenn ich dann noch sehe, welche Transaktionfee der Kunde bezahlt hat, dann kann ich sehen, wie lange es dauert, bis die Transaktion bestätigt und für mich als Zahlungsempfänger sicher ist.

Ich habe gute Links gefunden, wie ich die Transaktionfee berechnen kann und wie viele Transaktionen mit welcher Fee in welchem Block sind.

Was ich aber suche, ist eine Suche für eine bestimmte Transaktion im Mempool, um zu prüfen, ob eine Fee (und wie hoch) bezahlt wurde.

Das Ziel ist es, zu entscheiden, ob ich die Dienstleistung / Ware bereits zur Verfügung stelle, sobald es im Mempool propagiert wurde oder warte, bis der Block bestätigt wurde.

1714929833
Hero Member
*
Offline Offline

Posts: 1714929833

View Profile Personal Message (Offline)

Ignore
1714929833
Reply with quote  #2

1714929833
Report to moderator
1714929833
Hero Member
*
Offline Offline

Posts: 1714929833

View Profile Personal Message (Offline)

Ignore
1714929833
Reply with quote  #2

1714929833
Report to moderator
Even in the event that an attacker gains more than 50% of the network's computational power, only transactions sent by the attacker could be reversed or double-spent. The network would not be destroyed.
Advertised sites are not endorsed by the Bitcoin Forum. They may be unsafe, untrustworthy, or illegal in your jurisdiction.
1714929833
Hero Member
*
Offline Offline

Posts: 1714929833

View Profile Personal Message (Offline)

Ignore
1714929833
Reply with quote  #2

1714929833
Report to moderator
1714929833
Hero Member
*
Offline Offline

Posts: 1714929833

View Profile Personal Message (Offline)

Ignore
1714929833
Reply with quote  #2

1714929833
Report to moderator
Chris601
Hero Member
*****
Offline Offline

Activity: 717
Merit: 581


View Profile
October 09, 2019, 08:39:30 AM
Last edit: October 09, 2019, 09:15:54 AM by Chris601
 #2

Das kann jeder Blockexplorer im Internet. (z.B. https://live.blockcypher.com/) Einfach die TX-ID eingeben und im Regelfall wird die TX samt Fee dann angezeigt.
Ja, dann kannst du entscheiden, ob das für dich ok ist oder nicht.
Das Problem ist, dass eine unbestätigte TX eben unbestätigt ist und ganz prinzipiell eben nicht bestätigt werden MUSS - egal, wie hoch die Fee ist. Damit steigt höchstens die Wahrscheinlichkeit, die aber eben bis zur Bestätigung NIE 100% ist.

Das spielt bei einer Tasse Kaffee eben keine Rolle. Bei einem Fernseher oder Auto aber vielleicht schon.

Im Detail:

Ich suche eine Möglichkeit, um eine bestimmte Transaktion im Mempool zu finden.
Wie gesagt. Praktisch jeder Blockexplorer. Das könnte auch dein eigener Knoten sein und du guckst selbst im Mempool nach. Das ist ganz leicht zu scripten.

Wenn ich als Händler darauf warte, ob der Kunde eine Bitcoin Transaktion losgeschickt hat, dann müsste ich diese Zahlung bereits nach Millisekunden im Mempool sehen.
Ja genau. In der Regel funktioniert das prima und schnell, wenn die Fee über dem standardmäßig eingestelltem Mindestwert liegt.

Die Transaktion ist zwar noch unbestätigt, aber schon auf dem Weg.
Vorsicht mit der Formulierung! Dass eine Transaktion "auf dem Weg ist", heisst nicht zwangsläufig, dass sie auch irgendwann ankommt! Sie kann auch leicht "vergessen" oder gar geändert (RbF) werden!

Wenn ich dann noch sehe, welche Transaktionfee der Kunde bezahlt hat, dann kann ich sehen, wie lange es dauert, bis die Transaktion bestätigt und für mich als Zahlungsempfänger sicher ist.
Nein, das kann ich so nicht stehen lassen, auch wenn du vielleicht das Richtige meinst. Es ist prinzipiell nicht so, dass eine TX mit niedriger Fee einen längeren Zeitraum braucht bis zur Bestätigung und eine TX mit hoher Fee schneller bestätigt wird. Es ist die WAHRSCHEINLICHKEIT, die zählt. Hast du eine TX mit hoher Fee, ist es sehr WAHRSCHEINLICH, dass sie in einem der nächsten Blöcke aufgeommen wird. Hast du eine TX mit niedriger Fee, steigt die WAHRSCHEINLICHKEIT, dass in den nächsten Blöcken kein Platz dafür ist und du warten musst, bis der Mempool leer ist. Die vergangene Zeit selbst ist dafür irrelevant.
Das ganze "Geheimnis" der Fee ist ja lediglich, dass die Miner natürlich erst mal die lukrativsten TXs in die Blöcke bauen und das sind eben die, die pro Byte(!) die höchte Fee zahlen. (btw: die Gesamtfee ist also auch irrelevant. Es zählt Fee pro Byte)

Ich habe gute Links gefunden, wie ich die Transaktionfee berechnen kann und wie viele Transaktionen mit welcher Fee in welchem Block sind.

Prima. Damit lassen sich gut Wahrscheinlichkeiten bestimmen. Du kannst dich aber eben nicht darauf verlassen.
Was ich aber suche, ist eine Suche für eine bestimmte Transaktion im Mempool, um zu prüfen, ob eine Fee (und wie hoch) bezahlt wurde.
Wie gesagt. Das machen alle und das ist leicht im Mempool zu finden. Selbst im eigenen.

Das Ziel ist es, zu entscheiden, ob ich die Dienstleistung / Ware bereits zur Verfügung stelle, sobald es im Mempool propagiert wurde oder warte, bis der Block bestätigt wurde.
Und das hängt ganz klar vom Wert der Ware/Dienstleistung ab. Das Geld ist noch nicht bei dir! Das kann man nur bei Waren anbieten, deren Verlust verschmerzbar ist. Der Kaffee wird da gern genannt. Der Verlust wäre verschmerzbar, die Betrugsabsicht ist eher gering. Bei höherwertigen Artikeln kehrt sich das dann irgendwann um.
onleines (OP)
Full Member
***
Offline Offline

Activity: 368
Merit: 212


Don't buy Bitcoin - Earn it


View Profile WWW
October 09, 2019, 09:56:35 AM
 #3

Hi Chris601,
super Antwort. Danke. Aber jetzt kommen Folgefragen  Roll Eyes

Das kann jeder Blockexplorer im Internet. (z.B. https://live.blockcypher.com/) Einfach die TX-ID eingeben und im Regelfall wird die TX samt Fee dann angezeigt.

Das war unproblematisch. Die Transaktion konnte ich schnell finden. Aber der Betrag ist dann immer INKLUSIVE der Transaktionsgebühr? Separat wird es nicht ausgewiesen?

Ich hatte bei Bitrefill diese Ansicht als Kunde erhalten und fand es vorbildlich.



Hier wird angezeigt, was man als Zahler für eine Fee bezahlt hat und wann die Transaktion etwa bestätigt wird.

Ja, dann kannst du entscheiden, ob das für dich ok ist oder nicht.
Das Problem ist, dass eine unbestätigte TX eben unbestätigt ist und ganz prinzipiell eben nicht bestätigt werden MUSS - egal, wie hoch die Fee ist. Damit steigt höchstens die Wahrscheinlichkeit, die aber eben bis zur Bestätigung NIE 100% ist.

Das spielt bei einer Tasse Kaffee eben keine Rolle. Bei einem Fernseher oder Auto aber vielleicht schon.
Wenn die Transaktionsfee nicht Null ist, dann kann ich aber mit einer hohen Wahrscheinlichkeit davon ausgehen, dass es in einem der nächsten Blöcke bestätigt wird.
Wenn ich parallel die Abfrage noch mache https://bitcoinfees.earn.com/api, was aktuell an Fees für eine zeitnahe Verarbeitung erforderlich sind.

Das Beispiel mit dem Gegenwert einer Tasse Kaffee macht Sinn. Hier kann man im Ladengeschäft dem Kunden den Kaffee sofort aushändigen oder bei einem Fernseher schon mal ins Lager gehen oder die Papier fertig machen.

Im Internet kann man bei digitalen Gütern dem Kunden vielleicht schon den Zugang zur Verfügung stellen.



Die Transaktion ist zwar noch unbestätigt, aber schon auf dem Weg.
Vorsicht mit der Formulierung! Dass eine Transaktion "auf dem Weg ist", heisst nicht zwangsläufig, dass sie auch irgendwann ankommt! Sie kann auch leicht "vergessen" oder gar geändert (RbF) werden!


Kann eine Transaktion auch vergessen werden, wenn eine Fee bezahlt wurde? Bzw. tendiert die Wahrscheinlichkeit nicht eher gegen Null, wenn die Standardfeee bezahlt wurde?


Chris601
Hero Member
*****
Offline Offline

Activity: 717
Merit: 581


View Profile
October 09, 2019, 11:18:16 AM
Last edit: October 09, 2019, 01:26:46 PM by Chris601
 #4

Das war unproblematisch. Die Transaktion konnte ich schnell finden. Aber der Betrag ist dann immer INKLUSIVE der Transaktionsgebühr? Separat wird es nicht ausgewiesen?
Ja gut, der Block-Explorer war vielleicht gerade nicht der idealste. Nimm halt blockchain.info.
Beispiel: https://www.blockchain.com/de/btc/tx/3a9af361c3943a939572ae03b4a9188a53905e726b7237c3d9aca3d8fa6a7ac5

Ich hatte bei Bitrefill diese Ansicht als Kunde erhalten und fand es vorbildlich.
...
Hier wird angezeigt, was man als Zahler für eine Fee bezahlt hat und wann die Transaktion etwa bestätigt wird.
Ja genau. Das ist wirklich schön. Natürlich kann man berechnen, was im Mempool gerade los und wenn man davon ausgeht, dass das so bleibt und auch weiterhin regelmäßig Blöcke gefunden werden, kann die zeitliche Einschätzung sogar hinhauen. Es ist aber nur eine Prognose (keine Schätzung). Schließlich "dauert" eben eine TX keine Zeit, sondern man spekuliert auf den Zeitpunkt, an dem der Mempool das nächste mal leer genug für die TX ist. Wenn plötzlich weniger Blöcke als durchschnittlich gefunden werden dauert alles länger und zu allem Überfluss wird der Mempool auch noch voller. Damit ist alle Berechnung dahin. Das spielt für die genannte Ansicht für den Kunden keine Wichtige Rolle. Wenn du aber der Empfänger des Geldes bist, willst du aber vielleicht verlässlichere Informationen.

Wenn die Transaktionsfee nicht Null ist, dann kann ich aber mit einer hohen Wahrscheinlichkeit davon ausgehen, dass es in einem der nächsten Blöcke bestätigt wird.
Nicht ganz. Aktuell liegt die Mindestfee, die in der Standardconfig von Core hinterlegt ist, glaube ich bei 1000Sat/kB, also 1Sat/Byte. Ich glaube, mit dieser Einstellung laufen die meisten Knoten. Ist die Fee geringer, (aber trotzdem >0), wird sich die TX schwer bis gar nicht im Netzwerk ausbreiten. Die Chance auf eine Bestätigung ist sehr gering.
Die Wahrscheinlichkeit, dass die TX in einem der nächsten Blöcke landet kann man abschätzen wenn man sich ansieht, welche Feegröße aktuell in den Blöcken aufgenommen wird und das mit der Fee der TX vergleicht. Das kann man hier z.B. ganz gut sehen:
https://jochen-hoenicke.de/queue/#0,24h
Hier kannst du sehen, dass aktuell alle paar Stunden der Mempool praktisch leer ist und zu diesen Zeiten auch TXs mit sehr niedrigen Fees bestätigt werden. Wenn du dir dort aber z.B. den Januar 2018 anschaust siehst du, dass dort TXs mit sehr niedriger Fee über Wochen und Monate gar nicht angefasst wurden. So etwas kann jederzeit wieder passieren. Und ich sage es nochmals: Nicht nur die Fee kann zum Problem werden sondern auch Rbf oder gar irgendwelche Angriffsszenarien. Bis zur Bestätigung ist dir das Geld NIE sicher und du kannst auch nie sicher davon ausgehen, dass es irgendwann noch kommt.

Im Internet kann man bei digitalen Gütern dem Kunden vielleicht schon den Zugang zur Verfügung stellen.
Vorsicht! Das Internet ist was anderes als ein Ladengeschäft. Es greift sich da anonymer an und man kann leicht auch 100000x gleichzeitig angreifen. Irgendeine Leistung da im Vorfeld anzubieten, kann da viel leichter gezielt ausgenutzt werden. Für mich als Anbieter würde ich sowas auch bei kleineren Werten im Internet überhaupt nicht anbieten. Theoretisch und prinzipiell könnte man das aber tun, ja.

Kann eine Transaktion auch vergessen werden, wenn eine Fee bezahlt wurde? Bzw. tendiert die Wahrscheinlichkeit nicht eher gegen Null, wenn die Standardfeee bezahlt wurde?
Nicht unbedingt. Knoten speichern empfangene TXs zum einen nicht ewig (ich habe jetzt die Standardeinstellung der Knoten nicht im Kopf aber es waren nur wenige Tage) und publizieren zum anderen fremde TXs auch nicht von alleine zu einem späterem Zeitpunkt nochmals ins Netzwerk.

Wird also eine TX nur einmalig gebroadcastet und verteilt, dann aber für längere Zeit nicht bestätigt, kann es durchaus sein, dass sie "vergessen" wird.
Auch hier wieder: Es gibt auch Angriffsszenarien, die dabei helfen könnten (Rbf, Doublespend usw...).

Wie gesagt: Tasse Kaffee/Flasche Bier in der Kneipe -> kein Problem, Höherwertiges oder Online-Leistungen -> lieber nicht.
asche
Legendary
*
Offline Offline

Activity: 1484
Merit: 1489


I forgot more than you will ever know.


View Profile
October 09, 2019, 03:13:38 PM
 #5

Zu alldem muss man sagen das nicht die fee alleine ausschlaggebend ist.

Dazu kommt noch

- Wie lange die Coins stillstanden (desto länger, desto höher die Priorität)
- Wie lange die tx schon im Mempool sitzt (auch da wist du nach oben geschoben)

Es geht gerade darum das jede TX theoretisch irgendwann ankommen wird
Chris601
Hero Member
*****
Offline Offline

Activity: 717
Merit: 581


View Profile
October 09, 2019, 09:54:28 PM
Last edit: October 09, 2019, 10:07:53 PM by Chris601
 #6

Zu alldem muss man sagen das nicht die fee alleine ausschlaggebend ist.

Dazu kommt noch

- Wie lange die Coins stillstanden (desto länger, desto höher die Priorität)
- Wie lange die tx schon im Mempool sitzt (auch da wist du nach oben geschoben)

Es geht gerade darum das jede TX theoretisch irgendwann ankommen wird

Ich bin mir ziemlich sicher, dass du irrst. Ja, die Priorität spielte mal eine Rolle. Das stimmt und war keine schlechte Idee.
Meines Wissens nach wurde der für priorisierte TXs reservierte Raum in den Blöcken aber schon vor einigen Jahren abgeschafft.
Und selbst WENN die Prio noch eine Rolle spielen würde, müssten sich die Miner nicht daran halten.

Hast du für deinen zweiten Punkt (Alter der TX im Mempool) eine Quelle? Das habe ich noch nie gehört, dass das irgend eine Rolle spielt.

Ich bin mir ebenfalls sicher, dass keineswegs jede TX irgendwann ankommen WIRD - selbst wenn du sie selbst alle Nasen lang rebroadcasten würdest. Ich bin mir deshalb schon sicher wil TXs unter der Mindestfee eben schon gar nicht mehr durchs Netzwerk kommen. Egal, wie alt sie sind.

Falls du es besser weist: Erzähl mal.

btw: Ich broadcaste seit Februar mehrmals täglich eine TX, die sogar eine Fee hat (unter der Standardfee). Du kannst ja mal nach 855438495f7052e6514d1a71296d887196849b172190f54080d9b716dd8a661a suchen, ob die in irgend einem Mempool auftaucht. Da wollen wir von Bestätigung gar nicht erst reden.
o_solo_miner
Legendary
*
Offline Offline

Activity: 2451
Merit: 1476


-> morgen, ist heute, schon gestern <-


View Profile
October 09, 2019, 10:22:34 PM
 #7

Kann eine Transaktion auch vergessen werden, wenn eine Fee bezahlt wurde? Bzw. tendiert die Wahrscheinlichkeit nicht eher gegen Null, wenn die Standardfeee bezahlt wurde?
Nicht unbedingt. Knoten speichern empfangene TXs zum einen nicht ewig (ich habe jetzt die Standardeinstellung der Knoten nicht im Kopf aber es waren nur wenige Tage) und publizieren zum anderen fremde TXs auch nicht von alleine zu einem späterem Zeitpunkt nochmals ins Netzwerk.

Wird also eine TX nur einmalig gebroadcastet und verteilt, dann aber für längere Zeit nicht bestätigt, kann es durchaus sein, dass sie "vergessen" wird.

Das kann ich aus eigener Erfahrung bestätigen.
Allerdings ist es zum Stoppen einer Transaction Notwendig der Core Software zu sagen den eigenen Mempool zu Löschen und den (eigenen Ausgehenden) Broadcast der Transaction zu Stoppen.
So bricht man eine eigene Transaction ab.
Kein Broadcast ins Netzwerk bewirkt das die Nodes dann diese Transaction nach 2 Tagen Vergessen.
Danach kann man die Coins erneut Ausgeben (hat bei mir auch genau 2 Tage benötigt).

Eine Prio exestiert nicht mehr in Core.

Transaction Accelleratoren nehmen eine Transaction nach Zahlung einer fee in einen der nächsten Blöcke auf, das heißt es sind Pools die  Ihren eigenen Mempool beeinflussen können und durch Mining somit auch dafür Garantieren das es in einen Block kommt. Dabei wird IMMER die höchste fee bevorzugt bis der Block voll ist.

Ebenso können sie auch Transactions Ausschließen(!) und so verhindern das eine Transaction über die von Ihnen kontrollierten Miner in einen Block Aufgenommen werden. Vor Jahren so geschehen beim Kano Pool und Jihan Wu, der keine Transactions (Auszahlungen an die Miner von Kano) mehr bestätigt hat. Das führte dazu das Con und Kano ihren Mempool um die eigenen Transactions erweiterten um dann beim nächsten gefundenen Block ihre
eigenen Transactions sicher bestätigen zu können. Vorteil war dadurch hatten sie auch keine fee mehr zu bezahlen Wink. Das war also ein Eigentor für Jihan Wu.



 

from the creator of CGMiner http://solo.ckpool.org for Solominers
paused: passthrough for solo.ckpool.org => stratum+tcp://rfpool.org:3334
asche
Legendary
*
Offline Offline

Activity: 1484
Merit: 1489


I forgot more than you will ever know.


View Profile
October 09, 2019, 10:24:26 PM
 #8

Falls du es besser weist: Erzähl mal.

Ich muss gestehen das ich das letztens gelesen habe, nicht ausprobiert.
Daher gehe ich einfach mal davon aus das du recht hast.

Wird auch in Bitcoin Wiki so geschrieben.

Damals war priority folgendes:

Code:
priority = sum(input_value_in_base_units * input_age)/size_in_bytes

Aber wie du so schön erklärt hast ist das vorbei/

Danke dir für die ausführliche Erklärung.
Pages: [1]
  Print  
 
Jump to:  

Powered by MySQL Powered by PHP Powered by SMF 1.1.19 | SMF © 2006-2009, Simple Machines Valid XHTML 1.0! Valid CSS!