見出し画像

ripple-lib を使ってマルチシグアカウントを作ってみよう

みなさんこんにちは。

今日は、javascript ライブラリである ripple-lib を使ってマルチシグな XRP アドレスを作ってみます。

1. マルチシグとは?

マルチシグとはマルチシグネチャの略で、複数の秘密鍵を使ってトランザクションにサインしなければならない仕組みのことです。

普通に XRP のアドレスを作った直後の状態では、そのアドレスに対応する秘密鍵だけでトランザクションにサインすれば ledger を変更することができます。

アドレスの設定を変えてマルチシグアドレスにすることで、複数の秘密鍵によるサインが必須になります。

より詳しく知りたい方は、公式ドキュメントの Multi-Signing あたりをご覧ください。

マルチシグのメリットは、やりようによってはセキュリティが良くなる点です。

マルチシグにすることで、秘密鍵の解読リスクや盗難リスク、紛失リスクが減ったり、3 人にそれぞれ秘密鍵を渡して 2 人以上の賛成がないと資金を取り出せないようにして 1 人の暴走を防いだりすることができるようになります。

複数の秘密鍵を同じ場所に保存したりすると盗難リスクや紛失リスクは減らないので要注意です(笑)

今回は、アカウントにマルチシグの設定を追加した上で、元々の秘密鍵によるサインを無効にする disableMasterKey フラグを有効にするコードを書いていきます。

必要なソフトウェアの準備については、前回の記事「ripple-lib を使って XRP を送金してみよう」をご覧ください。


2. アカウント(アドレスと秘密鍵) A, B, C, D を用意する

さっそくやってみましょう。

いきなりメインネットは怖いので、テストネットで送金します。

以下のページで、開発用にテスト用の XRP が入ったアカウントを簡単に作ることができます。

XRP Test Net Faucet

この時点では、アドレス A としてのトランザクション発行には「A の秘密鍵」のサインが必要です。

3. SignerListSet トランザクションを発行

B, C, D のうち 2 つ以上のサインを必要とする設定変更(SignerListSet) トランザクションを A の秘密鍵でサインして発行します。

まずはアカウントを定義しましょう。

// Testnet accounts
// DO NOT PUT MAIN NET SECRET
var keypairs = [
	{
		publicKey: "rnUPTeuNCo7XwpHUWtuZzmyPaekddNx3i2",
		privateKey: "sa38bn8j47PexSAZWAHTv2c1cozod",
	},
	{
		publicKey: "r3Jhh7RBzB6Hk7yQgDfswv1BUmNcfvbk59",
		privateKey: "snpxT2VfFQB7wWQFQ93MYXRUtEqvc",
	},
	{
		publicKey: "r9GbmLUtbNQrigzkPXZpiiBZjpKzhUp2U8",
		privateKey: "ssafg9dKz4baXzwGPJ1SspV8q4mui",
	},
	{
		publicKey: "rfwkJw6srRo44zRYnvxGc8MSCJ4WmwLyUH",
		privateKey: "shUS3UvYVEHPFnSB64Rg54SZx3PW4",
	},
];


SignerListSet を発行する関数を書きます。

ここから先は

17,638字

¥ 10,000

この記事が気に入ったらチップで応援してみませんか?