Bitcoin Miniscript

Weteran
Posty: 1316
Rejestracja: 15 czerwca 2011
Reputacja: 748
Reputacja postu: 
15
Napiwki za post: 0 BTC

Bitcoin Miniscript

Postautor: qertoip » wtorek, 20 sierpnia 2019, 08:58

Pieter Wuille, Andrew Poelstra, Sanket Kanjalkar opublikowali Miniscript - specyfikację i kompilator.

Miniscript to nowy język "smart kontraktów" dla Bitcoina.

Miniscript kompiluje się do starego Bitcoin Scriptu. Nie wymaga zatem żednego forka.

Miniscript ma na celu radykalne ułatwienie pisania "smart kontraktów" na czele z ich komponowalnością (jak w normalnym programowaniu). Dotychczas praktycznie nikt nie pisał w Bitcoin Script. Wykorzystywano jedynie kilka standardowych konstrukcji wypracowanych w pocie czoła.

Następny krok to zintegrowanie tego z portfelami (na czele z Bitcoin Core).

Przykładowy kod:

and(
  pk(A),
  or(
    pk(B),
    or(
      pk(C),
      older(1000)
    )
  )
)

http://bitcoin.sipa.be/miniscript/
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
Awatar użytkownika
Posty: 3124
Rejestracja: 14 marca 2011
Reputacja: 579
Reputacja postu: 
0
Napiwki za post: 0 BTC

Bitcoin Miniscript

Postautor: maky » wtorek, 20 sierpnia 2019, 12:35

qertoip pisze: wtorek, 20 sierpnia 2019, 08:58Przykładowy kod:

and(
pk(A),
or(
pk(B),
or(
pk(C),
older(1000)
)
)
)
Świetnie. To jeszcze w dwóch słowach co ten kod robi. ;P
Bądź zmianą, którą prag­niesz uj­rzeć w świecie.
Be the chan­ge you want to see in the wor­ld.
KURSYBTC - kursy BTC przeliczone na PLN/USD/EUR + alarmy; vultr.com - serwery pod masternody

Weteran
Posty: 1316
Rejestracja: 15 czerwca 2011
Reputacja: 748
Reputacja postu: 
3
Napiwki za post: 0 BTC

Bitcoin Miniscript

Postautor: qertoip » wtorek, 20 sierpnia 2019, 14:28

maky pisze: wtorek, 20 sierpnia 2019, 12:35 Świetnie. To jeszcze w dwóch słowach co ten kod robi. ;P

Bitcoin Script / Miniscript określa pod jakim warunkiem unspent output może być wydany.

and(
  pk(A),
  or(
    pk(B),
    or(
      pk(C),
      older(1000)
    )
  )
)

Ten skrypt mówi, że:

- zawsze będzie potrzebny podpis kluczem A
- oraz dodatkowo, zawsze będzie potrzebny drugi składnik

teraz

- ten drugi składnik może być podpisem kluczem B
- lub może być podpisem kluczem C
- lub minęło 1000 bloków odkąd ten unspent output został potwierdzony

PS Piszę na szybko i na oko. Nie czytałem jeszcze tej specyfikacji.
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
Awatar użytkownika
Posty: 3124
Rejestracja: 14 marca 2011
Reputacja: 579
Reputacja postu: 
0
Napiwki za post: 0 BTC

Bitcoin Miniscript

Postautor: maky » wtorek, 20 sierpnia 2019, 21:11

qertoip pisze: wtorek, 20 sierpnia 2019, 14:28PS Piszę na szybko i na oko. Nie czytałem jeszcze tej specyfikacji.
Jest w linku. Zastanawiam się czemu nikt wcześniej tego nie zrobił?
Bądź zmianą, którą prag­niesz uj­rzeć w świecie.
Be the chan­ge you want to see in the wor­ld.
KURSYBTC - kursy BTC przeliczone na PLN/USD/EUR + alarmy; vultr.com - serwery pod masternody

Weteran
Posty: 1672
Rejestracja: 21 marca 2014
Reputacja: 977
Reputacja postu: 
0
Napiwki za post: 0 BTC

Bitcoin Miniscript

Postautor: The Real McCoin » wtorek, 20 sierpnia 2019, 22:07

maky pisze: wtorek, 20 sierpnia 2019, 21:11Zastanawiam się czemu nikt wcześniej tego nie zrobił?
No bo jest stos - jest zabawa :)

