Multisig in Theorie und Praxis

The double locked door. Foto von momentcaptured1 via flickr.com. Lizenz: Creative Commons

Reden wir über Multisig. Wie kann man eine Bitcoin-Adresse auf mehrere Leute aufteilen? Wie bildet man komplexe Multisig-Verträge, und, vor allem: mit welcher Wallet kann man sie einigermaßen bequem benutzen? Außerdem erklären wir, wie Multisig technologisch funktioniert und warum mehr passiert, als dass ein privater Schlüssel zerschnitten wird.

Multisig – falls Sie dieses Wort schon mal gehört haben, Ihnen aber nicht ganz klar ist, was es bedeutet – machen Sie sich nichts draus. In der Welt der Kryptowährungen ist Multisig das größere Einmaleins. Es bedeutet, dass man eine Bitcoin-Adresse bildet, deren Guthaben nur ausgezahlt werden kann, wenn mehrere private Schlüssel eine Transaktion signieren. Sprich: eine Multisig-Adresse funktioniert so ähnlich wie ein Kautionskonto. Nur, natürlich, etwas anderes. Wir reden schließlich von Bitcoins. In diesem Beitrag versuchen wir, Ihnen einen möglichst umfassenden und gleichzeitig einfachen Überblick über den Themenkomplex Multisig zu geben.

  1. Warum Multisig die echte Revolution ist
  2. Wie Multisig unter der Haube funktioniert
  3. Ein Multisig-Tutorial für Electrum

Warum nicht Bitcoin, sondern Multisig die echte Revolution ist

Mit Bitcoin habe wir ein dezentrales, zensur- und inflationsresistentes Geld, was schon an und für sich ziemlich toll und neu und revolutionär ist ist. Wenn es aber darum geht, was nun die echte, die große und umfassende Revolution auslösen könnte, landen wir bei Multisig. Bitcoin dezentralisiert Geld – Multisig dezentralisiert Verträge. Erst mit Multisig können wir Mittelsmänner ausschalten und den Handel und das Unternehmertum dezentralisieren. Multisig ist das, was den Unterschied ausmacht.

Multisig-Transaktionen entsprechen wie gesagt dem Kautionskonto, das anzulegen jeder anständige Vermieter von seinen Mietern verlangt: Um die Bitcoins, die auf einer Multisig-Adresse liegen, zu überweisen, müssen mehrere Parteien die Transaktion signieren. Wieviele Parteien von wievielen Beteiligten das sein müssen, ist beliebig wählbar. Es gibt “n” Personen, die signieren können, von denen “m” Personen signieren müssen, damit etwas passiert. Es können 2 von 2 Leute notwendig sein, oder 2 von 3, oder auch 5 von 8, oder 9 von 10, oder 11 von 20 …

Einfache Treuhand-Konstruktionen

Solche Multisig-Konstruktionen sind revolutionär, weil man mit ihnen so vieles dezentralisieren kann. Satoshi Nakamoto beschrieb bereits 2010 die einfachste Treuhand-Konstruktion, in der 2 von 2 Parteien signieren müssen:

Man kann eine Transaktion schreiben, die zwei Signaturen benötigt, um weiter ausgegeben zu werden. Du schreibst eine Zahlung, die die Signatur sowohl vom Empfänger als auch vom Sender benötigt, um ausgegeben zu werden. Um die Treuhand freizugeben, gibst du dem Empfänger deine signierte Hälfte, oder der Empfänger gibt die Zahlung zurück, indem er dir seine signierte Hälfte gibt. In diesem einfachen Fall ist kein Mediator nötig. Der Rückanspruch ist die Weigerung, die Treuhand jemals zu befreien, was das Geld verbrennen würde.

