Moderna kryptovalutasystem, såsom Ethereum-projektet, möjliggör komplexa finansiella transaktioner genom skript som kallas smarta kontrakt. Dessa smarta kontrakt utförs många, många gånger, alltid utan verklig samstämmighet. Först, alla smarta kontrakt utförs seriellt av gruvarbetare innan du lägger dem till blockkedjan. Senare genomförs dessa kontrakt serievis på nytt av validerare för att kontrollera att de smarta kontrakten utfördes korrekt av gruvarbetare. Serieell exekvering begränsar systemgenomströmning och misslyckas med att utnyttja dagens samtidiga multicore- och klusterarkitekturer. Icke desto mindre verkar det krävas en serieutförande: kontrakt delar stat, och kontrakt programmering språk har en seriell semantik. Detta dokument presenterar ett nytt sätt att tillåta gruvarbetare och validerare att utföra smarta kontrakt parallellt, baserat på tekniker anpassade från programvara transaktionsminne. Gruvarbetarna utför smarta kontrakt spekulativt parallellt, vilket tillåter icke-konflikterande kontrakt att fortsätta samtidigt, och "upptäcka" en seriellt samtidig schema för ett block transaktioner, Detta schema fångas och kodas som en deterministisk gaffel-join program som används av validerare för att återexekvera gruvarbetarens parallella schema deterministiskt men samtidigt. Vi har bevisat att validerarens avrättning är likvärdig med gruvarbetarens avrättning. Smarta kontrakt riktmärken körs på en JVM med ScalaSTM visar att en hastighetshöjning på 1,39× kan erhållas för gruvarbetare och 1,59× för validerare med bara tre samtidiga trådar.
Dickerson m.fl. presentera en lösning för att tillåta gruvarbetare och validerare att utföra smarta kontrakt samtidigt REF.
Adding concurrency to smart contracts
{'venue': 'Distributed Computing', 'journal': 'Distributed Computing', 'mag_field_of_study': ['Engineering', 'Computer Science']}