Very new to the Solana ecosystem. As I come from an ethereum background it's pretty straight forward to create your custom ERC20 token implementation. With Solana I know we can create a token using spl-token standard but how would one create a custom implementation of it so that they can easily be recognised by wallets and are tradable on dexes too. For example msol and jitosol from the looks of it might have a custom token contract. How would one go about building the same thing or add customizations.

Thanks in advance

2 Answers 2


First of all, msol and jitosol are both owned by the standard token program, so they don't use a custom program. You can see this by calling getProgramAccount, eg:

curl https://api.mainnet-beta.solana.com -X POST -H "Content-Type: application/json" -d '
    "jsonrpc": "2.0",
    "id": 1,
    "method": "getAccountInfo",
    "params": [
        "encoding": "jsonParsed"
' | grep owner

You'll see the owner is TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA. Jito SOL's mint is J1toso1uCk3RLmjorhTtrVwY9HJ7X8V9yYac6Y7kGCPn and you'll see the same there.

So you might be slightly mis-understanding where various functionality lives, or needs to live. Marinade and Jito absolutely have custom programs on the network, but their mint itself is just a token and doesn't have custom capabilities.

To answer your question directly, generally wallets, explorers, etc. only support mints owned by the token program and the new token extensions program. They can support others of course, but those are generally the ones everyone supports. You'd need to convince various players in the ecosystem to support your new standard if you created one.

Token extensions likely provide what you're looking for. This is a new token program with various new capabilities that can be added to tokens, which provides a huge amount of new flexibility. For example you can add metadata, or add a transfer hook to add custom logic on every transfer. See https://solana.com/developers/guides/token-extensions/getting-started

There's also a great video introducing them with some example use cases here: https://www.youtube.com/watch?v=CEuKahqOYbs

  • thanks for the reply @Callum M. Yes i looked into the extensions but none of them fulfil what I required. A lot of customisation is needed in the functions in addition to transfers too. I had a sense that if I were to create a custom token program, it might involve some persuasion with wallet providers and other listing parties. Commented Jan 29 at 6:52
  • this shouldn't be marked as solution. While it does answer the question partially, it does not address it. The guy is looking for a way to deploy a mint address that starts with a custom name "e.g jitoWhatever".
    – Iulian
    Commented Mar 25 at 9:33

SPL Tokens on Solana do not need custom contracts for their deployment. The native SPL Token contract includes a InitializeMint function (source) that allows you to create a new token on Solana. Unlike Ethereum, Solana programs (Solana's version of smart contracts) are stateless -- so running this instruction doesn't change the underlying program. Instead it creates a new Mint account (which is what it sounds like you are trying to do). Technically running that instruction is all you need to do to have a functional token, however, most tokens are also initiated with a Metaplex metadata account to effectively append a recognizable name and image to the token. Here are a few resources that I think would be helpful to you:

  • hey @AMilz I am aware of it. What i am trying to achieve is update some logic in already existing functions provided by spl-token and add some new functions. example update transfer function logic, add some new state, add some new functions on spl-token etc. Is this achievable with wallets recognising my updated spl-token implementation? Commented Jan 28 at 5:46
  • 1
    You can't add or change funciton in the SPL token program. Based on your description here, I think you want to Create your own custom program that uses the SPL token program you could then add any other functionality you might want. Check out these examples. You can see those programs use the SPL token program, then can implement their own logic. All tokens will then be owned by the token program but also interact w/ your program. Also Agree with @callum that Extensions may accomplish what you want. See his response.
    – AMilz
    Commented Jan 28 at 21:00
  • thanks for the clarifications @AMilz Commented Jan 29 at 6:54

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.