Betekent de #daohack het einde van slimme contracten?

| AE 8729 | Innovatie | 22 reacties

Vrijdagochtend bleek via de Ethereum-blockchain dat er ether (een soort bitcoins) weglekte van The DAO, waar mensen geld in stortten tijdens de crowdfundcampagne van deze organisatie. Dat meldde Tweakers dit weekend. The DAO is een systeem van slimme contracten op de blockchain van Ethereum, alleen daarin zat een fout waarmee een derde nu met dik 50 miljoen euro aan de haal dreigt te gaan. The DAO wil dit tegengaan door een fork, zeg maar een grote reset waarbij de betreffende transacties ongedaan gemaakt worden. Velen zijn tegen, want dan had je maar een slimmer contract moeten maken.

Oké, wacht, te veel nieuwe termen. Ik begin (ook voor mezelf, want ik snapte er weinig van) bij het begin. Blockchain is de naam voor technologie om berichten gedecentraliseerd en onvervalsbaar vast te leggen. Deze is populair geworden door de virtuele valuta Bitcoin, maar er kan veel meer mee. Je kunt bijvoorbeeld contractuele afspraken in zo’n bericht stoppen, dan ligt die afspraak ook onbetwistbaar vast. En je kunt zelfs die contracten ‘slim’ maken, zeg maar dat ze zelf nagaan welke bepalingen van kracht worden en dat uitvoeren ook. Bijvoorbeeld constateren dat het 1 juli is en bedrijf X nog steeds niet failliet, dan bedrag X betalen aan bedrijf X. (Wat we vroeger autonomous agents noemden.)

The DAO is een gedecentraliseerd investeringsvehikel dat opgezet is middels een berg van die slimme contracten, gebruik makend van de Ethereum-blockchainimplementatie. In een van die contracten staat een foutje, althans een onbedoelde feature, waardoor een hacker een zogeheten child DAO, zeg maar een dochtermaatschappij van DAO, op kon zetten waar hij eigenaar van is en waar hij vervolgens rustig geld heen kon pompen.

Ik zeg “foutje, althans onbedoelde feature” want hoewel het namelijk evident is dat The DAO dit niet heeft gewild, zijn er geen illegale hacks of dergelijke uitgevoerd. De hacker zegt zelf:

I have carefully examined the code of The DAO and decided to participate after finding the feature where splitting is rewarded with additional ether. I have made use of this feature and have rightfully claimed 3,641,694 ether, and would like to thank the DAO for this reward. It is my understanding that the DAO code contains this feature to promote decentralization and encourage the creation of “child DAOs”.I am disappointed by those who are characterizing the use of this intentional feature as “theft”. I am making use of this explicitly coded feature as per the smart contract terms and my law firm has advised me that my action is fully compliant with United States criminal and tort law.

Dit standpunt is niet meteen absurd; The DAO is opgezet als een systeem van slimme contracten waarbij de code van die contracten bepalend is voor wat er kan en mag. DAO zegt zelf:

The terms of The DAO Creation are set forth in the smart contract code existing on the Ethereum blockchain at 0xbb9bc244d798123fde783fcc1c72d3bb8c189413. Nothing in this explanation of terms or in any other document or communication may modify or add any additional obligations or guarantees beyond those set forth in The DAO’s code.

Bijgevolg is dus een clausule uit dat slimme contract kennelijk bindend, ongeacht wat er elders is gezegd of wat de bedoeling zou zijn geweest.

Althans, dat zou je denken want smart contracts, Ethereum en het splitten van gedistribueerde autonome organisaties, dat is wel nieuw maar gaatjes vinden in contracten, daar dealen juristen al zo’n 3000 jaar mee. En voor mij als jurist voelt het als standaardtruc 37 om in een contract te zeggen “alleen wat hier in het contract staat, is bindend en wel ongeacht bedoeling”. Daarmee win je echt niet volautomatisch het pleit.

Standaardclausule 37 in contractenland is namelijk:

