Skip to content

Instantly share code, notes, and snippets.

@nullun
Created September 29, 2022 09:17
Show Gist options
  • Save nullun/6b2b72144d5d26cb5e5b6e99912f01f4 to your computer and use it in GitHub Desktop.
Save nullun/6b2b72144d5d26cb5e5b6e99912f01f4 to your computer and use it in GitHub Desktop.
Algorand Asset OptIn using KMD (JS)
const algosdk = require('algosdk');
// Algod
algod_token = 'a'.repeat(64);
algod_server = 'http://127.0.0.1';
algod_port = 4001;
algod_client = new algosdk.Algodv2(algod_token, algod_server, algod_port);
// KMD
kmd_token = 'a'.repeat(64);
kmd_server = 'http://127.0.0.1';
kmd_port = 4002;
kmd_client = new algosdk.Kmd(kmd_token, kmd_server, kmd_port);
(async () => {
// Get Wallet ID
wallet = await kmd_client.listWallets();
wallet_id = wallet.wallets[0].id;
// Initiate Wallet Handle
handle = await kmd_client.initWalletHandle(wallet_id);
wallet_handle_token = handle.wallet_handle_token;
// Select first address from the wallet
keys = await kmd_client.listKeys(wallet_handle_token);
pk = keys.addresses[0];
// Get Suggested Params
sp = await algod_client.getTransactionParams().do();
// Construct OptIn Transaction
axfer_txn = algosdk.makeAssetTransferTxnWithSuggestedParamsFromObject(
{
from: pk,
to: pk,
assetIndex: 3, // AssetID
amount: 0,
suggestedParams: sp,
}
)
// Sign Transaction with KMD
axfer_stxn = await kmd_client.signTransaction(
wallet_handle_token,
"",
axfer_txn,
pk,
);
// Submit Transaction to node
const { txId } = await algod_client.sendRawTransaction(axfer_stxn).do();
const result = await algosdk.waitForConfirmation(algod_client, txId, 3);
console.log(result);
})();
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment