Hive Global API Node Infrastructure DHF Proposal

in HiveDevslast month (edited)

What is this?

Currently, there are only a handful of public API nodes that are mostly based in Europe with one or two nodes being in North America.

My plan is to have global coverage with several servers located in different parts of the world.

I don't want to bother reading, give me a TL:DR!

Global HIVE API nodes, resulting in a faster, more stable and decentralized blockchain experience. Costs are 1650 HBD per month (55 HBD per day) and the proposal will continue for 180 days and reevaluated then. Please do read the proposal though.

Why should you support this proposal?

As a witness and node operator, I have been operating api.deathwing.me and have developed various other projects on Hive. Currently, taking the average DAU and traffic usage on api.deathwing.me it is safe to assume that it is one of the most popular API nodes on the blockchain.

While there are several other nodes, depending on the nodes' hardware and optimizations a node can perform better or worse. api.deathwing.me, as of the creation of this post runs on state of the art Ryzen 9 5950X with 128GB RAM. According to different tests and benchmarks, it is a fast, if not the fastest public API node currently out there.

However, there is one big caveat. The server is hosted in European data centers. What does this mean? It means that if you're living in North America, South America, Asia or Southeast Asia, you'll interact with the chain considerably slower due to latency. Since the node is located in the EU, your actions have to be routed. This will result in a "slower" experience while browsing the chain, broadcasting transactions and depending on your ISP and internet connection, even inability to do transactions from time to time.

This is not the only issue, unfortunately, majority of Hive nodes are located in Germany as well. Even looking further, we can observe that most of the witnesses and node operators run their nodes under one hosting company. While that hosting company has its reputation for being one of the most trusted datacenters/hosting company, as crackdowns on cryptocurrencies continue to increase, we'll never know what they'd think of Hive nodes later down the road. This is also a risk as any sudden downtime in their datacenter may result in nodes being unable to operate or forking off (this has happened before.)

If this proposal is funded, I will be looking to maintain and rent at least 3 servers (depending on the pricing) from 3 different server providers located on 3 different continents. The plan is to have one server in Europe, one server in North America and one server in Southeast Asia. By doing this, the blockchain becomes more decentralized and less prone to hosting company outages, whether deliberately or on accident. As well as providing a more stable and faster experience to the users.

All of these servers will be connected under one domain api.deathwing.me and it will be able to automatically detect your location from your IP address and re-route your connection to the nearest server. For example, if you are in the EU, you will be routed to the European node. If you are in Asia, you'll be rerouted to the Asian node. This will yield better performance in most cases due to low latency and less load per node.

In summary, having more servers in different parts of the world will result in a faster, more stable and more decentralized blockchain experience than ever before. Especially for users and future users in North America and Asia, where, unfortunately, we currently lack broad coverage in terms of low-latency nodes with high uptime and stable operation.

What happens if the proposal loses DHF support?

If there are funds in savings, they will be used to continue global coverage. In the worst-case scenario that there are no funds in the savings, api.deathwing.me will continue to operate under one server in Europe as it is now.

How much will you need for this and for how long?

At the moment, the proposal is for 55 HBD/day from DHF. This equals 1650 HBD per month spent from the Hive Fund. The proposal will run for 180 days initially. If funded throughout those 180 days, I am planning to recreate the proposal for another 180 days and will continue on.

What are the costs associated with this proposal?

Unfortunately, hardware costs are quite expensive. Even when the hardware is covered, colocation (having servers running 24/7 in a datacenter) is expensive as well. Especially in North America and Asia.

The plan is to have a budget of at least 350 HBD per month for each server in each continent. So basically, 350 HBD/m for the NA, 350 HBD/m for the EU and finally 350 HBD/m budget for the Asian server.

Out of the remaining 600 HBD, 300 HBD will be saved for emergency situations (such as the datacenter burning down and taking down all the servers with it,) backup servers before hardforks (in those cases, during hardforks, an additional fully-capable node will be on standby and switched to in a moments' notice if there are any problems and/or until the stability of the hardfork is confirmed) and finally long-term savings to look at potentially obtaining hardware and colocating it. The remaining 300 HBD is for maintenance and other costs such as GeoDNS load balancers and monitoring servers.

Vote For the Proposal

You can vote for this proposal on PeakD,

Hive.Blog / https://wallet.hive.blog/proposals
or Ecency

Feedback

Feedback is always welcome. Please let me know if you have any inquiries.

P.S.

I am also a witness on Hive! If you would like to support my endeavours feel free to vote me as a witness :)

Sort:  

I appreciate it.

IMHO our apps shouldn't depend on a third-party public API node. Each app should have its own API node.

I don't think we should charge the whole community for somebody's bot or script that may use one of these API nodes.

The public interfaces like hive.blog, peakd, and ecency should have their own API node. Which two of them, hive.blog and ecency, already have each an API node.

In the end, I'm not against it 100% but felt it's worth putting my opinion here.

Thank you for your comment and feedback :)

