Post
Topic
Board Новички
Re: Статьи на habrahabr.ru о Bitcon
by
mad
on 07/03/2012, 22:07:58 UTC
Bitcoin: встроенная система сценариев и цифровые контракты.
В этом же посте затронут весьма узкий аспект — встроенная система сценариев, предназначенная для проверки валидности транзакций, а также некоторые её возможности. На родном языке такой информации мне не попадалось, потому вношу свою лепту.
http://habrahabr.ru/blogs/p2p/139291/

Отвечу сюда. На хабре не зареган.

http://habrahabr.ru/blogs/p2p/139291/#comment_4663474

Quote
...
По поводу BIP12/BIP16 — почитав, не могу сказать определенно, но кажется бредом. PayToScriptHash не может работать даже в теории, ибо ScriptHash=HASH(scriptSig) не известен и не может быть известен в принципе отправляющей стороне, поскольку ECDSA-сигнатура состоит наполовину из случайного числа.
...

Видимо vibornoff не внимательно прочитал.

В scripthash транзакции в out пишется:

Code:
OP_HASH160
HASH({pubKeyA OP_CHECKSIG})
OP_EQUAL

То есть в качестве адреса получателя выступает хэш-образ сценария {pubKeyA OP_CHECKSIG}

А в in:

Code:
signature(TX)
{pubKeyA OP_CHECKSIG}

Зная тип транзакции, отправитель формирует сценарий со своим открытым ключом и подписью, тем самым доказывая владение выходом. Сценарий {pubKeyA OP_CHECKSIG} сериализуется и записывается в виде константы.

И в итоге для проверки транзакции выполняется сценарий:

Code:
signature(TX)
{pubKeyA OP_CHECKSIG}
OP_HASH160
HASH({pubKeyA OP_CHECKSIG})
OP_EQUAL

Если хэш-образы {pubKeyA OP_CHECKSIG} равны, то выполняется сценарий:

Code:
signature(TX)
pubKeyA
OP_CHECKSIG

Успешное выполнение последнего сценария доказывает корректность транзакции.



Попытаюсь ответить rPman

http://habrahabr.ru/blogs/p2p/139291/#comment_4663669

Официальный клиент Bitcoin позволяет проводить только те транзакции которые в точности до инструкции попадают под шаблон. Сейчас их 4 штуки: PUBKEY, PUBKEYHASH, SCRIPTHASH, MULTISIG.

https://github.com/bitcoin/bitcoin/blob/master/src/script.cpp#L1126