Pages:
Author

Topic: Multisig möglichst einfach für Newbie machbar die traden wollen? (Read 3066 times)

legendary
Activity: 2702
Merit: 1261
@mezzomix
Danke,  leider ist das nicht mein Problem, es läuft die v 11.2 mit dem addrindex patch.

Dann ist der Weg über "listunspent" falsch. Mit Address Index Patch heisst das entsprechende Kommando "searchrawtransactions
". Die Ergebnisse müssen dann noch über "gettxout "txid" n ( includemempool )" gefiltert werden, da in der Liste auch Spent TX enthalten sind.
member
Activity: 116
Merit: 11
@mezzomix
Danke,  leider ist das nicht mein Problem, es läuft die v 11.2 mit dem addrindex patch.
Über die Console funktioniert es ja, ich habe nur eben das Problem, das der RPC Call einfach nicht über den PHP jsonClient läuft.

Normalerweise müsste mein Ergebniss so in etwa aussehen:

Code:
 {
        "txid" : 3ab995cc059740bc483fe9ce8dcbc2b16449010213c33453gdfg2d5dd6ecca3c0b3",
        "vout" : 0,
        "address" : "38xEMgDsgqDfbobnpBWnqkF2wUfmGDccqocUA",
        "scriptPubKey" : "cf4d9b28bb976a9144e71ac4bfdd2fe3443097ab8f794e88ac",
        "amount" : 12.34000,
        "confirmations" : 647,
        "spendable" : false
    },


Damit weiter über "createrawtransaction" die Transaktion ausführen kann.
Ich benötige ja den Hex String für die Signatur, um wieder weiter "signrawtransaction" auszuführen.

Code:
createrawtransaction [{"txid":"id","vout":n},...] {"address":amount,...} 

Mit dem Ergebnis habe ich dann alles, um mit meinem privaten Schlüssel als erster die Transaktion zu signieren.
Code:
signrawtransaction  [{"txid":txid,"vout":n,"scriptPubKey":hex},...] [,...] [sighash="ALL"]
legendary
Activity: 2702
Merit: 1261
Ohne einen entsprechenden Patch, der in der aktuellen Core Version nicht mehr funktioniert, kann man keine Unspent Outputs für beliebige Adressen bekommen. Dafür wäre ein UTXO Address Index notwenig, aber es gibt ungepatcht aber nur einen UTXO Transaktion Index.

Der einzige Patch der noch funktioniert ist ein Address Index über die gesammte Blockchain. Damit muss man dann noch die Spent Outputs herausfiltern um tatsächlich die Unspent Outputs zu bekommen.
hero member
Activity: 838
Merit: 534
@Queenvio
Ich habe für einen Kunden einen Multivendor Market in Perl und PHP geschrieben.
Da er unabhängiger im Bereich Payment Schnittstellen werden möchte, soll ich zusätzlich zum Escrow noch die Multisignatur Transaktion in PHP implementieren.

Um eine neue Transaktion mit "createrawtransaction" zu erzeugen, muss ich doch vorher die benötigten Parameter wie txid, vout, ScriptPubKey usw. ermitteln.

Nach meiner Meinung ist die Abfrage über listunspent(adresse) der richtige Weg !?

Danke

Hat er denn die Adresse dessen unspend er haben will in der wallet?
weil
Code:
listunspent
listet die unspend von allen Adressen die du in der wallet hast.
member
Activity: 116
Merit: 11
@Queenvio
Ich habe für einen Kunden einen Multivendor Market in Perl und PHP geschrieben.
Da er unabhängiger im Bereich Payment Schnittstellen werden möchte, soll ich zusätzlich zum Escrow noch die Multisignatur Transaktion in PHP implementieren.

Um eine neue Transaktion mit "createrawtransaction" zu erzeugen, muss ich doch vorher die benötigten Parameter wie txid, vout, ScriptPubKey usw. ermitteln.

Nach meiner Meinung ist die Abfrage über listunspent(adresse) der richtige Weg !?

Danke
 


hero member
Activity: 838
Merit: 534
Also so weit ich weiss gibt es nur das commenad "listunspend" welches sich dann auf deine gesammte wallet bezieht, nicht auf eine Adresse.

Von irgendwelchen Adressen die unspend zu bekommen ist mit dem core nicht möglich, zumindest habe ich es noch nicht hinbekommen.
Evtl kannst du die API von blockchain.info nutzen.


