cculianu / Fulcrum

A fast & nimble SPV Server for BCH, BTC, and LTC
Other
331 stars 76 forks source link

HTTP interface to Fulcrum methods #170

Open mainnet-pat opened 1 year ago

mainnet-pat commented 1 year ago

We already have TCP (node only), WS (node+browser). Both require sophisticated software like elecrum-cash.

How about the simplest thing in the world of web - namely http way to issue direct requests to Fulcrum.

I understand, that subscriptions will not do any good with http, but SSE (server sent events) are also http only tech for subscriptions worth to evaluate.

I am aware that Chris Troutner offers his REST wrapper around Fulcrum, but it is an extra hosted dependency and is inferior towards my proposition.

cculianu commented 1 year ago

I definitely would like to support regular http. Currently Fulcrum does have an http/1.1 implementation internally. I am going to write down my thoughts on this here so that they are not lost. And maybe a curious reader can chime in with some solutions to the problems I will outline below with doing this. Basically, there are some engineering challenges associated with supporting HTTP though. As per the RFC for HTTP/1.1 https://datatracker.ietf.org/doc/html/rfc9112...

Anyway these are my thoughts on the topic. It's an onion and while seemingly an easy addition to Fulcrum, it does require more investigation and research to implement, sadly.

It may ultimately require HTTP/2 which ... is complicated and IIRC isn't even a fully accepted specification even now in 2023 (even though in practice it basically is accepted since all browsers support it). :(

mainnet-pat commented 1 year ago

what if we restrict http version of fulcrum to http v1 and do not support subscription methods? also initial protocol version negotiation can be done with http headers.

I've been asked about "BCH official json rpc" once again