This agreement contains the entire understanding of the parties hereto with respect to the transactions and matters contemplated hereby, from and after the effective date, and supersedes all previous agreements between the parties concerning the same.

De Hoge Raad bepaalde in het Lundiform/Mexx arrest (2013) echter dat je er daarmee niet automatisch bent. De rechter kan en mag nog steeds kijken naar “verklaringen die zijn afgelegd dan wel gedragingen die zijn verricht, in het stadium voorafgaand aan het sluiten van de overeenkomst.” In jargon: mogen Haviltexen kan niet worden weggecontracteerd. Wat hadden partijen bedoeld toen ze dit zo opschreven (programmeerden?) in het slimme contract? Wat beoogde deze clausule te bereiken en hoe is deze ingezet? Lag dit voor de hand of is het een zeer vergezochte lezing die eigenlijk gewoon niet had gemoeten?

De clausule is natuurlijk wel een relevante factor. De rechter zal heus niet zomaar het hele contract wegmikken en zelf verzinnen wat partijen ongeveer bedoeld zullen hebben. Maar al te bijdehante lezingen van een contract, zeker als ze leiden tot hele rare conclusies en/of grote schade bij een partij, gaan al snel het raam uit, ongeacht wat er in het contract nu letterlijk stáát.

Maar goed, ondertussen zit die The DAO wel met de gebakken peren want deze transactie is juridisch lastig terug te draaien (vind de hacker maar eens) en binnen het netwerk lijkt men er niet aan te willen. Dan corrumpeer je het hele idee immers van betrouwbare slimme contracten; als één partij kan zeggen, sorry we gaan terug naar vorige week met alles, dan kun je dat netwerk niet meer decentraal noemen. Bovendien zou de hacker dan aangifte kunnen doen van diefstal bedenk ik me nu: zijn waardevolle ethers zijn hem ineens via eigenrichting ontnomen terwijl er een contract lag dat hem er recht op gaf.

Betekent dat nu het einde van slimme contracten in het algemeen? Dat denk ik niet. Voor dit soort zeer geavanceerde constructies zal nu een stuk koudwatervrees ontstaan, maar het idee is niet superspannend en de implicaties zijn gewoon te overzien als je er goed voor gaat zitten met een slimmecontractenschrijver (m/v).

Arnoud

