jaelis-node
v2.0.0
Published
Official JAELIS Blockchain External Node - Connect to the JAELIS network, sync blocks, and expose local RPC for your dApps. Zero gas fees, multi-chain interop.
Maintainers
Readme
jaelis-node
Official external node software for the JAELIS Blockchain network. Run your own node to sync with the network, contribute to decentralization, and expose a local RPC endpoint for your dApps.
What is This?
jaelis-node is a lightweight external node that:
- Connects to the JAELIS network via WebSocket
- Syncs and stores blocks locally (LevelDB)
- Exposes a local JSON-RPC server for your dApps
- Relays transactions to the network
This is similar to running geth --syncmode light for Ethereum.
Quick Start
Install Globally
npm install -g jaelis-nodeRun the Node
# Start on testnet (default)
jaelis-node
# Start on mainnet
jaelis-node --network mainnet
# Custom RPC port
jaelis-node --port 8546
# Custom data directory
jaelis-node --data-dir ./my-jaelis-dataUse with Your dApp
Once the node is running, connect your dApp to http://localhost:8545:
const Jaelis = require('jaelis.js');
// Connect to your local node
const jaelis = new Jaelis.Provider('http://localhost:8545');
// Now all RPC calls go through your local node
const blockNumber = await jaelis.getBlockNumber();
const balance = await jaelis.getBalance('jae1qwertyuiop...'); // JAELIS native addressArchitecture
┌─────────────────┐ WebSocket ┌───────────────────┐
│ JAELIS │ ◄───────────────── │ Your Local Node │
│ Main Network │ │ (jaelis-node) │
│ rpc.jaelis.io │ ───────────────► │ │
└─────────────────┘ newHeads │ ┌─────────────┐ │
subscription │ │ LevelDB │ │
│ │ Storage │ │
┌─────────────────┐ JSON-RPC │ └─────────────┘ │
│ Your dApp │ ◄───────────────── │ │
│ (browser/node) │ localhost:8545 │ ┌─────────────┐ │
└─────────────────┘ │ │ RPC Server │ │
│ └─────────────┘ │
└───────────────────┘CLI Options
| Option | Description | Default |
|--------|-------------|---------|
| -n, --network <network> | Network to connect to (testnet or mainnet) | testnet |
| -p, --port <port> | Local RPC server port | 8545 |
| -d, --data-dir <dir> | Data directory for block storage | ./jaelis-data/<network> |
| --no-rpc | Disable local RPC server | Enabled |
Programmatic Usage
const { JaelisNode } = require('jaelis-node');
async function main() {
const node = new JaelisNode({
network: 'testnet',
rpcPort: 8545,
dataDir: './my-jaelis-data',
enableRpc: true
});
// Event listeners
node.on('connected', () => console.log('Connected to network'));
node.on('block', (block) => console.log('New block:', block.number));
node.on('synced', () => console.log('Fully synced!'));
// Start the node
await node.start();
// Get status
const status = node.getStatus();
console.log('Status:', status);
// Stop the node (graceful shutdown)
// await node.stop();
}
main();RPC Methods Supported
JAELIS uses the jaelis_* namespace for all RPC methods:
Chain Info
| Method | Description |
|--------|-------------|
| jaelis_chainId | Get chain ID (4547 mainnet, 4545 testnet) |
| jaelis_blockNumber | Get latest block number |
| jaelis_syncing | Get sync status |
Block Queries
| Method | Description |
|--------|-------------|
| jaelis_getBlockByNumber | Get block by number |
| jaelis_getBlockByHash | Get block by hash |
Transaction Queries
| Method | Description |
|--------|-------------|
| jaelis_getTransactionByHash | Get transaction |
| jaelis_getTransactionReceipt | Get receipt |
| jaelis_sendRawTransaction | Submit signed tx (uses ENE, not nonces) |
Account Queries (Relayed to Main Network)
| Method | Description |
|--------|-------------|
| jaelis_getBalance | Get account balance |
| jaelis_getENE | Get ENE (Ephemeral Network Entropy) for transaction ordering |
| jaelis_getSigil | Get account SIGIL allocation |
| jaelis_getCode | Get contract code |
| jaelis_call | Call contract (read-only) |
SIGIL Compute (Zero Gas Fees!)
| Method | Description |
|--------|-------------|
| jaelis_estimateSigil | Estimate SIGIL compute for transaction |
| jaelis_getSigil | Get available SIGIL allocation |
Note: JAELIS has ZERO gas fees. SIGIL represents compute allocation from XAI Colossus exaflops - it's not purchased, it's allocated.
Network Info
| Network | Chain ID | Main RPC | WebSocket | |---------|----------|----------|-----------| | Testnet | 4545 | https://rpc.jaelis.io | wss://rpc.jaelis.io/ws | | Mainnet | 4547 | https://mainnet.jaelis.io | wss://mainnet.jaelis.io/ws |
Why Run Your Own Node?
- Privacy - RPC requests don't go through public endpoints
- Speed - Local reads are instant (no network latency)
- Decentralization - More nodes = stronger network
- Reliability - No dependency on public RPC availability
System Requirements
- Node.js 18.0.0 or higher
- Disk Space - ~1GB for testnet, ~10GB for mainnet (grows over time)
- Memory - 512MB minimum, 1GB recommended
- Network - Stable internet connection
Data Storage
The node stores synced blocks in LevelDB:
./jaelis-data/
└── testnet/
└── blocks/ # LevelDB databaseTo reset, simply delete the data directory and restart.
Updates
The node checks for updates on startup. To update:
npm update -g jaelis-nodeTroubleshooting
Connection Issues
# Check if main network is reachable
curl https://rpc.jaelis.io -X POST \
-H "Content-Type: application/json" \
-d '{"jsonrpc":"2.0","id":1,"method":"jaelis_blockNumber","params":[]}'Port Already in Use
# Use a different port
jaelis-node --port 8546Clear and Resync
# Delete data directory and restart
rm -rf ./jaelis-data
jaelis-nodeLinks
- SDK: npmjs.com/package/jaelis.js
- Website: jaelis.io
- Documentation: docs.jaelis.io
- Explorer: explorer.jaelis.io
- GitHub: github.com/jaelis-foundation
License
MIT - JAELIS Foundation
