1. Home
  2. /
  3. Ink
  4. /
  5. Ink! Simple ERC20 Token

Ink! Simple ERC20 Token - Ink Typing CST Test

Loading…

Ink! Simple ERC20 Token — Ink Code

A basic ERC20-like token implementation in Ink! supporting mint, transfer, and balance queries.

#[ink::contract]
mod token {
	#[ink(storage)]
	pub struct Token {
		total: u64,
		balances: ink::storage::Mapping<AccountId, u64>,
	}

	impl Token {
		#[ink(constructor)]
		pub fn new(amount: u64) -> Self {
		let caller = Self::env().caller();
		let mut balances = ink::storage::Mapping::new();
		balances.insert(caller, &amount);
		Self { total: amount, balances }
		}

		#[ink(message)]
		pub fn transfer(&mut self, to: AccountId, amount: u64) {
		let caller = self.env().caller();
		let caller_balance = self.balances.get(caller).unwrap_or(0);
		assert!(caller_balance >= amount);
		self.balances.insert(caller, &(caller_balance - amount));
		let to_balance = self.balances.get(to).unwrap_or(0);
		self.balances.insert(to, &(to_balance + amount));
		}
	}
}

Ink Language Guide

Ink! is a Rust-based eDSL (embedded domain-specific language) for writing smart contracts on the Substrate blockchain framework. It emphasizes safety, efficiency, and tight integration with Polkadot and Substrate ecosystems.

Primary Use Cases

  • ▸High-security smart contracts
  • ▸DeFi protocols on Substrate
  • ▸NFT minting and marketplaces
  • ▸On-chain governance modules
  • ▸Wasm-based blockchain apps

Notable Features

  • ▸Rust-based syntax
  • ▸Compile-time type safety
  • ▸Wasm target for Substrate
  • ▸Macros for contract boilerplate
  • ▸Support for storage, events, and messages

Origin & Creator

Ink! was created by Parity Technologies, the team behind Substrate and Polkadot, to provide a safe Rust-based smart contract language for WebAssembly chains. Initial development started around 2018.

Industrial Note

Ink! is primarily used in Substrate-based chains and Polkadot parachains, for high-assurance contracts in DeFi, on-chain governance, NFT minting, and other blockchain-native applications.

More Ink Typing Exercises

Ink! Simple Counter ContractInk! Owner-Only MessageInk! Simple Vault (Deposit + Withdraw)Ink! Timelock ContractInk! Simple VotingInk! Whitelist AccessInk! Event LoggerInk! Immutable Config ExampleInk! Simple Multiplier

Practice Other Languages

CReactPythonC++RustTypeScriptKotlinPHPJavaC#RubyMqlCqlN1qlCypher