Integrate AUREN into your wallet or app

Everything a wallet, exchange, game or bot needs: the networks, the API, the SDKs and how to sign a transaction yourself.

Pick a network

Chain IDAddress prefixEthereum chain ID
Mainnetauren-mainnet-1aur1…77000
Testnetauren-testnet-1taur1…77002
Devnetauren-devnet-1daur1…77001

networks/networks.json lists the official genesis hashes. Pin the genesis hash of the network you integrate with, so a wrong or malicious node is detected. A node serves its genesis at GET /genesis.

Amounts everywhere are decimal strings in sparks: 1 AUR = 1,000,000,000 sparks.

The API

Every network has two public addresses that serve the same API (the second is a mirror):

The full, machine-readable reference is the OpenAPI file. Browse the methods in rpc-api.md.

curl https://testnet.auren.im/status
curl https://devnet.auren.im/account/daur1...
curl -X POST https://testnet.auren.im/rpc -H 'content-type: application/json' \
  -d '{"jsonrpc":"2.0","id":1,"method":"aur_status","params":[]}'

SDKs

LanguageWhereNotes
JavaScript (Node 20+)sdk/jsClient, Wallet, amounts in AUR
JavaScript (browser)website/aurlib.jsthe library the wallet uses; global Aur
Python 3sdk/python/auren.pyno dependencies, pure-Python Ed25519
Any languagethis pagesign a transaction yourself, below

JavaScript:

const { Client, Wallet } = require('./sdk/js');
const node = new Client('https://testnet.auren.im');
const wallet = Wallet.generate('daur');            // or Wallet.fromSeed(seedHex, 'daur')
console.log(wallet.address, await node.balance(wallet.address));
await wallet.transfer(node, 'daur1...', '1.5');    // amounts in AUR
await wallet.registerName(node, 'alice');          // alice.aur
await wallet.createTld(node, 'david', { price: '1', ownerSharePercent: 80 });

Python:

from auren import Client, Wallet
node = Client("https://testnet.auren.im")
wallet = Wallet.generate("daur")
wallet.transfer(node, "daur1...", "1.5")
wallet.register_name(node, "alice")

Keys and addresses

Scheme byteKeyUse
0Ed25519software wallets (the default)
2ECDSA P-256 (WebAuthn)phone passkeys and security keys
4secp256k1 (Ethereum)Ethereum wallets; the address is the same 20 bytes as 0x…

An address is Bech32 of [scheme byte] + sha256(scheme byte ‖ public key)[0..20] with the network prefix. Ethereum accounts also answer at their 0x address (GET /account/0x…). One seed can serve every network; only the prefix changes.

Sign a transaction yourself

A transaction is a JSON object:

{ "chainId": "auren-devnet-1", "type": "transfer", "from": "daur1…", "nonce": 7,
  "maxFee": "300000", "tip": "1000", "body": { "to": "daur1…", "amount": "1500000000" },
  "v": 1, "pub": "<public key hex>", "sig": "<signature hex>" }
  1. Nonce: use pendingNonce from aur_getAccount.
  2. Fee: maxFee must be at least the base fee for the type (from aur_feeQuote) plus your tip. Setting it to twice the quote is safe; unused fee is not charged. The fee is burned.
  3. Sign: build the object without sig, serialize it as canonical JSON (keys sorted, no spaces, amounts as decimal strings), prepend the bytes AUREN/tx/v1 followed by a zero byte, and sign those bytes with your key. Put the signature (hex) in sig.
  4. Check: send it to aur_simulate first. It returns the effects, the fee and whether it would succeed, without changing anything.
  5. Send: aur_sendTx. The result has the transaction hash (sha256 of the canonical JSON including sig).
  6. Wait: poll aur_getTx(hash) until status is confirmed; receipt.status is 1 on success.

Transaction types and their bodies are listed in protocol.md. The common ones:

TypeBody
transferto, amount
delegate / undelegatevalidator, amount
claimvalidator
registerDomainname (alice, alice.aur or alice.david), years
setDomainTargetname, target
registerTldtld, open, price, ownerShareBps
registerNode / nodeProofsee node-rewards.md
evmsmart-contract calls; use the Ethereum RPC instead

Reference implementations to copy: signTx in src/tx.js (JavaScript) and Wallet.build in sdk/python/auren.py. The two produce byte-identical signatures, which a test checks.

Names

Smart contracts and Ethereum tools

Point any Ethereum tool at the network address plus /rpc (for example https://testnet.auren.im/rpc) with the Ethereum chain ID above. Raw Ethereum transactions are accepted. See evm.md.

Tips for wallet makers

Edit this page on GitHub