diff --git a/src/contract.jsligo b/src/contract.jsligo
index c3ffa6ae48fddecd340e7888b5aa96a8a6fa0abe..e5fd758d3b9eec551b4787d28bf155febf9db724 100644
--- a/src/contract.jsligo
+++ b/src/contract.jsligo
@@ -8,14 +8,9 @@
 
 #import "contracts/fa2.jsligo" "FA2"
 
-
-export type vote =
-  | ["yay"]
-  | ["nope"]
-  | ["pass"];
+export type vote = ["yay"] | ["nope"] | ["pass"];
 
 // ===============================================================================================
-
 namespace Preamble {
     export const prepare_new_proposal = (
         params: Parameter.Types.proposal_params,
@@ -38,7 +33,6 @@ namespace Preamble {
 };
 
 // ===============================================================================================
-
 type request = [Parameter.Types.t, Storage.Types.t];
 
 export type result = [list<operation>, Storage.Types.t];
@@ -54,34 +48,59 @@ export const create_proposal = (
 };
 
 @entry
-export const make_vote = (proposal_number: nat, vote:vote,storage: Storage.Types.t, dao_contract_address : address ): result => {
-     let proposal = Preamble.retrieve_a_proposal(proposal_number, storage);
-    proposal = Storage.Utils.add_signer_to_proposal(
-        proposal,
-        (Tezos.get_sender()),
-        storage.threshold
-    );
-    
+export const make_vote = (
+    proposal_number: nat,
+    vote: vote,
+    storage: Storage.Types.t,
+    dao_contract_address: address
+): result => {
+    let proposal = Preamble.retrieve_a_proposal(proposal_number, storage);
+    proposal
+    = Storage.Utils.add_signer_to_proposal(
+          proposal,
+          (Tezos.get_sender()),
+          storage.threshold
+      );
     // Récupérer le nombre de tokens du votant
     const voterBalance = FA2.get_balance(Tezos.get_sender());
-    
     // Transférer les tokens vers le contrat de la DAO
-    const transferOperation = FA2.transfer_tokens(
-        Tezos.get_sender(),
-        dao_contract_address,
-        voterBalance
-    );
-    
+    const transferOperation =
+        FA2.transfer_tokens(
+            Tezos.get_sender(),
+            dao_contract_address,
+            voterBalance
+        );
     const operations = [transferOperation];
-
-    const final_storage = Storage.Utils.update_proposal(proposal_number, proposal, storage);
-    
+    const final_storage =
+        Storage.Utils.update_proposal(proposal_number, proposal, storage);
     return [operations, final_storage];
 };
 
 // ===============================================================================================
-// This function is now only used for tests, and will be removed once tests are rewritten
 
+@entry
+export const buy_token = (
+    buyer_address: address,
+    amount: nat,
+    storage: Storage.Types.t
+): result => {
+    // Transférer les tokens de la "banque" vers l'acheteur
+    const transferOperation =
+        FA2.transfer_tokens(storage.bank_address, buyer_address, amount);
+    // Mettre à jour le stockage pour refléter le nouveau solde de l'acheteur et de la "banque"
+    const final_storage =
+        Storage.Utils.update_balances(
+            storage.bank_address,
+            buyer_address,
+            amount,
+            storage
+        );
+    // Retourner une liste d'opérations et le stockage mis à jour
+    return [[transferOperation], final_storage];
+};
+
+// ===============================================================================================
+// This function is now only used for tests, and will be removed once tests are rewritten
 export const main = (action: Parameter.Types.t, store: Storage.Types.t): result =>
     match(action) {
         when (Create_proposal(p)):
diff --git a/src/storage.jsligo b/src/storage.jsligo
index 10f87e0f27d60a5e465296d1b8784ac36074bfeb..cb15e1dfd9c8242f26227592a90b0c5aec18cf75 100644
--- a/src/storage.jsligo
+++ b/src/storage.jsligo
@@ -18,7 +18,8 @@ export namespace Types {
         proposal_map: big_map<nat, proposal>,
         signers: set<address>,
         threshold: nat,
-        metadata: big_map<string, bytes>
+        metadata: big_map<string, bytes>,
+        balances: big_map<address, nat>
     };
 };
 
@@ -31,7 +32,8 @@ export namespace Utils {
                 proposal_map: Big_map.empty as big_map<nat, Types.proposal>,
                 signers: signers,
                 threshold: threshold,
-                metadata: (Big_map.empty as big_map<string, bytes>)
+                metadata: (Big_map.empty as big_map<string, bytes>),
+                balances: (Big_map.empty as big_map<address, nat>)
             }
         );
     @inline
@@ -105,4 +107,29 @@ export namespace Utils {
             );
         return { ...storage, proposal_map: proposal_map }
     };
+/*
+   @inline
+export const update_balances = (bank_address: address, buyer_address: address, amount: nat, storage: Types.t): Types.t => {
+    // Vérifier si les adresses existent dans le stockage, sinon initialiser à 0
+    if (Test.equal(Big_map.find_opt(bank_address, storage.balances), None())) {
+        let storage = { ...storage };
+        storage.balances = Big_map.add(bank_address, 0n, storage.balances);
+    }
+    if (Test.equal(Big_map.find_opt(buyer_address, storage.balances), None())) {
+        let updatedStorage = { ...storage };
+        updatedStorage.balances = Big_map.add(buyer_address, 0n, updatedStorage.balances);
+    }
+
+    // Récupérer les soldes actuels
+    const bank_balance = Big_map.find_opt(bank_address, storage.balances).get();
+    const buyer_balance = Big_map.find_opt(buyer_address, storage.balances).get();
+
+    // Mettre à jour les soldes
+    storage.balances = Big_map.update(bank_address, Some(bank_balance - amount), storage.balances);
+    storage.balances = Big_map.update(buyer_address, Some(buyer_balance + amount), storage.balances);
+
+    // Retourner le stockage mis à jour
+    return storage;
+}; 
+*/
 }