2of2 multisig

Weteran
Posty: 1495
Rejestracja: 7 listopada 2013
Reputacja: 733
Reputacja postu: 
5
Napiwki za post: 0 BTC

2of2 multisig

Postautor: redbog » niedziela, 5 stycznia 2020, 00:07

Czy w bitcoinie nie mając żadnych środków na adresie(jedynie spodziewając się ich) można za w czasu stworzyć i podpisać transakcje wydającą te dopiero spodziewane środki?

Ogólnie chodzi o to żeby stworzyć 2of2 multisig z osobą której nie ufamy i wpłacić na ten adres np. równą sumę btc każdy. Zeby cokolwiek wypłacić z takiego adresu będzie potrzeba zgody obu stron i to powinno działać dobrze od momentu jak już obaj mamy wpłaconą mniej więcej równa sumę na ten wspólny adres mimo iż nie ufamy sobie.

Problem pojawia się przed wpłaceniem środków na wspólny adres w postaci kto ma pierwszy tam wpłacić? Bo ten kto wpłaci tam pierwszy ryzykuje ze druga strona nie wywiąże się z swojej części nie ryzykując niczego i zacznie nas szantażować np. daj mi 20% z tej sumy to pozwolę tobie wypłacić itp.

Bardzo Zły Moderator
Awatar użytkownika
Posty: 13371
Rejestracja: 16 kwietnia 2012
Reputacja: 2108
Reputacja postu: 
2
Napiwki za post: 0 BTC
Lokalizacja: Polska/Wwa/GW

2of2 multisig

Postautor: rav3n_pl » niedziela, 5 stycznia 2020, 01:08

W sumie to nie :)
Bo podpisać musisz konkretny txid i vout, więc nie mając przychodzącej transakcji - nie znasz niezbędnych danych.

I dlatego lepszy jest 2z3 z arbitrem (ala escrow).
Albo nietypowy skrypt pozwalający wydać wpłaconą kwotę przez określony czas jako 1z1, ale to zabawa...

Przy takim braku zaufania tylko escrow i escrow wpłaca całość na adres 2z2.
Piffko: PLC/BTC 1Rav3nkMayCijuhzcYemMiPYsvcaiwHni
Trochę o P2pool; C#: RPC CoinControl, BIP39 Mnemonic z talii kart
Bitcoin Core 0.19.0.1
YT: Rafał prostuje Bitcoina, PDFy: https://bit.ly/rafal-prezentacje

Weteran
Posty: 1495
Rejestracja: 7 listopada 2013
Reputacja: 733
Reputacja postu: 
0
Napiwki za post: 0 BTC

2of2 multisig

Postautor: redbog » niedziela, 5 stycznia 2020, 01:38

rav3n_pl pisze: niedziela, 5 stycznia 2020, 01:08Bo podpisać musisz konkretny txid i vout, więc nie mając przychodzącej transakcji - nie znasz niezbędnych danych.
Nie da się tych danych przewidzieć? W końcu to ja sam bym tworzył i wysyłał tą transakcje na wspólny adres wiec bym dokładnie wiedział jaka to będzie transakcja nawet bym ją przygotował tylko nie rozgłaszał. Chciałbym żeby przed rozgłoszeniem ja i druga strona(2z2) podpisała transakcje z powrotem wypłacającą do mnie z tego wspólnego adresu na który jeszcze nie wpłaciłem(ale wiem dokładnie co zamierzam tam wpłacić).

Bardzo Zły Moderator
Awatar użytkownika
Posty: 13371
Rejestracja: 16 kwietnia 2012
Reputacja: 2108
Reputacja postu: 
1
Napiwki za post: 0 BTC
Lokalizacja: Polska/Wwa/GW

2of2 multisig

Postautor: rav3n_pl » niedziela, 5 stycznia 2020, 13:21

Ale jak on podpisze taką transakcję, to co Cię powstrzyma przed wypłatą swojej części jak on wpłaci swoją? :D
Piffko: PLC/BTC 1Rav3nkMayCijuhzcYemMiPYsvcaiwHni
Trochę o P2pool; C#: RPC CoinControl, BIP39 Mnemonic z talii kart
Bitcoin Core 0.19.0.1
YT: Rafał prostuje Bitcoina, PDFy: https://bit.ly/rafal-prezentacje

Weteran
Posty: 1495
Rejestracja: 7 listopada 2013
Reputacja: 733
Reputacja postu: 
0
Napiwki za post: 0 BTC

2of2 multisig

Postautor: redbog » niedziela, 5 stycznia 2020, 13:40

