Getting Started with MOUNTAIN Transactions
Basic Workflow​
- Execute Transaction: Call an activated contract function through the Public API
- Monitor Status: Track transaction progress from creation to completion
- Handle Results: Process successful transactions or handle errors appropriately
Execute Your First Transaction​
Execute an activated contract function through the Public API.
API Endpoint:
- Execute Transaction -
POST /transaction/execute-transaction
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:
- Get Transaction -
GET /transaction/get-transaction?transactionId={id}
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:
- Get Transactions -
GET /transaction/get-transactions
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​
- Understand the transaction lifecycle - Learn about status progression
- Learn about system wallets - Understand wallet management
- Review best practices - Optimize your implementation