Mit einer solchen Konstruktion könnten zwei Parteien, die etwa auf Allcoin.de miteinander handeln, für Sicherheit sorgen. Bereits sie ersetzt die treuhänderische Funktion von Mittelsmännern wie ebay. Man kann dies beispielsweise auf den internationalen Handel übertragen, in denen die Bezahlung von Schiffsladungen teilweise große Probleme darstellt, die über (teure und langsame) finanzielle Mittelsmänner gelöst werden. Wer garantiert, dass eine Schiffsladung Güter im Wert mehrere Millionen bezahlt wird, nachdem sie auf dem Meer ist – und wer garantiert, dass sie auch wirklich ankommt, nachdem sie bezahlt ist? Mit Multisig-Transaktionen lässt sich dieses Problem relativ einfach lösen, wie es bereits die französische Megabank BNP Paribas 2014 beschrieben hat.

2 von 3 Konstruktionen bei OpenBazaar

In der Regel werden aber “2 von 3” K0nstruktionen verwendet, um dafür zu sorgen, dass nicht eine Partei die Bitcoins der anderen Partei zur Geisel nehmen kann. In diesem Fall müssen 2 von 3 Parteien eine Transaktion signieren. Neben Käufer und Verkäufer gehört dazu noch ein Schlichter, der nur eingeschaltet wird, wenn sich Käufer und Verkäufer nicht einig sind. Er kann dann die Gegebenheiten prüfen und die Bitcoins befreien. Dieses Prinzip wird von OpenBazaar verwendet, wo sich jeder als Schlichter bewerben kann, womit die Rolle zentralisierter Mittelsmänner dezentralisiert wird.

Derzeit bedeutet E-Kommerz, zentralisierte Plattformen zu benutzen. eBay, Amazon und andere große Firmen haben restriktive Politiken und verlangen Gebühren, um Waren anzubieten und zu verkaufen. Sie akzeptieren nur Zahlungsweisen, die sowohl den Käufer als auch den Verkäufer Geld kosten, etwa Kreditkarten oder PayPal. Sie verlangen persönliche Informationen, die gestohlen oder verkauft werden können […]

OpenBazaar ist ein anderer Ansatz. Es gibt die Macht zurück in die Hände der User. Anstatt dass Käufer und Verkäufer durch einen zentralisieren Service gehen, verbindet OpenBazaar sie direkt. Weil es keinen Mittelsmann gibt, gibt es keine Gebühren, keine Restriktionen, keine Accounts, und man verrät nur die persönlichen Informationen, die man verraten möchte.

So OpenBazaar auf dem Blog.

Die 2 von 3 Multisig-Konstruktion wird bei OpenBazaar zur grundlegenden Mechanik eines dezentralen, auf Reputation basierenden Marktplatzes.

Multisig im Lightning Netzwerk

Aber nicht nur das. Multisig-Konstruktionen ermöglichen es, zahlreiche Organisationsformen zu dezentralieren. Ein Beispiel ist das Lightning Netzwerk, dieses wahnwitzig komplizierte Vertragswerk, welches dafür sorgt, dass zwei Parteien einen Payment-Channel eröffnen können, ohne dass eine von ihnen betrügen kann. Das Lightning-Netzwerk nutzt Multisig – und bildet etwas, das man als dezentralen Payment-Dienstleister wie PayPal bezeichnen kann.

… in der DAO

Auch die DAO, die heißeste und am spektakulärsten gescheiterte Krypto-Innovation dieses Jahres, beruht mehr oder weniger auf Multisig-Verfahren. Ein Smart Contract bestimmt, dass eine bestimmte Anzahl von Teilnehmern eine Transaktion signieren muss, damit die DAO einen “Contractor” für eine Dienstleistung bezahlt. Mit Multisig-Verträgen lassen sich die vielfältigsten Organisationsmodelle abbilden, in denen es darum geht, dass kollektiv Entscheidungen über die Verwendung von Geld getroffen wird.

… in einer dezentralen Versicherung

Ein weiteres Beispiel ist Teambrella, ein sich noch in der Entwicklung befindlicher versuch, eine dezentrale Versicherung zu bilden. Hier werden Multisig-Konstruktionen verwendet, um “Gruppen” zu gründen, in denen die Mitglieder darüber abstimmen können, ob ein gemeldeter Schaden reguliert, sprich: bezahlt, wird. Es soll auch möglich sein, seine Stimme – also seinen Schlüssel – an andere Mitglieder zu übertragen, denen man vertraut und die mehr Zeit und / oder Kompetenz haben, einen Schadensfall zu bewerten.

