Intro
Web3API makes it easy to interact with any protocol or blockchain, from any programming language. It aims to make integrating Web3 protocols into applications seamless, without sacrificing decentralization. The Web3API DAO recently announced a grant with Uniswap, and have a soon to be announced grant with another top 10 market-cap blockchain in order to make the experience integrating their protocols into decentralized applications 10x better.
We’re huge fans of the Terra ecosystem and want to drive its further adoption. We propose to partner with Terra to implement its Web3API for the Terra developer community with the goal of releasing Terra’s SDK on Web3API in Q3-Q4 2021.
Technical details
Terra’s development experience would be improved in the following ways:
- Streamlined Integration - Query any Web3API on-the-fly, by simply providing its URI (example: api.terra).
- Simple Interface - With GraphQL, Web3APIs are as easy to use as Web2 web services.
- Multi-Platform - Use Terra’s Web3API in any programming language through a Web3API Client implementation. Instead of needing to maintain both the Python and Javascript SDKs (as well as future language support), Terra could just maintain its SDK through Web3API and have it accessible on any language.
- Automatic Updates - Resolving packages at runtime allows for automatic (opt-in) updates.
- Limitless Composability - Since Web3APIs are not bundled into applications, there are no scaling limits to composability.
- Extendable Protocols - Web3APIs can query each other and define standard interfaces, enabling fully extendable protocols.
Project Details
First, let’s walk through how Web3API accomplishes what it’s claiming to do above.
For the visual learners, here is a video explanation: (https://youtu.be/9HhB4XL4AR4).
Web3API is a WebAssembly (WASM) standard and a developer toolchain that streamlines Web3 protocol integrations. All logic that was once bundled into JavaScript SDKs (among other languages) is now within lightweight, secure, and portable WASM modules called Web3APIs.
Querying these Web3APIs is done through a familiar GraphQL (https://graphql.org/) interface resulting in a developer experience almost identical to that of a Web2 web service. Instead of sending GraphQL queries to a centralized endpoint, such as api.service.com, apps query a decentralized endpoint like api.protocol.eth.
The Web3API Client resolves the Web3API package hosted at its decentralized endpoint, downloads it at runtime (if not present), and executes the application’s queries on the WASM modules.
See this Architecture section(https://github.com/Web3-API/specification/blob/main/spec/intro/2_Architecture.md) for a deep dive.
Ecosystem Fit: Why Terra x Web3API is a great partnership
We think Terra x Web3API could be a great partnership in both technology and ecosystem ideologies:
-
Instead of authoring language specific SDKs for application developers to use, authoring a single Web3API can serve as a solution for all developers, regardless of what language they’re building in.
The goal is for this Web3API to supersede the existing Terra Python and Javascript SDKs that exist today for developers. In the future when there are more Web3API Client implementations in other languages, this Web3API will be usable there as well.
-
We could be the de-facto SDK platform for current and future projects built on Terra, if the community likes the initial SDK. For instance, Web3API could work with Anchor to make their goal of integrating into applications with less than 7 lines of code a reality.
-
Terra is bringing blockchain to the real world. Real world use cases necessitate speed, security, and interoperability - which Web3API provides. Consider for instance a video game that pulls files from IPFS, mints NFTs on Ethereum, and makes payments on Terra. Web3API makes it significantly easier to develop this type of game.
-
A Terra Web3API that’s easy to use would further increase accessibility for developers to build on Terra and overall adoption.
-
Web3API will have eventual value capture mechanisms (ie similar to Docker or RapidAPI in the Web2 world), for which UST could be the default currency.
-
Terra smart contracts are already built in COSMWASM, so we imagine the ecosystem understand the utility of developing with WASM broadly. Web3API also sees WASM as the future for enabling hyper-composability on decentralized applications, over the current standard of clunky JS wrappers.
Plan and funding
It would be great to work closely with the Terra team in Q3/Q4 to build out Terra’s Web3API. We would work closely with Terra engineers and research team to design, build, and test Web3API’s Terra integrations.
Total estimate expenses
Cost: $25,000
Effort: 25-30 hrs/week x 12 weeks
Scope: Port the entire existing Terra Javascript/Python SDK into a fully functional Web3API
Broadly, we’re also interested in:
- Terra helping promote the Web3API standard, encouraging developers building multichain decentralized applications to use Web3API to access the Terra blockchain.
- Working with projects on Terra in the future to build their Web3APIs (Mirror, Anchor, etc)
- Value capture with UST when Web3API goes live
Call to action:
Thank you for reading! I’d be grateful to receive feedback.
What do people think? Does this tackle a problem that Terra developers have with composability, integrations, needing to maintain multiple SDKs? We’d love to hear specifically from the Terra engineering team and developers who have built/tried to build on Terra. We’re also curious what how we fit in with the larger development roadmap for Terra as a whole.
If anyone wants to help on any of the above or is generally have any questions, don’t hesitate to DM me