I do agree in terms of each app having its own API nodes for both stability and performance's sake. However, we have to consider the fact that it is not easy to maintain a global node network. Especially for apps. Currently, I believe all but one of the public nodes available are hosted in Europe. Setting up nodes in different continents and making them work together in an efficient manner is no easy feat (and is definitely not cheap).

Not to mention that it is important to give people more options to choose from. What happens if hive.blog API is down? What happens if ecency's API is down? Considering @blocktrades' website was hosted on OVH and the datacenter, literally, burnt down a couple of months ago... what if that was the DC API node was stored in.

If I write further, I'll probably go off-topic, but in summary, while apps can and should have their own nodes (not just social sites, all important apps should IMO, but it is important to note that not all apps are generating revenue or have DHF proposals to pay for global node infrastructure for itself) it is also important to offer third-party nodes for the sake of decentralization. A different node operator, a different server provider... a different continent altogether.

I agree on it too. That's the best for decentralization. Everything that's free, gets abused.

I think if dapps want an API node, they can also use some together.

I believe this is very important too. I'm about to start up my own API server for @podping because having used Hive for Podping over the last couple of months I've come to understand that the API servers are massively important and agree that significant Dapps should run their own API servers but the more decentralised options we have the better and API servers is the list on Hive that scares me the most from a centralisation and censorship point of view.

If I understand correctly, the Hive Application Framework work of the @blocktrades team is aimed at creating modularity so that each dapp can run its own much smaller node with only the modules they need. This should massively reduce the cost of dapps running their API nodes, and should massively help with decentralization.

I'm still struggling to understand exactly what HAF will do for me and for a dapp like @podping.

If you can explain it point to an explanation I'd be all ears. I wonder if this is something a podcast with @blocktrades might be good to do at this point now that HF25 has gone through.

A podcast with him sounds like an excellent idea and an opportunity to see what the HAF can do for podping and similar dapps.

More nodes by the person with the current best node, count me in.

