An `elementsd`-compatible fork of `corepc` for unified RPC client support
まだ誰も着手していません。
評価
調査の方向性
まず corepc インターフェースと提案に記載された Elements 固有のメソッドを比較し、その後、クライアント処理が重複している例として liquid-functionary の rpc.rs を読みます。共有型とバージョニングを扱う方法として、fork と拡張 crate のどちらが最適かを判断します。elementsd 互換の RPC クライアントが、必要な差分メソッドと Elements-only メソッドを保守可能なバージョニング方式でカバーできれば完了です。
索引モデルが issue の本文から書いたものです。
説明
Background
The rust-bitcoin ecosystem has converged on corepc as a unified library for managing RPC communication with bitcoind. It provides versioned, type-safe client bindings for Bitcoin Core's JSON-RPC interface and is actively maintained alongside rust-bitcoin itself.
rust-elements currently has no equivalent. Downstream projects that need to talk to elementsd end up writing their own ad-hoc RPC clients on top of jsonrpc. For example, liquid-functionary maintains its own rpc.rs. This is duplicated effort, and the resulting clients tend to lag behind upstream changes, cover only the methods each project happens to need, and have inconsistent type definitions.
Proposal
Create an elementsd-compatible fork (or sibling crate) of corepc that:
- Keeps all the common parts of
corepcunchanged. TheelementsdRPC surface is largely a superset ofbitcoind's — the majority of methods are either identical or close enough thatcorepc's existing types can be reused directly. - Overrides the subset of methods that differ. Some Bitcoin Core methods return different or extended data on
elementsd(e.g. anything involving amounts/assets, blinded outputs, or pegged-in coins). These need Elements-specific response types. - Adds the Elements-only methods. Things like
getsidechaininfo,getpeginaddress,claimpegin,rawblindrawtransaction,issueasset,listissuances, asset/token RPCs etc. would need to be added.
Structurally, this could be done either as
- A fork of
corepc - A separate crate that depends on
corepcand re-exports/extends its types
Open questions
- Fork vs. extension crate: I am not sure which is easier to maintain?
- Versioning is a little tricky as in
corepcthere are versions of the interface that track the Bitcoin releases and Elements also tracks the Bitcoin releases but also has its own versions.
- 主要言語
- Rust
- スター
- 57
- フォーク
- 40
- 平均マージ
- 11時間 58分
- マージ済み PR(30日)
- 1
コントリビューションガイド
このリポジトリのコントリビューションガイドは索引されていません
はじめの一歩
- issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
- 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
- リポジトリをフォークし、ブランチを切って変更します。
- issue 番号を参照したプルリクエストを送ります。
ElementsProject/rust-elements のほかの issue
-
難易度 3/5 1〜2日 初心者へのやさしさ 45/100
ElementsProject/rust-elements#290 · コメント 1 件 ·
-
難易度 5/5 1週間以上 初心者へのやさしさ 25/100
ElementsProject/rust-elements#277 ·
-
難易度 5/5 1週間以上 初心者へのやさしさ 30/100
ElementsProject/rust-elements#273 · コメント 3 件 ·
-
難易度 3/5 1〜2日 初心者へのやさしさ 52/100
ElementsProject/rust-elements#262 · コメント 2 件 · リアクション 1 件 ·
-
難易度 5/5 1週間以上 初心者へのやさしさ 35/100
ElementsProject/rust-elements#260 · コメント 1 件 ·
ElementsProject/rust-elements の issue をすべて見る
似ている issue
-
難易度 2/5 1〜3時間 初心者へのやさしさ 85/100
-
難易度 2/5 1〜3時間 初心者へのやさしさ 84/100
Eynzof/Hermes-CN-Desktop#610 ·
-
bug team:backend track:services-maintenance
難易度 2/5 1〜3時間 初心者へのやさしさ 78/100
cowprotocol/services#4950 ·
-
bug
難易度 2/5 1〜3時間 初心者へのやさしさ 68/100
gitbutlerapp/gitbutler#15998 · コメント 1 件 ·
-
bug triage:deciding
難易度 1/5 1時間未満 初心者へのやさしさ 88/100
open-telemetry/otel-arrow#4132 ·