tapyrusrb使い方ガイド作成#24
Conversation
| title: "tapyrusrb ガイド" | ||
| --- | ||
|
|
||
| この記事ではTapyruys rubyライブラリであるtapyrusrbの使用方法を解説します。 |
There was a problem hiding this comment.
| この記事ではTapyruys rubyライブラリであるtapyrusrbの使用方法を解説します。 | |
| この記事ではTapyruysのプロトコル用のrubyライブラリであるtapyrusrbの使用方法を解説します。 |
| - SchnorrとECDSAの鍵生成と検証(BIP-32とBIP-39のサポートを含む) | ||
| - ECDSA署名(RFC6979 -決定論的ECDSA, LOW-S, LOW-R対応) | ||
| - [WIP] SPVノード | ||
| - [WIP】0ff-chainプロトコル |
|
|
||
| ## セットアップ方法 {#setup} | ||
|
|
||
| ### Level DBのインストール {#setup-leveldb} |
There was a problem hiding this comment.
Level DBはウォレット用に用意しようとしてたものなので、tapyrusrb自体の改修をしない限りインストールは不要です。
| ``` | ||
|
|
||
| ## RPC呼び出し {#rpc-call} | ||
| [TapyrusCoreClientモジュール](https://github.com/chaintope/tapyrusrb/blob/master/lib/tapyrus/rpc/tapyrus_core_client.rb){:target="_blank"}を用いることで、TapyrusCoreに対してRPC呼び出しを行なうことができます。 |
There was a problem hiding this comment.
| [TapyrusCoreClientモジュール](https://github.com/chaintope/tapyrusrb/blob/master/lib/tapyrus/rpc/tapyrus_core_client.rb){:target="_blank"}を用いることで、TapyrusCoreに対してRPC呼び出しを行なうことができます。 | |
| [TapyrusCoreClientモジュール](https://github.com/chaintope/tapyrusrb/blob/master/lib/tapyrus/rpc/tapyrus_core_client.rb){:target="_blank"}を用いることで、Tapyrus Coreに対してRPC呼び出しを行なうことができます。 |
|
|
||
|
|
||
| ## 鍵ペア作成 {#generate-keypair} | ||
| 鍵ペアの作成には[Keyモジュール](https://github.com/chaintope/tapyrusrb/blob/master/lib/tapyrus/key.rb){:target="_blank"}を使用します。 |
There was a problem hiding this comment.
| 鍵ペアの作成には[Keyモジュール](https://github.com/chaintope/tapyrusrb/blob/master/lib/tapyrus/key.rb){:target="_blank"}を使用します。 | |
| 鍵ペアの作成には[Tapyrus::Key](https://github.com/chaintope/tapyrusrb/blob/master/lib/tapyrus/key.rb){:target="_blank"}クラスを使用します。 |
| ```ruby | ||
| p2pkh_script = Tapyrus::Script.new << '032ad705d98318241852ba9394a90e85f6afc8f7b5f445675040318a9d9ea29e35' << | ||
| Tapyrus::Script::OP_CHECKSIG | ||
| puts p2pkh_script |
| 032ad705d98318241852ba9394a90e85f6afc8f7b5f445675040318a9d9ea29e35 OP_CHECKSIG | ||
| ``` | ||
|
|
||
| ### P2PH {#generate-script-p2sh} |
There was a problem hiding this comment.
| ### P2PH {#generate-script-p2sh} | |
| ### P2SH {#generate-script-p2sh} |
| ``` | ||
|
|
||
| ### P2PH {#generate-script-p2sh} | ||
| P2PHもBitcoinと同様です。以下は1-of-2マルチシグの例です。 |
There was a problem hiding this comment.
| P2PHもBitcoinと同様です。以下は1-of-2マルチシグの例です。 | |
| P2SHもBitcoinと同様です。以下は1-of-2マルチシグの例です。 |
| key_pair2 = Tapyrus::Key.generate | ||
| p2sh_script = Tapyrus::Script.new << 1 << key_pair1.to_p2pkh << key_pair2.to_p2pkh << 2 << Tapyrus::Script::OP_CHECKMULTISIG | ||
| puts p2sh_script | ||
| ``` |
There was a problem hiding this comment.
これだと、単にマルチシグのScriptでP2SHにはなってないです。
There was a problem hiding this comment.
to_p2sh_multisig_scriptはマルチシグのP2SHのみを作るメソッドなので、普通にマルチシグのScriptをTapyrus::Scriptで構成して、その後to_p2shするのが良いかと思います。
| サンプルコードは[こちら](https://github.com/chaintope/tapyrus-pages/scripts/tree/master/generate_script.rb){:target="_blank"}です。 | ||
|
|
||
| ## ScriptInterpreterによるスクリプトの評価 {#scriptInterpreter} | ||
| [ScriptInterpreterモジュール](https://github.com/chaintope/tapyrusrb/blob/master/lib/tapyrus/script/script_interpreter.rb){:target="_blank"}を使用します。 |
There was a problem hiding this comment.
最初にScriptInterpreterが何をするものなのか説明を追加してください。
|
|
||
| 実行するとbooleanで検証結果が出力されます。 | ||
| ``` | ||
| false |
| key_pair2 = Tapyrus::Key.generate | ||
| p2sh_script = Tapyrus::Script.new << 1 << key_pair1.to_p2pkh << key_pair2.to_p2pkh << 2 << Tapyrus::Script::OP_CHECKMULTISIG | ||
| puts p2sh_script | ||
| ``` |
There was a problem hiding this comment.
to_p2sh_multisig_scriptはマルチシグのP2SHのみを作るメソッドなので、普通にマルチシグのScriptをTapyrus::Scriptで構成して、その後to_p2shするのが良いかと思います。
#23 を作成しました。