NEAR for Backend Developers: あなたのスキル、分散化

1 min read

NEAR Protocol is a decentralized application platform that is secure, scalable, and developer-friendly. It allows developers to build applications on the blockchain using smart contracts. NEAR Protocol uses a proof-of-stake consensus mechanism to secure the network and validate transactions. Developers can use the NEAR SDK to easily create and deploy applications on the platform. With NEAR Protocol, users can interact with decentralized applications using their NEAR Wallet.

導入
バックエンドを構築している場合、APIの設計、状態の保存、ユーザーの管理方法はすでにわかっています。 NEARプロトコルを使用すると、これらのスキルをそのまま使えます。ただし、自分のサーバーではなく分散ネットワーク上で行います。NEARは「ホストする必要のないバックエンド」と考えてください。ビジネスロジックはスマートコントラクト(ミニプログラム)で実行され、データはネットワークによって管理される複製ストアに格納され、ユーザーのアイデンティティはパスワードではなく暗号技術で検証されます。このレッスンでは、おなじみのバックエンドのアイデアをNEARのコンセプトにマッピングし、シンプルなTwitterスタイルの例を実行し、読み取りと書き込みの動作を示します。最後まで行くと、Web2からNEARに移行することは、再発明ではなく適応であることがわかります。


分散バックエンドとしてのNEAR

自分でメンテナンスしないグローバルクラスターで実行されるサービスを展開していると想像してください。それがNEARです。アプリケーションは独自のコードとデータを持つアカウント(例:twitter-app.yourname.near)であり、独立したバリデータ(ネットワークノード)がそのデータを複製して利用可能に保ちます。ユーザーがインタラクトすると、ネットワークは通常約1〜2秒で最終的な合意に達します。

ジャーゴンチェック

  • バリデータ: NEARソフトウェアを実行し、コントラクトを実行し、合意に参加するノード。

  • 最終性:変更が確定し、元に戻せないポイント。


アプリケーションの状態:名前空間と複製

NEARでは、各アプリのデータはそのアカウントにスコープされています。専用のデータベーススキーマや名前空間のようなものです。

  • 隔離された状態: あなたのコントラクトコードだけがアプリのキー値ストレージを変更できます。

  • 監査トレイル: すべての変更はチェーン上に記録され、変更不可能な検証可能な履歴が作成されます。

  • 高可用性: 多くのバリデータがあなたの状態を保存し提供します。一部がオフラインになっても、アプリはアクセス可能です。

  • 高速な最終的な整合性: リクエストが処理され、合意が形成され、約1〜2秒で新しい状態がネットワーク全体で確定します。

アナロジー: マルチリージョンの書き込み複製とオフにできない監査ログが組み込まれたクラウドデータベースを考えてみてください。


バックエンドロジック:スマートコントラクト(Wasm)

ビジネスルールは、WebAssembly(Wasm)にコンパイルされた小さなプログラムであるスマートコントラクトに格納され、アプリのアカウントの下に保存されます。

  • 言語オプション: パフォーマンスと安全性のためにRustが最も一般的な選択肢です。JavaScript/TypeScriptは、WasmにコンパイルするNEARのツールを介して使用されます。[明確にする:Rustのみを強調するか、near-sdk-js/TypeScriptを明示的に含めるかを確認してください。]

  • サンドボックス実行: Wasmは効率的であり、バリデータ上で安全で決定論的な環境で実行されます。

  • 明確な境界: 各コントラクトは独自の状態を管理し、クライアントが呼び出す関数を公開します。

ジャーゴンチェック

  • スマートコントラクト: ブロックチェーン上で実行されるバックエンドコード。

  • WebAssembly(Wasm): 高速でポータブルな実行のためのバイナリ形式。


アイデンティティと認証:暗号技術をデフォルトで使用

NEARはパスワードの代わりにアカウントデジタル署名を使用します。

  • トランザクション: 任意の書き込み(状態変更)は、NEARアカウントからの署名付きトランザクションです。

  • 誰が呼び出したか?: コントラクト内では、predecessor_account_idは、どのアカウントが関数をトリガーしたかを示します。これは、検証済みトークンからユーザーを読み取るのと同様ですが、暗号技術で裏付けられています。

  • アクセス制御: 「このアカウントだけがツイートを削除できる」といったチェックを、呼び出し元のアカウントIDを使用して構築します。

アナロジー: ログインサーバーなしでJWTのようなものです。アイデンティティはプラットフォームに組み込まれています。


シンプルなTwitterスタイルの例(概念)

ツイート { id, author, text, timestamp, likes } をモデル化するとします。

  • 書き込みメソッド(状態変更):

    • post_tweet(text): ツイートを作成し、author = predecessor_account_id です。

    • like_tweet(id): いいねカウンターを増やします。

    • delete_tweet(id): ツイートの著者だけが削除できます。

  • 読み取りメソッド(ビュー):

    • get_tweet_by_id(id)

    • get_all_tweets(from, limit)

    • get_tweets_by_author(author, from, limit)

デザイン的には、「シンプルでインデックス付きのアクセスパターン」を考えてください。複雑なアドホッククエリ(結合など)はコントラクト内に存在しないため、その点を考慮してデータ構造とイテレータを計画します。

Updated: 9月 26, 2025

コメントする


To leave a comment you should to:


Scroll to Top