Bardzo Zły Moderator
Awatar użytkownika
Posty: 13106
Rejestracja: 16 kwietnia 2012
Reputacja: 1861
Reputacja postu: 
2
Napiwki za post: 0 BTC
Lokalizacja: Polska / Gorzów Wlkp.

Re: Bitcoin Miniscript

Postautor: rav3n_pl » czwartek, 22 sierpnia 2019, 21:32

Spoko.
Jeden detal.
Taki skrypt wydania jest traktowany jako "niestandardowy" i węzły domyślnie ich nie przekazują ani kopalnie nie kopią.
Więc.
Można zrobić, można wysłać na powstały adres, ale nie można go później wydać/wykonać.
NIE POLECAM TAKIEJ ZABAWY.
Smartkontraty na BTC daje nam Rootstock. Zostawmy Btc w spokoju.
Piffko: PLC/BTC 1Rav3nkMayCijuhzcYemMiPYsvcaiwHni
Mój Skydrive; Trochę o P2pool; C#: RPC CoinControl, BIP39 Mnemonic z talii kart
Bitcoin Core 0.18.1

Orator
Awatar użytkownika
Posty: 894
Rejestracja: 12 sierpnia 2017
Reputacja: 2005
Reputacja postu: 
0
Napiwki za post: 0 BTC

Bitcoin Miniscript

Postautor: fusywszklanejkuli » czwartek, 22 sierpnia 2019, 22:23

rav3n_pl pisze: czwartek, 22 sierpnia 2019, 21:32Taki skrypt wydania jest traktowany jako "niestandardowy" i węzły domyślnie ich nie przekazują ani kopalnie nie kopią.

Gwoli ścisłości, nie w przypadku redeem scriptu P2SH, który może być prawie dowolny, chyba że coś się zmieniło od wersji 0.11:
If you use anything besides a standard pubkey script in an output, peers and miners using the default Bitcoin Core settings will neither accept, broadcast, nor mine your transaction. When you try to broadcast your transaction to a peer running the default settings, you will receive an error.

If you create a redeem script, hash it, and use the hash in a P2SH output, the network sees only the hash, so it will accept the output as valid no matter what the redeem script says. This allows payment to non-standard scripts, and as of Bitcoin Core 0.11, almost all valid redeem scripts can be spent. The exception is scripts that use unassigned NOP opcodes; these opcodes are reserved for future soft forks and can only be relayed or mined by nodes that don’t follow the standard mempool policy.
Zresztą, wprowadzenie do Miniscriptu wskazuje o jakie skrypty chodzi:
For now, Miniscript is really only designed for P2WSH and P2SH-P2WSH embedded scripts. Most of its constructions works fine in P2SH as well, but some of the (optional) security properties rely on Segwit-specific rules. Furthermore, the implemented policy compilers assume a Segwit-specific cost model.

Bardzo Zły Moderator
Awatar użytkownika
Posty: 13106
Rejestracja: 16 kwietnia 2012
Reputacja: 1861
Reputacja postu: 
0
Napiwki za post: 0 BTC
Lokalizacja: Polska / Gorzów Wlkp.

Re: Bitcoin Miniscript

Postautor: rav3n_pl » piątek, 23 sierpnia 2019, 00:44

Mylisz sprawy.

Tworząc kontrakt piszesz skrypt WYDANIA, który ma być zrealizowany.
Adres na który wysyłasz środki będące przedmiotem kontraktu powstaje z hasza tego skryptu.
Tak więc w momencie WYSYŁANIA środków skrypt wydania nie jest znany i sieci to wisi - bo nie musi nic dziwnego robić. Po prostu wysyła środki na adres p2sh.
Cyrk zaczyna się przy WYDAWANIU środków z tego adresu - czyli przy realizacji kontraktu.
Taka transakcja musi zawierać cały skrypt oraz wymagane podpisy i co tam w nim zapisaleś. I tu jest haczyk - taka transakcja jest transakcja NIESTANDARDOWĄ ponieważ wszystkie skrypty wydania nie ujęte w kodzie (czyli multisig, timelock i kilka innych) są traktowane jako "szkodliwe/niebezpieczne" i węzły domyślnie ich nie realizują, nie przekazują i nie kopią.
Więc taka transakcja wydania nie jest propagowana w sieci i nie ma szans na zatwierdzenie. Chyba, że masz wtykę w kopalni która to realizuje (miał tak niektóre węzły P2Pool i chyba Slush?).
Piffko: PLC/BTC 1Rav3nkMayCijuhzcYemMiPYsvcaiwHni
Mój Skydrive; Trochę o P2pool; C#: RPC CoinControl, BIP39 Mnemonic z talii kart
Bitcoin Core 0.18.1

