Denna lightning network designer återuppfinner bitcoin smart contracts

Handheld TESLA COIL GUN at 28,000fps - Smarter Every Day 162 (Juni 2019).

Anonim

Bitcoin betraktas vanligtvis inte som blockchain bäst lämpad för självförverkande villkorliga betalningar, mer kända som smarta kontrakt. Medan det stöder grundläggande programmerbarhet för att möjliggöra funktioner som tidslås och multisignatur (multisig) -system, förväntas ofta konkurrerande projekt som Ethereum, Ethereum Classic eller Qtum bättre stödja mer avancerade applikationer.

En ny våg av forskning ifrågasätter emellertid allt mer detta antagande. Scriptless Scripts, ett projekt som spetsas av Blockstream matematiker Andrew Poelstra, använder till exempel kryptografins magi för att flytta smarta kontrakt off-chain, samtidigt som Bitcoins säkerhet utnyttjas, men utan att kräva omfattande smarta kontraktstöd på Bitcoin-protokollet självt.

På samma sätt som konceptuella linjer kan diskreta logkontrakt (DLC) distribuera en annan klass av smarta kontrakt ovanpå Bitcoin. Ett projekt av en av författarna till det ursprungliga Lightning Network-papperet, Tadge Dryja, och nyligen presenterat på Scaling Bitcoin Stanford, kunde DLCs inse blockchain-enforced försäkringsbolag, terminskontrakt, dollarpengade mynt och mycket mer.

Så här fungerar det.

Bets

Många typer av smarta kontrakt koka i huvudsak ner till "satsningar". "

Låt oss exempelvis säga att någon vill försäkra sig mot att han inte kan resa på grund av en potentiell pilotattack. Den personen kan då "satsa" det kommer att bli en strejk. Om det inte finns någon strejk, förloras "insatsen" som om det var en försäkringsbetalning. Om det finns en strejk, å andra sidan, är "insats" vunnet, som en försäkringsutbetalning.

Som ett mer intressant exempel kanske kan man också satsa på priset på BTC relativt den amerikanska dollarn: en terminsmarknad. Om någon bjuder på att BTC-priset kommer att gå ner och BTC-priset går ner, vinner han mer BTC; Om BTC-priset går upp, förlorar han lite BTC. Intressant kan detta struktureras för att säkerställa att den person som kommer in i dessa "satsningar" är praktiskt taget garanterad att sluta med samma USD-värde i BTC oavsett vad som händer. Detta kan i sin tur användas för att realisera ett "stablecoin" med fast USD-värde på Bitcoins blockchain. (Det bör noteras att det finns extrema exempel där detta inte håller på, som ett scenario där Bitcoin misslyckas helt och BTC faller till noll dollar - men i de flesta fall fungerar det.)

Men medan dessa typer av smarta kontrakt är intressanta, de kan inte utföras baserat på blockchainbaserade data ensamma. En blockchain kan inte berätta om piloter är slående eller vad USD / BTC-växelkursen är. Detta kräver datainmatning utanför blockchain, och här kommer "oraklar" in.

Oracle

Oracle är väsentligen betrodda informationskällor; De tillhandahåller data som inte själva kan läsas av en blockchain.Dessa data kan införas i ett smart kontrakt, som sedan kommer att utföras baserat på orakelets inmatning.

Eftersom de typer av smarta kontrakt som beskrivs ovan måste förlita sig på sådana externa datakällor är det ändå meningsfullt att utnyttja förtroendet i Oracle för att förenkla ett smart kontrakt. I stället för mer komplexa lösningar kan orakler exempelvis "kopplas in" till ett relativt grundläggande multisigschema.

Som ett enkelt exempel, låt oss säga att nästa sommar Alice och Bob vill satsa ett bitcoin på FIFA World Cup-finalen mellan Argentina och Brasilien. Alice tror att Argentina kommer att vinna; Bob tror att Brasilien kommer. För att göra denna satsning blockchain-enforceable, skickar Alice och Bob båda en bitcoin till en multisig-adress som kräver att två av tre signaturer spenderar mynt. En av dessa tre nycklar hålls av Alice, en annan nyckel hålls av Bob och den tredje nyckeln hålls av orakeln.

Om Argentina vinner, ska Alice och Bob båda signera en transaktion från denna adress som skickar båda bitcoins till Alice. Eftersom detta bara kräver två signaturer, är Alice och Bobs signaturer tillräckliga, och orakeln kommer aldrig i spel. (Oavsett om Brasilien vinner är det tvärtom: Alice och Bob skriver en transaktion som skickar båda mynt till Bob.)

Ett problem uppstår endast när den förlorande parten - Bob - vägrar att underteckna transaktionen. Det är i detta scenario som orakeln skulle använda sin tredje nyckel för att hjälpa Alice hävda de två bitcoinsna. Viktigt, precis för att detta är ett alternativ, har Bob verkligen ingen anledning att inte skriva. (Detta är ännu mer sant om Alice och Bob lägger på några säkerheter så Bob får tillbaka några av hans BTC om han signerar.)

Oracles underskrift borde helst aldrig behövas alls; Alice och Bob kan slutföra satsningen på egen hand.

Ändå har den grundläggande multisig och orakellösningen sina svagheter. Till exempel skulle orakeln troligen behöva vara involverad i att satsa satsningen; eller åtminstone bör den vara tillgänglig för att fungera som en slags domare när det behövs. Det betyder att oraklet eventuellt kan vara skadat, till exempel om Bob erbjuder orakeln en del av mynt om de samlar sig för att stjäla båda. Och Alice och Bob har inte heller någon integritet från orakeln: orakeln vet exakt vad de satsar på och hur mycket de satsar. Under tiden kan resten av världen berätta att Alice och Bob använde ett oracle för sin satsning (och därför att det var en satsning).

Det här är de problem som diskreta logkontrakt kunde lösa. De behåller fördelarna med den enkla multisig- och orakellösningen - men eliminerar de flesta av sina svagheter.

Betalningskanaler

Som nämnts är Dryja, som för närvarande arbetar för MIT Media Labs Digital Currency Initiative, en av författarna till blixtnätverkets vitbok. Hans DLC-projekt bygger på ett liknande koncept.

En viktig idé bakom blixtnätet är att två personer kan öppna en betalningskanal, så att de kan handla med varandra. En sådan betalningskanal använder Bitcoins grundläggande programmerbarhet (som tidslås och multisig-adresser) och kombinerar den med några kloka tricks för att begå transaktioner till andra transaktioner, alla utan att sända dem till nätverket om det inte behövs.

Med tiden som personerna i kanalen handlar med varandra uppdateras dessa betalningskanaler med nya saldon eller "kanaltillstånd". "Endera parten kan då" släppa "den senaste kanalstatusen på blockchain när som helst och hävda deras balans när de vill. Och viktigare - det är här Bitcoins grundläggande programmerbarhet är levererad - båda parter kan endast säkra sända det senaste kanalläget. Om de försöker fuska genom att sända ett tidigare kanalläge kan deras motpart faktiskt göra anspråk på varje enskilt mynt i kanalen.

DLC fungerar på samma sätt. Men där en betalningskanal för blixtnät endast tillåter de berörda parterna att sända det senaste kanaltillståndet begränsar DLCs dem till att sända bara kanaltillståndet som återspeglar det rätta resultatet av en satsning.

Här kommer orakeln in - men den här gången kombineras med några fina matte tricks.

Oracle Signature

I motsats till 2-of-3 multisig-system där oracles fungerar lite som domare, ser oracles i DLC mer liknar sändare. För vår VM-satsning skulle det vara meningsfullt att orakeln är en sportbettingstjänst, en fotbollsnyhetswebbplats, kanske FIFA eller en annan enhet som sänder vinnaren ändå och det är rimligt betrodd att inte ljuga om det.

Låt oss säga att orakeln i detta fall är en sportbettingstjänst som regelbundet publicerar poängen och vinnaren av VM-finalen på deras hemsida. För att aktivera en DLC behöver samma sportbettingstjänst bara lägga till ett mindre ytterligare steg.

