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

Support for Jettons on TON blockchain #3898

Open
snowkidind opened this issue Jun 14, 2024 · 29 comments
Open

Support for Jettons on TON blockchain #3898

snowkidind opened this issue Jun 14, 2024 · 29 comments

Comments

@snowkidind
Copy link

Gentlemen thanks for supporting TON, there are many wallets on the TON ecosystem that use a 24 word mnemonic but none that use a 12 word.

Further, the method you used to generate the wallet is unknown, and because of this the wallet address you derived from your keygen method does not support Jettons. This becomes an issue when a TON user decides to send Jettons to the TON address the trust wallet generates.

Another wallet has added an import from private key feature to their wallet but alas, the common method is not being used in trust causing peoples funds (like JUSDT) to be lost in the mix.

Can you at a minimum devolve the method you used to create the twelve word mnemonic or create an escape path for mistakenly sent jettons to a trust wallet?

Thanks

See Also:
mytonwalletorg/mytonwallet#62

@ronaldoguedess
Copy link

ronaldoguedess commented Jun 15, 2024

Do you mean that the Trust Wallet method doesn't support Jettons? There is a method in their examples; I think it works. However, the seed generated by Trust Wallet is not compatible with TON's wallets. Nevertheless, it's still possible to import using the private key.

Soon I will be launching the TON Network on the ECOIN Wallet, where you will be able to use the private key as well as 12 or 24 words.
Image

@snowkidind
Copy link
Author

snowkidind commented Jun 15, 2024

I dont believe trust wallet supports jettons, unless it's recent.

Access to jettons via whatever method they used to derive a private key / address in trust wallet is not currently possible using any known methods for example, using

      const provider = tonweb.provider
      const seed = await mnemonicToSeed([mnemonic]) // 12 word mnemonic
      const keyPair = tonweb.utils.nacl.sign.keyPair.fromSeed(seed)

      const wallet = new tonweb.wallet.all.v4R2(provider, {
        publicKey: keyPair.publicKey,
        wc: 0
      })

      console.log(keyPair.secretKey.toString()) // private key doesnt generate the trust wallet address shown in wallet

@ronaldoguedess
Copy link

The Trust Wallet core supports this, but the Trust Wallet App does not. As I mentioned earlier, the ECOIN Wallet will soon introduce TON Network, with support for private keys, a 12-word, or 24-word seed phrase, and also Jettons.

@snowkidind
Copy link
Author

bro stop spamming the githubs this is not an appropriate channel

@ronaldoguedess
Copy link

ronaldoguedess commented Jun 15, 2024

bro stop spamming the githubs this is not an appropriate channel

I understand your frustration. I just said I will launch what you need to solve your problem, and I apologize if my approach seemed spammy.

@snowkidind
Copy link
Author

developer community can read the instructions, we dont need to be battered by repeat information. please consider this moving forward.

@Milerius
Copy link
Collaborator

Milerius commented Jun 15, 2024

Hello, we will begin the development of Ton Jettons in TrustWallet App next week, and will also add Ton Connect.

In terms of wallet compatibility, it's important to remember that TrustWallet is a multichain wallet that relies on the widely used standards for generating seed and private keys: BIP39 and BIP44. Regrettably, the Ton architecture has adopted a different approach that we cannot support without compromising compatibility for our users. Nevertheless, it will still be possible to import the private key, and you should be able to see your Ton Jettons within the next weeks. Additionally, you'll be able to access Ton Ecosystem DApps directly within the TrustWallet app.

@ronaldoguedess
Copy link

Read about the seed: #3188

@Milerius
Copy link
Collaborator

Read about the seed: #3188

We understand the request, and to ensure complete transparency, incorporating this into the app for smooth user experience would necessitate significant rework and architectural design changes. This is specifically to support a single blockchain with a unique seed generation method. While we're not ruling it out, it's not an update you can expect in the near future.

@ronaldoguedess
Copy link

Hello, we will begin the development of Ton Jettons in TrustWallet App next week, and will also add Ton Connect.

