scriptPubKeyに対するscriptSigを求める2

技術メモ

以前やった課題に挑戦。

OP_ADD
OP_7
OP_EQUAL
OP_SUB
OP_3
OP_EQUAL
OP_SWAP
OP_4
OP_EQUAL
OP_SWAP
OP_7
OP_EQUAL
OP_BOOLAND
OP_3DUP
OP_ADD
OP_8
OP_EQUAL
OP_SWAP
OP_ROT
OP_ADD
OP_10
OP_EQUAL
OP_2SWAP
OP_ADD
OP_4
OP_EQUAL
OP_BOOLAND
OP_BOOLAND

とおもったら、上記をまとめて計算ではなくて、これが以下4つに分かれている質問ということが判明

1. OP_ADD OP_7 OP_EQUAL
2. OP_SUB OP_3 OP_EQUAL
3. OP_SWAP OP_4 OP_EQUAL OP_SWAP OP_7 OP_EQUAL OP_BOOLAND
4. OP_3DUP OP_ADD OP_8 OP_EQUAL OP_SWAP OP_ROT OP_ADD OP_10 OP_EQUAL
OP_2SWAP OP_ADD OP_4 OP_EQUAL OP_BOOLAND OP_BOOLAND

これだけ分かれていれば簡単なのでさっさと解いていく。

1. OP_ADD OP_7 OP_EQUAL

初期状態
y
x

OP_ADD

y+x

OP_7

7
y+x

OP_EQUAL

7=y+x

になるので、答えは

OP_3 OP_4 SIG_1

かな。OP_3 と OP_4 の部分は足し合わせて7になればOK

2. OP_SUB OP_3 OP_EQUAL

初期状態
y
x

OP_SUB

y-x

OP_3

3
y-x

OP_EQUAL

3=y-x

になるので、X – Y = 3 になるもの 答えは

OP_1 OP_4 SIG_1

3. OP_SWAP OP_4 OP_EQUAL OP_SWAP OP_7 OP_EQUAL OP_BOOLAND

初期状態
y
x

OP_SWAP
x
y

OP_4
4
x
y

OP_EQUAL
1 (4=x)
y

OP_SWAP
y
1

OP_7
7
y
1

OP_EQUAL
1(7=y)
1

OP_BOOLAND
1

このため、x=4, y=7。答えは

OP_4 OP_7 SIG_1

4. OP_3DUP OP_ADD OP_8 OP_EQUAL OP_SWAP OP_ROT OP_ADD OP_10 OP_EQUAL
OP_2SWAP OP_ADD OP_4 OP_EQUAL OP_BOOLAND OP_BOOLAND

初期状態
z
y
x

OP_3DUP
z
y
x
z
y
x

OP_ADD
z+y
x
z
y
x

OP_8
8
z+y
x
z
y
x

OP_EQUAL
1 (z+y=8)
x
z
y
x

OP_SWAP
x
1
z
y
x

OP_ROT
1
z
x
y
x

OP_ADD
1+z
x
y
x

OP_10
10
1+z
x
y
x

OP_EQUAL
1(10=1+z)  ### z=9
x
y
x

OP_2SWAP
y
x
1
x

OP_ADD
y+x
1
x

OP_4
4
y+x
1
x

OP_EQUAL
1(4=y+x)
1
x

OP_BOOLAND
1
x

OP_BOOLAND
1
x (x=1以上の数字)

上記のため

z = 9
y = -1 (z+y=8  =   9+y=8  =  y=-1)
x =5     (4=y+x  =  4=-1+x  =  5=x)

になる。答えは

OP_5 OP_1NEGATE OP_9 SIG_1

OP_1NEGATE になったけど、よいんかな?これで提出してみる。

[追記 ] 4番間違っていた。

OP_ROTの対応にミスがあり全て間違う。正解は以下

初期状態
z
y
x

OP_3DUP
z
y
x
z
y
x

OP_ADD
z+y
x
z
y
x

OP_8
8
z+y
x
z
y
x

OP_EQUAL
true (z+y=8)
x
z
y
x

OP_SWAP
x
true
z
x
y
x

OP_ROT
z
x
true
y
x

OP_ADD
z+x
true
y
x

OP_10
10
z+x
true
y
x

OP_EQUAL
true (10=z+x)
true
y
x

OP_2SWAP
y
x
true
true

OP_ADD
y+x
true
true

OP_4
4
y+x
true
true

OP_EQUAL
true(4=y+x)
true
true

OP_BOOLAND
true
true

OP_BOOLAND
true
z+y = 8
z+x = 10
x+y = 4

であるため

y = 8 - z = 4 - x 
z = 10 - x
8 + x - 10 = 4 - x
6 = 2x -> x = 3
y = 1
z = 7

になる。答えは

OP_3 OP_1 OP_7
Sponsored Link
コメントはまだありません

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

CAPTCHA


仮想通貨全般
TendermintをDocker使って起動してみる

以前、勉強会に行ってきた際にTendermintの事を聞いて ブロックチェーンプロトコルが実装できる …

仮想通貨全般
Bitcoinのdifficultyを決めるnBitsを理解する

マイニングする際の理解を深めようと思い、マイニング難易度(difficulty)を決めるnBitsに …

仮想通貨全般
EOS Night Meetupにいってきた

今回は、以前からEOSに興味があったので EOS Night Meetupにいってきました。 暗号通 …