Interjú a QBitcoin alkotójával

2011-07-04

Szerző: Kiba

A QBitcoin egy érdekes új Bitcoin-kliens, melyről most annak alkotóját, Mark Karpeles-t, avagy MagicalTux-ot kérdezem.

Kiba: Mielőtt rátérnénk a QBitcoinra, szólnál pár szót magadról?

MagicalTux: Persze. Mark Karpeles vagyok, 25 éves francia programozó, aki Franciaországot megunva Japánba költözött másfél évvel ezelőtt, és kiépített ott egy új vállalatot. Sok mindennel foglalkozom itt, egyebek mellett fejlesztek, üzletmenedzselek és minden egyebet csinálok. Több különböző nyílt forráskódú projektben vettem részt (általában patchek írásával vagy karbantartóként), és persze írtam néhány olyan programot is, aminek nem mindenki örül, és ami számos trollt is vonz (így például mail-, FTP- és DNS-szervert PHP-ben).

A vállalatommal olyan szolgáltatásokat indítottunk útnak, mint amilyen például az integrált bitcoin-támogatással is rendelkező KalyHost.com, de írtam kizárólag bitcoinnal működő szolgáltatást is, név szerint az smsZ.net-et, és tervezek még számos további bitcoin-alapú szolgáltatást is.

Kiba: Az alap Bitcoin-klienshez hasonlóan tehát a QBitcoin is egy Bitcoin-kliens. Miben különbözik a hivatalostól?

MagicalTux: Sokmindenben, de a legnyilvánvalóbb talán az, hogy Qt-t használ wxWidgets+boost helyett.

A Qt-nek számos előnye van a wxWidgets+boosttal szemben, így például az, hogy ugyanazokat a natív típusokat használja a GUI és a többi rész (pl. hálózatkezelés, stb.) között, így sokkal könnyebb olvasni és értelmezni az egész kódot. A Qt emellett megadja szinte az összes szükséges eszközt, hálózatkezeléstől JSON RPC-ig, stb.

A másik lényeges különbség abban áll, hogy a tárca elkülönül a fő exe-től. Ezt már jópáran kérték (elkerülendő egy olyan folyamatot, ami hálózati hozzáféréssel leolvashatná a titkos kulcsokat), én pedig megvalósítottam itt. Beépítettem továbba a tárcakódolás lehetőségét is, AES256-tal kódolt RSD 4096 bites kulccsal. A kódolási folyamat legnehezebb része annak a megoldása volt, hogy új bitcoin-címeket bármikor létre lehessen hozni jelszó nélkül is, viszont a tényleges használatukhoz már kelljen a jelszó.

Elméletben bármilyen külső kódolóeszköz használata is megoldható kell legyen a megfelelő specifikációkkal és/vagy kezelőprogramokkal. Ennek a megvalósítását azonban még nem vettem tervbe.

Ez a kliens egyszerre több bitcoin-hálózathoz is tud majd csatlakozni, és több blokkláncot is tud majd kezelni egyidőben. Ez az első lépés afelé, hogy más “dolgokat” (bitDNS?) is beilleszthessünk a bitcoinba (addig is fenn lesz a testneten és a főrendszeren is).

Végül, de nem utolsósorban, úgy döntöttem, hogy funkció-kéréseket is fogadok, így számos további, csekélyebb jelentőségű plusz is várható:

* Konfigurálható tranzakció-nézet (oszlopok és azok sorrendjének megválasztása, stb.), skinezhető GUI (Qt CSS skinekkel), uPnP-támogatás
* Port-randomizálás
* Díjkonfiguráló interfész (tranzakció-elküldésekhez és blokkgeneráláshoz)
* Automatikus frissítés a hivatalos verziókhoz

A fejlesztések teljes listája a wikin olvasható.

Kiba: Kicsit mintha már sok lenne a jóból. Nem lesz így túl bonyolult a QBitcoin kezelése?

MagicalTux: Itt a modularitás és az opcionalitás a kulcsszavak.

Bár e funkciók mindegyike (vagy legalábbis mindegyik, amelyiket elfogadtam) be lesz építve a QBitcoinba, ténylegesen engedélyezve csak akkor lesznek, ha nem okoznak felesleges bonyodalmakat a felhasználónak.

A tárcakódolás például alapállásban nem lesz aktiválva, de az ember bármikor bemehet a beállításokba, ráklikkelhet a “Biztonság”-ra, és megadhat egy tetszőleges jelszót. Innentől kezdve a kliens minden tranzakció elindítása előtt kérni fogja a jelszót. Ha pedig az ember ezt mégis túl macerásnak találja, akkor ugyanígy visszamehet a beállításokhoz, és kikapcsolhatja a kódolást.

Bízom benne, hogy mindenki megtalálja, aktiválja és használja majd mindazt, amire szüksége van; ebben segítségükre lesz egy kimerítő részletességű dokumentáció és számos szemléltető screenshot is.

Kiba: Ennyi opció és még több kombinációs lehetőség, amelyeket nyilván nem lehet mind letesztelni; nem tartasz tőle, hogy a konfigurációs lehetőségek sokrétűsége tömegével vonja majd maga után a bugokat is?

