NIP 8 - Catapult技術のパブリックチェーンへのリリース (和訳)  8/6更新版

:warning: この和訳は**非公式**かつ**正確性は保証しません**. **原文を正**としてください. またこの文書の原文は**随時更新される可能性**があります. 最新情報は[原文](https://github.com/nemtech/NIP/blob/master/NIPs/nip-0008.md)を参照してください.
:warning: [8/6の更新版](https://github.com/nemtech/NIP/blob/master/NIPs/nip-0008.md)を訳したものです

```
    NIP: 8
    Layer: Core
    Title: Catapult technology release for Public Network
    Author: Gregory Saive <greg@nem.foundation>
    Discussions-To: https://github.com/nemtech/NIP/issues/22
    Comments-URI: https://github.com/nemtech/NIP/issues/22
    Status: Draft
    Type: Process
    Created: 2019-05-10
    License: Apache-2.0
```

## Table of contents

(略)

## Introduction (前文)

このドキュメントは, 現在のパブリックブロックチェーンNEM(以下, **NIS1**)を新たに利用可能になったCatapult技術(以下, **Catapult**)でアップグレードすることに関する意思決定プロセスを提供することを目的としています。

以下のプロジェクトがこのドキュメントのターゲットです.

- [`NIS1`: NemProject/nem.core](https://github.com/NemProject/nem.core)
- [`Catapult`: nemtech/catapult-server](https://github.com/nemtech/catapult-server)

NIS1のデータセットのCatapultへの移行については議論されていますが, いくつかのポイントが未解決で議論の余地があります.

## Specification (仕様)

このセクションではCatapultをパブリックネットワークにリリースするときに従うプロセスについて説明します。

### Issue Resolution Guidelines (課題解決ガイドライン)

この移行プロセスの定義を使用して, 多くの**課題解決策**(意思決定)を見つける必要があります. 課題(決定)が解決されたかどうかを判断するために, このセクションで説明するガイドラインを使用して, 課題解決に関する基本情報で定義します.

**課題解決**は1からn(nは課題解決の数)までの番号が振られ, `IR`が頭について参照されます. 次の例は**課題解決ID**のフォーマットです.

- IR-1
- IR-2
- IR-10

課題解決IDの作成の次に, 課題解決の説明を[問題解決](#issue-resolutions)セクションの表の下に作成します.
さらに, 全ての課題解決に次のいずれかの付加情報が表示されます.

- **未解決の課題**の場合 (`IR-1`を課題解決IDに置き換え, 要約したタイトルをつけます)

```
:warning: (**IR-1** _Summarizing Title_) **An issue resolution must be made here.**
```

- **解決済みの課題**の場合 (`IR-1` を課題解決IDに置き換え, タイトルと決定した内容を追加します)

```
:white_check_mark: **Issue Resolution IR-1: _Summarizing Title_**

> Descriptive text about the decision that has been taken
```

### Post-Upgrade Situation (アップグレード後の状況)

概念的には複数のシナリオを計画したり、ブロックチェーンネットワークをアップグレードできます. 分散台帳技術と**ブロックチェーン**の特性により, **計画されたアップグレード後のシナリオを決定すること**はとても重要です.

この概念的な計画とプロセス定義は私たちのネットワークのアップデートを一般の人々, パートナー, 取引所に伝えるための最適な設定を提供します. [技術的負債の紹介](#introduction-of-technical-debt)のセクションで紹介されたもたらされる技術的負債は分科会(SIG)で処理されます.

:warning: (**IR-1** アップブレード後の状況) 課題解決はここでなさなればなりません.

#### One Chain Approach (1チェーン法)

分散台帳ネットワークのフォークに関する過去のデータでは, コミュニティ/サポーター/参加者の大部分の合意を集め**ハードフォーク**することでブロックチェーンネットワークをアップグレード可能であることを示しています. 

**1チェーン法**(フォーク)のシナリオでは, 以前のネットワークのデータセットを新しくセットアップされたCatapultネットワークに移行する必要があります. これはNEMブロックチェーンで現在利用可能な様々なデータセットを移行を許可するための**多くの移行ツールの開発につながります**.

このシナリオでは**正式に以前のNIS1ネットワークを廃止にする**でしょう. しかし, NIS1ネットワークはノードをアップグレードしない企業, コミュニティ, サポーターによってオンラインに保たれる**可能性**があります. NIS1チェーンがハードフォーク後も存続している場合, 2つのネットワークが独立して分割されるため, アカウントを保有している人は事実上二重に残高を持つことになります.

移行のためのツールを提供することで, **分割**のリスクを軽減することが可能です. しかし, **1チェーン法によるネットワーク分割は, 大きな技術的負債がもたらされることに特徴付けられます**.

**パートナー**と**取引所**の統合に関しては, 1チェーン法では新しく作られたチェーンを最新状態にするため, **パートナー側に技術的負債をもたらします**.

加えて, パートナーとクライアントの統合では, ソフトウェアが機能するようにチェーンを移行する前にソフトウェアを**更新する必要があります**. `XEM`との取引ペアをリストする取引所は, ノードと入出金をコントロールするソフトウェアの更新が必要です.

#### Two Chains Approach (2チェーン法)

分散台帳ネットワークのフォークに関する過去のデータ調査から生じた別な選択肢は, **以前のネットワークとは別のネットワークを作成して**ブロックチェーンネットワークをアップブレードする方法です.

**2チェーン法**のシナリオでも, データセットを以前のネットワークから新たにセットアップされるCatapultネットワークに移行する必要がありますが, データセットは _新しいチェーンの新たなスタートを切り開く_ ことに関して, より柔軟な**選択**をすることができます.

NIS1ネットワークが企業やコミュニティ, サポーターによってオンラインに保つことが**可能**です. 加えて, _2チェーン法_ では新しいチェーンが生まれた瞬間には, **古いチェーンの残高だけが実際の資本価値を持ちます.**

このシナリオでは, パートナーや取引所が新しくセットアップされたCatapultネットワークをサポートするか決める必要があるため, リスクが少ないです. **新しく作成されたネットワークは利用可能な統合に影響を与えません**.

このシナリオでのデータセットの移行に関しては, より柔軟に行う事ができます. そのため, **新しく作成されたネットワークに移行するデータセットを選択する必要があります**. このドキュメントの[データセットの移行](#dataset-migrations)では, 移行するデータセットを定義します.

**Fork Schemes (フォークスキーム)**

パブリックチェーンにリリースされる際、アップグレード後の状況は異なる2つのフォークスキームで管理できます。

- **スナップショットを使ったフォーク**: 新しいチェーンはフォークするブロックまでは同一で, その後分割されます. アカウント所有者は**自動的**に新しいチェーンに残高が入金されます.
- **バーンを使ったフォーク**: アカウントの所有者は古いチェーンのトークンを消却して, 新しいチェーンに入金する必要があります.

Slackでのディスカッションや複数の研究文書によると、所有者の残高について、バーンスキームには法的な意味合いがあります。実際に、オプトインベースの残高の移行(バーン/クレーム)が発生した場合、管理委員会は残高の損失の可能性について、責任を負う可能性があります。これは望ましくなく、最も避けるべきものです。

**移行プロセスを改善し、エンドユーザにとって出来るだけシームレスにするための研究は進行中です。次の問題解決(IR-2)で下された決定は変更される可能性があります。**

:white_check_mark: **Issue Resolution IR-2: _Snapshot or Burn_**

> バーン(オプトイン)フォークスキームは法的な影響の可能性があるため、**スナップショットフォークスキーム**を使用してデータセットを移行することを勧めます。

#### Ellected Situation (選択された状況)

考えられる結果は次の通りです.

- **Catapult**の技術はNIS1をアップグレードし, **1つのチェーン**とネットワークをもたらします.
- **Catapult**の技術はNIS1と並行してリリースされ, **スナップショットスキーム**によって**2つのチェーン**とネットワークをもたらします.
- **Catapult**の技術はNIS1と並行してリリースされ, **バーンスキーム**によって**2つのチェーン**とネットワークをもたらします.

選択されたアップグレード後の状況は, **IR-1 _アップグレード後の状況_** の解決によって決定されます.

### Migrated Modules / Datasets / Integrations

次のリストには現在NIS1利用可能な全ての移行済みのモジュールとデータセット、Catapultの技術に移行する際に考慮する必要がある統合(取引所/クライアント)が含まれています.


- アカウントデータ (残高, 重要度, マルチシグの関連)
- トランザクション履歴
- ネームスペース
- モザイク
- セカンドレイヤーの統合
- 取引所の統合

これらの移行されたモジュールとデータセットについての詳細は, [データセット移行](#dataset-migrations)のサブセクションで説明します.

### Process Implications (プロセスへの影響)

法的及び技術的分野の両方における移行の影響について, いくつか考慮する必要があります. それぞれの影響はこのセクションのサブセクションで説明します.

#### Legal implications (法的な影響)

提案された移行のアプローチは潜在的な課税対象となる出来事の創出を意味します. 移行を正しく計画する前に, この点を明確にするのは重要です.

- 課税対象となるイベントを避けることはできますか? **NO**
- 課税対象となるイベントの作成は, 移行の**妨げ**となりますか? **NO**

:white_check_mark: **課題解決 IR-3: _課税対象イベントの作成_**

> 課税対象となるイベントの作成は移行を妨げません. なぜなら, それは私たちの責任範囲を外れたトークンを取引するときのみユーザに影響するためです.

#### Technical implications (技術的な影響)

移行の過程で, Catapultの移行/リリースを成功させるには, エンドユーザが**自分がするべきことを正確に知っている**ことが望ましいです. そのためには、このセクションで重要なドキュメントと記事の参照を定義する必要があります。これにより、エンドユーザーにアップグレードに必要な手順を実行できる方法の概要を示すことができます。

さらに, Catapultのパブリックネットワークへのリリースに伴う技術的負債の概要を[nemtech/community](https://github.com/nemtech/community)に記載している様々な分科会(SIG)で説明します.


以下のリストはその後のトピックで決定が行われた後に再定義されるかもしれません. 以下は**Catapultのパブリックネットワークのリリースのための重要なツールとドキュメントのリスト**です.

- `catapult-service-bootstrap`: [Guide: Docker containers for Public Network Nodes](https://github.com/nemtech/catapult-service-bootstrap)
  - パブリックネットワークノードのDockerコンテナのガイド
- `catapult-server`: [Building Instructions for Public Network Nodes](https://github.com/nemtech/catapult-server/blob/master/BUILDING.md)
  - パブリックネットワークノードの構築手順
- `catapult-rest`: [Guide: Run your own REST gateway for Public Network Nodes](https://github.com/nemtech/catapult-rest)
  - パブリックネットワークノード用のRESTゲートウェイの実行のガイド
- `nem2-sdk-*`: [Guide: NEM2 TS/JS for Public Network Integrations](https://github.com/nemtech/nem2-sdk-typescript-javascript)
  - NEM2 TS/JSライブラリのパブリックネットワーク統合のためガイド
- `nem2-cli`: [Guide: NEM2 CLI for Public Network Integrations](https://github.com/nemtech/nem2-cli)
  - NEM2 CLIのパブリックネットワーク統合のためのガイド
- `nem2-docs`: [Section: Catapult Public Network Integration](https://github.com/nemtech/nem2-docs)
  - Catapultネットワーク統合のセクション
- `nem2-e2e-tests`: [Testing: Usage with Public Network Nodes](https://github.com/nemtech/nem2-e2e-tests)
  - パブリックネットワークノードでの使用するためのテスト 
- `all-projects`: [Testing Clients/SDK/Docs: Usage with Public Network Nodes](https://github.com/nemtech)
  - パブリックネットワークで使うための, Client/SDK/Docsのテスト

リストされているいくつかの**ツールやドキュメント**はその後のトピックの決定のために変更されるかもしれません. また一部のツールではパブリックネットワークのノードで使用するための作業の割り当てが必要になります.

:white_check_mark: **課題解決 IR-4: _移行ツールの開発_**

> 統合/実装は2019年第3四半期までに終える予定です.

#### Reputational implications (評判への影響)

NIS1とCatapultの技術は分散されているため, この文書で述べているように, すべての _サポート_ エンドユーザははNIS/Catapult技術をアップグレードする必要があります.

これは評判に影響を与える可能性があります。実際、_NEMブランド_ 全体がパブリックチェーンへのリリースの影響を受ける可能性があります。評判を落とすことなく、パブリックチェーンへのリリースを確実にするために、移行プロセスがエンドユーザによって明確に定義され**理解される**ことが非常に重要です。

:white_check_mark: **課題解決 IR-5: 風評被害の分析**

> CatapultのパブリックチェーンへのリリースはNEMの評判に影響を与えるでしょう。
> Catapultテクノロジーのリリースの影響を増すために、ブランディング、PR、ニュース報道は来月中(Q3, Q4 2014)に管理される予定です。

#### Partner implications (パートナーの影響)

NIS1ネットワークのセカンドレイヤーの統合と他のクライアントとの統合は, ネットワークのアップグレードをの**影響を受けます**. そのため、アップグレードをパートナー側で行わなければならないのか、それとも問題を解決するための支援を求められるのかについて、パートナーが決定できるようにすることが重要です. 

この分析によりネットワーク移行を**最適**に行うための手段として, パートナーがアップグレードに必要な時間を見積もることができます. ここで解決される必要があります.

:white_check_mark: **課題解決 IR-6: _Catapultアップグレードの技術的な定義_**

> NIS1を使った機能をCatapultを使った機能にアップグレードするためのガイドは書かれています。
> NIS1マイグレーションガイドはNEM Developer Centerで見るとこができます:
> https://nemtech.github.io/guides/migration/migrating-from-nis1-to-catapult.html#migrating-from-nis1-to-catapult

### Dataset Migrations (データセットの移行)

さらに, 各サブセクションはそのサブセクションが解決されるために満たさなければならない**タスク割り当てリスト**に影響されます.

このセクションでは、Catapultテクノロジーに移行するときに考慮する必要がある様々データセットについて説明します。利用可能な各データセットは、_どのようにCatapultに移行できるかとう観点から分析されます。_

:warning: (**IR-7** _移行必須のデータセットの定義_) **この課題解決はここでなされなければなりません**

#### Account Data (アカウントデータ)

アカウントデータは**NEMブロックチェーンパブリックネットワーク(MAIN_NET)上のアカウント**にリンクされているデータを表します.

以下のサブセクションではNIS1ネットワークにリンクされたデータセットを識別します.

このデータセットには、残高(XEMのみ)、重要度の委任、及びマルチシグに関するデータが含まれています。このデータをCatapultに移行することは現在議論中です。

:warning: **アカウントデータはエンドユーザの残高に直接影響を受ける機微なデータです。このデータセットに対して明確な移行プロセスを提供することが重要です。**

1. [ ] **重要度委任履歴**
2. [ ] **マルチシグネチャ履歴データ**
3. [ ] **マルチシグネチャ情報**
4. [ ] **XEM残高**
5. [ ] **重要度履歴データ**


#### Transaction History (トランザクション履歴)

このデータセットには、NISブロックチェーンの完全なトランザクション履歴が含まれています。**1チェーン法**の場合、このデータセットはそれ以上対処する必要ありません。

:warning: **NIS1ブロックチェーンネットワークのトランザクション履歴は、NEMが始まってからの追跡を可能にします。これは、トランザクションの移行プロセスを定義する際に考慮すべき重要な注意事項です。フォークスキームとアップグレード後のシナリオに関係なく、トランザクション履歴を失うと法的な影響に大きな影響を与える可能性があります。**

1. [ ] **転送トランザクション**
2. [ ] **マルチシグ変更トランザクション**
3. [ ] **重要度転送トランザクション**
4. [ ] **ネームスペース登録トランザクション**
5. [ ] **モザイク定義トランザクション**

#### Namespaces

このデータセットには、NIS1上のネームスペースに関する所有権情報が含まれています。NIS1上のネームスペースはモザイクに直接リンクされている可能性があります。加えて、NIS1上のネームスペースはネームスペースの所有者のアドレスの別名として使用できます。

Catapultではネームスペースはモザイクやアドレスと直接リンクされなくなりました。エイリアスというプロセスが導入されましたが、後方互換性はありません。

1. [ ] **ルートネームスペース**
2. [ ] **サブネームスペース**

#### Mosaics

このデータセットにはアカウント残高(カスタムモザイク)とカスタムモザイクの配布履歴が含まれます。パートナーはNISブロックチェーンネットワークの使用法を理解するために連絡しなければなりません。
これはカスタムモザイクの移行プロセスを改善するために役立ちます。

:warning: パートナーは定義された移行プロセスの影響を受けます。

1. [ ] **残高**
2. [ ] **配布(転送)**

#### Exchanges Integrations (取引所の統合)

NISネットワークの取引所の統合は、**NEMブロックチェーンパブリックネットワーク上のXEMまたはカスタムモザイクの取引所統合に関連する**データセットを表します。

:warning: **XEM・モザイクの各取引所の統合は取引所側の作業で移行がサポートされるかどうかを明確にするため連絡する必要があります**

List of available XEM Buy / Sell Integrations (XEMの売買の統合リスト):

- [Annex 1: Exchange integrations list / 付録1: 取引所リスト](https://github.com/evias/NIP/blob/nip-public-network/NIPs/nip-0008/exchanges-list.md)

:warning: **NEMパブリックブロックチェーン上でカスタムモザイクを発行した企業はCatapult技術を使って将来の明確な解決策を見つけるために連絡する必要があります.**

List of available Custom Mosaics Buy / Sell Integrations (カスタムモザイクの売買の統合リスト):

- [Annex 2: Exchange list for Custom Mosaics / 付録2: カスタムモザイクの取引所リスト](https://github.com/evias/NIP/blob/nip-public-network/NIPs/nip-0008/exchanges-custom-mosaics.md)



#### Second Layer Integrations (セカンドレイヤーの統合)

NISブロックチェーンネットワークのセカンドレイヤー統合は数多くあります。そのうちのいくつかは、NISブロックチェーン内での一般的な使用方法の採用を発見しており、Catapultパブリックチェーンリリースを改善するためにいくつかの計画を必要とするかもしれません。

このセクションでは、NIS1ブロックチェーンネットワーク内で使用されるようになった複数の機能範囲を分析するための、NIS1統合の網羅的なリストを示します。


1. [ ] **Apostille (アポスティーユ)**

機能範囲: HEXメッセージを含む転送トランザクション、BIP32/公開鍵導出

2. [ ] **Voting (投票)**

機能範囲: JSON平文を含む転送トランザクション、公開鍵の導出

3. [ ] **Signed Messages (署名メッセージ)**

機能範囲: 公開会議による暗号化

4. [ ] **Domain Name Services (DNS)**

機能範囲: ネームスペース、アドレス、転送トランザクション

5. [ ] **Unlisted partners (載っていないパートナー)**

このセクションにリストされていないパートナーは、次の統合リストにあります。

### Introduction of Technical Debt (技術的負債の紹介)

Catapultのパブリックネットワークのリリースの意思決定の過程で, 行われた決定によって技術的負債が生じる可能性があります. 円滑なリリースを支持されるために, もたらされた技術的負債が, この文書で計画/整理/説明されることが最善です.

As such, special interest groups will be listed with their **introduced technical debt** in the following table:
以下の表に, 分科会(SIG)を**もたらされる技術的負債**と共にリストします.

| SIG | 技術的負債 | 割り当て済み? |
| --- | --- | --- |
| #sig-api | SDK TS/JS Keccakの実装 | :white_check_mark: |
| #sig-api | SDK Java Keccakの実装 | :stop_sign: |
| #sig-api | PublicネットワークノードのDocker手順 | :white_check_mark: |
| #sig-client | 移行ツール | :stop_sign: |
| #sig-docs | パブリックネットワークのガイド | :white_check_mark: |
| #sig-testing | End-to-Endのテストスイート | :white_check_mark: |
| catapult-server | パブリックネットワーク用のノードのビルド手順 | :white_check_mark: |

### Issue Resolutions (課題解決)

- [ ] IR-1: アップグレード後の状況
- [x] IR-2: 2チェーン法におけるスナップショットまたはバーン
- [x] IR-3: 課税対象イベントの発生
- [x] IR-4: マイグレーションツールの開発
- [x] IR-5: 不評被害の分析
- [x] IR-6: Catapultアップグレードの技術的な定義
- [ ] IR-7: 移行必須のデータセットの定義



| Task | Title | Assignee | Status |
| --- | --- | --- | --- |
| **IR-1** | _アップグレード後の状況_ | WG | ![Progress](http://progressed.io/bar/25) |
| **IR-2** | _スナップショットまたはバーン_ | WG | ![Progress](http://progressed.io/bar/100) |
| **IR-3** | _課税対象イベントの発生_ | WG | ![Progress](http://progressed.io/bar/100) |
| **IR-4** | _マイグレーションツールの開発_ | Core | ![Progress](http://progressed.io/bar/100) |
| **IR-5** | _不評被害の分析_ | Dave Hodgson | ![Progress](http://progressed.io/bar/100) |
| **IR-6** | _Catapultアップグレードの技術的な定義_ | @evias| ![Progress](http://progressed.io/bar/100) |
| **IR-7** | _移行必須のデータセットの定義_ | WG | ![Progress](http://progressed.io/bar/0) |

## Backwards compatibility (後方互換性)

Catapultソフトウェアは異なるソフトウェア開発言語で書き直されているため, 単純なアップデートプロセスを提供することは不可能です. 後方互換性は検討され研究されており, この文書で議論されるべきです.

Catapultテクノロジの下位互換性のないモジュールおよび機能はすべて、移行が行われる前にトピックに関する明確な解決策を見つけるために評価されています。

:warning: **問題が解決されたら, このセクションにて詳細情報を説明します.**

## Annexes (付録)

このNIPに付録は以下の通りです.

- [Annex 1: Exchange integrations list]
- [Annex 2: Exchange list for Custom Mosaics]

## References (参照)

- [`NIS1`: NemProject/nem.core](https://github.com/NemProject/nem.core)
- [`Catapult`: nemtech/catapult-server](https://github.com/nemtech/catapult-server)
- [catapult-service-bootstrap](https://github.com/nemtech/catapult-service-bootstrap)
- [catapult-server](https://github.com/nemtech/catapult-server/blob/master/BUILDING.md)
- [catapult-rest](https://github.com/nemtech/catapult-rest)
- [nem2-sdk-typescript-javascript](https://github.com/nemtech/nem2-sdk-typescript-javascript)
- [nem2-cli](https://github.com/nemtech/nem2-cli)
- [nem2-docs](https://github.com/nemtech/nem2-docs)
- [nem2-e2e-tests](https://github.com/nemtech/nem2-e2e-tests)
- [@nemtech](https://github.com/nemtech)
- [nemtech/community](https://github.com/nemtech/community)
- [Annex 1: Exchange integrations list]
- [Annex 2: Exchange list for Custom Mosaics]

[Annex 1: Exchange integrations list]:nip-0008/exchanges-list.md
[Annex 2: Exchange list for Custom Mosaics]:nip-0008/exchanges-custom-mosaics.md

## History (履歴)

| **Date**     | **Version**   |
| ------------ | ------------- |
| May 10 2019  | Initial Draft |
| May 13 2019  | Second Draft  |
| May 16 2019  | Third Draft   |