Secure Smart Contract Code Synthesis with Transformer Models
Abstract
Å lage smart kontrakter (SK) er vanskelig. Å lage dem sikre er enda vanskeligere. Automatisk kodegenerering regnes av mange som den "hellige gral" innen datavitenskap. Nylige fremskritt innen transformer modeller har vist stort potensiale innen syntese av kode fra kodekommentarer. Imidlertid er det mist like viktig å vite hvordan disse modellene best kan brukes. I denne oppgaven undersøkes det: hvordan generere SK kode automatisk med transformerbaserte språkmodeller, ved bruke kommentarer for å veilede kodegenereringen? På grunn av den økonomiske og uforanderlige naturen til blokkjede teknologi, er sikkerhet i SKer av ytterste viktighet. Denne oppgaven undersøker også: hvordan generere sikker SK-kode med transformatorbaserte språkmodeller? En designvitenskapelig forskningstilnærming brukes for å besvare disse forskningsspørsmålene. For automatisk syntetisering av SK-kode er 6 milliarder parametermodellen GPT-J av EleutherAI finjustert på SK-koden. For denne oppgaven er det for øyeblikket største datasettet med ekte SK kode konstruert, som inneholder hele 186,397 kontrakter. For å evaluere tilnærmingen til kommentarhjelp for å generere kode, ble den opprinnelige koden brukt som fasit. Denne ble deretter sammenlignet med den genererte koden, og forskjellene deres ble målt ved å bruke BiLingual Evaluation Understudy (BLEU) skåren. Resultatene av evalueringen viser at denne tilnærmingen resulterer i en BLEU-skår på 0,557, som er bedre enn nåværende sate-of-the-art. For å generere sikker SK-kode med transformatorbaserte språkmodeller, foreslås en ny metode kalt security conditioning. Fra både automatisk og manuell evaluering av teknikken viser evalueringsresultatene at security conditioning produserte sikker kode. Writing Smart Contracts (SCs) Smart Contracts are hard. Writing secure SCs is even harder. Automatic code generation is by many considered the ”holy grail” in the field of computer science. Recent advances in transformer models have shown great potential in the area of synthesizing code from code comments. However, it is just as important how these models are best put to use. In this thesis, it is investigated: how to automatically generate Smart Contract code with transformer-based language models, by inputting comments to guide the code generation? Due to the monetary and immutable nature of blockchain, security in SCs is of uttermost importance. This thesis also investigates: how to generate secure SC code with transformer-based language models? A design science research approach is adopted for answering these research questions. For automatically synthesizing SC code, the 6 billion parameter model GPT-J by EleutherAI is fine-tuned on SC code. For this task, the currently largest dataset of real SC code is constructed, containing 186,397 contracts. To evaluate the comment-aid approach to generate code, the original code was used as the ground truth. This code was then compared with the generated code, and their differences were measured using the BiLingual Evaluation Understudy (BLEU) score. Results of the evaluation show that this approach results in a BLEU score of 0.557, which is beyond the state-of-the-art. For generating secure Smart Contract code with transformer-based language models, a novel method named security conditioning is proposed. From both automatic and manual evaluation of the technique, the evaluation results show that security conditioning produced secure code.