Die Möglichkeiten sind, wie gesagt, grenzenlos. Multisig ersetzt nicht die Entscheidungskompetenz der Einzelnen, aber sie ersetzt den Mittelsmann, der eine zentrale Infrastruktur bereitstellt, durch die sich Kollektive über die Verwendung von Geld einigen können. Multisig dezentralisiert eine Form der Organisation.

Multisig-Technologie: Ein Blick unter die Haube

Achtung! Das folgende ist stellenweise nicht ganz richtig. Wie in den Kommentaren erklärt wird, hat Multisig bei Bitcoins nichts mit Shamir’s Secret Sharing zu tun, wie es in den folgenden Absätzen behauptet wird. Sorry. Ich versuche, das noch geradezubiegen …

Nun … wie funktioniert Multisig? Wenn Sie jetzt denken, man müsste einfach einen Schlüssel nehmen und diesen zerschneiden, dann habe ich die Ehre, Ihnen mitzuteilen, dass Sie die Komplexität des Sachverhaltes unterschätzt haben. Einen Schlüssel aufzuteilen wäre eine Möglichkeit, Multisig zu organisieren, aber eher eine schlechte. Denn erstens brauchen wir dafür jemanden, der den Schlüssel kennt und aufteilt und dem wir vertrauen müssen, dass er ihn “vergisst”, und zweitens können wir damit nur “n von n” und nicht “m von n” Konstruktionen bilden.

P2SH, P2PKH und Multisig

Eine elemenare Rolle bei Multi-Sig-Transaktionen spielen P2SH-Adressen. Diese beginnen mit einer “3” und stehen für “Pay-to-Script-Hash”, was meint, dass man nicht mehr wie bisher, mit den Adressen die mit einer 1 beginnen und “P2PKH” – “Pay-to-public-key-hash” heißen, an die Hash eines öffentlichen Schlüssels – also eine Adresse – zahlt, sondern an die Hash eines Scriptes.

Ein Hash ist mehr oder weniger das Ergebnis eines kryptographischen Fleischwolfes: eine Information geht rein, und sie kommt mathematisch verarbeitet wieder heraus. Das besondere an dieser mathematischen Operation ist, dass es immer möglich ist, die Information in genau diesen Hash zu verarbeiten, aber niemals, das Hash rückwärts in die Information zurückzuverwandeln.

Um Transaktionen verwendet Bitcoin eine interne Skriptsprache, die ähnlich wie Forth, eine oft für Mikrocontroller verwendete Sprache, funktioniert. Eine Bitcoin-Transaktion ist letzten Endes nicht mehr als die Formulierung einer Bedingung, unter der Bitcoins ausgegeben werden können, was letzten Endes bedeutet, die Bedingungen zu ändern, unter der die Bedingungen geändert werden können … Bei normalen Transaktionen – also P2PKH-Transaktionen – werden die Bitcoins an die Hash eines öffentlichen Schlüssels – also an eine Adresse –  gesendet, aus dem sich die folgenden Bedingungen ableiten: Um die Bitcoins auszugeben, muss man einen öffentlichen Schlüssel präsentieren, der zu der Adresse passt, sowie eine Signatur, die beweist, dass man Besitzer des dazu gehörenden privaten Schlüssels ist.

Bei P2SH-Adressen überweist man Bitcoins hingegen nicht an das Hash eines öffentlichen Schlüssel, sondern an das Hash einess Skriptes. Um diese Bitcoins wieder auszugeben, muss man nun ein Skript bereitstellen, das das Hash trifft, sowie Daten, mit denen das Skript “True” ausspuckt.

Um nun eine Multisig-Adresse zu generieren, muss man als ein Skript schreiben, das unter den entsprechenden Bedingungen “ok” sagt. Diese sind, dass eine definierte Anzahl von privaten Schlüsseln, die zu vorher definierten öffentlichen Schlüsseln gehören, die Transaktion signieren. Erst wenn also eine bestimmte Anzahl von involvierten Parteien – sagen wir, 2 von 3 – bewiesen haben, dass sie im Besitz der privaten Schlüssel sind, ist es möglich, die Ausgabebedingung wieder zu ändern. Also eine Überweisung vorzunehmen.

