Skip to main content

Getting Started with MOUNTAIN Transactions

Basic Workflow​

  1. Execute Transaction: Call an activated contract function through the Public API
  2. Monitor Status: Track transaction progress from creation to completion
  3. Handle Results: Process successful transactions or handle errors appropriately

Execute Your First Transaction​

Execute an activated contract function through the Public API.

API Endpoint:

Example Request:

import { TransactionApi } from '@kyuzan/mountain-public-api-client';

const transactionApi = new TransactionApi();

const transaction = await transactionApi.executeTransaction({
contractActivatedFunctionId: 1,
functionArgs: [
'0x742d35Cc6634C0532925a3b8D4C9db96C4b4d8b6', // to address
'1000000000000000000', // amount (1 ETH in wei)
],
idempotencyKey: 'unique-key-12345', // Required: prevent duplicate transactions
});

console.log('Transaction created:', transaction.transaction);

Monitor Transaction Status​

Track the progress of your transaction using the transaction ID.

API Endpoint:

Example Request:

const transactionStatus = await transactionApi.getTransaction({
transactionId: '550e8400-e29b-41d4-a716-446655440000',
});

console.log('Transaction status:', transactionStatus.transaction.status);

List Project Transactions​

Retrieve all transactions for your project with pagination support.

API Endpoint:

Example Request:

const transactions = await transactionApi.getTransactions({
page: 1,
perPage: 20,
status: 'succeeded', // Optional: filter by status
});

console.log('Transactions:', transactions.transactions);

Complete Example​

Here's a complete example showing transaction execution and monitoring:

import { TransactionApi } from '@kyuzan/mountain-public-api-client';

async function executeAndMonitorTransaction() {
const transactionApi = new TransactionApi();

try {
// Execute transaction
const transaction = await transactionApi.executeTransaction({
contractActivatedFunctionId: 1,
functionArgs: [
'0x742d35Cc6634C0532925a3b8D4C9db96C4b4d8b6',
'1000000000000000000',
],
idempotencyKey: `mint-${Date.now()}`,
});

console.log('Transaction created:', transaction.transaction.id);

// Monitor transaction status
let status = transaction.transaction.status;
while (status === 'created' || status === 'processing' || status === 'broadcasted') {
await new Promise(resolve => setTimeout(resolve, 2000)); // Wait 2 seconds

const updated = await transactionApi.getTransaction({
transactionId: transaction.transaction.id,
});

status = updated.transaction.status;
console.log('Current status:', status);
}

if (status === 'succeeded') {
console.log('Transaction succeeded!', updated.transaction.transactionHash);
} else {
console.log('Transaction failed:', status, updated.transaction.errorMessage);
}
} catch (error) {
console.error('Error:', error.message);
}
}

Next Steps​

  1. Understand the transaction lifecycle - Learn about status progression
  2. Learn about system wallets - Understand wallet management
  3. Review best practices - Optimize your implementation