update smart contract files and implement mapDeposits method to return specific info about a deposit
Co-authored-by: brunoedcf <brest.dallacosta@outlook.com>
This commit is contained in:
parent
ae0e96e6ef
commit
eb70e0d970
@ -1,5 +1,5 @@
|
|||||||
import { useEtherStore } from "@/store/ether";
|
import { useEtherStore } from "@/store/ether";
|
||||||
import { ethers } from "ethers";
|
import { BigNumber, ethers } from "ethers";
|
||||||
|
|
||||||
// smart contract imports
|
// smart contract imports
|
||||||
import mockToken from "./smart_contract_files/MockToken.json";
|
import mockToken from "./smart_contract_files/MockToken.json";
|
||||||
@ -55,13 +55,9 @@ const connectProvider = async () => {
|
|||||||
|
|
||||||
const splitTokens = async () => {
|
const splitTokens = async () => {
|
||||||
const etherStore = useEtherStore();
|
const etherStore = useEtherStore();
|
||||||
const window_ = window as any;
|
const provider = getProvider();
|
||||||
const connection = window_.ethereum;
|
if (!provider) return;
|
||||||
let provider: ethers.providers.Web3Provider | null = null;
|
|
||||||
|
|
||||||
if (!connection) return;
|
|
||||||
|
|
||||||
provider = new ethers.providers.Web3Provider(connection);
|
|
||||||
const signer = provider.getSigner();
|
const signer = provider.getSigner();
|
||||||
const contract = new ethers.Contract(addresses.token, mockToken.abi, signer);
|
const contract = new ethers.Contract(addresses.token, mockToken.abi, signer);
|
||||||
|
|
||||||
@ -73,27 +69,23 @@ const splitTokens = async () => {
|
|||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
const mockDeposit = async () => {
|
const mockDeposit = async (tokenQty = "1000.0", pixKey = "00011122233") => {
|
||||||
const etherStore = useEtherStore();
|
const etherStore = useEtherStore();
|
||||||
const window_ = window as any;
|
const provider = getProvider();
|
||||||
const connection = window_.ethereum;
|
if (!provider) return;
|
||||||
let provider: ethers.providers.Web3Provider | null = null;
|
|
||||||
|
|
||||||
if (!connection) return;
|
|
||||||
|
|
||||||
provider = new ethers.providers.Web3Provider(connection);
|
|
||||||
const signer = provider.getSigner();
|
const signer = provider.getSigner();
|
||||||
|
|
||||||
const tokenContract = new ethers.Contract(addresses.token, mockToken.abi, signer);
|
const tokenContract = new ethers.Contract(addresses.token, mockToken.abi, signer);
|
||||||
const p2pContract = new ethers.Contract(addresses.p2pix, p2pix.abi, signer);
|
const p2pContract = new ethers.Contract(addresses.p2pix, p2pix.abi, signer);
|
||||||
|
|
||||||
// first get the approval
|
// first get the approval
|
||||||
const apprv = await tokenContract.approve(addresses.p2pix, ethers.utils.parseEther("1000.0"));
|
const apprv = await tokenContract.approve(addresses.p2pix, ethers.utils.parseEther(tokenQty));
|
||||||
await apprv.wait();
|
await apprv.wait();
|
||||||
|
|
||||||
|
|
||||||
// deposit
|
// deposit
|
||||||
const mockPixKey = "00011122233";
|
const deposit = await p2pContract.deposit(addresses.token, ethers.utils.parseEther(tokenQty), pixKey);
|
||||||
const deposit = await p2pContract.deposit(addresses.token, ethers.utils.parseEther("1000.0"), mockPixKey);
|
|
||||||
await deposit.wait();
|
await deposit.wait();
|
||||||
|
|
||||||
updateWalletStatus(etherStore.walletAddress);
|
updateWalletStatus(etherStore.walletAddress);
|
||||||
@ -109,13 +101,9 @@ const mockDeposit = async () => {
|
|||||||
|
|
||||||
|
|
||||||
const countDeposit = async () => {
|
const countDeposit = async () => {
|
||||||
const window_ = window as any;
|
const provider = getProvider();
|
||||||
const connection = window_.ethereum;
|
if (!provider) return;
|
||||||
let provider: ethers.providers.Web3Provider | null = null;
|
|
||||||
|
|
||||||
if (!connection) return;
|
|
||||||
|
|
||||||
provider = new ethers.providers.Web3Provider(connection);
|
|
||||||
const signer = provider.getSigner();
|
const signer = provider.getSigner();
|
||||||
const contract = new ethers.Contract(addresses.p2pix, p2pix.abi, signer);
|
const contract = new ethers.Contract(addresses.p2pix, p2pix.abi, signer);
|
||||||
|
|
||||||
@ -124,6 +112,18 @@ const countDeposit = async () => {
|
|||||||
console.log(Number(count))
|
console.log(Number(count))
|
||||||
};
|
};
|
||||||
|
|
||||||
|
const mapDeposits = async (depositId: BigNumber) => {
|
||||||
|
const provider = getProvider();
|
||||||
|
if (!provider) return;
|
||||||
|
|
||||||
|
const signer = provider.getSigner();
|
||||||
|
const contract = new ethers.Contract(addresses.p2pix, p2pix.abi, signer);
|
||||||
|
|
||||||
|
const deposit = await contract.mapDeposits(depositId);
|
||||||
|
|
||||||
|
console.log(deposit)
|
||||||
|
};
|
||||||
|
|
||||||
const formatEther = (balance: string) => {
|
const formatEther = (balance: string) => {
|
||||||
const formatted = ethers.utils.formatEther(balance);
|
const formatted = ethers.utils.formatEther(balance);
|
||||||
return formatted;
|
return formatted;
|
||||||
@ -138,4 +138,4 @@ const getProvider = (): ethers.providers.Web3Provider | null => {
|
|||||||
return new ethers.providers.Web3Provider(connection);
|
return new ethers.providers.Web3Provider(connection);
|
||||||
};
|
};
|
||||||
|
|
||||||
export default { connectProvider, formatEther, splitTokens, mockDeposit, countDeposit };
|
export default { connectProvider, formatEther, splitTokens, mockDeposit, countDeposit, mapDeposits };
|
||||||
|
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@ -1,8 +1,6 @@
|
|||||||
{
|
{
|
||||||
"wallets":[
|
"wallets":[
|
||||||
"0x70997970C51812dc3A010C7d01b50e0d17dc79C8",
|
"0x70997970C51812dc3A010C7d01b50e0d17dc79C8",
|
||||||
"0x3C44CdDdB6a900fa2b585dd299e03d12FA4293BC",
|
"0x3C44CdDdB6a900fa2b585dd299e03d12FA4293BC"
|
||||||
"0x90F79bf6EB2c4f870365E785982E1f101E93b906",
|
|
||||||
"0x15d34AAf54267DB7D7c367839AAf71A00a2C6A65"
|
|
||||||
]
|
]
|
||||||
}
|
}
|
@ -1,5 +1,7 @@
|
|||||||
<script setup lang="ts">
|
<script setup lang="ts">
|
||||||
|
import type { BigNumber } from "ethers";
|
||||||
import { storeToRefs } from "pinia";
|
import { storeToRefs } from "pinia";
|
||||||
|
import { ref } from "vue";
|
||||||
import { useEtherStore } from "../store/ether";
|
import { useEtherStore } from "../store/ether";
|
||||||
import blockchain from "../utils/blockchain";
|
import blockchain from "../utils/blockchain";
|
||||||
|
|
||||||
@ -7,12 +9,16 @@ const etherStore = useEtherStore();
|
|||||||
|
|
||||||
const { walletAddress, balance, depositList } = storeToRefs(etherStore);
|
const { walletAddress, balance, depositList } = storeToRefs(etherStore);
|
||||||
|
|
||||||
|
const depositValue = ref<Number>();
|
||||||
|
const depositPixKey = ref<string>("");
|
||||||
|
|
||||||
const splitTokens = () => {
|
const splitTokens = () => {
|
||||||
blockchain.splitTokens();
|
blockchain.splitTokens();
|
||||||
};
|
};
|
||||||
|
|
||||||
const mockDeposit = () => {
|
const mockDeposit = () => {
|
||||||
blockchain.mockDeposit();
|
if(!depositValue.value || !depositPixKey.value) return;
|
||||||
|
blockchain.mockDeposit(depositValue.value.toString(), depositPixKey.value);
|
||||||
};
|
};
|
||||||
|
|
||||||
const countDeposit = () => {
|
const countDeposit = () => {
|
||||||
@ -29,6 +35,10 @@ const formatWalletAddress = (): string => {
|
|||||||
return `${initialText} ... ${finalText}`;
|
return `${initialText} ... ${finalText}`;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
const mapDeposit = (depositId: BigNumber) => {
|
||||||
|
blockchain.mapDeposits(depositId)
|
||||||
|
}
|
||||||
|
|
||||||
const formatWalletBalance = (): string => {
|
const formatWalletBalance = (): string => {
|
||||||
const formattedBalance = blockchain.formatEther(balance.value);
|
const formattedBalance = blockchain.formatEther(balance.value);
|
||||||
const fixed = formattedBalance.substring(0, 8);
|
const fixed = formattedBalance.substring(0, 8);
|
||||||
@ -39,47 +49,77 @@ const formatWalletBalance = (): string => {
|
|||||||
|
|
||||||
<template>
|
<template>
|
||||||
|
|
||||||
<div class="flex gap-4 items-center">
|
<div class="page">
|
||||||
|
|
||||||
|
<div class="flex flex-col gap-4 justify-start items-start w-2/3">
|
||||||
<button
|
<button
|
||||||
type="button"
|
type="button"
|
||||||
class="p-2 rounded text-gray-50"
|
class="default-button"
|
||||||
@click="countDeposit()"
|
@click="countDeposit()"
|
||||||
>
|
>
|
||||||
Contar depósitos
|
Contar depósitos
|
||||||
</button>
|
</button>
|
||||||
|
|
||||||
|
<div class="flex gap-4 w-full justify-between">
|
||||||
|
<input
|
||||||
|
type="number"
|
||||||
|
class="default-input"
|
||||||
|
placeholder="Quantidade de tokens"
|
||||||
|
v-model="depositValue"
|
||||||
|
/>
|
||||||
|
|
||||||
|
<input
|
||||||
|
type="text"
|
||||||
|
class="default-input"
|
||||||
|
placeholder="Chave pix"
|
||||||
|
v-model="depositPixKey"
|
||||||
|
/>
|
||||||
|
|
||||||
<button
|
<button
|
||||||
type="button"
|
type="button"
|
||||||
class="p-2 rounded text-gray-50"
|
class="default-button"
|
||||||
@click="mockDeposit()"
|
@click="mockDeposit()"
|
||||||
>
|
>
|
||||||
Mockar depósitos
|
Mockar depósitos
|
||||||
</button>
|
</button>
|
||||||
|
</div>
|
||||||
|
|
||||||
<button
|
<button
|
||||||
type="button"
|
type="button"
|
||||||
class="p-2 rounded text-gray-50"
|
class="default-button"
|
||||||
@click="splitTokens()"
|
@click="splitTokens()"
|
||||||
>
|
>
|
||||||
Dividir tokens
|
Dividir tokens
|
||||||
</button>
|
</button>
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<br>
|
<ul class="flex flex-col justify-center items-center gap-4">
|
||||||
<br>
|
<li class="text-gray-900 font-semibold text-lg cursor-pointer border-2 border-amber-400 p-2 rounded-md bg-amber-200" v-for="deposit in depositList" :key="deposit['blockNumber']" @click="mapDeposit(deposit['args']['depositID'])">{{deposit['args']['0']}} : MRBZ {{blockchain.formatEther(deposit['args']['amount'])}} </li>
|
||||||
<br>
|
|
||||||
<ul>
|
|
||||||
<center>
|
|
||||||
<li v-for="deposit in depositList" :key="deposit['blockNumber']">{{deposit['args']['0']}} : MRBZ {{blockchain.formatEther(deposit['args']['amount'])}} </li>
|
|
||||||
</center>
|
|
||||||
</ul>
|
</ul>
|
||||||
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<style scoped>
|
<style scoped>
|
||||||
header {
|
header {
|
||||||
@apply flex flex-row justify-between w-full items-center;
|
@apply flex flex-row justify-between w-full items-center;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.default-button{
|
||||||
|
@apply p-2 rounded border-2 border-amber-400 text-gray-50 font-extrabold text-base w-full
|
||||||
|
}
|
||||||
|
|
||||||
|
.default-input{
|
||||||
|
@apply border-none outline-none text-lg text-gray-900 w-64 p-2 rounded-lg
|
||||||
|
}
|
||||||
|
|
||||||
|
.page{
|
||||||
|
@apply flex gap-8 mt-24
|
||||||
|
}
|
||||||
|
|
||||||
|
@media (max-width: 1024px) {
|
||||||
|
.page {
|
||||||
|
@apply flex-wrap
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
</style>
|
</style>
|
||||||
|
Loading…
x
Reference in New Issue
Block a user