FunctionX (FX)のイントロダクション — Ledger Nanoアプリケーションの第一弾

Japan - Nanna
Pundi AI
Published in
17 min readDec 5, 2022

FunctionX(FX)のイントロとその使い方。

Ledger Deviceは、暗号通貨の秘密鍵をオフラインまたは「コールド」ストレージに保管するハードウェアウォレットです。私たちがハードウェアウォレットから取引を行う場合でも、ハードウェアウォレットはオフライン環境で使用され、取引に署名してブロックチェーンネットワークにブロードキャストバックする仕組みにより、私たちの秘密鍵は常にインターネットを通じて不正なアクセスのリスクから保護されるようになっています。

f(x)Coreブロックチェーンは、Cosmos SDKとTendermintプロトコルの上に構築されています。Ethereumエコシステムとの互換性を高めるため、f(x)CoreとMarginXチェーンにおけるEthereum署名は、f(x)CoreのEVMアップグレード以降、導入されています。このEVMの統合により、分散型取引所(DEX)、流動性プロトコル、オートコンパウンダー、その他のdAppsをFunction Xネットワーク上に展開することができるようになりました。EVMアップグレードの成果の1つは、fxと0xの両方のウォレットタイプがリンクした新しいタイプのアカウントの生成、言い換えれば、コインタイプ118(ATOM)と60(ETH)の両方をサポートできるアカウントの生成のことです。

現在、EVMのアップグレードの結果、イーサリアムの秘密鍵を使用しているf(x)Coreユーザーは、Ledgerデバイスでトランザクションに署名することができません。この課題に対応するため、Function Xの開発チームはCosmos Ledgerアプリをフォークして改良し、今回発表する新しいLedgerアプリでは、f(x)CoreユーザーがLedgerデバイスでf(x)CoreおよびMarginXチェーン、そしていずれPundi Xチェーンでのトランザクションに署名できるようにします。

Enter FunctionX (FX).

FunctionX (FX)

FunctionX (FX) は私たちの最初のLedger Nanoアプリといえ、Ledger Nanoデバイスで動作するアプリです。このアプリは、Function Xエコシステムのネイティブユーティリティトークンであるコイン:FXをサポートする予定です。ユーザーはFunctionXアプリを使用して、Ledgerデバイスでf(x)Core、MarginX、Pundi Xチェーンのトランザクションに署名することができます。

Note: FunctionXは、f(x)Core、MarginX、Pundi Xチェーンのみ対応しています。コインタイプはATOMとETHは使用できないため、他のCosmosチェーンやEthereumチェーンには対応していません。

現時点では、Function XのGithubリポジトリと一連のCLIコマンド(詳細は後述)を通じてのみ、アプリをローカルにインストールすることができます。アプリがLedgerのアプリカタログに掲載されれば、Ledger Liveから簡単にアプリをダウンロードできるようになります。この記事は、FunctionXがLedgerのチームによって承認されたときに、Ledgerアプリカタログを通じてFunctionXをインストールする方法のガイドを更新する予定です。

必要条件

インストールする前に、以下のことを確認してください。:

  1. Ledger Nano デバイスが初期化されている
  2. デバイスの最新ファームウェアがインストールされています。
  3. Ledger Live を使用する準備ができている
  4. Ledger Nano デバイスがコンピュータまたはラップトップに接続されている
  5. ローカルにインストールする場合は、Docker が実行されていることと pip3 がインストールされていることを確認し、bash シェルでインストールを実行できる

ローカルインストール方式 (Linux):

以下のローカルインストールの手順は、Ledger Nano S Plus で実施します。Ledger Nano S および Ledger Nano X については、以下に説明する適切なコマンドを参照してください。

  1. Githubからコードを引っ張ってきて、リポジトリの “fx “ branchに切り替えます。
git clone https://github.com/FunctionX/ledger-cosmos.git
git switch fx

2. 依存モジュールをひきます。

git submodule update --init --recursive
make deps

3. Dockerが起動していることを確認し、アプリをビルドします。

# For Nano S:
make buildS
# For Nano S Pus:
make buildS2
#For Nano X:
make buildX

4. Ledger端末にアプリをインストールします。この時、デバイスが接続されている必要があります。また、Ledger端末での確認が必要です。

# For Nano S:
make load
# For Nano S Plus:
make loadS2
# For Nano X:
make loadX

Ledgerデバイスの確認の処理

