Korzystaj z potencjału sieci i używaj OP_RETURN
Ciekawa historia kryje się za specjalnym typem wyjścia transakcji, znanym jako kod operacji OP_RETURN. Jest to temat, który rozpala emocje i dzieli społeczności Bitcoin SV, BCH i BTC. Niektórzy uważają, że przechowywanie dowolnych danych w łańcuchu bloków to zły pomysł i nie do tego został on stworzony. Na szczęście, deweloperzy Bitcoin SV nie podzielają tego zdania, a statystyki dostępne online pokazują jaka jest rzeczywistość.
Duży może więcej
Maksymalny rozmiar danych dla poszczególnych Bitcoinów:
Bitcoin BTC 80 bajtów = 0,08 KB Bitcoin BCH 220 bajtów = 0,22 KB Bitcoin BSV 100000 bajtów = 100 KB
Matematyki nieoszukamy i jeśli sprawdzimy proporcje, to Bitcoin Cash pozwala na zapisanie 175% więcej danych w OP_RETURN niż Bitcoin Core, a Bitcoin SV pozwala na zapisanie 127900% więcej danych niż Bitcoin Core i 46454% więcej danych niż Bitcoin Cash.
Bitcoin SV, pomimo swojej dużej pojemności i funkcjonalności, jest również niezwykle tani. To aspekt często niedoceniany przez przeciwników orginalnego Bitcoina. Kiedy zadałem pytanie na forum, gdzie mogę zdobyć darmowe Bitcoiny w sieci testowej do przeprowadzenia testów, otrzymałem sakrastyczną odpowiedź, że po co, jak wszyscy testują na produkcyjnym blockchainie. Transakcje w sieci Bitcoin SV są naprawdę tanie. Sprawdźmy to sami.
Poznaj więcej funkcji BitSV
Zanim zaczniemy pracować z OP_RETURN, przygotujemy skrypt tak, aby można go było testować zarówno w sieci produkcyjnej, jak i testowej. Dzięki temu zaoszczędzimy trochę Bitcoinów podczas testowania naszej aplikacji. Aby przełączyć się między sieciami, wystarczy podać nazwę sieci jako argument funkcji .NetworkAPI(). Jeśli nie podamy argumentu, domyślnie połączymy się z główną siecią.
Wszystkie dostępne funkcje znajdziesz tutaj: https://austecon.github.io/bitsv/dev/api.html
Na tej stronie zdobędziesz darmowe Bitcoiny (w sieci testowej): https://witnessonchain.com/faucet/tbsv
Zatem obliczmy kosz transakcji. BitSV daje nam możliwość pobrania informacji o koszcie rekomendowanej opłaty za bajt w satoshi. W zależności od prędkości z którą chcesz, aby Twoja transakcja została przetworzona, możesz wybrać 3 opcje: fast (2 Satoshi/B), medium (1 Satoshi/B) lub slow (0,5 Satoshi/B).
#Python import json import bitsv # Rozmiar transakcji mierzony w bajtach #transaction_size_b = 80 # pojemoność BTC 80B #transaction_size_b = 220 # pojemoność BCH 220B #transaction_size_b = 100000 # pojemoność BSV 100KB transaction_size_b = 1000 # TX BSV średnio nie przekracza 1KB # Stworzenie obiektu api = bitsv.network.services.NetworkAPI('main') #api = bitsv.network.services.NetworkAPI('test') # Pobranie informacji o koszcie opłaty za bajt w satoshi fee_satoshi_per_byte_fast = bitsv.network.get_fee(speed='fast') fee_satoshi_per_byte_medium = bitsv.network.get_fee(speed='medium') fee_satoshi_per_byte_slow = bitsv.network.get_fee(speed='slow') # Obliczenie opłaty za transakcję fee_fast_satoshi = round(fee_satoshi_per_byte_fast * transaction_size_b) fee_medium_satoshi = round(fee_satoshi_per_byte_medium * transaction_size_b) fee_slow_satoshi = round(fee_satoshi_per_byte_slow * transaction_size_b) # Przekonwertowanie na inna walutę fee_fast_bsv = fee_fast_satoshi / 100000000 fee_fast_pln = bitsv.network.satoshi_to_currency(fee_fast_satoshi, 'pln'); fee_fast_usd = bitsv.network.satoshi_to_currency(fee_fast_satoshi, 'usd'); fee_medium_bsv = fee_medium_satoshi / 100000000 fee_medium_pln = bitsv.network.satoshi_to_currency(fee_medium_satoshi, 'pln'); fee_medium_usd = bitsv.network.satoshi_to_currency(fee_medium_satoshi, 'usd'); fee_slow_bsv = fee_slow_satoshi / 100000000 fee_slow_pln = bitsv.network.satoshi_to_currency(fee_slow_satoshi, 'pln'); fee_slow_usd = bitsv.network.satoshi_to_currency(fee_slow_satoshi, 'usd'); # Zebranie danych data = { "fee_satoshi_per_byte_fast": fee_satoshi_per_byte_fast, "fee_satoshi_per_byte_medium": fee_satoshi_per_byte_medium, "fee_satoshi_per_byte_slow": fee_satoshi_per_byte_slow, "fast_speed_fee_satoshi": fee_fast_satoshi, "fast_speed_fee_bsv": fee_fast_bsv, "fast_speed_fee_pln": fee_fast_pln, "fast_speed_fee_usd": fee_fast_usd, "medium_speed_fee_satoshi": fee_medium_satoshi, "medium_speed_fee_bsv": fee_medium_bsv, "medium_speed_fee_pln": fee_medium_pln, "medium_speed_fee_usd": fee_medium_usd, "slow_speed_fee_satoshi": fee_slow_satoshi, "slow_speed_fee_bsv": fee_slow_bsv, "slow_speed_fee_pln": fee_slow_pln, "slow_speed_fee_usd": fee_slow_usd } # Wyświetlenie danych json_data = json.dumps(data, indent=4) print(json_data) # JSON size 100KB # { # "fee_satoshi_per_byte_fast": 2, # "fee_satoshi_per_byte_medium": 1, # "fee_satoshi_per_byte_slow": 0.5, # "fast_speed_fee_satoshi": 2000, # "fast_speed_fee_bsv": "0.00002000", # "fast_speed_fee_pln": "0", # "fast_speed_fee_usd": "0", # "medium_speed_fee_satoshi": 1000, # "medium_speed_fee_bsv": "0.00001000", # "medium_speed_fee_pln": "0", # "medium_speed_fee_usd": "0", # "slow_speed_fee_satoshi": 500, # "slow_speed_fee_bsv": "0.00000500", # "slow_speed_fee_pln": "0", # "slow_speed_fee_usd": "0" # }
Jeśli przeanalizujemy transakcje w sieci Bitcoin SV, zauważymy, że zazwyczaj ich rozmiar nie przekracza 1KB. Dlatego w powyższym przykładzie obliczyliśmy koszt wykonania transakcji, zakładając, że jej rozmiar wynosi 1000 bajtów.
Z obliczeń wynika, że jedna transakcja kosztuje 1000 Satoshi, to jest $0,002 czyli 0,008zł. To za 1 zł jesteśmy w stanie wykonać około 120 transakcji.
OP_RETURN to takie proste
Zapis danych do blockchaina jest bardzo prosty. Tworzymy transakcję, dodajemy dane do OP_RETURN, a następnie podpisujemy ją kluczem prywatnym, aby wysłać i utrwalić wszystko w sieci.
#Python import json from bitsv import PrivateKey # Klucz prywatny w formacie WIF private_key_wif = 'L5kxV99eBF1t51wvFgPQeyyu5u6myKTn7hc97dcuhLq9ZonP2Yjt'#4public # Treść do wysłania op_return_str = ' Bitcoin SV Polska ' # Odtworzenie klucza prywatnego key = PrivateKey(private_key_wif) # Przygotowanie OP_RETURN op_return_data = b''.join([ bytes.fromhex('6d01'), op_return_str.encode('utf-8') ]) # Wykonaj transakcję i zapisz jej ID try: data = { "txid": key.send(outputs=[], message=op_return_data, custom_pushdata=True) } except Exception as e: data = { "error": str(e) # Konwersja wyjątku na ciąg znaków } # Wyświetlenie danych json_data = json.dumps(data, indent=4) print(json_data) # JSON # { # "txid": "955d5acff299a3906b563aeb96cb1ce0addfb4e7b260e9979e260f2218b9d1fd" # }
Po wykonaniu skryptu otrzymasz identyfikator transakcji (TXID). Dzięki temu identyfikatorowi możesz sprawdzić status transakcji oraz zawartość OP_RETURN.
https://whatsonchain.com/tx/955d5acff299a3906b563aeb96cb1ce0addfb4e7b260e9979e260f2218b9d1fd
Następny krok to zdobycie umiejętności odczytywania danych zapisanych w blockchainie, ale to już innym razem.
Podsumowując
Sieć Bitcoin SV oferuje niezwykłe możliwości dla deweloperów i użytkowników. Dzięki dużej pojemności OP_RETURN i niskim kosztom transakcji, Bitcoin SV umożliwia przechowywanie danych w sposób ekonomiczny. To otwiera drzwi do wielu zastosowań, od prostych transakcji finansowych, po zaawansowane aplikacje z wykorzystaniem danych przechowywanych na blockchainie.
Testuj swoje aplikacje w sieci testowej przed przejściem do sieci produkcyjnej. Dzięki temu upewnisz się że wszystko działa poprawnie i zaoszczędzisz swoje Satoshi.
Pamiętaj! Satoshi do Satoshi daje Bitcoina :)
Mam nadzieję, że ten artykuł pomógł Ci zrozumieć, jak skorzystać z możliwości biblioteki BitSV i potencjału sieci Bitcoin z kodem operacji. Jeśli masz jakiekolwiek pytania lub potrzebujesz dalszej pomocy, śmiało pytaj.
Znajdziesz nas na oficjalnym kanale: Discord BitcoinSV Polska