Przejdź do głównej zawartości

Python Bitcoin bsv-sdk: fakturowanie blockchain

Płatności w stylu Type-42: Nowa era audytu i transparentności w blockchainie - rewolucja w fakturowaniu

W świecie blockchaina, innowacje pojawiają się co chwilę. Jednym z najnowszych trendów, który może zmienić sposób, w jaki przeprowadzamy płatności i monitorujemy transakcje, jest styl Type-42. Ten sposób płatności jest naprawdę interesującym podejściem do integracji między sklepami a klientami, a także do zapewniania transparentności i audytu w całym procesie. Jeśli prześledziłeś moje poprzednie wpisy, ten element będzie bardzo prosty do zrozumienia i sam zauważysz tę rewolucję w fakturowaniu.

Type-42 - to koncepcja płatności zaproponowana w ekosystemie Bitcoin (BSV), która oferuje nowy sposób obsługi płatności z bardziej zaawansowaną kontrolą audytu i rozliczania transakcji. W skrócie, Type-42 pozwala na tworzenie specjalnych transakcji, które są bezpośrednio powiązane z konkretnymi fakturami. W tym paradygmacie sklep i klient współdzielą wspólny adres płatności, który jest używany do rozliczenia konkretnej transakcji.

bsv-sdk python poradnik

Jak powiązać fakturę z adresem?

W tradycyjnym fakturowaniu:

  • System wystawia fakturę z numerem, np. FV/2025/001.
  • Znany jest numer rachunku bankowego.
  • Powiązanie "numer faktury --> numer rachunku" nie istnieje, rachunek zwykle wypisany jest na fakturze.

Jeśli baza się wywali, zostanie zanonimizowana albo oszust podstawi własny rachunek bankowy na takiej fakturze, to sama "faktura nie wie", jaki adres był z nią powiązany - czy podany numer rachunku w rzeczywistości należy do firmy, która wystawiła fakturę, musi być weryfikowane przez oba działy księgowości: A: Wysłaliście nam taki numer? B: Tak wysłaliśmy Wam taki numer. Odtworzenie historii wymaga zaufania do tego, że system księgowy nie pomylił się po drodze.

Brakuje czegoś prostego: aby numer faktury sam w sobie był kluczem do adresu, który można kryptograficznie odtworzyć, niezależnie od prywatnej bazy i wiedzy działu księgowości.

Krok po kroku: jak to działa koncepcyjnie

Rozłóżmy to na prosty scenariusz "sklep - klient".

1. Każdy ma swój klucz

  • Sklep ma swój klucz prywatny: można go nazwać sklep_priv.
  • Klient ma swój klucz prywatny: klient_priv.

Z każdego z nich można wyliczyć publiczny odpowiednik, czyli:

  1. sklep_pub = sklep_priv.public_key()
  2. klient_pub = klient_priv.public_key()

Publiczny klucz można wysłać mailem lub umieścić w QR‑kodzie - sam w sobie nie służy do wydania środków.

2. Wymiana publicznych kluczy

Sklep i klient wymieniają się tylko publicznymi kluczami:

  1. Sklep poznaje klient_pub.
  2.  Klient poznaje sklep_pub.

Na tym etapie żadna strona nie zdradza swojego seeda i klucza prywatnego.

3. Pojawia się faktura

Sklep wystawia fakturę, np.:

  • Numer: INV-2025-001.
  • Kwota: 1000 satoshi
  • Termin płatności itd.

Ten numer faktury staje się parametrem procedury Type‑42 - właśnie on powiąże adres płatności z dokumentem.

4. Obie strony liczą ten sam klucz potomny

    Sklep lokalnie uruchamia algorytm:

  • "Weź mój klucz prywatny sklep_priv, dołóż do tego publiczny klucz klienta klient_pub i ciąg znaków z faktury INV-2025-001. Przepuść wszystko przez ustaloną funkcję Type‑42, a dostaniesz klucz potomny child_key."

    Klient może zrobić analogiczną operację:

  • "Weź mój klucz prywatny klient_priv, dołóż publiczny klucz sklepu sklep_pub i tę samą fakturę INV-2025-001. Przepuść przez funkcję Type‑42, otrzymasz klucz potomny child_key.”

Konstrukcja funkcji jest taka, że w obu przypadkach wychodzi ten sam wynik - te same bajty klucza potomnego. Różni się tylko to, jakich elementów "sekretnych" używa lokalnie każda ze stron:

  • Sklep używa swojego klucza_prywatnego + publicznego klienta.
  • Klient używa swojego klucza_prywatnego + publicznego sklepu.

Wspólny wynik = wspólny klucz (i wspólny adres) związany z daną fakturą.

5. Z klucza potomnego powstaje adres płatności

Z tak wyprowadzonego klucza potomnego generuje się po prostu adres Bitcoin (BSV) w standardzie P2PKH lub innym; to będzie adres płatności dla faktury INV-2025-001.

Sklep:

  • nie potrzebuje żadnej dodatkowej bazy, żeby wiedzieć, który adres był do której faktury – może to zawsze policzyć na nowo, korzystając z sklep_priv, klient_pub i numeru faktury.

Klient:

  • może zweryfikować, że adres, który dostał na fakturze, naprawdę wynika z tej relacji (klient_priv + sklep_pub + numer faktury), a nie jest wzięty z sufitu.

PRZYKŁAD: My jako klient

Nasz poprzedni skrypt nieco zmienimy poprzez dodanie do niego:
  1. zmiennej przechowującej klucz prywatny i publiczny np. sklepu
  2. zmiennej przechowującej numer faktury
  3. zmiennej wspólnego klucza płatności
