Smart contracts in plain JavaScript.
No Solidity. No Rust. No new language to learn. Write contracts in JavaScript, test them in your browser, deploy to a chain with 5-second finality and post-quantum signatures.
It looks like the code you already write.
// A subscription that fires itself.
// Customer signs once. Cron does the rest.
function subscribe(amountPerWeek) {
storage.set('sub:' + msg.sender, {
amount: amountPerWeek,
nextCharge: chain.timestamp + 7 * 86400,
});
cron.schedule(this.address, 'chargeAll', '@daily');
emit('Subscribed', { user: msg.sender, amount: amountPerWeek });
}
// Auto-called every day by the chain itself.
function chargeAll() {
for (const [addr, sub] of storage.entries('sub:')) {
if (chain.timestamp >= sub.nextCharge) {
E(ASE).transferFrom(addr, storage.merchant, sub.amount);
sub.nextCharge += 7 * 86400;
}
}
}Deployed as plain source. Readable on-chain. Verifiable in a single hash compare. Reentrancy structurally impossible.
Write your contract in JavaScript.
Use storage, emit, msg, assert — familiar globals injected by the VM. ES module syntax. No compiler, no ABI generation, no build step.
Test it live in your browser.
The contract playground at testnet.asentum.com/playground lets you write, deploy, and interact with contracts without installing anything.
Deploy to testnet in seconds.
One click from the playground, or use the SDK and CLI. Your contract is live with 5-second finality. Post-quantum signed from the first block.
Everything you need. Nothing you don't.
In-browser IDE with templates, deploy, and interact — no install.
@asentum/sdkAsentumClient, AsentumWallet, AsentumContract. ~14 KB. Node + browser. On npm.
@asentum/payStripe-shaped payments SDK. Charges, customers, checkout sessions, webhooks.
ARC-20 + ARC-21Fungible token + scheduled-execution standards. The vocab the ecosystem speaks.
JSON-RPC APIEthereum-compatible. Works with ethers.js, viem, and existing Web3 tools.
Block ExplorerBrowse blocks, transactions, contract source, validator activity, faucet.
What your contract has access to.
Contracts run inside SES (Secure ECMAScript) — a hardened JavaScript sandbox. No filesystem, no network, no eval. These are the globals the VM injects:
storagePersistent key-value store. Read and write contract state.
emitEmit named events with data. Indexed and queryable.
msgTransaction context: sender address, value, contract address.
chainBlock context: blockNumber, blockTimestamp, chainId.
cronSchedule future calls. The chain itself fires them on time.
E(addr)Cross-contract calls. Reentrancy structurally blocked.
transferSend ASE from the contract to another address.
assertRevert the transaction with a message if condition fails.
Build a token in 10 minutes.
Step-by-step guide: write a token contract, deploy it, transfer tokens, query balances.
Hardened JavaScript explained.
How SES protects contracts from prototype pollution, eval injection, and supply chain attacks.
Network parameters.
Chain ID, block time, gas limits, contract size limits, and every protocol constant.
Six categories of dapp you couldn't cleanly build elsewhere.
Each one has a working demo + a use-case page with the architecture, the code shape, and the primitives. Pick the one that matches what you're building and start from there.
Revenue splits that auto-distribute.
Read use case →AI agentsAgents that schedule themselves on-chain.
Read use case →SubscriptionsStripe Recurring, settled in 5 seconds.
Read use case →PayrollMonthly payday, fired by the protocol.
Read use case →TreasuryDCA, rebalance, sweep — all on autopilot.
Read use case →SocialOn-chain profiles, posts, comments, likes.
Read use case →