Skip to content

Gift-Stack/ibc-multi-transfer

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

33 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Cosmos Asset Transfer (+IBC) Turborepo

This is the implementation for my Cosmos PoC.

What's inside?

This Turborepo includes the following packages/apps (some with their own READMEs):

Apps and Packages

  • web: a Next.js app where all the frontend code is located.
  • @milkyway-engine/ui: a stub React component library shared by both web and docs applications. Read docs
  • @milkyway-engine/wallet: a stub React hooks library utilized in web for blockchain interactivities. Read docs
  • @milkyway-engine/eslint-config: eslint configurations (includes eslint-config-next and eslint-config-prettier)
  • @milkyway-engine/tailwind-config: tailwindcss configurations used throughout the apps and ui package (includes tailwindcss, postcss and autoprefixer)
  • @milkyway-engine/typescript-config: tsconfig.jsons used throughout the monorepo

Each package/app is 100% TypeScript.

Why use this pattern?

  • Save time and effort on repetitive tasks
  • Segregating ui package from web package allows for easier maintenance and scalability
  • Enables a consistent coding style
  • Provides a centralized location for configuration files

References and Resources

Skipped implementations

Implementation Why
Display the states of the IBC transfer with a stepper Couldn't find libraries to handle this, and constrained time to manually implement it
Implement IBC hook transfer using PFM Ellapsed time

Difficulties

Difficulty Description Solution
Error handling Some errors are not thrown, but are insinuated in the transaction/api responses! Read through resolved json, and I had to manually handle them if the errors exist.
Documentation Some features on Cosmos ecosystem are not well documented I read codebases and GitHub issues to resolve them.
Tracking IBC transfers status in real time I couldn't find libraries to handle this, so I tried to go through Finschia Client Codebase to get how to track the status of the IBC transfer. Unfortunately, there wasn't an implementation to handle real-time tracking, just on request time.

Learnings

  • Simplicity of IBC implementation. PS: this is my first time implementing IBC.
  • I learned a lot more low-level knowledge about IBC -- Particularly, I learned that unlike other interoperability protocols, IBC does not rely on trusted third parties. If you trust two particular chains to use the functions they provide (and by default their consensus mechanisms), then there are no additional trust assumptions needed while using IBC to interact between these chains.

About

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors