For Developers

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.

Contract Source

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.

01Write

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.

02Test

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.

03Deploy

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.

Contract VM

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:

storage

Persistent key-value store. Read and write contract state.

emit

Emit named events with data. Indexed and queryable.

msg

Transaction context: sender address, value, contract address.

chain

Block context: blockNumber, blockTimestamp, chainId.

cron

Schedule future calls. The chain itself fires them on time.

E(addr)

Cross-contract calls. Reentrancy structurally blocked.

transfer

Send ASE from the contract to another address.

assert

Revert the transaction with a message if condition fails.

Tutorial

Build a token in 10 minutes.

Step-by-step guide: write a token contract, deploy it, transfer tokens, query balances.

Guide

Hardened JavaScript explained.

How SES protects contracts from prototype pollution, eval injection, and supply chain attacks.

Reference

Network parameters.

Chain ID, block time, gas limits, contract size limits, and every protocol constant.

Testnet Live

Stop learning new languages. Start building.