Miért vagyok az Ethereummal eddig… eddig… eddig…

Bő egy éve folyik aktívan az INLOCK körüli szolgáltatások fejlesztése, aminek az egyik nagyon fontos részét képezi a nyílt blokkláncokkal történő kapcsolattartás. Mit is jelent ez pontosan? Egy teljesen online rendszer esetén nyilvánvaló, hogy pl. a deposit (beutalás), withdraw (kiutalás) és a különböző (pl. exchange) művelet is teljesen automatikusan működjenek. Akinek kellett valaha is programoznia pl. Bitcoin ÉS Ethereum payment gatewayt az tudja pontosan, hogy miért pofon egyszerű ez a Bitcoin (és klónjai) esetén és miért egy totális világégéssel felérő katasztrófa az Ethereum kapcsán.

Aki viszont nem…

… annak álljon érdekességként itt ez a cikk. Anélkül, hogy túlságosan belevezetném az olvasót a technológia mélységeibe nézzük, hogy miért is annyira nagyon különböző a két technológia: a nyílt blokkláncoknál közismert tény, hogy a blokklánc valamilyen elv mentén tárolja az értékeket. Ez Bitcoin esetlén az UTXO (unspend transaction output), míg Ethereum kapcsán a blokkonkénti balance nyilvántartás.

Mit jelent ez a gyakorlatban? A Bitcoin esetén onnan tudod, hogy mennyi egy address egyenlege, hogy megnézed az adott addresshez tartozó összes UTXO-t és azok amountját összegzed, míg ezzel szemben az Etheruem-ban könnyedén le tudod kérni egy adott address egyenlegét, sőt node típustól függően akár visszamenőlegesen is le tudod kérni, hogy X blokkal korábban mennyi volt az egyenlege, így látszólag sokkal könnyebben tudsz pl. egy fizetésforgalmi szolgáltatást fejleszteni Ethereumra, hiszen a (geth/parity) node a kezed alá ad mindent. Blokkonként tudod a fogadó címek egyenlegét és a blokkból szépen ki is tudod olvasni, hogy az adott címre mennyi Ethereum érkezett. Ergo könnyedén lehet kezelni pl. a blokklánc elágazásait (Uncle blokkok), és ha megfelelő mennyiségű confirmationt hagysz rá, akkor egész komoly reorgok esetén sem kell attól félned, hogy olyan egyenleget írsz jóvá, ami valójában nem is létezik.

UTXO: A blokklánc nodejai egy kivonatot képeznek az összes el nem költött outputról, amik összege explicit megadja egy address szabadon felhasználható balanceát. A Bitcoin és abból forkolt blokkláncok az UTXO technológiát használják az egyenlegek nyomon követésére.

Uncle blokk: Ethereum esetén azon blokkok, amik bár elkészültek és propagálódtak is, de nem képezik részét a főláncnak.

Reorg: Ha egy blokk uncle-be kerül, akkor a nodeok újraépítik a saját főláncukat az uncle előtti állapotból, ezt a folyamatot nevezzük blokklánc reorganizációnak.

Ezen a ponton persze feltehetnénk a kérdést, hogyha egyszer ennyire egyszerű ás kezesbárány az Ethereum, akkor mégis mi is a bajom vele? Az ördög ezúttal is a részletekben lakozik.

Folytatás…

Ismerkedés a Bittrex API-val [Python]

Bár kétségtelenül epic jó a kraken api-ja, ellenben a kraken konzervativitása a támogatott coin párok kapcsán már koránts sem tekinthető elégségesnek. Ennek okán elkezdtem kalandozásom a Bittrex API-jával. Api dokumentációt itt találjátok: -link-. Az általam használt python library-t pedig itt: -link-

Ez a cikk a korábban már elkezdett “CryptoCulture: A programozási mint alap nyelvtudás” cikksorozat folytatása. Ezúttal a post végén már egy automata limitáras vásárló robot szerűséget is bemutatok.

Nezzünk egyből az elején egy nagyon egyszerű példát:

#!/usr/bin/python3
import json
from bittrex.bittrex import Bittrex

sf = open("secrets.json")
secrets = json.load(sf)
sf.close()
bt = Bittrex(secrets['key'], secrets['secret'])

actual = bt.get_balance('BTC')
print(actual)

A kód futtatásához létre kell hozni egy secrets.json file-t, amibe be kell rakni az API és secret key-t. Ezt követően a program máris visszaadja az elvárt outputot: “{‘message’: ”, ‘success’: True, ‘result’: {‘CryptoAddress’: None, ‘Currency’: ‘BTC’, ‘Balance’: X.X, ‘Available’: X.X, ‘Pending’: 0.0}}

A get_balance(‘XXX’) helyett a get_balances api call ugyanezen struktúrában visszaadja az összes valaha bírtokolt coin egyenlegét, tehát itt az eredményben fogod látni a nullás egyenlegű tételeket is, amikből valaha rendelkeztél akár egy minimális mennyiséggel.

Folytatás…

Blockchain elemzés Pythonnal

Most, hogy a kripto piacok erősen az egyet előre, egyet hátra elv szerint működnek (mindezt napi akár 10-15%-os elmozdulásokkal, amiket azért lehet rendesen nyerészkedni) és lényegében már mindenki enerváltan várakozik a augusztusi drámatagozatos óvodások előadására, ahol bal oldalon az UASF család mérhetetlen haragot táplál a jobb oldalon elhelyezkedő BitcoinABC család iránt, mely haragnak az eredeti okára már senki sem emlékszik, de a két család egy-egy sarja… oké, elkalandoztam.

Szóval a nagy rápihenésben végre van időm elővenni a kis házi barkács projektemet. Aki olvasta a self-info postomat, annak ismerős lehet az alábbi rész: “Amivel leginkább szeretnék foglalkozni, az ezen kettő témának (márhogy az Machine-Learning és a Cryptocurrency) összehozatala egy nagy projektté. Persze még messze a cél, de sikerül komolyabb eredményeket felmutatni egy olyan automatizált platform elkészítése kapcsán, ami segíthet hasznos predikciókat készíteni.

Ahol tartok:  az a blockchainek értelmezése és abból hasznos adatok kinyerése. Mivel mapság mindenki blockchain kóder akar lenni (már persze leszámítva azokat akik nem…), ezért gondoltam megosztok néhány nagyon egyszerű példát ami hasznos lehet azoknak akik tényleg csak most ismerkednek a témával. A továbbiakban két minta projektet mutatok be, az első egy egyszerű block explorer és statisztikáció, ami a legyűjti az utolsó 5 block (elmúlt egy óra) teljes tranzakció listáját és abból leválogatja azon bitcoin addresseket, amik az elmúlt egy órában a legtöbb bitcoint szerezték és azokat akik a legtöbbet vesztették el. A második projekt egy egyszerű address explorer, amivel le lehet kérdezni egy konkrét address teljes tranzakció történetét aggregálva blockonként.

Ezek a példák persze önmagukban kb semmit sem érnek, azonban beleillesztve ezeket egy keretbe nagyon is hasznosak lehetnek. Nézzük egy egyszerű példát:

  • Ismeretesek a nagyobb tőzsdék (kraken, bitfinex, pol, stb.) wallet addressei. Ha az elmúlt időszakban ezen addressek irányába nagy mennyiségű bitcoin áramlik olyan privát addressekről amik jelentősebb tranzakciós múlttal rendelkeznek, akkor jogosan lehet feltételezni, hogy ezeket azért rakják oda be, mert el akarják adni vagy fiatra/más kriptora váltani. Ez ugye azt jelentheti, hogy csökkenni fog az adott crypto pénz piaci kapitalizációja. Nyilván ez vice-versa is igaz.

Ennél több részletet egyelőre nem osztanék meg a projektről, de megígérem, hogy folyamatosan közölni fogom a részleteket itt a blogon, ahogy haladok előre. Előbb utóbb tisztulni fog a kép 🙂

Folytatás…