カタパルトのpublic-testとmijin-test


はじめに

カタパルトには、パブリックチェーンとプライベートチェーンどちらにも使えるようになっています。

そして、テストモードと本番モードも用意されています。

それらは設定ファイルで変えることができます。

この記事は、マイルストーンfushicho 3時点のものです。

catapult-service-bootstrap

rubyによる設定ファイルの自動生成と、docker-composeを使ったコンテナーの一括コントロールができるツールセットです。

public-test

public-testで立ち上げるには、masterブランチを使います。

mijin-test

mijin-testで立ち上げるには、mijin-test-0.9.0.1ブランチを使います。ただし、こちらはまだfushicho 2のものです。

diff

public-testとmijin-testの違いがあります。

epochAdjustmentmaxHarvesterBalanceの設定などは、fushicho 2とfushicho 3の差分です。

catapult-rest

REST APIの応答も少し異なってきます。

public-test

/network

publicTestとなっています

/node/info

networkIdentifier: 152となっています

/node/time

mijin-test

/network

mijinTestとなっています

/node/info

networkIdentifier: 144となっています

/node/time

nem2-sdk-typescript-javascript

NetworkTypeでの使い分けをします。

public-testの場合は、NetworkType.MIJIN_TESTを使用します。

mijin-testの場合は、NetworkType.TEST_NETを使用します。

ハッシュ関数

また、使用するハッシュ関数も異なります。

以下のように、public-testとmijin-testで、同じ秘密鍵から公開鍵とアドレスを導出してみます。

[email protected]でやります。

process.env.PRIVATE_KEY = '25B3F54217340F7061D02676C4B928ADB4395EB70A2A52D2A11E2F4AE011B03E';

const {
    Account,
    NetworkType
} = require('nem2-sdk');

const publicTestAccount = Account.createFromPrivateKey(process.env.PRIVATE_KEY, NetworkType.TEST_NET);
console.log(publicTestAccount.privateKey, publicTestAccount.publicKey, publicTestAccount.address.plain());

const mijinTestAccount = Account.createFromPrivateKey(process.env.PRIVATE_KEY, NetworkType.MIJIN_TEST);
console.log(mijinTestAccount.privateKey, mijinTestAccount.publicKey, mijinTestAccount.address.plain());

結果はこのようになります。秘密鍵は同じですが、導出される公開鍵が異なります。

// public-test
private: 25B3F54217340F7061D02676C4B928ADB4395EB70A2A52D2A11E2F4AE011B03E
public : 5F247764C644A8A0A0E041115547AC8E0CC5F9ECB42C40E75C683C1D13F1E79D
address: TDYF3QKKPYMXTGZODND6X3O5FLVB3GBYMFQG4PEU

// mijin-test
private: 25B3F54217340F7061D02676C4B928ADB4395EB70A2A52D2A11E2F4AE011B03E
public : AC1A6E1D8DE5B17D2C6B1293F1CAD3829EEACF38D09311BB3C8E5A880092DE26
address: SCA7ZS2B7DEEBGU3THSILYHCRUR32YYE55ZBLYA2

この違いはハッシュ関数です。public-testはkeccakを使い、mijin-testはsha3を使っているためです。

おわりに

catapult-service-bootstrapとREST API、nem2-sdk-typescript-javascript、そしてハッシュ関数によるアカウント生成の違いをみていきました。

public-testとmijin-testの設定の違いでそれなりに変わってくるので、よくわからないエラーに陥ったときはこの設定が間違っていないかを疑ってみるとよいかもしれません。