Początkujący
Posty: 262
Rejestracja: 20 maja 2018
Reputacja: 45
Reputacja postu: 
0
Napiwki za post: 0 BTC
Napiwki: https://tippin.me/@Hegemon1995

Bitcoin Miniscript

Postautor: randomowy świeżak » piątek, 23 sierpnia 2019, 00:45

W ostatnim wywiadzie Pieter Wuille zapowiadał że poza Taproot, schnorr czy mast chce mocno skupić się na miniscriptach. Ma to sens w sumie bo jak zbierze się to wszystko razem do kupy to będzie można skonstruować niewyobrażalnie złożone kontrakty a i tak ujawniony do wydania zostanie tylko jeden który akurat się zrealizował i nie będzie to dodatkowo obciążać sieci.

Bardzo Zły Moderator
Awatar użytkownika
Posty: 13106
Rejestracja: 16 kwietnia 2012
Reputacja: 1861
Reputacja postu: 
0
Napiwki za post: 0 BTC
Lokalizacja: Polska / Gorzów Wlkp.

Re: Bitcoin Miniscript

Postautor: rav3n_pl » piątek, 23 sierpnia 2019, 01:06

Ale... po co?
Jest Rootstock z prawdziwymi kontraktami. Nie jakieś mini-kobinacje.
Skalowanie w bok jest lepsze.
Piffko: PLC/BTC 1Rav3nkMayCijuhzcYemMiPYsvcaiwHni
Mój Skydrive; Trochę o P2pool; C#: RPC CoinControl, BIP39 Mnemonic z talii kart
Bitcoin Core 0.18.1

Orator
Awatar użytkownika
Posty: 894
Rejestracja: 12 sierpnia 2017
Reputacja: 2005
Reputacja postu: 
2
Napiwki za post: 0 BTC

Bitcoin Miniscript

Postautor: fusywszklanejkuli » piątek, 23 sierpnia 2019, 12:14

@rav3n_pl, gdyby było jak piszesz, dowolność redeem scriptu byłaby bezużyteczna, ponieważ i tak nie można by wydać środków. W cytacie z mojego posta jest tymczasem czarno na białym: This allows payment to non-standard scripts, and as of Bitcoin Core 0.11, almost all valid redeem scripts can be spent.

Ponadto, Pieter Wuille pół roku temu zapytany o niestandardową transakcję odpowiedział: Such a script is perfectly standard as long as you wrap it in P2SH or P2WSH (in other words, send coins to the P2SH script that contains the hash of your script; when spending, reveal the full script and the inputs necessary to satisfy it).

Pierwotna specyfikacja P2SH rzeczywiście mówiła o standardowości samego redeem scriptu: Transactions that redeem these pay-to-script outpoints are only considered standard if the serialized script - also referred to as the redeemScript - is, itself, one of the other standard transaction types. Najwyraźniej ten warunek został zniesiony w nowszych wersjach. A konkretnie, wtedy kiedy zaimplementowano #4365; później poprawiono też dokumentację.

Bardzo Zły Moderator
Awatar użytkownika
Posty: 13106
Rejestracja: 16 kwietnia 2012
Reputacja: 1861
Reputacja postu: 
0
Napiwki za post: 0 BTC
Lokalizacja: Polska / Gorzów Wlkp.

Re: Bitcoin Miniscript

Postautor: rav3n_pl » piątek, 23 sierpnia 2019, 23:11

Masz rację. Przegapiłem. O_o
Limitem jest obecnie (od v11 lol) 15 operacji weryfikacji podpisów. No i skrypt może mieć maksymalnie 520 bajtów.
Cudów się nie zmieści.
Ten gist opisuje cała zmianę

Piffko: PLC/BTC 1Rav3nkMayCijuhzcYemMiPYsvcaiwHni
Mój Skydrive; Trochę o P2pool; C#: RPC CoinControl, BIP39 Mnemonic z talii kart
Bitcoin Core 0.18.1

Początkujący
Posty: 262
Rejestracja: 20 maja 2018
Reputacja: 45
Reputacja postu: 
0
Napiwki za post: 0 BTC
Napiwki: https://tippin.me/@Hegemon1995

Bitcoin Miniscript

