ウォレットガイド / TERVO
仕組みを、
はっきり説明します。
このページは、外部レビューで「未開示」とされた実装上の質問に答えます。鍵の導出、暗号化、署名、ノード提供元、USDTでの手数料支払いとTRONエネルギーレンタルの仕組み、失敗時の扱いと返金です。アプリのソースコード(1.2.0)または2026年10月のメインネット試験で確認できる内容だけを記載し、まだ実施していないことも明記します。確認日:2026年10月13日。
ソースコード・監査・配布
ソースコードは公開しておらず、第三者によるセキュリティ監査も受けていません。アプリストアには掲載しておらず、このサイトからAPKで配布しています。iOS版はありません。確認できること:各リリースのAPKのSHA-256はダウンロードページに表示され、署名証明書のフィンガープリントは変わりません。正式版は当方のコンピューターで署名し、署名鍵はビルドサーバーにアップロードしません。アプリ内アップデートはHTTPSで取得し、SHA-256、パッケージ名、バージョン番号、署名証明書がインストール済みアプリと一致することを確認してからインストールします。
リカバリーフレーズと導出パス
リカバリーフレーズはBIP39に従い、追加パスフレーズは使いません(空)。新しいウォレットは英語または簡体字中国語の12語です。インポートは12・15・18・21・24語の英語フレーズと中国語フレーズに対応します。アドレスはBIP44に従い、EthereumとBNB Smart Chainは m/44'/60'/0'/0/n(両チェーンで同じアドレス)、TRONは m/44'/195'/0'/0/n を使います。nは0から始まるアカウント番号で、一般的なウォレットと同じ構成です。フレーズを復元すると、アカウント2以降の残高を確認し、空のアカウントが2つ続くと停止します。1つのウォレットは最大20アカウントです。簡体字中国語の単語リストはBIP39公式のもので、読み込み時にSHA-256を検証します。テストベクトルはTrezorが使う参照実装と一致し、ウェルカム画面で導出の自己チェックを行います。
端末内での暗号化
フレーズまたは秘密鍵は、ランダムな256ビットのデータ鍵でAES-256-GCM暗号化します。暗号化のたびにSecureRandomで新しい12バイトのnonceを生成し、認証タグは128ビットです。データ鍵は、アプリのパスワードからPBKDF2-HMAC-SHA256(12万回、ランダムなソルト)で導出した鍵で包みます。指紋ロック解除を有効にすると、使用のたびに強力な生体認証が必要で、新しい指紋を登録すると永久に無効になるAndroid Keystoreの鍵でもう一つ包みます。ファイル全体は、端末に紐づくエクスポート不可のAndroid Keystore鍵でさらに暗号化します。ファイルはバックアップ対象外のディレクトリにあり、システムバックアップも無効です。ハードウェアによる鍵保護の有無は端末によります。
署名、ノード、サーバーが見るもの
取引はスマホ上でTrust Wallet Core 4.8.4(オープンソース、Apache-2.0)により作成・署名されます。残高照会と署名済み取引は、Cloudflare Workers上の当方のプロキシを経由してAlchemy(Ethereum)、NodeReal(BNB Smart Chain)、TronGrid(TRON)に送られます。プロキシとこれらの提供元はIPアドレスと公開アドレスを見ることができます。プロキシは転送とレート制限のみを行い、プライバシーポリシーに記載のTRON有料注文記録を除き、リクエスト内容を保存しません。換算価格はOKX、KuCoin、Gate、Binanceの公開価格APIから取得します。当方のサーバーはフレーズ、秘密鍵、アプリのパスワードを受け取らず、あなたのアドレスから送金に署名することもできません。
Ethereum・BNB Smart Chain:USDTで手数料を払う
この方式はERC-2771のforwarderを使わず、トークンの承認(approve)も求めません。アドレスはEIP-7702でAlchemyのSemiModularAccount7702コントラクト(下表参照)に委任され、EntryPoint v0.7を通る1つのERC-4337操作で送金と手数料をまとめて実行し、ガスはAlchemy Gas Managerが支払います。2つの送金は一緒に成功または失敗するため、送金が失敗すると手数料はかかりません。署名前にアプリは手数料の受取先、上限額、委任先が許可リストにあること、コールデータを1バイトずつ確認し、ハッシュを自分で再計算します。手数料は署名前に確認画面に表示されます。ネットワークのガスが非常に高いときは利用できない場合があります。見積もりの有効期間はBNB Smart Chainが5分、Ethereumが1分です。委任はその後もアドレスに残り、他のウォレットではスマートアカウントと表示されたり変更されたりする場合があります。
TRON:USDTで手数料を払う
スマートコントラクトも承認も使いません。アプリはスマホ上で通常のUSDT送金を2つ署名します。手数料を当方のTRON手数料アドレスへ送るものと、あなたの送金です。サーバーは両方を1バイトずつ確認した後、GetBlockを通じて必要ならアドレスを有効化し(ごく少額のTRXを送付)、エネルギーと帯域幅を約1時間委任します。先に手数料をブロードキャストし、成功してからあなたの送金をブロードキャストします。手数料には有効化(必要な場合)、エネルギー、帯域幅と当方のサービス料が含まれ、署名前に表示されます。見積もりの有効期間は2分です。2つの送金は別々で、ブロードキャストの時期はサーバーが決めます。この点は当方を信頼していただく部分です。手数料がチェーン上に記録され、送金が最終的に成功しなかった場合は、確認後に手数料を支払元アドレスへ返金します(利用規約参照)。
TRON:エネルギーのレンタル
TRXを保有している方向けです。アプリは、当方のTRON手数料アドレスへのTRX支払いと、あなたのUSDT送金の2つに署名します。サーバーはまずGetBlockからエネルギーを借りてあなたのアドレスに委任し(1件あたり30,000エネルギー以上、約1時間)、次に支払いをブロードキャストし、支払いが成功してから送金をブロードキャストします。支払いが成功しなければ送金は送られず、料金もかかりません。費用(サービス料を含む)は署名前に表示され、同じエネルギーをTRXで燃焼するより安い場合にのみ提供します。帯域幅は含まれず、ネットワークのルールに従いご自身のTRXで支払われます(確認画面に見積もりを表示)。支払いがチェーン上に記録され送金が最終的に成功しなかった場合も、確認後に返金します。
メインネットでの実測
2026年10月、内部テスト用アドレスから実際のUSDTを使い、TRONの3つの支払い方法をメインネットで試験しました。USDT送金のエネルギー消費は、受取人がUSDTを保有している場合64,285、保有していない場合130,285で、1件ごとに帯域幅345も使いました。USDTでの手数料支払いとエネルギーレンタルでは、エネルギーのためにTRXは燃焼されませんでした。当時、受取人がUSDTを保有している場合の典型的な料金は、エネルギーレンタル約2.07 TRX(燃焼なら約6.4〜6.7 TRX)、USDTでの手数料支払い約1.84 USDT(送金元アドレスの有効化が必要な場合は約2.75 USDT)でした。BNB Smart ChainとEthereumのメインネットでも、USDTで手数料を払う送金をそれぞれ1件完了しています。これらは実測値であり固定価格ではありません。見積もりはネットワーク状況、TRX価格、提供元の価格で変わります。画面のスクリーンショットの金額は例示です。個々のテスト取引は掲載していません。
まだ実施していないこと
ソースコードは非公開。第三者セキュリティ監査なし。アプリストア掲載なし、iOS版なし。バグバウンティ制度なし(セキュリティの報告は [email protected] へ)。機能紹介が別の印象を与えないよう、これらをはっきり記載します。いずれかが変わった場合は、日付を付けてこのページを更新します。
確認できるアドレスとフィンガープリント
| EIP-7702委任先(許可リスト):Alchemy SemiModularAccount7702 | 0x77021100bd87b7008e5e1989d0eb38555d0d0000Etherscan · BscScan |
|---|---|
| EIP-7702委任先(許可リスト):Alchemy SemiModularAccount7702 旧リリース | 0x69007702764179f14f51cdce752f4f775d74e139Etherscan · BscScan |
| ERC-4337 EntryPoint v0.7 | 0x0000000071727De22E5E9d8BAf0edAc6f37da032Etherscan · BscScan |
| TRONのUSDTコントラクト | TR7NHqjeKQxGTCi8q8ZY4pL8otSzgjLj6tTronscan |
| APK署名証明書のSHA-256 | bec2a862c0a8b1963c5b7e08a08669dcbe877f7acccc36f455817742ac07a9f7 |
| BIP39簡体字中国語単語リストのSHA-256 | 5c5942792bd8340cb8b27cd592f1015edf56a8c5b26276ee18a482428e7c5726 |