Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

IBC TypeScript Library #247

Closed
wants to merge 3 commits into from
Closed
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
137 changes: 137 additions & 0 deletions applications/ibc-typescript-library.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,137 @@
# EOS Network Foundation Grant Proposal

- **Project Name:** Antelope IBC NPM Library
- **Team Name:** Animus Labs LTD (representing Boid.com)
- **EOS Payment Address:** animus.inc
- **[Level](https://github.com/eosnetworkfoundation/grant-framework#grant-levels):** 2
- **Pomelo Grant(s):** <https://pomelo.io/grants/eosioibc>
- **Project is Open-Source:** Yes
- **Project was part of Token sale:** No
- **Repository where Project resides:** <https://github.com/animuslabs>

## Contact

- **Contact Name:** John Heeter
- **Contact Email:** <[email protected]>
- **Website:** <https://www.animus.is>

## Project Overview
We're creating an NPM library for Antelope IBC written in Typescript. It will feature a user-friendly API, strong type safety, high performance, and comprehensive documentation.

### Overview

- **Name:** IBC TypeScript Library
- **Brief Description:** We are building a Typescript NPM package for Antelope IBC which will be usable by developers on the client or server.
- **Relationship to Antelope:** Builds on the Antelope IBC system contracts and proof server.
- **Reason for Interest:** We had a huge issue with implementing the JavaScript code. We see the potential to reduce friction for other teams to implement IBC in their own applications.

### Project Details
The primary objective of this proposal is to perform a comprehensive rewrite of the existing JavaScript codebase that underpins the Cryptomechanics-developed Antelope Inter-Blockchain Communication (IBC) system. Our focus is to enhance the developer experience and simplify the process of building complex applications that utilize IBC. This library, which can be employed in both frontend and backend development and will use the WharfKit SDK. Currently we are working on an IBC application funded by Pomelo and we want to leverage the work we have done for this project into the development of the Antelope IBC SDK which could easily be adopted by other projects.

### Ecosystem Fit
An effective IBC SDK is crucial for the creation of many advanced applications such as marketplaces that allow users to trade items across multiple chains, moving tokens, NFTs, governance actions, and even scaling solutions. We expect this SDK will lead to an increase in product and feature concepts that leverage such capabilities. The only existing solution similar to this SDK is the existing example javascript code provided by the UX team which is not usable in modern web frameworks or on backend servers without extensive modifications.

## Team
### Team members

- **Team Leader:** John Heeter - Founder @ Boid.com
- John Heeter - Technical Lead / Development
- Seth Choscilowicz - Development / DevOps

### Legal Structure

- **Registered Legal Entity:** Animus Labs LTD
- **Registered Address:** Hunkins Waterfront Plaza, Main Street, Charlestown, Nevis

### Team Experience

John Heeter - 8 years of developement experience (5 years blockchain experience eosio) / full stack dev; technical artist 3 years; technical director 3 years
Seth Choscilowicz - blockchain dev ops 4 years eosio / systems engineer 14 years

### Team Org Repos

- <https://github.com/boid-com>
- <https://github.com/animuslabs>

### Team Member Repos

- <https://github.com/jdheeter>
- <https://github.com/mchosc>

### Team LinkedIn Profiles

- <https://www.linkedin.com/in/johnheeter>
- <https://www.linkedin.com/in/mchosc>

## Development Status
Our current progress learning and working with IBC primitives can be seen in the AntelopeX repo: <https://github.com/animuslabs/antelopex-worker/blob/main/src/lib/ibcHelpers.ts>

## Development Roadmap

### Milestone Summary

- **Total Estimated Duration:** 3 months
- **Full-Time Equivalent (FTE):** 3 FTE
- **Total Costs:** 30,000 USD

### Milestone 1 — Building of the NPM package

- **Estimated duration:** 1 month
- **FTE:** 1
- **Costs:** 10,000 USD

We will implement basic IBC functionality into a usable Typescript library.
#### Some functions which will be usable

- Get transaction details from a history solution and format it for proof generation.
- Submit transaction details to a proof generation server.
- Format the response from a proof server into a usable transaction format to be submitted to the blockchain.
- Monitor the steps above and provide useful error handling.

| ID | Deliverable | Specification |
| ----- | ----------- | ------------- |
| 0a. | License | MIT
| 0b. | Documentation | Basic code comments and readme at this stage. |
| 0c. | Testing Guide | Tests will be provided in the final milestone. |
| 0d. | NPM Library | Will be usable in a beta stage. |

### Milestone 2 — Implementation of the NPM package in our own application

- **Estimated duration:** 1 month
- **FTE:** 1
- **Costs:** 10,000 USD

The typescript library will be implemented into one or more of our existing projects (such as AntelopeX or Boid) and any missing features will be implemented and bugs eliminated. Additionally we will add helper functions for common IBC use cases such as token transfers.

| ID | Deliverable | Specification |
| ----- | ----------- | ------------- |
| 0a. | License | MIT
| 0b. | Documentation | Basic code comments and readme at this stage. |
| 0c. | Testing Guide | Tests will be provided in the final milestone. |
| 0d. | NPM Library | Will be in a polished and nearly production ready stage. |

### Milestone 3 — Documentation, tests and external integration

- **Estimated duration:** 1 month
- **FTE:** 1
- **Costs:** 10,000 USD

We will write comprehensive documentation of the library as well as code comments and basic tests. We will reach out to other projects and help them to implement the library into their codebase when possible. We may make tweaks to the functionality based on feedback from external projects.

| ID | Deliverable | Specification |
| ----- | ----------- | ------------- |
| 0a. | License | MIT
| 0b. | Documentation | Documentation site will be live and comprehensive. |
| 0c. | Testing Guide | Basic tests will cover all of the core features. |
| 0d. | NPM Library | Will be in a polished and production ready state. |
| 0e. | Article | We will publish a Medium article that explains the library for a general audience and links to the documentation for developers. |

## Future Plans

We will be using the IBC library in our own applications and will provide basic support for external projects to integrate the library. We will monitor feedback from external projects to iterate on the library and keep it updated as IBC evolves.

## Additional Information

**How did you hear about the Grants Program?** Twitter

So far, we have been implementing the project with our own funds, we do not want to go beyond the Antelope environment with the idea. We submit the application for funding only to the EOS Network Foundation. Currently we have implemented some of the functionality in our AntelopeX codebase as mentioned above.