diff --git a/src/router/index.ts b/src/router/index.ts index bd6a7af..c4ce70f 100644 --- a/src/router/index.ts +++ b/src/router/index.ts @@ -1,6 +1,7 @@ import { createRouter, createWebHistory } from "vue-router"; import HomeView from "../views/HomeView.vue"; import QrCodeFormVue from "../views/QrCodeForm.vue"; +import MockView from "../views/MockView.vue"; const router = createRouter({ history: createWebHistory(import.meta.env.BASE_URL), @@ -15,6 +16,11 @@ const router = createRouter({ name: "pix", component: QrCodeFormVue, }, + { + path: "/mock", + name: "mock", + component: MockView, + }, ], }); diff --git a/src/store/ether.ts b/src/store/ether.ts index b777179..0afd6ff 100644 --- a/src/store/ether.ts +++ b/src/store/ether.ts @@ -4,6 +4,7 @@ export const useEtherStore = defineStore("ether", { state: () => ({ walletAddress: "", balance: "", + depositList: {}, }), actions: { setWalletAddress(walletAddress: string) { @@ -12,5 +13,8 @@ export const useEtherStore = defineStore("ether", { setBalance(balance: string) { this.balance = balance; }, + setDepositList(depositList: {}) { + this.depositList = depositList; + }, }, }); diff --git a/src/utils/blockchain.ts b/src/utils/blockchain.ts index 5a7ad3c..897b613 100644 --- a/src/utils/blockchain.ts +++ b/src/utils/blockchain.ts @@ -3,9 +3,11 @@ import { ethers } from "ethers"; // smart contract imports import mockToken from "./smart_contract_files/MockToken.json"; -//import p2pix from "./smart_contract_files/P2PIX.json"; +import p2pix from "./smart_contract_files/P2PIX.json"; import addresses from "./smart_contract_files/localhost.json"; +import { wallets } from "./smart_contract_files/wallets.json" + const updateWalletStatus = async (walletAddress: string) => { const etherStore = useEtherStore(); const provider = getProvider(); @@ -37,29 +39,89 @@ const connectProvider = async () => { etherStore.setWalletAddress(walletAddress[0]); etherStore.setBalance(String(balance)); + const p2pContract = new ethers.Contract(addresses.p2pix, p2pix.abi, signer); + + const filter = p2pContract.filters.DepositAdded(null); + const events = await p2pContract.queryFilter(filter); + + console.log(events) + + etherStore.setDepositList(events); + connection.on("accountsChanged", (accounts: string[]) => { updateWalletStatus(accounts[0]); }); }; -const makeTransaction = async ( - receiverAccountAddress = "0x70997970C51812dc3A010C7d01b50e0d17dc79C8", - ammount = "100.0" -) => { +const splitTokens = async () => { const etherStore = useEtherStore(); - const provider = getProvider(); - if (!provider) return; + const window_ = window as any; + const connection = window_.ethereum; + let provider: ethers.providers.Web3Provider | null = null; + if (!connection) return; + + provider = new ethers.providers.Web3Provider(connection); const signer = provider.getSigner(); const contract = new ethers.Contract(addresses.token, mockToken.abi, signer); - const tx = await contract.transfer( - receiverAccountAddress, - ethers.utils.parseEther(ammount) - ); - await tx.wait(); + for (var i = 0; i < wallets.length; i++){ + const tx = await contract.transfer(wallets[i], ethers.utils.parseEther("4000000.0")); + await tx.wait() + updateWalletStatus(etherStore.walletAddress); + } + +}; + +const mockDeposit = async () => { + const etherStore = useEtherStore(); + const window_ = window as any; + const connection = window_.ethereum; + let provider: ethers.providers.Web3Provider | null = null; + + if (!connection) return; + + provider = new ethers.providers.Web3Provider(connection); + const signer = provider.getSigner(); + + const tokenContract = new ethers.Contract(addresses.token, mockToken.abi, signer); + const p2pContract = new ethers.Contract(addresses.p2pix, p2pix.abi, signer); + + // first get the approval + const apprv = await tokenContract.approve(addresses.p2pix, ethers.utils.parseEther("1000.0")); + await apprv.wait(); + + // deposit + const mockPixKey = "00011122233"; + const deposit = await p2pContract.deposit(addresses.token, ethers.utils.parseEther("1000.0"), mockPixKey); + await deposit.wait(); updateWalletStatus(etherStore.walletAddress); + + const filter = p2pContract.filters.DepositAdded(null); + const events = await p2pContract.queryFilter(filter); + + console.log(events) + + etherStore.setDepositList(events); + +}; + + +const countDeposit = async () => { + const window_ = window as any; + const connection = window_.ethereum; + let provider: ethers.providers.Web3Provider | null = null; + + if (!connection) return; + + provider = new ethers.providers.Web3Provider(connection); + const signer = provider.getSigner(); + const contract = new ethers.Contract(addresses.p2pix, p2pix.abi, signer); + + const count = await contract.depositCount(); + + console.log(Number(count)) }; const formatEther = (balance: string) => { @@ -76,4 +138,4 @@ const getProvider = (): ethers.providers.Web3Provider | null => { return new ethers.providers.Web3Provider(connection); }; -export default { connectProvider, formatEther, makeTransaction }; +export default { connectProvider, formatEther, splitTokens, mockDeposit, countDeposit }; diff --git a/src/utils/smart_contract_files/wallets.json b/src/utils/smart_contract_files/wallets.json new file mode 100644 index 0000000..3dd7eb2 --- /dev/null +++ b/src/utils/smart_contract_files/wallets.json @@ -0,0 +1,8 @@ +{ + "wallets":[ + "0x70997970C51812dc3A010C7d01b50e0d17dc79C8", + "0x3C44CdDdB6a900fa2b585dd299e03d12FA4293BC", + "0x90F79bf6EB2c4f870365E785982E1f101E93b906", + "0x15d34AAf54267DB7D7c367839AAf71A00a2C6A65" + ] +} \ No newline at end of file diff --git a/src/views/MockView.vue b/src/views/MockView.vue new file mode 100644 index 0000000..594a4ac --- /dev/null +++ b/src/views/MockView.vue @@ -0,0 +1,85 @@ + + + + +