P.S. an was für einem Projekt arbeitest du denn, wenn man fragen darf
member
Activity: 116
Merit: 11
Hallo,
 
Ich habe mal ein Frage zum Thema Multisignatur Transaktionen und PHP jsonClient.
Vielleicht gibt es jemanden der sich hier mit der Materie etwas auskennt!?

Nachdem ich über "createmultisig" die Adresse und das Redeemscript ermittelt habe, muss ich ja im nächsten Schritt um eine Transaktion zu erzeugen die offenen Transaktionsausgänge wie vout, ScriptPubKey usw. ermitteln.
Über die Console würde ich das mit "listunspent adresse" machen.

Jetzt aber die Frage, wie ist die Syntax für ein Array "listunspent".

Egal wie ich die Parameter anordne, ich komme einfach nicht durch, mit der Fehlermeldung(Unable to connect) kann ich auch nichts gerade anfangen, siehe am ende..

Code:
$bitcoin->listunspent(adresse);

Wird das überhaupt von der Klasse unterstützt?

Hat jemand einen Tipp..Danke



Code:
Fatal error: Uncaught exception 'Exception' with message 'Unable to connect to http://bitcoinrpc:change_me@localhost:8332' in D:\Server\www\payment\classes\jsonRPCClient.php:74 Stack trace: #0 D:\Server\UniServerZ\www\bitpayment\index.php(30): jsonRPCClient->__call('listunspent', Array) #1 D:\Server\www\payment\index.php(30): jsonRPCClient->listunspent('38xEMgsfMa12pUr...') #2 {main} thrown in D:\Server\www\payment\classes\jsonRPCClient.php on line 74

hero member
Activity: 838
Merit: 534
Diese Seite hier ... macht es eigentlich recht einfach.

Gerade ausprobiert - genauer ich wollte es ausprobieren. Da ist gar nichts einfach. Ich verstehe nicht mal genau, was die mir jetzt konkret anbieten wollen.


Habs jetzt auch noch nie benutzt, sah aber einfach aus.
Denke mal einfach eine Transaktion starte , brauchst halt 2 andere Partien zum testen, oder noch 2 Accounts machen
legendary
Activity: 2702
Merit: 1261
Diese Seite hier ... macht es eigentlich recht einfach.

Gerade ausprobiert - genauer ich wollte es ausprobieren. Da ist gar nichts einfach. Ich verstehe nicht mal genau, was die mir jetzt konkret anbieten wollen.
hero member
Activity: 838
Merit: 534
Diese Seite hier https://www.bitrated.com/ macht es eigentlich recht einfach. Bleibt allerdings das problem des Hack, Scam, da alle Keys so wie ichs verstehe dort gespeichert sind.
hero member
Activity: 838
Merit: 534
Richtig, für den Treuhänder ist der Aufwand nicht größer.

Idee die mir gerade kam:
Eine Seite die ein paar Punkte übernimmt.
Sowas wie:

Die 3 Parteien habe dort jeweils ihren pubkey hinterlegt (evtl privatekey SICHERHEIT!!)
Man eröffnet dort einen "Fall", muss dazu die Namen,Userid, was auch immer der 2 anderen angeben.

Die Seite erstellt ein Script, Adresse,... überprüft die Adressen und teilt den anderen mit, dass etwas eröffne wurde.

Man kann dann dort Transaktion erstellen von der Adresse, die dann von den anderen signiert werden können, einfach mit Eingabe des private Keys.


Ist jetzt etwas durcheinander geschrieben, aber ihr wisst was ich meine denke ich.


legendary
Activity: 2702
Merit: 1261
Ja, das ist so ungefähr der Ablauf. Person 3 (nennen wir mal Treuhänder) muss (ausser im Treuhandfall) gar nichts machen, sofern der Public Key des Treuhänders bereits publiziert ist.

Wenn man berücksichtigt, dass die Kommunikation sowieso stattfindet, dann ist die Treuhandabwicklung kaum Zusatzaufwand. Wenn wir Annehmen, dass wir es mit Käufer, Verkäufer und Treuhänder zu tun haben, dann sind das die Nachrichten:
  • 1. Verkäufer an Käufer (oder umgekehrt): Geschäftsbeschreibung, Treuhänder, Public Key.
  • 2. Käufer an Verkäufer (oder umgekehrt): Zahlungsinfo, Redeem Script.
  • 3. Käufer: Info über den Erhalt der Ware und signierte Transaktion.

