scrobble.life
#sps

Proposal: Funding for anyx.io API Infrastructure Recurrent Costs

TL;DR: This proposal seeks to help reimburse the recurrent costs of the public, free-to-use anyx.io Steem API infrastructure. If you use sites or services such as Busy.org, Splinterlands (SteemMonsters), Partiko, or many more — these services rely on this infrastructure for both uptime and performance.

Motivation

API services play a crucial role in the Steem ecosystem. As just recently seen with the previous hard forks — without an API node, it doesn’t matter much if the chain is live if you can’t use it.

All software and services that interact with the Steem chain do require an API node. However, with heavy reliance on Steemit Inc’s nodes, we can see excessive downtime when things go wrong. It does not make for a very decentralized chain to have only one single point of failure and only one good option for public API access -- this is the antithesis of Blockchain ideology.

While others do provide public API nodes, many are configured without all available plugins, do not support high throughput, do not offer good uptime, or are otherwise held back. However, the anyx.io node has already proven itself to be robust, and has recently expanded throughput capabilities.

Timeline

This proposal is set for one year, though the intent will be to continue operation as long as possible. By having a renewal proposal in the future, I can re-evaluate expansion or contraction if needed.

Funding Rationale

The recurrent costs for the infrastructure — namely datacenter hosting — sum totals approximately $450 per month, or about $15 per day. Notably, this proposal does not aim to cover the already-spent hardware costs, which have exceeded $30,000.

The Software Configuration

The current stack in the infrastructure is: 2x Full steemd instances 3x Light steemd instances 3x Hivemind instances Supplementary custom API instances (e.g. Vessel wallet support)

The Hardware Infrastructure

The current stack of hardware is as follows:

2x “Heavy”:

  • 512GB DDR4 RAM
  • 8-16 core Xeon
  • 1-2 NVME drives
  • 1 OPTANE drive
  • 1-4 SSD drives
  • 1 Gigabit public ethernet

3x “Light”:

  • 64GB DDR4 RAM
  • 4-8 core Xeon or i7
  • 1-2 NVME drives
  • 1 Gigabit public ethernet

Configuration Philosophy

Hosted hardware is owned, not rented. Sure, additional software services (reverse proxy & ddos protection) are "cloud", but these are agile around the back-end owned hardware.

The nodes were custom built with Steem APIs in mind, ensuring a balance of high frequency cores for single threaded tasks (e.g., valiating transactions), with sufficient core count to handle large throughput. Drives are high-end NVME or Optane to ensure low-latency for each request, with sufficient storage available for elements like account history and communities data (hivemind). Due to the high volume of fast storage, this is one of the few nodes that actually offers account history (including get_transaction) support in full.

While originally starting with one "Heavy" node, a second was purchased and installed to ensure backup and redundancy is available. This enables stronger uptime guarantees, as even during crash or failure of one, requests can still be served while recovery takes place. In addition, this enables asynchronous backups that do not interrupt service.

Why not Witness pay?

I have previously been funding this infrastructure costs out of my witness pay. However, with the growth and desired scale-out to ensure satisfying the public demand, operational costs now exceed 25% of a current top 21 witness pay. No other witness offers infrastructure at this level -- the only other entity that can handle heavy public requests is Steemit Inc.

This funding does not seek to reward myself, it is targeted to fund what I believe to be a "public good". The SBD from this proposal will be sold to cover costs.

There have been many debates around whether or not API access should be privatized or offered by organizations to be paid for. Philosophically, I believe API access should be public and freely available -- enabling developers to quickly build and test applications and provide value to the ecosystem, without having to deal with infrastructure woes. The SPS system offers a good avenue to fund this "public good".

This proposal does not seek to reimburse my development time or offer myself a form of "salary" for keeping services running and up to date. I consider Witness pay responsible for this. This proposal is strictly for recurrent hosting costs of the infrastructure.

Qualifications

The anyx.io endpoint has proven itself to be robust to downtime and responsive to elastic public demand. Many services rely on this infrastructure as their primary API endpoint (such as Busy and Partiko), with many others using it heavily or giving users the option to use it (such as Splinterlands, Steemconnect, Keychain, Steempeak, Steemworld, Beem, and many more).

Since the previous hardfork, I have starting light logging of success metrics. Over the past 8 days, here are some interesting statistics:

  • 280,307,849 Total Requests (Approx. 400 Requests per Second Average)
  • 176,856 Unique IP Addresses
  • 0 Server Errors

Independent testing has shown that the anyx.io infrastructure meets or exceeds Steemit Inc's own provided throughput and latency for API requests. The above metrics, while good, do not anywhere near saturate available performance.

Supplementary Reading

Original announcement: https://steemit.com/steem/@anyx/announcing-https-anyx-io-a-public-high-performance-full-api

Previous upgrades: https://steemit.com/steem/@anyx/updates-to-anyx-io-infrastructure-including-hivemind-support https://steemit.com/steem/@anyx/notice-of-upcoming-changes-to-anyx-io-api

Relevent API Development: https://steemit.com/steem/@anyx/designing-a-restful-steem-api

Learn more about me from my Witness Application: https://steemit.com/witness/@anyx/updated-witness-application

