Smarta kontrakt kan koda juridiska kontrakt skrivna på naturligt språk för att representera avtalsparternas gemensamma överenskommelser och avsikter. De frågor och forskningsutmaningar som rör validering och verifiering av smarta kontrakt, särskilt de som kör över blockkedjor och distribuerade liggare, undersöks. T han värld av kommersiella datorer och IT har varit abuzz nyligen om en ny teknik, kallas olika blockkedjor, distribuerade liggare, eller delade liggare. Den underliggande blockchain tekniken uppfanns 2008 för att stödja skapandet och utbytet av Bitcoin cryptocurrency utan behov av en kontrollerande central myndighet. 1 Blockchain-plattformen och tillhörande kryptovaluta genomfördes och lanserades 2009. Under åren sedan dess har människor sett många potentiella tillämpningar för sådan teknik, särskilt inom finans och förvaltning. Inom finanssektorn har till exempel mer än 80 globala finansinstitut ingått partnerskap i R3-konsortiet, som nyligen offentliggjorde en konceptuell ram, Corda, för smarta finansieringskontrakt. 2 För alla deltagare gamla nog, graden av spänning matchas endast av det för den framväxande World Wide Web i mitten av 1990-talet. En distribuerad liggare är en delad databas, helt replikerad vid flera autonoma platser eller noder, och utan någon nod som har central eller privilegierad kontroll. Uppdateringar av databasen kräver utförande av en överenskommen multinode beslut protokoll; normalt, data kan bara bifogas men inte raderas från den delade databasen. En blockchain är en speciell typ av distribuerad liggare där data samlas in i "block" innan den läggs till i den delade databasen, och blocken kopplas samman för att bilda en enda sekventiell kedja. Kryptografiska metoder kan användas för att kryptera data, auktorisera data för uppladdning och kedjeblock tillsammans. Bitcoin blockchain uppfanns för att utfärda, utföra och registrera transaktioner av en cryptocurrency, Bitcoin. En distribuerad liggare kan också använda eller stödja en elektronisk valuta, även om databasen är avsedd för andra ändamål.  Vi kan besvara denna fråga genom att jämföra blockchain-teknik med webben. Webben gjorde det relativt enkelt att dela information mellan en person eller organisation och andra, antingen genom att placera informationen direkt på en webbsida, eller genom att ge tillgång till informationen via en webbsida (t.ex. när den lagras i en databas). En webbsida är därför lik en svart tavla, där en person-styrenheten på servern-har befogenhet att skriva innehåll på brädet, samt att radera innehåll från den. Om webbsidan är offentlig kan vem som helst läsa styrelsens aktuella innehåll. Om webbsidan kräver åtkomsttillstånd (t.ex. prenumerationssajter) kan möjligheten att läsa innehållet begränsas till en privat grupp. Under denna metafor, distribuerade ledare teknik (DLTs) ger svarta tavlan läsare med några extra befogenheter, på den möjliga bekostnad av författarens befogenheter. Distribuerade liggare tillåter endast innehåll att skrivas till svarta tavlan om läsarna först samtycker, enligt vissa fördefinierade omröstningsregler. För att till exempel lägga till innehåll kanske alla läsare, en majoritet av läsarna eller en viss nominerad läsare måste hålla med. Brädets innehåll läggs till på ett sätt som länkar dem kryptografiskt till tidigare brädinnehåll, vilket bildar "kedjan" i blockchain. Dessutom är styrelseinnehåll omöjligt att radera. I själva verket, "radering" kan bara vara möjligt genom att starta en ny styrelse som är samma som den ursprungliga svarta tavlan fram till den punkt precis innan där innehållet ska raderas. Eftersom denna åtgärd skapar två parallella kedjor som är identiska med den punkt där de skiljer sig, kallas processen forking blockchain. Dessa ytterligare rättigheter för läsare skapar några intressanta konsekvenser, som förklarar mycket av spänningen om blockchain teknik. Den första konsekvensen är att alla som skriver på styrelsen vet att de andra deltagarna (läsarna) har sett innehållet: de var tvungna att ha läst det för att rösta om det innan det laddades upp till styrelsen. Så alla parter till den distribuerade liggaren vet samma innehåll (dvs. deltagarna har "delat tillstånd" för variablerna på liggaren) och alla vet att alla vet detta, och så vidare. På spelteorins språk har 3 deltagarna gemensam kunskap, vilket gör det omöjligt för en deltagare att på ett trovärdigt sätt avvisa en delad liggares innehåll vid en efterföljande tidpunkt. För det andra innebär kedjningen av innehållet att alla ändringar av tidigare innehåll kräver ändringar av allt senare innehåll. Sådana ändringar kan inte ske i smyg, och som alla föreslagna skrivande till styrelsen skulle kräva förhandsgodkännande. Därför är de tidigare protokollen i praktiken oföränderliga. För det tredje lagras den delade liggaren inte bara på en maskin, utan i stället lagras kopior lokalt på var och en av deltagarnas maskiner. Varje läsare har en kopia av styrelsen, och dessa kopior förblir i synk med varandra. Detta skapar betydande utmaningar för alla som vill korrumpera eller ändra innehållet, eftersom varje deltagarmaskin skulle behöva hackas. Dessa egenskaper är ursprunget till påståendet att DLTs eliminerar behovet av förtroende. Två eller flera parter som deltar i en transaktion online måste vara säkra på att åtagandena kommer att uppfyllas och att enskilda åtgärder för flerstegstransaktioner inte kommer att upphävas. Traditionellt sett skulle parter som inte kände varandra använda en ömsesidigt betrodd tredje part, ofta en advokatbyrå, bank eller annan reglerad enhet, för att hjälpa till med detta genom att till exempel vittna om löften och genom att hålla medel i spärrning tills andra steg i en transaktion avslutats. DLT ser till att alla löften och åtgärder bevittnas av alla deltagare i den gemensamma liggaren, inte bara parterna i transaktionen, och gör det svårt eller omöjligt för någon part att därefter avvisa, korrumpera eller vända på de åtgärder som vidtagits. Naturligtvis, deltagarna kanske inte behöver en betrodd tredje part för att bevittna sina enskilda transaktioner, men de kommer fortfarande att behöva lita på den programvara som används. Allt uttrycksfullt i digital form kan skrivas på en elektronisk svart tavla. Förutom transaktionsdata, kan en distribuerad liggare också hålla datorprogram. Sådana program kunde använda data från blockchain poster som ingångar och sedan generera utgångar som i sin tur skrivs till samma eller en annan blockchain. Om de lagras på en blockchain och utförs, kommer deras utförande att ske lokalt vid varje deltagare nod ansluten till blockchain. Eftersom många av de applikationer som förutses för distribuerade liggare innebär samordning mellan olika personer eller organisationer, en uppenbar tillämpning av sådana datorprogram är det automatiska genomförandet av affärsflöden över flera organisationer. Den lagliga förflyttningen av fysiska varor från ett land till ett annat kräver till exempel vanligtvis export- och importtillstånd från de berörda länderna. Associeras med dessa tillstånd kan vara skatter eller avgifter, som bevis på betalning krävs för att de relevanta tillstånden ska beviljas. Försäljare och köpare av dessa varor kan behöva överbryggande finansiering för att täcka förseningar i mottagandet av betalningar eller varor, och de kan köpa försäkringar av olika former längs kedjan. Det kan finnas flera parter: leverantörer och köpare av varor, transportörer, banker som tillhandahåller handelsfinansiering, försäkringsbolag, olika länders tullmyndigheter och så vidare. Arbetsflödet kunde åtminstone i teorin hanteras av en sekvens av datorprogram som automatiskt körs som successiva mellanliggande milstolpar i de fysiska varornas resa nås. Sådana program är exempel på smarta kontrakt, en term som uppfanns av Nick Szabo innan Blockchain utveckling. Enligt Szabo är ett smart kontrakt "en uppsättning löften, specificerade i digital form, inklusive protokoll inom vilka parterna utför dessa löften." 4 I den mån sådana program förkroppsligar avtal mellan två eller flera organisationer, är distribuerade liggare ett naturligt hem för dessa program. Fördelen med att sätta register över dessa händelser och de kontrollerande programmen på en distribuerad liggare är att de olika parterna kan alla se dessa program och övervaka handelsflödet framsteg som det händer. Dessutom spårar liggaren förvaringskedjan för de berörda tillgångarna och registrerar deras härkomst. Dessutom har smarta kontrakt på distribuerade liggare ofta kapacitet att göra realtidsuppgörelse för de tillgångar som är inbäddade eller representerade i liggaren. Medan en blockchain är ett register över vem som äger vilka mängder av, till exempel, en cryptocurrency, smarta kontrakt på den blockchain kan effektivt reglera överföringen av den cryptocurrency i sin ursprungliga form. Medan tillgångar dematerialiseras och sedan registreras på en blockchain, smarta kontrakt kan utföra samma funktion. Dessa smarta kontrakt har en funktion som de inte skulle ha haft om de hade registrerats på ett annat medium än det medium där dessa tillgångar finns. Denna funktion är en viktig orsak till den störande karaktären av distribuerade liggare och smart kontrakt teknik inom finansiering. Eftersom smarta kontrakt förkroppsligar och utför arbetsflöden, kan de potentiellt användas för automatisering av regulatoriska arbetsflöden, till exempel rapportering och övervakning av nödvändiga data, kontroll av efterlevnad, godkännande (eller inte) av en tillsynsmyndighet, och även uttag och betalning av böter för bristande efterlevnad. Sådana tillämpningar, som Philip Treleaven kallade RegTech, har en betydande potential för tillämpning av AI på statliga och regulatoriska verksamheter. Som med distribuerade liggare själva, eftersom tekniken fortfarande växer fram, smarta kontrakt natur och form är olika. Till exempel, utformningen av smarta kontrakt kan skilja sig avsevärt beroende på om den distribuerade liggaren som de utför är tillåten (eftersom detta påverkar förmågan att identifiera deltagare), och om liggaren har en intern kryptovaluta. Sean Murphy och Charley Cooper har föreslagit ett spektrum av smarta kontraktsdefinitioner enligt i vilken utsträckning kontraktet förkroppsligar datakod kontra naturligt språk (se figur 1).  Det finns en roll för dokument som är skrivna på naturligt språk. Dokumentet kan kopiera koden eller komplettera den. Även längst till vänster, där det inte finns något naturligt språkdokument, kommer koden att verkställa vissa avsikter från de berörda parterna baserat på vissa delade överenskommelser, vilka båda kan vara implicita. Från detta spektrum kan vi identifiera tre komponenter: elektronisk programkod, ett naturligt språkkontrakt, och parternas gemensamma förståelse och avsikter. Varje särskilt smart kontrakt kan omfatta en kombination av de tre komponenterna, och varje komponents roll kan variera, som anges i figur 1. För att säkerställa att smarta kontraktsprogram kör korrekt, har vi identifierat flera klasser av frågor-listade nedan-motsvarande relationerna mellan de olika komponenterna. Figur 2 illustrerar ytterligare dessa komponenter och relationer. Dessa frågor visar varför vi kan avfärda smarta kontrakt som saknar en naturlig språkkomponent: om den enda naturliga språk intentionen är att köra koden, då frågor 1-5 blir triviala och alla möjliga resultat valideras. Detta skulle lämna smarta kontraktsägare i en situation där de till synes önskade saker de inte hade någon förkunskaper om. Till exempel, om det fanns ett fel i koden (som är mycket troligt), skulle ingen utvecklare eller deltagare känna till felet, men genomförandet av felet skulle nu bli avsett av de smarta kontraktsägarna utan deras förkunskap. Eftersom det inte går att tänka sig något omedvetet ser vi att ett smart kontrakt utan åtminstone ett litet naturligt språk inte är förnuftigt. I terminologin som används av IEEE handlar 6 frågor 1 och 2 om validering-respektive, validering av ett naturligt språkkontrakt och validering av ett enskilt datorprogram. Frågorna 3 och 4 handlar om verifiering av ett programs egenskaper. Fråga 5 gäller kontroll av en samlings eller ett programsystems egenskaper. Ett exempel kan illustrera dessa frågor. De senaste erfarenheterna från DAO, en decentraliserad autonom organisation, är förmodligen välkända för läsarna. 7 Denna öppen källkod datorprogram skapades för att köra över Ethereum distribuerade liggaren med målet att samla crowdsourced fonder för investeringar i nystartade företag. Under hela maj 2016 gav cirka 11.000 investerare cryptocurrency då värderat till mer än $150 miljoner dollar. Även om koden gjorde vad den var avsedd att göra (fråga 3), användes den också för att göra något som inte var avsett (fråga 4): en rekursiv anropssårbarhet utnyttjades av en illvillig person (eller ett team) för att överföra många av de investerade medlen till ett konto som han eller hon (eller de) kontrollerade. Så, programkoden gick korrekt men på ett sätt oavsiktligt av utvecklarna. På grund av inbyggda förseningar i överföringar av medel, deltagare gemenskapen kunde vända detta, men bara genom att skapa en gaffel av Ethereum blockchain, det vill säga, en annan whiteboard gaffel före punkten för hacka händelsen. Var och en av dessa fem validerings- och kontrollfrågor skulle kunna besvaras för varje särskilt smart kontrakt genom mänsklig analys och diskussion mellan berörda parter. Den mänskliga expertis som krävs för de flesta smarta kontraktstillämpningar som beaktas i industrin är avsedda att automatisera eller halvautomatisera affärsprocesser, som är kombinationer av sekventiella, parallella eller interleaded åtgärder som vidtas med tiden av flera deltagare. Därför är actionsekvenser och diagram över meddelandesekvenser uppenbara specifikationer och designverktyg för interaktioner och kommunikation mellan deltagare i distribuerade liggare, och deterministiska finita automata (DFA) är en självklar beräkningsmodell för deras verksamhet. DFA ger en extern bild av en deltagares agerande eller ett smart kontrakt i en liggare, utan att modellera sina interna stater. Vi kan formellt modellera de interna tillstånden av enheter (deltagare eller smarta kontrakt), och hur dessa förändras över tiden när de interagerar med varandra, med hjälp av modal logik med temporal och epistemiska operatörer. Till exempel, offentliga tillkännagivande logiker (såsom den som beskrivs av Jan Plaza 10 ) representerar uppdateringar i kunskapen om åhörare när talare gör tillkännagivanden till en grupp. Med sådana logiker kan vi resonera om deltagarnas kunskap över tid och till exempel förstå i vilken utsträckning skadliga koalitioner av noder styr andra deltagares kunskap. En viktig forskningsutmaning kommer att vara att formellt specificera vilka egenskaper som är intressanta för modallogiken så att dessa egenskaper kan verifieras. Spåranpassning kommer att vara en viktig teknik för verifiering av dessa program när de betraktas som en del av en större affärsprocess. 11 I detta tillvägagångssätt använder vi formella modeller (DFA och/eller modal logik) för att skapa förväntade körningar, eller spår, och sedan en annan formell representation, såsom linjär temporal logik, för att genomföra verifieringen. Tekniker från AI planering kan sedan användas för att automatiskt fixa eventuella avvikelser identifieras. För att tillämpa formella kontrollmetoder på de fem frågorna måste vi ha vissa verktyg och metoder på plats. För frågor 2-5 behöver vi en formell (maskinläsbar) representation av ett smart kontraktsprogram och dess effekter på den värld där det finns. Om vi ser ett smart kontrakt som bara ett datorprogram som fungerar på någon verklig eller virtuell maskin, ignorera (för tillfället) att det fungerar på ett distribuerat sätt över separata noder, då är detta enkelt, åtminstone i princip. Program språk semantik teori skiljer flera olika typer av formella representationer av program. Den första typen, axiomatiska semantik, definierar varje program i termer av de förutsättningar som måste finnas innan programmet kan genomföras, och de villkor som gäller efter dess verkställande uttalande. En andra typ av semantik, en operationell semantik, betraktar det smarta kontraktet som beräkningsinstruktioner som fungerar successivt på någon abstrakt eller virtuell maskins tillstånd. Programkommandona ses alltså som statsövergångsoperatörer, och de operativa semantikerna definierar dessa övergångar exakt. Slutligen tilldelas varje språks syntaxelement ett förhållande till ett abstrakt matematiskt väsen, eller dess betecknande, i den betecknande semantiken. Vi försöker sedan resonera om programmets egenskaper genom att resonera om de betecknade matematiska enheterna, och vice versa. Var och en av dessa typer av semantik kan gälla för särskilda klasser av smarta kontrakt när betraktas helt enkelt som program (dvs ignorera blockchain plattform). För de flesta smarta kontrakt bör det vara enkelt att skapa både axiomatiska och operativa semantik. En operationell semantik kommer att vara av största värde när vi undersöker egenskaperna hos samlingar av smarta kontrakt (dvs. när vi försöker besvara fråga 5), eftersom denna semantik bör underlätta analysen av effekter på grund av samstämmighet och interaktion. Det kan vara att kontrollera önskvärda egenskaper hos dessa program kräver ett antagande att de maskiner som kör kontrakten alla har några gemensamma genomförande miljö, möjligen en virtuell miljö. Således bevisar lågnivå S E P T E M B E R 2 0 1 7 55
I tidningen REF förutspår Magazzeni, McBurney och Nash att den formella kontrollen av smarta kontrakt har en utmärkt utvecklingspotential i framtiden.
Validation and Verification of Smart Contracts: A Research Agenda
{'venue': 'Computer', 'journal': 'Computer', 'mag_field_of_study': ['Computer Science']}