ein vertrag ist eben ein vertrag! auch wenn er unzureichend formalisiert ist.
Wieso unzureichend formalisiert? Der DAO code ist der Vertrag und formaler als code (inkl. "machine" sogar) geht ja wohl kaum noch, oder?
ich meinte es so:
normalerweise hat man eine funktionale anforderungsbeschreibung (lastenheft) welche beschreibt was die lösung können muss. mit deren hilfe formuliert der entwickler eine technische spezifikation (pflichtenheft) und setzt sie mit CODE um.
so wie ich es verstanden habe, gab es wohl eine anforderungsbeschreibung bei DAO. und auch den CODE (smart contract) natürlich.
darüberhinaus sind/waren funktionen möglich welche nicht in der anforderungsbeschreibung spezifiziert sind jedoch mit der Ethereum VM möglich sind und mit dem CODE nicht ausdrücklich ausgeschlossen wurden.
sonst hätte ja jeder von anfang an die lücke ausgenutzt. dem angreifer ist diese lücke aufgefallen weil er die funktionalitäten der Ethereum VM und den CODE genau analysiert hat. und dann hat er sie auch ausgenutzt.
also war der CODE (vertrag) unzureichend genau implementiert (beschrieben).