Armory – a készülő profi kliens

2012-01-06

Szerző: etotheipi

Hat hónap és feltehetőleg jó ezer óra fejlesztés gyümölcseként mostanra 99%-ban elkészültem az AGPL v3 alatt közreadni tervezett Armory Bitcoin-kliensem első, alfa változatával, melyet így várhatóan a jövő hét folyamán tudok majd közreadni. Azért teszem ezt közzé már most, jó előre, hogy mindenki felkészülhessen és hogy ha bárki szeretne segíteni az alfa szintű tesztelésben és a fordításban (compiling), akkor azok jelentkezhessenek.

(FIGYELEM: Az Armory első kiadása még abszolút tesztverzió és nagyon erőforrás-igényes lesz, ebből következően nem ajánlható mindenkinek. Gyengébb gépekre majd csak a néhány hónap múlva várható béta változat lesz optimalizálva. További figyelmeztetéseket lásd lent.)

Az Armory (= Fegyvertár) egy python-alapú kliens (C++/SWIG háttérrel a blokklánc-műveletekhez), amit teljes egészében arra terveztem, hogy nyújtani tudja mindazokat a funkciókat és lehetőségeket, amelyekről az elmúlt hónapok során esett szó itt a fórumokon, de amelyek mindeddig egyetlen más kliensben sem kerültek ténylegesen megvalósításra. És bár a nevezett funkciók egy része már kliensekben is megtalálható, mégsincs egyetlen olyan másik sem, amely mindezeknek akár csak a felével is rendelkezne egyszerre. Jelenleg ez lesz messze a legfejlettebb Bitcoin-kliens!

Funkciók:

