Hibatűrő okosszerződések N-verziós programozással

Tanszéki konzulens: 
A doktorandusz fényképe
doktorandusz
Szoba: IB414
Tel.:
+36 1 463-3579
Email: bpeter (*) mit * bme * hu

A kiírás adatai

A téma státusza: 
Aktív (aktuális, lehet rá jelentkezni)
Kiírás éve: 
2025
A kiírás jellege: 
önálló labor, szakdolgozat/diplomaterv

A kriptovalutákat kezelő blokkláncokat programozó okosszerződések (smart contract) hibái jól ismerten súlyos következményekkel járhatnak (lásd pl. DAO Hack 2016 → ~50 millió USD), ami miatt évek óta komoly kutatások folynak az okosszerződések elleni támadások megakadályozására. A születő megoldások elsöprő többsége tervezési idejű megközelítést kínál (tesztelés, statikus analízis, különböző formális módszerek, stb.), mivel a publikus platformokon (pl. Ethereum) nem alkalmazhatók jól futásidejű mechanizmusok.

Ezzel ellentétben a vállalatközi együttműködésekre használt, ún. „konzorciális” blokkláncok eltérő működési modellje miatt ezekben alkalmazhatók lennének futásidejű hibatűrési módszerek is.

Egy ilyen lehetséges technika az N-verziós programozás (N-version programming, NVP), melynek során (leegyszerűsítve) egy közös specifikáció alapján többször implementáljuk ugyanazt a szoftvert, különböző módokon (pl. más programnyelveken), majd futásidőben ezeket mind lefuttatjuk és összevetjük az eredményeket.

A nagy nyelvi modellek (large language model, LLM) hallucinációi elleni küzdelemben egyébként használnak már NVP(-szerű) módszereket. A témának része lehet az okosszerződések futásidejű hibatűrésére LLM-támogatott módszerek beépítése is.


A feladat egy N-verziós programozást támogató keretrendszer fejlesztése a Hyperledger Fabric vállalati blokklánc platformhoz.

A téma során elsajátíthatóak a blokkláncok és okosszerződések alapjai; blockchain előképzettség nem szükséges. Az okosszerződések programozása Fabricben JavaScript/TypeScript, Java, és Go nyelveken lehetséges. Szükség lesz Dockerre is, mivel Fabricben az okosszerződések tipikusan konténerekben futnak.

© 2010-2025 BME MIT | Hibajelentés | Használati útmutató