Deploying Solana Token from Scratch: A Step-by-Step Guide
As a developer building on the Solana blockchain, you’ve probably come across the popularity of Solana-based tokens. One such token is SPL (Solana Plasma), which is used for a variety of applications, including decentralized finance (DeFi) platforms and decentralized governance systems. In this article, we’ll walk you through the process of deploying an SPL token from scratch using the Solana SDK.
Assumptives
Before you begin, make sure you have the following:
- Solana CLI installed on your computer
- Solana Node running the mainnet testnet (we recommend using the solana-cli tool to interact with the node)
- Basic understanding of Solidity and Solana concepts
Step 1: Clone the SPL token store
Create a new repository for your SPL token by cloning the official SPL token store:
This will create a new directory structure with the necessary files and folders.
Step 2: Set up your development environment
Create a new Solana wallet using the command "solana-keygen". This will generate a JSON key pair for your wallet.
solana-keygen --key-size=4096 --out keypair.json wallet
This will create a "wallet.json" file containing your private and public keys.
Step 3: Configure a Solana Node
Update your Solana node configuration to use the solana-cli tool to interact with your local blockchain. Create a new file "config.toml" in the directory "~/.solana/cli/config.toml":
[cli]
keypair = "path/wallet.key"
Replace “path/wallet.key”” with the actual path to your wallet JSON file.
Step 4: Initialize and build the token
Create a new folder for your token and initialize it with the following commands:
mkdir -p tokens/spl-token
cd tokens/spl-token
npm install solana cli --save-dev
npx solana-cli init spl-token
This will create a new “spl-token” directory with the basic configuration.
Step 5: Create and deploy your token
Create a new file called “spl-token.sol” “tokens/spl-token” directory. This is the Solidity smart contract for your SPL token.
// tokens/spl-token/spl-token.sol
pragma strength ^ 0,8,0;
contract SplToken {
mapping (address => uint256) public balances;
function deposit(address _owner, uint256 amount) public onlyOwner {
balances[_owner] += amount;
}
function draw(address _owner, uint256 amount) public onlyOwner {
require(balances[_owner] >= amount, "Balance insufficient");
balances[_owner] -= amount;
}
}
function onlyOwner() internal display requiresOwner {
request(msg.sender == address(_owner), "Only the owner can call this function");
}
This contract provides basic functionality for depositing and withdrawing SPL tokens.
Step 6: Create and activate your token
Compile your spl-token.sol
file with the following command:
solc --bin spl-token.sol --allow-abi -r solana
This will create a new file spl-token.json
containing the compiled contract bytecode.
Deploy your token to the Solana mainnet testnet using the following commands:
npx solana-cli deploy --pubkey \
--chainid \
--contractname spl-id \
--storageaccount \
--accounts account1,account2,account3 \
--gas 2000000 \
--gas price 10 ether
Replace
with the actual public key of your mainnet wallet.