An `elementsd`-compatible fork of `corepc` for unified RPC client support
Nessuno ha ancora preso questa issue.
Valutazione
- Difficoltà
- 5/5
- Tempo stimato
- Più di una settimana
- Idoneità per principianti
- 35/100
Direzione di ricerca
Inizia confrontando l'interfaccia corepc con i metodi specifici di Elements elencati nella proposta, quindi leggi rpc.rs di liquid-functionary come esempio del lavoro duplicato del client. Decidi se un fork o una crate di estensione gestisce meglio i tipi condivisi e il versionamento. Il lavoro è completato quando un client RPC compatibile con elementsd copre i metodi differenti richiesti e i metodi Elements-only con un approccio al versionamento manutenibile.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Descrizione
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.
- Lingua principale
- Rust
- Stelle
- 57
- Fork
- 40
- Merge medio
- 11h 58m
- PR unite (30g)
- 1
Guida per i contributori
Nessuna guida per i contributori indicizzata per questo repository
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Altre issue di ElementsProject/rust-elements
-
The Fuzz workflow is failing Aperta
Difficoltà 3/5 1-2 giorni Idoneità per principianti 45/100
ElementsProject/rust-elements#290 · 1 commento ·
-
Difficoltà 5/5 Più di una settimana Idoneità per principianti 25/100
ElementsProject/rust-elements#277 ·
-
Difficoltà 5/5 Più di una settimana Idoneità per principianti 30/100
ElementsProject/rust-elements#273 · 3 commenti ·
-
Difficoltà 3/5 1-2 giorni Idoneità per principianti 52/100
ElementsProject/rust-elements#262 · 2 commenti · 1 reazione ·
-
Difficoltà 5/5 Più di una settimana Idoneità per principianti 35/100
ElementsProject/rust-elements#260 · 1 commento ·
Tutte le issue di ElementsProject/rust-elements
Issue simili
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 84/100
Eynzof/Hermes-CN-Desktop#610 ·
-
bug
Difficoltà 2/5 1-3 ore Idoneità per principianti 68/100
gitbutlerapp/gitbutler#15998 · 1 commento ·
-
bug triage:deciding
Difficoltà 1/5 Meno di un'ora Idoneità per principianti 88/100
open-telemetry/otel-arrow#4132 ·
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 88/100
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 84/100