* Többtárcás interfész: Egyszerre kezelhetsz annyi tárcát, amennyit csak akarsz. Az Armoryt eleve úgy terveztem, hogy korlátlan mértékben és mennyiségben tegye lehetővé több tárca egyidejű kezelését.
* Determinisztikus tárcák nyomtatási lehetőséggel: Készíthetsz nyomtatott biztonsági másolatot a tárcádról, így akár minden egyéb féle és fajta backupolást is végleg elfelejthetsz. Amikor létrehozol egy új tárcát, csak kapcsold be a nyomtatódat és jelöld be a “Paper Backup” jelölőnégyzetet.
* Csak megfigyelt tárcák: Lehetőséged nyílik olyan tárcák használatára, amelyekkel generálhatsz ugyan címeket és ellenőrizheted, hogy rendben megérkeztek-e rá a fizetések, de költeni nem költhetsz belőlük, csak figyelheted rajtuk a számok alakulását. Az ilyen tárcákat tárolhatod egy teljesen offline gépen, és biztonságban kezelheted egy online gépről. Mivel pedig ennek a tárcának a titkos kulcsa még csak közelébe sem kerül a hálózatnak, így egyetlen hacker sem lophatja el azt tőled soha! (Meglátásom szerint ez a funkcionalitás az üzlettulajdonosoknak jön majd nagyon jól: így minden “pénztárgépüknek” lehet egy csak megfigyelt tárcája a kifizetések begyűjtéséhez és ellenőrzéséhez, amelyeknek a titkos kulcsait pedig az üzlettulajdonos őrzi otthon vagy egy széf biztonságában. Így a hackerek mellett az alkalmazottak sem lophatnak el egyetlen fillért sem.)
* Tárcakódolás GPU-rezisztens kulcsderiváló funkcióval: Helybeni AES256-os kódolás. A kódkulcs scrypt-alapú algoritmussal készül, használhatatlanná téve így a GPU-s gyorsítást a nyers erő-alapú jelszóvégigpróbálgató támadásoknál. A sebesség- és memóriaparaméterek rendszersebesség-teszttel kerülnek meghatározásra.
* Meghibásodásmentes tárcafájlok: A tárcafrissítés logikája garantálja az atomi fájlműveleteket. Bármely nanoszekundumban is üt be egy áramkimaradás, a tárcád automatikusan helyreállításra kerül, amint visszatér az áram.
* Tárcafájlok automatikus hibajavítása: Beépített védelem a merevlemezed bit-flip hibáival szemben.
* A VALAHA IS létezett legkönnyebb offline tárcakezelés: A saját BIP 0010-mal az Armory offline gépen is futtatható anélkül, hogy szüksége lenne a blokkláncra. Offline csak a netet soha nem érintő tárcákat kezeljük és USB-sen közvetítendő tranzakciócsomagokat írunk alá. Blokklánc nélkül nagyjából minden rendszeren futtatható abnormális memóriaszükséglet nélkül. Mi több, még ahhoz is elég egyszerű lesz az egész, hogy külön útmutató nélkül, magától is kitalálja mindenki a működését! (Persze azért rövidesen lesz hozzá útmutató is.)
* Címek importálása és pásztázása: Importálhatsz titkos kulcsokat a (determinisztikus) tárcádba. Pásztázni csak már meglévő tárcacímeket lehet – de használható ugyanez az eljárás a nem megbízható titkos kulcsok importálása helyett is. Támogatja a hex-es, base58-as, valamint a Casascius fizikai bitcoinokban használt mini-titkos kulcs-formátumokat is.
* Személyre szabható SelectCoins-algoritmus: Az Armory érmeválasztó algoritmust használ, amely optimalizálható a névtelenség maximalizálására vagy a tranzakciós díjak minimalizálására.
* Opcionális tranzakciós díjak: Ha szeretnéd, az Armory kiszámolja és hozzáadja a tranzakcióidhoz azt az éppen aktuális minimális tranzakciós díjat, ami már garantáltan elfogadható a bányászok nagy többsége számára. Haladó felhasználók olyan tranzakciókat is elküldhetnek díjak nélkül, amelyekhez pedig egyébként is kellene már valamennyi díj, amennyiben módosítják a konfigurációs fájl idevágó részét. (Ezt szándékosan alakítottam így: lehetőséget akartam teremteni erre az igazán elszánt felhasználóknak, de csak akkor, ha meg is dolgoznak érte; nem akarom, hogy aztán engem hibáztassanak a beakadt tranzakcióik miatt.)
* Felhasználói üzemmód-opciók: “Alap”, “haladó” és “fejlesztő” üzemmódok közül választhatsz, meghatározva így azt, hogy pontosan mennyi és mennyire részletes információáradatot zúdítson rád a kliens. Értelemszerűen az “alap” a legminimálisabb, olyannyira, hogy a funkcionalitása is korlátozott, és csak az alapvető tárcaműveletek és tranzakciók lebonyolításához feltételnül szükséges információkat mutatja meg.
* Megerősítetlen tranzakciók: Kicsit még bugos, de többnyire működik. A béta változatban már ez is sokkal jobban lesz támogatva.
* Hozzáférés a titkos kulcsaidhoz: Semmiféle adatbázis nem ködösíti el a kulcsaidat – mindegyikük egyszerű bináris tárcaformátumban kerül eltárolásra. A kódolatlan adatokat közvetlenül kinyerheted, a kódoltakat pedig – a tárcád megnyitását követően – az alkalmazásba beépített adatvizsgáló párbeszédablakból nézheted meg.
* Fejlesztői eszközök: Részletesen kommentelt Python- és C++-kód, több ezer sornyi egységteszt-kód a teljes könyvtár szinte minden egyes alfunkciójának ellenőrzéséhez. Egyszerű tárcafájlok. A “fejlesztői” felhasználói mód pedig minden adatot a rendelkezésedre bocsát, amire csak szükséged lehet a saját fejlesztéseidhez: blokkláncböngészés, tranzakciószkriptek vizsgálata, stb.
* Windows és Linux: Mindkét rendszerre lefordítva, mindkettőn működik (OSX-ről viszont nincs tapasztalatom). A Windows-os változattal nem foglalkoztam túl sokat, így annál kissé fura lehet az elrendezés.

További információk a honlapomra kerülnek majd fel, ha végre odajutok, hogy azt is beindítsam…

Figyelmeztetés:

Az Armory jelenleg a lehető legmesszebb van a pehelysúlyúságtól, mivel a teljes blokkláncot (ami most már sokkal nagyobb, mint fél évvel ezelőtt, amikor elkezdtem ezt a projektet) RAM-ban tárolja és localhost útján csatlakozik a Satoshi-klienshez. Ennek megfelelően az Armory főhálózaton való használatával legalább 2 GB memóriát veszel igénybe, tehát 4 GB alatti rendszereken valószínűleg használhatatlan is lenne az egész. A béta verzió már “rendes”, önálló alkalmazás lesz. Jelenleg azonban az Armory használatához…
* 4 GB+ RAM-ra lesz szükséged;
* az Armory-nak hozzá kell férnie a Satoshi-kliens által létrehozott blk0001.dat fájlhoz (csak olvasó hozzáférés az új blokkok észleléséhez (általában automatán detektálva));
* egyidejűleg futtatnod kell a Satoshi-klienst is ugyanazon a hálózaton, amelyiken az Armory-t is (fő- vagy teszt-; a Namecoin hálózatán még nem teszteltem);
* a Satoshi-kliensnek szinkronban kell lennie a blokklánccal. Az Armory nem igazán tud “inni a slagból”, ha a kliens épp blokkok ezreit tölti le igen gyorsan…

Rövidtávú fejlesztési tervek:

* Címtárak
* Többaláírásos tranzakciók (ezeknek a kezelése 95%-ban készen van már, csak tesztelni kell a funkcionalitását és megfelelő interfészt kifejleszteni hozzá)
* Táblázatos rendszerezés
* Tálca- és állapotsáv- objektumok
* Opciók/preferenciák párbeszédpanel
* Beépített blokkböngésző
* Útmutatók a kódbázis használatához potenciális fejlesztőknek és módosítóknak
* A Windows-os elrendezés kiigazítása

Fejlesztési tervek a béta verzióhoz:

* Fájlalapú blokklánc-műveletek a RAM-lábnyom 1,5 GB-ról 100 MB-ra csökkentéséhez.
* Önálló hálózatkezelés – igyekszem megoldani, hogy az Armory maga is felkutathassa a peereket a hálózaton, maga is letölthesse magának a blokkláncot, stb., és ne legyen szüksége másik kliensre a háttérben.
* Agykulcs-kezelés – mivel az Armory kevesebb, mint egy másodperc alatt teljes egészében újra tudja szkennelni a blokkláncot, ezért importálhatsz egyes titkos kulcsokat RAMba, kereshetsz elköltetlen kimeneteket és aláírhatsz velük tranzakciókat anélkül, hogy ehhez akár csak egyszer is érintened kellene a merevlemezt! A funkcionalitás adott, csak GUI/interfész kell hozzá.
* Megerősítetlen tranzakciók kezelésének javítása: ezeknek a rugalmasabb és zökkenőmentesebb kezelése érdekében át kell dolgozni a C++ motort.

Hosszútávú tervek:

* Okostelefonos változat a kliensből.
* Kéttényezős hitelesítés mobilról és gépről harmadik felek nélkül, az itt leírtaknak megfelelően. Ha bárki szeretne segíteni, 90%-ban már kész vagyok ezzel, és leginkább csak egy Android/iPhone-alkalmazásra van szükségem a tárcafájl és az ECDSA-aláírás támogatásához.

És még néhány screenshot!

Licensz: Jelenleg az Armory az AGPL v3-as licenszet viseli, de ha valaki szeretné zárt forráskódú szoftverként is fejleszteni, úgy kettős licenszelésről is tárgyalhatunk.

Kérlek titeket, adakozzatok. RENGETEG munkám van ebben, és nem vagyok biztos benne, hogy még meddig hanyagolhatom el a barátnőmet bármiféle kompenzáció nélkül a fejlesztésre fordított időért. Kérlek titeket, használjátok az Armory bitcoin-küldő párbeszédablakába beépített “Donate” gombot. Ha pedig a kliens használata nélkül is nagylelkű kedvetekben vagytok épp, akkor íme a címem 🙂 : 1Gffm7LKXcNFPrtxy6yF4JBoe5rVka4sn1

Mindazoknak, akik érdeklődnek a fejlesztés iránt, itt van az Armory forráskódja. 15e sornyi Python és 8e sornyi C++ . Igen… jó sok!

Forrás: BitcoinTalk

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.