In terms of wallet compatibility, it's important to remember that TrustWallet is a multichain wallet that relies on the widely used standards for generating seed and private keys: BIP39 and BIP44. Regrettably, the Ton architecture has adopted a different approach that we cannot support without compromising compatibility for our users. Nevertheless, it will still be possible to import the private key, and you should be able to see your Ton Jettons within the next week. Additionally, you'll be able to access Ton Ecosystem DApps directly within the TrustWallet app.

That's great news! 👏🏻 You're absolutely correct; it could affect the compatibility for TW users. What's your plan regarding the Webprovider? Are you considering adding support for TON dapps on the Trust Web3 Provider (https://github.com/trustwallet/trust-web3-provider), or will you opt to implement Ton Connect (trustwallet/trust-web3-provider#529)?

Also, considering that TON Connect currently lacks a JAVA/KOTLIN library, are you planning to develop something to address this gap?

@Milerius
Copy link
Collaborator

Hello, we will begin the development of Ton Jettons in TrustWallet App next week, and will also add Ton Connect.
In terms of wallet compatibility, it's important to remember that TrustWallet is a multichain wallet that relies on the widely used standards for generating seed and private keys: BIP39 and BIP44. Regrettably, the Ton architecture has adopted a different approach that we cannot support without compromising compatibility for our users. Nevertheless, it will still be possible to import the private key, and you should be able to see your Ton Jettons within the next week. Additionally, you'll be able to access Ton Ecosystem DApps directly within the TrustWallet app.

That's great news! 👏🏻 You're absolutely correct; it could affect the compatibility for TW users. What's your plan regarding the Webprovider? Are you considering adding support for TON dapps on the Trust Web3 Provider (https://github.com/trustwallet/trust-web3-provider), or will you opt to implement Ton Connect (trustwallet/trust-web3-provider#529)?

Also, considering that TON Connect currently lacks a JAVA/KOTLIN library, are you planning to develop something to address this gap?

Those choice(s) will be made by @y3fers0n & @gastonm5 who are leading this initative.

@ffrediani
Copy link

@Milerius would you comment about this issue regarding derivation path that seems to be different in TrustWallet ? I guess this would have no issues regarding compromising compatibility for our users. It would be just a choice to be made like other wallets did and be the same so an user importing their words into either wallet funds will appear as expected.

If is necessary a significant architectural changes than so be it. At the end at the user's benefit to have a more seamless app for their choice and not have to worry about details like derivation path, private key etc.

Importing the private key is always something undesirable because it needs further steps to get this information and it is not as friendly as importing 12 or 24 words. It can be a temporary solution, but not definitive.

Good to see there is work going on this topic by TW Team.

@Doferesouleymane
Copy link

Cool@285

@trustwallet trustwallet deleted a comment from Moormemar Jun 27, 2024
@trustwallet trustwallet deleted a comment from Moormemar Jun 27, 2024
@ronaldoguedess
Copy link

@y3fers0n @gastonm5
Considering that TON Connect currently lacks a JAVA/KOTLIN library, are you planning to develop something to address this gap?

Btw, any news related to the TON?

@satoshiotomakan
Copy link
Collaborator

Hi @snowkidind, could you please clarify, did you try to send Jettons to an initialized TON address (ever held funds)? If I'm not mistaken, the wallet needs to be initialized so you can transfer Jettons to the address.
We actively work on Jetton support, and just recently added two helper functions in WalletCore to generate Jetton address to check the balance: #3922 (please take a look at unit tests added)
Also we already support Jetton transfer: #3331 (take a look at unit tests added)
Soon Trust Wallet apps will allow to transfer Jettons

Further, the method you used to generate the wallet is unknown, and because of this the wallet address you derived from your keygen method does not support Jettons. This becomes an issue when a TON user decides to send Jettons to the TON address the trust wallet generates.

@satoshiotomakan
Copy link
Collaborator

@snowkidind @ronaldoguedess @ffrediani
The problem is that TON 24-words mnemonic doesn't follow BIP39 standard. It requires to implement a TON specific derivation method, and derivation path doesn't even play a role in this derivation. Please also note that it only allows to derive ONE account, but Trust Wallet (and WalletCore) is multi-chain oriented.

would you comment about this issue regarding derivation path that seems to be different in TrustWallet ? I guess this would have no issues regarding compromising compatibility for our users. It would be just a choice to be made like other wallets did and be the same so an user importing their words into either wallet funds will appear as expected.

But we consider adding support for TON 24-words specific mnemonic for TON chain only in the near future, and if you import it, you can only see TON account. The task is in our roadmap, it requires significant changes in our API

@satoshiotomakan
Copy link
Collaborator

Hi @ronaldoguedess, yes we plan to add support for X25519 "crypto_box" key exchange protocol to establish TON Connect Session, and also signing a transaction with externally generated data (needed for sendTransaction)

Considering that TON Connect currently lacks a JAVA/KOTLIN library, are you planning to develop something to address this gap?

@ronaldoguedess
Copy link

Hi @ronaldoguedess, yes we plan to add support for X25519 "crypto_box" key exchange protocol to establish TON Connect Session, and also signing a transaction with externally generated data (needed for sendTransaction)

Is the team working on it? Deadline? I'm asking because this is very important for the moment.

@satoshiotomakan
Copy link
Collaborator

@ronaldoguedess, it's estimated to be done early next week

@snowkidind
Copy link
Author

Just wanted to say that the fix for jettons inadvertently sent to trust wallet was by creating a private key from mnemonic using the derivation path:

m/44'/607'/${index}'

@ronaldoguedess
Copy link

Just wanted to say that the fix for jettons inadvertently sent to trust wallet was by creating a private key from mnemonic using the derivation path:

m/44'/607'/${index}'

I didn't understant, could you give more details?

@snowkidind
Copy link
Author

@satoshiotomakan
Copy link
Collaborator

Hi @ronaldoguedess, X25519 "crypto_box" key exchange protocol is available since 4.1.4

@ronaldoguedess
Copy link

ronaldoguedess commented Aug 12, 2024

Hi @ronaldoguedess, X25519 "crypto_box" key exchange protocol is available since 4.1.4

Yeah, I saw that, but what can I do with this crypto box? I waiting some sample in Java or Kotlin to use Ton Connect, or the cypto box is to encrypt memo?

@satoshiotomakan
Copy link
Collaborator

@ronaldoguedess CryptoBox is used to establish a TON Session between dapp and the wallet. TON Connect in general is a complex protocol, and WalletCore provides all cryptographic and wallet functions required for its support.
There won't be an TON Connect example in WalletCore as it's out of scope.

@ronaldoguedess
Copy link

@ronaldoguedess CryptoBox is used to establish a TON Session between dapp and the wallet. TON Connect in general is a complex protocol, and WalletCore provides all cryptographic and wallet functions required for its support. There won't be an TON Connect example in WalletCore as it's out of scope.

I understand that. I was hoping you might implement a way to utilize that directly. However, is there at least a way to connect and interact with TON dApps using injection, similar to what the Trust web3-provider does?

I noticed this functionality was added in this commit, but I couldn't find a sample in Java/Kotlin to work with it.

@satoshiotomakan
Copy link
Collaborator

@ronaldoguedess sorry I can't advise on that, better to create a question at the web3-provider repo.

However, is there at least a way to connect and interact with TON dApps using injection, similar to what the Trust web3-provider does?

@WayneLaw-Crypto
Copy link

WayneLaw-Crypto commented Sep 19, 2024

Hi, @satoshiotomakan. Ton network has a new feature for jettons, it's about mintless jettons.
doc: mintless jettons
related tx: https://tonviewer.com/transaction/9b6bd2e46536392323809b5bb38b4492f9614a2d54fdf63baa46e3fc53c6474b

I find that trust support custom_payload in Transfer message but not support custom_payload in JettonTransfer message. it seems that if trust do this support, the mintless jettons transfer can be supported.
Can you add this to your plan?

@satoshiotomakan
Copy link
Collaborator

Hi @WayneLaw-Crypto, thank you for the note. It's on our roadmap already, but low priority at least for now. I'll let you know once we have any ETA

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

7 participants