Skip to content

Raspberry Pi PicoでNostrの電子署名を行い、Rust経由でリレーサーバーに送信するためのプロジェクト

License

Notifications You must be signed in to change notification settings

moyashi170607/nos_pico

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

3 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

nos_pico

Raspberry Pi PicoでNostrの電子署名を行い、Rust経由でリレーサーバーに送信するためのプロジェクトです。

概要

このプロジェクトは、秘密鍵をPC上のメモリに展開せず、外部ハードウェア(RP2040)内で安全に署名処理を行うことを目的としています。

いわばNIP-07のハードウェア版です。

  • Pico (C++): シリアル通信で受け取ったデータに対して、Schnorr署名等の電子署名を行い結果を返します。
  • Host (Rust): Nostrプロトコルを扱い、Picoとのシリアル通信およびリレーサーバーとのWebSocket通信を管理します。

プロジェクト構造

NOS_PICO
├── nos_pico_hard/      # ハードウェア側Pico SDK (C++) プロジェクト
│   ├── nos_pico_hard.cpp  # メインロジック(シリアル待機・処理)
│   ├── nostr_sign.cpp     # 署名ライブラリの呼び出し
│   └── CMakeLists.txt     # ビルド設定
└── nos_pico_rust/      # ホスト側 (Rust) プロジェクト
    ├── src/               # Rustソースコード
    └── Cargo.toml         # 依存関係(serialport, tokio-tungstenite等)

ビルド手順

git clone --recursive https://github.com/moyashi170607/nos_pico.gitでソースコードを取得した後、以下の手順でビルドを行う。

RP2040

  1. cd nos_pico_hardでディレクトリを移動
  2. touch config.hppconfig.hppを作成
  3. config.hppの内部を以下のように書き換える
#ifndef CONFIG_NOSTR_KEY
#define CONFIG_NOSTR_KEY 1

#include <stdint.h>

const char* seckey_hex = "あなたの秘密鍵をhex形式で書く";

#endif  // !CONFIG_NOSTR_KEY
  1. picoSDKを用いてビルドする。
  2. 生成されたbuild/nos_pico_hard.uf2をRaspberry Pi Picoに書き込む

ホスト側(Rust)

  1. cd nos_pico_rustでディレクトリを移動
  2. cargo build --releaseでビルド
  3. target/release/nos_pico_rust.exeが生成される

使い方

  1. nos_pico_hardのビルド結果を書き込んだRaspberry Pi Picoを接続
  2. nos_pico_rust.exeと同じ階層のディレクトリにconfig.tomlを作成
  3. config.tomlを以下のように書き換える
relays = [
    "接続するリレーサーバーのwssリンク",
    "接続するリレーサーバーのwssリンク2",
    "接続するリレーサーバーのwssリンク3",

]

port_name = "マイコンを接続しているポートの名前"

  1. nos_pico_rust.exeをターミナルで実行する
  2. リレーサーバーとの接続等が終わり、公開鍵が表示、投稿内容を入力してくださいの表示が出る
  3. 投稿したい内容を入力
  4. マイコンで設定した秘密鍵で署名後、リレーに送信される
  5. その後も、投稿した内容を入力するごとに投稿される。

コントリビュート

issue, PR どちらも大歓迎です。

謝辞

本プロジェクトでは、picoSDK、Bitcoin Core開発チームのsecp256k1、Rustの各種crateなど、様々なライブラリを用いております。 これらの開発者および、Raspberry Pi財団に感謝します。

License/免責事項

本プロジェクトはMIT Licenseに従って公開されています。詳しくはLICENSEをご覧ください。

また、本プロジェクトはNostrの秘密鍵という非常に高い機密性が求められるものを取り扱います。 本プロジェクトの利用は自己責任でよろしくお願いします。 万が一漏洩などがあった場合は当方は責任を負いかねます。

About

Raspberry Pi PicoでNostrの電子署名を行い、Rust経由でリレーサーバーに送信するためのプロジェクト

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published