A rendszer nagyrészt moduláris, tehát többnyire az egyes funkciók sincsenek hatással egymásra. A kért pluszok pedig leginkább csak a GUI-ra vonatkoznak (kozmetikai jellegűek), így alig vannak hatással bármire is egyáltalán.

Az olyan nagyobb jelentőségű funkciók esetében azonban, mint amilyen például a tárcakódolás, más megközelítést választottam. A tárcakódolás folyamatosan “aktív” lesz, csak épp az RSA-kódoláshoz használt kulcs az eredeti formájában lesz eltárolva, így azonnal tudni fogok róla, ha bármilyen probléma merül fel az ECC titkos kulcs-kódolással (én magam ugyanis a tesztverziókhoz szinte biztosan nem fogok jelszót használni, mivel túl macerás lenne újra és újra begépelni mindig).

Végül, de nem utolsósorban, a kód nagy részét tesztelni fogom, valgrinddal keresve az esetleges memóriaszivárgásokat és callgrinddal vizsgálva a kódlefedettséget. És bár nagy valószínűséggel nem fogok külön-külön letesztelni minden egyes lehetőséget, a bétaidőszakban felfedezett bugoknak és hibáknak azért igyekszem utánajárni.

Kiba: A tárcakódolás lehetősége jól hangzik. Azonban többen is rámutattak már a fórumon, hogy ez hamis biztonságérzetet ad az embernek, mivel még az ilyen védelmet is könnyen kijátszhatják a begépelt jelszavakat figyelő trójaiak. Hogyan lehet kezelni ezt a problémát, ha lehet egyáltalán?

MagicalTux: Mindannyian jól tudjuk, hogy nincs olyan védelem, amit ne lehetne kijátszani. Úgy értem, az ember rendszeresen begépeli például a bankszámlája adatait és számos más magánjellegű információt is saját magáról, így például a közeli hozzátartozóinak, vagy épp a bankjának írott emailekben, stb.

Bármilyen védelmet fejleszt is ki az ember, mindig lesz valaki, aki majd valahogyan feltöri azt.

Biztonság terén tehát mindössze annyit tehetünk, hogy annyira megnehezítjük ennek a bizonyos valakinek a dolgát, amennyire csak tudjuk. Ha valaki hozzáfér valaki másnak a gépéhez, úgy persze, hogy el is tudja lopni az illető tárcáját. Ha kódoljuk a tárcát, akkor a tolvajnak előbb még a jelszót is ki kell lesnie. Használhatnánk akár hardveres kódolást is (például RSA USB-kulcsokat), de a tolvaj ezeket is ellophatja.

Bármit is csinálunk tehát, a tárca akkor is csak az marad, ami – egy tárca… amit azért persze sokféleképpen védhetünk. Bár a kódolásnak inkább a biztonságos tárca-backup a célja, azért akkor is segít, ha az ember úgy viszi szerelőhöz vagy úgy adja el a gépét, hogy rajta felejti a tárcáját.

Az alapprobléma azonban még így is az, hogy senkit nem tudunk megvédeni saját magától. Próbáljuk ugyan, keményen, de egyszerűen képtelenség lefedni minden lehetséges esetet. (Gondolkodtam OTP-eszközökön is, de ez túl költségesnek tűnik.)

De akárhogy is, majd meglátjuk, hogyan reagál a nép erre a lehetőségre, és fűzünk megfelelő magyarázatot is a tárcakódolás aktiválásához. Végső soron csak azzal segíthetünk igazán a felhasználón, ha kellőképpen kitanítjuk.

Kiba: Mikorra várható a QBitcoin első nyilvános verziója?

MagicalTux: Az első bétaverziót január közepére-végére tervezzük, magát a bétaidőszakot pedig innentől kezdve néhány hetesre vagy hónaposra, aszerint, hogy mennyi hibát találnak a tesztelők, és eztán állítjuk össze az első stabil verziót.

Ezek az időpontok persze egyelőre csak tervek, és bukkanhatnak még fel olyan problémák, amelyek későbbre tolhatják a béta vagy a stabil verzió megjelenését.

Kiba: Feltűnt, hogy a QBitcoin wiki-szócikkében szerepel egy adománycím is a projekthez. Ez azt jelenti, hogy adományokra építed az egész projektet, vagy vannak vele komoly kereskedelmi terveid is?

MagicalTux: Maga a QBitcoin 100%-ban ingyenes lesz, a szoftver pedig nyílt forráskódú, valószínűleg valamiféle BSD-alapú, korlátozásoktól mentes licensszel.

A tervezett szolgáltatások között szerepel azonban egy előfizetéses tárcabackup-lehetőség is a tárcájukat kódoló felhasználók számára.

Előfizetni közvetlenül a QBitcoinból lehet majd, néhány olyan alapinformáció megadásával, mint login/email/jelszó, viszonylag alacsony ár ellenében – talán 1 bitcoin/hó, vagy valahogy így. A biztonsági mentés automatikusan zajlik, így a felhasználónak ezen túl már semmi egyéb teendője nem lesz. A kliens automatikusan továbbítja a szerverhez a frissen generált címeket is.

A biztonsági másolat a ténylegesen használatban lévő tárcától mindössze annyiban fog különbözni, hogy csak a titkos kulcsok kerülnek elmentésre, a nyilvánosak nem, így a backup szerver nem tudja majd összekapcsolni a kulcspárokat, és a tárcák tartalma is ismeretlen marad előtte.

Persze bárki konfigurálhat magának saját backup-szervert is, eltérő árakkal vagy akár ingyenesen is, de mivel a miénk lesz az alapbeállítás, így bizonyára akad majd néhány kuncsaftunk – annál is inkább, hogy garantáljuk a sziklaszilárd védelmet; például különböző országokban tároljuk a biztonsági mentéseket, stb.

Innentől pedig már igen könnyen helyreállíthatja az ember a tárcáját a biztonsági mentésből: csak el kell indítania egy frissen telepített QBitcoint, megadnia a nevét és a jelszavát, letölteni a tárcáját, megadni annak a jelszavát, és pillanatokon belül használhatja is újra. Ha ellopták a tárcádat, akkor melegen ajánlott az azonnali frissítés (új cím, meglévő pénz átküldése oda, régi cím törlése… a későbbiekben megpróbálom majd automatizálni ezt a folyamatot is).

(Megjegyzendő, hogy a logint és a jelszót nem tárolja a kliens, csak egy biztonságos jelet, így az újonnan telepített QBitcoin hitelesítésével az előző kliens automatikusan “leválasztásra” kerül.)

Kiba: Milyen platformokra jelenik majd meg a QBitcoin? Lesz például iPhone-os és Androidos változat?

MagicalTux: Az első kiadás csak az asztali gépek platformjaira összpontosít (Mac/Linux/Windows), de a nem-GUI-részeknek elvben futniuk kell mobil eszközökön is.

Tudtommal a Qt (amelyet felvásárolt a Nokia) működik a Nokia Symbian készülékein és Windows CE 5.0-n is. Egy időben voltak tervek arra, hogy más unixos mobil eszközökkel is kompatibilissé tegyék a Qt-t, így például az iPhone-nal (de tekintve, hogy az Apple és a Nokia nincs túl baráti viszonyban, ez nem tűnik túl valószínűnek) és az Androiddal. Ezen túlmenően már nem kísértem figyelemmel a döntéseket és a fejleményeket, így nem tudom, hogy azóta mennyit változott a helyzet, bár gyanítom, hogy nem sokat. A daemon-verziónak azonban így is jól kell működnie, mivel ezek mind UNIX-alapú eszközök.

Úgy tűnik, a Qt támogatja még a Maemót és a MeeGót is, bár arról fogalmam sincs, hogy ezek mifélék. A részleteket lásd itt.

Kiba: Jelen interjú elején említettél olyan lehetőségeket is, mint több bitcoin-lánc és BitDNS. Ez azt jelenti, hogy a QBitcoin sokkal többre lesz képes pusztán a bitcoin-valuta kezelésénél?

MagicalTux: Az elsődleges cél az általános bitcoin-kezelés. Hosszú távú cél az általános kivitelezés felhasználása más célokra is.

Ha egy kliens egyszerre több láncot is tud kezelni, úgy értelemszerűen egyszerre dolgozhat mindkét lánc blokkjainak megoldásán is.

Nem sokkal az első néhány kiadás utánra tervezek egy egyszerű “BitDNS-szerű” megoldást – ez azonban eleinte inkább csak példaértékű lesz, és valószínűleg eléggé eltérő attól, amire az emberek számítanak. További részletekkel azonban ezen a ponton még inkább nem szolgálnék, mivel már továbbfejlesztették az eredeti BitDNS-specifikációt, és nem vagyok tisztában a jelenlegi helyzetével. Csak azt tudom, hogy ezt hogyan fogom kivitelezni.)

Kiba: Az interjúzáró, utolsó kérdés: a jelen interjú első kérdésére adott válaszodban említetteken túl vannak még más, szintén a Bitcoinhoz kapcsolódó projektjeid és vállalkozásaid is?

MagicalTux: Egyelőre nincs semmi más, de gyanítom, hogy a QBitcoin első kiadása számos új lehetőséget nyit majd meg. Egyelőre igyekszem stabillá tenni a QBitcoint, és majd csak azután térek rá az új ötletekre. Valószínűsítem, hogy a következő fókuszpont a bitcoin-tranzakciók felgyorsítása lesz (például mindössze néhány ms-ra); már ehhez is van pár ötletem.

Bocs, hogy ilyen sokat beszéltem, de nem mindig olyan egyszerű ennyi mindennel foglalkozni egyszerre. 🙂 Remélem, hamarosan találkozunk újra. 🙂

Forrás: Bitcoin Weekly

A lap szövege Creative Commons Nevezd meg! – Ne add el! – Így add tovább! 3.0 licenc alatt áll, felhasználni csak forrásmegjelöléssel, és ide mutató linkkel szabad.