Doc

設定全般

mijinの設定ファイル等の説明。

ポートについて

mijinでは以下 Port をデフォルトで使用します。
参考まで他のポートも含めて以下になります。

  • mijin : 7895
  • nic(nem パブリック) : 7890
  • websocket(ライトウォレットなど) : 7778

mijinで各ノード間で疎通を行うためには、ポート 7895 の開放が必要です。

なお、mijinのポートの設定は下記で変更可能です。

config.properties

# プロトコル、ポートとパスの設定
nem.protocol = http
nem.host =
nem.httpPort = 7895
nem.httpsPort = 7896
nem.webContext = 7778

peers-config_mijinnet.json

{
"endpoint": {
"host": "host 番号",
"port": 7895,
"protocol": "http"
},
"identity": {
"name": "任意名",
"public-key": "公開鍵"
}
}

インストール手順

以下手順でサーバにインストールします。

  1. serverjars.tgz の配置と解凍
  2. nemesis-mijinnet.bin の配置
  3. startnem.sh の配置
  4. peers-config_mijinnet.json の設定と配置
  5. config-user.properties の設定と配置
  6. 以下コマンドの実行
    echo "@reboot screen -S mijin -d -m /home/username/mijin/startnem.sh" | sort - | uniq - | crontab -
  7. 以下コマンドで mijin を起動
    screen -S mijin -d -m /home/username/mijin/startnem.sh

peers-config_mijinnet.json

Peer to Peer する ホストの設定ファイルになります。host、port、protocol、identityとして相手のノード名、public-key を記載し全ノードに配置します。ノード自身の host なども記載します。

記述例
{
  "_info": "this file contains a list of all trusted peers and can be shared",
  "knownPeers": [
    {
      "endpoint": {
        "host": "40.74.117.224",
        "port": 7895,
        "protocol": "http"
      },
      "identity": {
        "name": "mijin1",
        "public-key": "838bb9202f1466e176edcd7093e84a602530c09b9f1ac72455b6f399cea3eb4e"
      }
    }
    {
      "endpoint": {
        "host": "52.187.5.62",
        "port": 7895,
        "protocol": "http"
      },
      "identity": {
        "name": "mijin2",
        "public-key": "c952c6fa705511323b8f60097ab97093d0d862d335a1e8f597d6411d83cf01b2"
      }
    }
    {
      "endpoint": {
        "host": "13.88.24.92",
        "port": 7895,
        "protocol": "http"
      },
      "identity": {
        "name": "mijin3",
        "public-key": "ef8576c0fdb6ffc9b6e4ae25d1efb9fa313ee4e7b12d87828cedbc9aed52e3fd"
      }
    }
  ]
}
Key 説明
host IPアドレス
port 通常は 7895 を使用します
protocol http or https
※ 2018年2月20日時点では http のみの動作確認状況となります。
name ノード名(任意の名前を半角英数で記載します)
public-key ノードは1つのアカウントとして起動します。起動するアカウントの public-key を記載します

新規にノードを追加する場合、1つのノードに追加すると各ノードが追加された設定を読み取り、ファイルを自動更新し、Peer to Peer を開始します。

config-user.properties

ノード単体の設定ファイルになります。

Key 説明
nem.shortServerName サーバーの略称(半角英数での任意名)
nem.folder ログやdbファイルの配置場所
nem.maxThreads スレッド・プール設定(デフォルト: 500)
この設定数の増減によりCPUとメモリに影響
nem.protocol 通信プロトコル(http or https)
nem.host ホストのIPアドレス
nem.httpPort http 通信時のポート
nem.httpsPort https 通信時のポート
nem.webContext websocket 通信時のポート
nem.apiContext 未使用
nem.homePath 未使用
nem.shutdownPath /shutdown 固定
nem.useDosFilter DOSフィルタ設定
  • true ... 秒間50リクエスト制限
  • false ... 制限なし
nem.nonAuditedApiPaths 使用を許可するAPI
nem.network mijinnet 固定
nis.shouldAutoBoot ノードの自動起動
nis.bootKey ノードの秘密鍵(ノードは1つのアカウントとして起動するので、そのアカウントの秘密鍵を設定)
nis.bootName ノード名(半角英数による任意名)
nis.shouldAutoHarvestOnBoot ノードが起動時に自動でハーベストするかどうかの設定
nis.additionalHarvesterPrivateKeys ハーベスとしたXEMを受け取ることができるアカウントの秘密鍵
nis.nodeLimit ブロードキャストするノード数
nis.timeSyncNodeLimit 同期するノードの数
nis.useBinaryTransport トランザクション送信時、バイナリデータで送信するかどうか
nis.useNetworkTime nis のタイムスタンプを使うかどうか
  • true ... 使用する
  • false ... システムのタイムスタンプを使用する
nis.ipDetectionMode 自動でIPを検出するかどうかの設定
  • AutoRequired ... 自動IP検出有効でノード起動時にも検証
  • AutoOptional ... 自動IP検出有効だがノード起動時には検証しない
  • Disabled ... 検出・検証しない
nis.unlockedLimit ハーベストロック解除のアカウント数。この数が大きいとハーベストに影響
nis.allowedHarvesterAddresses ハーベストを許可するアドレス(パイプ区切り)※空白の場合制限なし
nis.maxTransactions ブロック作成時に他のノードから共有するブロック最大数
nis.maxTransactionsPerBlock 1つのブロックに含まれる最大トランザクション数
nis.blockGenerationTargetTime 次のブロックを生成するまでの間隔時間(この設定はブロック生成時の難易度を計算するためのもので、設定した秒数でブロックが作られるわけではありません)
nis.blockChainRewriteLimit フォークを解消できる最大ブロック数
nis.additionalLocalIps ローカルノードのIPアドレス
nis.transactionHashRetentionTime トランザクションのハッシュ保持時間(-1 = 永久、最小36)
nis.optionalFeatures ノードのオプション機能
  • TRANSACTION_HASH_LOOKUP : ハッシュを使ってのトランザクション検索可能
  • HISTORICAL_ACCOUNT_DATA : アカウントの履歴取得可能
nis.blockChainFeatures ブロックチェーンの合意形成(パイプ区切り)
  • PROOF_OF_IMPORTANCE: ブロックチェーンは Proof of Importance(POI)合意アルゴリズム
  • PROOF_OF_STAKE: ブロックチェーンは Proof of Stake(POS)合意アルゴリズム
  • WB_TIME_BASED_VESTING: 時間差によるベストバランスの調整
  • WB_IMMEDIATE_VESTING: 時間差なしでベストバランスへ反映
  • STABILIZE_BLOCK_TIMES: ブロック作成時の時間調整
nis.delayBlockLoading ブロックのロード遅延処理をするかどうか
nis.ignoreFees トランザクション手数料を無料にするかどうか(無料にする場合 true を全ノードに対して設定する)

新規にノードを追加する場合、1つのノードに追加すると各ノードが追加された設定を読み取り、ファイルを自動更新し、Peer to Peer を開始します。

mijin再起動手順

以下手順で再起動します。
設定等変更の際は、mijinを再起動ください。

ps aux | grep java
kill -9 プロセス番号
// mijin 起動
$ screen -S mijin -d -m /home/[アカウント名]/mijin/startnem.sh
または
$ ./startnem.sh &
または
$ nohup ./startnem.sh &

ログファイルについて

config-user.properties の nem.folder で設定されている場所に info レベルでログが出力されます。

※通常 /home/mijin/nem/nis/logs への配置になります。

dbファイルについて

H2 Database にブロックやトランザクションが保存されます。
保存場所は config-user.properties の nem.folder で設定されている場所で、通常 /home/username/nem/nis/data/nis5_mijinnet.h2.db として保存されます。

もし何らかの理由で他のノードからのブロックを同期しなくなった場合、上記ファイルをリネームまたは削除ください。

※mijin再起動後、再び他のノードからブロックを供給し、同期を開始します。

timestampについて

timestampは、nemの起源を0としたネットワークタイムとなります。
mijinは同じネットワークタイムで稼働していることを前提に成り立っているため、nem 起源を 0 としたネットワークタイムを使用することを推奨しております。
現在の時間に置き換える場合は、1427587585を加算して日時に変換してください。

※システムのタイムスタンプを使用する場合は、config-user.properties の nis.useNetworkTime を false に設定してください。

API

サーバ(NIS)関連 API

mijinが稼働するサーバ状況を確認できます。

type 説明
1 検証結果
2 Heartbeat 結果
4 ステータス

/heartbeat

NISが稼働しているかどうかを確認します。
例:http://<ホストのIPアドレス>:7895/heartbeat

レスポンス例
{
        "code": 1,
        "type": 2,
        "message": "ok"
}

/status

NISの状態を確認します。
例:http://<ホストのIPアドレス>:7895/status

レスポンス例
{
        "code": 6,
        "type": 4,
        "message": "status"
}
code 説明
0 不明なステータス
1 停止中
2 起動中
3 動作中
4 ローカルノードが起動中
5 ローカルノードが動作中
6 ローカルノードが同期している
7 ローカルノードがリモートのノードを認識できません
8 データベースからブロックチェーンロード中(この除隊中はリクエスト処理はできません)

