Gerade eben die Java Blockchain erweitert v0.0.3. Wer Lust hat mitzumachen kann gern Merge-Requests einreichen.
Mempool visuelle Bitcoin (BTC) Simulation in echtzeit – xbt < 50k
Schöne echtzeit Simulation der echten Bitcoin-Transaktionen:
BIP39 Wortlisten als Node für NodeRed
Es gibt nun auch einen neuen Node „bip39 wordlist“ für die BIP39 Wortlisten.
Der Beispiel-Flow zum generieren und validieren der BIP39 Wortlisten könnte so aussehen: … „BIP39 Wortlisten als Node für NodeRed“ weiterlesen
BTC -15,94% wenn das kein Grund für einen BTC to Euro Dashboard mit NodeRed ist
Wer Kurse auch im NodeRed-Dashboard anzeigen bzw. umrechnen will, kann diesen Beispiel Flow als Template verwenden.
Die Funktion ist schnell erklärt. Es wird nach der Eingabe des Bitcoin Wert (Achtung, kein Komma, nur den Dezimalpunkt verwenden) der Kurs bei Kraken abgefragt und der aktuelle BTC in Euro umgerechnet. Der Beispiel Button, im Flow, erzeugt z.B. den Wert für 1000 Euro. Kann ja leicht angepasst werden oder auch direkt vom Konto eingspielt werden, wie hier schon mal gezeigt. … „BTC -15,94% wenn das kein Grund für einen BTC to Euro Dashboard mit NodeRed ist“ weiterlesen
Blockchain in Java – Bitcoin heute Neues Allzeithoch – Nasdaq: Börsengang von Coinbase
Wollte heute mal noch vor dem Börsengang von Coinbase ein Blockchain in Java coden. Mit nur zwei Klassen sind die Grundlagen implementiert. D.h. ein Block verweist jeweils auf den nächsten Block. Jeder Block hat einen Hash über die Daten und kann so von jedem validiert werden. Ein Block kann alles enthalten, hier mal ein String Objekt, es muss ja nicht immer Bitcoin sein. Hier die Architektur:
Ein JUnit 5 Testklasse erzeugt eine gültige Blockchain mit 5 Blöcken und wird anschließend validiert. Bei Bitcoin werden alle 10 Minuten neue Blöcke erzeugt. Die haben dann jeweils (ursprünglich) eine Größe von ca. max 1 MB an Daten.
Dann im zweiten Testfall wird ein Block verändert und in die Blockhain eingefügt. Das Ergebnis der validierung muss dann einen Error ausgeben.
Ein Block sieht so aus: „Blockchain in Java – Bitcoin heute Neues Allzeithoch – Nasdaq: Börsengang von Coinbase“ weiterlesen
Bitcoin Kurs zu Ostern (-2.20%) mal von der Kommandozeile
Wer mal eben den Bitcoin Kurs wissen will, einfach
curl rate\.sx/btc von der Kommandozeile eingeben.
Und hier die Anleitung: … „Bitcoin Kurs zu Ostern (-2.20%) mal von der Kommandozeile“ weiterlesen
Aktionen in NodeRed mit Bitcoin (BTC) Zahlungen auslösen oder Kontostandsanzeige
Wer kennt nicht das Problem. Man wartet auf den eingang einer Zahlung und schaut mehrfach ob sie schon da ist.
Oder wie lautet mein Kontostand?
Oder auch in diesem Fall, gib mir eine Nachricht, oder schalte den Button grün, wenn eine „Buy me a Coffee“ Spende eingegangen ist.
Oder mache das Licht an, wenn eine BTC Zahlung eingegangen ist.
Oder für Hochzeit, den QR-Code neben der Kamera aufhängen und bei einzahlung ein Foto auslösen 😉
Oder, oder oder …
All das macht dieser kleine Flow. Mal was anderes als „Ausgangssperre“ und 7-Tage-Inzidenz von 134 oder XBT von 59368.
Und warum soll das Dashboard nicht den Kontostand anzeigen?
Die Funktion ist einfach, in dem Funktions-Node die BTC Adresse eingeben. Die wird dann über die Web-API von https://mempool.space/ abgefragt. Ohne Anmeldung und Paswort möglich. Und schon kann man alles schalte was man will in Abhängigkeit des Kontostand! Cool. Bin ja gespannt, wann der obere Button für den Kaffee eine Aktion auslöst.
Das kanns Du leicht über die Buy my a coffee: bitcoin:bc1qj4grttyhk2h5wqask3nku70e3qtycssz5kvw5l tun. … „Aktionen in NodeRed mit Bitcoin (BTC) Zahlungen auslösen oder Kontostandsanzeige“ weiterlesen
Empfohlene Transaktionsgebühr für Bitcoin Transaktionen im NodeRed Dashboard anzeigen, es muss ja nicht immer Replace-by-Fee (RBF) oder CO2-Ampel sein
Bitcoin Transaktionen kosten im Moment im Durchschnitt ca. 18 Dollar. Man kann ja die Gebühr selbst festlegen und damit die Geschwindigkeit der Überweisung steuern. Wählt man zuwenig, wird sie evl. auch nach Tagen nicht ausgeführt. Evl. reicht aber auch eine kleinere Gebühr, wenn die Transaktion nicht in den nächsten Block der Blockchain kommen muss und man evl. Zeit für ein paar Tage hat. Dann reichen evl. schon wie unten zu sehen 4 Satoshi per Byte.
Bei BTC hängen ja die Gebühren nicht an dem Betrag, sondern an der Länge der Transaktion, die je nach Adressentyp unterschiedlich ist.
Man kann hier schauen, was so im Moment berechnet wird. Dort steht:
1 2 |
The fastest and cheapest transaction fee is currently 102 satoshis/byte, shown in green at the top. For the median transaction size of 224 bytes, this results in a fee of 22,848 satoshis. |
Das ist aber umständlich. Um die aktuelle Kosten anzuzeigen, habe ich einen kleinen NodeRed-Flow im Dashboard entwickelt, das einen Web-Service von mempool.space abfragt und anzeigt. So sieht man auf einen Blick, welcher Betrag ca. für welche Zeit nötig ist.
So braucht man nur einmal auf den „Update“ Button klicken und erhält die Möglichen werte um nicht zuviel zu bezahlen. Manche Wallets ermöglichen ja auch nachträglich die Kosten zu erhöhen wenn die Transaktion nicht durchkommt. Das nervt zwar, spart aber und nennt sich Replace-by-Fee (RBF). Hier das Dashboard:… „Empfohlene Transaktionsgebühr für Bitcoin Transaktionen im NodeRed Dashboard anzeigen, es muss ja nicht immer Replace-by-Fee (RBF) oder CO2-Ampel sein“ weiterlesen
Digitaler Impfnachweis der EU-Kommission setzt auf QR-Codes und nicht auf die „neue“ Gesundheitskarte, deshalb hier die QR-Codes im NodeRed-Flow anzeigen
In diesem Beitrag hatte ich den neuen Node, der aus Text leicht einen QR-Code erzeugt beschrieben. Wie können aber nun QR-Codes direkt in einem NodeRed-Flow und nicht nur im Dashboard angezeigt werden?
Hier ein produktiver Prototyp dazu, man sieht unten rechts den Barcode im Flow. Cool. Geht auch mit Impfnachweisen 😉 … „Digitaler Impfnachweis der EU-Kommission setzt auf QR-Codes und nicht auf die „neue“ Gesundheitskarte, deshalb hier die QR-Codes im NodeRed-Flow anzeigen“ weiterlesen
Crypto Währungsadressen wie z.B. Bitcoin in NodeRed Dashboard validieren
Wie können Kryptowährungsadressen überprüft werden? Also wie können z.B. Bitcoin Adresse überprüft werden? Die Bitcoin Adressen habe wie so viele Adressen eine interne Checksumme, die mit sha256 gebildet wird. Das heißt, es wird zweimal einSHA-256 Hash auf die Adresse gemacht und die ersten 4 Bytes als Checksumme verwendet und an die Adresse angehangen.
Um es ganz einfach zu machen, habe ich einen NodeRed Node node-red-contrib-cryptography-address-check erstellt. Und dazu einen Flow, wo die Adresse nur eingegeben werden muss, und es dann automatisch auf Gültig oder Ungültig überprüft wird.
Dieser Node, muss also nur über die „Pallette hinzufügen“ Funktion geladen werden:
So sieht meine public „Buy me a coffee“ Adresse aus, die ist gültig:
Sobald man da auch nur ein Zeichen verändert, … „Crypto Währungsadressen wie z.B. Bitcoin in NodeRed Dashboard validieren“ weiterlesen
Bitcoin heute über 60.000 Dollar: Free Wallet Wiederherstellungs Vorlage für Bitcoin ua. Wallets (Wallet Recovery Sheet Template)
Heute ist der Bitcoin Kurs zum ersten mal auf über 60.000 Dollar bzw. 50.000 Euro gestiegen. Jetzt ist er gerade bei:
wie das NodeRed Dashboard vom Raspberry Pi im Docker anzeigt. Digitalwährungen wie Bitcoin gelten als riskante Geldanlagen, da sie im Kurs teils erheblich schwanken. Habe für alle Leser mal ein Backup Wallet Formular designt: „Bitcoin heute über 60.000 Dollar: Free Wallet Wiederherstellungs Vorlage für Bitcoin ua. Wallets (Wallet Recovery Sheet Template)“ weiterlesen
TWProviders 1.0 – mal was anderes als HAFNIUM – Installierte Sicherheitsprovider anzeigen
Hier ein neues Java-Programm TWProviders 1.0, das alle Sicherheitsprovider auf dem System (Raspberry Pi, Mac, Windows…) anzeigt. Mal so „just for fun“ programmiert, mal was anderes als Exchange-Lücken HAFNIUM – BSI ruft „IT-Bedrohungslage rot“. Es muss Java auf dem System installiert sein. Einfach das PrintProvider.class.zip (884 Byte) laden und das ZIP auspacken. Dann in dem Verzeichnis starten mit
java PrintProvider
Also das Programm laden, auspacken und starten:
1 2 3 |
wget http://blog.wenzlaff.de/wp-content/uploads/2021/03/PrintProvider.class.zip unzip PrintProvider.class.zip java PrintProvider |
Das sind z.B. die 12 von einem Raspberry Pi 4:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
java PrintProvider TWProviders 1.0 from www.wenzlaff.info prints all 12 Security Provider: SUN (DSA key/parameter generation; DSA signing; SHA-1, MD5 digests; SecureRandom; X.509 certificates; PKCS12, JKS & DKS keystores; PKIX CertPathValidator; PKIX CertPathBuilder; LDAP, Collection CertStores, JavaPolicy Policy; JavaLoginConfig Configuration) Sun RSA signature provider Sun Elliptic Curve provider (EC, ECDSA, ECDH) Sun JSSE provider(PKCS12, SunX509/PKIX key/trust factories, SSLv3/TLSv1/TLSv1.1/TLSv1.2/TLSv1.3/DTLSv1.0/DTLSv1.2) SunJCE Provider (implements RSA, DES, Triple DES, AES, Blowfish, ARCFOUR, RC2, PBE, Diffie-Hellman, HMAC, ChaCha20) Sun (Kerberos v5, SPNEGO) Sun SASL provider(implements client mechanisms for: DIGEST-MD5, EXTERNAL, PLAIN, CRAM-MD5, NTLM; server mechanisms for: DIGEST-MD5, CRAM-MD5, NTLM) XMLDSig (DOM XMLSignatureFactory; DOM KeyInfoFactory; C14N 1.0, C14N 1.1, Exclusive C14N, Base64, Enveloped, XPath, XPath2, XSLT TransformServices) Sun PC/SC provider JdkLDAP Provider (implements LDAP CertStore) JDK SASL provider(implements client and server mechanisms for GSSAPI) Unconfigured and unusable PKCS11 provider |
Mit diesm Programm kann nun auch leicht in einem Script oder in der Konsole nach Providern oder so gesucht werden, z.B. mit grep
java PrintProvider | grep Secure
Ergebnis:
SUN (DSA key/parameter generation; DSA signing; SHA-1, MD5 digests; SecureRandom; X.509 certificates; PKCS12, JKS & DKS keystores; PKIX CertPathValidator; PKIX CertPathBuilder; LDAP, Collection CertStores, JavaPolicy Policy; JavaLoginConfig Configuration)
Sollte kein Java vorhanden sein, kommt es zu dieser Fehlermeldung. „TWProviders 1.0 – mal was anderes als HAFNIUM – Installierte Sicherheitsprovider anzeigen“ weiterlesen
Kryptographisch sicherer Zufallszahlengenerator NodeRed-Flow mit dem Raspberry Pi und Hardware Random Number Generator (RNG) und GUI
Heute gehts mal kurzt um die Praxis. Im letzten Artikel ging es um kryptographisch sicherer Zufallszahlengenerator mit dem Raspberry Pi und Hardware Random Number Generator (RNG).
Man unterscheidet übrigens grundsätzlich zwischen nicht-deterministischen und deterministischen Zufallszahlengeneratoren. Nicht-deterministisch ist ein Zufallszahlengenerator, wenn er auch bei gleichen Ausgangsbedingungen unterschiedliche Werte liefert, so wie der hier vorgestellte. Da die Implementierung einer Software-Prozedur in der Regel deterministisch arbeitet, muss zur Realisierung eines nicht-deterministischen Zufallszahlengenerators ein externer (beispielsweise physikalischer per Hardware) Vorgang der auf dem Raspberry Pi läuft einbezogen werden.
Nun eine Anwendung als NodeRed-Flow um kryptographisch sichere Zufallszahlen zu generieren die dann als Seed ua. auch für Bitcoin verwendet werden können.
Der Flow läuft übrigens auch erfolgreich auf einem NodeRed das in einem Docker-Kontainer läuft. Es wird übrigens die Schnittstelle mit head -c 128 /dev/hwrng abgefragt und der Timeout auf 2 Sekunden gesetzt. Wer größere oder kleinere Zahlen braucht, kann die 128 anpassen. Die 512 Bit kann man übrigens auch für Bitcoin gut gebrauchen 😉
Hier eine kleine Gui dazu: … „Kryptographisch sicherer Zufallszahlengenerator NodeRed-Flow mit dem Raspberry Pi und Hardware Random Number Generator (RNG) und GUI“ weiterlesen
Kryptographisch sicherer Zufallszahlengenerator mit dem Raspberry Pi und Hardware Random Number Generator (RNG)
Zufallszahlen kann man leicht online über random.org ermitteln. Es können da Münzen geworfen werden:
Es können verschiedene Währungen und Anzahl ausgewählt werden. Leider geht nicht Bitcoin. Aber die sind auch gut…
Auch Passwörter, Lotterie, Zeit, Zeichen, Wörter und andere Zufallszahlen können dort generiert werden.
Aber wie kann man Zufallszahlen generieren, die auch noch den hohen kryptografischen Anforderungen entsprechen? Mit Hardware (cryptographically secure pseudo-random number generator (CSPRNG)). Muss man da teure Crypto-Generatoren kaufen? Nein, ein kleiner Raspberry Pi reicht auch schon.
Der Raspberry Pi (Zero ua.) enthält, mit dem Chip BCM2708 / BCM2835 auch einen Hardware Random Number Generator (RNG). Welchen Chip der Pi hat, wird ausgegeben mit: cat /proc/cpuinfo.
Im Idealfall wird die Erstellung von Zufallszahlen durch eine nicht deterministische Entropiequelle gespeist. Das kann zum Beispiel ein hardwarebasierter Zufallsgenerator sein (PI) oder auch ein hybrider Generator. Für kryptologische Anwendungen sollten nicht-deterministische Generatoren verwendet werden, denn nur bei diesen kann garantiert werden, dass sie nicht reproduzierbar oder vorhersagbar sind.
Zugriff darauf erhält man über die Schnittstelle: /dev/hwrng ( und die blockende /dev/random und die nicht blockende /dev/urandom).
Wir aktivieren nun mal die rng-tools für den Zugriff auf den RNG. … „Kryptographisch sicherer Zufallszahlengenerator mit dem Raspberry Pi und Hardware Random Number Generator (RNG)“ weiterlesen
Bitcoin Adressen und Text in QR-Code schnell mit NodeRed erzeugen
Heute gehts mal kurz um die QR-Code Erzeugung wie z.B. dieser:
Manchmal braucht man z.B. einen QR-Code für die Bitcoin-Adresse. Wie z.B. By my a coffee: bitcoin:bc1qj4grttyhk2h5wqask3nku70e3qtycssz5kvw5l wird dann so erzeugt, und geht auf mein echtes Konto 😉 … „Bitcoin Adressen und Text in QR-Code schnell mit NodeRed erzeugen“ weiterlesen
Signieren von Nachrichten mit Digital Signature Algorithm (ECDSA) in Java und Elliptische-Kurven-Kryptografie (ECC) secp256k1
Wie werden in Java Nachrichten signiert und vom Empfänger validiert? Das geht mit ein paar Zeile aus dem Java Package java.security. Wir verwenden die auch in Bitcoin verwendeten Elliptische-Kurven-Kryptografie secp256k1. Was wollen wir zu Entspannung nach Feierabend machen?
Das wird in diesem BPMN-Diagramm dargestellt:
Hier die kommentierte Java Klasse: … „Signieren von Nachrichten mit Digital Signature Algorithm (ECDSA) in Java und Elliptische-Kurven-Kryptografie (ECC) secp256k1“ weiterlesen
Kryptowährungen eingebrochen: Bitcoin zeitweise auf 45.000 US-Dollar gefallen deshalb nun NodeRed mit Hash RIPEMD-150 Node inkl. GUI
Eben eine neue Version des NodeRed Node node-red-contrib-cryptography in Version 0.0.4 veröffentlicht. Jetzt auch mit RIPEMD-160 hash. RIPEMD-160 bietet kürzere hash Werte (40 Zeichen) als SHA-265. Wird deshalb u.a. auch für Bitcoin verwendet. Hier nun endlich auch eine GUI nach „jahrelanger“ Entwicklung, wo einfach Testwerte eingegeben werden können.
Und der dazugehörige Flow:… „Kryptowährungen eingebrochen: Bitcoin zeitweise auf 45.000 US-Dollar gefallen deshalb nun NodeRed mit Hash RIPEMD-150 Node inkl. GUI“ weiterlesen
#Hashgenerator: NodeRed Hash SHA-256 GUI Flow Generator
Wer in einer schönen GUI mit NodeRed mal einen SHA-256 Hash erzeugen will, kann das gern hiermit machen. Hier der Flow: … „#Hashgenerator: NodeRed Hash SHA-256 GUI Flow Generator“ weiterlesen
New NodeRed Node: Hash mit SHA-256
Wer in NodeRed einen SHA-256 hash ohne Konfiguration verwenden will, kann das Modul node-red-contrib-cryptography verwenden. Das JavaScript Modul habe ich geschrieben, um das Hashen zu vereinfachen. Es brauchen keine Einstellungen gemacht werden und es gibt keine weiteren Abhängigkeiten. Das Modul wird dann später noch um RIPEMD-160 ua. die für Bitcoin verwendet werden können erweitert.
Die erste Version, kann wie gewohnt in der Palettenverwaltung geladen werden: … „New NodeRed Node: Hash mit SHA-256“ weiterlesen
NodeRed: Bitcoin Kurs übersichtlich anzeigen
Mal zum Feierabend einen kleine Bitcoin Flow mit NodeRed implementiert. … „NodeRed: Bitcoin Kurs übersichtlich anzeigen“ weiterlesen
Auf der Terrasse sitzen geht wegen 0,5 Meter Schnee nicht, deshalb Ripemd-160 eine Millionen check
Auf der Terrasse sitzen geht wegen 0,5 Meter Schnee nicht
deshalb Ripemd-160 JUnit Test mit eine Millionen check implementiert. … „Auf der Terrasse sitzen geht wegen 0,5 Meter Schnee nicht, deshalb Ripemd-160 eine Millionen check“ weiterlesen
Mal was anderes als Schnee und Glatteis: Salzen mit SHA-256 in Java
Kryptografische Hashfunktionen können zur Integritätsprüfung verwendet werden, um Änderungen in Daten festzustellen. Bitcoin verwendet kryptografische Hashfunktionen sehr ausgiebig, um zu überprüfen, dass sich Daten nicht geändert haben. Zum Beispiel wird immer ab und zu – durchschnittlich alle 10 Minuten – ein neuer Hash der gesamten Zahlungsgeschichte erzeugt. Wenn jemand versucht, diese Daten zu ändern, wird dies sofort von jedem, der die Hashes überprüft, bemerkt.
Grundlegenden Eigenschaften von Hash:
-Gleiche Eingabedaten erzeugen den gleichen Hash.
-Leicht unterschiedliche Eingabedaten erzeugen sehr unterschiedliche Hashes.
-Der Hash hat stets eine feste Länge. Bei SHA256 sind dies 256 Bits.
-Die Holzhammermethode Trial-and-Error ist der einzige bekannte Weg, einen Input zu finden, der einen bestimmten Hash erzeugt.
Hier mal ein kleines Java Beispiel mit unterschiedlichen Libs und pur Java: … „Mal was anderes als Schnee und Glatteis: Salzen mit SHA-256 in Java“ weiterlesen
Wo gibt es Bitcoin (BTC) Faucet für das Bitcoin Testnet kostenlos?
Das Bitcoin Testnet ist eine alternative Bitcoin-Blockchain, die Entwickler zum Testen verwenden. Testnet-Münzen haben keinen Wert. Entwickler verwenden Testnet, um mit der Blockchain zu experimentieren, ohne echte Bitcoins zu verwenden oder sich Sorgen zu machen, dass die Hauptkette unterbrochen wird.
Hier drei Seiten, um Bitcoin im Testnet zu „kaufen“:… „Wo gibt es Bitcoin (BTC) Faucet für das Bitcoin Testnet kostenlos?“ weiterlesen