I na tym etapie sprawdzimy jak wygląda sytuacja w której:
  1. otrzymujemy fakturę i z tej faktury generuje się nam adres związany tylko z tą fakturą
  2. weryfikujemy numer faktury swoim kluczem prywatnym i kluczem publicznym sklepu
  3. oszust zna numer faktury i chce sprawdzić adres płatności podstawiając swój klucz prywatny

bsv-sdk python fakturowanie

Wykonanie kodu dało taki rezultat:

bsv-sdk transakcja faktura


Adres mxJAJiw... z numerem faktury: Faktura 126p/22/2025, istnieje tylko w relacji klient-sklep. Ktoś kto dowie się o numerze faktury, nie wyda zgromadzonych tam środków, bo klucz odblokowujący istnieje tylko dla jednej strony - sklepu.

No to teraz wyślemy satoshi na ten nasz nowo wygenerowany wspólny adres i zobaczymy kto będzie mógł wydać otrzymaną kwotę:



Transakcja jest w blockchain i wygląda jak zwykłe wydanie satoshi (911). Teraz sprawdzimy gdzie znajduje się niewydane UTXO.

utxo type42
UTXO z płatności 911 satoshi za fakturę Faktura 126p/22/2025 nie ma.. To gdzie jest?



Tutaj mamy klucz prywatny do naszej płatności, wygenerował go sklep podczas tworzenia adresu do konkretnej faktury. Wszystko działa i sklep może wydać otrzymane środki.

Bezpieczeństwo i Transparentność

W tym wpisie zamieniliśmy numer faktury w coś więcej niż ciąg znaków na PDF. Pokazaliśmy, że:
  • Numer faktury + klucz sprzedawcy + klucz klienta = dokładnie jeden, wspólny adres płatności.
  • Ten adres można zawsze odtworzyć kryptograficznie,  bez pytania księgowości, czy numer rachunku jest prawdziwy.
  • Środki wysłane na adres wyprowadzony z faktury nie są widoczne pod normalnymi kluczami prywatnymi sklepu i klienta - siedzą pod osobnym, wspólnym kluczem potomnym, który umiemy policzyć tylko w tej relacji.
Dzięki temu numer faktury staje się kryptograficznym kluczem do adresu, a nie tylko wpisem w jakiejś tabelce.
 
Type-42 wprowadza istotne usprawnienia w zakresie bezpieczeństwa, przejrzystości i audytu płatności w systemach blockchainowych. Umożliwia to wspólną weryfikację przez sklep i klienta przed dokonaniem transakcji, co minimalizuje ryzyko oszustw i błędów. Jednak jak każda technologia, także ta nie jest wolna od potencjalnych zagrożeń, choć w tym przypadku ryzyko manipulacji jest znacznie mniejsze niż w tradycyjnych systemach.

Wspólna weryfikacja faktury i adresu płatności

W Type-42 obie strony transakcji - klient i sklep - muszą zweryfikować dane przed dokonaniem płatności, co znacząco redukuje ryzyko oszustw:
  • Adres płatności przypisany do faktury jest wspólny i zapisany na blockchainie, co oznacza, że jest dostępny dla obu stron i niemożliwy do zmiany po dokonaniu transakcji.
  • Weryfikacja faktury przez klienta i sklep zapewnia, że zapłacona kwota pasuje do faktury, eliminując ryzyko pomyłek czy manipulacji przy przypisywaniu płatności do zamówień.
Ta transparentność i automatyzacja procesu są wielką przewagą w stosunku do tradycyjnych metod płatności, które opierają się na centralnych bazach danych i pośrednikach.
 
Mimo że Type-42 zapewnia dużą ochronę, wciąż istnieje ryzyko oszustw, które mogą dotyczyć danych zewnętrznych - przede wszystkim fałszywych faktur przy braku weryfikacji przez stronę transakcji czy też ew. przechwycenia i podmiany klucza publicznego kontrahenta. Z pomocą mogą przyjść publiczne rejestry, takie jak Krajowy Rejestr Sądowy (KRS), CEIDG (Centralna Ewidencja i Informacja o Działalności Gospodarczej) czy księga podatników VAT, w których znajdują się dane o firmach, ich adresach, VAT, a także adresach rachunków bankowych; gdyby dołożyć tam klucze publiczne firm, sytuacja byłaby bardziej obiecująca. Klucze publiczne byłyby weryfikowane za pomocą publicznych baz danych, można by automatycznie sprawdzić nawet w domowych warunkach, czy klucz publiczny firmy w połączeniu z naszą fakturą jest taki sam jak połączenie naszego klucza prywatnego z numerem faktury. Dzięki temu obie strony miałyby pewność, że płatność jest dokonywana na prawdziwy adres firmy, a nie na oszukańczy rachunek. Uważam, że to jest fajne, praktyczne, ciekawe i przyszłościowe :) 

Cześć!


Jeśli moje wpisy przypadły Ci do gustu i chcesz wesprzeć rozwój bloga, możesz postawić mi wirtualną kawę. Oczywiście, to całkowicie dobrowolne - blog i tak zawsze będzie dostępny za darmo. Dzięki za każde wsparcie, nawet to w formie dobrej energii! ☕😊



 **Gwarantuję Ci niezmienność moich treści**

Hash artykułu:

ID transakcji: sprawdź OP_RETURN i porównaj jego hash

Komentarze

Popularne posty

Discord kontra Forum – dlaczego Twój mózg tęskni za phpBB

Not Your Keys? – Krypto, Prawo i Wielkie Nieporozumienie

Cyfrowy minimalizm - mniej pingów, więcej spokoju