Using Native Somnia Token (SOMI)
SOMI is the native token of the Somnia Network, similar to ETH on Ethereum. Unlike ERC20 tokens, SOMI is built into the protocol itself and does not have a contract address.
Kindly note that the Native Token for Somnia Testnet is STT.
This multi-part guide shows how to use SOMI for:
Payments
Escrow
Donations & Tipping
Sponsored gas via Account Abstraction
Use SOMI for Payments in Smart Contracts
A simple contract that accepts exact SOMI payments:
function payToAccess() external payable {
require(msg.value == 0.01 ether, "Must send exactly 0.01 SOMI");
}
Use msg.value
to access the native token sent in a transaction. No ERC20 functions are needed.
To withdraw collected SOMI:
function withdraw() external onlyOwner {
payable(owner).transfer(address(this).balance);
}
Deploy using Hardhat Ignition or Viem and test with a sendTransaction
call.
Build an SOMI Escrow Contract
A secure escrow contract allows a buyer to deposit SOMI and later release or refund:
constructor(address payable _seller) payable {
buyer = msg.sender;
seller = _seller;
amount = msg.value;
}
Release funds to the seller:
function release() external onlyBuyer {
seller.transfer(amount);
}
Deploy with Hardhat Ignition and pass SOMI as value
during deployment.
SOMI Tip Jar
Allow any wallet to send tips directly:
receive() external payable {
emit Tipped(msg.sender, msg.value);
}
Withdraw all tips:
function withdraw() external onlyOwner {
payable(owner).transfer(address(this).balance);
}
Frontend tip
await walletClient.sendTransaction({
to: '0xTipJarAddress',
value: parseEther('0.05'),
});
Sponsor SOMI Transactions with Account Abstraction
Using a smart account + relayer (e.g. via Privy, Thirdweb), the dApp can cover gas fees:
await sendTransaction({
to: contractAddress,
data: mintFunctionEncoded,
value: 0n, // user sends no SOMI
});
The Smart Contract function can execute mint or other logic as usual. The paymaster or relayer pays SOMI.
Conclusion
SOMI is native and used via
msg.value
,.transfer()
, andpayable
.There is no contract address for SOMI (STT for Testnet).
You can integrate SOMI into any Solidity or Viem app with no ERC20 logic.
Account Abstraction enables gasless dApps using SOMI as sponsor currency.
Last updated