Postautor: randomowy świeżak » sobota, 24 sierpnia 2019, 00:22

rav3n_pl pisze: piątek, 23 sierpnia 2019, 23:11Limitem jest obecnie (od v11 lol) 15 operacji weryfikacji podpisów
czy jesteś pewien ?

https://www.whatbitcoindid.com/podcast/ ... ng-bitcoin

Nie pamiętam w którym dokładnie momencie ale Pieter opowiada tu nad czym obecnie się skupia co robi itd. Mówi on również iż multisig z 100 podpisów również jest jak najbardziej realny ale mało jest ludzi którzy są w ogóle w stanie nad tym pracować.

Orator
Awatar użytkownika
Posty: 894
Rejestracja: 12 sierpnia 2017
Reputacja: 2005
Reputacja postu: 
0
Napiwki za post: 0 BTC

Bitcoin Miniscript

Postautor: fusywszklanejkuli » sobota, 24 sierpnia 2019, 01:32

Dla P2SH limit 15 wynika bezpośrednio z limitu 520, jak czytamy w pierwotnej specyfikacji:
Thus it is not possible to spend a P2SH output if the redemption script it refers to is >520 bytes in length. For instance while the OP_CHECKMULTISIG opcode can itself accept up to 20 pubkeys, with 33-byte compressed pubkeys it is only possible to spend a P2SH output requiring a maximum of 15 pubkeys to redeem: 3 bytes + 15 pubkeys * 34 bytes/pubkey = 513 bytes.
To się na pewno nie zmieniło, bo kod ciągle wykorzystuje stałą MAX_P2SH_SIGOPS.

Z kolei SegWitowa P2WSH ma własne reguły standardowości i ograniczenia, nie chciałbym się jednak w to szczególnie wgłębiać poza stwierdzeniem, że bez wątpienia wolno więcej; choćby sam rozmiar skryptu P2WSH: reguły konsensusu pozwalają na <=10000 bajtów, reguły standardowości na <=3600 (MAX_STANDARD_P2WSH_SCRIPT_SIZE), podczas gdy P2SH - <=520.

Zgaduję, że Wuille mógł rzucić tego multisiga ze 100 podpisami, bo 3 bytes + x bytes + 100 pubkeys * 34 bytes/pubkey = 3403 bytes + x bytes < 3600 bajtów standardowego limitu P2WSH, gdzie x to kilka(naście) dodatkowych bajtów, bo 100 sprawia pewne kłopoty.

Początkujący
Posty: 174
Rejestracja: 3 lipca 2018
Reputacja: 122
Reputacja postu: 
0
Napiwki za post: 0 BTC
Napiwki: https://tippin.me/@fervi36341408
Napiwki: https://www.zapread.com/user/fervi

Bitcoin Miniscript

Postautor: fervi » niedziela, 25 sierpnia 2019, 17:32

A co sądzicie o Rootstocku itd.

Bo pytałem się na reddit ETH jakie są fajne projekty na tej platformie
W sumie to nie ma żadnych pomjając usprawnienia ETH. Chodziło mi o te wszystkie dAppsy i ich nie ma - głównie kasyna i rozwiązania DeFi, które zastępują Bitmeksa

Bardzo Zły Moderator
Awatar użytkownika
Posty: 13106
Rejestracja: 16 kwietnia 2012
Reputacja: 1861
Reputacja postu: 
0
Napiwki za post: 0 BTC
Lokalizacja: Polska / Gorzów Wlkp.

Re: Bitcoin Miniscript

Postautor: rav3n_pl » poniedziałek, 26 sierpnia 2019, 12:54

Rootstock ciągle nie ma powodzenia bo ludzie nie ufają federacyjnej wymianie btc-rsk
Kontrakty można pisać identycznie jak na eth/etc
Nie jestem tylko pewien, czy się opłaca - nie analizowałem kosztów gas w rsk.
Piffko: PLC/BTC 1Rav3nkMayCijuhzcYemMiPYsvcaiwHni
Mój Skydrive; Trochę o P2pool; C#: RPC CoinControl, BIP39 Mnemonic z talii kart
Bitcoin Core 0.18.1

Weteran
Posty: 1298
Rejestracja: 7 listopada 2013
Reputacja: 558
Reputacja postu: 
0
Napiwki za post: 0 BTC

Bitcoin Miniscript

Postautor: redbog » poniedziałek, 26 sierpnia 2019, 15:15

rav3n_pl pisze: poniedziałek, 26 sierpnia 2019, 12:54Rootstock ciągle nie ma powodzenia bo ludzie nie ufają federacyjnej wymianie btc-rsk
Jeśli tak jest to dobrze ze nie ufają, mają racje. Natomiast mi się wydaje ze brak zaufania nie jest tym co ludzi powstrzymuje od rsk bo jakoś ci sami ludzie nie mają niesrety problemu z zaufaniem dla giełdy i korzystaniu z niej jako portfela.
Rsk nie jest nośnym tematem nie ma tutaj euforii i nikt nie widzi jak można na tym zarobić i to jest moim zdaniem główna przyczyna niepowodzenia rsk. Może to i dobrze nie ma sensu kibicować scentralizowanym rozwiązaniom.

Początkujący
Posty: 174
Rejestracja: 3 lipca 2018
Reputacja: 122
Reputacja postu: 
0
Napiwki za post: 0 BTC
Napiwki: https://tippin.me/@fervi36341408
Napiwki: https://www.zapread.com/user/fervi

Bitcoin Miniscript

Postautor: fervi » poniedziałek, 26 sierpnia 2019, 18:50

rav3n_pl pisze: poniedziałek, 26 sierpnia 2019, 12:54Rootstock ciągle nie ma powodzenia bo ludzie nie ufają federacyjnej wymianie btc-rsk
Ok, bo źle napisałem. Nie do końca mi chodzi o to co zrobić z RSK, tylko jakie są ciekawe projekty na Ethereum (i ostatecznie RSK), które są typowymi dAppsami. Bo jest opinia, że Smart contracty to nowa technologia, ETH master race. Ale potem się zapytałem jakie są ciekawe dAppsy napisane na Ethereum i już ludzie nie wiedzą.

Bo weźmy DEX - fajna idea, ale do tego nie trzeba Smart Contratów (Bisq), ludzie polecają DeFi jako system grania a'la Bitmex (coś w rodzaju pożyczasz pieniądze do grania i jak ci się poszczęści to zarobisz, a jak nie poszczęści to stracisz :D). Sam myślałem, że DeFi to zdecentralizowany system zastępujący usługi bankowe, ale nie.
redbog pisze: poniedziałek, 26 sierpnia 2019, 15:15Może to i dobrze nie ma sensu kibicować scentralizowanym rozwiązaniom.
A RSK jest scentralizowane? Bo w sumie nie wiem, można własny węzeł postawić. Pytanie czy taki węzeł jest bezpieczny i weryfikuje sieć czy to taka prowizorka

Weteran
Posty: 1298
Rejestracja: 7 listopada 2013
Reputacja: 558
Reputacja postu: 
0
Napiwki za post: 0 BTC

Bitcoin Miniscript

Postautor: redbog » poniedziałek, 26 sierpnia 2019, 21:17

fervi pisze: poniedziałek, 26 sierpnia 2019, 18:50A RSK jest scentralizowane?
Nie wiem jaka jest sytuacja biezaca bo docelowo miał niby dążyć żeby był zdecentralizowany (na nie do końca jasnych dla mnie zasadach). Natomiast tymczasowo został oparty na reputacji kilku podmiotów(chyba kilku a moze jednego?) i ten stan chyba trwa do dzis wiec trzeba im zaufać żeby korzystać z rsk,

Rsk jest lub ma być docelowo sidechainem. Nie wiem czy się nie myle ale chyba do tej pory jeszcze nie powstał zaden zdecentralizowany sidechain lub bardziej należałoby mówić niewymagający zaufania lub non custodial.

Orator
Awatar użytkownika
Posty: 894
Rejestracja: 12 sierpnia 2017
Reputacja: 2005
Reputacja postu: 
0
Napiwki za post: 0 BTC

Bitcoin Miniscript

Postautor: fusywszklanejkuli » wtorek, 27 sierpnia 2019, 15:02

fervi pisze: poniedziałek, 26 sierpnia 2019, 18:50Ale potem się zapytałem jakie są ciekawe dAppsy napisane na Ethereum i już ludzie nie wiedzą.
[Z przymrużeniem oka, choć prawdy niestety więcej, niż byśmy chcieli.] Lata mijają, a killer dAppki ani widu, ani słychu. [Głosem Shadowa] My, early adopterzy, już w trakcie bańki ICO mówiliśmy, że ten cały blockchain to przereklamowany pic. Coś się zmienia? Nie sądzę.

Wróć do „Bitcoin”

Kto jest online

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