Consider Voting for this Proposal here:

https://steemitwallet.com/proposals https://steempeak.com/me/proposals

Comments · 23

  • @cambalache(40)· 2284d

    Fully suport the proposal!

  • @dbloes12(38)· 2296d

    How can I support your proposal? New to this proposal thing

  • @actnearn(70)· 2296d

    We support this proposal.

  • @dflz17(27)· 2383d

    Wery fine)))

  • @steempeak(72)· 2383d

    Haven't heard from you in a really long time... is everything good? Are you gonna be updating your API to support communities?

  • @jarvie(75)· 2407d

    Congrats on the funding threshhold being reached (I hope it continues to be above the threshhold) ... would love to hear an update on your plans. Have they changed since this september post? If so it'd be a good time to let people know and hear about your changes or your renewed commitment since it has been 4 months later.

  • @steempeak(72)· 2460d

    Sorry we're a little late to the voting... but seeing as this is an important feature for https://steempeak.com/ and all of STEEM we have voted it. Hope it goes well and gets funded and look forward to seeing the potential changes.

  • @steemchiller(73)· 2523d

    I will support your proposal. Your nodes are the most reliable and fastest out there. I've never experienced any issues with missing APIs or long lasting downtimes. As long as I cannot run my own node(s) with all required APIs enabled, your service is a must have for me.

  • @anthonyadavisii(73)· 2530d

    Without your and Marky's full node, @steemflagrewards would be dead in the water. I don't think you should have to run a node at a loss so I fully support this proposal.

    Furthermore, if there is a business out there with significant income, I think it is reasonable to pay a small premium to cover costs. Perhaps this can be based on amount of API calls relative to their income.

    As for SFR, I wished there was more we can do but we ourselves seem to be running on the fumes of altruism.

    Without our moderators willing to put in the time to approve downvotes, we would have no service to offer users willing to flag token manipulators. I digress. I wish you the best with this proposal. ♥️

  • @fabien(63)· 2533d

    I fully support this proposal, i know how precious @anyx service is, steemconnect heavily rely on @anyx node, if you had to run a service that send a lot of requests from your server to a node you will quickly discover that most of the nodes available can not handle it or have IP limitation like api.steemit.com.

  • @abitcoinskeptic(75)· 2534d

    This proposal has my support. A heavy node is too expensive for me, but I entertain the idea of running a lite node myself and may get around to doing it one day with some older hardware and a few tweaks.

  • @crypto.piotr(65)· 2535d

    Hello dear friend @anyx.

    I consider this proposal very valuable. All efforts to provide a better user experience in steem should be supported as it would allow for greater incorporation of new accounts.

    280,307,849 Total Requests (Approx. 400 Requests per Second Average)

    Amazing metrics!

    Philosophically, I believe API access should be public and freely available.

    This is a very noble position. I hope your proposal achieves approval and you have the resources to continue offering these high quality services.

    All best, Piotr.

  • @steemitboard(66)· 2535d

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

    You distributed more than 78000 upvotes. Your next target is to reach 79000 upvotes.

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

    To support your work, I also upvoted your post!

    Vote for @Steemitboard as a witness to get one more award and increased upvotes!
  • @saboin(57)· 2535d

    I use the anyx.io node for everything. It has a significantly lower ping time than all of the others. I can support this proposal.

  • @drakos(70)· 2535d

    How about a proposal to finish developing that yummy jussi replacement of yours?

  • @hashzone91(62)· 2535d

    You doing great and i love it i try to fully support no matter what .... that’s actually amazing

    Posted using Partiko iOS

  • @leveuf(64)· 2535d

    Some weeks ago I was witness of how the anyx.io node was the only piece of steem that worked in that halt of the blockchain. I hope you the best for this proposal and every project!

  • @smooth(74)· 2536d

    Philosophically, I believe API access should be public and freely available -- enabling developers to quickly build and test applications and provide value to the ecosystem, without having to deal with infrastructure woes

    I agree with this with respect to developers for experimentation and initial development (what you call "building and testing"), but once something goes into deployment and significant usage, I believe projects and businesses should run their own nodes or at least pay their own way.

    I don't support the public good model of running big expensive nodes which IMO actually hurt the ecosystem. The blockchain itself is a public good, but when it comes to accessing it, many businesses and projects could easily run their own nodes with the result being a more robust decentralized network. They don't and won't do this if get free service.

    I feel the same way about Steemit's nodes. They should be closed down or have access limited to development purposes.

    I would 100% support a smaller proposal that is narrowly focused on providing limited-capacity API support to individuals and developers for their own use.

  • @enjar(79)· 2536d

    Sounds quite reasonable for what is being offered. It is shocking how much is reliant on Steemit Inc.

    Thank you for everything you do. Have a great weekend.

  • @blockchainstudio(72)· 2536d

    I've just voted. My first SPS vote :)

    (for other proposers, not because i don't agree with your proposal, but just lazy to vote)

  • @svemirac(72)· 2536d

    Amazing! Thanks for your service! :bow:

  • @waleedtee(45)· 2536d

    I support this fully!

  • @smartsteem(72)· 2536d

    👍 ~Smartsteem Curation Team