rounds implemented + over all improvements

This commit is contained in:
EmberSpirit
2023-07-10 21:18:05 +02:00
parent 86f4e97f23
commit 9565f494ea
12 changed files with 350 additions and 127 deletions
+82 -51
View File
@@ -11,20 +11,18 @@ import { useContractStore } from "@/stores/contracts";
import { useMemeburnerStore } from "@/stores/memeburner";
import { useRewardLockerStore } from "@/stores/rewardlocker";
import { useMultiCallStore } from "@/stores/multicall";
import { useRoundsStore } from "@/stores/rounds";
const tokenStore = useTokenStore();
const contractStore = useContractStore();
const memeBurnerStore = useMemeburnerStore();
const rewardLockerStore = useRewardLockerStore();
const multiCallStore = useMultiCallStore();
const { memeBurner } = storeToRefs(tokenStore);
const roundsStore = useRoundsStore();
const { memeBurner, token } = storeToRefs(tokenStore);
const { list } = storeToRefs(contractStore);
const isMobile = ref(false);
isMobile.value = isMobileFunc();
onMounted(() => {
window.addEventListener("resize", handleWindowSizeChange);
handleWindowSizeChange();
});
let subscription;
onUnmounted(() => {
window.removeEventListener("resize", handleWindowSizeChange);
});
@@ -43,74 +41,107 @@ function isMobileFunc() {
provide("isMobile", isMobile);
onMounted(async () => {
window.addEventListener("resize", handleWindowSizeChange);
handleWindowSizeChange();
//more or less tests
var test = await walletStore.isConnected();
console.log("test", test);
let web3 = new Web3("https://eth-goerli.g.alchemy.com/v2/0-W9tOm6v_QP1PfRV8RuBCpWr-qoEbkN");
let web3socket = new Web3(
new Web3.providers.WebsocketProvider("wss://eth-goerli.g.alchemy.com/v2/0-W9tOm6v_QP1PfRV8RuBCpWr-qoEbkN")
);
console.log("web3socket", web3socket);
//init
walletStore.web3 = web3;
const contract = new web3.eth.Contract(memeBurner.value.config.abi, memeBurner.value.config.contractAddress);
// const contract = new web3.eth.Contract(memeBurner.value.config.abi, memeBurner.value.config.contractAddress);
list.value.memeBurnerPublic = new web3.eth.Contract(
memeBurner.value.config.abi,
memeBurner.value.config.contractAddress
);
//Memeburner Contract
memeBurnerStore.contract = new web3.eth.Contract(
memeBurnerStore.config.abi,
memeBurnerStore.config.contractAddress
);
var getGoal = await memeBurnerStore.getGoal(1);
var getSacrificedMeme1 = await memeBurnerStore.getSacrificedMeme(1, "0x4435ABC578136e2Eca50b5EFf950F17CAF42485b");
var getSacrificedMeme2 = await memeBurnerStore.getSacrificedMeme(1, "0xa0B7b2a78dF87eDc70736f7ED9D40d86c37B533F");
var blub1 = (getSacrificedMeme1.amountAchieved / getGoal) * 100;
var blub2 = (getSacrificedMeme2.amountAchieved / getGoal) * 100;
// var testabc = await memeBurnerStore.contract.methods
// .getSacrificedMeme(1, "0x4435ABC578136e2Eca50b5EFf950F17CAF42485b")
// .call();
// console.log("testabc", testabc);
memeBurnerStore.contract = new web3.eth.Contract(
memeBurnerStore.config.abi,
memeBurnerStore.config.contractAddress
);
// var data = await memeBurnerStore.getSacrificedRound(1);
// console.log("data", data);
// console.log("blub1", blub1);
// console.log("blub2", blub2);
// console.log("getSacrificedMeme", getSacrificedMeme1.amountAchieved);
// console.log("getGoal", getGoal);
// console.log("memeBurnerStore.contract", memeBurnerStore.contract);
// console.log("list", list.value);
// const rounds = await contract.methods.rounds("0x0e349D42C125acA39ea58024FFC23ED0fE5feE32").call();
// console.log("rounds", rounds);
var testabc = await memeBurnerStore.contract.methods
.getSacrificedMeme(1, "0x4435ABC578136e2Eca50b5EFf950F17CAF42485b")
.call();
console.log("testabc", testabc);
// var claim = await rewardLockerStore.getTotalRewardsOf("0x60dd9D0e015115b9aEf61bEDCcBE1390CEEfC247", [1]);
// console.log("claim", claim);
multiCallStore.contract = new web3.eth.Contract(multiCallStore.config.abi, multiCallStore.config.contractAddress);
var data = await memeBurnerStore.getSacrificedRound(1);
console.log("data", data);
memeBurnerStore.contract = new web3.eth.Contract(
memeBurnerStore.config.abi,
memeBurnerStore.config.contractAddress
);
console.log("blub1", blub1);
console.log("blub2", blub2);
console.log("getSacrificedMeme", getSacrificedMeme1.amountAchieved);
console.log("getGoal", getGoal);
console.log("memeBurnerStore.contract", memeBurnerStore.contract);
console.log("list", list.value);
const currentRound = await memeBurnerStore.getCurrentRound();
const rounds = await contract.methods.rounds("0x0e349D42C125acA39ea58024FFC23ED0fE5feE32").call();
console.log("currentRound", currentRound);
console.log("rounds", rounds);
// var lastCompletedRound = await rewardLockerStore.lastCompletedRound();
// console.log("lastCompletedRound", lastCompletedRound);
// var getwards = await rewardLockerStore.getRewards(
// "0x60dd9D0e015115b9aEf61bEDCcBE1390CEEfC247",
// 1,
// "0x4435ABC578136e2Eca50b5EFf950F17CAF42485b"
// );
// console.log("getwards", getwards);
//contracts
rewardLockerStore.contract = new web3.eth.Contract(
rewardLockerStore.config.abi,
rewardLockerStore.config.contractAddress
);
var lastCompletedRound = await rewardLockerStore.lastCompletedRound();
console.log("lastCompletedRound", lastCompletedRound);
var getwards = await rewardLockerStore.getRewards(
walletStore.address,
1,
"0x4435ABC578136e2Eca50b5EFf950F17CAF42485b"
memeBurnerStore.contract = new web3.eth.Contract(
memeBurnerStore.config.abi,
memeBurnerStore.config.contractAddress
);
console.log("getwards", getwards);
tokenStore.memeToken.contract = new web3.eth.Contract(
tokenStore.memeToken.config.abi,
tokenStore.memeToken.config.contractAddress
);
const websocketMemeBurner = new web3socket.eth.Contract(
memeBurnerStore.config.abi,
memeBurnerStore.config.contractAddress
);
multiCallStore.contract = new web3.eth.Contract(multiCallStore.config.abi, multiCallStore.config.contractAddress);
//init
roundsStore.currentRound = parseInt(await memeBurnerStore.getCurrentRound());
console.log("roundsStore.currentRound", roundsStore.currentRound);
roundsStore.activeRound = roundsStore.currentRound;
await roundsStore.fillRound(roundsStore.activeRound);
tokenStore.memeToken.decimals = parseInt(await tokenStore.memeToken.contract.methods.decimals().call());
for (let index = 0; index < token.value.length; index++) {
const _token = token.value[index];
_token.contract = new web3.eth.Contract(_token.abi, _token.contractAddress);
_token.decimals = parseInt(await _token.contract.methods.decimals().call());
}
console.log("token123", token.value);
//events
// var bleb = roundsStore.rounds[roundsStore.currentRound].find(
// (obj) => obj.contractAddress === "0x4435ABC578136e2Eca50b5EFf950F17CAF42485b"
// );
// console.log("roundsStore.rounds[roundsStore.currentRound]", bleb);
websocketMemeBurner.events
.MemeSacrificed()
.on("data", async (event) => {
console.log("sacrificedAmount", event.returnValues.sacrificedAmount);
console.log("sacrificedToken", event.returnValues.sacrificedToken);
await roundsStore.updateCurrentRound(
event.returnValues.sacrificedToken,
event.returnValues.sacrificedAmount
);
})
.on("error", (error) => console.log("MemeSacrificederror", error));
});
</script>
+32 -23
View File
@@ -1,15 +1,15 @@
<template>
<div class="blood-chart-wrapper">
<div class="blood-chart-element" v-for="coin in dataPoints" :key="coin.name">
<div class="blood-chart-wrapper" v-if="props.data">
<div class="blood-chart-element" v-for="coin in props.data.token" :key="coin.name">
<div class="blood-chart-element-header">
<div class="blood-chart-coin">
<img :src="getImageUrl(coin.icon)" alt="logo" />
<img :src="getImageUrl(coin.vamplogo)" alt="logo" />
</div>
<div class="blood-chart-coin-title">{{ coin.name }}</div>
</div>
<div class="blood-chart-element-body">
<div class="blood-chart-bar-wrapper">
<div class="blood-chart-bar" :style="`height: ${coin.percentage}%`">
<div class="blood-chart-bar" :style="`height: ${getPercentage(coin.amount, props.data.goal)}%`">
<svg
class="waves"
xmlns="http://www.w3.org/2000/svg"
@@ -39,12 +39,14 @@
<div><span class="dot"></span></div>
<div><span class="dot"></span></div>
</div>
<div class="blood-chart-bar-percentage">{{ coin.percentage }}%</div>
<div class="blood-chart-bar-percentage">{{ getPercentage(coin.amount, props.data.goal) }}%</div>
</div>
</div>
</div>
<div class="blood-chart-element-footer">
<div class="blood-chart-amount">130,4b</div>
<div class="blood-chart-amount">
{{ compactNumber(coin.amount) }}
</div>
<div class="blood-chart-coin">$BLOOD</div>
</div>
</div>
@@ -52,27 +54,34 @@
</template>
<script setup>
import { getPercentage, compactNumber } from "@/helper/helper.js";
const props = defineProps({
data: Array,
});
console.log(props.data);
function getImageUrl(url) {
return new URL(url, import.meta.url).href;
}
const dataPoints = [
{
name: "$PEPE",
percentage: 62.2,
icon: "/src/assets/img/token/pepevamp.png",
},
{
name: "$SHIB",
percentage: 31.2,
icon: "/src/assets/img/token/shibvamp.png",
},
{
name: "$ELON",
percentage: 54.5,
icon: "/src/assets/img/token/elonvamp.png",
},
];
// const dataPoints = [
// {
// name: "$PEPE",
// percentage: 62.2,
// icon: "/src/assets/img/token/pepevamp.png",
// },
// {
// name: "$SHIB",
// percentage: 31.2,
// icon: "/src/assets/img/token/shibvamp.png",
// },
// {
// name: "$ELON",
// percentage: 54.5,
// icon: "/src/assets/img/token/elonvamp.png",
// },
// ];
</script>
<style lang="sass">
+24 -10
View File
@@ -24,9 +24,9 @@
<div class="sacrifice-from-to-wrapper" v-if="activeToken.contractAddress">
<div class="sacrifice-from-wrapper bloodline-border bloodline-border--variant1">
<div class="sarcrifice-from-input">
<input @input="processChange" type="number" v-model="tokenNumber" :placeholder="0" />
<input @input="processChange" v-model="tokenNumber" :placeholder="0" />
<div class="sacrifice-logo">
<img src="@/assets/img/vampir.png" alt="vampir" />
<img :src="activeToken.logo" alt="vampir" />
</div>
</div>
<div class="value-adder">
@@ -70,12 +70,17 @@
<div
class="btn btn-immortal"
v-if="activeToken.allowance > 0 && activeToken.allowance >= tokenNumber"
@click="approvalData = tokenStore.sacrificeToken(1)"
@click="approvalData = tokenStore.sacrificeToken(tokenNumber)"
>
<font-awesome-icon v-if="loading" icon="spinner" spin />
Sacrifce {{ activeToken.name }}
</div>
<div class="btn btn-immortal" v-else @click="approvalData = tokenStore.approveToken(1)">
<div
class="btn btn-immortal"
v-else
@click="approvalData = tokenStore.approveToken(tokenNumber)"
>
<font-awesome-icon v-if="loading" icon="spinner" spin />
Approve {{ activeToken.name }}
</div>
</div>
@@ -118,14 +123,23 @@ const tokenNumber = ref(0);
const output = ref(0);
const approvalData = ref(null);
const processChange = Helper.debounce((e) => test(e));
const processChange = Helper.debounce((e) => getRewardsFor(e));
async function test(e) {
console.log("hier", e);
output.value = await tokenStore.getRewardsFor(parseInt(e.target.value));
async function getRewardsFor(e) {
if (!e.target.value) {
output.value = 0;
return;
}
console.log("e.target.value * 18", e.target.value * Math.pow(10, 18));
const rewardsForResult = await tokenStore.getRewardsFor(
BigInt(e.target.value * Math.pow(10, activeToken.value.decimals))
);
output.value = rewardsForResult / Math.pow(10, tokenStore.memeToken.decimals);
}
function addTokens(value) {
async function addTokens(value) {
tokenNumber.value = tokenNumber.value + value;
output.value = await tokenStore.getRewardsFor(parseInt(tokenNumber.value));
}
</script>
@@ -230,7 +244,7 @@ function addTokens(value) {
height: 45px
border-radius: 50%
@media (min-width: 992px)
height: auto
height: 83px
width: auto
.sacrifice-to-output
flex: 1 1 auto
+21 -4
View File
@@ -6,9 +6,6 @@
<font-awesome-icon icon="fa-solid fa-plus" />
</div>
<rewards-wrapper title="Clan Reward" coin="$BLOOD" amount="0" image="/src/assets/img/vampir.png" />
<div class="claim-button">
<div class="btn btn-immortal">Claim</div>
</div>
</div>
<div class="rewards-list" v-else>
<rewards-wrapper
@@ -27,13 +24,33 @@
<rewards-wrapper title="Clan Bonus" coin="$BLOOD" amount="0" image="/src/assets/img/vampir.png" />
<rewards-wrapper title="Total Reward" coin="$BLOOD" amount="0" image="/src/assets/img/vampir.png" />
</div>
<div class="claim-button">
<div class="btn btn-immortal" @click="claimRewards">Claim</div>
</div>
</div>
</template>
<script setup>
import { storeToRefs } from "pinia";
import RewardsWrapper from "@/components/RewardsWrapper.vue";
import { inject } from "vue";
import { inject, ref, onMounted } from "vue";
import { useRewardLockerStore } from "@/stores/rewardlocker";
import { useWalletStore } from "@/stores/wallet";
import { useRoundsStore } from "@/stores/rounds";
const rewards = ref(0);
const isMobile = inject("isMobile");
const rewardLockerStore = useRewardLockerStore();
const walletStore = useWalletStore();
const roundStore = useRoundsStore();
const { address } = storeToRefs(walletStore);
const { activeRound, getCurrentRoundData } = storeToRefs(roundStore);
onMounted(async () => {});
function claimRewards() {
//todo
}
</script>
<style lang="sass">
+14
View File
@@ -1,4 +1,18 @@
export function getImageUrl(url) {
return new URL(url, import.meta.url).href;
}
export function getPercentage(amount, goal) {
console.log("amount", amount);
console.log("goal", goal);
return ((amount / goal) * 100).toFixed(2);
}
export function compactNumber(number) {
return Intl.NumberFormat("en-US", {
notation: "compact",
maximumFractionDigits: 2,
}).format(parseInt(number));
}
+2 -1
View File
@@ -13,7 +13,7 @@ export const useMemeburnerStore = defineStore("memeburner", {
async getCurrentRound() {
return await this.contract.methods.currentRound().call();
},
async getGoal(roundnumber) {
async getGoal (roundnumber) {
return await this.contract.methods.rounds(roundnumber).call();
},
//returns participated, amount achieved
@@ -21,6 +21,7 @@ export const useMemeburnerStore = defineStore("memeburner", {
return await this.contract.methods.getSacrificedMeme(roundnumber, tokenAddress).call();
},
async getSacrificedRound(roundnumber) {
console.log("getSacrificedRound", roundnumber);
const tokenStore = useTokenStore();
const calls = [];
for (let index = 0; index < tokenStore.token.length; index++) {
+21
View File
@@ -1,5 +1,8 @@
import { defineStore } from "pinia";
import RewardLockerJson from "@/assets/contracts/RewardLocker.json";
import { useTokenStore } from "./tokens";
import { useMultiCallStore } from "./multicall";
import { useWalletStore } from "./wallet";
export const useRewardLockerStore = defineStore("rewardlocker", {
state: () => ({
@@ -17,8 +20,26 @@ export const useRewardLockerStore = defineStore("rewardlocker", {
async getRewards(walletAddress, roundNumber, tokenAddress) {
return await this.contract.methods.rewards(walletAddress, roundNumber, tokenAddress).call();
},
async getRewardsForAllToken(roundNumber) {
console.log("getRewardsForAllToken");
const tokenStore = useTokenStore();
const walletStore = useWalletStore();
const calls = [];
for (let index = 0; index < tokenStore.token.length; index++) {
const token = tokenStore.token[index];
calls.push(this.contract.methods.rewards(walletStore.address, roundNumber, token.contractAddress));
}
const multicallStore = useMultiCallStore();
return await multicallStore.aggregate(calls);
},
async lastCompletedRound() {
return await this.contract.methods.lastCompletedRound().call();
},
async claim(round) {
return await this.contract.methods.claim(round).call();
},
async getTotalRewardsOf(address, rounds) {
return await this.contract.methods.getTotalRewardsOf(address, rounds).call();
},
},
});
+64
View File
@@ -0,0 +1,64 @@
import { defineStore } from "pinia";
import { useMemeburnerStore } from "./memeburner";
import { useTokenStore } from "./tokens";
import { useRewardLockerStore } from "./rewardlocker";
export const useRoundsStore = defineStore("rounds", {
state: () => ({
rounds: [
],
activeRound: null,
currentRound: null
}),
getters: {
getCurrentRoundData() {
return this.rounds[this.activeRound];
}
},
actions: {
async updateCurrentRound(sacrificedToken, sacrificedAmount) {
const tokenStore = useTokenStore();
const memeBurnerStore = useMemeburnerStore();
var data = await memeBurnerStore.getSacrificedRound(this.currentRound)
var tokenIndex = this.rounds[this.currentRound].token.findIndex((tokenData) => tokenData.contractAddress === sacrificedToken);
this.rounds[this.currentRound].token[tokenIndex].amount = data[tokenIndex][1];
},
async fillRound() {
console.log("fillRound");
const memeBurnerStore = useMemeburnerStore();
const tokenStore = useTokenStore();
const rewardLockerStore = useRewardLockerStore();
// if (this.activeRound === this.currentRound) {
// console.log("activeRound is not completed");
// } else
if (!this.rounds[this.activeRound]) {
console.log("round not filled --> fill round");
var data = await memeBurnerStore.getSacrificedRound(this.activeRound)
var rewardData = await rewardLockerStore.getRewardsForAllToken(this.activeRound);
var goal = await memeBurnerStore.getGoal(this.activeRound);
console.log("data", data);
var tokenArray = []
for (let index = 0; index < data.length; index++) {
var tokenData = {};
const token = tokenStore.token[index];
console.log("token", token);
tokenData.name = token.name;
tokenData.contractAddress = token.contractAddress;
tokenData.vamplogo = token.vamp.logo;
tokenData.vampname = token.vamp.name;
tokenData.amount = data[index][1];
tokenData.rewards = rewardData[index]
tokenArray.push(tokenData);
}
this.rounds[this.activeRound] = {
goal: goal, token: tokenArray
}
} else {
console.log("round already filled");
}
console.log("this.rounds123", this.rounds);
},
},
});
+37 -11
View File
@@ -4,6 +4,7 @@ import { useWalletStore } from "./wallet";
import { useContractStore } from "./contracts";
import Meme1Json from "@/assets/contracts/Meme1.json";
import Meme2Json from "@/assets/contracts/Meme2.json";
import MemeToken from "@/assets/contracts/MemeToken.json";
import MemeBurnerJson from "@/assets/contracts/MemeBurner.json";
export const useTokenStore = defineStore("token", {
@@ -19,7 +20,7 @@ export const useTokenStore = defineStore("token", {
},
backgroundColor: "#4b8501",
abi: Meme1Json.abi,
contractAddress: Meme1Json.contractAddress,
contractAddress: Meme1Json.contractAddress,
},
{
name: "$SHIB",
@@ -52,6 +53,12 @@ export const useTokenStore = defineStore("token", {
allowance: null,
},
loading: false,
memeToken: {
config: {
abi: MemeToken.abi,
contractAddress: MemeToken.contractAddress
}
},
memeBurner: {
config: MemeBurnerJson,
contract: null,
@@ -76,30 +83,49 @@ export const useTokenStore = defineStore("token", {
.allowance(walletStore.address, MemeBurnerJson.contractAddress)
.call();
console.log("allowance", allowance);
var decimals = await this.contract.methods.decimals().call();
console.log("decimals", decimals);
return allowance;
},
async approveToken(amount) {
const walletStore = useWalletStore();
this.loading = true;
var approve = await this.contract.methods
.approve(this.memeBurner.config.contractAddress, amount)
.send({ from: walletStore.address });
console.log("approve", approve);
this.loading = false;
return approve;
try {
console.log("amount", amount);
this.loading = true;
const walletStore = useWalletStore();
var approve = await this.contract.methods
.approve(this.memeBurner.config.contractAddress, amount)
.send({ from: walletStore.address });
//todo parameter value übergeben in eth web3.utils.toHex(web3.utils.toWei(amount, 'ether'))
// .send({ from: walletStore.address, value: 0.5 });
console.log("approve", approve);
this.activeToken.allowance = await this.allowance();
return approve;
} catch (error) {
console.error(error);
} finally {
this.loading = false;
}
},
async sacrificeToken(amount) {
try {
console.log("amount", amount);
if (!amount || amount == 0) {
//todo error
console.error("amount is 0 or null or undefined");
return;
}
this.loading = true;
console.log("this.activeToken.", this.activeToken.contractAddress);
const walletStore = useWalletStore();
console.log("walletStore.address", walletStore.address);
var reward = await this.memeBurner.contract.methods
.sacrificeMeme(this.activeToken.contractAddress, "400000000000000000")
.sacrificeMeme(this.activeToken.contractAddress, amount)
.send({ from: walletStore.address });
console.log("reward", reward);
this.activeToken.allowance = await this.allowance();
} catch (error) {
error.log(error);
console.error(error);
} finally {
this.loading = false;
}
+23 -17
View File
@@ -1,5 +1,5 @@
<script setup>
import { ref, computed, inject } from "vue";
import { ref, computed, inject, onMounted } from "vue";
import { storeToRefs } from "pinia";
import SacrificeToken from "@/components/SacrificeToken.vue";
import BloodChart from "@/components/BloodChart.vue";
@@ -7,8 +7,13 @@ import TokenClaim from "@/components/TokenClaim.vue";
// import Web3 from "web3";
// import { useWalletStore } from "@/stores/wallet";
import { useTokenStore } from "@/stores/tokens";
import { useRoundsStore } from "@/stores/rounds";
const tokenStore = useTokenStore();
const roundsStore = useRoundsStore();
const { token } = storeToRefs(tokenStore);
const { currentRound, activeRound, rounds } = storeToRefs(roundsStore);
// Import Swiper Vue.js components
const swiperInstance = ref();
import { Navigation } from "swiper";
@@ -21,24 +26,25 @@ function onSwiper(swiper) {
swiperInstance.value = swiper;
}
const rounds = [{ round: 1 }, { round: 2 }, { round: 3 }];
const currentSlide = ref(1);
const currentIndex = computed(() => {
return rounds.findIndex((obj) => obj.round === currentSlide.value);
});
function prevSlide() {
if (currentSlide.value !== rounds[0].round) {
currentSlide.value--;
async function prevSlide() {
if (activeRound.value > 1) {
activeRound.value--;
await roundsStore.fillRound();
}
}
function nextSlide() {
if (currentSlide.value < rounds[rounds.length - 1].round) {
currentSlide.value++;
async function nextSlide() {
if (activeRound.value < currentRound.value) {
activeRound.value++;
await roundsStore.fillRound();
}
}
// const computedRounds = computed(() => {
// if()
// return ""
// })
// let web3 = new Web3(
// "https://eth-goerli.g.alchemy.com/v2/0-W9tOm6v_QP1PfRV8RuBCpWr-qoEbkN"
// );
@@ -79,13 +85,13 @@ function nextSlide() {
</swiper>
<div class="slider-wrapper">
<font-awesome-icon
:class="{ 'slider-prev': true, disabled: currentSlide === rounds[0].round }"
:class="{ 'slider-prev': true, disabled: roundsStore.activeRound <= 1 }"
@click="prevSlide"
:icon="['fas', 'caret-left']"
/>
<div class="slider-text">Cycle {{ currentSlide }}</div>
<div class="slider-text">Cycle {{ roundsStore.activeRound }}</div>
<font-awesome-icon
:class="{ 'slider-next': true, disabled: currentSlide === rounds[rounds.length - 1].round }"
:class="{ 'slider-next': true, disabled: currentRound === roundsStore.activeRound }"
@click="nextSlide"
:icon="['fas', 'caret-right']"
/>
@@ -123,7 +129,7 @@ function nextSlide() {
</div>
</div>
<div class="blood-chart">
<blood-chart></blood-chart>
<blood-chart :data="rounds[activeRound]"></blood-chart>
</div>
<div class="cycle-end-wrapper">
<div class="cycle-end-inner">
+21 -1
View File
@@ -1,6 +1,7 @@
<template>
<div>
<button @click="mintToken">mint</button>
<button @click="mintToken2">mint2</button>
<button @click="sacrificeMeme">sacrifice Meme</button>
<button @click="approveMeme1">approve Meme1</button>
<button @click="tokenStore.approveToken(MemeBurnerJson, 10)">wallet approve</button>
@@ -30,6 +31,7 @@ console.log("RewardLockerJson", RewardLockerJson);
// );
// console.log("balanceOf", balanceOf);
const web3 = ref(null);
const contractMeme2 = ref(null);
const contractMeme1 = ref(null);
const contractBurner = ref(null);
@@ -42,6 +44,7 @@ onMounted(async () => {
web3.value.eth.Contract.defaultAccount = accounts[0];
contractMeme1.value = new web3.value.eth.Contract(Meme1Json.abi, Meme1Json.contractAddress);
contractMeme2.value = new web3.value.eth.Contract(Meme2Json.abi, Meme2Json.contractAddress);
contractBurner.value = new web3.value.eth.Contract(MemeBurnerJson.abi, MemeBurnerJson.contractAddress);
});
@@ -59,7 +62,24 @@ async function approveMeme1() {
async function mintToken() {
try {
var mint = await contractMeme1.value.methods.mint(10).send({ from: web3.value.eth.Contract.defaultAccount });
var mint = await contractMeme1.value.methods
.mint("100000000000000000000000")
.send({ from: web3.value.eth.Contract.defaultAccount });
console.log("mint", mint);
} catch (error) {
console.log(error);
}
// var balanceOf = await contract.methods.balanceOf("0x66422602B2f4885c57EE794174f98d9E4DDBBBC6").call();
// console.log("balanceOf", balanceOf);
// var totalSupply = await contract.methods.totalSupply().call();
// console.log("totalSupply", totalSupply);
}
async function mintToken2() {
try {
var mint = await contractMeme2.value.methods
.mint("100000000000000000000")
.send({ from: web3.value.eth.Contract.defaultAccount });
console.log("mint", mint);
} catch (error) {
console.log(error);