metadata: {"signature": "0x2c921413d1a3a390d90d9c04c224486b566fb54ebe4067e22bfc5df370ae78ce1467ca0c0f7602dac3c777032a6a1e363d6ddc267aac1330c14215bc85e4e1b51c", "application": {"round": "0xd2d99614321becd7cd0636715bbb4c94968e6271", "answers": [{"type": "email", "hidden": true, "question": "Email Address", "questionId": 0, "encryptedAnswer": {"ciphertext": "8wLYzcczulWhxR4Uute+ugs4Mog2i5iJyEhx1ttK3/aCbK1e4mFfrCHxwCGsF5VN", "encryptedSymmetricKey": "6214690e51dd77b0dfea7589969323f391912db99c45bb39ffc6ed586a44181764cf18db2b1f90948941f7ab856b8a10d191b534bf8b2c1b8084007823028a2a231d6d3c9a8dc74d1a63f28377ba5c1bcf1b0ecfec36435ec0f00bbe19a17096d0590bf398bb649b860509bb9777e1d60476cc4d4de6767e1059669bc5b21ba10000000000000020895a6a1c544b1de9034bbbc235ef41ceac032bc957f7b019be296a2fb51f156ba752663be8019518679b7f3720a27e8e"}}, {"type": "short-answer", "answer": "@wikig16", "hidden": true, "question": "Telegram Handle", "questionId": 1}, {"type": "short-answer", "answer": "https://github.com/Tonspay/Telegram-Webapp-CloudStorag-Multichain-Wallet-Solution", "hidden": true, "question": "Project GitHub Repo", "questionId": 2}, {"type": "short-answer", "hidden": true, "question": "Link to your Public Group Chat", "questionId": 3}, {"type": "short-answer", "answer": "", "hidden": true, "question": "Have you participated in a previous Gitcoin Grants Round? If so, please name the rounds or link the builder profile associated with previous rounds.", "questionId": 4}, {"type": "paragraph", "answer": "The Tonspack Cloud Storage Wallet SDK is a developer tool designed to create non-custodial wallets within Telegram webapps. It simplifies the process of building secure, multichain wallets by leveraging Telegram's cloud storage system to store and retrieve users' private keys.  Problem Addressed: Developers often face challenges when building secure, user-friendly non-custodial wallets. Managing private keys securely, ensuring fast recovery, and integrating multichain support can be complex, especially on mobile platforms.  Key Solutions: Automated Key Management: The SDK automatically generates a master keypair and securely stores it in Telegram\u2019s cloud storage, eliminating the need for external servers or manual key backups. Seamless Wallet Recovery: Users can instantly recover their wallet across sessions by fetching the encrypted master keypair from the cloud. Multichain Support: It simplifies generating keypairs for multiple blockchain networks, streamlining the integration of various chains into a single wallet. By using this SDK, developers can focus on building their dApps while handling secure key management and multichain wallet generation effortlessly inside Telegram.", "hidden": true, "question": "Provide a brief overview of your tool, library, or framework. What specific problem or inefficiency in the development process does it address?", "questionId": 5}, {"type": "paragraph", "answer": "Simplifying Non-Custodial Wallet Creation: Developers no longer need to manage complex cryptography or external storage solutions for private keys. The SDK automates key generation and securely stores them in Telegram\u2019s cloud, saving time on security infrastructure.\n\nInstant Wallet Recovery: Users can seamlessly recover their wallets across sessions without backup headaches, improving the user experience and reducing support needs.\n\nMultichain Integration: By automating multichain keypair generation, the SDK makes it easy to support multiple blockchains, accelerating dApp development without needing specialized blockchain knowledge.\n\nThese features dramatically speed up wallet integration, improve security, and simplify Web3 onboarding for Telegram-based apps.", "hidden": true, "question": "How does your project reduce development barriers, improve efficiency, or enhance the security of Web3 projects? Please provide specific examples or metrics if available.", "questionId": 6}, {"type": "paragraph", "answer": "Currently their are 3 different protocol using our SDK , and 8 protocols are now working on it .", "hidden": true, "question": "Describe the current usage and support for your tool within the developer community. This could include GitHub stars, downloads, or testimonials from developers.", "questionId": 7}, {"type": "paragraph", "answer": "Q4 2024 - Advanced SDK Enhancements\n\nFeature Development: Enhance support for more blockchain networks, expanding multichain wallet capabilities.\nImproved Security: Implement end-to-end encryption improvements and advanced password recovery options for users.\nDeveloper Tools: Build detailed documentation, tutorials, and code examples for easy adoption by Telegram dApp developers.\nUse of Funds:\n\nHire additional developers to focus on expanding blockchain support and security audits.\nAllocate resources for API documentation and educational materials.\nQ1 2025 - Integration with Web3 Ecosystem\n\nTonconnectUI / WalletConnect / wallet-adapter-react Integration: Integrate the SDK into existing Web3 frameworks for broader adoption.\nDeveloper Outreach: Conduct workshops and hackathons to encourage developers to use the SDK in their Telegram webapps and minigames.\nUse of Funds:\n\nMarketing and outreach for developer engagement (e.g., hackathons, webinars).\nBuild partnerships with Web3 platforms to streamline the SDK into existing Web3 workflows.", "hidden": true, "question": "Outline your project's roadmap and how the grant funds will be used to achieve your development goals.", "questionId": 8}, {"type": "paragraph", "hidden": true, "question": "For any project deploying smart contracts on blockchain networks, please list all your deployer addresses and their corresponding blockchain networks. Use this format for each entry: [deployer_address], [chain_id]\u2014for example, 0x123abc..., 42161 (This represents a deployer address on the Arbitrum network). Please include a separate line for each unique deployer address and blockchain combination.", "questionId": 9}], "project": {"id": "0x038ba1098f3370802719ee7c5769fcefdf20cdaca1ea483c4fd3f4d19eab7881", "title": "Tonspack Telegram Non-custodial Wallet SDK", "logoImg": "bafkreidaks26nnzbspm3t2ujmx4wmvgvqepn6pnbf46jzilrynutc5i6ja", "metaPtr": {"pointer": "bafkreihcteeqpl4lj6toudxww2ar46ihw3gftra5tarhgvzd2byuzb5z2q", "protocol": "undefined"}, "website": "https://www.tonspack.com/sdk.html", "bannerImg": "bafkreibfwfsh3qoumj5teyyi2j2qy5v4amdstm5gumgaxqn2s5mnlwqdky", "createdAt": 1729165277146, "userGithub": "carzygod", "credentials": {"github": {"type": ["VerifiableCredential"], "proof": {"jws": "eyJhbGciOiJFZERTQSIsImNyaXQiOlsiYjY0Il0sImI2NCI6ZmFsc2V9..1dmMBuLhJkVF7ZfFQGDgL3dDJloGDB1vfdu61Ew2P-SOpBYyhsEb0sJyN3Hp85HaP3y3IQwn9I_7hTohGiJeCA", "type": "Ed25519Signature2018", "created": "2024-10-17T11:47:36.380Z", "proofPurpose": "assertionMethod", "verificationMethod": "did:key:z6MkghvGHLobLEdj1bgRLhS4LPGJAvbMA1tn2zcRyqmYU5LC#z6MkghvGHLobLEdj1bgRLhS4LPGJAvbMA1tn2zcRyqmYU5LC"}, "issuer": "did:key:z6MkghvGHLobLEdj1bgRLhS4LPGJAvbMA1tn2zcRyqmYU5LC", "@context": ["https://www.w3.org/2018/credentials/v1"], "issuanceDate": "2024-10-17T11:47:36.380Z", "expirationDate": "2025-01-15T11:47:36.380Z", "credentialSubject": {"id": "did:pkh:eip155:1:0xf46c8982c90792F50e840Cb01eD90881D45aFF81", "hash": "v0.0.0:kiZLqa9bT/19SpUiBQdbAoIxWQgj9Sc1E7ZqKo2GJ/o=", "@context": [{"hash": "https://schema.org/Text", "provider": "https://schema.org/Text"}], "provider": "ClearTextGithubOrg#Tonspay#32446081"}}, "twitter": {"type": ["VerifiableCredential"], "proof": {"jws": "eyJhbGciOiJFZERTQSIsImNyaXQiOlsiYjY0Il0sImI2NCI6ZmFsc2V9..ieVnkOYNvsrQSW1MyxwAtmST31UtHeAPO4w9EMxIjqvQmvOQ-LwqIRflhR-QJX8nW_YEaHwJqNZnR1xrTdksDA", "type": "Ed25519Signature2018", "created": "2024-10-17T11:33:11.186Z", "proofPurpose": "assertionMethod", "verificationMethod": "did:key:z6MkghvGHLobLEdj1bgRLhS4LPGJAvbMA1tn2zcRyqmYU5LC#z6MkghvGHLobLEdj1bgRLhS4LPGJAvbMA1tn2zcRyqmYU5LC"}, "issuer": "did:key:z6MkghvGHLobLEdj1bgRLhS4LPGJAvbMA1tn2zcRyqmYU5LC", "@context": ["https://www.w3.org/2018/credentials/v1"], "issuanceDate": "2024-10-17T11:33:11.185Z", "expirationDate": "2025-01-15T11:33:11.185Z", "credentialSubject": {"id": "did:pkh:eip155:1:0xf46c8982c90792F50e840Cb01eD90881D45aFF81", "hash": "v0.0.0:986xVw1uXlK1DdcLfKBpjDdKgci8EqyRajllA58Ja5E=", "@context": [{"hash": "https://schema.org/Text", "provider": "https://schema.org/Text"}], "provider": "ClearTextTwitter#tonsprotocols"}}}, "description": "# CloudStorage Wallet SDK\n\nDocs :\nhttps://docs.tonspack.com/sdk/cloudstorage-wallet-sdk\n\nDemo:\nhttps://web.telegram.org/a/#?tgaddr=tg%3A%2F%2Fresolve%3Fdomain%3Dtonspack_bot%26appname%3Dcsdemo\n\nSource Code:\n\nhttps://github.com/Tonspay/Tonspack-HD-generator\n\nhttps://github.com/Tonspay/Telegram-Webapp-CloudStorag-Multichain-Wallet-Solution\n\nNPM :\n\nhttps://www.npmjs.com/package/@tonsprotocol/telegram-cloudstorage-wallet\n\nhttps://www.npmjs.com/package/@tonsprotocol/hdwallet\n\nOverview\nThe Cloud Storage Wallet SDK allows developers to build fully non-custodial wallets for dApps inside Telegram webapps. The SDK automatically generates a master keypair, lets users set up a password for encryption, and derives multichain keypairs using the HD Wallet SDK. The master keypair is securely stored in Telegram\u2019s cloud storage, ensuring that users can recover their wallet in subsequent sessions.\n\nFeatures\nAutomatically generate a master keypair.\n\nSecure password setup for encryption.\n\nDerive multichain keypairs using HD wallet functionality.\n\nAutomatically store and retrieve the master keypair in Telegram\u2019s cloud storage.\n\nNon-custodial, ensuring full control for the user.\n\n\nGetting Started\nInstall the SDK: Install either the HD Wallet SDK or the Cloud Storage Wallet SDK, depending on your use case.\n\nGenerate Keypairs: Use the HD Wallet SDK to generate multichain keypairs or the Cloud Storage Wallet SDK for fully non-custodial wallet management.\n\nBuild dApps: Use the SDK\u2019s simple API to integrate wallet functionality into your Telegram webapps, allowing users to manage crypto assets seamlessly across multiple chains.\n\nHow to use it ?\nInstall the package\n\n```\npnpm i @tonsprotocol/telegram-cloudstorage-wallet\nNow try use it in your font-end\n```\n```\nimport CloudStorageWallet from \"@tonsprotocol/telegram-cloudstorage-wallet\" \n\n```\nawait CloudStorageWallet.init(\"mywallet\")\n\n# HD Wallet SDK\n\nDocs: \nhttps://docs.tonspack.com/sdk/hd-wallet-sdk\n\nA wallet to generate master keypair for multichians stander.\n\nOverview\nThis SDK allows developers to generate hierarchical deterministic (HD) wallets following the BIP-44 standard. Using a master keypair, developers can derive keypairs for different blockchain networks, enabling support for multiple chains in a single wallet.\n\nFeatures\nGenerate a master keypair.\n\nDerive keypairs for different blockchain networks.\n\nCompliant with the BIP-44 standard for HD wallets.\n\nSupport for multiple chains.\n\nCurrently Tonspack HD wallet sdk support follow chains\nEVM\n\nTON\n\nSOLANA\n\nNow working on chains support TODO :\nTRON\n\nBTC\n\nSUI\n\nAPTOS\n\nCOSMOS\n\nHow to use this SDK ?\nTonsprotocol/HDwallet SDK support many actions including\n\nGenerate new wallet\n\nGenerate keypairs for different chains stander\n\nSign message in different stander\n\nSign and get the signed transaction (Limited chains)\n\nGenerate the keypair\n\nYou can create a wallet by new it .\n\n```\nimport { HDWallet } from \"@tonsprotocol/hdwallet\";\n\nnew HDWallet()\n```\n\nOr you can add password\n\n```\nimport { HDWallet } from \"@tonsprotocol/hdwallet\";\n\nnew HDWallet(\n  {\n    pwd:\"helloworld\", // Optional\n    path:123, //Optional . default 1 \n  }\n)\n\n```\nGet the keypairs\n\nYou will got the Keypair for the support chains :\n\n```\ninterface objKP {\n  naclKp: {\n    publicKey: Uint8Array;\n    secretKey: Uint8Array;\n  };\n  evmKp: {\n    address: string;\n    privateKey: string;\n  };\n  solKp: {\n    address: string;\n    privateKey: string;\n  };\n  tonKp: any;\n}\n```\nRecover from master keypair\n\nYou can recover your keypair with path/password via :\n\n```js\nHDWallet.fromPrivateKey(\n  {\n        sk:\"2Lte2V623NW7pafsAbpzGTQQ8y6Kbnzwop39RyybkPFessboN92d2pUfZi4Xi8KkFccqmC1zyRZ6wfRY2EKgqDu6\",\n        pwd:\"1234\",\n        path:16\n  }\n)\n```\nor\n\n```ts\nHDWallet.fromPrivateKey(\n  {\n        sk:\"2dnv6i5vLQFRFFQKpyVhxvijQHE7orgReQJVJ12PboKw\",\n  }\n)\n\n```\nHow it works ?\nYou can check the source code for details .\n\nThe core is base on BIP-44 (will add BIP-39 soon)\n\n```ts\n  private fromPk(sec:string,path:number,pwd?:string) {\n    let rawKey : Buffer;\n    if(pwd)\n    {\n      rawKey = Buffer.from(bs58.decode(\n        decryptByDES(sec,pwd)\n      ))\n    }else{\n      rawKey = Buffer.from(\n        bs58.decode(sec)\n      );\n    }\n    const master = hd.hdkey.fromMasterSeed(\n      Buffer.from(\n        bs58.decode(sec))\n      )\n      ;\n    const derive = master.deriveChild(path);\n    const evmWallet = derive.getWallet();\n    const naclKp = nacl.sign.keyPair.fromSeed(\n      Uint8Array.from(evmWallet.getPrivateKey())\n    );\n\n\n    return {\n      naclKp: naclKp,\n      evmKp: {\n        address: evmWallet.getAddressString(),\n        privateKey: evmWallet.getPrivateKeyString(),\n      },\n      solKp: {\n        address: bs58.encode(naclKp.publicKey),\n        privateKey: bs58.encode(naclKp.secretKey),\n      },\n      tonKp: ton.getTonWalletV4KeyPair(Buffer.from(naclKp.secretKey), 0),\n    } as objKP;\n  }\n```", "lastUpdated": 0, "projectGithub": "Tonspay", "projectTwitter": "tonsprotocols"}, "recipient": "0xA773B474C0432E5E936C4580Ff3B514cb89b9dB9"}}