モバイル仮想通貨アプリを構築し、その安定性を確保する方法
現代の仮想通貨トレーダーはますますスマートフォンを主なツールとして選択しています - 業界のデータによると、取引の60%以上はモバイルデバイスを通じて行われます。これは、開発者が視覚的に魅力的なアプリだけでなく、完全に機能的で安全で高速な取引プラットフォームを作成することを要求します。
モバイル仮想通貨取引アプリケーションの構築は、ウェブインターフェイスをアプリケーションに移行するだけではありません。それは多くのニュアンスを持つ独立したエンジニアリングの課題です。
モバイル仮想通貨取引市場を形作る主要なトレンドは、以下を含む:
- Webからモバイルへの移行:インターフェイスはモバイルファーストデザインを採用しており、パフォーマンス要求は高まっています。
- Native experiences: apps must be fast, secure, and feel "native" to the operating system.
この記事では、CleverPumpkinのEVEDEXチームと開発者が、プラットフォーム間で統一されたビジネスロジックを維持するために、TypeScript SDK(オリジナルのWeb用に構築)をネイティブアプリにどのように統合したかを説明します。
Why We Choose SDK and the Challenges We Faced Why We Choose SDK and the Challenges We Faced 私たちがSDKを選んだ理由と私たちが直面した課題EVEDEX の Web バージョンでは、すでに Custom Exchange SDK、クライアント側の Exchange API を接続する TypeScript ライブラリを使用しています。
主要な目標は、すべてのプラットフォームで一貫した行動を確保することでした。当社の目標は、論理の重複を避け、バグの数を減らし、開発を加速させることでした。
しかし、SDKはTypeScriptで書かれており、当初はブラウザー外で使用するように設計されていませんでした。
「我々はすべての実装オプションを詳細に検討した。全体的な文脈を考慮して、完全なTypeScript SDKをネイティブアプリに統合しようと決意しました。これは我々にとって新しい領土でしたが、我々はこの異常な課題に対処する準備ができていました」
-Alexander Kiaykin、CTO of CleverPumpkin
「すべての実装オプションを詳細に検討しました。完全な文脈を考慮して、完全なTypeScript SDKをネイティブアプリに統合しようと決めました。
-Alexander Kiaykin, CTO of CleverPumpkin
Alexander Kiaykin, CTO of CleverPumpkin
最初のステップは、完全なJavaScriptエンジンをアプリに組み込むことでした。iOSでは、内蔵のJavaScriptCoreにアクセスしましたが、Androidでは、代替案を探さなければなりませんでした。LiquidCore
ネイティブコードからSDKとのスムーズな相互作用を確保するために、SDKとアプリケーションのビジネスロジック間のコミュニケーションを容易にするクロスプラットフォームウラッパーを開発しました。
我々が直面した課題:
我々が直面した課題: 我々が直面した課題:
- すべての JS エンジンが最新の ECMAScript 文法をサポートしているわけではありません: TypeScript トランスピレーション ターゲットをエンジンと互換性のある JavaScript バージョンにダウングレードする必要があります。
- すべての JS エンジンが最新の ECMAScript 文法をサポートしているわけではありません: TypeScript トランスピレーション ターゲットをエンジンと互換性のある JavaScript バージョンにダウングレードする必要があります。
- JS エンジンは、システム機能に直接アクセスできない: HTTP リクエスト、WebSockets、ネットワーク コミュニケーションなどのものは、ネイティブ コードで実装されなければならなかった。
- JS エンジンはシステム機能に直接アクセスできない: HTTP リクエスト、WebSockets、ネットワーク コミュニケーションなどのものがネイティブ コードで実装されなければならなかった。
その結果、SDKは変更されました。現在、ネットワークロジックのための外部インターフェイスを使用し、HTTPとWebSocketの相互作用はSwift/Kotlin側で処理され、処理ロジックはJavaScriptに残っています。最終的に、ビジネスロジックはSDK内に残り、低レベルのネットワーク操作はネイティブコードに委託されました。
Wallet Integration: Implementing Deposits and Withdrawals
Wallet Integration: Implementing Deposits and Withdrawals 仮想通貨取引所は、預金と引き出し機能なしで動作することはできませんでした。
ユーザーの利便性を向上させるために、ユーザーはLI.FIサービスを使用して、ネットワーク間の柔軟な資産転送のサポートを追加しました。LI.FI
- 資産を一つのネットワークから別のネットワークに転送します。
- ブリッジを手動で検索したり、クロスチェーン相互作用の複雑な論理を理解したりすることなく、わずか数クリックで行うことができます。
- 一つのネットワークから他のネットワークへの資産転送。
- わずか数クリックで、ブリッジを手動で検索したり、クロスチェーン相互作用の複雑な論理を理解したりすることなく。
- 価格/速度の好みに基づいて最適なオプションを選択します。
We intentionally chose to use WebView. Although the app is built using native technologies, and a separate JavaScript engine is used for SDK operations, WebView allowed us to quickly integrate the LI.FI interface without having to re-implement its UI natively. This enabled a consistent user experience across both web and mobile platforms and made it easier to update deposit functionality.
ウェブビュー
同時に、私たちはモバイル環境で暗号財布と作業するための具体的な点を考慮する必要がありました。 財布との接続と相互作用のために、私たちは EIP-1193 (Ethereum Provider JavaScript API)、これはアプリケーションがEthereum財布とどのように統合できるかを定義する標準です。EIP-1193(Ethereum Provider JavaScript API)
モバイルアプリは複数の接続方法をサポートしています:
- Via MetaMask
- シードフレーズまたはプライベートキーを使用して外部財布をインポートする。
- MetaMaskを通じて
MetaMaskを通じて外部の財布を シードフレーズ または プライベートキーを使用してインポートする。seed phrase プライベートキー.- アプリ内で新しい財布を作成します。
選択した方法に関係なく、アプリはデポジットページの財布プロバイダーとして機能することができるので、モバイルアプリ用の別個のシステムを構築することなく既存のウェブインターフェイスを再利用することができます。
NB*:現在の段階では、EVEDEXはEthereumに対応するネットワークのみで運用されているため、代替基準は検討されていません。NB NB Conclusion and Key Takeaways
Conclusion and Key Takeaways TypeScript SDK をネイティブのモバイル アプリに統合することは非伝統的で時には困難な作業であったが、すべてのプラットフォームで一貫した行動を確保し、論理の重複を排除し、エラーの数を減らし、開発プロセスを大幅に加速させることができた。
- Web SDKはモバイル環境に適応できますが、アーキテクチャの再考と適切な論理的分解が必要です。
- Web SDKはモバイル環境に適応できますが、アーキテクチャ的再考と適切な論理的分解が必要です。
- システムレベルの操作からビジネスロジックを切り離すことは、持続可能なアーキテクチャにとって不可欠です. In our case, the native code handles network operations and WebSocket communication, while the SDK focuses solely on business logic.
- システムレベルの操作からビジネスロジックを切り離すことは、持続可能なアーキテクチャにとって不可欠です. In our case, the native code handles network operations and WebSocket communication, while the SDK focuses solely on business logic.
- EIP-1193などの標準を使用すると、財布の互換性を維持し、実装を簡素化します。
- EIP-1193のような標準を使用すると、財布の互換性を維持し、実装を簡素化できます。EIP-1193
- ネイティブコード、JavaScriptエンジン、WebViewを組み合わせると、開発速度、柔軟性、ユーザーエクスペリエンスのバランスをとることができました。
- ネイティブコード、JavaScript エンジン、WebViewを組み合わせると、開発速度、柔軟性、ユーザー体験のバランスをとることができました。
「簡単ではなかったが、今ではTypeScript SDKをネイティブの暗号化アプリケーションに組み込む方法を正確に知っている。これは開発を加速させただけでなく、将来のための建築基盤も提供した」
-Vlad Komissarov、EVEDEXのCTO
「簡単ではなかったが、今ではTypeScript SDKをネイティブの暗号アプリに組み込む方法を正確に知っている。
— ウラド・コミサロフ、EVEDEXのCTO
— Vlad Komissarov, EVEDEXのCTO
EVEDEXモバイルアプリの開発は、もう一つの製品のリリースではなく、現在、仮想通貨の世界で非伝統的なソリューションを求める他のチームの出発点として役立つ真の技術実験でした。
Written by:
Written by:Written by:Vlad Komissarov、EVEDEXのCTO
Alexander Kiaykin, CTO of CleverPumpkin
EVEDEX の Web バージョンでは、すでに Custom Exchange SDK、クライアント側の Exchange API を接続する TypeScript ライブラリを使用しています。
主要な目標は、すべてのプラットフォームで一貫した行動を確保することでした。当社の目標は、論理の重複を避け、バグの数を減らし、開発を加速させることでした。
しかし、SDKはTypeScriptで書かれており、当初はブラウザー外で使用するように設計されていませんでした。
「我々はすべての実装オプションを詳細に検討した。全体的な文脈を考慮して、完全なTypeScript SDKをネイティブアプリに統合しようと決意しました。これは我々にとって新しい領土でしたが、我々はこの異常な課題に対処する準備ができていました」
-Alexander Kiaykin、CTO of CleverPumpkin
「すべての実装オプションを詳細に検討しました。完全な文脈を考慮して、完全なTypeScript SDKをネイティブアプリに統合しようと決めました。
-Alexander Kiaykin, CTO of CleverPumpkin
Alexander Kiaykin, CTO of CleverPumpkin
最初のステップは、完全なJavaScriptエンジンをアプリに組み込むことでした。iOSでは、内蔵のJavaScriptCoreにアクセスしましたが、Androidでは、代替案を探さなければなりませんでした。LiquidCore
ネイティブコードからSDKとのスムーズな相互作用を確保するために、SDKとアプリケーションのビジネスロジック間のコミュニケーションを容易にするクロスプラットフォームウラッパーを開発しました。
- すべての JS エンジンが最新の ECMAScript 文法をサポートしているわけではありません: TypeScript トランスピレーション ターゲットをエンジンと互換性のある JavaScript バージョンにダウングレードする必要があります。
- すべての JS エンジンが最新の ECMAScript 文法をサポートしているわけではありません: TypeScript トランスピレーション ターゲットをエンジンと互換性のある JavaScript バージョンにダウングレードする必要があります。
- JS エンジンは、システム機能に直接アクセスできない: HTTP リクエスト、WebSockets、ネットワーク コミュニケーションなどのものは、ネイティブ コードで実装されなければならなかった。
- JS エンジンはシステム機能に直接アクセスできない: HTTP リクエスト、WebSockets、ネットワーク コミュニケーションなどのものがネイティブ コードで実装されなければならなかった。
その結果、SDKは変更されました。現在、ネットワークロジックのための外部インターフェイスを使用し、HTTPとWebSocketの相互作用はSwift/Kotlin側で処理され、処理ロジックはJavaScriptに残っています。最終的に、ビジネスロジックはSDK内に残り、低レベルのネットワーク操作はネイティブコードに委託されました。
Wallet Integration: Implementing Deposits and Withdrawals
Wallet Integration: Implementing Deposits and Withdrawals仮想通貨取引所は、預金と引き出し機能なしで動作することはできませんでした。
ユーザーの利便性を向上させるために、ユーザーはLI.FIサービスを使用して、ネットワーク間の柔軟な資産転送のサポートを追加しました。LI.FI
- 資産を一つのネットワークから別のネットワークに転送します。
- ブリッジを手動で検索したり、クロスチェーン相互作用の複雑な論理を理解したりすることなく、わずか数クリックで行うことができます。
- 一つのネットワークから他のネットワークへの資産転送。
- わずか数クリックで、ブリッジを手動で検索したり、クロスチェーン相互作用の複雑な論理を理解したりすることなく。
- 価格/速度の好みに基づいて最適なオプションを選択します。
We intentionally chose to use WebView. Although the app is built using native technologies, and a separate JavaScript engine is used for SDK operations, WebView allowed us to quickly integrate the LI.FI interface without having to re-implement its UI natively. This enabled a consistent user experience across both web and mobile platforms and made it easier to update deposit functionality.
ウェブビュー
同時に、私たちはモバイル環境で暗号財布と作業するための具体的な点を考慮する必要がありました。 財布との接続と相互作用のために、私たちは EIP-1193 (Ethereum Provider JavaScript API)、これはアプリケーションがEthereum財布とどのように統合できるかを定義する標準です。EIP-1193(Ethereum Provider JavaScript API)
モバイルアプリは複数の接続方法をサポートしています:
- Via MetaMask
- シードフレーズまたはプライベートキーを使用して外部財布をインポートする。
- MetaMaskを通じて
MetaMaskを通じて外部の財布を シードフレーズ または プライベートキーを使用してインポートする。seed phrase プライベートキー.- アプリ内で新しい財布を作成します。
選択した方法に関係なく、アプリはデポジットページの財布プロバイダーとして機能することができるので、モバイルアプリ用の別個のシステムを構築することなく既存のウェブインターフェイスを再利用することができます。
NB*:現在の段階では、EVEDEXはEthereumに対応するネットワークのみで運用されているため、代替基準は検討されていません。NB NB
Conclusion and Key Takeaways
- システムレベルの操作からビジネスロジックを切り離すことは、持続可能なアーキテクチャにとって不可欠です. In our case, the native code handles network operations and WebSocket communication, while the SDK focuses solely on business logic.
- EIP-1193などの標準を使用すると、財布の互換性を維持し、実装を簡素化します。
- EIP-1193のような標準を使用すると、財布の互換性を維持し、実装を簡素化できます。EIP-1193
- ネイティブコード、JavaScriptエンジン、WebViewを組み合わせると、開発速度、柔軟性、ユーザーエクスペリエンスのバランスをとることができました。
- ネイティブコード、JavaScript エンジン、WebViewを組み合わせると、開発速度、柔軟性、ユーザー体験のバランスをとることができました。
「簡単ではなかったが、今ではTypeScript SDKをネイティブの暗号化アプリケーションに組み込む方法を正確に知っている。これは開発を加速させただけでなく、将来のための建築基盤も提供した」
-Vlad Komissarov、EVEDEXのCTO
「簡単ではなかったが、今ではTypeScript SDKをネイティブの暗号アプリに組み込む方法を正確に知っている。
— ウラド・コミサロフ、EVEDEXのCTO
— Vlad Komissarov, EVEDEXのCTO
Written by:
Written by:Written by:Vlad Komissarov、EVEDEXのCTO
Alexander Kiaykin, CTO of CleverPumpkin