rav3n_pl pisze: niedziela, 5 stycznia 2020, 13:21Ale jak on podpisze taką transakcję, to co Cię powstrzyma przed wypłatą swojej części jak on wpłaci swoją? :D
1.On mi podpisze wypłatę mojej polowy a ja mu podpisze wypłatę jego polowy. Wiec na czas wpłacania będziemy obaj zabezpieczeni. Jeśli ja oszukam i wypłacę swoja polowe po jego wpłacie to on będzie mógł tak samo wypłacić swoją połowę.

2.Jak już obaj wpłacimy i nikt nie będzie oszukiwał to wtedy wspólnie podpiszemy i wykonamy transakcje przenoszącą całość(jego i moja polowe) na następny wspólny adres 2z2 ale tym razem już bez podpisywania wypłat swoich polówek.

3. Będziemy mieli nasze środki na wspólnym adresie 2of2 gdzie każda decyzja będzie wymagała zgody obu stron.
Ostatnio zmieniony niedziela, 5 stycznia 2020, 16:13 przez redbog, łącznie zmieniany 1 raz.

Weteran
Posty: 1460
Rejestracja: 15 czerwca 2011
Reputacja: 1131
Reputacja postu: 
6
Napiwki za post: 0 BTC

2of2 multisig

Postautor: qertoip » niedziela, 5 stycznia 2020, 14:03

redbog pisze: niedziela, 5 stycznia 2020, 00:07Czy w bitcoinie nie mając żadnych środków na adresie(jedynie spodziewając się ich) można za w czasu stworzyć i podpisać transakcje wydającą te dopiero spodziewane środki?

Będzie się dało po nadejściu softforka dodającego SIGHASH_ANYPREVOUT i SIGHASH_ANYPREVOUTANYSCRIPT.

Obenie musisz mieć źródłowe unspent output (choćby niepotwierdzone ale musi istnieć jako kompletna, podpisana transakcja).

Payment channel będzie dobrym punktem wyjścia do tej rozkminy. Na pewno potrzebne są mechanizmy czasowe OP_CSV / OP_CLTV, żeby stworzyć bezpieczne dla obu stron otwarcie sytuacji. - po lepszym zrozumieniu wymagań okazało się, że jest prostszy mechanizm opisany w następnym poście.

PS @redbog jak jesteś z okolic Warszawy to wbijaj na https://www.meetup.com/Bitcoin-Protocol-Meetup/ - zapraszam.
Ostatnio zmieniony niedziela, 5 stycznia 2020, 16:57 przez qertoip, łącznie zmieniany 2 razy.
We only have one shot at making digital scarcity experiment work. If Bitcoin fails within a timeframe relevant for a human, then digital scarcity claim gets falsified. Like it or not, Bitcoin must succeed for your coin to succeed.

Weteran
Posty: 1495
Rejestracja: 7 listopada 2013
Reputacja: 733
Reputacja postu: 
0
Napiwki za post: 0 BTC

2of2 multisig

Postautor: redbog » niedziela, 5 stycznia 2020, 14:36

qertoip pisze: niedziela, 5 stycznia 2020, 14:03Obenie musisz mieć źródłowe unspent output (choćby niepotwierdzone ale musi istnieć jako kompletna, podpisana transakcja).
To czy czasem nie będę tego miał? Ja transakcje przygotuje i podpisze tylko przed jej rozgłoszeniem chciałbym dla bezpieczeństwa utworzyć i podpisać kolejną transakcje zwracającą mi to co początkowo zamierzam wpłacić.

txid i vout chyba da się przewidzieć skoro to ja sam wpłacam to mogę wiedzieć jakie będą?
Chyba ze ja to źle coś rozumuje i się zakręciłem.
qertoip pisze: niedziela, 5 stycznia 2020, 14:03 PS @redbog jak jesteś z okolic Warszawy to wbijaj na https://www.meetup.com/Bitcoin-Protocol-Meetup/ - zapraszam.
Niestety mam za daleko, ale chętnie bym obejrzał jakieś audio albo i wideo z tego spotkania jeśli to będzie w ogolę nagrywane.

Weteran
Posty: 1460
Rejestracja: 15 czerwca 2011
Reputacja: 1131
Reputacja postu: 
0
Napiwki za post: 0 BTC

2of2 multisig

Postautor: qertoip » niedziela, 5 stycznia 2020, 15:41

Możesz jeszcze potwierdzić wymagania?

1) Zakładamy, że druga strona jest niezaufana.

2) Jednocześnie doprowadzamy do sytuacji "2-of-2 zgoda albo clusterfuck". Czyli strona, której mniej zależy na zamrożonych środkach może szantażować niepodpisywaniem żadnego wydatku.

