Dshackle and Rosetta

Hi Patrick,

You have a great project here. I’m also working on something similar, it’s called Emerald Dshackle: https://github.com/emeraldpay/dshackle

It seems that we’re solving a very similar problem but in different ways. Dshackle is more like Fault Tolerant Load Balancer for blockchain APIs, with an additional layer for unification. Like a unified way to get balances and other details. Designed for Ethereum and Bitcoin, though still in early development.

Since it’s kind of similar projects, maybe it would be useful to be in touch, discuss insights, etc. Perhaps we can collaborate in some way. Or maybe the projects could be used together, on different layers. What do you think?

:wave: @splix

Took a brief look at the link you shared! Seems like the best integration would be for your project to live on top of running Rosetta API implementations (treating them the same way you treat Ethereum or Bitcoin APIs).

Do you have publicly available endpoints for your project or is this something individuals would run on their own?

Yeah, I was thinking about some setup on top of Rosetta, that may make sense. Like we connect to Blockstream Electrs to fetch balances and tx history. I’m just not sure what’s your plan with Ethereum and Bitcoin, and what we can use. Or maybe other way. So I hope we can start a conversation here, and we’ll what we can do.

We have an endpoint available for our services, which is kind of public but we just don’t tell others :slight_smile: also there is https://archivenode.io/ which is built on top of Dshackle, but it doesn’t provide the enhanced API, only standard Ethereum JSON RPC methods.

In general, I developed it for our own needs, but I see others having the same problem so I open sourced the code and expect people would run it on their own servers.

We just released our Bitcoin implementation of Rosetta last week! We are currently working on a rosetta-ethereum but we still have a little ways to go there.

We do not provide any “hosted” access to Rosetta implementations at the moment (i.e. Infura), so you would need to run any implementations locally.

To get started, I’d recommend creating a Rosetta SDK in Kotlin (the language your project is written in). We use openapi-generator in rosetta-sdk-go to generate an SDK for us (I believe Kotlin is supported). It should then be trivial to integrate with any Rosetta implementation with this shared SDK.