Faits :
A.
Par jugement du 13 mars 2018, le Tribunal de police de l'arrondissement de La Côte a condamné X._ pour blanchiment d'argent (art. 305 bis ch. 1 CP) à une peine pécuniaire de 90 jours-amende à 15 fr. le jour, avec sursis pendant 2 ans, ainsi qu'à une amende de 300 francs.
B.
Statuant le 27 août 2018, la Cour d'appel pénale du Tribunal cantonal vaudois a rejeté l'appel formé par X._ contre le jugement du 13 mars 2018, qui a été confirmé.
En substance, la cour cantonale a retenu les faits suivants.
Entre le 18 août et le 1 er septembre 2016, X._, ressortissant portugais né en 1995 et domicilié à A._, a reçu sur son compte postal une dizaine de versements, pour un montant total de 6686 fr., provenant de différentes personnes domiciliées à travers toute la Suisse.
A la demande d'une dénommée B._, que X._ prétendait avoir rencontrée sur Facebook préalablement aux versements, ce dernier a transféré, les 25 et 31 août 2016, une partie des montants reçus à destination d'un compte au Bénin, dont le titulaire était inconnu. Ces deux transferts, opérés par l'intermédiaire de l'entreprise C._, portaient sur des montants respectifs de 1924 fr. et de 2524 fr., déductions faites des commissions de 76 fr. prélevées pour chacun des versements.
L'instruction a révélé qu'avant la réception des versements par X._, une personne non identifiée avait publié sur le site internet D._, en utilisant plusieurs fausses identités, des annonces proposant divers produits, notamment des appareils électroniques, et avait indiqué, comme coordonnées de paiement du vendeur, le compte postal de X._. Des personnes souhaitant acquérir ces produits étaient ainsi entrées en communication avec l'auteur inconnu pour les modalités de livraison et avaient versé le prix de la marchandise conformément aux instructions données, l'auteur inconnu n'ayant par la suite plus répondu aux sollicitations des acheteurs, ceux-ci n'ayant jamais reçu la marchandise commandée.
C.
Contre ce jugement, X._ forme un recours en matière pénale au Tribunal fédéral. Il conclut, avec suite de frais et dépens, principalement à son acquittement. Subsidiairement, il conclut à l'annulation du jugement et au renvoi de la cause à l'autorité précédente pour nouvelle décision dans le sens des considérants. Il sollicite en outre le bénéfice de l'assistance judiciaire.
Considérant en droit :
1.
Le recourant, par l'intermédiaire de son conseil, a adressé au Tribunal fédéral, dans le délai de recours (cf. art. 100 al. 1 LTF), deux versions différentes de son acte de recours. A la demande du conseil du recourant, il ne sera tenu compte que de la seconde version, à savoir celle datée du 26 novembre 2018.
2.
Le recourant se prévaut d'une violation du principe d'accusation (art. 9 al. 1 CPP).
2.1. L'art. 9 CPP consacre la maxime d'accusation. Selon cette disposition, une infraction ne peut faire l'objet d'un jugement que si le ministère public a déposé, auprès du tribunal compétent, un acte d'accusation dirigé contre une personne déterminée sur la base de faits précisément décrits. Le prévenu doit connaître exactement les faits qui lui sont imputés et les peines et mesures auxquelles il est exposé, afin qu'il puisse s'expliquer et préparer efficacement sa défense (ATF 143 IV 63 consid. 2.2 p. 65; 141 IV 132 consid. 3.4.1 p. 142 s.). Le tribunal est lié par l'état de fait décrit dans l'acte d'accusation (principe de l'immutabilité de l'acte d'accusation), mais peut s'écarter de l'appréciation juridique qu'en fait le ministère public (art. 350 al. 1 CPP), à condition d'en informer les parties présentes et de les inviter à se prononcer (art. 344 CPP). Le principe de l'accusation découle également des art. 29 al. 2 Cst. (droit d'être entendu), 32 al. 2 Cst. (droit d'être informé, dans les plus brefs délais et de manière détaillée des accusations portées contre soi) et 6 par. 3 let. a et b CEDH (droit d'être informé de la nature et de la cause de l'accusation).
Les art. 324 ss CPP règlent la mise en accusation, en particulier le contenu strict de l'acte d'accusation. Selon l'art. 325 al. 1 CPP, l'acte d'accusation désigne notamment les actes reprochés au prévenu, le lieu, la date et l'heure de leur commission ainsi que leurs conséquences et le mode de procéder de l'auteur (let. f) de même que les infractions réalisées et les dispositions légales applicables de l'avis du ministère public (let. g). En d'autres termes, l'acte d'accusation doit contenir les faits qui, de l'avis du ministère public, correspondent à tous les éléments constitutifs de l'infraction reprochée au prévenu (ATF 143 IV 63 consid. 2.2 p. 65; arrêt 6B_665/2017 du 10 janvier 2018 consid. 1.1). L'acte d'accusation définit l'objet du procès et sert également à informer le prévenu (fonction de délimitation et d'information; ATF 143 IV 63 consid. 2.2 p. 65; 141 IV 132 consid. 3.4.1 p. 142 s. et les références citées). Des imprécisions relatives au lieu ou à la date sont sans portée, dans la mesure où le prévenu ne peut avoir de doute sur le comportement qui lui est reproché (arrêts 6B_665/2017 précité consid. 1.1; 6B_275/2016 du 9 décembre 2016 consid. 2.1).
2.2. Aux termes de l'art. 305 bis ch. 1 CP, celui qui aura commis un acte propre à entraver l'identification de l'origine, la découverte ou la confiscation de valeurs patrimoniales dont il savait ou devait présumer qu'elles provenaient d'un crime ou d'un délit fiscal qualifié, sera puni d'une peine privative de liberté de trois ans au plus ou d'une peine pécuniaire. Au plan objectif, l'art. 305 bis CP suppose, d'une part, l'existence de valeurs patrimoniales provenant d'un crime - au sens de l'art. 10 al. 2 CP, soit d'une infraction passible d'une peine privative de liberté de plus de trois ans (arrêt 6B_489/2013 du 9 juillet 2013 consid. 1.2) -, respectivement d'un délit fiscal qualifié, ainsi que, d'autre part, un acte propre à entraver l'identification de l'origine, la découverte ou la confiscation de ces valeurs patrimoniales. Sur le plan subjectif, l'infraction requiert l'intention de l'auteur (arrêt 6B_663/2014 du 22 décembre 2017 consid. 6.2).
En matière de blanchiment d'argent, la preuve stricte de l'acte préalable n'est pas exigée. Il n'est pas nécessaire que les circonstances du crime, singulièrement son auteur, soient connues dans le détail. Le lien exigé entre le crime à l'origine des fonds et le blanchiment d'argent est volontairement ténu (ATF 138 IV 1 consid. 4.2.2 p. 5; arrêt 6B_663/2014 précité consid. 6.7.1.1).
2.3. L'ordonnance pénale du 5 octobre 2017 - qui tient lieu en l'espèce d'acte d'accusation (art. 356 al. 1, 2 ème phrase, CP) - a la teneur suivante s'agissant des faits reprochés au recourant :
" A A._, Route E._, entre le 18 août et 1 er septembre 2016, X._ a reçu une dizaine de versements, totalisant 6686 fr., qui provenaient de différentes personnes domiciliées à travers toute la Suisse, correspondant au prix de vente d'objets vendus en ligne, mais qui n'ont jamais été livrés aux acheteurs. A la demande d'une dénommée B._, rencontrée sur Facebook, il a ensuite transféré une partie de cet argent vers le Bénin ".
2.4. Le recourant se plaint que l'acte d'accusation ne décrive pas le crime préalable, élément constitutif de l'infraction de blanchiment d'argent.
La qualification juridique du crime préalable ne ressort certes pas expressément de l'acte d'accusation. Cela étant, la description des faits qui y était contenue permettait au recourant, assisté d'un défenseur, de comprendre que les valeurs patrimoniales reçues sur son compte postal provenaient, selon le ministère public, d'une infraction contre le patrimoine, soit en l'occurrence d'une escroquerie (art. 146 CP), infraction qui constitue un crime au sens de l'art. 10 al. 2 CP. Les termes utilisés étaient en effet suffisamment clairs pour en déduire que l'infraction préalable avait trait à la mise en oeuvre de tromperies opérées sur un site internet de vente en ligne, les objets commandés n'ayant jamais été livrés à leurs acheteurs malgré le paiement du prix de vente. Dès lors que la preuve stricte du crime préalable n'est pas requise, il n'était pas nécessaire que l'acte d'accusation le décrive plus précisément, le recourant ayant suffisamment été informé sur les circonstances permettant de déduire qu'aux yeux du ministère public, les valeurs patrimoniales reçues avaient une origine criminelle. A cet égard, le recourant ne prétend d'ailleurs pas avoir été empêché de préparer utilement sa défense.
2.5. Si le recourant estimait que le crime préalable - en tant qu'élément constitutif de l'infraction réprimée à l'art. 305 bis CP - n'était pas suffisamment établi, il lui appartenait de soulever ce point au fond, ce qu'il ne fait pas dans son recours en matière pénale (cf. art. 42 al. 2 LTF). Ainsi, il n'y a pas matière à examiner si les acheteurs dupés auraient dû faire preuve d'une vigilance accrue en procédant, par exemple, à une vérification de l'identité du vendeur avant de verser les montants litigieux.
Au demeurant, si le Tribunal fédéral a certes jugé que, dans le cadre d'une vente conclue sur internet, un vendeur n'était pas victime d'escroquerie, dès lors qu'il avait agi avec légèreté en livrant contre facture un produit d'une importante valeur marchande à un inconnu sans examiner, au moins de manière sommaire, la solvabilité de celui-ci (cf. ATF 142 IV 153 consid. 2.2.4 p. 156 s.), la cour cantonale a constaté qu'en l'espèce, les acheteurs étaient entrés en communication avec le vendeur, lequel avait alors évoqué les modalités de livraison et communiqué les coordonnées d'un compte postal suisse sur lequel le prix devait être versé, faisant ainsi croire que l'annonce publiée était réelle et que le produit leur serait livré après paiement. Il ne paraît dès lors pas qu'un devoir de vérification plus circonstancié aurait pu être exigé des acheteurs, en particulier s'agissant d'objets dont le prix de vente s'échelonnait de 225 à 1615 francs. Enfin, contrairement à ce que laisse entendre le recourant dans son mémoire de recours, dès lors qu'une seule des dix transactions en cause portait sur un montant inférieur à la limite jurisprudentielle de 300 fr. (cf. ATF 142 IV 129 consid. 3.1 p. 134), l'escroquerie commise ne saurait être considérée comme une contravention au sens de l'art. 172 ter CP, mais bien comme un crime (cf. art. 10 al. 2 et 146 al. 1 CP).
Pour le surplus, le recourant ne prétend pas qu'un autre élément constitutif de l'infraction de blanchiment d'argent n'était pas suffisamment décrit dans l'acte d'accusation.
Le grief doit dès lors être rejeté.
3.
Le recourant reproche à la cour cantonale de ne pas avoir traité son grief par lequel il contestait la mise à sa charge de l'intégralité des frais de première instance. Il invoque une violation de son droit d'être entendu.
3.1. Selon la jurisprudence, l'autorité qui ne traite pas un grief relevant de sa compétence, motivé de façon suffisante et pertinente pour l'issue du litige, commet un déni de justice formel proscrit par l'art. 29 al. 1 Cst. (ATF 136 I 6 consid. 2.1 p. 9; 117 Ia 116 consid. 3a p. 117; arrêt 1B_461/2016 du 9 février 2017 consid. 2.1.1 et les références citées). De même, la jurisprudence a déduit du droit d'être entendu de l'art. 29 al. 2 Cst. l'obligation pour l'autorité de motiver sa décision, afin que l'intéressé puisse se rendre compte de la portée de celle-ci et l'attaquer en connaissance de cause (ATF 142 I 135 consid. 2.1 p. 145; 138 I 232 consid. 5.1 p. 237; 136 V 351 consid. 4.2 p. 355). La motivation d'une décision est suffisante lorsque l'autorité mentionne, au moins brièvement, les motifs qui l'ont guidée et sur lesquels elle a fondé son raisonnement. L'autorité ne doit toutefois pas se prononcer sur tous les moyens des parties; elle peut se limiter aux questions décisives (ATF 143 III 65 consid. 5.2 p. 70; 142 II 154 consid. 4.2 p. 157; 136 I 229 consid. 5.2 p. 236). La motivation peut pour le reste être implicite et résulter des différents considérants de la décision (cf. arrêts 6B_649/2018 du 25 juillet 2018 consid. 1.1; 2C_23/2009 du 25 mai 2009 consid. 3.1, publié in RDAF 2009 II p. 434).
3.2. Dans sa déclaration d'appel, le recourant se plaignait que les frais de première instance avaient été mis entièrement à sa charge, alors que, par rapport à la peine fixée par le ministère public dans son ordonnance pénale du 5 octobre 2017, le Tribunal de police avait diminué de 30 fr. à 15 fr. le montant du jour-amende, cela alors même que sa situation personnelle et économique n'avait pas changé entre la délivrance de l'ordonnance pénale et le jugement de première instance.
Il apparaît toutefois que la cour cantonale s'est prononcée sur le sort des frais de première instance, estimant, en référence à l'art. 426 al. 1 CPP, que ceux-ci demeuraient entièrement à sa charge (cf. jugement entrepris, consid. 6 p. 9). On ne distingue dans cette mesure pas de violation du droit d'être entendu.
Pour le surplus, dans la mesure où la procédure d'opposition à une ordonnance pénale ne constitue pas une procédure de recours au sens technique, les normes sur la répartition des frais dans le cadre de la procédure de recours ne sont pas applicables. Les frais doivent donc être répartis de la même manière que si le ministère public avait déposé un acte d'accusation (cf. arrêt 6B_1025/2014 du 9 février 2015 consid. 2.3.2). Il s'ensuit que l'art. 428 CPP, qui régit la répartition des frais dans le cadre de la procédure de recours au sens du CPP, n'est pas applicable aux prononcés de première instance (cf. ATF 138 IV 225 consid. 8.2 p. 29; arrêt 6B_90/2017 du 22 novembre 2017 consid. 5.3). Au vu de ce qui précède, la cour cantonale n'a pas violé le droit fédéral en retenant que les frais de première instance devaient être mis à la charge du recourant en application de l'art. 426 al. 1 CPP, nonobstant la fixation par le Tribunal de police d'un montant du jour-amende inférieur à celui prononcé par ordonnance pénale.
Le grief doit être rejeté.
4.
Il s'ensuit que le recours doit être rejeté. Comme les conclusions du recourant étaient vouées à l'échec, l'assistance judiciaire ne peut être accordée (art. 64 al. 1 LTF). Le recourant doit donc supporter les frais judiciaires (art. 66 al. 1 LTF), dont le montant est toutefois fixé en tenant compte de sa situation financière, laquelle n'apparaît pas favorable (art. 65 al. 2 LTF).
Par ces motifs, le Tribunal fédéral prononce :
1.
Le recours est rejeté.
2.
La demande d'assistance judiciaire est rejetée.
3.
Les frais judiciaires, arrêtés à 1200 fr., sont mis à la charge du recourant.
4.
Le présent arrêt est communiqué aux parties et à la Cour d'appel pénale du Tribunal cantonal du canton de Vaud.
Lausanne, le 14 janvier 2019
Au nom de la Cour de droit pénal
du Tribunal fédéral suisse
Le Président : Denys
Le Greffier : Tinguely