Since the launch of the first HyperBEAM-powered temporary storage layer, Load S3 has seen significant growth and adoption, with integrations in the Load Cloud Platform (LCP), Blobscan, dHealth, Apus Network, and more users in the pipeline!
Strong standards exist for a reason in the Arweave ecosystem, and we’re keen to keep the developer experience smooth by building tools that are 1:1 with what you already use.
Up until now, there have been two routes to store data on Load S3 under the ANS-104 offchain-dataitems data protocol:
- Using the HTTP API (load-s3-agent) which handles ANS-104 DataItem creation and storage
- Using the official AWS S3 SDK (any S3 compatible SDK, or curl) and following the offchain-dataitems data protocol to store (put_object) data as signed ANS-104 DataItems.
So far, these main 2 data ingress routes have been sufficient– but what about the projects and devs already using Arweave for permanent storage that want to alternate between temporary and permanent storage based on the data entrypoint?
Using a new SDK or writing a custom function call might not be the path of least resistance, especially in large codebases. For that reason, we’re bringing this DevX friction to zero by releasing an offchain upload service on top of Load S3 that’s compatible with the bundling service standards (interface) set by AR.IO’s Turbo SDK.
TL;DR:
Use Load S3 by changing 1 line of code.
The Loaded Turbo API
The loaded-turbo-api is technically the first Turbo-compliant, offchain, s3-based, on HyperBEAM upload service. With this new upload service, Turbo and the broader Arweave ecosystem users can start using Load S3 temporary storage directly via the official Turbo SDK: a simple -one line- endpoint change.
Thanks to the Turbo SDK’s clear open standards, it was possible to develop a layer on top Load S3 that acts as a upload service that inherits the storage features of Load S3, while maintaining interoperability and integrity with Arweave’s ANS-104 data standard. Load’s upload service inherits the SLA offered by the Load S3 client.
To use the Load’s upload service along Turbo SDK, just configure the TurboFactory with the new upload service endpoint. Here’s a JS example.
The loaded-turbo-api is at release v0.1.0 that supports up to 1GB objects (dataitems), is unauthenticated and supports the POST /v1/tx/{token}
Turbo upload method.
The fast finality index + data cache is accessible with the HyperBEAM s3_nif dataitem gateway: https://gateway.s3-node-1.load.network/resolve/:dataitem_id
The upload service limits and features are subject to change, to stay up to date, always check the service’s public configs here and follow the docs on GitHub.
Posting dataitems programmatically from Load S3 to Arweave
Once a DataItem is stored offchain on the HyperBEAM Load S3 storage layer, there are different ways to push it to Arweave.
The DIY method is using the aws-sdk-s3 (or again, any S3 SDK) to download the fully serialized and signed ANS-104 data item object, then pushing it to Arweave. However, we offer an easier and faster programmatic method to post offchain dataitems to Arweave.
Powered by Turbo’s bundling service, the load-s3-agent offers a POST /post/:dataitem_id
method that takes the id of an offchain dataitem, and pushes it to Arweave via Turbo, while maintaining its provenance and integrity.
At the time of writing this blog post (agent v0.4.3), the agent fully subsidises the onchain posting fees – fee sponsorship is subject to change.
What’s Next
Up next on the feature list for the Load S3 upload service is the Turbo SDK compatibility roadmap, and allowing the use of Turbo credits from inside the load-s3-agent.
Are you interested in using Load S3 along Turbo SDK? Hit us up on X or Telegram and we will help you with the technical integration! And if you need up to 100 GB free per month, apply to the Load S3 Partner Program.