(such as the datacenter burning down and taking down all the servers with it

Always have backups kids. Another datacenter by a different provider.

3-2-1 for all important stuff.

I'm considering it.

Estimated profit margin?

Also I'm not a fan of the portion of funds being set aside for emergency, though of course I do understand your reasoning. But it does say, in so many words, what's being offered could be done for that much cheaper. With no 'emergency', ever, over a long period of time, that's wasted money. I'd feel more comfortable supporting a proposal requesting the actual cost of emergency, in the event of an emergency, after the fact, once the emergency and costs have been established.

Profit margin?

If you're talking about funds I might be using for myself, it is the 300 HBD specified for maintenance and misc costs. Even then, since I am planning to use a CDN, GeoIP and load balancers assisted with extra smaller servers for monitoring. (and any additional costs, mostly recurring, that needs to be covered). The "profit" part for me is the remaining part of the "maintenance" budget, if I understood your question correctly.

Regarding emergency funds, I would like to note that it is not "solely" emergency fund. It's more of a "long-term" fund that will be used in cases of emergency. If the proposal gains enough support and is funded for the next 6 months, that'd be 1800 HBD in savings on the side. (Potentially accruing interest in savings account on Hive as well) Hopefully, these funds then can be used in actually purchasing a strong and performant enough to run a populated API node. As a result, the only thing that would be "outsourced" is the colocation in a datacenter.

Yes, the portion you've planned to place in savings in order to earn interest on immediately stood out in my mind as something that can be deducted from the cost of the services you intend to provide. Had a 'hunch' long before you even mentioned it here in your response, money moving to that fancy new savings account would be the case, since it's right there, hidden in between the lines like that, looking all cute.

Someone else now can come along and offer the exact same thing for much cheaper, and probably still take home a reasonable profit percentage (which is normal and totally cool with me if it's reasonable). So if I had a choice, I'd choose them, especially if I was offered precision when it comes to these numbers, since those numbers/costs are the only thing that matter.

Wouldn't it be great if we saw more competition like that here when it comes to these contracts? You know just as much as I do someone could come along and give you the ole undercut.

Don't take this personally though, please. Strictly business.

This is not a, "No."

I'll think about it.

I like the idea of having a more decentralized infrastructure. I have no idea how much this type of operation actually costs to run. Unfortunately I can’t comment on whether or not you are asking for too much HBD. I guess it’s only too much if someone else offers to do the same thing and asks for less.

As of now, which nodes are based in USA?
I guess I’m asking which one would be the best for me to use in terms of latency

api.hive.blog is the only one I know in North America(its in Canada). Don't know of any in the US.

Ok thanks a lot for the info!
That’s pretty crazy to think about.

US based hosting is extremely expensive. I've been looking for a good cheap provider so I could start my own US node for a while and the price always comes out to 3x what I'd be paying hosted elsewhere for something similar, or the network speed is insanely bad.

LOL. Sup daltano. Was this response intended for someone else?

Yup. After some digging and sleuthing, along with some careful consideration, fuck yeah, I'll support this.

Good luck with your proposal.

Thank you for the support, and regarding your comment about other people doing it, even for cheaper... I hope they will.

More people hosting public nodes all around the world, accessible for people and projects that are unable to generate revenue (and afford a node thereof) can freely make use of the nodes closest to them provided by witnesses and/or apps they trust.

More nodes are always better, different people operating them, is also better.

Yeah. I speak the language around here and know exactly where you're coming from.

Thank you.

Are you thinking about throwing a server in south-america?

With proper networking, peering and routing between North America and South America, (in layman's terms, the quality of internet between NA and SA), the latency from South America is not as bad as let's say Asia > NA or Asia > Europe.

Nevertheless, that's a possibility for sure.

supported! This is key for the future of Hive 👌

Thank you :)

My witness node API is open to whoever wants to consume Hive data, need further testing, but I am here to help, and I prepaid for 1 whole year so I kinda don’t have to worry about making more money to pay it for 1 year.
Want to use? Go ahead..

Click here and vote me for witness


https://hivesigner.com/sign/account-witness-vote?witness=igormuba&approve=1

What's the URL for your node?

P.S. You can allow hivesigner & keychain votes with this link > https://vote.hive.uno/@igormuba

I am still learning how to be a good witness, so if you have suggestions, I thank you very very much! I am following you and chose you as one of my witnesses, hope I can learn a thing or two from more experienced ones.

My node does not have an URL (yet!)
But the IP is 178.18.249.76

So as far as I understood anyone can consume data from the blockchain using it at the port 2001 so:
178.18.249.76:2001

I just tried it out and it seems to be rejecting connections...

image.png

I'm guessing since it's an outright reject it could be a firewall issue?

~ CA

that is unexpected, I checkew with ufw status and the port 2001 is supposed to be open

ufw.cleaned.jpg

do you have any suggestion of what could it be solved, and files, configs and stuffy I should check and what/how they should be set at?

thanks

If you check inside your config.ini file, there should be a line stating what plugins are enabled. What plugins are enabled on this box?

Things went bad very very quickly, I did add just now the p2p string on the plugins line and now I can't turn the witness on, I can't replay it and can not force it to open

_2021_07_03_at_13.17.31.jpg

I imagine if it wasn't enabled from the start, you'd need to replay it in order to enable more plugins, but @deathwing would probably be more knowlegeable here than me.

I only run a regular witness node, so I have not enabled any extra plugins. Also, if this is your regular witness node I would not recommend adding additional plugins as it may make you miss blocks if it is hit with a lot of requests.

If you disable the plugins (that you added) it should run again afaik.

South America is important, there are many many Venezuelans using hive, but no powerful and open API nodes here in South America....

Supported.
Nodes are really key things for dapps to perform better.
We need to attract more devs as well so they can use these utilities and build more.

The more nodes and the more geographically spread the better.
We also need more individuals creating nodes to spread the decentralisation of the network.

Is it just me or there is someone else who voted before reading the whole proposal? ;)

Done @deathwing. It's not much but I hope it helps. Let's make the chain more decentralized.

Congratulations @deathwing! You have completed the following achievement on the Hive blockchain and have been rewarded with new badge(s) :

Your post got the highest payout of the day

You can view your badges on your board and compare yourself to others in the Ranking
If you no longer want to receive notifications, reply to this comment with the word STOP

Check out the last post from @hivebuzz:

Feedback from the July 1st Hive Power Up Day - ATH Volume record!

what is the reason there a less in north America?

How many are in Asia?

A list would be super cool to with the placement :)

It's a lot more expensive in NA than in europe(same in Asia). I don't know of any public full nodes in Asia.

If we consider that financial resources are scarce (when aren't they?), then choosing their allocation carefully is paramount. As Michael Porter said, "Strategy is choosing what NOT to do".

I believe the highest priority of the Hive community is currently to develop attractive and highly functional front-ends and use them to increase the number of daily transacting users.

I would support a proposal for developing and running a proper search engine on Hive content for instance.

Do you like ecency one?

Yes, ecency is nice but the search functionality doesn't work (at least on mobile) which is a boomer

Hummm that's strange... it works for me... pretty well. Which RPC node are you using?



The rewards earned on this comment will go directly to the person sharing the post on Twitter as long as they are registered with @poshtoken. Sign up at https://hiveposh.com.

Can you look at teaming up with theta edge nodes?
Perhaps we can stream our data through their mesh net and get paid for doing so.
If this were possible we could have nodes literally everywhere.

Im already proxied to you in voting can I delegate my unused HP to you or to this proposal to help out more?

Thanks a lot for the support. Nope, delegating unused HP won't change anything. However, you can always get the word out :)

With 55 HBD this is quite ok for me, although I will support this one, I think the best would be for individual witnesses to come up with the same strategy all along.

Until blockchain databases becomes decentralized, this is going to always be a problem of blockchain technology (with big databases).

There will be needs to start looking at decentralized databases in the near future, and that's what I will fully support (including becoming witness if by then I still have my gear).