見出し画像

Nym Rust SDK update

新しいC/C++バインディングは、より深いBitcoin、Zcash、Firo統合などへの扉を開く。

Nym mixnetは、通信中のあらゆる種類のプライバシーインフラを簡単に利用できる強力なプラグアンドプレイの仕組みです。このmixnetはデータだけでなく、トラフィックをシャッフルすることでメタデータも保護し、あなたのインターネットの利用習慣を見えなくします。ただし、本当にプラグアンドプレイになるためには、mixnetがネイティブのRustコードベースの外部とも通信できる必要があります。

今、C++で書かれたプロジェクトは、Nym Rust SDKで利用可能な新しいインターフェース、つまりC/C++ bindingのおかげで、より簡単にNym mixnetと統合できるようになります。そして、Bitcoinのソースコードからlibbitcoin、Zcash、Firo、Signalメッセージングアプリの一部など、多くのプロジェクトにはC/C++コンポーネントがあります。

開発者の皆さん、これらのバインディングを試してみてください! C/C++デベロッパーがSDKと対話する方法のリファレンス実装例はこちらにあります。あなたのアプリケーションをmixnetに接続して、何ができるかを試してみてください。質問やフィードバックがあれば、Matrix/Elementでお知らせください

残りの皆さんにとって、これらのバインディングは何を意味するのでしょうか?詳しく見てみましょう。

なぜNymはC/C++バインディングが必要なのか?

NymスタックのバックエンドはRustで書かれています。Rustは優れた言語であり、他の言語が陥るメモリ関連の問題のクラスを完全に排除することを目指しているため、暗号、セキュリティ、プライバシーの分野でプロジェクトに採用されています。

ただし、インターネット全体のための一般的なネットワークレイヤを作成する際には、比較的新しい言語に頼ることが問題を引き起こす可能性があります。Rustの最初の安定版は、2015年にリリースされたからです。プロジェクトではさまざまな言語が使用され、これらがすべて互換性があるわけではありません。

理想的な状況では、すべてのものをRustで書いて、それをどこでも使用できるように交差コンパイルできるはずです。(これについてはUniFFIドキュメントのMotivation sectionを参照)。

ただし、この素晴らしい未来はまだ実現していません。そのため、チームは外部言語とのコードの相互運用性を可能にするためにForeign Function Interface(FFI)コードの作成に頼らざるを得ません。これは基本的に、ある言語のコードが別の言語のコードを呼び出すための翻訳メカニズムを作成するものです。

RustコンパイラはC++コードを理解できません。したがって、RustコンパイラにはC++側のコードの使用方法を伝える必要があります。バインディングは、このコミュニケーションを実現するための接着剤です。

Rustの素晴らしい点の1つは、他の多くの言語と同様に、C Application Binary Interface(ABI)を公開していることです。これはコンパイルされたコードと対話する方法を定義するものです。たとえば、Nymではこれがmixnetからの受信メッセージを待ち受けるプロセスを開始する関数を呼び出す方法、またはコードがメモリ内のデータを管理する方法(アプリケーションが後で使用するために受信メッセージやreplySURBsを格納する方法)などです。

これが重要なのはなぜで、ある頭字語(ABI)が他の頭字語(FFI)とどのように関連しているかはどうでしょうか?次のように:

「FFIは、異なるABIを持つ他の実行可能ファイルと対話するための言語が提供するユーザーコードインターフェースであり、FFIは異なるABI間の遷移レイヤーを形成します。」

From the Rust ABI wiki

Nym Rust SDKの更新


今週、Nym Rust SDKのいくつかのFFIバインディングの最初のバージョンが公開されました。

これにより、C/C++で書かれたアプリケーションは、これらのバインディングを使用してNym Rust SDKと対話することで、mixnetの機能を統合し始めることができます。開発チームは、開発者がmixnetを実験し始めるために必要な最初の機能をカバーしています:Nymクライアントの作成、メッセージの送受信。また、C/C++デベロッパーがSDKと対話する方法のリファレンス実装/例もあります。

これは、mixnetをサポートしていなかった開発者がNymのRusk SDKを使用できるようにするための重要なステップです。ぜひ試してみてください!

Nym Communityに参加

Discord // Telegram // Element // Twitter

Privacy loves company

English // 中文 // Русский // Türkçe // Tiếng Việt // 日本 // Française // Español // Português // 한국인

原文記事:


この記事が気に入ったらサポートをしてみませんか?