Menschen die schon mal einen Online Einkauf getätigt haben, sollten sowas ohne grosse Probleme hinbekommen. Bei vielen Händlern ist die Abwicklung komplizierter und an der Kreditkarte scheitere ich und damit der geplante Einkauf inzwischen regelmässig (an der zwingenden Aktzeptanz der Beweislastumkehr im Betrugsfall).

Wenn Du Ideen hast, wie man den Ablauf bequemer machen kann, ohne allzuviel Sicherheit aufzugeben - her damit!
hero member
Activity: 838
Merit: 534
Problem, auf das ich gestoßen bin, sind die "Massen" an keys,.. dir übertragen werden müssen.
Müsste meiner Meinung ja so sein:

Person 1:
  • Einsammeln aller Pubkeys
  • Erstellen eines Scripts
  • Script an alle senden

Person 2+3:
  • Überprüfen ob das Script richtig ist (sonst könnte ja Person 1 betrügen)

Zahlung erfolgt, Ware wird geliefert (an Person 2),....

Person 2:
  • Erstellt eine Transaction mit dem Script und Privkey
  • TX an alle senden

Person 1 und/oder 3:
  • Müssen die Transaction überprüfen und signieren/pushen

Dazu noch das übliche "Escrowgelaber" (Kannst du übernehmen,...)
legendary
Activity: 2702
Merit: 1261
Glaube das einfachste für Noobs ist so etwas in der Art blockchain.info-Wallet nur halt mit multisig.
Noobs bzw 85% der Endanwender wollen gar nicht wissen was der Public key oder private key ist. Die wollen einfach dass es funktioniert.

Ideen zur Umsetzung sind willkommen! Im Augenblick funktioniert es nicht ganz einfach ohne das geringste Nachdenken, oder der Noob wird über den Tisch gezogen.

Eigentlich wie VISA, weiß auch keiner wies geht, ist aber einfach.

VISA ist kompliziert (ich muss mir so eine komische PIN merken, aufpassen dass die Karte nicht kopiert wird, soll mich beim Online-Einkauf irgendwo registrieren um eine Beweislastumkehr zu aktzeptieren) oder ich bin bequem und habe in der Folge haufenweise Ärger am Hals (gesperrte Karte, Zurückweisung der Schäden, polizeiliche Vorladung).

Daneben reguliert am Ende VISA, die sich gut dafür bezahlen lassen, die Schäden. Müssen sie auch, da sie sonst juristischen Ärger bekommen. Zahlungsdienstleister gibt es bei Bitcoin auch, eine Bank lässt sich ebenfalls machen. Da diese dann jedoch abseits der Gesetze operieren bzw. die Behörden keine Zeit und Lust haben diese durchzusetzen, gibt es hier kaum Sicherheit für die Nutzer.
hero member
Activity: 838
Merit: 534
Glaube das einfachste für Noobs ist so etwas in der Art blockchain.info-Wallet nur halt mit multisig.
Noobs bzw 85% der Endanwender wollen gar nicht wissen was der Public key oder private key ist. Die wollen einfach dass es funktioniert.
Eigentlich wie VISA, weiß auch keiner wies geht, ist aber einfach.
legendary
Activity: 2702
Merit: 1261
mezzomix

Das ist bei Electrum kein Problem da alle drei Beteiligten alle drei Pubkeys haben und bekommen. Die daraus erzeugten Adressen sind in allen drei Wallets dann gleich. Damit ist klar dass die Adresse stimmt.

In diesem Fall ja, da die Adresse letztendlich aus dem (Redeem) Script Hash erstellt wird. Es wäre trotzdem günstig, wenn man irgendwie an das Redeem Script herankommt, da man sonst eine reine Electrum Lösung hat, die zu keinem anderen Tool kompatibel ist.
legendary
Activity: 2674
Merit: 1083
Legendary Escrow Service - Tip Jar in Profile
Queenvio


Was meinst du mit  Mnemonic Code?
Man kann immer den gleichen master-public-key benutzen. Somit muss man sich auch nur einen seed "merken".
Soweit ich das verstanden habe

Der Mnemonic Code ist die Folge von Wörtern die Electrum als Seed benutzt. Mit dem Seed sind normale Electrumwallets dann deterministisch und wenn das beim Public Key eines Electrum Multisig wallets auch wirkt dann ist das gut. Ich dachte bisher es wäre mit Electrum nicht möglich den gleichen pubkey noch mal zu benutzen da man den bei der Erstellung ja nicht verändern kann. Hätte auch gleich an den Seed denken können. Cheesy



mezzomix


Das ist bei Electrum kein Problem da alle drei Beteiligten alle drei Pubkeys haben und bekommen. Die daraus erzeugten Adressen sind in allen drei Wallets dann gleich. Damit ist klar dass die Adresse stimmt.
legendary
Activity: 2702
Merit: 1261
Wichtig ist auch, dass die beiden anderen Parteien das Redeem Script prüfen können. Eine 2-aus3 Multisig Adresse bringt nichts, wenn sie nicht exakt aus den drei Public Keys der Beteiligten besteht und das Script tatsächlich ein 2-aus- Multisig Script ist.

hero member
Activity: 838
Merit: 534
Wenn der BIP32 Master Public Key die einzige Möglichkeit ist, in Electrum Multisig zu nutzen, dann halte ich Electrum als Lösung für Multisig-Escrow für ungeeignet. Man kann zwar für jeden Escrow Vorgang eine neue Wallet aufmachen, aber erstens ist das unnötig viel Aufwand und zweitens funktioniert dieser Mechanismus ausschliesslich in Electrum. Wenn es in Electrum keine anderen Möglichkeiten gibt, als in dieser Anleitung skizziert, dann wurde diese für einen anderen Anwendungszweck als Multisig-Escrow gebaut.


Also soweit wir geschaut hatten scheint Electrum wirklich trotzdem noch die Einfachste Möglichkeit zu sein weil da immer noch das Meiste automatisiert wird. Mehr als bei anderen Möglichkeiten die noch weniger für Noobs geeignet sind.

Aber hat jetzt schon mal jemand getestet ob man den Mnemonic Code dafür benutzen kann um den gleichen Pubkey wieder zu benutzen? Das wäre zumindest wichtig wenn man in Betracht ziehen würde Escrow auf automatisierten Seiten anzubieten. Die benutzen immer den selben Pubkey des Escrow.

Obwohl das natürlich immer wie ein Risiko klingt da man nie wirklich voll ausschließen kann dass der Webseitencode nicht irgendwann vom Besitzer oder einem Hacker geändert wird. Weshalb es Sinn machen würde jeden Deal manuell einzuleiten oder zumindest eine Warnung vor jedem Deal anzubieten.

Was meinst du mit  Mnemonic Code?
Man kann immer den gleichen master-public-key benutzen. Somit muss man sich auch nur einen seed "merken".
Soweit ich das verstanden habe
legendary
Activity: 2674
Merit: 1083
Legendary Escrow Service - Tip Jar in Profile
Wenn der BIP32 Master Public Key die einzige Möglichkeit ist, in Electrum Multisig zu nutzen, dann halte ich Electrum als Lösung für Multisig-Escrow für ungeeignet. Man kann zwar für jeden Escrow Vorgang eine neue Wallet aufmachen, aber erstens ist das unnötig viel Aufwand und zweitens funktioniert dieser Mechanismus ausschliesslich in Electrum. Wenn es in Electrum keine anderen Möglichkeiten gibt, als in dieser Anleitung skizziert, dann wurde diese für einen anderen Anwendungszweck als Multisig-Escrow gebaut.


Also soweit wir geschaut hatten scheint Electrum wirklich trotzdem noch die Einfachste Möglichkeit zu sein weil da immer noch das Meiste automatisiert wird. Mehr als bei anderen Möglichkeiten die noch weniger für Noobs geeignet sind.

Aber hat jetzt schon mal jemand getestet ob man den Mnemonic Code dafür benutzen kann um den gleichen Pubkey wieder zu benutzen? Das wäre zumindest wichtig wenn man in Betracht ziehen würde Escrow auf automatisierten Seiten anzubieten. Die benutzen immer den selben Pubkey des Escrow.

Obwohl das natürlich immer wie ein Risiko klingt da man nie wirklich voll ausschließen kann dass der Webseitencode nicht irgendwann vom Besitzer oder einem Hacker geändert wird. Weshalb es Sinn machen würde jeden Deal manuell einzuleiten oder zumindest eine Warnung vor jedem Deal anzubieten.
Pages:
Jump to: