ビットコインなどの暗号通貨では、送金の取引を作成したのがたしかにそのコインの所有者であることを確認するために、電子署名が用いられています。
この電子署名は公開鍵と電子署名がそのまま取引中に含まれているわけではありません。
scriptPubKey
とscriptSig
という対になるスクリプトが用いられています。
コインを送金するときは送金先としてscriptPubKey
を指定します。
このコインを別の宛先に送金するときには、電子署名などを含んだscriptSig
を作成します。
ビットコインのネットワークの各ノードは、scriptSig
とSciptPubKey
を続けて実行し、結果が真となれば、正当な取引として認めます。
本書はこのスクリプトの解説本です。
また、ブロックチェーンに含まれる過去の取引のスクリプトを分析した結果もまとめています。
サンプル
- sample.pdf(1と素数のページのみ抜粋しています)
委託販売
- COMIC ZIN
- Monapartyの
MONATXSCRIPT
トークンは付属しません
詳細
- サークル情報
- 金曜日 西め24a 「superflip」
- 頒布価格
-
- 1,000 円(pixiv PAY利用可)
- 4 MONA
- 0.001 BTC
- 1,000 KUSA
- Pixiv PAY、モナコイン、ビットコインでの支払いは@kusano_kがスペースにいるときのみ
- サイズ
- B5
- ページ数
- 本文50ページ
- おまけ
-
Monapartyのトークン
MONATXSCRIPT
を1,000個おまけに付ける予定です。Monacardを設定しています
Q.MONATXSCRIPT
を持っていると何か良いことがあるのですか?
A. ありません
Kusacoin
詳細は本書中に記載していますが、ビットコインのスクリプトには削除された命令が多く、取引中のスクリプトには厳しい制約があります。 削除された命令を再実装し、(ほぼ)自由にスクリプトを使えるようにした暗号通貨Kusacoinを作成しました。 Kusacoinでの支払いも受け付けます。 現状の採掘難易度のままであれば、頒布価格の1,000 KUSAはCPUでも半日程度でマイニングできる量です。
モバイルウォレットが無いので、下記の手順で頒布します。
- 2018年8月8日23時59分までに、@kusano_kに「Kusacoinでの支払い希望」とDMを送る
- @kusano_kが送金先アドレスを連絡する
- 2018年8月9日12時00分までに、1,000 KUSAを送金する
- @kusano_kがパスワードをDMで送る
- スペースでパスワードと本書を引き換える
注意事項
- @kusano_kをフォローするか、「すべてのユーザーからダイレクトメッセージを受信する」設定にして、@kusano_kからのDMを受信できるようにしてください
- 1人1冊まで
- (ありえないとは思いますが)希望者があまりにも多ければ、途中で受付を終了します
- 支払いを希望してマイニングが間に合わないなどでキャンセルでも構いません
- 当日スペースにいらっしゃらなければ、送金元のアドレスに後日返KUSAします
本書中の取引IDなど
紙の本を見ながら取引IDなどを打ち込むのは面倒なので、ここに載せておきます。
- cca7507897abc89628f450e8b1e0c6fca4ec3f7b34cccf55f3f531c659ff4d79
- 初めて決済に用いられたビットコインを引き出す取引
- sign.py
OP_CHECKSIG
の方法で電子署名を検証するスクリプト- 6a26d2ecb67f27d1fa5524763b49029d7106e91e3cc05743073461a719776192
- P2SHの
scriptPubKey
の形式だが、P2SHの検証が行われない取引 - 00000000000002dc756eebf4f49723ed8d30cc28a5f108eb94b1ba88ac4f9c22
- 上記の取引を含むブロック
- fb4a1feda78f2a5e219ce39d793e180fa62b4707b3b021b5632abd0696ed9cec
- 連立方程式の答えで出金する取引
- 264887a5a42319a4b25cab843f3bbe8699432fbdab95742157b32a0239230d1a
- 唯一のP2WSHを用いたP2PKの取引
- 381917e8d1232aa8eba9893a3b43b7d6e2522654cabf770accb1c63ffbeacb1e
- 最高金額のNull Data取引
- fcc78d0f68a3e9b3c7dc81f050714f24c2a71af1f141131d4b4992f863d0f2bc
- 0-of-1 multisig
- c4aaf7fbec7a9a079e670e50f6a672315451c7618814494ab1f89cf3fd97b3bb
- 20-of-20 multisig
- 8e2c7cec5006949e1929f70961da8f85eebfe06a4979d611ec93ab384eaa34ed
- 一方の公開鍵の長さが不正な1-of-2 multisig
- 83af72371e38fad1a6a7f18d599d1022bbbf14aafe9e63d51ec53fed0b2f8c5f
- 一方の公開鍵の長さが不正な1-of-2 multisigを試した例
- a165c82cf21a6bae54dde98b7e00ab43b695debb59dfe7d279ac0c59d6043e24
- XSSを狙った取引 (1)
- 8af4152ee88a5ea7c996ac92ae6d0f430b98a88ab512a789dfe97cbba7c72fec
- XSSを狙った取引 (2)
- 219b5815886af9c9ff74fdbe8146731534b0c1b1dc23bfd3fab81745433bbc3f
- 問題になっている
scriptPubKey
- ab149362ea4e119d2bc5211b35083c23ec41842af6bbc2ff3c5f1e55941199cc
- より簡単な問題
- fa735229f650a8a12bcf2f14cca5a8593513f0aabc52f8687ee148c9f9ab6665
script
という文字列- 03acfae47d1e0b7674f1193237099d1553d3d8a93ecc85c18c4bec37544fe386
- 多額のビットコインが入った出金できないスクリプト
- ed7f71fdf6ae57f55b25c60e88771449a88f9c459db495a9efd9e90149af8b92
- the password is password
- c0b2cf75b47d1e7f48cdb4287109ff1dd5bcf146d5f77a9e8784c0c9c0ef02ad
- TheCakeIsALie