Solana: anchor-bankrun test failed, could not find initialized address [VotingDapp with Solana Bootcamp]

Voting Dapp Bootcamp: Solana Anchor-Bankrun Test Fails When Address Not Initialized

A recent test of the Solana blockchain voting app encountered an unexpected issue that caused it to fail. The code, specifically the voting_dapp.spec.ts file from the Solana Bootcamp voting app, is unable to initialize a key variable.

Code:

Solana: anchor-bankrun test failing, not able to find initialized address [votingDapp program from the solana bootcamp]

import { AccountInfo } from '@solana/web3.js';

import { ProgramResult, pubkeyToAccount } from '@solana/angular-keygen';

import {

anchorBankrun,

createBanks,

initializeBanks,

} from './anchor-bankrun';

const crunchyAddress = 'your-crunchy-address-here'; // Replace with real address

const crunchyCandidate = new AnchorCandidate(

{ authority: 'crunchy-authority', name: 'Crunchy Candidate' }

);

export async function anchorBankrunTest() {

const banks = await createBanks();

const accountInfo = new AccountInfo({ keyId: 'your-key-id-here' });

try {

const account = await accountInfo.loadAccount();

if (account.address) {

// Initialize the crunchy candidate

const result = await anchorBankrun(banks, account);

console.log(result.error ? 'Error:' + result.error.message : 'Success!');

} else {

// Discard the initialized address

throw new Error('Crunchy address not found');

}

} catch (error) {

if (error instanceof Error && error.message.includes('initialized address')) {

throw error;

} else {

console.error(error);

}

}

}

class AnchorCandidate {

constructor ({ authority, name }) {

this.authority = authority;

this.name = name;

}

async create() {

// Create a new anchor candidate instance

}

}

Problem:

Looking at the code, it seems that the initialization of `crunchyAddress'' is not complete. The variable is declared asconst crunchyAddress = ‘your-crunchy-address-here’;, but there is no attempt to set its value or initialize it before attempting to access it.

As a result, when the test tries to create a core candidate using "new AnchorCandidate({ authority, name })", it throws an error because "crunchyAddress" has not been initialized. The code tries to use this initialized address later in the program.

Solution:

To fix this issue, we need to ensure that "crunchyAddress" is properly initialized before using it. We can do this by adding a line to set its value, or initialize it to a default value. Here is the updated version of the code:

“ typescript

import { AccountInfo } from ‘@solana/web3.js’;

import { ProgramResult, pubkeyToAccount } from ‘@solana/angular-keygen’;

import {

anchorBankrun,

createBanks,

initializeBanks,

} from ‘./anchor-bankrun’;

const crunchyAddress = ‘0xYourCrunchyAddressHere’; // Replace with real address

const crunchyCandidate = new AnchorCandidate(

{ authority: ‘crunchy-authority’, name: ‘Crunchy candidate’ }

);

export async function anchorBankrunTest() {

const banks = await createBanks();

const accountInfo = new AccountInfo({ keyId: ‘your-key-id-here’ });

try {

const account = await accountInfo.loadAccount();

if (account.address) {

// Initialize the crunchy candidate

const result = await anchorBankrun(banks, account);

console.log(result.error ? ‘Error:’ + result.error.message : ‘Success!’);

} else {

// Discard the initialized address

throw new Error(‘Crunchy address not found’);

}

} catch (error) {

if (error instanceof Error && error.message.includes(‘initialized address’)) {

throw error;

} else {

console.error(error);

}

}

}

class AnchorCandidate {

constructor ({ authority, name }) {

this.authority = authority;

this.

perpetual taker liquidity provider

Leave a Comment

Open chat
1
Scan the code
Hello 👋
Can we help you?