contract changes init

This commit is contained in:
Michel Fromme
2023-07-27 12:29:12 +02:00
parent 0bab85fe75
commit 5157308745
5 changed files with 109 additions and 94 deletions
+2 -2
View File
@@ -60,8 +60,8 @@ onMounted(async () => {
// initContracts // initContracts
await walletStore.init(); await walletStore.init();
await tokenStore.init(); await tokenStore.initV2();
// await memeBurnerStore.init(); await memeBurnerStore.init();
// await rewardLockerStore.init(); // await rewardLockerStore.init();
// await memeBurnerStore.init(); // await memeBurnerStore.init();
// await multiCallStore.init(); // await multiCallStore.init();
+2 -2
View File
@@ -154,7 +154,7 @@ async function getRewardsFor(e) {
return; return;
} }
console.log("activeToken.value.decimals", activeToken.value.decimals); console.log("activeToken.value.decimals", activeToken.value.decimals);
const rewardsForResult = await memeburnerStore.getRewardsFor( const rewardsForResult = await memeburnerStore.getRewardFor(
BigInt(e.target.value * Math.pow(10, activeToken.value.decimals)) BigInt(e.target.value * Math.pow(10, activeToken.value.decimals))
); );
// var test = await memeburnerStore.getRewardsFor(10000); // var test = await memeburnerStore.getRewardsFor(10000);
@@ -167,7 +167,7 @@ async function getRewardsFor(e) {
Math.pow(10, tokenStore.memeToken.decimals) Math.pow(10, tokenStore.memeToken.decimals)
); );
output.value = output.value =
rewardsForResult / Math.pow(10, tokenStore.memeToken.decimals); rewardsForResult / BigInt(Math.pow(10, tokenStore.memeToken.decimals));
} }
async function addTokens(value) { async function addTokens(value) {
+35 -26
View File
@@ -3,46 +3,56 @@ import MemeBurnerJson from "@/assets/contracts/MemeBurner.json";
import { useTokenStore } from "./tokens"; import { useTokenStore } from "./tokens";
import { useMultiCallStore } from "./multicall"; import { useMultiCallStore } from "./multicall";
import { useWalletStore } from "./wallet"; import { useWalletStore } from "./wallet";
import { useWalletStoreV2 } from "./walletV2";
import { useRoundsStore } from "@/stores/rounds"; import { useRoundsStore } from "@/stores/rounds";
import { multicall, getContract, fetchToken } from "@wagmi/core";
export const useMemeburnerStore = defineStore("memeburner", { export const useMemeburnerStore = defineStore("memeburner", {
state: () => ({ state: () => ({
config: MemeBurnerJson, config: MemeBurnerJson,
contract: null, contract: null,
loading: false, loading: false,
}), }),
getters: {}, getters: {},
actions: { actions: {
async init() { async init() {
console.log("-----------init memeburner-------------"); console.log("-----------init memeburner-------------");
const walletStore = useWalletStore(); const walletStore = useWalletStoreV2();
const roundsStore = useRoundsStore(); // const roundsStore = useRoundsStore();
this.contract = new walletStore.web3.eth.Contract(this.config.abi, this.config.contractAddress); // this.contract = new walletStore.web3.eth.Contract(this.config.abi, this.config.contractAddress);
this.contract = getContract({
address: this.config.contractAddress,
abi: this.config.abi,
PublicClient: walletStore.publicClient,
WalletClient: walletStore.walletClient,
});
// const websocketMemeBurner = new walletStore.web3socket.eth.Contract(
const websocketMemeBurner = new walletStore.web3socket.eth.Contract( // this.config.abi,
this.config.abi, // this.config.contractAddress
this.config.contractAddress // );
); // websocketMemeBurner.events
websocketMemeBurner.events // .MemeSacrificed()
.MemeSacrificed() // .on("data", async (event) => {
.on("data", async (event) => { // console.log("sacrificedAmount", event.returnValues.sacrificedAmount);
console.log("sacrificedAmount", event.returnValues.sacrificedAmount); // console.log("sacrificedToken", event.returnValues.sacrificedToken);
console.log("sacrificedToken", event.returnValues.sacrificedToken); // await roundsStore.updateCurrentRound(
await roundsStore.updateCurrentRound( // event.returnValues.sacrificedToken,
event.returnValues.sacrificedToken, // event.returnValues.sacrificedAmount
event.returnValues.sacrificedAmount // );
); // })
}) // .on("error", (error) => console.log("MemeSacrificederror", error));
.on("error", (error) => console.log("MemeSacrificederror", error));
}, },
async getRewardsFor(amount) { async getRewardFor(amount) {
const tokenStore = useTokenStore(); const tokenStore = useTokenStore();
var rewards = await this.contract.methods // var rewards = await this.contract.methods
.getRewardFor(tokenStore.activeToken.contractAddress, amount) // .getRewardFor(tokenStore.activeToken.contractAddress, amount)
.call(); // .call();
const rewards = await this.contract.read.getRewardFor([tokenStore.activeToken.contractAddress, amount]);
console.log("rewards", rewards);
return rewards; return rewards;
}, },
async getCurrentRound() { async getCurrentRound() {
@@ -100,7 +110,6 @@ export const useMemeburnerStore = defineStore("memeburner", {
}, },
async getGoalInBLD(roundNumber) { async getGoalInBLD(roundNumber) {
return await this.contract.methods.getGoalInBLD(roundNumber).call(); return await this.contract.methods.getGoalInBLD(roundNumber).call();
},
}
}, },
}); });
+40 -38
View File
@@ -2,6 +2,7 @@ import { defineStore } from "pinia";
import { markRaw } from "vue"; import { markRaw } from "vue";
import Web3 from "web3"; import Web3 from "web3";
import { useWalletStore } from "./wallet"; import { useWalletStore } from "./wallet";
import { useWalletStoreV2 } from "./walletV2";
import { useContractStore } from "./contracts"; import { useContractStore } from "./contracts";
import { ethers } from "ethers"; import { ethers } from "ethers";
import { useMemeburnerStore } from "./memeburner"; import { useMemeburnerStore } from "./memeburner";
@@ -9,7 +10,7 @@ import Meme1Json from "@/assets/contracts/Meme1.json";
import Meme2Json from "@/assets/contracts/Meme2.json"; import Meme2Json from "@/assets/contracts/Meme2.json";
import MemeToken from "@/assets/contracts/MemeToken.json"; import MemeToken from "@/assets/contracts/MemeToken.json";
import MemeBurnerJson from "@/assets/contracts/MemeBurner.json"; import MemeBurnerJson from "@/assets/contracts/MemeBurner.json";
import { multicall } from "@wagmi/core"; import { multicall, getContract, fetchToken } from "@wagmi/core";
export const useTokenStore = defineStore("token", { export const useTokenStore = defineStore("token", {
@@ -71,70 +72,71 @@ export const useTokenStore = defineStore("token", {
async initV2() { async initV2() {
console.log("-----------init token-------------"); console.log("-----------init token-------------");
const contracts = []; const contracts = [];
const walletStore = useWalletStore(); const walletStore = useWalletStoreV2();
for (let index = 0; index < this.token.length; index++) { for (let index = 0; index < this.token.length; index++) {
const token = this.token[index]; const token = this.token[index];
// token.contract = new walletStore.web3.eth.Contract(token.abi, token.contractAddress);
token.contract = getContract({ token.contract = getContract({
address: token.contractAddress, address: token.contractAddress,
abi: token.abi, abi: token.abi,
publicClient, PublicClient: walletStore.publicClient,
WalletClient: walletStore.walletClient
}); });
contracts.push({...token.contract, functionName: "decimals"}) contracts.push({...token.contract, functionName: "decimals"})
// token.decimals = parseInt(await token.contract.methods.decimals().call());
} }
//MemeToken init
this.memeToken.contract = getContract({
address: this.memeToken.config.contractAddress,
abi: this.memeToken.config.abi,
PublicClient: walletStore.publicClient,
WalletClient: walletStore.walletClient,
});
contracts.push({ ...this.memeToken.contract, functionName: "decimals" });
const data = await multicall({ const data = await multicall({
contracts contracts,
}); });
//multicall decimal
console.log("data", data);
//MemeToken init
this.memeToken.contract = new walletStore.web3.eth.Contract(
this.memeToken.config.abi,
this.memeToken.config.contractAddress
);
this.memeToken.decimals = parseInt(await this.memeToken.contract.methods.decimals().call());
},
async init() {
console.log("-----------init token-------------");
const walletStore = useWalletStore();
for (let index = 0; index < this.token.length; index++) { for (let index = 0; index < this.token.length; index++) {
const token = this.token[index]; const token = this.token[index];
token.contract = new walletStore.web3.eth.Contract(token.abi, token.contractAddress); token.decimals = data[index].result
token.decimals = parseInt(await token.contract.methods.decimals().call());
} }
//MemeToken init this.memeToken.decimals = data[this.token.length].result;
this.memeToken.contract = new walletStore.web3.eth.Contract(
this.memeToken.config.abi,
this.memeToken.config.contractAddress
);
this.memeToken.decimals = parseInt(await this.memeToken.contract.methods.decimals().call());
}, },
async changeActiveToken(token) { async changeActiveToken(token) {
console.log("changeActiveToken");
this.activeToken = token; this.activeToken = token;
const web3 = new Web3(window.ethereum); // const web3 = new Web3(window.ethereum);
this.contract = new web3.eth.Contract(token.abi, token.contractAddress); // this.contract = new web3.eth.Contract(token.abi, token.contractAddress);
const walletStore = useWalletStore(); const walletStore = useWalletStoreV2();
if (walletStore.connected) { if (walletStore.connected) {
//TODO, wenn connected, dann all diese Daten laden?
this.activeToken.balance = await walletStore.getTokenBalance(token); this.activeToken.balance = await walletStore.getTokenBalance(token);
this.activeToken.allowance = await this.allowance(); this.activeToken.allowance = await this.allowance();
} }
}, },
async allowance() { async allowance() {
console.log("allowance"); console.log("allowance");
const walletStore = useWalletStore(); const walletStore = useWalletStoreV2();
const memeBurnerStore = useMemeburnerStore(); const memeBurnerStore = useMemeburnerStore();
var allowance = await this.contract.methods // var allowance = await this.contract.methods
.allowance(walletStore.address, memeBurnerStore.config.contractAddress) // .allowance(walletStore.address, memeBurnerStore.config.contractAddress)
.call(); // .call();
var decimals = await this.contract.methods.decimals().call(); console.log("this.activeToken.contract", this.activeToken.contract);
console.log("decimals", decimals); var allowance = await this.activeToken.contract.read.allowance([
console.log("Math.pow(10, decimals)", Math.pow(10, decimals)); walletStore.address,
allowance = BigInt(allowance / Math.pow(10, decimals)); memeBurnerStore.config.contractAddress,
]);
// var decimals = await this.contract.methods.decimals().call();
// console.log("decimals", decimals);
const decimals = this.activeToken.decimals;
allowance = BigInt(allowance / BigInt(Math.pow(10, decimals)));
return allowance; return allowance;
}, },
async approveToken(amount) { async approveToken(amount) {
+9 -5
View File
@@ -10,6 +10,7 @@ import {
getContract, getContract,
connect, connect,
getWalletClient, getWalletClient,
getPublicClient,
disconnect, disconnect,
InjectedConnector, InjectedConnector,
watchAccount, watchAccount,
@@ -33,7 +34,7 @@ export const useWalletStoreV2 = defineStore("walletV2", {
web3: null, web3: null,
provider: null, provider: null,
client: null, client: null,
pubilcClient: null, publicClient: null,
walletClient: null, walletClient: null,
config: null config: null
}), }),
@@ -77,7 +78,8 @@ export const useWalletStoreV2 = defineStore("walletV2", {
publicClient, publicClient,
webSocketPublicClient, webSocketPublicClient,
}); });
this.publicClient = publicClient;
this.walletClient = await getWalletClient();
// await this.isConnected(); // await this.isConnected();
// const goerliKey = import.meta.env.VITE_GOERLI_KEY; // const goerliKey = import.meta.env.VITE_GOERLI_KEY;
// if (this.connected) { // if (this.connected) {
@@ -121,9 +123,11 @@ export const useWalletStoreV2 = defineStore("walletV2", {
// this.address = connection.account; // this.address = connection.account;
}, },
async getTokenBalance(token) { async getTokenBalance(token) {
const tokenStore = useTokenStore(); // const tokenStore = useTokenStore();
const contract = tokenStore.getTokenContract(token); // const contract = tokenStore.getTokenContract(token);
const result = await contract.methods.balanceOf(this.address).call(); // const result = await contract.methods.balanceOf(this.address).call();
console.log("this.address", this.address);
const result = await token.contract.read.balanceOf([this.address]);
return result; return result;
}, },
async isConnected() { async isConnected() {