BITCOINSV.PL
Korzystaj z potencjału sieci i używaj OP_RETURN

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:
    BTC       80 bajtów =   0,08 KB
    BCH      220 bajtów =   0,22 KB
    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, medium lub slow.


#Python
import json
import bitsv
 
# Rozmiar transakcji mierzona w bajtach
#transaction_size_b = 80     # pojemoność BTC 80B
#transaction_size_b = 220    # pojemoność BCH 220B
transaction_size_b = 100000 # pojemoność BSV 100KB
 
# Stworzenie obiektu
api = bitsv.network.services.NetworkAPI('main')
#api = bitsv.network.services.NetworkAPI('test')
 
# Pobranie opłaty za transakcję
fee_per_byte_fast = bitsv.network.get_fee(speed='fast')
fee_per_byte_medium = bitsv.network.get_fee(speed='medium')
fee_per_byte_slow = bitsv.network.get_fee(speed='slow')
 
# Obliczenie opłaty za transakcję
fee_fast_satoshi = round(fee_per_byte_fast * transaction_size_b)
fee_medium_satoshi = round(fee_per_byte_medium * transaction_size_b)
fee_slow_satoshi = round(fee_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 = {
    "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
# {
#    "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'
 
# 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: https://discord.gg/TQWvMF2D7j

ZUKU