{"id":22066761,"url":"https://github.com/gift-stack/ibc-multi-transfer","last_synced_at":"2026-04-02T18:52:27.472Z","repository":{"id":244786851,"uuid":"808116234","full_name":"Gift-Stack/ibc-multi-transfer","owner":"Gift-Stack","description":null,"archived":false,"fork":false,"pushed_at":"2024-07-02T18:31:43.000Z","size":430,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-10-10T11:23:41.193Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"https://milkyway-int-web.vercel.app","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Gift-Stack.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2024-05-30T12:18:16.000Z","updated_at":"2024-07-02T18:31:46.000Z","dependencies_parsed_at":"2025-03-23T18:39:47.854Z","dependency_job_id":null,"html_url":"https://github.com/Gift-Stack/ibc-multi-transfer","commit_stats":null,"previous_names":["gift-stack/milkyway-int","gift-stack/ibc-multi-transfer"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/Gift-Stack/ibc-multi-transfer","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Gift-Stack%2Fibc-multi-transfer","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Gift-Stack%2Fibc-multi-transfer/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Gift-Stack%2Fibc-multi-transfer/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Gift-Stack%2Fibc-multi-transfer/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Gift-Stack","download_url":"https://codeload.github.com/Gift-Stack/ibc-multi-transfer/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Gift-Stack%2Fibc-multi-transfer/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28132987,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-12-30T02:00:05.476Z","response_time":64,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-11-30T19:28:59.811Z","updated_at":"2025-12-30T22:06:49.838Z","avatar_url":"https://github.com/Gift-Stack.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Cosmos Asset Transfer (+IBC) Turborepo\n\nThis is the implementation for my Cosmos [PoC](https://iamgifted.notion.site/Cosmos-TRX-PoC-9cec7aa066bc4428a7b58b2412d61858).\n\n## What's inside?\n\nThis Turborepo includes the following packages/apps (some with their own READMEs):\n\n### Apps and Packages\n\n- `web`: a [Next.js](https://nextjs.org/) app where all the frontend code is located.\n- `@milkyway-engine/ui`: a stub React component library shared by both `web` and `docs` applications. [Read docs](packages/ui/README.md)\n- `@milkyway-engine/wallet`: a stub React hooks library utilized in `web` for blockchain interactivities. [Read docs](packages/wallet/README.md)\n- `@milkyway-engine/eslint-config`: `eslint` configurations (includes `eslint-config-next` and `eslint-config-prettier`)\n- `@milkyway-engine/tailwind-config`: `tailwindcss` configurations used throughout the apps and ui package (includes `tailwindcss`, `postcss` and `autoprefixer`)\n- `@milkyway-engine/typescript-config`: `tsconfig.json`s used throughout the monorepo\n\nEach package/app is 100% [TypeScript](https://www.typescriptlang.org/).\n\n### Why use this pattern?\n\n- Save time and effort on repetitive tasks\n- Segregating ui package from web package allows for easier maintenance and scalability\n- Enables a consistent coding style\n- Provides a centralized location for configuration files\n\n### References and Resources\n\n- [Cosmos Docs on Keplr Wallet Integration w/ CosmJS](https://tutorials.cosmos.network/tutorials/7-cosmjs/4-with-keplr.html).\n- [Keplr Wallet Example](https://github.com/chainapsis/keplr-example/blob/master/src/App.tsx) - industry standard example of how to integrate Keplr with CosmJS.\n- [Cosmjs Changelog](https://github.com/cosmos/cosmjs/blob/main/CHANGELOG.md#0320---2023-11-23) - Used for IBC changes from `sendIbcTokens` to using `MsgTransfer` and `signAndBroadcast`.\n\n### Skipped implementations\n\n| Implementation                                        |                                          Why                                          |\n| ----------------------------------------------------- | :-----------------------------------------------------------------------------------: |\n| Display the states of the IBC transfer with a stepper | Couldn't find libraries to handle this, and constrained time to manually implement it |\n| Implement IBC hook transfer using PFM                 |                                     Ellapsed time                                     |\n\n### Difficulties\n\n| Difficulty                                 |                                   Description                                    |                                                                                                                                                                                                                                                                                                                 Solution |\n| ------------------------------------------ | :------------------------------------------------------------------------------: | -----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: |\n| 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. |\n| Documentation                              |            Some features on Cosmos ecosystem are not well documented             |                                                                                                                                                                                                                                                                      I read codebases and GitHub issues to resolve them. |\n| Tracking IBC transfers status in real time |                                                                                  | I couldn't find libraries to handle this, so I tried to go through [Finschia Client Codebase](https://github.com/Finschia/finschia-js/blob/main/packages/finschia) 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. |\n\n### Learnings\n\n- Simplicity of IBC implementation. PS: this is my first time implementing IBC.\n- 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.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgift-stack%2Fibc-multi-transfer","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fgift-stack%2Fibc-multi-transfer","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgift-stack%2Fibc-multi-transfer/lists"}