I grunden har detta "broadcast oracle" en offentlig nyckel och en privat nyckel. (En privat nyckel är egentligen bara ett slumpmässigt genererat nummer, medan den offentliga nyckeln är ett till synes slumpmässigt nummer som härrör från den privata nyckeln.) Den här offentliga nyckeln publiceras någonstans, mest sannolikt på vadslagningens webbplats för att någon ska hitta. Den privata nyckeln hålls naturligtvis privat: Detta kan användas av orakeln för att skriva ett meddelande. (En sådan signatur är också ett till synes slumpmässigt nummer men är härledt från den privata nyckeln i kombination med meddelandet.)

De möjliga resultaten av satsningen är också kända: antingen Argentina vinner VM-finalen eller Brasilien vinner . Sportsbettingstjänsten meddelar därför att den kommer att sända en av två mycket specifika meddelanden: "Argentina vann" eller "Brasilien vann. "

Nu är det som är intressant om kryptering i allmänhetskoden att idrottsspelets offentliga nyckel kan användas för att ta reda på vad en signatur av meddelandet -" Argentina vann "eller" Brasilien vann "- kommer matematiskt att se ut. "(Se här," betyder i det här fallet inte att Alice och Bob kan producera signaturen själva, men de kan beräkna vissa matematiska egenskaper som den kommer att ha.)

Eftersom Alice och Bob kan beräkna vad potentialen Oracle signaturer kommer att "se ut", de kan använda den i sin DLC.

Det Diskreta Logkontraktet

Först, innan VM-finalen, betalar Alice och Bob ett bitcoin till en "finansieringstransaktion."Från denna finansieringstransaktion är flera potentiella transaktioner konstruerade - men dessa sänds inte över nätverket.

Här är krypteringen lite komplex.

Vad signaturerna för sportbettingstjänst "ser ut" är smart inbäddad i dessa flera potentiella transaktioner, där varje potentiell signatur möjliggör en annan transaktion. (Speciellt och något okonventionellt, hur signaturerna "ser ut" används som offentliga nycklar i nyckelpar för de olika transaktionerna.)

Med andra ord vet man vad oraklets potentiella signaturer kommer att se ut, Alice och Bob kan konstruera sina betalningskanaler så att de två olika potentiella signaturerna kan användas för att validera två olika kanaltillstånd: en där Alice får två bitcoins och en där Bob får dem.

Den verkliga orakelsignaturen, som publiceras efter VM-finalen spelas, används som privat nyckel för att validera den vinnande transaktionen - och endast den vinnande transaktionen. Om sportbettingstjänsten sänder en signatur för "Argentina vann" kan Alice ta denna signatur, använda den som en privat nyckel (i kombination med sin egen privata nyckel) och hävda de två bitcoinsna från kanalen. Om orakeln skriver ett meddelande för "Brasilien vann", kan Bob. Under tiden, om antingen försöker hävda bitcoinsna utan oracle signaturen, kommer de att misslyckas, och deras motpart kan istället hävda båda mynt.

Vidare, som betalkanaler för blixtnät, kan resultatet av vadslagningen - två bitmynt för Alice om Argentina vinner - nu även sändas av Alice och Bob som en ganska regelbunden multisigstransaktion från finansieringstransaktionen. Och faktiskt, just därför att Alice kan verkställa resultatet med orakelsignaturen ändå, det finns liten anledning till att Bob inte samarbetar.

Till följd av detta är "insatsen" fullständigt blockchain-enforced genom sportbettingstjänstens signatur, medan denna tjänst inte behöver göra något för denna specifika satsning. det behöver inte ens veta att det någonsin ägt rum.

Och särskilt när denna satsning är relativt enkel (antingen Argentina vinner eller Brasilien vinner), kan DLC i verkligheten tillåta mycket mer komplexa scenarier. Exakt eftersom endast en ganska regelbunden multisig-transaktion sänds i slutet, spelar det ingen roll om en "insats" har två, 200 eller 200 000 potentiella resultat.

Tack till Tadge Dryja för information och feedback. För mer information om DLC, se även Dryjas presentation

// youtu. vara / LDF8bOEqXt4? t = 1h57m33s

vid Scaling Bitcoin Stanford.