I am trying to store small amount of metadata in an account but it always throws validation error. Do I need to create a custom program because of that? I am new to web3 kinds of stuff.
const secret_key = new Uint8Array(JSON.parse(process.env.SOLANA_SECRET_KEY))const keypair = solana.Keypair.fromSecretKey(secret_key)const connection = new solana.Connection(solana.clusterApiUrl('devnet'))const data = Buffer.from("project_id: 1, status: 'something something', timestamp: 'sdfdsfsdfsfsdfsdfsd'", 'utf8');const holder = solana.Keypair.generate();const required_balance = await connection.getMinimumBalanceForRentExemption(data.length);const create_account_transaction = new solana.Transaction()create_account_transaction.add(solana.SystemProgram.createAccount({ fromPubkey: keypair.publicKey, newAccountPubkey: holder.publicKey, lamports: required_balance, space: data.length, programId: solana.SystemProgram.programId,}))const sig1 = await solana.sendAndConfirmTransaction(connection, create_account_transaction, [keypair, holder])const write_data_transaction = new solana.Transaction()write_data_transaction.add( new solana.TransactionInstruction({ keys: [{ pubkey: holder.publicKey, isSigner: false, isWritable: true }], programId: solana.SystemProgram.programId, data, }));try { await solana.sendAndConfirmTransaction(connection, write_data_transaction, [keypair])} catch (error) { console.log(error)}