
[Musica]
grazie posso davvero farne uno migliore
rispetto agli avvocati che capiscono la programmazione
lingue perché avrò un esempio
di un linguaggio progettato da un avvocato così
vediamo bene, quindi voglio parlare
su una pila di lingue da implementare
contratti e io consapevolmente non ho detto
i contratti intelligenti, naturalmente , giocano a
ruolo ma l’immagine è un po ‘
più grande o diverso quindi contesto se tu
guarda il termine smart contraendolo
iniziato storicamente essenzialmente come un
contratto reale in esecuzione su una blockchain
in modo che l’ attenzione era davvero tipica
casi d’uso per smart per catene di blocchi sono
o erano di tipo contrattuale ma non lo erano
tipo di morphed per significare qualsiasi
programma completo di turing che gira su a
blockchain proprio così se guardi
la solidità è uno scopo generale
linguaggio di programmazione con un paio di
estensioni per la blockchain
infrastruttura ma non c’è nulla in
ciò che lo rende specificamente
adatto per l’implementazione effettiva
contratti e tornerò a cosa
è in un momento quindi voglio tornare a
la nozione di contratti intelligenti come mezzo
di contratti effettivamente in esecuzione quindi a
contratto che definirei come qualcosa
dove collaborano più parti
prendere una decisione un accordo o
coordinare qualcosa in qualche modo e poi
una volta che sono d’accordo sul contratto e
eseguirlo significando che lo firmano e fanno
è tipo di andare in diretta quindi questo è legalmente
vincolante e fidato ovviamente dipende
sai che ci sono sfumature di grigio come
legandolo dipende da come lo fai
il contratto ma ancora in generale è così
il caso e se si vuole eseguire
i contratti automaticamente possono essere visti
quello automaticamente è evidenziato sì
allora devi descriverli in un modo
in modo che la macchina possa interpretarli
quindi prendere un documento tipico come a
contratto tipico espresso in prosa I
significa che difficilmente lo capisco prima
non avvocati non lo è certamente
comprensibile per le macchine così è
questo è un no-go quindi dobbiamo farlo
diversamente c’è in realtà un divertente
storia per cui stavo lavorando
bambino Simone fa compagnia a lungo
fa e hanno colpito un avvocato sul personale e
che l’avvocato aveva lavorato nel
software per l’industria informatica
industria per anni e lui ha trattato
contratto di scrittura come programmazione così lui
davvero ha davvero provato a coprire tutto
casi che cercano sistematicamente
sinonimi e ha davvero provato a farlo
a tenuta stagna è stato un ragazzo molto interessante
comunque sto divagando quindi se guardiamo
contratti allora ci sono due fasi da
il modo come con qualsiasi programma ma
in particolare per i contratti hai il
fase di definizione del contratto e poi tu
avere una fase di esecuzione del contratto e in
la fase di definizione hai un mucchio
di feste di solito avvocati o persone
come quello che non significa pro non programmatori
che devono essere d’accordo su quale sia il contratto
dovrebbe fare così non c’è bisogno
per cripto e tutto ciò è solo
assicurandoci di capire tutti cosa
in realtà il contratto fa se lo è
eseguito se quando sarà
eseguito correttamente in modo che sia il primo passo
quindi il comportamento espresso nel
contratto deve essere comprensibile a quelli
le persone che si preoccupano di nuovo di solito no
programmatori e quindi dobbiamo anche
verificare qualche nozione di funzionale
correttezza quindi per esempio se diciamo se
la nave che hai appena affittato non viene restituita
entro X mesi in uno stato di lavoro quindi
devi pagare una specie di diritto
devi essere sicuro che non c’è un
scappatoia dove si può tipo di danno
la nave e ancora non paga perché il
contratto ha qualche altra clausola da qualche parte
altro che lo esprime in qualche strano
circostanza che non devi pagare il
bene, quindi questa sarebbe la nozione
di correttezza funzionale se trattate
come una macchina a stati lì sono
alcuni vincoli sulla vividezza e non
deadlock e proprietà temporali che
dire per ogni esecuzione dello stato
la macchina è garantita così bene
questo è ciò che deve essere fatto qui e poi
ovviamente una volta che lo esegui
dove diciamo blockchain e kind
di cose arrivano dove puoi
garanzia tramite cripto e tu sai
tutti questi accordi
chiama che ha appena parlato di sordi
i cacciatori hanno parlato di così non puoi giocare
è giusto supponendo che sia specificato
il comportamento è corretto per tutte le parti
coinvolti
assicurarsi che il software reale
sistema che esegue questo e costringe questo
lo fa correttamente e tu lo usi
roba crypto per dimostrare che tu in realtà
sai che non so inviato
qualcosa ha pagato qualcosa qualunque una volta
hai questi due quindi puoi fidarti
destra non aiuta se avete
corretta infrastruttura di esecuzione ma tu
non ho un contratto con una scappatoia
significa un bug del software intendo un vero e proprio
difetto logico giusto, quindi questo è davvero
importante a mio avviso per capire
perché di nuovo le catene di blocco aiutano solo
con questo diritto aiutano con questo
nozione di non ripudiare ripudiare un così
una volta che hai fatto qualcosa che hai fatto
perché è nella blockchain e
lo sanno tutti e tutti possono farlo
ripeti il calcolo ottenuto
punto bla bla bla bla bla catena
bloccato e blockchain giusto e it
aiuta in una certa misura a verificare il
comportamento che significa tipo di garanzie
che se è un po ‘programmato
correttamente eseguito correttamente Prendo
di nuovo a quello
quindi di nuovo blocchi le catene secondo me
un modo per fornire determinati non funzionali
proprietà a contratti e con
Intendo dire che non sono funzionali
al comportamento attuale forniscono LED
giusto di solito in questo caso sicurezza e
conosci i soliti attributi di qualità
e quindi le catene di blocchi sono forse adatte
tecnologie di implementazione parziale per
contratti reali se questi non funzionali
le proprietà sono necessarie per esempio se per
qualunque sia la ragione per cui devi fidarti di alcuni
tipo di entità centrale nel mondo reale
comunque perché non so di possedere il
spedisci l’affitto giusto se vendono il tuo
spedisci con un grosso buco in esso
lavandino e morire proprio così che stai andando fiducia
questa compagnia così potresti discuterne
non ho bisogno di una blockchain distribuita
sistema di stile per fare il tipo di
cosa legale puoi anche fidarti di loro
con quello e metti il contratto con a
mazzo di firme sui loro server
giusto tu potresti essere in grado di farlo
argomento giusto per cui dipende davvero
il contesto su quanti di questi blockchain
garanzie di cui hai bisogno e, naturalmente
anche diverse tecnologie a catena
fornire nuovamente diversi livelli di fiducia
queste varie prove di opere prendono
qualunque cosa forniscano livelli diversi
di fiducia e di nuovo a seconda di ciò che tu
voglio fare questo potrebbe essere abbastanza tutto
giusto quindi abbiamo un problema di verifica
e abbiamo un problema di validazione
il problema di verifica sta assumendo il
contratto è specificato in modo corretto
quello è il blockchain che tu sai qualunque cosa
aetherium distribuito vm lo esegue
assicurati che non ce ne siano
bugs no scappatoio voglio dire che ci sono stati
un paio di personaggi famosi come roba del genere
quello e poi abbiamo una convalida
problema che è quello di assicurarsi che il
il contratto funzionalmente si comporta effettivamente
come ci aspettiamo questo non è niente
nuovo ogni programma software ha quello
problema giusto che fai fare validazione
certo che fa le cose giuste e
verifica assicurarsi che faccia queste cose
il modo giusto
così e questo ordinatamente Maps su questi due
fasi una convalida è ciò che fai
durante la definizione del contratto right the
gli avvocati sono d’accordo e capiscono e a
la verifica si riferisce o si riferisce al
esecuzione del contratto in modo che tipo di
eseguire fedelmente ciò che è specificato così
questa è la grande immagine da fare
queste cose ci sono generalmente due
modi ci sono corretti dalla costruzione
e analisi e correzione corrette di
costruzione significa che prendi una lingua
forse quello deve essere inventato
qualunque cosa non ti permetta di fare
alcuni errori hanno un esempio così semplice
se una lingua non ha ora tu
non può essere eseguito in eccezioni del puntatore a bocca
giusto in modo che per esempio utilizzare l’opzione
tipi e il sistema di tipi lo impone
di verificare sempre se qualcosa è nulla
o qualcosa del genere e perché il sistema di tipo
controlla che non puoi farti non puoi
correre in un altro punto di eccezione e se
lo fai è un problema di verifica del
livello più basso che in qualche modo il tipo
il correttore è rotto che tu pensi
non accadere perché conosci i compilatori
non avere bug asintoticamente nel tempo
questo è vero e analisi e correzione sei tu
scrivi un programma e poi analizzi e
mostra che questo particolare programma
non hai ancora alcuni bug che puoi
esegui qualsiasi controllo su java
programma che ha valori nulli ma
fa ancora un’analisi che mostra
questo particolare programma è garantito
quello per tutte le possibili esecuzioni ora due
centinaia di sessioni non succederanno bene
se questo è costoso costoso costoso
possibile dipende dalla lingua
quindi di nuovo per le istruzioni corrette sul retro
hai bisogno di un linguaggio adatto per
analisi e correzione hai bisogno di un adatto
strumento e puoi farlo ovviamente che puoi
combinare entrambi tornerò a quello e
questo vale anche qui per il
tipo di contesto del contratto quindi punto
corso come hai già detto nel
introduzione un linguaggio specifico per il dominio
che ti consente di esprimere contratti in un modo
questo è più comprensibile per te
non programmatori che parlano una lingua
che ha certe proprietà che ti significano
non posso fare certi errori e forse
il linguaggio è progettato in modo tale
che semplifica determinate analisi a
identifica altri problemi che non puoi
Costruisci in modo costruttivo, giusto così è
tipo di direzione che sto pensando
prototipazione sì non abbiamo bisogno di questo
quindi prima di mostrarti il codice in esecuzione
codice voglio metterlo un po ‘
nel contesto perché oops non l’ho inserito
un’animazione là c’è molto
storia e ricerca in tutta questa storia
della legge computazionale in cui la gente pensa
su come puoi farti dei contratti
conoscere formalmente descritto e poi l’ autunno
eseguibile dai programmi e se si guarda
a documenti in quest’area lo vedrai
hanno nozioni di obbligo e
permesso come devi pagare X all’interno
Y scadenze e se lo fai un
obbligo quindi si ottiene il permesso
di utilizzare la nave giusta cose del genere
e poi ci sono tutti i tipi di clausole
che se non lo fai all’interno
questa scadenza si ottiene un ulteriore
cosa devi pagare e se lo fai
un po ‘ prima ottieni più permessi
e cose del genere queste interagiscono tutte
in qualche modo e poi c’è la nozione di
tutte le cose simili ad anelli devono accadere
nel particolare anche se c’è
causalità come se ciò non accadesse
allora quest’altra cosa accade ovviamente
c’è il movimento del tempo e poi quando
in realtà esegui il contratto lì
sono cose come eventi in cui dici ok
una volta effettuato il pagamento è in corso
contratto entra in un altro stato e
quindi in quello stato ora ti è permesso
fare altre cose quindi è un po ‘
ciò che tutti questi sistemi hanno in comune
e ora possiamo tutti sospendere e leggere tutto
questi documenti fuori linea ovviamente così là
sono varie cose alcune di loro vecchie
altri più recenti e se lo sei
interessato a alcune di queste cose allora
potresti voler controllare questo lo farò
darti un esempio concreto di a
linguaggio basato su dove si trova il
la cosa del poeta qui che è basata sul
idee dai poeti quindi questo è tutto pre
blockchain ma niente a che fare con il blocco
catene che lo rafforzano
idea che le catene bloccare il nostro
tecnologie di implementazione per determinati
proprietà non funzionali e non il
abilitatore della legge computazionale va bene
quindi le prossime diapositive propongono se tu
sarà una pila di lingue che è anche la
titolo della presentazione quindi immagino sia
dovrebbe essere uno di come un sacco di
le lingue potrebbero apparire come da fare
qualcosa del genere funziona così ho iniziato
implementare qualcosa che, naturalmente
tutto deve avere un nome è il
linguaggio contrattuale eseguibile per più parti
Giusto qualunque nome lo dimostrerò in a
momento
e per di più puoi immaginare
costruzione di varie lingue specifiche per
contratti in determinati domini che mostrerò
un esempio dalla logistica che un amico
mio ha costruito o prototipato che abbiamo
costruito lingue nello spazio finanziario ma
non erano basati su questo, quindi c’è
come pezzi dappertutto c’è
anche un progetto di ricerca in corso ad Amburgo
su dove è l’ Amburgo
la comunità logistica si è avvicinata al
Comunità IT aiutarci a IBM sta cercando di
facci usare la loro cosa blockchain
vogliamo costruire qualcosa di aperto per favore
aiutaci sai che così c’è
un progetto di ricerca in corso così e
quindi in questo particolare sistema che ho
questo prototipo è stato costruito con questo EMP CL
costruito su un linguaggio chiamato kernel F
che è una programmazione funzionale
linguaggio implementato in MP è altamente
estensibile che è buono perché può
estendilo in modi che lo rendono
l’EMP CL e poi a questo livello tu
puoi fare la validazione puoi fare la simulazione
puoi giocare con questo contratto che puoi
li simulare e potete voi sapere
avere un bel linguaggio espressivo da avere
comportamento basato sullo stato e anche indirizzo
alcuni si sa i problemi di gioco mostrano che a
il momento e poi puoi mapparli a
varie catene di blocco diverse che non ho
implementato questo solo per essere chiari ma noi
tipo di guardato questo discorso al
Teorema ragazzi c’è questo Yuliya
linguaggio che è se tu lo farai
assemblaggio di etere bene è una via di mezzo
il codice macchina attuale e la solidità
questo linguaggio chiamato julia e ci sono
ovviamente anche altre catene di blocco e
perché questi contratti sono specificati
indipendente da un particolare
linguaggio di implementazione che puoi mappare
a quelli diversi attraverso la cogenerazione
vecchia storia niente di nuovo e poi puoi
anche mappare tutto questo ad esempio set
3 chiunque conosca il set 3 ok è un SMT
risolutore intendendo il suo formalismo basato su
di cui puoi fare certe prove
il tuo programma e siamo attualmente nel
processo di mappatura di tutto questo completo
impilare sul set 3 questo è effettivamente pagato
da questo progetto di ricerca ad Amburgo I
non so se il progetto lo sa
pagano per questo ma come di solito
qualunque cosa questo dovrebbe essere tagliato fuori sì sono
scusa no, voglio dire che ovviamente fa parte di
la storia in modo che l’idea sia in questo
progetto per costruire un linguaggio logistico noi
Ho un briefing a metà , non lo so
che cosa la parola inglese è per questo grazie
lo ripeti
ok, va bene e poi usare questo
mappatura per verificare determinate proprietà
roba di controllo del modello così sono
andando a mostrarvi una demo di questo
[Musica]
ecco quindi qui è un dichiarativo
specifica di una decisione presa da a
gruppo di persone il gruppo di persone sono
urtato e Marcus Dundas il ragazzo che
siede in ufficio e opposto di mia di
anche io ci sarò un vicino e
un Thomas si gira nell’ufficio accanto
e questa cosa qui è una dichiarazione di
un comportamento così dice queste due persone
prendere una decisione e la decisione qui è
essenzialmente un sì / no un diritto booleano
facciamo questo o non lo facciamo così è
la decisione più semplice che puoi farti
non sono d’accordo su un valore o
qualcosa o un premio dicono solo sì no e
allora puoi specificare quale sia la procedura
dovrebbe essere quello di rendere questa decisione dovrebbe
è una decisione unanime o una maggioranza
decisione o anche se conosci qualche consuetudine
cosa in cui potrei dire che non è così
importa il tempo che Marcus è d’accordo è
votato per questo
Marcus è sempre un bravo ragazzo va bene
noterai e qualunque cosa tu possa
dì che ci deve essere un minimo
affluenza come devono essere X numero di
persone o tutti coloro che effettivamente votano correttamente
allora puoi specificare un limite di tempo come
questa decisione deve essere presa in quantità X.
di tempo se non è fatto allora il
la decisione non è valida per impostazione predefinita false all
giusto puoi dire se un voto quello
qualcuno ha fatto è revocabile vero io sono
Voguing voto per quella decisione può io
entro il limite di tempo se qualcuno dice oh
scusa se non ho votato facciamo una revoca
revocare questo e questo è un nuovo a
specifica dichiarativa del
comportamento previsto e attuazione di questo
proceduralmente in qualsiasi lingua intendo dire che lo è
non scienza missilistica , ma è così
incline agli errori intendo queste interazioni
tra limiti di tempo e maggioranze e
roba non è totalmente banale e così
ora possiamo giocare con questo che possiamo creare
istanza di uno di questi ragazzi per
esempio qui e apriamolo nel
il repple giusto così questo è il
repple interattivo qui è l’istanza
di questo voto unanime posso avvolgere che
in un oggetto vivo che mi dà di più
vista strutturata dello stato interno di
questa cosa così posso vedere che si tratta di un
multi-party booleano David questo è un
valore decisionale nessuno ha ancora votato e
quindi la decisione non è ancora stata presa
quindi andiamo qui e dì ok, andiamo a prendere
questo valore e vediamo di cosa si tratta
offre ok, mi offre di votare e chi
dovrebbe fare il voto Marx è sempre un bene
idea quindi ora posso vedere che qualcuno ha
votato e questo è un po ‘interno
ID delle molecole posso anche mostrare il
differisce così posso vedere quale di questi
i valori interni sono cambiati e di
Naturalmente la decisione non è ancora stata presa
presa perché se torni qui tu
posso vedere che è una decisione unanime e
ci sono due persone e quindi ovviamente io
anche con l’altro ragazzo legato a destra
quindi devo anche fare un dollaro un voto
legato e ora puoi vedere la decisione
è stato preso
ora se sai mettere limiti di tempo e
roba su di esso
qui per esempio poi otterrai
le cose falliscono se fai il voto dopo il
il tempo è scaduto Non sto andando alla demo
questo quindi questo è il tipo di totalmente
cosa fondamentale che puoi fare con questi
decisioni booleane multipartitiche finora
bene a destra ovviamente diventa molto
più interessante se questi sono in qualche modo
parte di un più grande si parla di
più grande credo e dovrei fare il
carattere più grande
quindi potresti voler leggere questo paragrafo
un grande momento per il video, ma io sto leggendo
non sarebbe meglio
quindi questo è un po ‘meno banale
decisione collaborativa giusto così gente
stiamo cercando di decidere se dovessimo vendere
qualcosa o no e poi lo sai
ci sono vari dettagli su questo e
quindi ciò che questo esempio fa è che combina
conosci un programma funzionale qui a
mazzo di funzioni di aiuto con alcuni di
queste decisioni dichiarative e uno stato
macchina giusta, ecco una macchina a stati
e così il tipo di interfaccia di primo livello
come le persone interagiscono con questa corsa
contratto è con l’ invio di eventi nel
macchina di stato e sappiamo tutti come stato
la macchina lavora le macchine a stato del traitement
lavora così un evento arriva in questo trigger
una transizione ma solo la transizione
spara se una condizione di guardia è anche vera
giusto e quindi siamo in un nuovo stato e
possiamo reagire a nuovi eventi e così come voi
puoi vedere qui sai che iniziamo con
questi prodotti giusto quindi abbiamo un sacco
di offerte che è una raccolta di
offre e offre punti per un prodotto e
ha un premio e quindi ecco il
cosa interessante perché per ognuno di
le offerte creiamo un’istanza di uno
di questi dichiarativi conosci il booleano
le decisioni quindi abbiamo tipo di incorporare uno di
questi o un’istanza di ciascuno di questi
per tutte le cose che vuoi vendere
quella macchina a stati così ora lo stato
tipo di macchina ha uno stato globale per
la vendita di tutti i prodotti, ma
internamente gestisce uno di questi
decisioni booleane dichiarative per ciascuno
cosa vogliamo vendere e di nuovo sempre
pensa di implementarlo manualmente
diventa ed ovviamente non lo è
scienza missilistica, ma è così
incline agli errori in modo da sapere per esempio quando
vogliamo vendere qualcosa, quindi guardiamo
qui per esempio votiamo per farti sapere
c’è un tuo inviato che vuoi votare
questo prodotto
e poi prendiamo la decisione di vendita
oggetto dalla mappa e registra il voto
giusto questo è quello che abbiamo fatto nella pace
per la decisione elementare atomica
prima e poi controlliamo se per un dato
[Musica]
se tutto vende se abbiamo deciso per
tutti i prodotti che vogliamo venderli
quindi entriamo nello stato di vendita dove
quindi ci aspettiamo l’evento buy e poi noi
controlla se il prezzo è abbastanza alto
così così ci sono due cose due
cose da imparare prima di tutto esprimendo
questo come una macchina di stato piuttosto che
il codice procedurale è già a mio avviso
un passo in avanti perché i processi in esecuzione
sono macchine di stato e le incorporano
gli oggetti decisionali rendono l’elemento
le decisioni elementari sono molto più facili da fare
attuare voglio mostrarti ancora
cosa diciamo che vuoi fare qualcosa
simile ma sei preoccupato per le persone
stai andando a gioco stai andando a gioco
il tuo processo di gioco per
esempio un attacco civile dove crei
qualsiasi numero di identità aggiuntive e
allora sai perché controlli tutto
loro ora puoi solo creare una maggioranza
avendo questi nuovi ragazzi che tu solo
creato voto per te giusto così un modo di
per risolvere questo problema, ad esempio
limitare la velocità con cui si crea nuovo
identità o più in generale se si
pensa a questa decisione qui puoi
limitare il tasso al quale è possibile votare tutti
giusto così non puoi spammarlo e lo sai
creare un sacco di identità spendere
con voti Plus e poi ti vinci
non può farlo se limiti questo e il
il modo in cui viene fatto qui è che tu
mentre la cosa tasso
cercando il tasso non riesco a trovare il mio
proprio codice sì sì qui qui si va così
puoi limitare la velocità a tre come
invocazioni di una qualsiasi di queste transizioni
per come questo è un tempo virtuale dell’Unione
tre per mille e duemila
qualunque lotto alla volta e se di più
i voti entrano nella cosa restituisce un errore
e non fa nulla di male allo stesso modo
qui molti sì giochi collaborativi questo
è un gioco collaborativo basato sul prendere
gira a destra in modo da avere un sacco di
partecipanti e poi per il gioco a
lavoro per esempio un processo di offerta a
lavoro sai che il giocatore uno inizia allora
il giocatore due arriva a girare tre quattro e
allora inizi dall’inizio
non puoi sapere solo votare tutto il tempo
una persona perché il punto di sondaggio di
il processo di offerta è che la persona X reagisce
al pezzo di persona Y giusto così hai
un po ‘di ordini e così ancora puoi fare
questo in modo dichiarativo puoi semplicemente affermare
lo stato puoi semplicemente specificarlo
questo stato offre gli eventi che vengono
in devono essere presi come a turno da
chi invia queste cose così dentro
questo caso dice solo fare a turno per
i giocatori che è solo una lista di
identità che contribuiscono a questa cosa
qui ed è tutto ciò quindi è davvero un
ordine rigoroso e c’è un timeout
quindi se questa è l’altra cosa se se fosse
c’è un ordine richiesto attraverso
a turno e qualcuno non lo fa
fare tutto questo è anche un diniego
attacco di servizio perché ora nessuno può farlo
qualsiasi cosa perché dovrei votare ma io
non è giusto
in modo da avere sempre specificare timeout
come se non votassi in questo timeout
o sei saltato o sei tipo
inizialo da tutta la storia e questo
è tutto espresso in modo dichiarativo qui sopra
il livello di stato e senza andare
nei dettagli e mostrandoti tutti questi
casi di test si sa se non si attacca
a questi
da allora il contratto fallisce e questi
le cose sono tutte basate su vari
discussioni che abbiamo avuto con blockchain
gente perché questi sono i tipi di
schemi in cui normalmente si implementano
contratti intelligenti se dovessero effettivamente
agire come un contratto tra più
parti e di nuovo manualmente
scrivendolo in modo procedurale o funzionale
il linguaggio di programmazione non è il modo di
andare penso che anche io non lo dico
la lingua particolare è quella che conosci meglio
possibile soluzione ma penso che abbia un
un paio di idee dove questo potrebbe andare
quindi lasciami tornare alle mie diapositive rimanenti
questo dovrebbe essere disabilitato non so perché
Sto vedendo questo questo è solo quello che ho appena
ho parlato per le diapositive più tardi quindi
ho un’altra cosa che voglio mostrarti
questa è una lingua che il mio amico avvocato
implementato ha chiamato una matematica in chiusura
è stato un consigliere generale del musk così
avvocato di alto livello nella logistica
industria che a un certo punto ha smesso e
deciso di apprendere la chiusura, ecco perché
vedrai molte parentesi irrilevanti
sulla diapositiva successiva scusa dovevo dirlo
così lui deve effettivamente abbiamo fatto diversi
prototipi negli ultimi anni e
il più recente che ha fatto da solo è
quello che sto per mostrarti è noi
iniziato con un grafico o un contratto per
navi perché è quello che ha fatto quando lui
era ancora a Merck e queste cose sono
davvero interessante ma questo è un
una storia diversa è piena di strani
clausole e quindi essenzialmente costruisce
chiusura interna DSL che significa se lo farai
modo di costruire un AST di un modello
perché è quello che fai qui è
ispirato da uno di questi documenti
menzionato prima dell’idea di questo poeta
Simon Peyton Jones e questo ragazzo Abel e
c’è anche un ragazzo molto interessante
chiamato Ken Adams ha scritto un libro su come
esprimi contratti esattamente come ha fatto lui
un’analisi dell’intero dominio sui concetti
nel
contratti davvero cose interessanti e lui
ha integrato anche alcune di queste cose
e ha ricostruito un elemento fondamentale come questo
sembra che la lingua n sia mancante e an
interprete per giocare con la sua roba
la sintassi della lingua ovviamente non lo è
la versione finale perché è in realtà
roba di chiusura penso che sia in realtà
niente, naturalmente, non è d’accordo, lo spero
non sta guardando così comunque quello che puoi fare
è possibile dichiarare gli obblighi e quindi
puoi specificare ad esempio un
obbligo che tu conosca il mutuatario
il mutuatario è obbligato a farlo
qualcosa per il creditore in questo caso
è un’azione che è fare un
pagamento di $ 1.000 e c’è a
descrizione e poi c’è un tempo
finestra tra quali date questo deve
capita e così in altre parole lui
implementato questa nozione di te lo sai
evento di finestra di tempo di permesso di obbligo
roba del genere e poi ha implementato
un sistema runtime in un’applicazione web
dove ottieni la rappresentazione di questo
albero in una forma più o meno leggibile qui
è possibile vedere dove queste stringhe vanno a
sono diventati queste descrizioni
qui e poi sul lato destro che hai
lo stato del contratto che è
essenzialmente una serratura degli eventi
è successo proprio così è come un replay
bloccare la cosa per ottenere un particolare reale
stato e poi puoi sfortunatamente
fuori puoi aggiungere nuovi eventi
e puoi vedere come lo stato di
modifiche contrattuali a destra e così abbiamo fatto
un altro prototipo dell’anno scorso dove noi
collegato qualcosa del genere a un
documento reale come abbiamo caricato il
documento di contratto in MP noi
evidenziato alcune parti sai dove
ha detto che devi pagare 5.000 euro – noi
rimosso i 5.000 fatti quel tipo di a
slot modello ha dato un nome variabile
e quindi utilizzare quella variabile in uno di
queste descrizioni algoritmiche così tu
avere completa tracciabilità dall’originale
contratto testuale alla cosa eseguibile
nel tuo strumento quindi senza entrare molto
più dettagli questo potrebbe essere l’inizio
punto di molto più dichiarativo e
quindi un linguaggio user friendly per
esprimere nuovamente i contratti
la sintassi particolare probabilmente ha bisogno di a
un po ‘ di lucidatura se vuoi
in realtà mostra questo agli avvocati diversi da
Martine, non so quanti avvocati
ci sono quelli che parlano di chiusura ma quello
non importa, voglio dire, il punto è
i concetti che sono lì e che cosa
sta facendo proprio ora sta prendendo
diversi contratti da cui proviene
luoghi e contesti diversi e provando
per rappresentarli lì e penso
è roba davvero interessante e
qualcosa di simile potrebbe essere mappato su
in cima alla empl che ti ho mostrato prima
perché poi ottieni tutte queste cose che conosci
per esempio garanzie di gameplay e il
capacità di debug di basso livello da quel sistema
e qui hai le cose dichiarative
in cima e quindi stiamo davvero guardando
in qualche modo adattandolo a quello
progetto di ricerca in modo che possiamo effettivamente
attuare questo così poche parole in più
la strumentazione delle cose che ti avevo mostrato
prima
ancora una volta questa roba del Colonel F è costruita su
il top dei parlamentari MP è un banco di lavoro linguistico
dovrebbe andare qui MP è una lingua
banco di lavoro da JetBrains che era nel mio
discorso di lingua ieri va bene così
i prossimi due minuti saranno noiosi
anche per me, perché ho detto così tanti
volte comunque un banco di lavoro linguistico è un
strumento che ti permette di consentire rapidamente
costruisci rapidamente nuove lingue e a
particolare vantaggio dei parlamentari è questo
supporta la modularità della lingua in modo che tu possa
prendi una lingua esistente come per
esempio il Colonnello F e aggiungi roba sopra
di esso senza cambiare la lingua
stesso così queste aggiunte come queste
scatole con materiale contrattuale dichiarativo in
sono un modulare non invasivo
estensione del funzionale di base
la lingua si fonde e questo è bello
perché in realtà puoi letteralmente crescere
una pila di lingue da basso livello
funzionali a te conosci vari
livelli intermedi fino alla fine
una versione della lingua che martine
costruito essenzialmente supporta anche mps
diversi tipi di calcestruzzo e tasse
in particolare tavoli e quindi se si guarda
a molti contratti pratici sono pieni
di tavoli come se questa volta lo sapessi
scade devi pagare X importo e roba
che se si acquista una grande nave si deve
pagare di più così roba tabulare in realtà
rappresentato come tabelle visivamente è molto
utile questo linguaggio del colonnello F.
fondamentalmente un linguaggio funzionale come me
detto che lo usiamo come una specie di kernel
nucleo di varie offerte che siamo stati
costruendo negli anni e io non ho
per citare tutte le caratteristiche qui ma
ha alcune cose di chiusura per
esempio quando ci occupiamo della chiusura dello stato
ha questi riferimenti come un modo di tipo di
definendo le caselle per lo stato mutabile che facciamo
anche questo abbiamo tipi di numeri che in
il numero di traccia del sistema di tipo varia così
puoi specificare un numero compreso tra x e y
e se calcoli qualcosa che è
fuori da questi limiti si ottiene una statica
errore che è molto utile per un tipo di
tipo di attività DSL come
contratti perché bene è un tipo
di errore le persone normali si preoccupano del giusto
quindi avrei dovuto renderlo diverso
ordine c’è un’altra cosa perché io
parlato di come una lingua come in PCL
o Martines hyper CSL penso che lo sia
chiamato come ciò aiuta a garantire il
correttezza funzionale ed evitando il genere
di scappatoie logiche perché è più facile
per esprimere le cose ma ovviamente c’è
questo altro problema che se tu in realtà
distribuire questo a un blockchain o per quello
importa qualsiasi altra esecuzione
infrastruttura allora hai il problema
che la verifica diventa un problema
giusto per cui devi essere in grado di fidarti
quell’infrastruttura che tipo di
esegui fedelmente sei ora garantito
per essere corretto contratto quindi questo non è
necessariamente la mia specialità, ma ho voluto
indica un paio di cose, per esempio
c’è anche uno sforzo da parte di Grigory Risu
e i suoi colleghi per implementare o
descrivere la semantica completa del
macchina virtuale di etherium in kk è un
specifica quadro semantica
quadro delle specifiche in modo da poter dimostrare
che non ci sono livelli di basso livello
errori nella VM stessa del corso giusto
ora la VM non lo è
come generato da quella specifica
così che c’è quella scappatoia ma io solo
letto di recente che stanno facendo questo
cosa ela probabilmente pronunciata
in modo diverso dove stanno cercando di
costruisci un po ‘diciamo più efficiente
descriveranno la semantica
in un modo che consente la generazione di a
implementazione più efficiente
forse hai un tipo di meccanica
connessione tra il semantico
specifica e l’esecuzione stessa
ovviamente questo non è qualcosa di buono io
dovrei dire in modo diverso penso che sia
ottimo marketing per la verifica
comunità di saltare in cima al
cosa blockchain giusto perché, naturalmente
questi ragazzi hanno costruito K qualche tempo fa e
hanno verificato tutti i tipi di cose
a nessuno importava e ora lo sono
verificare le cose a cui tutti si preoccupano
e così è per loro che penso molto
opportunità accolta per tipo di utilizzo
le loro cose formali in pratica quali di
corso non risolve i loro problemi
proprio così generando efficienza
implementazioni dalla semantica formale
le specifiche non sono qualcosa che è stato fatto
come sempre, quindi ci sono ancora
sfide lì
ci sono anche cose interessanti in corso
nel gruppo di Delft e professori e poi
c’è per esempio un’altra cosa che
il token ERC 20 è stato formalmente
verificato e ci sono cose in corso
la comunità di etherium formalmente
verifica del contratto di solidità in sostanza
anche integrando i risolutori in
solidità e sicuramente molto molto
verificare alcuni aspetti del
definizione così ancora una volta se torniamo a
questa immagine poi il livello più basso una volta
questo è veramente verificato e gentile
connesso all’implementazione connessa a
la specifica che è il
parte di verifica e le lingue I
mostrato prima di aiutare con la convalida
giusto quindi è una specie di riassunto di
Certo che ho dovuto aggiungere questa piccola osservazione
che questa intera storia di verifica è
davvero una vecchia storia, intendo molto
gentilissimo verificando la correttezza di
roba è fatto tutto il tempo dentro
pacemaker aerei aerei nucleari
centrali elettriche e lo trovo divertente quando io
ho sentito che conosci le persone nella blockchain
comunità che ora è quel valore reale
associato ai programmi che dobbiamo
inizia a preoccuparti della correttezza e questo
mostra davvero diciamo un po ‘limitato
vista di dove è stato utilizzato il software
passato mettiamola in questo modo siamo
recentemente costruito qualcosa nel
spazio medico dove usiamo questo insieme
Storia DSL per generare codice che si occupa
con diagnostica e medicina
prescrizioni e abbiamo fatto un sistematico
analisi del rischio e lunga storia breve
ha portato a un relativamente complicato
architettura per generare roba e
sai misurare la copertura e l’avere
diversi generatori in due diversi
runtime per ridondanza e cose del genere
quello
abbiamo ottenuto la prima fase di due FDA
approvazioni quindi siamo sulla buona strada
qui quindi forse approcci come questo potrebbero
aiuta anche nello spazio blockchain così
invece di verificare tutto formalmente
fai cose come il test di misurazione
copertura con lo stesso contratto
l’EVM e diciamo in un interprete
nell’IDE come quello che ho mostrato e
se si comportano allo stesso modo che hai
certo tu sai che le probabilità
non ci sono errori perché tu
fatto cose due volte in due differenti
roba infrastrutturale come quella che c’è a
comunità davvero molto grande di
persone che cercano di tirarsi indietro
software quindi penso che sia importante
per tipo di essere consapevoli di questo tutto bene
avvolgere c’è un po ‘ di
ulteriore lettura riguardante il mio
cose particolari come il kernel F e NPS
e questo in PCL l’ho fatto ai post medi
quello ha descritto tutta questa roba
e quindi abbiamo un riassunto vero e proprio
per ricapitolare nel mio parere contratti come
qualsiasi altro software deve essere funzionalmente
corretto ma perché di solito è un avvocato
tipo di persone che si preoccupano di questa roba
le lingue devono essere accessibili a
uomini d’affari e questo è dove il DSL
la storia arriva, dobbiamo integrarci
strumenti di verifica sia sul
livello funzionale per trovare errori logici di
dimostrando la loro assenza che era a
frase senza senso, ma credo che tu abbia capito
il punto
e anche sotto al livello sotto a
verificare l’infrastruttura che vogliamo
dare a questi avvocati le capacità di simulare
questi contratti svolgono attraverso di loro si
sai fare cosa se analisi perché si trasforma
fuori che i non programmatori per loro è
molto più facile da capire qualcosa da
giocando con esso
poi guardando il codice e lo sai
visualizzare ciò che faremo è probabilmente
anche vero per i programmatori ma non lo fanno
ammetto anche questo è quello che fanno i debugger
e quindi l’implementazione per bloccare le catene
qualcosa che ti dà non funzionale
proprietà per la tua funzionalità corretta
anche il contratto e altri schieramenti
utile per esempio distribuzioni che danno
hai un po ‘ridotto la sicurezza ma
forse più alto rendimento e uno
un esempio particolare qui potrebbe essere le cose
come reti di illuminazione leggera accese
etherium dove la sicurezza è un po ‘ ridotta
perché non ti impegni tutto
la blockchain globale in tempo reale ma
d’altra parte puoi fare cose così
sai che non ogni costo di transazione
tu un braccio e una gamba e impiega per sempre
Va bene, non ho idea del tempo
ma ho fatto le domande ok quindi sii al
app non abbiamo domande così ok sto andando
rispondi a questo
grandi chiacchiere grazie e il mio
la comprensione è un po ‘ divertente
mentale o mancante o incomprensione o
quello che mi manca è un collegamento al
mondo reale
così dai tuoi esempi questo è l’input
a tutto questo contratto quindi questo eseguibile
i programmi sono in fase di avvio, ma per quanto riguarda
contratti che hanno bisogno di una specie di
informazione
sì, per esempio, ho un contratto per
lavoro e pulisco la tua casa e poi io
ottenere soldi come si esegue tale
cosa che è un problema fondamentale di
tutta la legge eseguibile incluso il blocco
catene di destra non appena la vostra, come si
connettiti al mondo reale conosci te
ho bisogno di quello che loro chiamano un Oracle proprio alcuni
tipo di proxy che in qualche modo dice
qualcosa è successo nel mondo reale e
idealmente per certe cose come per
esempio un pagamento esso
la tua banca ti darebbe come un’API
chiamare una volta che la transazione è avvenuta
allora questa cosa particolare potrebbe essere
automatizzato in qualche modo giusto ma come te
sapere se il contratto dice che la nave ha
essere consegnato al porto fino a X.
qualcuno sta per scattare una foto e
dì che è qui giusto quindi questo è un
problema fondamentale che è il motivo per cui molti di
gli esempi di blockchain e il tipo di
punti dolci cercano di affrontare cose che
sono esclusivamente virtuali dove puoi farlo
tutto sul computer in cui è possibile
fare il controllo della presenza di se
qualcosa è successo tutto nel computer
che ovviamente limita l’utilità così
ad un certo punto devi fidarti di alcuni
tipo di osservatore proxy del mondo reale
va bene
grazie ho la sensazione che lì come
tu come hai mostrato nella tua foto lì
sono più strati di tutto il resto
hai in programma di avere un altro livello come
contrasto con il linguaggio basato MPS in cima
delle altre cose in basso lo fa
farlo lo ha anche senso
vuoi liberarti dei parlamentari sì sì no
ok ora intendo sul serio intendo di essere un
un po ‘più serio anche se lì
non c’è motivo per voler sbarazzarsi di tutti
membro, quindi questo è ancora un parco giochi
fase di sperimentazione e per quei parlamentari
è semplicemente perfetto ma ovviamente quando io
menzionato all’inizio che il
fase di definizione del contratto è dove
più parti tipo di contrattare e tu
sai collaborare hai bisogno di qualcosa che
è collaborativo quindi deve essere acceso
il browser che è il motivo per cui sia necessario
qualcosa come MP sul browser che
stiamo costruendo una storia diversa o tu
bisogno di una tecnologia diversa, ecco perché
Martin ha implementato tutto questo recinto
e tu conosci lo script di chiusura blah blah
blah browser web front-end quindi è giusto
diversi obiettivi è chiaro che per
qualcosa del genere in cui andare
la produzione non sarà parlamentare
giusto ma non è il mio obiettivo adesso
va bene a chiunque altro
sì sì sì sì così tanto da ripetere
la domanda per il video immagino cosa
penso alle lingue che sono
trovato assegnato correttamente più vicino a
tipo di testo in prosa reale leggibile
frasi e penso che questo è un questo
difficile per diversi motivi se si lascia
la gente scrive solo testo e prova ad analizzare
fuori dalla semantica questo è difficile, voglio dire
questo è il recupero semantico dell’analisi di prosa
in particolare per i contratti è un male
idea perché vuoi essere sicuro di cosa
qualcosa significa e quindi non è il
ben fatto
quindi dovresti limitare il tipo di
frasi che le persone possono scrivere devi
dare un molto stretto o ben definito
linguaggio strutturato e c’è un intero
comunità nello spazio dei requisiti per
un linguaggio naturale vincolato farebbe
esattamente quello per i requisiti che sono a
superset di questo tipo di contratti quindi io
pensa che potrebbe funzionare per
esempio solo un piccolo esempio in
kernel F possiamo associare la frase
frammenti con funzioni così invece di
funzione di chiamata aggiungi parens una virgola B
puoi scrivere aggiungere i numeri a e B
e poi quando lo chiami scrivi questo
piccolo frammento e così questo rende
chiamate di funzione leggere come un potente
frase giusta è solo una piccola parte
passo in questa direzione, quindi penso questo
è fattibile, ma è così
domanda quanto lontano tu abbia visto
lingue in cui quando si confrontano due
numeri in cui scrivi effettivamente blah blah
blah è più grande di blah blah blah
invece di usare il simbolo e così io
penso che ci sia bisogno di essere un buono
compromesso tra i modelli naturali
testo e modi simbolici di descrivere
cose che tutti sappiamo dal voto
scuola essenzialmente così la tassa olandese
agenzia usa una lettura molto frase
linguaggio per la descrizione di testi e pubblico
regole di beneficio e funziona, ma è
altamente strutturato puoi solo
solo tu puoi fondamentalmente esprimere nidificato
se / allora / altrimenti le decisioni giuste non lo sono
certo quanto bene questo scala a tutto l’uso
casi che abbiamo bisogno d’altra parte se tu
sono in grado di formalizzare i contratti in a
linguaggio limitato dal permesso e
obbligo e tempo finestra ed evento voi
so come non conosco 15 o 20 lingue
costruisce quindi, naturalmente, si potrebbe
fornire un testo in prosa come la sintassi per
quelli che vale sicuramente la pena sperimentare
tutto bene tutto bene
i poliziotti ti ringrazieranno molto Marcus, certo
Grazie
[Applausi]
grazie posso davvero farne uno migliore
rispetto agli avvocati che capiscono la programmazione
lingue perché avrò un esempio
di un linguaggio progettato da un avvocato così
vediamo bene, quindi voglio parlare
su una pila di lingue da implementare
contratti e io consapevolmente non ho detto
i contratti intelligenti, naturalmente , giocano a
ruolo ma l’immagine è un po ‘
più grande o diverso quindi contesto se tu
guarda il termine smart contraendolo
iniziato storicamente essenzialmente come un
contratto reale in esecuzione su una blockchain
in modo che l’ attenzione era davvero tipica
casi d’uso per smart per catene di blocchi sono
o erano di tipo contrattuale ma non lo erano
tipo di morphed per significare qualsiasi
programma completo di turing che gira su a
blockchain proprio così se guardi
la solidità è uno scopo generale
linguaggio di programmazione con un paio di
estensioni per la blockchain
infrastruttura ma non c’è nulla in
ciò che lo rende specificamente
adatto per l’implementazione effettiva
contratti e tornerò a cosa
è in un momento quindi voglio tornare a
la nozione di contratti intelligenti come mezzo
di contratti effettivamente in esecuzione quindi a
contratto che definirei come qualcosa
dove collaborano più parti
prendere una decisione un accordo o
coordinare qualcosa in qualche modo e poi
una volta che sono d’accordo sul contratto e
eseguirlo significando che lo firmano e fanno
è tipo di andare in diretta quindi questo è legalmente
vincolante e fidato ovviamente dipende
sai che ci sono sfumature di grigio come
legandolo dipende da come lo fai
il contratto ma ancora in generale è così
il caso e se si vuole eseguire
i contratti automaticamente possono essere visti
quello automaticamente è evidenziato sì
allora devi descriverli in un modo
in modo che la macchina possa interpretarli
quindi prendere un documento tipico come a
contratto tipico espresso in prosa I
significa che difficilmente lo capisco prima
non avvocati non lo è certamente
comprensibile per le macchine così è
questo è un no-go quindi dobbiamo farlo
diversamente c’è in realtà un divertente
storia per cui stavo lavorando
bambino Simone fa compagnia a lungo
fa e hanno colpito un avvocato sul personale e
che l’avvocato aveva lavorato nel
software per l’industria informatica
industria per anni e lui ha trattato
contratto di scrittura come programmazione così lui
davvero ha davvero provato a coprire tutto
casi che cercano sistematicamente
sinonimi e ha davvero provato a farlo
a tenuta stagna è stato un ragazzo molto interessante
comunque sto divagando quindi se guardiamo
contratti allora ci sono due fasi da
il modo come con qualsiasi programma ma
in particolare per i contratti hai il
fase di definizione del contratto e poi tu
avere una fase di esecuzione del contratto e in
la fase di definizione hai un mucchio
di feste di solito avvocati o persone
come quello che non significa pro non programmatori
che devono essere d’accordo su quale sia il contratto
dovrebbe fare così non c’è bisogno
per cripto e tutto ciò è solo
assicurandoci di capire tutti cosa
in realtà il contratto fa se lo è
eseguito se quando sarà
eseguito correttamente in modo che sia il primo passo
quindi il comportamento espresso nel
contratto deve essere comprensibile a quelli
le persone che si preoccupano di nuovo di solito no
programmatori e quindi dobbiamo anche
verificare qualche nozione di funzionale
correttezza quindi per esempio se diciamo se
la nave che hai appena affittato non viene restituita
entro X mesi in uno stato di lavoro quindi
devi pagare una specie di diritto
devi essere sicuro che non c’è un
scappatoia dove si può tipo di danno
la nave e ancora non paga perché il
contratto ha qualche altra clausola da qualche parte
altro che lo esprime in qualche strano
circostanza che non devi pagare il
bene, quindi questa sarebbe la nozione
di correttezza funzionale se trattate
come una macchina a stati lì sono
alcuni vincoli sulla vividezza e non
deadlock e proprietà temporali che
dire per ogni esecuzione dello stato
la macchina è garantita così bene
questo è ciò che deve essere fatto qui e poi
ovviamente una volta che lo esegui
dove diciamo blockchain e kind
di cose arrivano dove puoi
garanzia tramite cripto e tu sai
tutti questi accordi
chiama che ha appena parlato di sordi
i cacciatori hanno parlato di così non puoi giocare
è giusto supponendo che sia specificato
il comportamento è corretto per tutte le parti
coinvolti
assicurarsi che il software reale
sistema che esegue questo e costringe questo
lo fa correttamente e tu lo usi
roba crypto per dimostrare che tu in realtà
sai che non so inviato
qualcosa ha pagato qualcosa qualunque una volta
hai questi due quindi puoi fidarti
destra non aiuta se avete
corretta infrastruttura di esecuzione ma tu
non ho un contratto con una scappatoia
significa un bug del software intendo un vero e proprio
difetto logico giusto, quindi questo è davvero
importante a mio avviso per capire
perché di nuovo le catene di blocco aiutano solo
con questo diritto aiutano con questo
nozione di non ripudiare ripudiare un così
una volta che hai fatto qualcosa che hai fatto
perché è nella blockchain e
lo sanno tutti e tutti possono farlo
ripeti il calcolo ottenuto
punto bla bla bla bla bla catena
bloccato e blockchain giusto e it
aiuta in una certa misura a verificare il
comportamento che significa tipo di garanzie
che se è un po ‘programmato
correttamente eseguito correttamente Prendo
di nuovo a quello
quindi di nuovo blocchi le catene secondo me
un modo per fornire determinati non funzionali
proprietà a contratti e con
Intendo dire che non sono funzionali
al comportamento attuale forniscono LED
giusto di solito in questo caso sicurezza e
conosci i soliti attributi di qualità
e quindi le catene di blocchi sono forse adatte
tecnologie di implementazione parziale per
contratti reali se questi non funzionali
le proprietà sono necessarie per esempio se per
qualunque sia la ragione per cui devi fidarti di alcuni
tipo di entità centrale nel mondo reale
comunque perché non so di possedere il
spedisci l’affitto giusto se vendono il tuo
spedisci con un grosso buco in esso
lavandino e morire proprio così che stai andando fiducia
questa compagnia così potresti discuterne
non ho bisogno di una blockchain distribuita
sistema di stile per fare il tipo di
cosa legale puoi anche fidarti di loro
con quello e metti il contratto con a
mazzo di firme sui loro server
giusto tu potresti essere in grado di farlo
argomento giusto per cui dipende davvero
il contesto su quanti di questi blockchain
garanzie di cui hai bisogno e, naturalmente
anche diverse tecnologie a catena
fornire nuovamente diversi livelli di fiducia
queste varie prove di opere prendono
qualunque cosa forniscano livelli diversi
di fiducia e di nuovo a seconda di ciò che tu
voglio fare questo potrebbe essere abbastanza tutto
giusto quindi abbiamo un problema di verifica
e abbiamo un problema di validazione
il problema di verifica sta assumendo il
contratto è specificato in modo corretto
quello è il blockchain che tu sai qualunque cosa
aetherium distribuito vm lo esegue
assicurati che non ce ne siano
bugs no scappatoio voglio dire che ci sono stati
un paio di personaggi famosi come roba del genere
quello e poi abbiamo una convalida
problema che è quello di assicurarsi che il
il contratto funzionalmente si comporta effettivamente
come ci aspettiamo questo non è niente
nuovo ogni programma software ha quello
problema giusto che fai fare validazione
certo che fa le cose giuste e
verifica assicurarsi che faccia queste cose
il modo giusto
così e questo ordinatamente Maps su questi due
fasi una convalida è ciò che fai
durante la definizione del contratto right the
gli avvocati sono d’accordo e capiscono e a
la verifica si riferisce o si riferisce al
esecuzione del contratto in modo che tipo di
eseguire fedelmente ciò che è specificato così
questa è la grande immagine da fare
queste cose ci sono generalmente due
modi ci sono corretti dalla costruzione
e analisi e correzione corrette di
costruzione significa che prendi una lingua
forse quello deve essere inventato
qualunque cosa non ti permetta di fare
alcuni errori hanno un esempio così semplice
se una lingua non ha ora tu
non può essere eseguito in eccezioni del puntatore a bocca
giusto in modo che per esempio utilizzare l’opzione
tipi e il sistema di tipi lo impone
di verificare sempre se qualcosa è nulla
o qualcosa del genere e perché il sistema di tipo
controlla che non puoi farti non puoi
correre in un altro punto di eccezione e se
lo fai è un problema di verifica del
livello più basso che in qualche modo il tipo
il correttore è rotto che tu pensi
non accadere perché conosci i compilatori
non avere bug asintoticamente nel tempo
questo è vero e analisi e correzione sei tu
scrivi un programma e poi analizzi e
mostra che questo particolare programma
non hai ancora alcuni bug che puoi
esegui qualsiasi controllo su java
programma che ha valori nulli ma
fa ancora un’analisi che mostra
questo particolare programma è garantito
quello per tutte le possibili esecuzioni ora due
centinaia di sessioni non succederanno bene
se questo è costoso costoso costoso
possibile dipende dalla lingua
quindi di nuovo per le istruzioni corrette sul retro
hai bisogno di un linguaggio adatto per
analisi e correzione hai bisogno di un adatto
strumento e puoi farlo ovviamente che puoi
combinare entrambi tornerò a quello e
questo vale anche qui per il
tipo di contesto del contratto quindi punto
corso come hai già detto nel
introduzione un linguaggio specifico per il dominio
che ti consente di esprimere contratti in un modo
questo è più comprensibile per te
non programmatori che parlano una lingua
che ha certe proprietà che ti significano
non posso fare certi errori e forse
il linguaggio è progettato in modo tale
che semplifica determinate analisi a
identifica altri problemi che non puoi
Costruisci in modo costruttivo, giusto così è
tipo di direzione che sto pensando
prototipazione sì non abbiamo bisogno di questo
quindi prima di mostrarti il codice in esecuzione
codice voglio metterlo un po ‘
nel contesto perché oops non l’ho inserito
un’animazione là c’è molto
storia e ricerca in tutta questa storia
della legge computazionale in cui la gente pensa
su come puoi farti dei contratti
conoscere formalmente descritto e poi l’ autunno
eseguibile dai programmi e se si guarda
a documenti in quest’area lo vedrai
hanno nozioni di obbligo e
permesso come devi pagare X all’interno
Y scadenze e se lo fai un
obbligo quindi si ottiene il permesso
di utilizzare la nave giusta cose del genere
e poi ci sono tutti i tipi di clausole
che se non lo fai all’interno
questa scadenza si ottiene un ulteriore
cosa devi pagare e se lo fai
un po ‘ prima ottieni più permessi
e cose del genere queste interagiscono tutte
in qualche modo e poi c’è la nozione di
tutte le cose simili ad anelli devono accadere
nel particolare anche se c’è
causalità come se ciò non accadesse
allora quest’altra cosa accade ovviamente
c’è il movimento del tempo e poi quando
in realtà esegui il contratto lì
sono cose come eventi in cui dici ok
una volta effettuato il pagamento è in corso
contratto entra in un altro stato e
quindi in quello stato ora ti è permesso
fare altre cose quindi è un po ‘
ciò che tutti questi sistemi hanno in comune
e ora possiamo tutti sospendere e leggere tutto
questi documenti fuori linea ovviamente così là
sono varie cose alcune di loro vecchie
altri più recenti e se lo sei
interessato a alcune di queste cose allora
potresti voler controllare questo lo farò
darti un esempio concreto di a
linguaggio basato su dove si trova il
la cosa del poeta qui che è basata sul
idee dai poeti quindi questo è tutto pre
blockchain ma niente a che fare con il blocco
catene che lo rafforzano
idea che le catene bloccare il nostro
tecnologie di implementazione per determinati
proprietà non funzionali e non il
abilitatore della legge computazionale va bene
quindi le prossime diapositive propongono se tu
sarà una pila di lingue che è anche la
titolo della presentazione quindi immagino sia
dovrebbe essere uno di come un sacco di
le lingue potrebbero apparire come da fare
qualcosa del genere funziona così ho iniziato
implementare qualcosa che, naturalmente
tutto deve avere un nome è il
linguaggio contrattuale eseguibile per più parti
Giusto qualunque nome lo dimostrerò in a
momento
e per di più puoi immaginare
costruzione di varie lingue specifiche per
contratti in determinati domini che mostrerò
un esempio dalla logistica che un amico
mio ha costruito o prototipato che abbiamo
costruito lingue nello spazio finanziario ma
non erano basati su questo, quindi c’è
come pezzi dappertutto c’è
anche un progetto di ricerca in corso ad Amburgo
su dove è l’ Amburgo
la comunità logistica si è avvicinata al
Comunità IT aiutarci a IBM sta cercando di
facci usare la loro cosa blockchain
vogliamo costruire qualcosa di aperto per favore
aiutaci sai che così c’è
un progetto di ricerca in corso così e
quindi in questo particolare sistema che ho
questo prototipo è stato costruito con questo EMP CL
costruito su un linguaggio chiamato kernel F
che è una programmazione funzionale
linguaggio implementato in MP è altamente
estensibile che è buono perché può
estendilo in modi che lo rendono
l’EMP CL e poi a questo livello tu
puoi fare la validazione puoi fare la simulazione
puoi giocare con questo contratto che puoi
li simulare e potete voi sapere
avere un bel linguaggio espressivo da avere
comportamento basato sullo stato e anche indirizzo
alcuni si sa i problemi di gioco mostrano che a
il momento e poi puoi mapparli a
varie catene di blocco diverse che non ho
implementato questo solo per essere chiari ma noi
tipo di guardato questo discorso al
Teorema ragazzi c’è questo Yuliya
linguaggio che è se tu lo farai
assemblaggio di etere bene è una via di mezzo
il codice macchina attuale e la solidità
questo linguaggio chiamato julia e ci sono
ovviamente anche altre catene di blocco e
perché questi contratti sono specificati
indipendente da un particolare
linguaggio di implementazione che puoi mappare
a quelli diversi attraverso la cogenerazione
vecchia storia niente di nuovo e poi puoi
anche mappare tutto questo ad esempio set
3 chiunque conosca il set 3 ok è un SMT
risolutore intendendo il suo formalismo basato su
di cui puoi fare certe prove
il tuo programma e siamo attualmente nel
processo di mappatura di tutto questo completo
impilare sul set 3 questo è effettivamente pagato
da questo progetto di ricerca ad Amburgo I
non so se il progetto lo sa
pagano per questo ma come di solito
qualunque cosa questo dovrebbe essere tagliato fuori sì sono
scusa no, voglio dire che ovviamente fa parte di
la storia in modo che l’idea sia in questo
progetto per costruire un linguaggio logistico noi
Ho un briefing a metà , non lo so
che cosa la parola inglese è per questo grazie
lo ripeti
ok, va bene e poi usare questo
mappatura per verificare determinate proprietà
roba di controllo del modello così sono
andando a mostrarvi una demo di questo
[Musica]
ecco quindi qui è un dichiarativo
specifica di una decisione presa da a
gruppo di persone il gruppo di persone sono
urtato e Marcus Dundas il ragazzo che
siede in ufficio e opposto di mia di
anche io ci sarò un vicino e
un Thomas si gira nell’ufficio accanto
e questa cosa qui è una dichiarazione di
un comportamento così dice queste due persone
prendere una decisione e la decisione qui è
essenzialmente un sì / no un diritto booleano
facciamo questo o non lo facciamo così è
la decisione più semplice che puoi farti
non sono d’accordo su un valore o
qualcosa o un premio dicono solo sì no e
allora puoi specificare quale sia la procedura
dovrebbe essere quello di rendere questa decisione dovrebbe
è una decisione unanime o una maggioranza
decisione o anche se conosci qualche consuetudine
cosa in cui potrei dire che non è così
importa il tempo che Marcus è d’accordo è
votato per questo
Marcus è sempre un bravo ragazzo va bene
noterai e qualunque cosa tu possa
dì che ci deve essere un minimo
affluenza come devono essere X numero di
persone o tutti coloro che effettivamente votano correttamente
allora puoi specificare un limite di tempo come
questa decisione deve essere presa in quantità X.
di tempo se non è fatto allora il
la decisione non è valida per impostazione predefinita false all
giusto puoi dire se un voto quello
qualcuno ha fatto è revocabile vero io sono
Voguing voto per quella decisione può io
entro il limite di tempo se qualcuno dice oh
scusa se non ho votato facciamo una revoca
revocare questo e questo è un nuovo a
specifica dichiarativa del
comportamento previsto e attuazione di questo
proceduralmente in qualsiasi lingua intendo dire che lo è
non scienza missilistica , ma è così
incline agli errori intendo queste interazioni
tra limiti di tempo e maggioranze e
roba non è totalmente banale e così
ora possiamo giocare con questo che possiamo creare
istanza di uno di questi ragazzi per
esempio qui e apriamolo nel
il repple giusto così questo è il
repple interattivo qui è l’istanza
di questo voto unanime posso avvolgere che
in un oggetto vivo che mi dà di più
vista strutturata dello stato interno di
questa cosa così posso vedere che si tratta di un
multi-party booleano David questo è un
valore decisionale nessuno ha ancora votato e
quindi la decisione non è ancora stata presa
quindi andiamo qui e dì ok, andiamo a prendere
questo valore e vediamo di cosa si tratta
offre ok, mi offre di votare e chi
dovrebbe fare il voto Marx è sempre un bene
idea quindi ora posso vedere che qualcuno ha
votato e questo è un po ‘interno
ID delle molecole posso anche mostrare il
differisce così posso vedere quale di questi
i valori interni sono cambiati e di
Naturalmente la decisione non è ancora stata presa
presa perché se torni qui tu
posso vedere che è una decisione unanime e
ci sono due persone e quindi ovviamente io
anche con l’altro ragazzo legato a destra
quindi devo anche fare un dollaro un voto
legato e ora puoi vedere la decisione
è stato preso
ora se sai mettere limiti di tempo e
roba su di esso
qui per esempio poi otterrai
le cose falliscono se fai il voto dopo il
il tempo è scaduto Non sto andando alla demo
questo quindi questo è il tipo di totalmente
cosa fondamentale che puoi fare con questi
decisioni booleane multipartitiche finora
bene a destra ovviamente diventa molto
più interessante se questi sono in qualche modo
parte di un più grande si parla di
più grande credo e dovrei fare il
carattere più grande
quindi potresti voler leggere questo paragrafo
un grande momento per il video, ma io sto leggendo
non sarebbe meglio
quindi questo è un po ‘meno banale
decisione collaborativa giusto così gente
stiamo cercando di decidere se dovessimo vendere
qualcosa o no e poi lo sai
ci sono vari dettagli su questo e
quindi ciò che questo esempio fa è che combina
conosci un programma funzionale qui a
mazzo di funzioni di aiuto con alcuni di
queste decisioni dichiarative e uno stato
macchina giusta, ecco una macchina a stati
e così il tipo di interfaccia di primo livello
come le persone interagiscono con questa corsa
contratto è con l’ invio di eventi nel
macchina di stato e sappiamo tutti come stato
la macchina lavora le macchine a stato del traitement
lavora così un evento arriva in questo trigger
una transizione ma solo la transizione
spara se una condizione di guardia è anche vera
giusto e quindi siamo in un nuovo stato e
possiamo reagire a nuovi eventi e così come voi
puoi vedere qui sai che iniziamo con
questi prodotti giusto quindi abbiamo un sacco
di offerte che è una raccolta di
offre e offre punti per un prodotto e
ha un premio e quindi ecco il
cosa interessante perché per ognuno di
le offerte creiamo un’istanza di uno
di questi dichiarativi conosci il booleano
le decisioni quindi abbiamo tipo di incorporare uno di
questi o un’istanza di ciascuno di questi
per tutte le cose che vuoi vendere
quella macchina a stati così ora lo stato
tipo di macchina ha uno stato globale per
la vendita di tutti i prodotti, ma
internamente gestisce uno di questi
decisioni booleane dichiarative per ciascuno
cosa vogliamo vendere e di nuovo sempre
pensa di implementarlo manualmente
diventa ed ovviamente non lo è
scienza missilistica, ma è così
incline agli errori in modo da sapere per esempio quando
vogliamo vendere qualcosa, quindi guardiamo
qui per esempio votiamo per farti sapere
c’è un tuo inviato che vuoi votare
questo prodotto
e poi prendiamo la decisione di vendita
oggetto dalla mappa e registra il voto
giusto questo è quello che abbiamo fatto nella pace
per la decisione elementare atomica
prima e poi controlliamo se per un dato
[Musica]
se tutto vende se abbiamo deciso per
tutti i prodotti che vogliamo venderli
quindi entriamo nello stato di vendita dove
quindi ci aspettiamo l’evento buy e poi noi
controlla se il prezzo è abbastanza alto
così così ci sono due cose due
cose da imparare prima di tutto esprimendo
questo come una macchina di stato piuttosto che
il codice procedurale è già a mio avviso
un passo in avanti perché i processi in esecuzione
sono macchine di stato e le incorporano
gli oggetti decisionali rendono l’elemento
le decisioni elementari sono molto più facili da fare
attuare voglio mostrarti ancora
cosa diciamo che vuoi fare qualcosa
simile ma sei preoccupato per le persone
stai andando a gioco stai andando a gioco
il tuo processo di gioco per
esempio un attacco civile dove crei
qualsiasi numero di identità aggiuntive e
allora sai perché controlli tutto
loro ora puoi solo creare una maggioranza
avendo questi nuovi ragazzi che tu solo
creato voto per te giusto così un modo di
per risolvere questo problema, ad esempio
limitare la velocità con cui si crea nuovo
identità o più in generale se si
pensa a questa decisione qui puoi
limitare il tasso al quale è possibile votare tutti
giusto così non puoi spammarlo e lo sai
creare un sacco di identità spendere
con voti Plus e poi ti vinci
non può farlo se limiti questo e il
il modo in cui viene fatto qui è che tu
mentre la cosa tasso
cercando il tasso non riesco a trovare il mio
proprio codice sì sì qui qui si va così
puoi limitare la velocità a tre come
invocazioni di una qualsiasi di queste transizioni
per come questo è un tempo virtuale dell’Unione
tre per mille e duemila
qualunque lotto alla volta e se di più
i voti entrano nella cosa restituisce un errore
e non fa nulla di male allo stesso modo
qui molti sì giochi collaborativi questo
è un gioco collaborativo basato sul prendere
gira a destra in modo da avere un sacco di
partecipanti e poi per il gioco a
lavoro per esempio un processo di offerta a
lavoro sai che il giocatore uno inizia allora
il giocatore due arriva a girare tre quattro e
allora inizi dall’inizio
non puoi sapere solo votare tutto il tempo
una persona perché il punto di sondaggio di
il processo di offerta è che la persona X reagisce
al pezzo di persona Y giusto così hai
un po ‘di ordini e così ancora puoi fare
questo in modo dichiarativo puoi semplicemente affermare
lo stato puoi semplicemente specificarlo
questo stato offre gli eventi che vengono
in devono essere presi come a turno da
chi invia queste cose così dentro
questo caso dice solo fare a turno per
i giocatori che è solo una lista di
identità che contribuiscono a questa cosa
qui ed è tutto ciò quindi è davvero un
ordine rigoroso e c’è un timeout
quindi se questa è l’altra cosa se se fosse
c’è un ordine richiesto attraverso
a turno e qualcuno non lo fa
fare tutto questo è anche un diniego
attacco di servizio perché ora nessuno può farlo
qualsiasi cosa perché dovrei votare ma io
non è giusto
in modo da avere sempre specificare timeout
come se non votassi in questo timeout
o sei saltato o sei tipo
inizialo da tutta la storia e questo
è tutto espresso in modo dichiarativo qui sopra
il livello di stato e senza andare
nei dettagli e mostrandoti tutti questi
casi di test si sa se non si attacca
a questi
da allora il contratto fallisce e questi
le cose sono tutte basate su vari
discussioni che abbiamo avuto con blockchain
gente perché questi sono i tipi di
schemi in cui normalmente si implementano
contratti intelligenti se dovessero effettivamente
agire come un contratto tra più
parti e di nuovo manualmente
scrivendolo in modo procedurale o funzionale
il linguaggio di programmazione non è il modo di
andare penso che anche io non lo dico
la lingua particolare è quella che conosci meglio
possibile soluzione ma penso che abbia un
un paio di idee dove questo potrebbe andare
quindi lasciami tornare alle mie diapositive rimanenti
questo dovrebbe essere disabilitato non so perché
Sto vedendo questo questo è solo quello che ho appena
ho parlato per le diapositive più tardi quindi
ho un’altra cosa che voglio mostrarti
questa è una lingua che il mio amico avvocato
implementato ha chiamato una matematica in chiusura
è stato un consigliere generale del musk così
avvocato di alto livello nella logistica
industria che a un certo punto ha smesso e
deciso di apprendere la chiusura, ecco perché
vedrai molte parentesi irrilevanti
sulla diapositiva successiva scusa dovevo dirlo
così lui deve effettivamente abbiamo fatto diversi
prototipi negli ultimi anni e
il più recente che ha fatto da solo è
quello che sto per mostrarti è noi
iniziato con un grafico o un contratto per
navi perché è quello che ha fatto quando lui
era ancora a Merck e queste cose sono
davvero interessante ma questo è un
una storia diversa è piena di strani
clausole e quindi essenzialmente costruisce
chiusura interna DSL che significa se lo farai
modo di costruire un AST di un modello
perché è quello che fai qui è
ispirato da uno di questi documenti
menzionato prima dell’idea di questo poeta
Simon Peyton Jones e questo ragazzo Abel e
c’è anche un ragazzo molto interessante
chiamato Ken Adams ha scritto un libro su come
esprimi contratti esattamente come ha fatto lui
un’analisi dell’intero dominio sui concetti
nel
contratti davvero cose interessanti e lui
ha integrato anche alcune di queste cose
e ha ricostruito un elemento fondamentale come questo
sembra che la lingua n sia mancante e an
interprete per giocare con la sua roba
la sintassi della lingua ovviamente non lo è
la versione finale perché è in realtà
roba di chiusura penso che sia in realtà
niente, naturalmente, non è d’accordo, lo spero
non sta guardando così comunque quello che puoi fare
è possibile dichiarare gli obblighi e quindi
puoi specificare ad esempio un
obbligo che tu conosca il mutuatario
il mutuatario è obbligato a farlo
qualcosa per il creditore in questo caso
è un’azione che è fare un
pagamento di $ 1.000 e c’è a
descrizione e poi c’è un tempo
finestra tra quali date questo deve
capita e così in altre parole lui
implementato questa nozione di te lo sai
evento di finestra di tempo di permesso di obbligo
roba del genere e poi ha implementato
un sistema runtime in un’applicazione web
dove ottieni la rappresentazione di questo
albero in una forma più o meno leggibile qui
è possibile vedere dove queste stringhe vanno a
sono diventati queste descrizioni
qui e poi sul lato destro che hai
lo stato del contratto che è
essenzialmente una serratura degli eventi
è successo proprio così è come un replay
bloccare la cosa per ottenere un particolare reale
stato e poi puoi sfortunatamente
fuori puoi aggiungere nuovi eventi
e puoi vedere come lo stato di
modifiche contrattuali a destra e così abbiamo fatto
un altro prototipo dell’anno scorso dove noi
collegato qualcosa del genere a un
documento reale come abbiamo caricato il
documento di contratto in MP noi
evidenziato alcune parti sai dove
ha detto che devi pagare 5.000 euro – noi
rimosso i 5.000 fatti quel tipo di a
slot modello ha dato un nome variabile
e quindi utilizzare quella variabile in uno di
queste descrizioni algoritmiche così tu
avere completa tracciabilità dall’originale
contratto testuale alla cosa eseguibile
nel tuo strumento quindi senza entrare molto
più dettagli questo potrebbe essere l’inizio
punto di molto più dichiarativo e
quindi un linguaggio user friendly per
esprimere nuovamente i contratti
la sintassi particolare probabilmente ha bisogno di a
un po ‘ di lucidatura se vuoi
in realtà mostra questo agli avvocati diversi da
Martine, non so quanti avvocati
ci sono quelli che parlano di chiusura ma quello
non importa, voglio dire, il punto è
i concetti che sono lì e che cosa
sta facendo proprio ora sta prendendo
diversi contratti da cui proviene
luoghi e contesti diversi e provando
per rappresentarli lì e penso
è roba davvero interessante e
qualcosa di simile potrebbe essere mappato su
in cima alla empl che ti ho mostrato prima
perché poi ottieni tutte queste cose che conosci
per esempio garanzie di gameplay e il
capacità di debug di basso livello da quel sistema
e qui hai le cose dichiarative
in cima e quindi stiamo davvero guardando
in qualche modo adattandolo a quello
progetto di ricerca in modo che possiamo effettivamente
attuare questo così poche parole in più
la strumentazione delle cose che ti avevo mostrato
prima
ancora una volta questa roba del Colonel F è costruita su
il top dei parlamentari MP è un banco di lavoro linguistico
dovrebbe andare qui MP è una lingua
banco di lavoro da JetBrains che era nel mio
discorso di lingua ieri va bene così
i prossimi due minuti saranno noiosi
anche per me, perché ho detto così tanti
volte comunque un banco di lavoro linguistico è un
strumento che ti permette di consentire rapidamente
costruisci rapidamente nuove lingue e a
particolare vantaggio dei parlamentari è questo
supporta la modularità della lingua in modo che tu possa
prendi una lingua esistente come per
esempio il Colonnello F e aggiungi roba sopra
di esso senza cambiare la lingua
stesso così queste aggiunte come queste
scatole con materiale contrattuale dichiarativo in
sono un modulare non invasivo
estensione del funzionale di base
la lingua si fonde e questo è bello
perché in realtà puoi letteralmente crescere
una pila di lingue da basso livello
funzionali a te conosci vari
livelli intermedi fino alla fine
una versione della lingua che martine
costruito essenzialmente supporta anche mps
diversi tipi di calcestruzzo e tasse
in particolare tavoli e quindi se si guarda
a molti contratti pratici sono pieni
di tavoli come se questa volta lo sapessi
scade devi pagare X importo e roba
che se si acquista una grande nave si deve
pagare di più così roba tabulare in realtà
rappresentato come tabelle visivamente è molto
utile questo linguaggio del colonnello F.
fondamentalmente un linguaggio funzionale come me
detto che lo usiamo come una specie di kernel
nucleo di varie offerte che siamo stati
costruendo negli anni e io non ho
per citare tutte le caratteristiche qui ma
ha alcune cose di chiusura per
esempio quando ci occupiamo della chiusura dello stato
ha questi riferimenti come un modo di tipo di
definendo le caselle per lo stato mutabile che facciamo
anche questo abbiamo tipi di numeri che in
il numero di traccia del sistema di tipo varia così
puoi specificare un numero compreso tra x e y
e se calcoli qualcosa che è
fuori da questi limiti si ottiene una statica
errore che è molto utile per un tipo di
tipo di attività DSL come
contratti perché bene è un tipo
di errore le persone normali si preoccupano del giusto
quindi avrei dovuto renderlo diverso
ordine c’è un’altra cosa perché io
parlato di come una lingua come in PCL
o Martines hyper CSL penso che lo sia
chiamato come ciò aiuta a garantire il
correttezza funzionale ed evitando il genere
di scappatoie logiche perché è più facile
per esprimere le cose ma ovviamente c’è
questo altro problema che se tu in realtà
distribuire questo a un blockchain o per quello
importa qualsiasi altra esecuzione
infrastruttura allora hai il problema
che la verifica diventa un problema
giusto per cui devi essere in grado di fidarti
quell’infrastruttura che tipo di
esegui fedelmente sei ora garantito
per essere corretto contratto quindi questo non è
necessariamente la mia specialità, ma ho voluto
indica un paio di cose, per esempio
c’è anche uno sforzo da parte di Grigory Risu
e i suoi colleghi per implementare o
descrivere la semantica completa del
macchina virtuale di etherium in kk è un
specifica quadro semantica
quadro delle specifiche in modo da poter dimostrare
che non ci sono livelli di basso livello
errori nella VM stessa del corso giusto
ora la VM non lo è
come generato da quella specifica
così che c’è quella scappatoia ma io solo
letto di recente che stanno facendo questo
cosa ela probabilmente pronunciata
in modo diverso dove stanno cercando di
costruisci un po ‘diciamo più efficiente
descriveranno la semantica
in un modo che consente la generazione di a
implementazione più efficiente
forse hai un tipo di meccanica
connessione tra il semantico
specifica e l’esecuzione stessa
ovviamente questo non è qualcosa di buono io
dovrei dire in modo diverso penso che sia
ottimo marketing per la verifica
comunità di saltare in cima al
cosa blockchain giusto perché, naturalmente
questi ragazzi hanno costruito K qualche tempo fa e
hanno verificato tutti i tipi di cose
a nessuno importava e ora lo sono
verificare le cose a cui tutti si preoccupano
e così è per loro che penso molto
opportunità accolta per tipo di utilizzo
le loro cose formali in pratica quali di
corso non risolve i loro problemi
proprio così generando efficienza
implementazioni dalla semantica formale
le specifiche non sono qualcosa che è stato fatto
come sempre, quindi ci sono ancora
sfide lì
ci sono anche cose interessanti in corso
nel gruppo di Delft e professori e poi
c’è per esempio un’altra cosa che
il token ERC 20 è stato formalmente
verificato e ci sono cose in corso
la comunità di etherium formalmente
verifica del contratto di solidità in sostanza
anche integrando i risolutori in
solidità e sicuramente molto molto
verificare alcuni aspetti del
definizione così ancora una volta se torniamo a
questa immagine poi il livello più basso una volta
questo è veramente verificato e gentile
connesso all’implementazione connessa a
la specifica che è il
parte di verifica e le lingue I
mostrato prima di aiutare con la convalida
giusto quindi è una specie di riassunto di
Certo che ho dovuto aggiungere questa piccola osservazione
che questa intera storia di verifica è
davvero una vecchia storia, intendo molto
gentilissimo verificando la correttezza di
roba è fatto tutto il tempo dentro
pacemaker aerei aerei nucleari
centrali elettriche e lo trovo divertente quando io
ho sentito che conosci le persone nella blockchain
comunità che ora è quel valore reale
associato ai programmi che dobbiamo
inizia a preoccuparti della correttezza e questo
mostra davvero diciamo un po ‘limitato
vista di dove è stato utilizzato il software
passato mettiamola in questo modo siamo
recentemente costruito qualcosa nel
spazio medico dove usiamo questo insieme
Storia DSL per generare codice che si occupa
con diagnostica e medicina
prescrizioni e abbiamo fatto un sistematico
analisi del rischio e lunga storia breve
ha portato a un relativamente complicato
architettura per generare roba e
sai misurare la copertura e l’avere
diversi generatori in due diversi
runtime per ridondanza e cose del genere
quello
abbiamo ottenuto la prima fase di due FDA
approvazioni quindi siamo sulla buona strada
qui quindi forse approcci come questo potrebbero
aiuta anche nello spazio blockchain così
invece di verificare tutto formalmente
fai cose come il test di misurazione
copertura con lo stesso contratto
l’EVM e diciamo in un interprete
nell’IDE come quello che ho mostrato e
se si comportano allo stesso modo che hai
certo tu sai che le probabilità
non ci sono errori perché tu
fatto cose due volte in due differenti
roba infrastrutturale come quella che c’è a
comunità davvero molto grande di
persone che cercano di tirarsi indietro
software quindi penso che sia importante
per tipo di essere consapevoli di questo tutto bene
avvolgere c’è un po ‘ di
ulteriore lettura riguardante il mio
cose particolari come il kernel F e NPS
e questo in PCL l’ho fatto ai post medi
quello ha descritto tutta questa roba
e quindi abbiamo un riassunto vero e proprio
per ricapitolare nel mio parere contratti come
qualsiasi altro software deve essere funzionalmente
corretto ma perché di solito è un avvocato
tipo di persone che si preoccupano di questa roba
le lingue devono essere accessibili a
uomini d’affari e questo è dove il DSL
la storia arriva, dobbiamo integrarci
strumenti di verifica sia sul
livello funzionale per trovare errori logici di
dimostrando la loro assenza che era a
frase senza senso, ma credo che tu abbia capito
il punto
e anche sotto al livello sotto a
verificare l’infrastruttura che vogliamo
dare a questi avvocati le capacità di simulare
questi contratti svolgono attraverso di loro si
sai fare cosa se analisi perché si trasforma
fuori che i non programmatori per loro è
molto più facile da capire qualcosa da
giocando con esso
poi guardando il codice e lo sai
visualizzare ciò che faremo è probabilmente
anche vero per i programmatori ma non lo fanno
ammetto anche questo è quello che fanno i debugger
e quindi l’implementazione per bloccare le catene
qualcosa che ti dà non funzionale
proprietà per la tua funzionalità corretta
anche il contratto e altri schieramenti
utile per esempio distribuzioni che danno
hai un po ‘ridotto la sicurezza ma
forse più alto rendimento e uno
un esempio particolare qui potrebbe essere le cose
come reti di illuminazione leggera accese
etherium dove la sicurezza è un po ‘ ridotta
perché non ti impegni tutto
la blockchain globale in tempo reale ma
d’altra parte puoi fare cose così
sai che non ogni costo di transazione
tu un braccio e una gamba e impiega per sempre
Va bene, non ho idea del tempo
ma ho fatto le domande ok quindi sii al
app non abbiamo domande così ok sto andando
rispondi a questo
grandi chiacchiere grazie e il mio
la comprensione è un po ‘ divertente
mentale o mancante o incomprensione o
quello che mi manca è un collegamento al
mondo reale
così dai tuoi esempi questo è l’input
a tutto questo contratto quindi questo eseguibile
i programmi sono in fase di avvio, ma per quanto riguarda
contratti che hanno bisogno di una specie di
informazione
sì, per esempio, ho un contratto per
lavoro e pulisco la tua casa e poi io
ottenere soldi come si esegue tale
cosa che è un problema fondamentale di
tutta la legge eseguibile incluso il blocco
catene di destra non appena la vostra, come si
connettiti al mondo reale conosci te
ho bisogno di quello che loro chiamano un Oracle proprio alcuni
tipo di proxy che in qualche modo dice
qualcosa è successo nel mondo reale e
idealmente per certe cose come per
esempio un pagamento esso
la tua banca ti darebbe come un’API
chiamare una volta che la transazione è avvenuta
allora questa cosa particolare potrebbe essere
automatizzato in qualche modo giusto ma come te
sapere se il contratto dice che la nave ha
essere consegnato al porto fino a X.
qualcuno sta per scattare una foto e
dì che è qui giusto quindi questo è un
problema fondamentale che è il motivo per cui molti di
gli esempi di blockchain e il tipo di
punti dolci cercano di affrontare cose che
sono esclusivamente virtuali dove puoi farlo
tutto sul computer in cui è possibile
fare il controllo della presenza di se
qualcosa è successo tutto nel computer
che ovviamente limita l’utilità così
ad un certo punto devi fidarti di alcuni
tipo di osservatore proxy del mondo reale
va bene
grazie ho la sensazione che lì come
tu come hai mostrato nella tua foto lì
sono più strati di tutto il resto
hai in programma di avere un altro livello come
contrasto con il linguaggio basato MPS in cima
delle altre cose in basso lo fa
farlo lo ha anche senso
vuoi liberarti dei parlamentari sì sì no
ok ora intendo sul serio intendo di essere un
un po ‘più serio anche se lì
non c’è motivo per voler sbarazzarsi di tutti
membro, quindi questo è ancora un parco giochi
fase di sperimentazione e per quei parlamentari
è semplicemente perfetto ma ovviamente quando io
menzionato all’inizio che il
fase di definizione del contratto è dove
più parti tipo di contrattare e tu
sai collaborare hai bisogno di qualcosa che
è collaborativo quindi deve essere acceso
il browser che è il motivo per cui sia necessario
qualcosa come MP sul browser che
stiamo costruendo una storia diversa o tu
bisogno di una tecnologia diversa, ecco perché
Martin ha implementato tutto questo recinto
e tu conosci lo script di chiusura blah blah
blah browser web front-end quindi è giusto
diversi obiettivi è chiaro che per
qualcosa del genere in cui andare
la produzione non sarà parlamentare
giusto ma non è il mio obiettivo adesso
va bene a chiunque altro
sì sì sì sì così tanto da ripetere
la domanda per il video immagino cosa
penso alle lingue che sono
trovato assegnato correttamente più vicino a
tipo di testo in prosa reale leggibile
frasi e penso che questo è un questo
difficile per diversi motivi se si lascia
la gente scrive solo testo e prova ad analizzare
fuori dalla semantica questo è difficile, voglio dire
questo è il recupero semantico dell’analisi di prosa
in particolare per i contratti è un male
idea perché vuoi essere sicuro di cosa
qualcosa significa e quindi non è il
ben fatto
quindi dovresti limitare il tipo di
frasi che le persone possono scrivere devi
dare un molto stretto o ben definito
linguaggio strutturato e c’è un intero
comunità nello spazio dei requisiti per
un linguaggio naturale vincolato farebbe
esattamente quello per i requisiti che sono a
superset di questo tipo di contratti quindi io
pensa che potrebbe funzionare per
esempio solo un piccolo esempio in
kernel F possiamo associare la frase
frammenti con funzioni così invece di
funzione di chiamata aggiungi parens una virgola B
puoi scrivere aggiungere i numeri a e B
e poi quando lo chiami scrivi questo
piccolo frammento e così questo rende
chiamate di funzione leggere come un potente
frase giusta è solo una piccola parte
passo in questa direzione, quindi penso questo
è fattibile, ma è così
domanda quanto lontano tu abbia visto
lingue in cui quando si confrontano due
numeri in cui scrivi effettivamente blah blah
blah è più grande di blah blah blah
invece di usare il simbolo e così io
penso che ci sia bisogno di essere un buono
compromesso tra i modelli naturali
testo e modi simbolici di descrivere
cose che tutti sappiamo dal voto
scuola essenzialmente così la tassa olandese
agenzia usa una lettura molto frase
linguaggio per la descrizione di testi e pubblico
regole di beneficio e funziona, ma è
altamente strutturato puoi solo
solo tu puoi fondamentalmente esprimere nidificato
se / allora / altrimenti le decisioni giuste non lo sono
certo quanto bene questo scala a tutto l’uso
casi che abbiamo bisogno d’altra parte se tu
sono in grado di formalizzare i contratti in a
linguaggio limitato dal permesso e
obbligo e tempo finestra ed evento voi
so come non conosco 15 o 20 lingue
costruisce quindi, naturalmente, si potrebbe
fornire un testo in prosa come la sintassi per
quelli che vale sicuramente la pena sperimentare
tutto bene tutto bene
i poliziotti ti ringrazieranno molto Marcus, certo
Grazie
[Applausi]
Please follow and like us: