Skip to main content

Quick Start

Build your first GLIN Network application in 5 minutes.

What We'll Build​

A simple app that:

  1. Connects to GLIN Network
  2. Creates an account
  3. Queries account balance
  4. Sends a transaction

Step 1: Create a New Project​

mkdir my-glin-app
cd my-glin-app
npm init -y
npm install @glin-ai/sdk typescript tsx

Create index.ts:

index.ts
// We'll add code here

Step 2: Connect to GLIN Network​

index.ts
import { GlinClient } from '@glin-ai/sdk';

async function main() {
// Connect to GLIN testnet
console.log('šŸ”— Connecting to GLIN Network...');
const client = await GlinClient.connect('wss://testnet.glin.ai');

console.log('āœ… Connected!');

// Get chain info
const chain = await client.getChain();
const version = await client.getRuntimeVersion();

console.log(`Chain: ${chain}`);
console.log(`Runtime version: ${version.specVersion}`);
}

main()
.then(() => process.exit(0))
.catch((error) => {
console.error(error);
process.exit(1);
});

Run it:

npx tsx index.ts

Expected output:

šŸ”— Connecting to GLIN Network...
āœ… Connected!
Chain: GLIN Testnet
Runtime version: 1.0.0

Step 3: Create an Account​

index.ts
import { GlinClient, Keyring } from '@glin-ai/sdk';

async function main() {
const client = await GlinClient.connect('wss://testnet.glin.ai');

// Create a keyring to manage accounts
const keyring = new Keyring({ type: 'sr25519' });

// Add Alice (for testing)
const alice = keyring.addFromUri('//Alice');

console.log('šŸ‘¤ Alice address:', alice.address);

// Get balance
const balance = await client.getBalance(alice.address);
console.log('šŸ’° Balance:', balance.free.toString(), 'GLIN');
}

main().catch(console.error);
Development Accounts

For testing, GLIN provides development accounts (Alice, Bob, Charlie, etc.) with pre-funded balances. Never use these in production!

Step 4: Send a Transaction​

index.ts
import { GlinClient, Keyring } from '@glin-ai/sdk';

async function main() {
const client = await GlinClient.connect('wss://testnet.glin.ai');
const keyring = new Keyring({ type: 'sr25519' });

const alice = keyring.addFromUri('//Alice');
const bob = keyring.addFromUri('//Bob');

console.log('šŸ“¤ Sending 100 GLIN from Alice to Bob...');

// Create and send transfer
const transfer = client.api.tx.balances.transfer(
bob.address,
100n * 10n**18n // 100 GLIN (18 decimals)
);

const hash = await transfer.signAndSend(alice);
console.log('āœ… Transaction sent! Hash:', hash.toHex());

// Wait for finalization
await client.waitForFinalization(hash);
console.log('āœ… Transaction finalized!');

// Check Bob's new balance
const bobBalance = await client.getBalance(bob.address);
console.log('šŸ’° Bob\'s balance:', bobBalance.free.toString(), 'GLIN');
}

main().catch(console.error);

Expected output:

šŸ“¤ Sending 100 GLIN from Alice to Bob...
āœ… Transaction sent! Hash: 0x1234...
āœ… Transaction finalized!
šŸ’° Bob's balance: 100000000000000000000 GLIN

Complete Example​

Here's the full working code:

index.ts
import { GlinClient, Keyring } from '@glin-ai/sdk';

async function main() {
// 1. Connect
console.log('šŸ”— Connecting...');
const client = await GlinClient.connect('wss://testnet.glin.ai');
console.log('āœ… Connected!');

// 2. Create accounts
const keyring = new Keyring({ type: 'sr25519' });
const alice = keyring.addFromUri('//Alice');
const bob = keyring.addFromUri('//Bob');

// 3. Check initial balances
const aliceBalance = await client.getBalance(alice.address);
const bobBalance = await client.getBalance(bob.address);

console.log('\nšŸ’° Initial balances:');
console.log('Alice:', aliceBalance.free.toString());
console.log('Bob:', bobBalance.free.toString());

// 4. Send transaction
console.log('\nšŸ“¤ Sending 100 GLIN from Alice to Bob...');
const transfer = client.api.tx.balances.transfer(
bob.address,
100n * 10n**18n
);

const hash = await transfer.signAndSend(alice);
console.log('Transaction hash:', hash.toHex());

await client.waitForFinalization(hash);
console.log('āœ… Transaction finalized!');

// 5. Check final balances
const bobFinalBalance = await client.getBalance(bob.address);
console.log('\nšŸ’° Bob\'s final balance:', bobFinalBalance.free.toString());
}

main().catch(console.error);

Next Steps​

Congratulations! šŸŽ‰ You've just:

  • āœ… Connected to GLIN Network
  • āœ… Created accounts
  • āœ… Queried balances
  • āœ… Sent a transaction

Learn More​

Example Applications​

Check out these real-world examples:

Troubleshooting​

Connection Failed​

If you can't connect to the network:

  • Check your internet connection
  • Try a different RPC endpoint
  • Make sure the testnet is running

Transaction Failed​

Common reasons:

  • Insufficient balance
  • Invalid recipient address
  • Network congestion

Check the transaction error message for details.


Need help? Join our Discord or email us.