Warum die Implementierung von Multisig nicht gerade benutzerfreundlich ist

Bevor wir jetzt aber dazu kommen, wie man Multisig-Adressen bildet, müssen wir über ein Problem sprechen. Die Anwendung von Multisig ist nämlich leider haarsträubend kompliziert und ein Musterbeispiel, wie man eine tolle Sache durch die Vernachlässigung jeder Usability nahezu unbenutzbar macht.

Ein Zitat von Gavin Andresen von Januar 2012 illustriert, wie weit Multisig heute unter seinen Möglichkeiten geblieben ist:

Ich will sicherere Wallets. Alle Entwickler sind sich einig, dass der einfachste und schnellste Weg, das zu erreichen, in ‘Multi-Signatur-Transaktionen’ liegt — Bitcoins, die die Erlaubnis von mehreren Personen brauchen, um ausgegeben zu werden.

Ein Beispiel: Eine künftige Version von Bitcoin-Qt kann wissen, wie sie mit einer App redet, die auf dem Smartphone läuft. Wenn man nun Bitcoins sendet, liefert Qt eine Signatur, aber es muss noch das Smartphone nach der anderen Signatur fragen.

Auf diese Weise hätten wir ein einfaches, dezentrales, keinen Mittelsmann benötigendes 2-Faktor, wie man es von Banken kennt. Offensichtlich sind wir aber auch 4,5 Jahre später noch weit davon entfernt, eine solche Anwendung zu haben.

Zu einem bestimmten Anteil dürfte die mangelhaft-benutzerfreundliche Umsetzung von Multisig an der grundlegenden Implementierung liegen, die mehrere Probleme mit sich bringt:

  • Um eine Multisig-Adresse zu bilden, benötigt man mehrere öffentliche Schlüssel. Da man bei Bitcoin jedoch nicht an öffentliche Schlüssel überweist, sondern an die Hashes von öffentlichen Schlüssel – die Adressen – ist es schon mal eine gewisse Herausforderung, den öffentlichen Schlüssel überhaupt herauszufinden.
  • Anschließend muss man diesen an den Partner der Multisig-Konstruktion senden, um diese aufzubauen. Bei entsprechend vielen Partnern kann das schon sehr aufwändig sein
  • Um auf einer Multisig-Adresse gespeicherte Bitcoins wieder auszugeben, müssen “m” Parteien die Transaktion signieren. Das bedeutet, erst muss ich eine Transaktion signieren, dann muss ich die von mir signierte Transaktion an Timo weiterleiten, und der muss sie danach an Oliver weitergeben und so weiter …

Diese Tatsachen alleine sind schon Grund genug, dass es um die Usability von Multisig nicht zum besten bestellt ist.  Allerdings kommt dazu noch eine gewisse fehlende Sensibilität für einfache Benutzbarkeit seitens der Bitcoin-Entwickler hinzu sowie eine mangelnde Zuständigkeit. Die Core-Entwickler sind nicht für Usability zuständig – bzw. fühlen sich nicht zuständig – und die Wallet-Entwickler – die dies sollten und könnten – sind chronisch unterfinanziert, da es sehr schwierig ist, mit der Wallet-Enwicklung Geld zu verdienen.

Das es dennoch anders geht, beweist die Multisig-Implementierung des graphischen Ethereum-Wallets Mist, die deutlich leichter zu bedienen ist als alle mir bekannten Bitcoin-Implementierungen und gleichzeitig mehr Funktionen bietet. Aber dazu später.

Nun geht es um Bitcoin-Wallets, die Multisig fähig sind. Das sind unter anderem Armory, Electrum und Core. Im Folgenden werde ich beschreiben, wie man mit Electrum Multisig-Adressen generiert und benutzt. Ich habe es auch mit Core versucht, aber das ist so kompliziert, dass ich zuversichtlich bin, dass diejenigen, die es hinbekommen, es auch ohne mein Tutorial schaffen.

