{"id":24551943,"url":"https://github.com/mlabs-haskell/tuxedodapp","last_synced_at":"2025-04-15T22:20:15.641Z","repository":{"id":224059985,"uuid":"762297860","full_name":"mlabs-haskell/TuxedoDapp","owner":"mlabs-haskell","description":"Cryptokitties on Polkadot using UTXO","archived":false,"fork":false,"pushed_at":"2024-11-12T16:20:55.000Z","size":1377,"stargazers_count":2,"open_issues_count":3,"forks_count":2,"subscribers_count":5,"default_branch":"master","last_synced_at":"2025-03-29T02:04:19.872Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/mlabs-haskell.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","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-02-23T13:43:26.000Z","updated_at":"2024-11-12T16:20:28.000Z","dependencies_parsed_at":"2024-08-05T22:20:00.173Z","dependency_job_id":"5662f928-7ed3-4825-b7b5-f56e1f83f1da","html_url":"https://github.com/mlabs-haskell/TuxedoDapp","commit_stats":null,"previous_names":["mlabs-haskell/tuxedodapp"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mlabs-haskell%2FTuxedoDapp","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mlabs-haskell%2FTuxedoDapp/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mlabs-haskell%2FTuxedoDapp/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mlabs-haskell%2FTuxedoDapp/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/mlabs-haskell","download_url":"https://codeload.github.com/mlabs-haskell/TuxedoDapp/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":249161821,"owners_count":21222559,"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","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":"2025-01-23T01:19:29.991Z","updated_at":"2025-04-15T22:20:15.625Z","avatar_url":"https://github.com/mlabs-haskell.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Tuxedo DApp, Extended CLI-wallet and Talisman integration\n[![W3F Sponsored](https://raw.githubusercontent.com/w3f/Grants-Program/00855ef70bc503433dc9fccc057c2f66a426a82b/static/img/badge_black.svg)](https://web3.foundation/)\n\n### Overview\n\nUnlike traditional account-based systems, UTXO-based systems treat each transaction output as a distinct entity, introducing advantages in parallel processing and state transition simplicity.\n\nThe [Tuxedo](https://github.com/Off-Narrative-Labs/Tuxedo) project endeavors to demonstrate the flexibility and interoperability of Polkadot by implementing UTXO as one of its paradigms. MLabs, with expertise in the Cardano ecosystem utilizing UTXO as its core model, sees an opportunity to contribute to Tuxedo's success, address identified issues, and engage in future collaborative activities.\n\nOur goal is to showcase the potential of Polkadot using the UTXO paradigm for the end user, leveraging Tuxedo. The project consists of two stages\n\n## Stage 1: Extend the CLI-wallet and integrate Talisman\n\nExtend the original CLI wallet to allow CryptoKitties DApp to run. Integrate Talisman to allow users to manage their UTXOs on the Tuxedo-based DApp.\n\n**Functionality**:\n\n1. Feature parity between Web-Based and CLI wallets\n   \nThe web-based wallet allows core functionality of the CLI wallet, offering seamless UTXO synchronization and token handling, ensuring that users have an equivalent experience across both interfaces.\n\n2. Talisman integration:\n\nThe Web-based wallet Talisman integrated to allow the transactions of the DApp.\n\n3. Issues Fix to support transactions to multiple recipients (\u003chttps://github.com/Off-Narrative-Labs/Tuxedo/issues/62\u003e)\n   \nThe current implementation of a CLI-based wallet allows sending inputs from multiple owners in a single transaction, but it only supports a single recipient for all specified outputs.\n\n\n**Blockchain Integration**:\n\nWeb-based and CLI wallet to connect with the blockchain node and fetch data.\n\n**Demo Talisman integration**:\n\nThe video shows how the Talisman integration works for all the features of the DApp\n[![Talisman integration](https://lh3.googleusercontent.com/fife/ALs6j_H0alrnYohHiTA8-ba66gKTIanTJEIpqpG3a_BypxrYF4x9RqyuEOPPNMFG2klmzx_XO41vzLjZozlEl-c6JSINV3tselBbCUq80lasnGIvlRQoHvv1btt7w2VJ5X3MpjKZvbTooqm-AjNfBnAOy8iNXOOKsfRVjoRAoTHrDQ1P6d7gHvo9lQk8Yxui-8LYIt4qr-IEgzD4GPxMkP--8AAuLqgn3I0uQxRxcYq5VaO1wmW9_6wU8E2Vw2xv95uipUoG4Jiw1UPosWKFExrBCdO1D_pAwknRpS5KXAuJl3zbmgbkiEZ4Z77eO-fwSqjC-YA_MWWYWj4ubG6avZQG3Jt4d-TNIrLKRXjj-o-eOR3D0HDuMgHSofDnLCs6PnvQ0MyGuYjW4aw96TD7GVrLclseyzgvR5NbFSdF8Vp9woxc2Ve8Tyx-cZJgEy6AhIW2Zn-588nFm3PXus4zgI-D41SbFgH8-iRiGsYUlUS1tlxbIELvMBznqVSQSpOJIeFidhwnnP12EC5qkK9RjTmhEbTlmEI6AhpiXwkX6zUv_awLSN58lKJmFDhozhx1HEvtKhdg_B9t6exLhGeB7LbU9KvueWIgxXC5Ey7Ijn-DvjyRf78Rp35pAb_n9Ucelz4cgXffawjo4D4B76wAT6fV-ILjfvsPN1JTAf_vJu9-LjLf-OqjUpuYbYBK1Ve7Yo1c1jfNimGTZFhYihLx62LK6dnf_PT-Nn_pucGCUgjbMDuZkEccjhDhjxwM6wz0Uj8mVQ_OE4UNv-vm1QqkNSSDw5tgRxI7v-_XSSPLGc1LoC0WanUI9LswnW2SovLw0nmJqMngCYUdOjSFLrTunEP80mZVpVhjjJeBsE-nIEUwCDMgs49YwSgwRn3RZoF10_lnpNwj3dP0uA7OCi8SdAeNzbk1btpZoI7hWwQ09ugejTJ46HMDd91FFxHWguxWY7YPTQmbcNk1ZOG0I5bB0A9pzGrJXnDj4OgonDxnsvtvsar8FhkE8YZkVUF5eWHw-llYnJFF9EE_D9OdtzZtQYd3QOLfksEwdCW4p_PBAltns3GPrL7Uuhqe-JsImwSS_vv2xssdL4TjosEQgHRSlw2c6bpeUJ9fU0xewnqaZJxy0m6J22AkQfBaanld9dZjtMVnV7XR4kmEzqqxxfVeqhWdrnY9azZKl46TP8DQRb_iCa0qVVY9GlUTC7slbAc0yCbcqzbwtk-jbLOfvy1FElL0htffkxOia5V8iJ5xY6U50ILipEHWqk3arZkwIhiY89xa1Q2zZvgMEW1MyGl25BByo1wUMRwMXJc6Q0OjRcOFWOC-png_Moa8W2joTxAfOLxiX6uqo21SNaZVO5TuRcK_LeyXW1H1QB2lJ3mzQU_NEA_6MVoWKsrmV7sfYu8pyGdH77FPge7w5Bk7W11wihECRVX-BMeCXor-inldO5UaaIlDglzsDyPhcLH0AohVxNJ1PPFUXverO70p5mm8U3m-u1qK4E63_Wjt3uejOr2XP5zh_IZzYCiH6vkGyRFdu2AN06rXBBMqbU-Dd_648D1VN-eU_0zhdv7rZ6yIYucguK8nkyzk-syV6b4xsWFJrNCT0YyFkDGvuTc)](https://www.loom.com/share/e1270ecea79a4689aff5732e8acfae14)\n\n**Extended CLI-wallet for tradable kitties**\n\n\u003chttps://github.com/mlabs-haskell/Tuxedo/blob/main/wallet/src/kitty.rs\u003e\n\n**Demo CLI-wallet**:\n\nThe videos demonstrate the CLI-wallet functionalities: mint coins, create kitty, update kitty name, list kitty for sale, update tradable kitty price, breed kitty and buy kitty\n\n[![CLI-wallet - Demo part 1/3](https://i.ytimg.com/vi/Mom3BV_HozY/hqdefault.jpg)](https://youtu.be/Mom3BV_HozY)\n\n[![CLI-wallet - Demo part 2/3](https://i.ytimg.com/vi/GfyiBW1XFW0/hqdefault.jpg)](https://youtu.be/GfyiBW1XFW0)\n\n[![CLI-wallet - Demo part 3/3](https://i.ytimg.com/vi/1T2oE0bfaCQ/hqdefault.jpg)](https://youtu.be/1T2oE0bfaCQ)\n\n\n## Stage 2: Developing a basic CryptoKitties DApp\n\nCreate a simple decentralized application to demonstrate the viability and maturity of the Tuxedo framework, as required by this opened ticket  \"Full Tuxedo App Implementation\" \u003chttps://github.com/Off-Narrative-Labs/Tuxedo/issues/76\u003e\nShowcase the unique features of UTXO-based transactions on Polkadot, emphasizing scalability and robustness.\nAddress identified gaps and limitations in the current Tuxedo product to enhance overall functionality.\nWe think that a successful showcase of a DApp is Cryptokitties which is provided in Tuxedo via pieces in \"\u003chttps://github.com/Off-Narrative-Labs/Tuxedo/tree/main/wardrobe/kitties\u003e\".\nWe want to use this concept and extend the wardrobe codebase by implementing a basic web interface and allowing breeding, trading, searching, and updating the kitty features such as name, price and tradable status of kitties.\nThis DApp is intended for educational purposes only, and not for production use.\n\n**Technical Requirements**\n\n**Functionality**:\nKitties Creation with NFTs:\nRepresent each kitty as a unique NFT on the Tuxedo blockchain.\nUse Tuxedo runtime pieces i.e. kitties to handle NFT-based kitties creation transactions.\n\n**Breeding and NFT Ownership**:\nDApp ensures NFT ownership is transferred correctly during breeding transactions.\nLeverage NFT attributes to determine genetics and other breeding-related factors.\n\n**Trading of kitties between users**:\nDApp ensures Kitties can be traded between the users.\nEnsure ownership is transferred successfully once trading is completed.\n\n**Updating the kitty details**:\nDApp ensures Kittie's details such as name, tradable status(Yes or No) and Price can be updated.\n\n**Search kitties owned by other users**:\nDApp helps search the kitties other users own based on the user's public key.\nThis displays the list of kitties owned by other users with all details required for trading such as Gender, Tradable status, Price, Parents, etc.\n\n**Blockchain Integration**:\nTuxedo Runtime pieces (wardrobe/kitties ):\nWe need Leverage Tuxedo runtime pieces for implementing specific DApp functionalities in the UTXO model, with a focus on NFTs, if some modification is required or if some new functionality is required we may need to customize runtime logic to suit the requirements of the UTXO-based DApp.\nFor this scope, we plan to modify the kitties' pieces code to support below features:\n\n1. Generating the kitty without the parent when the user inserts the new key in the wallet (basically, 1 kitty is provided for free as an onboarding process)\n2. Implementing the Trading of kitties between users\n3. Searching kitties owned by other users\n4. Adding/Updating more details of kitties such as Gender, Tradable status, Price, and Name.\n\n**Transaction Handling**:\nDApp implements transaction handling logic in the web application to initiate UTXO-based transactions, including NFT-related transactions, on the Tuxedo blockchain.\nProvide feedback to users on transaction status and confirmations.\n\n**Personal Dashboard**:\nWe developed a personal dashboard for users to view and manage their NFT-based Kitties collections.\nDisplay detailed information about each NFT, including ownership history and transaction history.\nManage NFT means, it includes below :\n\n1. Viewing NFTs:\n   Users can see a comprehensive list or visual representation of all the NFTs (kitties) they own.\n   Display detailed information about each NFT, including attributes such as below:\n   Name\n   parents(mom and dad)\n   free_breedings(numbers)\n   DNA (H256 Hash value)\n   num_breedings(number)\n   Tradable(yes or No)\n   Price\n   Status (Ready for Raring, Tired (only for Dad), Had birth recently(only for Mom)).\n2. Trade :\n    Users can buy the kitty from other users via the search kitty screen or directly from the Trade Kitty screen by inputting the kitty \u0026 owner details.\n3. Breed :\n    Users can initiate breeding directly from the dashboard.\n4. Update :\n    Users can update features such as Tradable status, price, and name from the dashboard by clicking on any cell which will navigate to update the kitty screen.\n5. Interactivity:\n   Make the dashboard interactive, allowing users to click on individual NFTs to access more detailed information or initiate specific actions.\n\n**Tech Stack:**\n\n- React Framework (React + Redux + React Router)\n- TypeScript \n- Babel (for backward compatibility in older browsers)\n- Jest (JavaScript Testing Framework)\n- Rust\n- Axum (Rust Web Application Framework)\n- Sled (embedded database)\n\n**Demo DApp**\n\nThe video shows how to breed and trade kitties, together with all the functionalities of the DApp\n\n[![Tuxedo DApp](https://lh3.googleusercontent.com/fife/ALs6j_GRmMkT9yNmSG5kaKdLa88zqK-5hgYvSEMCOB-qN6slEOY1qXpEWqLifkCz0ThIf80vyvjoyjnXPSUvl0BY7utO7FRYMrRaas-Y6OupQIeazbqZ7W76UVmJvU6297uHThvMl945BKMQwVykOHmBTsmmDl_GqWwbZ5QjW0vO_z2GOerml4430DuW5kG81SYqlx8GGGaoxwPNfbx38nYQWzyF2NCSt4ENSZNWFQySwo_cMnpzJcoGHkwxe3GCAdfv4SA018CtU3RghwVq0JT8-CcRwZyfiPpkiQeNH1R7w8TkHbxpWZchDryCY3zITeXsEP8Q9GO5ye-egi-TadAelazLI4dRvqz64X8WuNstZO1vTCMTGYMKo-rRSzdgp19bx8woQmVZz1FvClTCAdO1gp_mxYRmkBNSX6jOHB8tWiHNSvVAqYGkhQ0eLedbaOnyW6v_uBsBp7q33dx1MCQi3aJnVoXLBmV18dwRdU70VUQMrhPfTdeFA61YZ4Hh3cZ6akm3Gn8vuRWn7Kco0sLb_4fRwMfqH4cB8vyNttsovr0mAS_tgWEl6chdut4i0IlWjQYh_Mqj-l3qOn1A-ftb6gHxlVVzJAXAkg8I1NFkEsBZ9m04K5tKWXsWADtHAEU8r6fAXicBCOaXLca50oODHkvVBMQ5H-ow2x3tuwt0IxzufmOU2Ydm9RSjh9wmUluPnt3eKotfwKzWdPR1l-IivomYKOtTCS7ih7cddDpXd6P3_71OegKmwrrpwXYm-yj1Nhb5raDwj4wF2h2V12KmqTmgBxIZtWBKD23rfj8Pf8XVHaN-vGuBvt-RUnrx2M0dWxD8wzUZUnjRpZAqSsHfsrNHHlTr2JyTGhifukbaoloTzRcvR_2DwbdjslcHZlSmRm_G-R_84R9JgOuU12lJoOf-H6qaok6SYcle9xcEudzVoG3U0YiyFhdJzJz7fPQ76nYCzaTa_P8aZT9UGdr6YzsnLypOzYS_3kqAZJGfyiqgj101ylxAvXSE4IS0_NlymVY50Vt4au4PmPFz_CbAYObMVScW9wsplamggFmf2hdUXexNBihurRJNmwXxtF2OE607OF7l-9ZNh2bVrBtFC5czoPeXYHCISG8ghI-eR1AhqZEJ-dQwiz25OvZutSqYwXyBRo0ysxXekcgqarKN6HX5hmrdJlFrcwWWVdYNknhC6q-llw8hAmuvHS7g_-bwQqVL1vE0z7-vpEmC2Mt3q-sXzHC5WOviI2VLWjstGTTSxdv-9IvmTyLU24pSFw86J5-AaVczcLVcPrZaOCYcyE6Au307bNdeqEkSTYxkEA2D0QcYjIzrNmJR2rrwnb2Vn259aORlb1rcNGm2-_pglwkmU4k5rTF2bhXrvYNmDrFsL-EL3Zu54MTJ_FqTSYdoA5gb4YybwVDItBExUJX-Ze4hM5CzvlHE6XQrPTmLD0DXwMzjW7KWEj7UGL54EEDH4Vt1e2DBTfxum8qCglZc9BBXK63IovusDVGzYXPMZvqDbN2gKYJ2GjlbNrpIU-pgg9JMtWJyTwmjy1NRhjhQFrAQuR5CNYcXETpip0-a4mIvpYMJSyF_By70rbtbaQ7Vy2URBbK-kRrd=w1802-h1097)](https://www.loom.com/share/4445b97dddd8447c8ccafa3b9cea6bb6)\n\n\n**DApp Wireframes**\n\n[![Wallet wireframes](https://lh3.googleusercontent.com/d/1dCr5Wwi0L-fGPdwAQGFPDhmTeBQYPDy1=w3692-h1932-iv1)](https://drive.google.com/file/d/1dCr5Wwi0L-fGPdwAQGFPDhmTeBQYPDy1/view?usp=sharing)\n\n\n**Further documentation**\n\n[Testing guide](https://github.com/mlabs-haskell/TuxedoDapp/blob/master/Testing_Guide.md), [Build and run the DApp](https://github.com/mlabs-haskell/TuxedoDapp/wiki/Build-and-run-the-project), [DApp specification](https://github.com/mlabs-haskell/TuxedoDapp/wiki/DApp-specification), [APIs spreadsheet](https://github.com/mlabs-haskell/TuxedoDapp/wiki/APIs-spreadsheet), [Swagger APIs documentation](https://github.com/mlabs-haskell/TuxedoDapp/blob/master/openapi.yaml), [Frontend development libs](https://github.com/mlabs-haskell/TuxedoDapp/wiki/Frontend-development-libs), [Game design](https://github.com/mlabs-haskell/TuxedoDapp/wiki/Game-design), [Talisman wallet](https://github.com/mlabs-haskell/TuxedoDapp/wiki/Talisman-wallet), [Wireframes](https://github.com/mlabs-haskell/TuxedoDapp/wiki/Wireframes) \n\n\n**Comparative analysis**\n\n[CryptoKitties Development: A comparative analysis between EVM - Cardano - Tuxedo/Polkadot](https://docs.google.com/document/d/1kdYA9Jd100p91t9okjYncLZw_Qn6guo2Bm032mko3DU)\n\n\n**Additional extra work and experiments**\n\n- Mint_coin: \u003chttps://github.com/Off-Narrative-Labs/Tuxedo/commit/80e7b5720a384907cef89e091034fff3fe0f2b7f\u003e\n- Metadata analysis and design/experiments: \u003chttps://github.com/Off-Narrative-Labs/Tuxedo/issues/30#issuecomment-1920539885\u003e\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmlabs-haskell%2Ftuxedodapp","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmlabs-haskell%2Ftuxedodapp","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmlabs-haskell%2Ftuxedodapp/lists"}