アカウント関連 API

アカウントについて

アカウントには、2つの異なるアカウントタイプがあります。

  • 通常のアカウント
  • マルチシグアカウント

通常のアカウントについて

秘密鍵により生成されます。アカウントの署名はこの秘密鍵により行われます。

秘密鍵が奪われることはアカウントが乗っとこられたことを意味します。そのため、秘密鍵の管理が重要になります。

マルチシグアカウントについて

通常アカウントが複数集まってできるアカウントです。通常署名者の署名が複数集まることでアクションを開始できるアカウントです。

仮にマルチシグアカウントの秘密鍵が盗まれても、複数署名者の署名が集まらない限りアクションを開始することはできません。

アカウントについて
address 各アカウントには固有のアドレスが割当られます。アドレスの長さは常に40文字でbase32にエンコードされた文字です。
balance マイクロNEMの残高になります。123456789は123.456789 NEMを所有を意味します。
importance 各アカウントには重要度が割当られています。0から1の間で設定されます。重要度を計算するためのアルゴリズムは非公開です。
publicKey アカウントに割り当てられる公開鍵になります。
label 現在は未使用です。
harvestedBlocks ハーベストしたブロックの数になります。

各アカウントには以下メータデータが含まれます。

アカウントのメタ情報
status アカウントのハーベスト状況になります。
remoteStatus ハーベストは他のアカウントに委任することができ、委任先のハーベスト状況になります。
cosignatoryOf アカウントが署名しているマルチシグアカウントのアカウント情報になります。

各トランザクションには以下情報が含まれます。

トランザクションに含まれる情報
timeStamp ネメシスブロック(最初に作られたブロック)が作成時から経過秒数。未来日時のタイムスタンプは受け入れられません。トランザクションの検証時にタイムスタンプの検証を行います。
signature トランザクション署名。署名者の公開鍵によって検証を行います。
fee 取引の手数料。手数料が高いほど取引の優先順位が高くなります。高優先度のトランザクションは優先度の低いトランザクションよりも前にブロックに含まれます。
type 以下トランザクションタイプになります。
  • 0x101:送信者から受信者のNEM転送
  • 0x801:送信者からリモートアカウントへ重要度の転送
  • 0x1001:通常アカウントをマルチシグアカウントに変更
  • 0x1002:マルチシグトランザクションへの署名
  • 0x1003:マルチシグアカウントによって行われるマルチシグトランザクション
deadline トランザクションの期限。ネメシスブロック(最初に作られたブロック)が作成時から経過秒数で返却される。期限が過ぎてもブロックに含まれなかったトランザクションは削除されます。
version 構造のバージョンになります。
  • 0x68 << 24 + 1(4バイト整数として1744830465):メインネットワークのバージョン
  • 0x98 << 24 + 1(4バイト整数として-1744830463):テストネットワークのバージョン
signer トランザクションを作成したアカウントの公開鍵。16進文字列としてエンコードされます。

トランザクションのタイプに応じて、以下フィールドが追加されます。

追加フィールド
recipient 受信者のアドレスになります。
message トランザクションにメッセージを付与している場合に表示します。
payload トランザクションにメッセージが含まれている場合、実際のメッセージを格納します。payloadの最大サイズは512バイトになります。
type メッセージのtype(以下2種の設定が可能です)。
  • 1: メッセージを暗号化せずに付与
  • 2: メッセージを暗号して付与
    暗号化した場合は、送受信者それぞれの公開鍵・秘密鍵を使い復号化します(送信者が復号化する場合、送信鞘の秘密鍵と受信者の公開鍵を使用。受信者が復号化する場合、受信者の秘密鍵と送信者の公開鍵を使用)

トランザクションには以下メタデータが付与されます。

トランザクションのメタ情報
height トランザクションが含まれれるブロックの高さ。
id トランザクションID。
hash トランザクションのハッシュ。

ハーベスト情報は以下フィールドによって管理されます。

ハーベスト情報
timeStamp ネメシスブロックの作成から経過した秒数。
id ブロックのID。
difficulty ブロックの難易度。
totalFee ブロックをハーベストして集められた合計手数料。
height ハーベストされたブロックの高さ。

アカウントの重要度については以下情報を取得できます。

アカウントの重要度情報
address アカウントのアドレス。
importance アカウントの重要性を示す構造体(以下 isSet、score、ev、heightを格納)。
isSet "score"、"ev"、"height"のフィールドが使用可能かどうか。1 の場合、すべて使用可能。0 の場合、各フィールドの使用不可。
score アカウントの重要性になります。
ev 重要度のページランク。ページランクは0と1の間の範囲で割当られます。
height 重要度の計算が行われたブロックの高さ。

/account/generate

アカウントを作成します。
例:http://<ホストのIPアドレス>:7895/account/generate

※このAPIを使用するには config.properties の nis.additionalLocalIps に作成する IPアドレスを追加する必要があります。

レスポンス例
{
	"privateKey": "00913ff9a33c48796a83051de0b6b6b43c5f97ca4cdab6d8x4790bb042cdecdfb2",
	"address": "MDOWXJUB5DGHD3PJ4M7LMXJ3YY4VFEZ2ZUFOYROK",
	"publicKey": "4dc790779f406642471b4ea303cf5e5153677476e771df93346fb07f81539f2c"
}
Key 説明
privateKey ブロックチェーン上で使用するアカウントの秘密鍵(電子署名作成時などに使用)
address ブロックチェーン上で使用するアカウントのアドレス
publicKey ブロックチェーン上で使用するアカウントの公開鍵

/account/get

アカウントのアドレスからアカウント情報を取得します。
例:http://<ホストのIPアドレス>:7895/account/get?address=MDOWXJUB5DGHD3PJ4M7LMXJ3YY4VFEZ2ZUFOYROK

パラメータ 説明
address アドレス
レスポンス例
{
	"meta": {
		"cosignatories": [],
		"cosignatoryOf": [],
		"status": "LOCKED",
		"remoteStatus": "INACTIVE"
	},
	"account": {
		"address": "MDOWXJUB5DGHD3PJ4M7LMXJ3YY4VFEZ2ZUFOYROK",
		"harvestedBlocks": 0,
		"balance": 0,
		"importance": 0,
		"vestedBalance": 0,
		"publicKey": null,
		"label": null,
		"multisigInfo": {}
	}
}
Key 説明
account アカウント情報
address アカウントのアドレス
harvestedBlocks ハーベストしたブロック数
balance アカウントの残高
importance アカウントの重要度
vestedBalance アカウントの残高(確定分)
publicKey アカウントの公開鍵(取引している場合に表示)
label 未使用(null)
multisigInfo マルチシグ情報
meta アカウントのメタ情報
cosignatories 該当アカウントがマルチシグアカウントの場合、署名者として登録されているアカウント情報
cosignatoryOf 該当アカウントが署名しているマルチシグアカウント情報
status アカウントのハーベスト状態
remoteStatus リモート環境でのハーベスト状態
  • ACTIVE : ハーベスト有効、リモートハーベスティング有効
  • DEACTIVATING : ハーベスト無効、リモートハーベスティング有効
  • INACTIVE : ハーベスト無効、リモートハーベスティング無効

/account/get/from-public-key

アカウントの公開鍵からアカウント情報を取得します。
例:http://<ホストのIPアドレス>:7895/account/get/from-public-key?publicKey=5c8127ef691b3f4c06811a15932869db917430593ae342156836cea6831a25b7

パラメータ 説明
publicKey アカウントの公開鍵
レスポンス例
{
	"meta": {
		"cosignatories": [],
		"cosignatoryOf": [],
		"status": "LOCKED",
		"remoteStatus": "INACTIVE"
	},
	"account": {
		"address": "MCAPKIBWA6IM4CUE4MGHEKOQBQWLEOQM37PV4CTE",
		"harvestedBlocks": 0,
		"balance": 0,
		"importance": 0,
		"vestedBalance": 0,
		"publicKey": "5c8127ef691b3f4c06811a15932869db917430593ae342156836cea6831a25b7",
		"label": null,
		"multisigInfo": {}
	}
}

※レスポンス結果の構造体は「/account/get」と同様

/account/get/forwarded

アカウントのアドレスから委託アカウント情報を取得します。
例:http://<ホストのIPアドレス>:7895/account/get/forwarded?address=MCAPKIBWA6IM4CUE4MGHEKOQBQWLEOQM37PV4CTE

パラメータ 説明
address アカウントのアドレス
レスポンス例
{
	"meta": {
		"cosignatories": [],
		"cosignatoryOf": [],
		"status": "LOCKED",
		"remoteStatus": "INACTIVE"
	},
	"account": {
		"address": "MCAPKIBWA6IM4CUE4MGHEKOQBQWLEOQM37PV4CTE",
		"harvestedBlocks": 0,
		"balance": 0,
		"importance": 0,
		"vestedBalance": 0,
		"publicKey": null,
		"label": null,
		"multisigInfo": {}
	}
}

※レスポンス結果の構造体は「/account/get」と同様

/account/get/forwarded/from-public-key

アカウントの公開鍵から委託アカウント情報を取得します。
例:http://<ホストのIPアドレス>:7895/account/get/forwarded/from-public-key?publicKey=bdd8dd702acb3d88daf188be8d6d9c54b3a29a32561a068b25d2261b2b2b7f02

パラメータ 説明
publicKey アカウントの公開鍵
レスポンス例
{
	"meta": {
		"cosignatories": [],
		"cosignatoryOf": [],
		"status": "LOCKED",
		"remoteStatus": "INACTIVE"
	},
	"account": {
		"address": "MCAPKIBWA6IM4CUE4MGHEKOQBQWLEOQM37PV4CTE",
		"harvestedBlocks": 0,
		"balance": 0,
		"importance": 0,
		"vestedBalance": 0,
		"publicKey": null,
		"label": null,
		"multisigInfo": {}
	}
}

※レスポンス結果の構造体は「/account/get」と同様

/account/status

アカウントのアドレスからアカウント情報を取得します。
例:http://<ホストのIPアドレス>:7895/account/status?address=MCAPKIBWA6IM4CUE4MGHEKOQBQWLEOQM37PV4CTE

パラメータ 説明
address アカウントのアドレス
レスポンス例
{
	"cosignatories": [],
	"cosignatoryOf": [],
	"status": "LOCKED",
	"remoteStatus": "INACTIVE"
}

※レスポンス結果の構造体は「/account/get」の meta 情報と同様

/account/transfers/incoming

アカウントが受金したトランザクション情報。ブロックチェーンに含まれた最大25のトランザクションを返却。
例:http://<ホストのIPアドレス>:7895/account/transfers/incoming?address=MCAPKIBWA6IM4CUE4MGHEKOQBQWLEOQM37PV4CTE&hash=949583a20ebdfdcb58277eb42fef3e66e9e6bbfc47304d8741a82c68f7c53a2