Ein kleines Multisig-Tutorial für Electrum

Electrum

Die einfachste mir bekannte Art, Multisig-Adressen zu bilden und zu benutzen, funktioniert mit dem Desktop-Wallet Electrum. Electrum ist ein “leichtes” Wallet, da es nicht die Blockchain speichern muss, sondern diese über ein Netzwerk von Servern kontaktiert, während der User im vollständigen und exklusiven Besitz der Schlüssel bleibt.

Der erste Schritt ist es, eine neue Wallet zu bilden. Dazu muss man auf Datei klicken und dort auf New Wallet. Zunächst wird man aufgefordert, der neuen Wallet einen Namen zu geben. Ich habe mich für Multi-Sig entschieden.

pc1_electrum_multisig_1

Danach wird man gefragt, was genau man bilden will und klickt an, dass man 1.) eine neue Wallet und 2.) eine Multisig-Wallet bilden wollen.

pc1_electrum_multisig_2

Nachdem das getan ist, wird man aufgefordert, anzugeben, wieviele Schlüssel von wievielen Teilnehmern benötigt werden, um das Guthabe auszuzahlen. Ich habe der Einfachkeit halber angegeben 2 von 2.

pc1_electrum_multisig_3

Einen Klick weiter wird es spannend: Wir erfahren den Master-Public-Key.

pc1_electrum_multisig_5

Jeder Teilnehmer der Multisig-Adresse generiert seinen eigenen Master Public Key. Um die Adresse zu bilden, benötigt jeder alle anderen Master Public Keys. Also habe ich denselben Vorgang auf einem anderen System wiederholt, um dort einen zweiten Master Public Key zu erzeugen.

pc2_electrum_multisig_1

Seht ihr? Zwei verschiedene Master-Key. Die werden ausgetauscht, über E-Mail, USB etc., am besten verschlüsselt, und dann jeweils eingegeben. Zuerst auf dem einen System …

pc1_electrum_multisig_6

… und dann auf dem anderen.

pc2_electrum_multisig_2

Und nachdem wir das gemacht haben – haben wir eine Multisig-Wallet. Während Core lediglich eine Multisig-Adresse erzeugt, erzeugt Electrum durch seine deterministische Schlüsselarchitektur gleich ein Set von Schlüsselpaaren, die in beiden Wallets verschieden sind, aber in denselben Adressen mit einer 3 am Anfang münden. Zum Beweis – die Adressen in der ersten Wallet:

pc1_electrum_multisig_7

… und in der zweiten Wallet:

pc2_electrum_multisig_3

Toll, oder? Das war nun gar nicht so schwer, wie gedacht. Bevor wir uns daran machen, von diesen Adressen aus etwas zu überweisen, müssen wir etwas empfangen. Also überweisen wir einen kleinen Betrag auf eine Adresse, warten, bis diese bestätigt ist, und bilden dann mit dem ersten System eine neue Transaktion.

pc1_electrum_multisig_9

Unten seht ihr die Balance – 0,01 Bitcoin – und bei “Pay to” die Adresse, an die ich überweise. Nicht verwirrt sein – die Adresse beginnt mit einer 3, weil ich auf eine Multisig-Adresse überweisen möchte, die ich zuvor mit Core gebaut habe. Es könnte aber jede beliebige Adresse sein. Den Betrag von 0,0098 Bitcoin habe ich gewählt, weil man von den 0,01 Bitcoin ja noch eine Gebühr abziehen muss, die Electrum selbständig wählt. Wenn man auf “Send” klickt, geht es wie folgt weiter:

pc1_electrum_multisig_10

Ich werde zunächst aufgefordert, die Transaktion zu signieren. Wie ihr oben, in der ersten Spalte unter der ID, sehen könnt, ist der Status der Transaktion noch “unsigniert.” Indem ich auf “sign” klicke, signiere ich die Transaktion mit dieser Wallet. Danach ist die Transaktion “teilweise” signiert. Um sie abzusenden, benötige ich nun also noch die zweite Signatur. Dazu muss ich sie – nun kommt der unbequeme Teil – abspeichern und an mein zweites System senden. Das kann man nun per E-Mail oder USB-Stick machen oder wie es einem beliebt; Sicherheit ist insofern nachrangig, als dass nur diejenigen, die die Transaktion erhalten sollen, etwas mit ihr anfangen können. Auf meinem zweiten System kann ich die Transaktion dann laden. Sie sieht nun so aus:

pc2_electrum_multisig_5

Seht ihr? Teilweise signiert (1/2). Nun muss ich sie also auch mit dieser Wallet signieren. Nachdem dies gemacht ist, kann ich sie absenden bzw. übertragen.

pc2_electrum_multisig_6

Und … es funktioniert! Nun habe ich also meine erste Multisig-Transaktion geschrieben und gesendet.

Um das Austauschen von un- bzw. teilweise signierten Transaktionen einfacher zu machen, gibt es bei Electrum noch ein Plugin namens “Cosigner Pool” dass man über das “Werkzeuge”-Menü installieren kann. In meinem Fall hat die Übertragung jedoch nicht funktioniert, aber dies muss nicht bedeutet, dass sie gar nicht möglich ist.

Alles in allem finde ich die Multisig-Implementierung von Electrum relativ benutzerfreundlich. Zumindest im Vergleich zu Core: Hier muss man ziemlich lange Code-Stücke in die Console eingeben, sich public keys, hashes und redeem-scripte aufschreiben bzw. abspeichern, diese dann wieder zu neuen Anweisungen verwursteln und so weiter. Eigentlich wollte ich diese Methode auch noch beschreiben, aber ich habe es mir dann anders überlegt. Derjenige, der in der Lage ist, sie auszuführen, wird auch selbst herausfinden, wie es geht. Für alle anderen ist dieses Verfahren zu umständlich, sperrig und auch riskant.

Eine weitere mir bekannte Multisig-Implementierung findet man in Ethereums Mist-Wallet. Diese ist die bisher benutzerfreundlichste Variante, die ich kenne, was vermutlich daran liegt, dass Ethereum nicht mit inputs, sondern mit accounts arbeitet, die öffentlichen Schlüssel nicht hinter Adressen versteckt und das Abbuchen durch deutlich flexiblere Skripte erlaubt. So kann man bei Mist mit deutlich weniger Mühe als bei Electrum sogar eine Konstruktion bilden, nach der jede involvierte Partei an jedem Tag eine bestimmte Summe auszahlen darf, aber die Genehmigung – Co-Signatur – der anderen Partei braucht, sobald diese Summe überschritten ist.

Nun aber – viel Spaß mit Multisig. Wenn ihr Erfahrungen mit anderen Wallets und Multisig gemacht habt, freue ich mich, davon in den Kommentaren zu lesen.

About Christoph Bergmann (1048 Articles)
Das Bitcoinblog wird von bitcoin.de gesponsort, ist inhaltlich aber unabhängig und gibt die Meinung des Redakteurs Christoph Bergmann wieder. Wenn Ihnen das Blog gefällt, freuen wir uns über Spenden an 1BvayiASVCmGmg4WUJmyRHoNevWWo5snqC. Jeder Satoshi wird dazu verwendet, um das Blog besser zu machen. Weitere Infos, wie Sie uns unterstützen können, finden Sie HIER. Gastbeiträge sind ebenfalls willkommen. Meinen öffentlichen PGP-Schlüssel sowie den Bitmessage-Schlüssel finden Sie HIER

