Bitcoin Script
stack が 0 でなければ成功
OP code を hex に変換できる
btcdeb> tf hex OP_CHECKSIG
script を作成
code:terminal
// stack っぽく表示する
// into hex
hal script decode コマンドも便利
GUI
size は 4 bytes
Hex では8桁
有効になる場合とならない場合がある
有効な場合は、block に含めることができる最短の時間を表現している
UNIX timestamp か Block height で指定される
500_000_000 以上だと timestamp
nLockTime はブロックに入れることができるタイミングを指定しているだけなので、それより前に他の tx が nLockTime でロックされている tx が unlock しようとしている output を unlock してしまう可能性がある
Miner は時間について嘘をつけるので、miner が指定する block time ではなくて過去11ブロックの block time の中央値を使う
マイナーが正直に blocktime を指定しているとしても、nLocktime に指定した UNIX timestamp よりも遅くなる、よね?
仮に6ブロック目が中央値だったなら、現時点でのブロックに含めることができるのは、およそ1時間前を nLockTime に指定している tx
ざっくりnLockTime に指定した時間の一時間後にはブロックに入る
nLockTime の意味は OP_CLTV に与えられる squence number によって変化する nLockTime ではできない UTXO の使用を制限することができる
nLockTime の値が CLTV に与えられた値以上でないと tx は fail
CLTV は sciptSig なので prev tx の output で事前に指定されている
nSequence による relative timelock
input に指定する nSequence によって、input が spent する output が block に含まれてからどのくらい立たないといけないかを指定する
nSequence がCSV に与えられた値以上でないと fail する