Skip to content
GitLab
Explore
Sign in
Primary navigation
Search or go to…
Project
Q
QSI_Groupe2
Manage
Activity
Members
Labels
Plan
Issues
Issue boards
Milestones
Wiki
Code
Merge requests
Repository
Branches
Commits
Tags
Repository graph
Compare revisions
Snippets
Build
Pipelines
Jobs
Pipeline schedules
Artifacts
Deploy
Releases
Package registry
Model registry
Operate
Environments
Terraform modules
Monitor
Incidents
Analyze
Value stream analytics
Contributor analytics
CI/CD analytics
Repository analytics
Model experiments
Help
Help
Support
GitLab documentation
Compare GitLab plans
GitLab community forum
Contribute to GitLab
Provide feedback
Keyboard shortcuts
?
Snippets
Groups
Projects
Show more breadcrumbs
Lydia Tarmelit
QSI_Groupe2
Commits
1bd5c525
Commit
1bd5c525
authored
1 year ago
by
Mouctar Fofana
Browse files
Options
Downloads
Patches
Plain Diff
ajout de la méthode buy_token et début des devs pour la mise à jour de la balance
parent
cda57240
No related branches found
No related tags found
No related merge requests found
Changes
2
Show whitespace changes
Inline
Side-by-side
Showing
2 changed files
src/contract.jsligo
+45
-26
45 additions, 26 deletions
src/contract.jsligo
src/storage.jsligo
+29
-2
29 additions, 2 deletions
src/storage.jsligo
with
74 additions
and
28 deletions
src/contract.jsligo
+
45
−
26
View file @
1bd5c525
...
@@ -8,14 +8,9 @@
...
@@ -8,14 +8,9 @@
#import "contracts/fa2.jsligo" "FA2"
#import "contracts/fa2.jsligo" "FA2"
export type vote = ["yay"] | ["nope"] | ["pass"];
export type vote =
| ["yay"]
| ["nope"]
| ["pass"];
// ===============================================================================================
// ===============================================================================================
namespace Preamble {
namespace Preamble {
export const prepare_new_proposal = (
export const prepare_new_proposal = (
params: Parameter.Types.proposal_params,
params: Parameter.Types.proposal_params,
...
@@ -38,7 +33,6 @@ namespace Preamble {
...
@@ -38,7 +33,6 @@ namespace Preamble {
};
};
// ===============================================================================================
// ===============================================================================================
type request = [Parameter.Types.t, Storage.Types.t];
type request = [Parameter.Types.t, Storage.Types.t];
export type result = [list<operation>, Storage.Types.t];
export type result = [list<operation>, Storage.Types.t];
...
@@ -54,34 +48,59 @@ export const create_proposal = (
...
@@ -54,34 +48,59 @@ export const create_proposal = (
};
};
@entry
@entry
export const make_vote = (proposal_number: nat, vote:vote,storage: Storage.Types.t, dao_contract_address : address ): result => {
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);
let proposal = Preamble.retrieve_a_proposal(proposal_number, storage);
proposal = Storage.Utils.add_signer_to_proposal(
proposal
= Storage.Utils.add_signer_to_proposal(
proposal,
proposal,
(Tezos.get_sender()),
(Tezos.get_sender()),
storage.threshold
storage.threshold
);
);
// Récupérer le nombre de tokens du votant
// Récupérer le nombre de tokens du votant
const voterBalance = FA2.get_balance(Tezos.get_sender());
const voterBalance = FA2.get_balance(Tezos.get_sender());
// Transférer les tokens vers le contrat de la DAO
// Transférer les tokens vers le contrat de la DAO
const transferOperation = FA2.transfer_tokens(
const transferOperation =
FA2.transfer_tokens(
Tezos.get_sender(),
Tezos.get_sender(),
dao_contract_address,
dao_contract_address,
voterBalance
voterBalance
);
);
const operations = [transferOperation];
const operations = [transferOperation];
const final_storage =
Storage.Utils.update_proposal(proposal_number, proposal, storage);
return [operations, final_storage];
};
const final_storage = Storage.Utils.update_proposal(proposal_number, proposal, storage);
// ===============================================================================================
return [operations, final_storage];
@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
// 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 =>
export const main = (action: Parameter.Types.t, store: Storage.Types.t): result =>
match(action) {
match(action) {
when (Create_proposal(p)):
when (Create_proposal(p)):
...
...
This diff is collapsed.
Click to expand it.
src/storage.jsligo
+
29
−
2
View file @
1bd5c525
...
@@ -18,7 +18,8 @@ export namespace Types {
...
@@ -18,7 +18,8 @@ export namespace Types {
proposal_map: big_map<nat, proposal>,
proposal_map: big_map<nat, proposal>,
signers: set<address>,
signers: set<address>,
threshold: nat,
threshold: nat,
metadata: big_map<string, bytes>
metadata: big_map<string, bytes>,
balances: big_map<address, nat>
};
};
};
};
...
@@ -31,7 +32,8 @@ export namespace Utils {
...
@@ -31,7 +32,8 @@ export namespace Utils {
proposal_map: Big_map.empty as big_map<nat, Types.proposal>,
proposal_map: Big_map.empty as big_map<nat, Types.proposal>,
signers: signers,
signers: signers,
threshold: threshold,
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
@inline
...
@@ -105,4 +107,29 @@ export namespace Utils {
...
@@ -105,4 +107,29 @@ export namespace Utils {
);
);
return { ...storage, proposal_map: proposal_map }
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;
};
*/
}
}
This diff is collapsed.
Click to expand it.
Preview
0%
Loading
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Save comment
Cancel
Please
register
or
sign in
to comment