Все Нестандартный скрипты в текстовый файл по сути!
Теперь на мои вопросы:
- (1) Что происходит с первой полудюжины Coinbase-TxOut сценариев, которые, как правило, просто быть открытым ключом? Там в нормальный 0x04 байт в начале (как если бы это был открытый ключ), и OP_CHECKSIG в конце, но есть 70 байт данных между ними, вместо обычных 64. Следующие 6 байт то, что следует за 0x04: "00 а0 34 20 00 44", В моем коде, я толкаю все 71 байт в стек, но мой код не признает его в качестве открытого ключа. На самом деле, я пытался смотреть на последовательных 32/32 куски байт, но ни один из них не соответствуют точке на кривой secp256k1. (Ни один из них не были потрачены, так что я полагаю, это может быть unspendable скрипты TxOut)
- (2) я достиг их, исследуя blockchain файл, созданный клиентом 0.4.0 при запуске в testnet режиме. Затем, правильно ли считать, что все эти сценарии на самом деле действует, и мой код должен быть в состоянии оценить все из них правда? Я нахожусь под впечатлением, что Сатоши клиент делает все проверки проверки на каждом блоке / TX, который принимается, и, таким образом, недействительные сценарии не превратить его в blk0001.dat.
- (3) Я знаю, что есть ошибка с OP_CHECKMULTISIG, что приводит к его попу слишком много элементов из стека. Похоже, мы работаем наш путь вокруг этой ошибки в предстоящем мульти-сиг ТХ isStandard. Существуют ли какие-либо другие аномалии в скриптовый движок, что я должен знать? Похоже, поведение Сатоши-клиент "правда" и, таким образом, я должен соответствовать, даже если он не совсем соответствует предполагаемой конструкции.
Просто для удовольствия, вот два захватывающих сценариев из testnet - первый является TxOut, то второй является TxIn, который проводит TxOut:
TxOut сценарий:
Код:
3
OP_ROLL
OP_DUP
2
OP_GREATERTHANOREQUAL
OP_VERIFY
3
OP_ROLL
OP_SIZE
OP_NOT
OP_OVER
OP_HASH160
[PUSHDATA - 20 байтам:]
80677c5392220db736455533477d0bc2fba65502
OP_EQUAL
OP_BOOLOR
OP_VERIFY
3
OP_ROLL
OP_SIZE
OP_NOT
OP_OVER
OP_HASH160
[PUSHDATA - 20 байтам:]
02d7aa2e76d9066fb2b3c41ff8839a5c81bdca19
OP_EQUAL
OP_BOOLOR
OP_VERIFY
3
OP_ROLL
OP_SIZE
OP_NOT
OP_OVER
OP_HASH160
[PUSHDATA - 20 байтам:]
10039ce4fdb5d4ee56148fe3935b9bfbbe4ecc89
OP_EQUAL
OP_BOOLOR
OP_VERIFY
3
OP_CHECKMULTISIG
OP_ROLL
OP_DUP
2
OP_GREATERTHANOREQUAL
OP_VERIFY
3
OP_ROLL
OP_SIZE
OP_NOT
OP_OVER
OP_HASH160
[PUSHDATA - 20 байтам:]
80677c5392220db736455533477d0bc2fba65502
OP_EQUAL
OP_BOOLOR
OP_VERIFY
3
OP_ROLL
OP_SIZE
OP_NOT
OP_OVER
OP_HASH160
[PUSHDATA - 20 байтам:]
02d7aa2e76d9066fb2b3c41ff8839a5c81bdca19
OP_EQUAL
OP_BOOLOR
OP_VERIFY
3
OP_ROLL
OP_SIZE
OP_NOT
OP_OVER
OP_HASH160
[PUSHDATA - 20 байтам:]
10039ce4fdb5d4ee56148fe3935b9bfbbe4ecc89
OP_EQUAL
OP_BOOLOR
OP_VERIFY
3
OP_CHECKMULTISIG
TxIn сценарий:
Код:
OP_0
[PUSHDATA - 73 БАЙТ:]
3046022100d73f633f114e0e0b324d87d38d34f22966a03b072803afa99c9408201f6d6dc6022100900e85be52ad2278d24e7edbb7269367f5f2d6f1bd338d017ca460008776614401
[PUSHDATA - 71 Б]
3044022071fef8ac0aa6318817dbd242bf51fb5b75be312aa31ecb44a0afe7b49fcf840302204c223179a383bb6fcb80312ac66e473345065f7d9136f9662d867acf96c12a4201
2
[PUSHDATA - 65 БАЙТ:]
048c006ff0d2cfde86455086af5a25b88c2b81858aab67f6a3132c885a2cb9ec38e700576fd46c7d72d7d22555eee3a14e2876c643cd70b1b0a77fbf46e62331ac
[PUSHDATA - 65 БАЙТ:]
04b68ef7d8f24d45e1771101e269c0aacf8d3ed7ebe12b65521712bba768ef53e1e84fff3afbee360acea0d1f461c013557f71d426ac17a293c5eebf06e468253e
OP_0
[PUSHDATA - 73 БАЙТ:]
3046022100d73f633f114e0e0b324d87d38d34f22966a03b072803afa99c9408201f6d6dc6022100900e85be52ad2278d24e7edbb7269367f5f2d6f1bd338d017ca460008776614401
[PUSHDATA - 71 Б]
3044022071fef8ac0aa6318817dbd242bf51fb5b75be312aa31ecb44a0afe7b49fcf840302204c223179a383bb6fcb80312ac66e473345065f7d9136f9662d867acf96c12a4201
2
[PUSHDATA - 65 БАЙТ:]
048c006ff0d2cfde86455086af5a25b88c2b81858aab67f6a3132c885a2cb9ec38e700576fd46c7d72d7d22555eee3a14e2876c643cd70b1b0a77fbf46e62331ac
[PUSHDATA - 65 БАЙТ:]
04b68ef7d8f24d45e1771101e269c0aacf8d3ed7ebe12b65521712bba768ef53e1e84fff3afbee360acea0d1f461c013557f71d426ac17a293c5eebf06e468253e
OP_0