Deel dit artikel

  1. Onvervalsbaar en onbetwistbaar is het volgens mij beide niet, het is alleen lastig gemaakt. De veelvuldige vastlegging draagt iets bij aan het vertrouwen dat wijziging niet heeft plaatsgevonden. Het gaat dan om integriteit van de vastlegging. Overigens is de zwakte in het geheel dat de “feature” onbegrensd gebruikt kan worden en dat dat kennelijk te laat wordt opgemerkt. Er ontbreekt dus iets in de buitenwereld van het contract, de dagelijkse toepassing met toezicht.

  2. Volgens mij is het juist de bedoeling van smart contracts dat ze zonder rechter kunnen worden gehandhaafd. Dat betekent dus ook dat het de bedoeling is dat buitenstaanders, inclusief rechters, niets moeten kunnen veranderen aan de uitvoering van zo’n contract. De voorwaarden van het contract zijn heel strak en rechtlijnig vastgelegd, en zullen als zodanig worden uitgevoerd, zoals we van computers gewend zijn.

    In die rechtlijnigheid van computers is natuurlijk helemaal geen ruimte voor zoiets als “redelijkheid”, wat met name Nederlandse rechters juist wel hanteren. Dat heeft grote nadelen (deze hack is een duidelijk voorbeeld), maar het voordeel is volkomen voorspelbaarheid. Ik wilde eigenlijk duidelijkheid zeggen, maar de duidelijkheid kan nog obfuscated worden door de complexiteit van zulke smart contracts.

    Ik denk dat zulke smart contracts wel een nuttig instrument zijn, maar de les moet zijn “keep it simple. Very simple”. Ik ben zelf wel bezig met smart contracts waarin misschien maar 3..6 clausules zitten, maar zelfs dan kom ik af en toe nog onverwachte edge cases tegen. Het is zoiets als hacker-proof software maken, maar dan waarbij 100% van je code een attack surface is, en de hacker per definitie voordeel kan halen uit een hack.

    Zoiets als een DAO is een heel vooruitstrevend idee, maar ik denk dat het voorlopig een brug te ver is. Zolang we niet weten hoe we smart contracts van een paar regels kunnen maken zonder loopholes, moet je niet beginnen aan constructies die bestaan uit meerdere bladzijden code. “De” DAO was een leuk en leerzaam experiment, maar ik ben blij dat mijn geld er niet in zat.

    • Wie heeft die term “slim” ooit bedacht? Computers zijn juist ongelofelijk dom en volgen slaafs de instructies die je er in programmeert. You get what you asked for…

      De” DAO was een leuk en leerzaam experiment, maar ik ben blij dat mijn geld er niet in zat.

      De mensen die hier geld in staken hebben eigenlijk erop gewed dat de opstellers van het “contract” (wat eigenlijk gewoon een computerprogramma is) foutloze software kunnen schrijven. Die weddenschap wil ik wel met hun aangaan, iedere keer weer, tot ze leren dat dat echt niet kan 🙂

    • Nou ja, dat is natuurlijk ook de bedoeling van ieder papieren contract. Helaas laat de praktijk zien dat dat nog niet meevalt. Hoe helder je je tekst ook schrijft, achteraf is er altijd een situatie die net niet goed gedekt wordt en waar dan ruzie over komt. Net zoals je code nog zo goed getest en gevalideerd kan zijn, maar er altijd een bug zal zijn in een onverwachte situatie.

      Het verschil tussen een papieren en een ‘smart’ contract is dat de laatste in de vorm van een algoritme is uitgeschreven. Dus waar ik zeg “Klant zal binnen 30 dagen na ontvangst betalen” en maar hoop dat hij dat ook werkelijk doet, zegt een smart contract “if gekochte.Ontvangen && (date.now() – gekochte.Leverdatum >= 30 * 246060) then betaling.Perform()”. Ik zie het wezenlijk verschil niet.

      • Het verschil tussen een papieren en een ‘smart’ contract is dat de laatste in de vorm van een algoritme is uitgeschreven. Dus waar ik zeg “Klant zal binnen 30 dagen na ontvangst betalen” en maar hoop dat hij dat ook werkelijk doet, zegt een smart contract “if gekochte.Ontvangen && (date.now() – gekochte.Leverdatum >= 30 * 246060) then betaling.Perform()”. Ik zie het wezenlijk verschil niet.

        Zoals ik het begrijp, en het wordt ook in de reacties hierboven gezegd, is het de bedoeling dat een “smart” contract juist zonder tussenkomst van mensen volautomatisch wordt gehandhaafd. Dat betekent dat fouten op veel grotere schaal misbruikt kunnen worden. Dit is het aspect van automatisering waar de meeste mensen blind voor zijn, wat ook zorgt dat bijvoorbeeld beveiligingsproblemen in digitale systemen zo’n enorm veel grotere impact hebben dan slordigheid met papieren dossiers, bijvoorbeeld.

        Bovendien, als het hele idee is dat zo’n contract bedoeld is om autonoom te functioneren, en er wordt gesteld dat dit juist de belangrijkste feature is: de termen in het contract worden uitsluitend door machines gehandhaafd, dan probeer je een rechter zelfs met opzet buiten te sluiten. Dat lijkt me niet de bedoeling.

      • Het verschil zit in de manier waarop het wordt gehandhaafd. Bij een papieren contract stap je, in geval je er samen niet uit komt, naar de rechter. Die rechter kijkt er naar, maakt zijn eigen interpretatie van wat het contract zou moeten doen, en geeft een oordeel.

        Smart contracts worden niet aan een rechter voorgelegd, maar worden uitgevoerd door een heleboel computers die een decentraal netwerk vormen. De enige menselijke keuze die daar in zit is de keuze voor wat voor software de deelnemers van dat netwerk draaien, maar zolang de meerderheid(*) maar de oorspronkelijke software gebruikt zal het contract precies zo worden uitgevoerd als het is opgeschreven.

        Doordat een smart contract in een programmeertaal is geschreven is het zo dat, zolang die programmeertaal geen ambiguïteit heeft, het smart contract dat ook niet heeft. Het komt dus niet voor dat er een situatie is die niet gedekt is; het kan natuurlijk wel zijn dat er situaties zijn waar de opstellers niet over nagedacht hebben. Het smart contract zal in die situaties ook een bepaald “gedrag” hebben, maar niet per sé gedrag waar alle betrokken partijen blij mee zijn.

        (*) Voor verschillende regels gelden verschillende soorten meerderheden. Bij sommige regels zal, in geval van onenigheid, het netwerk splitsen (“forken”) in een community die de ene set regels volgt en een community die de andere set regels volgt. Dan geldt de economische meerderheid: iedereen heeft de regels waar ‘ie zelf voor kiest, maar de kleinste community heeft de minste invloed. Bij andere regels geldt de meeste rekenkracht als bepalend: dit is waar het bekende “mining” voor nodig is bij dit soort systemen. Helaas is “one man one vote” niet haalbaar: het is voor software niet verifieerbaar of meerdere identiteiten wel/niet bij de zelfde persoon horen.

        • Definieer “ambiguïteit”. Natuurlijk betekent een instructie maar één ding, maar je kunt best een side effect vergeten zijn of een use case gepasseerd zijn. Dat vind ik dan nog steeds een ambigu contract. In mijn contract kun je bijvoorbeeld je afvragen of in die 30 dagen niet de feestdagen uitgesloten moeten zijn. Is dat redelijkerwijs niet inbegrepen bij “30 dagen”? En is het een bug dat ik >= in plaats van > zei, want iedereen weet dat de 30 dagen pas beginnen de dag ná de leverdatum. Of is dat dan kennelijk de bedoeling?

          • Dat kan allemaal: je kunt allerlei dingen vergeten zijn, en er kunnen daardoor allerlei “bugs” in het contract zitten. Dat maakt het contract nog niet ambigu: het contract is gewoon wat het is, het contract zelf heeft een goed gedefinieerde betekenis, en wordt als zodanig uitgevoerd, ongeacht de “fouten” die er eventueel in staan.

            Wat wel of niet een “fout” is is natuurlijk wel voor allerlei uitleg vatbaar. De “DAO-hacker” schreef, enigszins ludiek, dat de bug eigenlijk een feature was, die hem terecht beloonde voor het de-centraliseren van de DAO. Een “fout” is eigenlijk een mismatch tussen de betekenis van het contract zelf, en de bedoelingen van degenen die het contract zijn aangegaan. Bedoelingen kunnen verschillend zijn tussen verschillende personen, mensen kunnen hun bedoelingen in de loop van de tijd veranderen, en mensen kunnen dingen over het hoofd zien bij het bedenken van wat ze nou eigenlijk willen. Aan de bedoelingen-kant kan allerlei ambiguïteit zitten, maar niet aan de kant van de contract-code zelf. Die is gewoon wat ‘ie is, ongeacht wat anderen er van vinden.

            • Maar het gáát precies om die verschillen tussen bedoeling en hoe het opgeschreven/geprogrammeerd werd. Ook bij slimme contracten zijn er bedoelingen die worden vertaald naar clausules, en daarbij worden dan vertaalfouten gemaakt. De vraag is dan wat er moet gebeuren.

              Bij geschreven contracten wordt de bedoeling meegenomen. Dat kan, want rechters zijn do-what-I-mean compilers en kunnen die abstracte analyse maken: “Er staat 30 dagen en in het handelsverkeer begint dat op de dag na de leverdatum, plus als het eindigt op zondag dan wordt het maandag.” Computers zijn do-what-I-say compilers: “er staat now() - levering.Datum > 302460*60 dus te laat. Dan had iemand maar moeten inbouwen dat als het now() een zondag is, het 31 ipv 30 wordt. Oh en dat het überhaupt al 31 was want je telde dus de dag ná levering.

              Het is dat “dan had je maar” dat hier botst. Het recht werkt zo niet, want dat is te hardvochtig en leidt tot onbillijke resultaten. Als iedereen gewoon snapt dat betalen op zondag niet kan, dan is het gewoon logisch dat maandag de laatste dag is.

              Ik zie niet waarom het schrijven van je contract in een programmeertaal betekent dat die hele redelijkheid het raam uit kan.

              • En dat is dus precies waarom het verschil met papieren contracten wel wezenlijk is. Smart contracts worden wel op een “do what I say” manier uitgevoerd. Er is geen redelijkheid, en er is geen rechter die er iets over te zeggen heeft. Dat is, tenzij het contract expliciet een rechter die autoriteit geeft, en die clausule geen bugs bevat.

                En ja, het kan zomaar zijn dat dat hardvochtig is en tot onbillijke resultaten leidt. Het is een beetje “be careful what you wish for”. De investeerders in de DAO wilden (hopelijk(*)) op deze manier zaken doen, en moeten nu op de blaren zitten.

                Meer algemeen gesproken is er volgens mij in het recht altijd wel een spanning tussen rechtszekerheid en redelijkheid. Elke keer als een rechter bepaalt dat het wel zo staat in het contract, maar het nooit zo bedoeld kan zijn, wordt er gekozen voor redelijkheid ten koste van rechtszekerheid. Die redelijkheid is soms voor meerdere uitleg vatbaar; het zal regelmatig voorkomen dat de ene partij iets redelijk vindt en de andere partij juist niet. De “smart contract” manier van werken zit radicaal aan de andere kant van de schaal, waarbij alle redelijkheid overboord gaat, om de rechtszekerheid te garanderen.

                (*) Ik mag hopen dat ze zichzelf goed hebben geïnformeerd over de aard van datgene waar ze in investeerden, maar goed, niet iedereen doet dat. En blijkbaar hebben ze deze bug ook over het hoofd gezien.

                • Maar dan stel ik: dat kán niet. De gekozen taal om je contract in op te schrijven verandert niets aan het feit dat je een contract opstelt, en daarvoor zijn gewoon dwingende regels uit de wet. We hadden zo’n 10 jaar terug een poging dat te veranderen: als twee grote bedrijven een contract opstellen met deskundige juridische bijstand en dan opschrijven “alleen de tekst geldt, de redelijkheid en de bedoelingen doen niet mee”, dan moet dat dáár toch bindend zijn? Als grote jongens met dure advocaten moet je dan maar goed nadenken. Nee, zegt de Hoge Raad (Lundiform/Mexx arrest, 2013). De redelijkheid doet áltijd mee en je past altijd do-what-I-mean toe. Dus waarom meot dat anders zijn bij contracten in programmeertaal ipv in het Nederlands?

                  • Ik denk dat Ether en de DAO juist zijn opgezet omdat men het onwenselijk vond dat het niet mogelijk is om een contract “precies zoals het er staat” te sluiten. De oplossing zou dan liggen in een systeem waar de uitkomst door computer-concensus wordt besloten, en een enkele macht (rechter/staat) daar geen invloed op kan uitoefenen (zonder een meerderheid op het netwerk daartoe te moeten dwingen, wat uiteraard als vrijwel onmogelijk werd geacht).

                    Het hele probleem zit hem dus precies in de discussie die je hier probeert te voeren: aan de ene kant de mensen die vinden dat recht toch altijd rechters nodig zal hebben om te kijken naar de bedoeling van het contract (Arnouds kant), en aan de andere kant mensen die het wenselijk vinden om contracten te kunnen afsluiten zonder “onvoorspelbare” rechters.

                    De eerste groep zal strijden voor een “fork” waarin de onbedoelde uitkomst van het contract wordt teruggedraaid, terwijl de andere groep juist van mening is dat de (determineerbare) uitkomst van het contract bindend moet zijn en dus hoopt dat deze fork nooit een meerderheid zal behalen. Vooral die laatste groep is ook bang voor een precedent: als voor dit contract uitzonderingen worden gemaakt, dan gaat het hele idee van volledig deterministische contracten dus eigenlijk gewoon het raam uit…

                    • Eens, dat denk ik ook. Maar you can’t hack the law. Als het niet via het systeem kan (wat ik graag geloof) dan maar buiten het systeem. Hier, een dwangsom voor elke dag dat je de waarde van de onterchte transactie niet vergoedt. Niet betalen, oké, lijfsdwang tot het geregeld is.

                      En ik weet niet of ik ‘vind’ dat ze nodig zijn. Ik denk dat het onvermijdelijk is. Er zullen áltijd edge cases zijn die niet voorzien waren en nu ineens tot hele rare uitkomsten leiden, en mensen gaan het dan niet altijd accepteren dat “computer says money poof”. Dat zie je bij The DAO; hoewel de code het toestond was het zó niet de bedoeling dat iedereen aanvoelt dat het niet had moeten kunnen. Het doet me een beetje denken aan discussies op forums die men ongemodereerd wil toestaan. Daar gaat het áltijd ergens mis en dan moet er iemand ingrijpen. Of iemand misbruikt zijn macht en dan moet een hoger iemand daar weer wat aan doen. Kijk naar reddit met hun zelforganiserende subreddits, waar af en toe toch de admins met de bezem doorheen moeten.

                  • Het gebeurt, dus het kan blijkbaar.

                    Misschien is het begrip “contract” verwarrend. Normaal gesproken versta je onder “contract” waarschijnlijk iets dat door een rechter wordt geïnterpreteerd, en onderhevig is aan normen die in wetgeving zijn vastgelegd. Deze “smart contracts” zijn net iets anders: dit zijn meer computer-programma’s, die digitale assets (zoals bitcoins of ether) beheren.

                    Natuurlijk kan een rechter dan altijd zeggen “dit mag niet”, of “jij moet die dingen terug geven die de DAO aan jou heeft toegekend”. Iedereen kan zulke dingen zeggen. Het is alleen wel zo dat dit soort systemen zo de-centraal zijn opgezet dat overheden, rechters en dergelijke geen invloed kunnen uitoefenen op het systeem als geheel. Zolang de deelnemers anoniem blijven kan ook via die route geen invloed worden uitgeoefend. Dit valt dus de facto buiten de jurisdictie van nationale wetten.

                    Juridisch gezien is misschien nog het meest interessante de verschillende claims die er wel worden gemaakt op juridische grond. Bijvoorbeeld de hacker zelf die schrijft dat “my law firm has advised me that my action is fully compliant with United States criminal and tort law”. Of die DAO explainer die vol met juridische taal zit. Waarom zou je dat soort dingen uiten, als de wet toch geen grip op je heeft? Misschien omdat je bang bent dat je misschien toch een keer voor de rechter komt? In dat geval is er alsnog niets nieuws aan “smart contracts”, omdat de eind-uitkomst alsnog door rechters wordt bepaald.

                    Ik denk dat het grote voordeel van “smart contracts” toch zit in het buiten-nationale-jurisdicties-kunnen-plaatsen. Dat je zaken kunt doen zonder dat je uiteindelijk de overheid nodig hebt als scheidsrechter. Dit lijkt me vooral nuttig als de overheid (of rechters) nogal corrupt zijn (in brede zin; niet alleen omkoping die je alleen in derdewereldlanden verwacht). Alleen: omdat de redelijkheid overboord gaat, moet je er erg mee oppassen. Je moet zeker weten dat er geen fouten in je smart contracts zitten, en daarom kan je je maar beter beperken tot heel eenvoudige constructies. Dat heeft de DAO niet gedaan.

                    • Ik twijfel of het gebeurt. Ik snap dat de smart contract-mensen dénken dat ze een letterlijk-contract hebben gemaakt dat enkel algoritmisch uitgelegd wordt. Maar ik vermoed dus dat ook dan de rechter desgevraagd gewoon de bedoeling van partijen er overheen giet en dan constateert dat de computer het contract verkeerd uitvoerde. Die zei dan wel, de 30 dagen zijn verstreken, maar het contractprogramma hád de zondag/maandagregel moeten implementeren dus de 30 dagen zijn niet verstreken en de wettelijke rente voor te laat betalen moet nu terug. Regel het maar, en voor iedere dag dat dat geld niet teruggestort is moet jij een dwangsom van 1000 euro betalen. In euro’s.

                      Voor mij is C-code niet anders dan Nederlands. Je kunt/moet alleen iets preciezer omschrijven wat je wilt, want een computer heeft geen woordenboek of achtergrondkennis. Dus voor mij is de ophef over smart contracts niet meer dan dat: heel mooi dat je automatisch contracten kunt samenstellen en dat de uitvoering geautomatiseerd verloopt, maar het zijn en blijven contracten.

                      • De jure heb je misschien gelijk: vroeg of laat zal er ergens een rechter zijn die gevraagd wordt een uitspraak te doen over een smart contract, en zijn/haar uitspraak kan heel goed, zoals jij schrijft, afwijken van de letterlijke inhoud van het smart contract.

                        De facto is dat alleen vrij betekenisloos, als de uitspraak van de rechter niet gehandhaafd kan worden, en de letterlijke uitkomst van het smart contract wel.

                        Dat betekent wat mij betreft helemaal niet dat smart contracts slecht zouden zijn, omdat ze de de rechter buiten spel zetten: in principe kiezen degenen die een smart contract aan gaan daar zelf voor. Het is ook geen complete afwezigheid van rechtshandhaving: het is alleen een andere rechtshandhaving, waarin weinig ruimte is voor in redelijkheid afwijken van de letterlijke voorwaarden, en alle prioriteit wordt gegeven aan betrouwbaarheid en rechtszekerheid. Het is een systeem waarin je helemaal vrij kunt handelen, onafhankelijk van de overheid, maar ook geen bescherming krijgt van de overheid, en je dus ook zelf verantwoordelijk bent voor je eigen bescherming. Voor sommige mensen, in sommige situaties, is dat een aantrekkelijk systeem.

                        Tot slot: binnen de context van smart contracts kan je best clausules formuleren waarmee een bepaalde rechter of andere autoriteit ook de facto iets te zeggen krijgt over een contract. Een voorbeeld van zo’n constructie is de 2-van-de-3 multi-signature (ook beschikbaar in Bitcoin): er worden 3 public keys gegeven (partij A, partij B en rechter), en een transactie die de bitcoins / ethers ergens anders naartoe stuurt moet 2 van de 3 overeenkomstige handtekeningen hebben. Als A en B er samen uit komen hebben ze de rechter niet nodig; zo niet, dan stappen ze naar de rechter, en de rechter geeft 1 van beide gelijk, en zet zijn handtekening onder een transactie die door die partij is geformuleerd en ondertekend. In zo’n systeem heeft het smart contract systeem de facto de macht, maar het delegeert effectief een deel van die macht naar een (menselijke) rechter.

                        • Heel goed punt: een ander systeem van werken en daarmee andere rechtsopvattingen. Ja, daar zie ik wel wat in en dan zou het nog zomaar kunnen dat een rechter tóch zegt, u had de code/voorwaarden maar beter moeten lezen want in deze keiharde marktplaats werkt het zo. Net als je op een veiling niet je hand op moet steken om iemand te begroeten of op de veemarkt voor de grap eens handjeklap uitproberen met een boer.

                          Die arbitrage zie ik wel wat in. Wat ik me nu afvraag, in hoeverre zijn er standaardroutines voor smart contracts? Want dingen als einddatums van een termijn uitrekenen of een arbiter erbij halen, dat lijkt me nou typisch iets dat je niet in elk contract opnieuw wil doen. Dan zouden standaardbibliotheken best handig zijn. In feite heb je dan het wetboek geautomatiseerd 🙂

                          • Ik heb het idee dat het kwartje bij jou nu is gevallen. Ik denk wel, als het voor jou als ICT-jurist al zo veel moeite kost, dat dit systeem wel enorm gevoelig is voor het “rechter-snapt-geen-ICT”-syndroom, dus dat wel nog wel wat tenenkrommende uitspraken tegemoet mogen zien.

                            Wat betreft standaardroutines: die smart contracts staan echt nog in de kinderschoenen; daar is het nu volgens mij nog te vroeg voor. De mensen bij Ethereum zijn hierin het meest vooruitstrevend; daar zul je dus ook het eerste zulke standaardroutines tegen komen, maar je zult het daar ook het eerste fout zien gaan (de DAO hack dus). Het schrijven van goede, veilige smart contracts is behoorlijk lastig; zeker een orde groter lastiger dan het schrijven van software waar geen beveiligingslekken in zitten. De grootste smart contracts die ik heb geschreven hebben misschien iets van 10 instructies, en zelfs dan is het al een behoorlijke puzzel. Zolang we geen betere manier ontwikkelen om smart contracts op te stellen denk ik dat de complexiteit van reguliere software niet veilig is te realiseren in smart contracts.

  3. Overigens is de open brief van de hacker fake – de signatures valideren niet. Neemt niet weg dat er een interessant punt gemaakt wordt, maar wel jammer dat ook jij het klakkeloos voor waar aanneemt terwijl het al een tijdje bekend is dat het een hoax betreft.

  4. Ik denk niet, dat we die kant op moeten, zeker aangezien veel juristen niet moraliteit hoog in het vaandel hebben, maar sluw handelen voor het bedrijf, waar ze voor werken. Persoonlijk contact en iemand, die je om raad kan vragen en aan zijn jasje kunt trekken, als het misgaat, lijkt me beter dan ‘blockchain’. Goedkoop is duurkoop.

    • Mee eens dat je maar beter goed advies in kunt winnen. Mee eens dat je de opstellers van een smart contract niet zomaar moet vertrouwen: die dienen waarschijnlijk hun eigen belangen, en niet die van jou. Verder is, met name bij smart contracts die op de block chain worden gehandhaafd van belang dat je van te voren goed advies inwint, voordat je zo’n smart contract aan gaat: als je er al in zit, en er gaat iets mis, dan is het echt te laat.

      Vergelijk het met een schip, waarvan je niet zeker weet of het zeewaardig is. Je kunt dat maar beter aan experts vragen, voordat je de zee op gaat. Als je op zee in een storm terecht komt is het echt te laat.

      Het algemene advies bij smart contracts moet volgens mij zijn dat je absoluut niet in zee moet met ingewikkelde contracten die moeilijk te zijn overzien. Met eenvoudige, veel gebruikte constructies lijkt me dan weer niets mis, zolang een betrouwbare adviseur maar goed uit legt wat het wel/niet doet. In wezen maakt iedereen die bitcoins heeft gebruik van eenvoudige, triviale smart contracts die de bitcoins aan hem/haar toewijzen.

      Ik denk trouwens dat het opstellen van smart contracts op dit moment meer wordt gedaan door software-ontwikkelaars, die verstand hebben van cryptografie en speltheorie, dan door juristen, die verstand hebben van wetgeving. Dat verandert weinig aan de argumentatie: net zoals juristen moet je software-ontwikkelaars ook niet zomaar vertrouwen.

Laat een reactie achter

Handige HTML: <a href=""> voor hyperlinks, <blockquote> om te citeren en <em> en <strong> voor italics en vet.

(verplicht)

Volg de reacties per RSS