spl-token --program-id TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb create-token --transfer-hook 2PLEb1rym2rWBMArTCpgYYuJuQVF3ViJZwjSBprbJyQd
2PLEb1rym2rWBMArTCpgYYuJuQVF3ViJZwjSBprbJyQd: TRANSFER_HOOK_PROGRAM_ID
TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb: TOKEN_2022_PROGRAM_ID
Deploy transfer hook program (use this code and IDE to deploy and get TRANSFER_HOOK_PROGRAM_ID program id)
use anchor_lang::{
prelude::*,
system_program::{create_account, CreateAccount},
};
use anchor_spl::{
associated_token::AssociatedToken,
token_interface::{transfer_checked, Mint, TokenAccount, TokenInterface, TransferChecked},
};
use spl_tlv_account_resolution::{
account::ExtraAccountMeta, seeds::Seed, state::ExtraAccountMetaList,
};
use spl_transfer_hook_interface::instruction::{ExecuteInstruction, TransferHookInstruction};
declare_id!("2PLEb1rym2rWBMArTCpgYYuJuQVF3ViJZwjSBprbJyQd");
#[program]
pub mod transfer_hook {
use super::*;
pub fn initialize_extra_account_meta_list(
ctx: Context<InitializeExtraAccountMetaList>,
) -> Result<()> {
Ok(())
}
pub fn transfer_hook(ctx: Context<TransferHook>, amount: u64) -> Result<()> {
return err!(MyError::AmountTooBig);
Ok(())
}
}
#[derive(Accounts)]
pub struct InitializeExtraAccountMetaList {}
#[derive(Accounts)]
pub struct TransferHook {}
#[error_code]
pub enum MyError {
#[msg("Can not transfer")]
AmountTooBig,
}
// Use this tool to deploy contract: https://beta.solpg.io/
Copy private key from bosG8sKTkkHfsNomPHCYZJDZrbx7nHnY3xHRhskFNd4.json
Import to phantom wallet (Using feature import private key)
https://solana.com/developers/guides/getstarted/how-to-create-a-token
spl-token --program-id TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb create-token --transfer-hook 2PLEb1rym2rWBMArTCpgYYuJuQVF3ViJZwjSBprbJyQd
=> Example: Mint address: 9pan9bMn5HatX4EJdBwg9VgCa7Uz5HL8N1m5D3NdXejP
spl-token create-account 9pan9bMn5HatX4EJdBwg9VgCa7Uz5HL8N1m5D3NdXejP
spl-token mint 9pan9bMn5HatX4EJdBwg9VgCa7Uz5HL8N1m5D3NdXejP 10000000000000
spl-token accounts
solana balance
solana balance
solana airdrop 2
solana config set --url https://api.devnet.solana.com
solana config get
solana config set --keypair ~/.config/solana/id.json (keypair file when creating by solana-keygen)
spl-token create-token
Creating token 9fGqUm9ZRkHDS7TQ3ombfkro9Ay1gcSmAkUnHPadVuS4 under program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA
Address: 9fGqUm9ZRkHDS7TQ3ombfkro9Ay1gcSmAkUnHPadVuS4
Decimals: 9
Signature: 3Vmm7zjtSKaxRZDwRRN9cvQpYKxjEkGPhY8f668VfXDkSVPdR9K3M8GLMnNDVUBaTCXFmCT7u5hcmNrLuq7rv6vu
spl-token create-account 9fGqUm9ZRkHDS7TQ3ombfkro9Ay1gcSmAkUnHPadVuS4
spl-token mint 9fGqUm9ZRkHDS7TQ3ombfkro9Ay1gcSmAkUnHPadVuS4 20000000
=> Working on phantom wallet (transfer or view token)