5. パソコンでLedger Liveを閉じます。

6. 端末でFunctionXアプリを起動します。

これで、FunctionXをLedger Nanoデバイスで使用する準備が整いました。

Ledger Live インストール方法 (Ledger app catalog):

[Ledgerの承認後、更新される予定]

ハードウェアウォレットの利用がセキュリティとユーザー保護を強化する理由

ハードウェアを使用することで、暗号通貨のハッキングや盗難に資金がさらされる心配がなくなります。それは、秘密鍵をオフラインで維持するという単純なことです。

先ほど紹介したように、Ledgerのハードウェアウォレットは、暗号通貨の秘密鍵をオフライン、つまりインターネットから離れた「コールド」ストレージに保存するデバイスである。そして、ハードウェアウォレットから取引が行われたとしても、ハードウェアウォレットはオフライン環境で取引に署名します。そして、このプロセスにより、ユーザーの秘密鍵は常にインターネットにさらされないようにすることができます。Ledgerの詳細については、こちらのリンクをご覧ください。

すべてのハードウェアウォレットは非保管型ウォレットです。つまり、ユーザーが自分の秘密鍵と資金にアクセスできるのは、そのユーザーだけです。したがって、個人がハードウェアウォレットを使用する場合、その個人は自分の暗号通貨に関連する秘密鍵を持つことになります。これを読んでいるあなたが暗号を真剣に考え、そのような資産に対する(新たな)リスクを理解しているならば、この種のストレージが唯一の真に安全な選択肢であることが理解できるはずです。

現在、ハードウェアウォレットには多くの種類がありますが、その中でもLedger Nanoシリーズは圧倒的に安全性の高いハードウェアウォレットです。Ledgerは、なぜ彼らのハードウェアウォレットの使用を検討すべきなのか、かなり包括的な記事を提供しています。ハードウェアウォレットは、ユーザーが資金を完全にコントロールし、鍵をオフラインに保つことに加え、Secure Element(SE)と呼ばれる上位チップでユーザーの鍵を保護します。SEは、クレジットカード、パスポート、決済システム、暗号ハードウェアウォレットなど、さまざまなセキュリティ環境で使用されているコンポーネントで、機密データを管理するあらゆるシステムに対して最高レベルのセキュリティを提供することで知られています。

これは、秘密鍵をオフラインで(ハッカーから)守るだけでなく、Ledger Nanoデバイス自体も外部の脅威から完全に保護されることを意味します。

フローチャート

FunctionXの使用方法

現在、FunctionX アプリは f(x)Core, MarginX, Pundi X チェーン上のトランザクション署名のみをサポートしています。また、FunctionXアプリと対話するためのCLIツールを使用するには、当社のfxdexdバイナリのコピーも必要です。FunctionXがインストールされたので、Ledgerデバイスでどのように使用できるかの例をいくつか紹介します。

1. キーのインポート

指定された派生パスでインポートされた鍵のアドレスを確認します。Ledgerデバイスの同じシードフレーズを使用してアカウントがインポートされた場合、アドレスが一致するかどうかを確認することができます。CLIツールのfxdexdを使用して鍵をインポートし、FunctionXアプリで確認します。

# ledgerKey is the name of the key, which can be chose arbitrarily
# --ledger is the flag to interact with the Ledger device
# --acount is the flag for the account number in the BIP44 derivation path,
# and the value range is: 0 - 100 (Limitation of the Cosmos app)
fxdexd keys add ledgerKey --ledger --keyring-backend test --algo eth_secp256k1 --account 0

上記のコマンドを入力すると、Ledgerデバイスのトランザクションレビューが開始されます。

Ledger デバイスの右ボタンを押して取引の詳細を確認し、「APPROVE」が表示されるまで両ボタンを押してください。

CLIツールは、Ledgerデバイスのシードフレーズに由来するアドレスを返します。

f(x)Wallet のアドレスは、Ledger デバイスのアドレスと一致します。

2. MarginXでの取引署名

MarginX上の全ての資産はf(x)Coreからクロスチェーンされているため、ユーザーはまず蛇口からテストトークンを受け取り、MarginXのクロスチェーンブリッジを通して資産をクロスチェーンする必要があります。

テストトークン(f(x)Core-EVM USDT & f(x)Core FX)はこちらで入手できます。

Ledger のシードフレーズを f(x)Wallet アプリにインポートしてください。あなたのアカウントには、f(x)Coreチェーン上にUSDTがあることが確認できるはずです。