11 Comments on Multisig in Theorie und Praxis

  1. Carsten Otto // 14. July 2016 at 19:16 // Reply

    m/n geht auch ohne Multisig (und ohne Shamir) – ich lasse das mal als Hausaufgabe so stehen 🙂

  2. Carsten Otto // 14. July 2016 at 19:29 // Reply

    Der Beitrag ist gut, Multisig hat aber nichts mit Shamir zu tun. Beide Techniken erlauben ähnliche Ziele zu erreichen, unterscheiden sich aber in der Umsetzung. Es kommt leider auch nicht rüber, was denn so ein Skript ist, von dem der Hashwert gebildet wird.

      • Hmm … sehr klar macht es das nicht …

        A multisig address is just a different statement. So for example, for a 2-of-3 multisig address, you are sending money to the statement “I’ve listed three keys here, and if a future transaction spending this money is signed by at least two of them, then allow it.”

        Multisig addresses are a subset of what are called “pay to script hash” (aka P2SH) addresses.

        Das ist das, was ich da über Multisig rausziehe. Und das hier:

        So, to summarize, SSSS splits up data, while a multisig address is a special type of script. They are entirely different things that serve different purposes.

        Sagt das Multisig-Script einfach nur: “Ich habe hier eine Liste von public keys, und ich gebe die Transaktion erst frei, wenn ihr sie mit X priv keys davon signiert?” (Heißt das, es ist viel einfacher als das ganze Shamir Ding?)

    • Danke. eventuell hätte ich beim Tutorial bleiben sollen anstatt mich technologisch aus dem Fenster zu lehnen. ich habe bei der Recherche gelesen, dass es auf Shamir beruht, habe das dann recherchiert, fand es sehr passend und weitgehend deckungsgleich mit einer Erklärung, die mir ein Kryptograph mal gegeben hat … d.h. Multisig hat nichts mit Polynomen zu tun? kannst du es erklären? hast du mir Vorschläge, wie ich den Abschnitt anders schreibe?

    • Noch eins … was ist denn so ein Skript, von dem der Hashwert gebildet wird? Bin gespannt.

  3. eParanoid // 14. July 2016 at 20:54 // Reply

    Wie das mit den Skripten in Bitcoin geht, ist hier beschrieben: https://en.bitcoin.it/wiki/Script
    Darin zu “programmieren” ist dann aber wie ein Marathon-Lauf auf Händen und Knien.

    In Bitcoin muß man Multi-Sig ausprogrammieren. Sehr vereinfacht sieht eine 2-aus-3-Multisig dann so aus:

    Wenn Sig1 = ok und Sig2 = ok dann Geld rausrücken
    Wenn Sig1 = ok und Sig3 = ok dann Geld rausrücken
    Wenn Sig2 = ok und Sig3 = ok dann Geld rausrücken

    Also so eine Art Multisig zu Fuß. Shamirs genial-einfaches Secret-Sharing ist – wie schon jemand geschrieben hatte – leider nicht in Bitcoin implementiert.

    In der tatsächlichen Umsetzung läuft alles über einen Stack, in den zuerst mal alle Parameter in umgekehrter Reihenfolge eingestellt werden müssen. (Wer noch die alten HP-Taschenrechner mit UPN kennengelernt hatte, dürfte eine Idee haben, was ich meine.)

    Außerdem muß vor jeder Signatur erst mal geprüft werden, ob der angegebene Public-Key zu dem in der Zahlung hinterlegten Hash paßt.

    • Danke. Habe den Beitrag jetzt überarbeitet

    • Früher ja. inzwischen gibt es eine eigene Operation dafür: OP_CHECKMULTISIG. Schön ist es trotzdem nicht und eine ordentliche Implementierung würde von Anfang an ein Signaturverfahren unterstützen mit dem man Threshold signatures machen kann.

      • eParanoid // 15. July 2016 at 15:42 //

        Stimmt, hkopp. Mit der Nutzung von OP_MULTICHECKSIG ist mein letzter Satz hinfällig. Soweit ich die Beschreibung verstanden habe, müssen alle mit einem OP_MULTICHECKSIG geprüften Signaturen stimmen. Wenn nur 2 von 3 Signaturen benötigt werden, müßten also weiterhin alle gültigen Signatur-Prüfungs-Kombinationen im Script stehen. (Nicht selbst ausprobiert)

  4. bin dir ewig dankbar… alleine die übersetzerische arbeit ist gold wert! Ich kann englisch aber bei so komplizierten themen bleibt wenn man so drüberliest bei mir immer das gefühl höchstens die hälfte verstanden zu haben. Das ist zwar meistens ausreichend aber wenn es um geld geht wie bei bitcoin hätte man schon gerne das gefühl es genau verstanden zu haben. Also explizit: Danke christoph… weiter so

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s