パラメータ 説明
address アカウントのアドレス(必須)
hash トランザクションのハッシュ(オプション)
id トランザクションのID(オプション)
レスポンス例
{
	"data": [
		{
			"meta": {
				"innerHash": {},
				"id": 11,
				"hash": {
					"data": "589e8ae35140279dbc88a5bdd81560d25ab6e81f5b9f9365402c7fd861579625"
				},
				"height": 494
			},
			"transaction": {
				"timeStamp": 73970241,
				"amount": 3000000,
				"signature": "4cce8a1da26faed80b95d9ca223ee4f01ff21bbf40d1d64c845904d99219b680fbd92ccd4d4a78d973a626a77557f0853c36378433aba418a1ebadd998b8c80e",
				"fee": 0,
				"recipient": "MAENTDV3YWZZTWNAG7COHS3QNXQCJJQTUBF2MY2S",
				"type": 257,
				"deadline": 74030241,
				"message": {},
				"version": 1610612737,
				"signer": "c48850b863c2fe13066a8aed308da9b4d897e62ef8d81ae5bc04ff85bfb31a74"
			}
		}
	]
}
Key 説明
meta 各トランザクションのメタ情報
id トランザクションID
height トランザクションが含まれているブロックの高さ
hash data: トランザクションのハッシュデータ
transaction トランザクションの詳細
timeStamp トランザクションのタイムスタンプ(ネメシスブロックの作成から経過した秒数)
amount 送信者から受信者へ転送されたマイクロNEMの量
signature トランザクションの電子署名
fee トランザクションの手数料
recipient 受信者のアドレス
type トランザクションタイプ( // 以下は10進数)
  • 0x0101(転送トランザクション) // 257
  • 0x0801(重要度転送トランザクション) // 2049
  • 0x1001(マルチシグ集計変更転送トランザクション) // 4097
  • 0x1002(マルチシグ署名トランザクション) // 4098
  • 0x1004(マルチシグトランザクション) // 4100
  • 0x2001(プロキシネームスペーストランザクション) // 8193
  • 0x4001(モザイク定義作成トランザクション) // 16385
  • 0x4002(モザイク供給変更トランザクション) // 16386
deadline トランザクションの期限(ネメシスブロックの作成から経過した秒数)
message
  • payload : トランザクションに含まれるメッセージ
  • type : 1の場合、非暗号化、2の場合メッセージは暗号化済
    2の場合、相手の公開鍵と自分の秘密鍵でメッセージを復号化
version mijin ネットワークのバージョン
  • 0x68 << 24 + 1(4バイト整数として1744830465):メインネットワークのバージョン
  • 0x98 << 24 + 1(4バイト整数として-1744830463):テストネットワークのバージョン
signer トランザクションの署名者の公開鍵

/account/transfers/outgoing

アカウントが送金したトランザクション情報。ブロックチェーンに含まれた最大25のトランザクションを返却。
例:http://<ホストのIPアドレス>:7895/account/transfers/outgoing?address=MCAPKIBWA6IM4CUE4MGHEKOQBQWLEOQM37PV4CTE&hash=949583a20ebdfdcb58277eb42fef3e66e9e6bbfc47304d8741a82c68f7c53a22

パラメータ 説明
address アカウントのアドレス(必須)
hash トランザクションのハッシュ(オプション)
id トランザクションのID(オプション)
レスポンス例
{
	"data": [
		{
			"meta": {
				"innerHash": {},
				"id": 12,
				"hash": {
					"data": "eb00f38e66feab7c71c1cac52f70592908a2ddeb943919a4354a897d50c82c23"
				},
				"height": 499
			},
			"transaction": {
				"timeStamp": 73970313,
				"amount": 1000000,
				"signature": "bdc12c6d3a8cae96dde0537638f475fbb5f892241cc3e5a4b823aea4b773f2e3398568eb30443a4c9220102f762268eef5931a97e812fc18421ef8234b471306",
				"fee": 0,
				"recipient": "MCIDKKNJZGDQMYNAW6TFBTIXRKFUN5WE3MGCPNEW",
				"type": 257,
				"deadline": 74030313,
				"message": {},
				"version": 1610612737,
				"signer": "cdb0e4ab9704432da1bce869d7d13642e33707bf9e7bbca926b7e8101efd7e6d"
			}
		}
	]
}

※レスポンス結果の構造体は「/account/transfers/incoming」と同様

/account/transfers/all

アカウントの送受金のトランザクション情報。ブロックチェーンに含まれた最大25のトランザクションを返却。
例:http://<ホストのIPアドレス>:7895/account/transfers/all?address=MCAPKIBWA6IM4CUE4MGHEKOQBQWLEOQM37PV4CTE&hash=949583a20ebdfdcb58277eb42fef3e66e9e6bbfc47304d8741a82c68f7c53a22

パラメータ 説明
address アカウントのアドレス(必須)
hash トランザクションのハッシュ(オプション)
id トランザクションのID(オプション)
レスポンス例
{
	"data": [
		{
			"meta": {
				"innerHash": {},
				"id": 12,
				"hash": {
					"data": "eb00f38e66feab7c71c1cac52f70592908a2ddeb943919a4354a897d50c82c23"
				},
				"height": 499
			},
			"transaction": {
				"timeStamp": 73970313,
				"amount": 1000000,
				"signature": "bdc12c6d3a8cae96dde0537638f475fbb5f892241cc3e5a4b823aea4b773f2e3398568eb30443a4c9220102f762268eef5931a97e812fc18421ef8234b471306",
				"fee": 0,
				"recipient": "MCIDKKNJZGDQMYNAW6TFBTIXRKFUN5WE3MGCPNEW",
				"type": 257,
				"deadline": 74030313,
				"message": {},
				"version": 1610612737,
				"signer": "cdb0e4ab9704432da1bce869d7d13642e33707bf9e7bbca926b7e8101efd7e6d"
			}
		},
		{
			"meta": {
				"innerHash": {},
				"id": 11,
				"hash": {
					"data": "589e8ae35140279dbc88a5bdd81560d25ab6e81f5b9f9365402c7fd861579625"
				},
				"height": 494
			},
			"transaction": {
				"timeStamp": 73970241,
				"amount": 3000000,
				"signature": "4cce8a1da26faed80b95d9ca223ee4f01ff21bbf40d1d64c845904d99219b680fbd92ccd4d4a78d973a626a77557f0853c36378433aba418a1ebadd998b8c80e",
				"fee": 0,
				"recipient": "MAENTDV3YWZZTWNAG7COHS3QNXQCJJQTUBF2MY2S",
				"type": 257,
				"deadline": 74030241,
				"message": {},
				"version": 1610612737,
				"signer": "c48850b863c2fe13066a8aed308da9b4d897e62ef8d81ae5bc04ff85bfb31a74"
			}
		}
	]
}

※レスポンス結果の構造体は「/account/transfers/incoming」と同様

/account/unconfirmedTransactions

アカウントのブロックに含まれていないトランザクションを確認。
例:http://<ホストのIPアドレス>:7895/account/unconfirmedTransactions?address=MASM3LKYE6KJYHX5RII72UY5RZQNVH5EOKF6V4CZ

パラメータ 説明
address アカウントのアドレス(必須)
レスポンス例
{
	"data": [
		{
			"meta": {
				"data": "27e01e5c22fef40816bd3c6c28610df121a50b99526ce4fe16546e4b3f840850"
			},
			"transaction": {
				"timeStamp": 73970515,
				"signature": "cb41d4dc91d6dafff1135badb9298ac26258c840aa3ca21f42bb661c14be7fb1f23786c13cd078ab9443cb3a6c4d4aaa56cacc3e3b8ad1011528b070b4c3a40e",
				"fee": 100000000,
				"type": 4100,
				"deadline": 73974115,
				"version": 1610612737,
				"signatures": [],
				"signer": "cdc06d4a01ecdab63585348c767ee0ae83bbe0eac14fa739a2fe2583c811c14f",
				"otherTrans": {
					"timeStamp": 73970515,
					"amount": 1000000,
					"fee": 100000000,
					"recipient": "MCZSFYJTHU4WUEBKFBNV7SSCC2TONXZR2AYUUSMF",
					"mosaics": [
						{
							"quantity": 1,
							"mosaicId": {
								"namespaceId": "company",
								"name": "checked"
							}
						},
						{
							"quantity": 100000000,
							"mosaicId": {
								"namespaceId": "nem",
								"name": "xem"
							}
						}
					],
					"type": 257,
					"deadline": 73974115,
					"message": {},
					"version": 1610612738,
					"signer": "c48850b863c2fe13066a8aed308da9b4d897e62ef8d81ae5bc04ff85bfb31a74"
				}
			}
		}
	]
}

※レスポンス結果の構造体は「/account/transfers/incoming」と同様

/account/importances

アカウントの重要度一覧。
例:http://<ホストのIPアドレス>:7895/account/importances

レスポンス例
{
	"data": [
		{
			"address": "MASMHHBO4JHSKSA7XMQCIXQRDVPH3Q6PTLNPAPP7",
			"importance": {
				"score": 0.1,
				"ev": 0,
				"isSet": 1,
				"height": 359
			}
		},
		{
			"address": "MASMHHBFKA24LNUNHCPDDZUO4YQTSXQUFBXNH52T",
			"importance": {
				"score": 0.1,
				"ev": 0,
				"isSet": 1,
				"height": 359
			}
		},
		{
			"address": "MAMIJINSVHBIPKT5XCFHJYGWL7WVRZQ6U7JG7LLN",
			"importance": {
				"isSet": 0
			}
		},
		{
			"address": "MASM5TN4UO4ZG22IRLTBDPO5HE74WXSFA4DTOT5Q",
			"importance": {
				"score": 0.1,
				"ev": 0,
				"isSet": 1,
				"height": 359
			}
		},
		{
			"address": "MASMHHC4277DD4RWRO4ZN5A3HVCLKLJTYEA76AOS",
			"importance": {
				"score": 0.1,
				"ev": 0,
				"isSet": 1,
				"height": 359
			}
		}
	]
}
Key 説明
address アドレス
importance 重要度に関する情報
score アカウントの重要度(0 - 1)
ev ページランク(0 - 1)
isSet 0 or 1。
  • 0 ... isSetが0の場合は ev、score、height の使用不可
  • 1 ... isSetが0の場合は ev、score、height の使用可
height 重要度が計算されたブロックの高さ

/account/namespace/page

アカウントが作成したネームスペース。
例:http://<ホストのIPアドレス>:7895/account/namespace/page?address=MCIDKKNJZGDQMYNAW6TFBTIXRKFUN5WE3MGCPNEW&parent=mijin.metal

パラメータ 説明
address アカウントのアドレス(必須)
parent 親ネームスペース(オプション)
id ネームスペースID(オプション)
pageSize ネームスペースのページ番号(オプション)
レスポンス例
{
	"data": [
		{
			"owner": "MBEBZWDRMPMZ7TYLVWOH63JZVC5FKR5I464F5HCR",
			"fqn": "company",
			"height": 62184
		}
	]
}
Key 説明
fqn ネームスペース名(ネームスペースID)
owner ネームスペースの所有者
height ネームスペースが開始されたブロックの高さ

/account/mosaic/definition/page

アカウントが作成したモザイク情報。
例:http://<ホストのIPアドレス>:7895/account/mosaic/definition/page?address=MBEBZWDRMPMZ7TYLVWOH63JZVC5FKR5I464F5HCR&parent=mijin.metal.coins

パラメータ 説明
address アカウントのアドレス(必須)
parent 親ネームスペース(オプション)
id モザイクID(オプション)
レスポンス例
{
	"data": [
		{
			"creator": "fd5e60ae79d151b675e74f5efa3f72080a3d6658032e0e29a8ade645b2fd33cd",
			"description": "検品したかどうかのチェック",
			"id": {
				"namespaceId": "company",
				"name": "checked"
			},
			"properties": [
				{
					"name": "divisibility",
					"value": "0"
				},
				{
					"name": "initialSupply",
					"value": "9000000000"
				},
				{
					"name": "supplyMutable",
					"value": "false"
				},
				{
					"name": "transferable",
					"value": "true"
				}
			],
			"levy": {
				"fee": 1,
				"recipient": "MBEBZWDRMPMZ7TYLVWOH63JZVC5FKR5I464F5HCR",
				"type": 1,
				"mosaicId": {
					"namespaceId": "nem",
					"name": "xem"
				}
			}
		}
	]
}
Key 説明
creator モザイク作成者の公開鍵
id モザイクID
namespaceId ネームスペースのID
name モザイク名
description モザイクの説明
properties モザイクの属性
name モザイクの属性名
value モザイクの属性値

/account/mosaic/owned

アカウントが持つモザイク情報。
例:http://<ホストのIPアドレス>:7895/account/mosaic/owned?address=MBEBZWDRMPMZ7TYLVWOH63JZVC5FKR5I464F5HCR

パラメータ 説明
address アカウントのアドレス(必須)
レスポンス例
{
	"data": [
		{
			"quantity": 7607000324,
			"mosaicId": {
				"namespaceId": "nem",
				"name": "xem"
			}
		},
		{
			"quantity": 7000000000,
			"mosaicId": {
				"namespaceId": "company",
				"name": "checked"
			}
		}
	]
}
Key 説明
mosaicId モザイクID
namespaceId ネームスペースのID
name モザイク名
quantity モザイクの数量

/account/historical/get

アカウントの履歴情報を取得。
例:http://bigalice3.nem.ninja:7890/account/historical/get?address=MBEBZWDRMPMZ7TYLVWOH63JZVC5FKR5I464F5HCR&startHeight=17592&endHeight=17592&increment=1

※このAPIを使用するには config.properties の nis.optionalFeatures に HISTORICAL_ACCOUNT_DATA を追加する必要があります。

パラメータ 説明
address アカウントのアドレス(必須)
startHeight ブロックの高さ(から)
endHeight ブロックの高さ(まで)
increment インクリメントするブロックの高さ(最大1000まで設定可能)
レスポンス例
{
	[
		{
			"height": 17592,
			"address": "MBEBZWDRMPMZ7TYLVWOH63JZVC5FKR5I464F5HCR",
			"balance": 509676000000,
			"vestedBalance": 100999147150,
			"unvestedBalance": 408676852850,
			"importance": 0.00008857563463531297,
			"pageRank": 0.0007605047835049349
		}
	]
}
Key 説明
address アカウントのアドレス
pageRank ページランク
balance アカウントの残高
importance アカウントの重要度
vestedBalance アカウントの残高確定分
unvestedBalance アカウントの残高未確定分
height ブロックの高さ

ブロックチェーン関連 API

ブロックについて

ブロックは各ノードが作成します。ブロックにはトランザクションが含まれます。
各ノードは他のノードのブロックを検証後、自身のブロックチェーンにブロックを同期します。
タイムスタンプが使用されるたびに、共通で使用しているネットワーク時間が更新されます。
ブロックには以下データがあります。

ブロックについて
timeStamp ブロックが作成されたネットワークの時刻。
signature ブロックを作成した署名。
prevBlockHash 前のブロックのsha3-256ハッシュを16進数文字列。
type ブロックのタイプ。
  • -1:ネメシス(Nemesis)ブロック。ブロックチェーンの最初に生成されるブロック。
  • 1:通常のブロック。高さ> 1のブロックはすべてこのタイプに該当。
transactions トランザクションの構造体
version
  • 0x68 << 24 + 1(4バイト整数として1744830465):メインネットワークのバージョン
  • 0x98 << 24 + 1(4バイト整数として-1744830463):テストネットワークのバージョン
signer ブロックを生成したアカウントの公開鍵。
height ブロックの高さ。

/chain/height

現在のブロックチェーンの高さを取得
例:http://<ホストのIPアドレス>:7895/chain/height

レスポンス例
{
       "height": 42799
}
Key 説明
height ブロックの高さ

/chain/score

現在のブロックチェーンのスコアを取得。スコアが高いほど良好なブロックチェーンになり、他のノードは高いスコアのブロックチェーンを取得します。
例:http://<ホストのIPアドレス>:7895/chain/height

レスポンス例
{
        "score": "18722d5a7d590deb"
}
Key 説明
score ブロックのスコア

/chain/last-block

最新のブロックチェーンのブロックを取得します。
例:http://<ホストのIPアドレス>:7895/chain/last-block

レスポンス例
{
	"timeStamp": 73971235,
	"signature": "63a4e50b967658aeb467fe49cb3453ade7f8095c0c66defa05cf07c05a489b098c156f680ac284fff3b16e90541d328f344dccbffa6520893d2b2f0de1455c0c",
	"prevBlockHash": {
		"data": "b3629fcfd24670d86f42762521ed5cd0729417952c6d20edcb926b5ce82c842e"
	},
	"type": 1,
	"transactions": [],
	"version": 1610612737,
	"signer": "1ea5f20b3bbd03bfe118ecd1aea7d93f819ab100c3b7500b92959c9b79c1075c",
	"height": 563
}
Key 説明
timeStamp トランザクション(ネメシスブロックの作成から経過した秒数)
signature ブロックの署名者
prevBlockHash data : 前のブロックのハッシュ値
type ブロックのタイプ
  • -1:ネメシス(Nemesis)ブロック
  • 1:通常のブロック
transactions トランザクションの配列
version ブロックのバージョン(4バイト整数として 1610612737 固定)
signer ブロックをハーベストしたアカウントの公開鍵
height ブロックの高さ

ノード関連 API

ノードについて

ノードとはネットワーク内でデータをやりとりする実体を意味し、各ノードにはアカウントが割当られています。
各ノードにはエンドポイントで使用されるIPアドレス、ポート、通信プロトコルが設定されています。
ノードには以下ステータスがあります。

ノードのステータスついて
active 正常に通信可能
inactive 接続できないノード
busy 接続可能なノードであるにもかかわらず制限時間内に応答がないノード
failure 通信中に重大なエラーしたノード(通信プロトコルが違う、アカウントが異なるなど)
unknown 情報不明のノード

ノードに関しては以下フィールドがあります。

ノードについて
name ノード名
public-key ノードの公開鍵
protocol 通信プロトコル
host エンドポイントIPアドレス
application ノードを実行しているアプリケーション名
version アプリケーションのバージョン
platform ノードを実行しているアプリケーション名

/node/info

ノード情報を取得します。
例:http://<ホストのIPアドレス>:7895/node/info

レスポンス例
{
	"metaData": {
		"features": 3,
		"application": null,
		"networkId": 96,
		"version": "0.6.84-BETA",
		"platform": "Oracle Corporation (1.8.0_141) on Linux"
	},
	"endpoint": {
		"protocol": "http",
		"port": 7895,
		"host": "153.125.224.131"
	},
	"identity": {
		"name": "mijin01",
		"public-key": "1ea5f20b3bbd03bfe118ecd1aea7d93f819ab100c3b7500b92959c9b79c1075c"
	}
}
Key 説明
metaData ノードのメタ情報
features ノードが持つfeatureの数
application アプリケーション名
networkId ネットワークID
version アプリケーションのバージョン
platform OS、Javaのバージョン
endpoint エンドポイント情報
protocol プロトコル
port ポート
host ホスト
identity エンドポイント情報
name ノード名
public-key ノードを起動しているアカウントの公開鍵

/node/extended-info

ノードの詳細情報を取得します。
例:http://<ホストのIPアドレス>:7895/node/extended-info

レスポンス例
{
	"node": {
		"metaData": {
			"features": 3,
			"application": null,
			"networkId": 96,
			"version": "0.6.84-BETA",
			"platform": "Oracle Corporation (1.8.0_141) on Linux"
		},
		"endpoint": {
			"protocol": "http",
			"port": 7895,
			"host": "153.125.224.131"
		},
		"identity": {
			"name": "mijin01",
			"public-key": "1ea5f20b3bbd03bfe118ecd1aea7d93f819ab100c3b7500b92959c9b79c1075c"
		}
	},
	"nisInfo": {
		"currentTime": 73971489,
		"application": "NEM Deploy",
		"startTime": 73964662,
		"version": "0.6.84-BETA",
		"signer": null
	}
}
Key 説明
nisInfo ノードの詳細情報
currentTime 現在のブロックチェーン上のタイムスタンプ(ネメシスブロックが作成されてからの経過秒数)
application ノードが起動しているアプリケーション名
startTime アプリケーションの開始時間(ネメシスブロックが作成されてからの経過秒数)
version アプリケーションのバージョン
signer アプリケーションで使用される電子署名の署名者

※レスポンス結果の「node」箇所は「/node/info」と同様

/node/peer-list/all

近接のすべてのノードの情報を取得します。
例:http://<ホストのIPアドレス>:7895/node/peer-list/all

レスポンス例
{
	"inactive": [],
	"failure": [],
	"busy": [],
	"active": [
		{
			"metaData": {
				"features": 0,
				"application": null,
				"networkId": 0,
				"version": "0.0.0",
				"platform": null
			},
			"endpoint": {
				"protocol": "http",
				"port": 7895,
				"host": "81.224.224.156"
			},
			"identity": {
				"name": "mijinnode1",
				"public-key": "838bb9202f1466e176edcd7093e84a602530c09b9f1ac72455b6f399cea3eb4e"
			}
		},
		{
			"metaData": {
				"features": 1,
				"application": null,
				"networkId": 96,
				"version": "0.6.84-BETA",
				"platform": "Oracle Corporation (1.8.0_121) on Linux"
			},
			"endpoint": {
				"protocol": "http",
				"port": 7895,
				"host": "81.224.224.157"
			},
			"identity": {
				"name": "mijinnode2",
				"public-key": "c952c6fa705511323b8f60097ab97093d0d862d335a1e8f597d6411d83cf01b2"
			}
		}
	]
}

/node/peer-list/reachable

近接ノードでアクティブなノードの情報を取得します。
例:http://<ホストのIPアドレス>:7895/node/peer-list/reachable

レスポンス例
{
        "data": [
        "metaData":
        {
        "application": "NIS",
        "version": "0.4.33-BETA",
        "platform": "Oracle Corporation (1.8.0_25) on Windows 8"
        },
        "endpoint":
        {
        "protocol": "http",
        "port": 7890,
        "host": "81.224.224.156"
        },
        "identity":
        {
        "name": "Alice",
        "public-key": "a1aaca6c17a24252e674d155713cdf55996ad00175be4af02a20c67b59f9fe8a"
        },
        ]
}

※レスポンス結果は「/node/info」と同様

/node/peer-list/active

トランザクションをブロードキャストするために選択されたノードの情報を取得します。
例:http://<ホストのIPアドレス>:7895/node/peer-list/active

レスポンス例
{
	"data": [
		{
			"node": {
				"metaData": {
					"features": 3,
					"application": null,
					"networkId": 96,
					"version": "0.6.84-BETA",
					"platform": "Oracle Corporation (1.8.0_141) on Linux"
				},
				"endpoint": {
					"protocol": "http",
					"port": 7895,
					"host": "27.133.131.154"
				},
				"identity": {
					"name": "mijin01",
					"public-key": "442159366e13c9b899e53d4f0b64e6139910a6679fc30d6941e234de13f587e5"
				}
			},
			"syncs": 26,
			"experience": {
				"s": 3,
				"f": 0
			}
		},
		{
			"node": {
				"metaData": {
					"features": 3,
					"application": null,
					"networkId": 96,
					"version": "0.6.84-BETA",
					"platform": "Oracle Corporation (1.8.0_141) on Linux"
				},
				"endpoint": {
					"protocol": "http",
					"port": 7895,
					"host": "27.133.153.187"
				},
				"identity": {
					"name": "mijin04",
					"public-key": "42bb164fc20ae290985c3dc865c9bd576a867271d1f891e2013e7d85279dabc3"
				}
			},
			"syncs": 0,
			"experience": {
				"s": 4,
				"f": 0
			}
		}
	]
}

※レスポンス結果は「/node/info」と同様

/node/active-peers/max-chain-height

近接するノードで最も高いブロックの高さ
例:http://<ホストのIPアドレス>:7895/node/active-peers/max-chain-height

レスポンス例
{
        "height": 43920
}
Key 説明
height 近接ノードで最も高いブロックの高さ

/node/experiences

ノード間でのやりとり時にやりとりした経験値を内部に保持します。別ノードからノードの経験値を取得します。
例:http://<ホストのIPアドレス>:7895/node/experiences

レスポンス例
{
	"data": [
		{
			"node": {
				"metaData": {
					"features": 3,
					"application": null,
					"networkId": 96,
					"version": "0.6.84-BETA",
					"platform": "Oracle Corporation (1.8.0_141) on Linux"
				},
				"endpoint": {
					"protocol": "http",
					"port": 7895,
					"host": "27.133.131.154"
				},
				"identity": {
					"name": "mijin01",
					"public-key": "442159366e13c9b899e53d4f0b64e6139910a6679fc30d6941e234de13f587e5"
				}
			},
			"syncs": 712,
			"experience": {
				"s": 86,
				"f": 0
			}
		},
		{
			"node": {
				"metaData": {
					"features": 3,
					"application": null,
					"networkId": 96,
					"version": "0.6.84-BETA",
					"platform": "Oracle Corporation (1.8.0_141) on Linux"
				},
				"endpoint": {
					"protocol": "http",
					"port": 7895,
					"host": "27.133.154.6"
				},
				"identity": {
					"name": "mijin02",
					"public-key": "f7321ebe78dc09dac511893984ac1e194dfcffa3c3c3224192156ee94c304780"
				}
			},
			"syncs": 792,
			"experience": {
				"s": 70,
				"f": 0
			}
		},
		{
			"node": {
				"metaData": {
					"features": 0,
					"application": null,
					"networkId": 0,
					"version": "0.0.0",
					"platform": null
				},
				"endpoint": {
					"protocol": "http",
					"port": 7895,
					"host": "153.125.224.131"
				},
				"identity": {
					"name": "mijin03",
					"public-key": "1ea5f20b3bbd03bfe118ecd1aea7d93f819ab100c3b7500b92959c9b79c1075c"
				}
			},
			"syncs": 0,
			"experience": {
				"s": 0,
				"f": 0
			}
		}
	]
}
Key 説明
syncs リモートノードとの同期回数
experience ノードの経験値
s リモートノードとの正常な通信数
f リモートノードと通信に失敗した数

※レスポンス結果の「node」箇所は「/node/info」と同様

ネームスペース関連 API

ネームスペースについて

ネームスペースを使うと、独自のコインを発行することができます。
ネームスペースは唯一の名前を使用することができます。
ネームスペースの文字列は、ルートのネームスペースで16文字、サブのネームスペースは64文字です。
ネームスペースはアルファベットで始まる文字に限ります。
「nem, user, account, org, com, biz, net, edu, mil, gov and info.」は使用不可になります。
ネームスペースは3階層まで作成可能です。

/namespace/root/page

最上位のネームスペースを取得します。
例:http://<ホストのIPアドレス>:7895/namespace/roots?id=26754&pageSize;=35

パラメータ 説明
id 最上位のネームスペースのID
pagesize 返却されるネームスペースのオブジェクト数(オプション)※デフォルト値は25、最小値は5、最大値は100
レスポンス例
{
        "data": [{
        "meta":{
            "id":26264,
        },
        "namespace":{
            "fqn": "mijin.metal.coins",
            "owner": TD3RXTHBLK6J3UD2BH2PXSOFLPWZOTR34WCG4HXH",
            "height": 13465
        }
        },{
            "meta":{
            "id":25421,
        },
        "namespace":{
            "fqn": "gimre.vouchers",
            "owner": TDGIMREMR5NSRFUOMPI5OOHLDATCABNPC5ID2SVA",
            "height": 12392
        }
        }]
}
Key 説明
meta ネームスペースのメタ情報
id ネームスペースID
namespace ネームスペース情報
fqn ネームスペース名
owner ネームスペースの所有者
height 所有権を取得時のブロックの高さ

/namespace

指定されたネームスペースの情報を取得します。
例:http://<ホストのIPアドレス>:7895/namespace?namespace=mijin.metal.coins

パラメータ 説明
namespace ネームスペース名
レスポンス例
{
	"owner": "MBEBZWDRMPMZ7TYLVWOH63JZVC5FKR5I464F5HCR",
	"fqn": "company",
	"height": 62184
}

※レスポンス結果は「/namespace/root/page」の「namespace」と同様

モザイクについて

独自コインを流通させるための定義になります。
モザイクはルートのネームスペースに属する必要があります。
モザイク名は最大32文字で作成可能です。
モザイク名はアルファベットで始まる文字に限ります。
以下プロパティを設定できます。

プロパティ 説明
mosaic id モザイク名。32文字まで。
description 概要。512文字まで。
properties 以下設定可能なプロパティ
initialSupply 初期共有量。デフォルト1000。最大9,000,000,000
divisibility 小数点何以下に分割できるかの設定。3の場合、0.001 まで分割可能。
supplyMutable モザイクの供給量変更可否。true or false。
transferable 定義したモザイクを作成者以外にも転送可能とするかどうか。デフォルト値は true。
levy モザイク送金手数料の設定
fee type 以下2つのタイプで設定可能。
  • absolute fee ... 絶対料金
  • percentile fee ... 転送される数量の一定割合による料金
recipient 手数料受取者
mosaic id 手数料として支払われるモザイク名。
fee 手数料。

/namespace/mosaic/definition/page

指定されたモザイクの情報を取得します。
例:http://<ホストのIPアドレス>:7895/namespace/mosaic/definition/page?namespace=mijin.metal.coins

パラメータ 説明
namespace ネームスペース名
id 最上位のモザイクID(オプション)
pagesize 返却する mosaic のオブジェクト数(オプション)
レスポンス例
{
	"data": [
		{
			"meta": {
				"id": 2
			},
			"mosaic": {
				"creator": "fd5e60ae79d151b675e74f5efa3f72080a3d6658032e0e29a8ade645b2fd33cd",
				"description": "検品したかどうか",
				"id": {
					"namespaceId": "company",
					"name": "checked"
				},
				"properties": [
					{
						"name": "divisibility",
						"value": "0"
					},
					{
						"name": "initialSupply",
						"value": "9000000000"
					},
					{
						"name": "supplyMutable",
						"value": "false"
					},
					{
						"name": "transferable",
						"value": "true"
					}
				],
				"levy": {
					"fee": 1,
					"recipient": "MBEBZWDRMPMZ7TYLVWOH63JZVC5FKR5I464F5HCR",
					"type": 1,
					"mosaicId": {
						"namespaceId": "nem",
						"name": "xem"
					}
				}
			}
		}
	]
}

※レスポンス結果は「/account/mosaic/definition/page」と同様

トランザクション関連 API

トランザクションについて

トランザクションとは、あるアカウントからアカウントへの送金を意味します。トランザクションは最初はunconfirmed状態となりネットワークにプールされます。ブロックに含まれることでトランザクションは処理され、指定されたアカウントへ送金処理が行われます。

ブロックチェーンはフォーク(分岐)がしばしば起こります。フォークしたブロックチェーンはロールバックして分岐を解消します。ロールバックできるブロックの最大値は初期デフォルト値では360に設定されています。

トランザクションの作成は以下2つの方法があります。

  • 方法 1. クライアント側で目的に応じたJSON構造体からJavaScriptにて以下のようなシリアライズされた data と電子署名のJSONを作成しし /transaction/announce へPOST送信
    {"data": "01010000010000604781b90320000000462ee976890916e54f…0000000000000000000000000000000000000000000000000", 
    "signature": "8584d64446316cafbfa6ea92b772a21cdcb18b72b36ae5f91f…d8605c09c06a3faf905f02de8b68b1069e49e631382c70a09"}
  • 方法 2. 目的に応じたJSONの構造体をそのまま /transaction/prepare-announce へPOST送信

方法 1 と方法 2 の違いは、方法 1の場合、トランザクション生成者の秘密鍵がネットワーク上に流れませんが、方法 2 の場合はトランザクション生成者の秘密鍵がネットワーク上にそのまま流れることになります。
方法 2 を取る場合は、直接クライアント側からPOSTするのではなく、サーバ内で行うなどの対応が望ましいです。

/transaction/announce

JSONの構造体をシリアライズした data と電子署名からトランザクションを生成します。

/transaction/prepare-announce

JSONの構造体からトランザクションを生成します。

/transaction/get

hash 値からトランザクションを取得します。
例:http://<ホストのIPアドレス>:7895/transaction/get?hash=949583a20ebdfdcb58277eb42fef3e66e9e6bbfc47304d8741a82c68f7c53a2

パラメータ 説明
hash トランザクションのハッシュ

JSON構造体

目的に応じて入力フォームの内容をJSON構造体にし、transaction/prepare-announce をコールすることでトランザションが生成されます。

各目的に応じたJSON構造体は以下になります。

送金トランザクション(v1)

あるアカウントからあるアカウントへ送金する際のJSON構造体です。

{
  "transaction": {
    "timeStamp": 73986093,
    "amount": 100,
    "fee": 0,
    "recipient": "MAENTDV3YWZZTWNAG7COHS3QNXQCJJQTUBF2MY2S",
    "type": 257,
    "deadline": 73989693,
    "message": {
      "payload": "",
      "type": 1
    },
    "version": 1610612737,
    "signer": "c48850b863c2fe13066a8aed308da9b4d897e62ef8d81ae5bc04ff85bfb31a74"
  },
  "privateKey": "dd214532115faa938e2982ef0b6a743b2b421fdfx20337b8d05da006235864722"
}
送金トランザクション(v2)

あるアカウントからあるアカウントへ送金する際のJSON構造体です。バージョン2はモザイクも送金可能です。

{
	"transaction": {
		"timeStamp": 73987329,
		"amount": 1000000,
		"fee": 0,
		"recipient": "MCIDKKNJZGDQMYNAW6TFBTIXRKFUN5WE3MGCPNEW",
		"type": 257,
		"deadline": 73990929,
		"message": {
			"payload": "",
			"type": 1
		},
		"version": 1610612738,
		"signer": "c48850b863c2fe13066a8aed308da9b4d897e62ef8d81ae5bc04ff85bfb31a74",
		"mosaics": [
			{
				"mosaicId": {
					"namespaceId": "company",
					"name": "checked"
				},
				"quantity": 2
			},
			{
				"mosaicId": {
					"namespaceId": "nem",
					"name": "xem"
				},
				"quantity": 0
			}
		]
	},
	"privateKey": "dd214532115faa938e2982ef0b6x2743b2b421fdf90337b8d05da006235864722"
}
Key 説明
timeStamp タイムスタンプ(ネメシスブロックが生成されたときからの時間)
amount 送金料
fee 手数料
recipient 受取アカウントのアドレス
type 257(固定)
deadline トランザクションのデットライン
message メッセージを送信する場合に使用
payload メッセージ(512byteまで)
type メッセージを暗号化するかどうか
  • 1 ... 暗号化しない
  • 2 ... 暗号化する
version ネットワークバージョン(1610612737 固定)
signer トランザクションを作成した公開鍵
mosaics モザイクのオブジェクト
mosaicId モザイクID
namespaceId モザイクのネームスペース
name モザイク名
quantity 送金するモザイクの量(3分割の場合、ミリ秒単位で送金可能)
privateKey 送信者の秘密鍵
マルチシグアカウントへの変換

マルチシグアカウントとは、マルチシグトランザクションを生成するアカウントになり、複数の署名者によって作られるアカウントです。
3人の署名が必要なマルチシグトランザクションを作成する場合、署名する3人の公開鍵によりマルチシグアカウントを作成し、そのアカウントへ送金を行います。

{
	"transaction": {
		"timeStamp": 73987491,
		"deadline": 73991091,
		"fee": 0,
		"type": 4097,
		"version": 1610612737,
		"modifications": [
			{
				"modificationType": 1,
				"cosignatoryAccount": "c48850b863c2fe13066a8aed308da9b4d897e62ef8d81ae5bc04ff85bfb31a74"
			},
			{
				"modificationType": 1,
				"cosignatoryAccount": "cdc06d4a01ecdab63585348c767ee0ae83bbe0eac14fa739a2fe2583c811c14f"
			},
			{
				"modificationType": 1,
				"cosignatoryAccount": "ed664e20a3b721f6c798d4cf48d74c4b35363cdb438aad8b2485a678adf42185"
			},
			{
				"modificationType": 1,
				"cosignatoryAccount": "bc8bc985c790a4187188f240a2a0feecaa93ae48203df24d99799c6729798d66"
			},
			{
				"modificationType": 1,
				"cosignatoryAccount": "a29e61009f13d4818072b95c3fab0648692095557403dde7c6b198cd9f7810c4"
			}
		],
		"minCosignatories": {
			"relativeChange": 5
		},
		"signer": "bc97d0365b67c56cc05ecea06f82ac80510e62a93237ba32777dcfc0c12d96a7"
	},
	"privateKey": "6ad7fad521b316c6cddf4ab939fa28c977ba6d31x9b63ba34426a82186d29d28"
}
Key 説明
modificationType マルチシグ署名者の追加 or 削除
  • 1 ... 署名者を追加
  • 2 ... 既存の署名者を削除
cosignatoryAccount 署名者のアカウント公開鍵
マルチシグトランザクション

マルチシグアカウント署名者のいずれかが、マルチシグトランザクションを生成することができます。

{
	"transaction": {
		"timeStamp": 73988038,
		"fee": 0,
		"type": 4100,
		"deadline": 73991638,
		"version": 1610612737,
		"otherTrans": {
			"timeStamp": 73988038,
			"amount": 1000000,
			"fee": 0,
			"recipient": "MAENTDV3YWZZTWNAG7COHS3QNXQCJJQTUBF2MY2S",
			"type": 257,
			"deadline": 73991638,
			"message": {
				"payload": "",
				"type": 1
			},
			"mosaics": [
				{
					"mosaicId": {
						"namespaceId": "company",
						"name": "checked"
					},
					"quantity": 1
				},
				{
					"mosaicId": {
						"namespaceId": "nem",
						"name": "xem"
					},
					"quantity": 0
				}
			],
			"signer": "bc97d0365b67c56cc05ecea06f82ac80510e62a93237ba32777dcfc0c12d96a7",
			"version": 1610612738
		},
		"signer": "c48850b863c2fe13066a8aed308da9b4d897e62ef8d81ae5bc04ff85bfb31a74"
	},
	"privateKey": "dd214532115faa938e2982ef0b6a743b2b477fdf90337b8d05da006235864722"
}
マルチシグトランザクションへの署名

マルチシグトランザクションへ署名するトランザクションになります。

{
	"transaction": {
		"timeStamp": 73988363,
		"fee": 0,
		"type": 4098,
		"deadline": 73991963,
		"version": 1610612737,
		"signer": "ed664e20a3b721f6c798d4cf48d74c4b35363cdb438aad8b2485a678adf42185",
		"otherHash": {
			"data": "c1484373c099c91fb4fcdb9bc4aae020360e96911f9526d381a3494599b4baf3"
		},
		"otherAccount": "MCPW6EIDKATNYBQOCJM266CNTI22WHW7IDIF5Y7E"
	},
	"privateKey": "a8207ae07e71e16c1a6c985669804b1f1c980ddd794d2627e00a88d8a46c0c32"
}
マルチシグトランザクションへの署名者追加・削除

マルチシグアカウントの署名者を追加、削除するトランザクションになります。

{
		"transaction":
		{
			"timeStamp": 9111526,
			"fee": 6000000,
			"type": 4100,
			"deadline": 9154726,
			"version": 1610612737,
			"signer": "6083df7119d43e815ed2967c795f806f6b73f8f92a56a7611e3848816ec50958",
			"otherTrans": {
				"timeStamp": 9111526,
				"fee": 16000000,
				"type": 4097,
				"deadline": 9154726,
				"version": 1610612737,
				"signer": "a1aaca6c17a24252e674d155713cdf55996ad00175be4af02a20c67b59f9fe8a",
				"modifications": [
				{
					"modificationType": 1,
					"cosignatoryAccount": "6c66ea288522990db7a0a63c9c20f532cdcb68dc3c9544fb20f7322c92ceadbb"
				}
				],
				"minCosignatories" : {
					"relativeChange": 1
				}
			},
			"signatures":[
			]
		},
		"privateKey": "00be34fdb20a9f6fed51376f0bab9f25ea7b78d610324588a6b203d0a1a6db4bc1"
}
ネームスペースの作成

ネームスペースを作成します。

{
	"transaction": {
		"timeStamp": 73986205,
		"fee": 0,
		"type": 8193,
		"deadline": 73989805,
		"rentalFeeSink": "MAMESPACEWH4MKFMBCVFERDPOOP4FK7MTCZTG5E7",
		"rentalFee": 5000000000,
		"newPart": "company",
		"parent": null,
		"version": 1610612737,
		"signer": "c48850b863c2fe13066a8aed308da9b4d897e62ef8d81ae5bc04ff85bfb31a74"
	},
	"privateKey": "dd214532115faa938e2982ef0b6a743b2b421fdfpx337b8d05da006235864722"
}
Key 説明
timeStamp 時間
fee 手数料
type 8193(固定)
deadline トランザクションの有効期限
version 1610612737(固定)
signer 作成者の公開鍵
rentalFeeSink レンタル料が払い出されるアカウントのアドレス(MAMESP-ACEWH4-MKFMBC-VFERDP-OOP4FK-7MTCZT-G5E7 固定)
rentalFee レンタル料
newPart ネームスペース名
parent 親ネームスペース名
モザイク作成

モザイクを作成します。

{
	"transaction": {
		"timeStamp": 73986393,
		"fee": 0,
		"type": 16385,
		"deadline": 73989993,
		"version": 1610612737,
		"signer": "c48850b863c2fe13066a8aed308da9b4d897e62ef8d81ae5bc04ff85bfb31a74",
		"creationFee": 5000000000,
		"creationFeeSink": "MBMOSAICOD4F54EE5CDMR23CCBGOAM2XSKYHTOJD",
		"mosaicDefinition": {
			"creator": "c48850b863c2fe13066a8aed308da9b4d897e62ef8d81ae5bc04ff85bfb31a74",
			"description": "検品チェック用",
			"id": {
				"name": "checked",
				"namespaceId": "company"
			},
			"levy": {
				"fee": 0,
				"mosaicId": {
					"name": "xem",
					"namespaceId": "nem"
				},
				"recipient": "MASM3LKYE6KJYHX5RII72UY5RZQNVH5EOKF6V4CZ",
				"type": 1
			},
			"properties": [
				{
					"name": "divisibility",
					"value": "0"
				},
				{
					"name": "initialSupply",
					"value": "900000000"
				},
				{
					"name": "supplyMutable",
					"value": "false"
				},
				{
					"name": "transferable",
					"value": "true"
				}
			]
		}
	},
	"privateKey": "dd214532115faa938e2982ef0b6a743b2b421fdf90x37b8d05da006235864722"
}
Key 説明
timeStamp 時間
fee 手数料
type 16385(固定)
deadline トランザクションの有効期限
version 1610612737(固定)
signer 作成者の公開鍵
creationFee 作成手数料
creationFeeSink 手数料が転送されるアドレス(※ MBMOSA-ICOD4F-54EE5C-DMR23C-CBGOAM-2XSKYH-TOJD 固定)
mosaicDefinition モザイクの定義
creator モザイクの定義者の公開鍵
id namespaceId ... 対応するネームスペース
name ... モザイクの定義名
description モザイクの説明
properties モザイクの定義
divisibility モザイクを分割できる最小のサブユニット
initialSupply 最初に作成されるモザイクの数量(最大 9,000,000,000)
supplyMutable 供給量の変更可否(true or false)
transferable モザイク作成者以外に転送可能かどうか(true or false)
levy モザイク転送時の手数料設定
type
  • 1 ... fee が絶対必要
  • 2 ... 転送量に応じた fee
recipient 手数料受け取り者のアドレス
mosaicId 手数料として徴収するモザイク
namespaceId ... ネームスペース
name ... モザイク名
モザイクの定義変更

モザイクの定義を変更する場合は、モザイク作成と同じJSON構造体で行うことができます。
ただし変更できるのは説明(description)部分になり、プロパティを変更する場合はそのモザイクすべてを所有している必要があります。

モザイクの供給量変更

作成したモザイクが未送信であれば、モザイク作成と同じ jsonの構造体でモザイクの供給量を変更できます。

ERROR MESSAGES

  • Request method 'GET' not supported
    POSTリクエストでなければならないのに、GETでリクエストしている。
  • address must be valid:
    アドレスが無効。
  • FAILURE_SERVER_LIMIT:
    ハーベストアカウントが許可されている数を超えた。
  • JSON Object was expected:
    JSONに必要なパラメータがない
  • FAILURE_UNKNOWN_ACCOUNT:
    アカウントが不明
  • block not found in the db
    要求されたブロックは存在しない
  • height must be positive
    ブロックの高さ指定が不正
  • network has not been booted yet
    ノードがまだ起動されていない
  • network boot was already attempted
    起動済のノードを再度起動しようとした
  • remote 123.45.67.89 attempted to call local /node/boot
    リモートのノードを起動しようとした
  • FAILURE_PAST_DEADLINE
    エンティティの有効期限切れ
  • FAILURE_FUTURE_DEADLINE
    有効期限が許可されている時間をオーバーしている
  • FAILURE_INSUFFICIENT_BALANCE
    アカウントの資金不足
  • FAILURE_MESSAGE_TOO_LARGE
    トランザクションのメッセージが512バイトを超えている
  • FAILURE_HASH_EXISTS
    エンティティのハッシュが存在しない
  • FAILURE_SIGNATURE_NOT_VERIFIABLE
    署名が不正
  • FAILURE_TIMESTAMP_TOO_FAR_IN_PAST
    エンティティのタイムスタンプが不正(過去になっている)
  • FAILURE_TIMESTAMP_TOO_FAR_IN_FUTURE
    エンティティのタイムスタンプが不正(未来になっている)
  • FAILURE_INELIGIBLE_BLOCK_SIGNER
    ブロックに不正な署名が含まれている
  • FAILURE_ENTITY_UNUSABLE_OUT_OF_SYNC
    他のノードと同期前になりエンティティの処理ができない(ノードが完全に同期する前に高さが大きく異なるブロックを受け取ったときに発生)
  • FAILURE_INSUFFICIENT_FEE
    手数料が不正
  • FAILURE_NEMESIS_ACCOUNT_TRANSACTION_AFTER_NEMESIS_BLOCK
    供給されたトランザクションにはネメシスアカウントを持っているので、通常のブロックに含めることができない
  • FAILURE_TRANSACTION_CACHE_TOO_FULL
    トランザクションキャッシュが限界値を超えているためトランザクションの受け入れが拒否された
  • FAILURE_WRONG_NETWORK
    指定されたネットワークは間違っている
  • FAILURE_CANNOT_HARVEST_FROM_BLOCKED_ACCOUNT
    ブロックされているアカウントによって作成されたブロックのためブロックが拒否された
  • FAILURE_DESTINATION_ACCOUNT_HAS_NONZERO_BALANCE
    0以外のbalanceを持っているためアカウントを移すことができない
  • FAILURE_IMPORTANCE_TRANSFER_IN_PROGRESS
    トランザクションがコンフリクトしている(処理進行中)
  • FAILURE_IMPORTANCE_TRANSFER_NEEDS_TO_BE_DEACTIVATED
    トランザクションがコンフリクトしている(重要度が転送済)
  • FAILURE_IMPORTANCE_TRANSFER_IS_NOT_ACTIVE
    トランザクションがコンフリクトしている(重要度が転送前)
  • FAILURE_TRANSACTION_NOT_ALLOWED_FOR_REMOTE
    トランザクションが不適切な方法でリモートアカウントを利用している
  • FAILURE_MULTISIG_NOT_A_COSIGNER
    マルチシグの署名者ではない
  • FAILURE_MULTISIG_INVALID_COSIGNERS
    マルチシグトランザクションに接続した署名者が無効
  • FAILURE_MULTISIG_NO_MATCHING_MULTISIG
    対応するマルチシグトランザクションが見つからない
  • FAILURE_TRANSACTION_NOT_ALLOWED_FOR_MULTISIG
    署名がマルチシグアカウントによるもののため拒否された
  • FAILURE_MULTISIG_ALREADY_A_COSIGNER
    署名済のマルチシグトランザクションに新たに署名者を追加しようとしたため
  • FAILURE_MULTISIG_MODIFICATION_MULTIPLE_DELETES
    複数の署名者を削除しようとしたため。署名者を削除できるのは1回のトランザクションにつき1つまで
  • FAILURE_MULTISIG_MODIFICATION_REDUNDANT_MODIFICATIONS
    同じ署名者が複数回署名を行おうとしたため
  • FAILURE_CONFLICTING_MULTISIG_MODIFICATION
    署名者を追加後、さらにその署名者を削除しようとしたため
  • FAILURE_TOO_MANY_MULTISIG_COSIGNERS
    マルチシグで設定できるのは32のアカウントまで
  • FAILURE_MULTISIG_ACCOUNT_CANNOT_BE_COSIGNER
    マルチシグの変更によりマルチシグアカウントが署名者となるため検証に失敗
  • FAILURE_MULTISIG_MIN_COSIGNATORIES_OUT_OF_RANGE
    マルチシグの署名数が異なる
  • FAILURE_NAMESPACE_UNKNOWN
    ネームスペース名が不明
  • FAILURE_NAMESPACE_ALREADY_EXISTS
    同一のネームスペース名が存在する
  • FAILURE_NAMESPACE_EXPIRED
    ネームスペースの有効期限切れ
  • FAILURE_NAMESPACE_OWNER_CONFLICT
    ネームスペースの所有者がコンフリクトしている
  • FAILURE_NAMESPACE_INVALID_NAME
    ネームスペース名が無効
  • FAILURE_NAMESPACE_INVALID_RENTAL_FEE_SINK
    ネームスペースのレンタル料が払い出されるアカウントが無効
  • FAILURE_NAMESPACE_INVALID_RENTAL_FEE
    ネームスペースのレンタル手数料が無効
  • FAILURE_NAMESPACE_PROVISION_TOO_EARLY
    ネームスペースのレンタルが発行前に行われた
  • FAILURE_NAMESPACE_NOT_CLAIMABLE
    ネームスペースに予約語が含まれている
  • FAILURE_MOSAIC_UNKNOWN
    モザイク名が不正
  • FAILURE_MOSAIC_MODIFICATION_NOT_ALLOWED
    モザイクの変更が許可されていない
  • FAILURE_MOSAIC_CREATOR_CONFLICT
    モザイクの所有者がコンフリクトした
  • FAILURE_MOSAIC_SUPPLY_IMMUTABLE
    モザイクの供給量は変更不可
  • FAILURE_MOSAIC_MAX_SUPPLY_EXCEEDED
    モザイク全体の供給量が最大値となっている
  • FAILURE_MOSAIC_SUPPLY_NEGATIVE
    モザイクの供給量が不正
  • FAILURE_MOSAIC_NOT_TRANSFERABLE
    モザイクの譲渡不可
  • FAILURE_MOSAIC_DIVISIBILITY_VIOLATED
    モザイクの分割不可
  • FAILURE_CONFLICTING_MOSAIC_CREATION
    モザイク名がすでに使われている
  • FAILURE_MOSAIC_INVALID_CREATION_FEE_SINK
    モザイクのレンタル料が払い出されるアカウントが無効
  • FAILURE_MOSAIC_INVALID_CREATION_FEE
    モザイクの作成に必要な料金が無効
  • FAILURE_TOO_MANY_MOSAIC_TRANSFERS
    トランザクションに多数のモザイクが含まれている

レスポンス