Ledgerデバイスのシードフレーズでアカウントをインポートする場合、「詳細オプション」を選択し、「m/44'/60'/i’/0/0」を選択してください。他の派生パスを選択した場合、同じアドレスは取得できないので注意してください。

f(x)Coreチェーン上のアカウント資産

MarginXの取引所ページを開き、f(x)Walletを連携させます。ウォレットを接続する」をクリックし、QRコードをf(x)Walletで読み取ります。f(x)Wallet上で接続の認証が求められますので、認証してください。

「Connect Wallet」をクリックすると、QRコードが表示されます。

f(x)Wallet で QR コードを読み取り、接続を確立してください。
MarginXに接続後、同じページで「Bridge」をクリックし、あなたのトークンをMarginXのいずれかのチェーンにブリッジさせます。ここでは、USDTトークンをMarginXのBTC/USDTチェーンにブリッジすることにします。

「Transfer」をクリックして、取引を開始します。

f(x)Walletには署名が必要です。

f(x)Wallet の「Sign」ボタンを押して、取引に署名・承認してください。取引が署名されると、MarginXのページに確認ポップアップが表示されます。

次に、取引状況を確認し、取引が正常に確認され、正しく実行されたこと、および取引の送信者のアドレスがLedgerデバイスに表示されているものと一致することを確認します。CLIツールで転送トランザクションを実行し、Ledgerデバイスでトランザクションに署名します。CLIコマンドの最後にノードRPCを指定し、適切なchain-idを必ず含めてください。

# Transfer transaction. After confirming on the CLI, sign the transaction on the Ledger device
fxdexd tx bank send ledgerKey 0x61bd2030908d658dd5a2139D2C13Af55b9138efb 10USDT --keyring-backend test --ledger --sign-mode "amino-json" --node "https://testnet-btc-json.marginx.io:26657" --chain-id "MarginX-Testnet-BTC"

コマンドを実行すると、CLI 上で確認が行われます。ヒット:”y”、続いて “return”(または “enter”)ボタンを押すと、トランザクションが確定されます。

次に、この取引はLedgerデバイス上で署名されます。取引内容を確認する際、ユーザーは、チェーンID、アカウント、シーケンス、取引の種類、取引額、from address、to address、取引手数料、ガス量を確認することができます。

ユーザーは、Ledgerデバイスの右ボタンを押すことで、取引の詳細を確認することができます。

これは、デバイスのシードフレーズに関連付けられたアドレスです。トランザクションの送信者のアドレスと一致します(次の画像参照)。

from_addressは、トランザクションの送信者のアドレスを表す。

Ledger デバイスの両方のボタンを押し、取引の承認と署名を行います。

Ledgerデバイス上でトランザクションが署名されると、CLIツールは次のようなレスポンスを返します。ユーザーはトランザクション ハッシュ(txhash)をコピーして、StarScanExplorerでトランザクションを表示することができます。

StarScan ExplorerでTX確認

Ledgerデバイスで取引に署名した後、ユーザーはCLIで返された取引ハッシュをコピーし、ブロックチェーンエクスプローラーで取引を見ることができるようになります。

FunctionXのアンインストール

Ledgerデバイスのアプリを削除するには、Ledgerデバイスをコンピューターに接続し、以下のコマンドを実行します。

# For Nano S:
make delete
# For Nano S Plus:
make deleteS2
# For Nano X:
make deleteX

Ledgerエミュレータと連動するサンプルテストコード

次は?

Function X や MarginX についてご存じなく、もっと知りたい方は、以下のリンクからぜひチェックしてみてください :)

f(x)Core ユーザーが Ledger Live から簡単にアプリをインストールできるように、FunctionX が Ledger Live のアプリカタログに掲載されるよう努力する予定です。FunctionXがLedgerに承認されたら、Ledger Liveからアプリをインストールする方法についてこの記事を更新しますので、お楽しみに

Support

Function X: https://functionx.io/

MarginX: https://marginx.io/

StarScan Explorer: https://starscan.io/

StarScan Forum: https://forum.starscan.io/

Function X on Medium: https://medium.com/functionx

Function X Foundation on Medium: https://medium.com/@functionx_io

Ledger: https://www.ledger.com/

Resources

FunctionX(FX)アプリケーションGithubリポジトリ:

Originally published at https://medium.com on December 5, 2022.

--

--