Il problema con il #[max_len(32)] mancante è che l'account serializzato contiene una stringa riempita con byte 0 per raggiungere 32 byte, mentre la struct di deserializzazione tenta di deserializzare solo la lunghezza effettiva della tua stringa e poi i restanti byte 0 creano problemi per la deserializzazione dei campi successivi. Per risolvere questo, consiglio di usare declare_program! da anchor_client. In questo modo non devi implementare la stessa struct a mano nel tuo programma e nel client e ottieni la deserializzazione implementata gratuitamente. Copiando da questa domanda: declare_program!(my_program); use my_program::{ID, accounts::Proposal}; use anchor_client::Client;
let cl = Client::new_with_options( cluster, fee_payer, CommitmentConfig::confirmed(), ); let p = cl.program(ID).unwrap(); let acc_state: Proposal = p.account(