Czy tak ma być?
We only have one shot at making digital scarcity experiment work. If Bitcoin fails within a timeframe relevant for a human, then digital scarcity claim gets falsified. Like it or not, Bitcoin must succeed for your coin to succeed.

Weteran
Posty: 1495
Rejestracja: 7 listopada 2013
Reputacja: 733
Reputacja postu: 
0
Napiwki za post: 0 BTC

2of2 multisig

Postautor: redbog » niedziela, 5 stycznia 2020, 16:02

@qertoip Tak ma być.
qertoip pisze: niedziela, 5 stycznia 2020, 15:412) Jednocześnie doprowadzamy do sytuacji "2-of-2 zgoda albo clusterfuck". Czyli strona, której mniej zależy na zamrożonych środkach może szantażować niepodpisywaniem żadnego wydatku.
Takie ryzyko rzeczywiście będzie istniało i trzeba z tym się liczyć, jeśli dla drugiej strony nie będzie zależało na własnych bitcoinach i będzie gotowy w imię tego żeby nam zaszkodzić stracić tyle samo swoich bitcoinow to już nic na to nie porazimy. Trzeba patrzeć żeby takiego 2z2 nie otwierać z kimś kto ma nie ograniczone zasoby i nie zależy mu na nich.

Ogólnie chodzi o utworzenie escrow 2z2 gdzie zabezpieczamy się nawzajem depozytami które w każdej chwili dowolna ze stron może zniszczyć(swoje i nasze). W takim escrow doszlibyśmy do sytuacji ze żadnej ze stron nie warto było by oszukiwać bo to groziło by naszym wspólnym bankructwem albo przynajmniej dużą stratą dla obu stron.

Weteran
Posty: 1460
Rejestracja: 15 czerwca 2011
Reputacja: 1131
Reputacja postu: 
10
Napiwki za post: 0 BTC

2of2 multisig

Postautor: qertoip » niedziela, 5 stycznia 2020, 16:53

redbog pisze: niedziela, 5 stycznia 2020, 16:02@qertoip Tak ma być.

OK zatem sprawa jest prostsza niż myślałem.

Wystarczy interaktywnie we dwie osoby stworzyć jedną transakcję zasilającą ten adres 2/2.

W skrócie najpierw jest wymiana inputów, a potem podpisów. Nie szkodzi, że strona A wysyła podpis pierwsza, bo cała transakcja i tak jest nieprawidłowa bez dodania podpisów strony B.
Ostatnio zmieniony niedziela, 5 stycznia 2020, 20:41 przez qertoip, łącznie zmieniany 1 raz.
We only have one shot at making digital scarcity experiment work. If Bitcoin fails within a timeframe relevant for a human, then digital scarcity claim gets falsified. Like it or not, Bitcoin must succeed for your coin to succeed.

Weteran
Posty: 1495
Rejestracja: 7 listopada 2013
Reputacja: 733
Reputacja postu: 
0
Napiwki za post: 0 BTC

2of2 multisig

Postautor: redbog » niedziela, 5 stycznia 2020, 17:46

qertoip pisze: niedziela, 5 stycznia 2020, 16:53W skrócie najpierw jest wymiana inputów, a potem podpisów. Nie szkodzi, że strona A wysyła podpis pierwsza, bo cała transakcja i tak jest nieprawidłowa bez dodania podpisów strony B.
Istnieje jakieś w miarę proste narzędzie żeby to zrobić?

Electrum umożliwia zrobienie w prosty sposób 2z2 ale już raczej z utworzeniem takiej transakcji będzie problem.

Weteran
Posty: 1460
Rejestracja: 15 czerwca 2011
Reputacja: 1131
Reputacja postu: 
4
Napiwki za post: 0 BTC

2of2 multisig

Postautor: qertoip » niedziela, 5 stycznia 2020, 20:40

redbog pisze: niedziela, 5 stycznia 2020, 17:46 Istnieje jakieś w miarę proste narzędzie żeby to zrobić?

Z interfejsem użytkownika - nie znam.

Natomiast programistycznie nie jest to wielki problem gdy mamy dojrzałe biblioteki do tworzenia transakcji (C++ - libbitcoin, Python - electrum, Java - bitcoinj).

Podobne rzeczy - interaktywne składanie jednej transakcji przez wielu uczestników - są od dawna częścią wielu protokołów (CoinJoiny wszelkie, Bisq, payment channel).
We only have one shot at making digital scarcity experiment work. If Bitcoin fails within a timeframe relevant for a human, then digital scarcity claim gets falsified. Like it or not, Bitcoin must succeed for your coin to succeed.

Wróć do „Pomoc techniczna”

Kto jest online

Użytkownicy przeglądający to forum: Obecnie na forum nie ma żadnego zarejestrowanego użytkownika i 2 gości