Locks implemented, Some events filters implemented, Updated smart contract artifacts
This commit is contained in:
1 parent
5ab8dcc8ea
commit
93309d938d
8 files changed
+270
-354
No files matched your search
@@ -9,7 +9,7 @@ import blockchain from "../utils/blockchain";
|
||||
// Store reference
|
||||
const etherStore = useEtherStore();
|
||||
|
||||
const { walletAddress, depositList } = storeToRefs(etherStore);
|
||||
const { walletAddress, depositsAddedList } = storeToRefs(etherStore);
|
||||
|
||||
// Reactive state
|
||||
const tokenValue = ref(0);
|
||||
@@ -21,12 +21,13 @@ const selectedDeposit = ref();
|
||||
// Emits
|
||||
const emit = defineEmits(["tokenBuy"]);
|
||||
|
||||
// Methods
|
||||
// Blockchain methods
|
||||
const connectAccount = async () => {
|
||||
await blockchain.connectProvider();
|
||||
verifyLiquidity();
|
||||
};
|
||||
|
||||
// Debounce methods
|
||||
const handleInputEvent = (event: any) => {
|
||||
const { value } = event.target;
|
||||
|
||||
@@ -42,6 +43,8 @@ const handleInputEvent = (event: any) => {
|
||||
verifyLiquidity();
|
||||
};
|
||||
|
||||
// Enable button methods
|
||||
// Check if has more than 2 decimal places
|
||||
const decimalCount = (num: Number) => {
|
||||
const numStr = String(num);
|
||||
if (numStr.includes(".")) {
|
||||
@@ -49,15 +52,15 @@ const decimalCount = (num: Number) => {
|
||||
}
|
||||
return 0;
|
||||
};
|
||||
|
||||
// Verify if there is a valid deposit to buy
|
||||
const verifyLiquidity = () => {
|
||||
enableSelectButton.value = false;
|
||||
selectedDeposit.value = null;
|
||||
|
||||
if (!walletAddress.value || tokenValue.value == 0) return;
|
||||
if (!walletAddress.value || tokenValue.value <= 0) return;
|
||||
|
||||
const found = depositList.value.find((element) => {
|
||||
const p2pixTokenValue = blockchain.verifyDepositAmmount(
|
||||
const found = depositsAddedList.value.find((element) => {
|
||||
const p2pixTokenValue = blockchain.formatBigNumber(
|
||||
element.args.amount
|
||||
);
|
||||
if (
|
||||
@@ -68,7 +71,7 @@ const verifyLiquidity = () => {
|
||||
enableSelectButton.value = true;
|
||||
hasLiquidity.value = true;
|
||||
selectedDeposit.value = element;
|
||||
console.log("Selected is :", blockchain.verifyDepositAmmount(element.args.amount))
|
||||
console.log("Selected is :", blockchain.formatBigNumber(element.args.amount))
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
@@ -78,6 +81,7 @@ const verifyLiquidity = () => {
|
||||
hasLiquidity.value = false;
|
||||
}
|
||||
};
|
||||
|
||||
</script>
|
||||
|
||||
<template>
|
||||
|
||||
@@ -39,7 +39,6 @@ const formatWalletBalance = (): string => {
|
||||
src="@/assets/logo.svg"
|
||||
width="75"
|
||||
height="75"
|
||||
@load="connectMetaMask()"
|
||||
/>
|
||||
<div class="flex gap-4 items-center">
|
||||
<button type="button" class="default-button">Quero vender</button>
|
||||
|
||||
+19
-3
@@ -4,7 +4,14 @@ export const useEtherStore = defineStore("ether", {
|
||||
state: () => ({
|
||||
walletAddress: "",
|
||||
balance: "",
|
||||
depositList: [{}],
|
||||
// Depósitos válidos para compra
|
||||
depositsValidList: [{}],
|
||||
// Depósitos adicionados na blockchain
|
||||
depositsAddedList: [{}],
|
||||
// Depósitos expirados na blockchain
|
||||
depositsExpiredList: [{}],
|
||||
// Locks adicionados na blockchain
|
||||
locksAddedList: [{}],
|
||||
}),
|
||||
actions: {
|
||||
setWalletAddress(walletAddress: string) {
|
||||
@@ -13,8 +20,17 @@ export const useEtherStore = defineStore("ether", {
|
||||
setBalance(balance: string) {
|
||||
this.balance = balance;
|
||||
},
|
||||
setDepositList(depositList: any[]) {
|
||||
this.depositList = depositList;
|
||||
setDepositsValidList(depositsValidList: any[]) {
|
||||
this.depositsValidList = depositsValidList;
|
||||
},
|
||||
setDepositsAddedList(depositsAddedList: any[]) {
|
||||
this.depositsAddedList = depositsAddedList;
|
||||
},
|
||||
setDepositsExpiredList(depositsExpiredList: any[]) {
|
||||
this.depositsExpiredList = depositsExpiredList;
|
||||
},
|
||||
setLocksAddedList(locksAddedList: any[]) {
|
||||
this.locksAddedList = locksAddedList;
|
||||
},
|
||||
},
|
||||
});
|
||||
+127
-71
@@ -1,14 +1,66 @@
|
||||
import { useEtherStore } from "@/store/ether";
|
||||
import { BigNumber, ethers } from "ethers";
|
||||
|
||||
// smart contract imports
|
||||
// Smart contract imports
|
||||
import mockToken from "./smart_contract_files/MockToken.json";
|
||||
import p2pix from "./smart_contract_files/P2PIX.json";
|
||||
import addresses from "./smart_contract_files/localhost.json";
|
||||
import p2pEventsAndErrors from "./smart_contract_files/EventAndErrors.json"
|
||||
|
||||
// Mock wallets import
|
||||
import { wallets } from "./smart_contract_files/wallets.json";
|
||||
|
||||
// Provider methods
|
||||
const connectProvider = 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 walletAddress = await provider.send("eth_requestAccounts", []);
|
||||
const balance = await tokenContract.balanceOf(walletAddress[0]);
|
||||
|
||||
etherStore.setWalletAddress(ethers.utils.getAddress(walletAddress[0]));
|
||||
etherStore.setBalance(String(balance));
|
||||
|
||||
const p2pEvents = new ethers.Contract(addresses.p2pix, p2pix.abi, signer);
|
||||
|
||||
const filterDeposits = p2pEvents.filters.DepositAdded(null);
|
||||
const eventsDeposits = await p2pEvents.queryFilter(filterDeposits);
|
||||
console.log("Deposits Added: ", eventsDeposits);
|
||||
etherStore.setDepositsAddedList(eventsDeposits);
|
||||
|
||||
const filterLocks = p2pEvents.filters.LockAdded(null);
|
||||
const eventsLocks = await p2pEvents.queryFilter(filterLocks);
|
||||
console.log("Locks Added: ", eventsLocks)
|
||||
etherStore.setLocksAddedList(eventsLocks);
|
||||
|
||||
const filterExpiredLocks = p2pEvents.filters.LockReturned(null);
|
||||
const eventsExpiredLocks = await p2pEvents.queryFilter(filterExpiredLocks);
|
||||
console.log("Expired Locks: ", eventsExpiredLocks);
|
||||
etherStore.setDepositsExpiredList(eventsExpiredLocks);
|
||||
|
||||
// (TO DO) Filter valid deposits
|
||||
|
||||
connection.on("accountsChanged", (accounts: string[]) => {
|
||||
updateWalletStatus(accounts[0]);
|
||||
});
|
||||
};
|
||||
|
||||
const getProvider = (): ethers.providers.Web3Provider | null => {
|
||||
const window_ = window as any;
|
||||
const connection = window_.ethereum;
|
||||
|
||||
if (!connection) return null;
|
||||
|
||||
return new ethers.providers.Web3Provider(connection);
|
||||
};
|
||||
|
||||
// Wallet methods
|
||||
// Update wallet state (balance and address)
|
||||
const updateWalletStatus = async (walletAddress: string) => {
|
||||
const etherStore = useEtherStore();
|
||||
const provider = getProvider();
|
||||
@@ -23,36 +75,7 @@ const updateWalletStatus = async (walletAddress: string) => {
|
||||
etherStore.setWalletAddress(ethers.utils.getAddress(walletAddress));
|
||||
};
|
||||
|
||||
const connectProvider = 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 contract = new ethers.Contract(addresses.token, mockToken.abi, signer);
|
||||
|
||||
const walletAddress = await provider.send("eth_requestAccounts", []);
|
||||
const balance = await contract.balanceOf(walletAddress[0]);
|
||||
|
||||
etherStore.setWalletAddress(ethers.utils.getAddress(walletAddress[0]));
|
||||
etherStore.setBalance(String(balance));
|
||||
|
||||
const p2pContract = new ethers.Contract(addresses.p2pix, p2pEventsAndErrors.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]);
|
||||
});
|
||||
};
|
||||
|
||||
// Split tokens between wallets in wallets.json
|
||||
const splitTokens = async () => {
|
||||
const etherStore = useEtherStore();
|
||||
const provider = getProvider();
|
||||
@@ -71,13 +94,14 @@ const splitTokens = async () => {
|
||||
}
|
||||
};
|
||||
|
||||
const mockDeposit = async (tokenQty = "1000.0", pixKey = "00011122233") => {
|
||||
// Deposit methods
|
||||
// Gets value and pix key from user's form to create a deposit in the blockchain
|
||||
const addDeposit = async (tokenQty = "1000.0", pixKey = "00011122233") => {
|
||||
const etherStore = useEtherStore();
|
||||
const provider = getProvider();
|
||||
|
||||
if (!provider) return;
|
||||
|
||||
const signer = provider.getSigner();
|
||||
|
||||
const tokenContract = new ethers.Contract(
|
||||
addresses.token,
|
||||
mockToken.abi,
|
||||
@@ -85,14 +109,14 @@ const mockDeposit = async (tokenQty = "1000.0", pixKey = "00011122233") => {
|
||||
);
|
||||
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(tokenQty)
|
||||
);
|
||||
await apprv.wait();
|
||||
|
||||
// deposit
|
||||
// Now we make the deposit
|
||||
const deposit = await p2pContract.deposit(
|
||||
addresses.token,
|
||||
ethers.utils.parseEther(tokenQty),
|
||||
@@ -102,65 +126,97 @@ const mockDeposit = async (tokenQty = "1000.0", pixKey = "00011122233") => {
|
||||
|
||||
updateWalletStatus(etherStore.walletAddress);
|
||||
|
||||
const p2pEvents = new ethers.Contract(addresses.p2pix, p2pEventsAndErrors.abi, signer);
|
||||
|
||||
const p2pEvents = new ethers.Contract(addresses.p2pix, p2pix.abi, signer);
|
||||
const filter = p2pEvents.filters.DepositAdded(null);
|
||||
const events = await p2pEvents.queryFilter(filter);
|
||||
|
||||
console.log(events);
|
||||
|
||||
etherStore.setDepositList(events);
|
||||
};
|
||||
|
||||
const countDeposit = async () => {
|
||||
const provider = getProvider();
|
||||
if (!provider) return;
|
||||
|
||||
const signer = provider.getSigner();
|
||||
const contract = new ethers.Contract(addresses.p2pix, p2pix.abi, signer);
|
||||
|
||||
const count = await contract.depositCount();
|
||||
|
||||
console.log(Number(count));
|
||||
etherStore.setDepositsAddedList(events);
|
||||
};
|
||||
|
||||
// Get specific deposit data by its ID
|
||||
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);
|
||||
const deposit = await contract.mapDeposits(depositId.toNumber());
|
||||
|
||||
console.log(deposit);
|
||||
return deposit;
|
||||
};
|
||||
|
||||
// Lock methods
|
||||
// Gets value from user's form to create a lock in the blockchain
|
||||
const addLock = async(depositId: Number, amount: Number) => {
|
||||
const etherStore = useEtherStore();
|
||||
const provider = getProvider();
|
||||
|
||||
if (!provider) return;
|
||||
const signer = provider.getSigner();
|
||||
const p2pContract = new ethers.Contract(addresses.p2pix, p2pix.abi, signer);
|
||||
|
||||
// Make lock
|
||||
const lockTx = await p2pContract.lock(
|
||||
depositId,
|
||||
etherStore.walletAddress,
|
||||
ethers.constants.AddressZero,
|
||||
0,
|
||||
ethers.utils.parseEther(amount.toString()),
|
||||
[]
|
||||
);
|
||||
|
||||
const filterLocks = p2pContract.filters.LockAdded(null);
|
||||
const eventsLocks = await p2pContract.queryFilter(filterLocks);
|
||||
etherStore.setLocksAddedList(eventsLocks);
|
||||
|
||||
{
|
||||
|
||||
|
||||
}
|
||||
|
||||
};
|
||||
|
||||
// Get specific lock data by its ID
|
||||
const mapLocks = async (lockId: string) => {
|
||||
const provider = getProvider();
|
||||
|
||||
if (!provider) return;
|
||||
|
||||
const signer = provider.getSigner();
|
||||
const contract = new ethers.Contract(addresses.p2pix, p2pix.abi, signer);
|
||||
const lock = await contract.mapLocks(lockId);
|
||||
|
||||
console.log(lock);
|
||||
return lock;
|
||||
};
|
||||
|
||||
// Releases lock by specific ID and other additional data
|
||||
// (TO DO)
|
||||
const releaseLock = async() => {
|
||||
return;
|
||||
};
|
||||
|
||||
// Formatting methods
|
||||
const formatEther = (balance: string) => {
|
||||
const formatted = ethers.utils.formatEther(balance);
|
||||
return formatted;
|
||||
};
|
||||
|
||||
const verifyDepositAmmount = (ammountBigNumber: BigNumber): string => {
|
||||
return ethers.utils.formatEther(ammountBigNumber);
|
||||
};
|
||||
|
||||
const getProvider = (): ethers.providers.Web3Provider | null => {
|
||||
const window_ = window as any;
|
||||
const connection = window_.ethereum;
|
||||
|
||||
if (!connection) return null;
|
||||
|
||||
return new ethers.providers.Web3Provider(connection);
|
||||
const formatBigNumber = (num: BigNumber) => {
|
||||
const formattedNum = ethers.utils.formatEther(num);
|
||||
return formattedNum;
|
||||
};
|
||||
|
||||
export default {
|
||||
connectProvider,
|
||||
formatEther,
|
||||
splitTokens,
|
||||
mockDeposit,
|
||||
countDeposit,
|
||||
addDeposit,
|
||||
mapDeposits,
|
||||
verifyDepositAmmount,
|
||||
formatBigNumber,
|
||||
addLock,
|
||||
mapLocks,
|
||||
releaseLock,
|
||||
};
|
||||
@@ -1,219 +0,0 @@
|
||||
{
|
||||
"_format": "hh-sol-artifact-1",
|
||||
"contractName": "EventAndErrors",
|
||||
"sourceName": "contracts/EventAndErrors.sol",
|
||||
"abi": [
|
||||
{
|
||||
"inputs": [],
|
||||
"name": "AlreadyReleased",
|
||||
"type": "error"
|
||||
},
|
||||
{
|
||||
"inputs": [],
|
||||
"name": "DepositAlreadyExists",
|
||||
"type": "error"
|
||||
},
|
||||
{
|
||||
"inputs": [],
|
||||
"name": "InvalidDeposit",
|
||||
"type": "error"
|
||||
},
|
||||
{
|
||||
"inputs": [],
|
||||
"name": "InvalidSigner",
|
||||
"type": "error"
|
||||
},
|
||||
{
|
||||
"inputs": [],
|
||||
"name": "LoopOverflow",
|
||||
"type": "error"
|
||||
},
|
||||
{
|
||||
"inputs": [],
|
||||
"name": "NotEnoughTokens",
|
||||
"type": "error"
|
||||
},
|
||||
{
|
||||
"inputs": [],
|
||||
"name": "NotExpired",
|
||||
"type": "error"
|
||||
},
|
||||
{
|
||||
"inputs": [],
|
||||
"name": "OnlySeller",
|
||||
"type": "error"
|
||||
},
|
||||
{
|
||||
"inputs": [],
|
||||
"name": "TxAlreadyUsed",
|
||||
"type": "error"
|
||||
},
|
||||
{
|
||||
"anonymous": false,
|
||||
"inputs": [
|
||||
{
|
||||
"indexed": true,
|
||||
"internalType": "address",
|
||||
"name": "seller",
|
||||
"type": "address"
|
||||
},
|
||||
{
|
||||
"indexed": false,
|
||||
"internalType": "uint256",
|
||||
"name": "depositID",
|
||||
"type": "uint256"
|
||||
},
|
||||
{
|
||||
"indexed": false,
|
||||
"internalType": "address",
|
||||
"name": "token",
|
||||
"type": "address"
|
||||
},
|
||||
{
|
||||
"indexed": false,
|
||||
"internalType": "uint256",
|
||||
"name": "amount",
|
||||
"type": "uint256"
|
||||
}
|
||||
],
|
||||
"name": "DepositAdded",
|
||||
"type": "event"
|
||||
},
|
||||
{
|
||||
"anonymous": false,
|
||||
"inputs": [
|
||||
{
|
||||
"indexed": true,
|
||||
"internalType": "address",
|
||||
"name": "seller",
|
||||
"type": "address"
|
||||
},
|
||||
{
|
||||
"indexed": false,
|
||||
"internalType": "uint256",
|
||||
"name": "depositID",
|
||||
"type": "uint256"
|
||||
}
|
||||
],
|
||||
"name": "DepositClosed",
|
||||
"type": "event"
|
||||
},
|
||||
{
|
||||
"anonymous": false,
|
||||
"inputs": [
|
||||
{
|
||||
"indexed": true,
|
||||
"internalType": "address",
|
||||
"name": "seller",
|
||||
"type": "address"
|
||||
},
|
||||
{
|
||||
"indexed": false,
|
||||
"internalType": "uint256",
|
||||
"name": "depositID",
|
||||
"type": "uint256"
|
||||
},
|
||||
{
|
||||
"indexed": false,
|
||||
"internalType": "uint256",
|
||||
"name": "amount",
|
||||
"type": "uint256"
|
||||
}
|
||||
],
|
||||
"name": "DepositWithdrawn",
|
||||
"type": "event"
|
||||
},
|
||||
{
|
||||
"anonymous": false,
|
||||
"inputs": [
|
||||
{
|
||||
"indexed": false,
|
||||
"internalType": "address",
|
||||
"name": "owner",
|
||||
"type": "address"
|
||||
},
|
||||
{
|
||||
"indexed": false,
|
||||
"internalType": "uint256",
|
||||
"name": "amount",
|
||||
"type": "uint256"
|
||||
}
|
||||
],
|
||||
"name": "FundsWithdrawn",
|
||||
"type": "event"
|
||||
},
|
||||
{
|
||||
"anonymous": false,
|
||||
"inputs": [
|
||||
{
|
||||
"indexed": true,
|
||||
"internalType": "address",
|
||||
"name": "buyer",
|
||||
"type": "address"
|
||||
},
|
||||
{
|
||||
"indexed": true,
|
||||
"internalType": "bytes32",
|
||||
"name": "lockID",
|
||||
"type": "bytes32"
|
||||
},
|
||||
{
|
||||
"indexed": false,
|
||||
"internalType": "uint256",
|
||||
"name": "depositID",
|
||||
"type": "uint256"
|
||||
},
|
||||
{
|
||||
"indexed": false,
|
||||
"internalType": "uint256",
|
||||
"name": "amount",
|
||||
"type": "uint256"
|
||||
}
|
||||
],
|
||||
"name": "LockAdded",
|
||||
"type": "event"
|
||||
},
|
||||
{
|
||||
"anonymous": false,
|
||||
"inputs": [
|
||||
{
|
||||
"indexed": true,
|
||||
"internalType": "address",
|
||||
"name": "buyer",
|
||||
"type": "address"
|
||||
},
|
||||
{
|
||||
"indexed": false,
|
||||
"internalType": "bytes32",
|
||||
"name": "lockId",
|
||||
"type": "bytes32"
|
||||
}
|
||||
],
|
||||
"name": "LockReleased",
|
||||
"type": "event"
|
||||
},
|
||||
{
|
||||
"anonymous": false,
|
||||
"inputs": [
|
||||
{
|
||||
"indexed": true,
|
||||
"internalType": "address",
|
||||
"name": "buyer",
|
||||
"type": "address"
|
||||
},
|
||||
{
|
||||
"indexed": false,
|
||||
"internalType": "bytes32",
|
||||
"name": "lockId",
|
||||
"type": "bytes32"
|
||||
}
|
||||
],
|
||||
"name": "LockReturned",
|
||||
"type": "event"
|
||||
}
|
||||
],
|
||||
"bytecode": "0x",
|
||||
"deployedBytecode": "0x",
|
||||
"linkReferences": {},
|
||||
"deployedLinkReferences": {}
|
||||
}
|
||||
@@ -90,12 +90,6 @@
|
||||
"name": "token",
|
||||
"type": "address"
|
||||
},
|
||||
{
|
||||
"indexed": false,
|
||||
"internalType": "uint256",
|
||||
"name": "premium",
|
||||
"type": "uint256"
|
||||
},
|
||||
{
|
||||
"indexed": false,
|
||||
"internalType": "uint256",
|
||||
@@ -150,6 +144,25 @@
|
||||
"name": "DepositWithdrawn",
|
||||
"type": "event"
|
||||
},
|
||||
{
|
||||
"anonymous": false,
|
||||
"inputs": [
|
||||
{
|
||||
"indexed": false,
|
||||
"internalType": "address",
|
||||
"name": "owner",
|
||||
"type": "address"
|
||||
},
|
||||
{
|
||||
"indexed": false,
|
||||
"internalType": "uint256",
|
||||
"name": "amount",
|
||||
"type": "uint256"
|
||||
}
|
||||
],
|
||||
"name": "FundsWithdrawn",
|
||||
"type": "event"
|
||||
},
|
||||
{
|
||||
"anonymous": false,
|
||||
"inputs": [
|
||||
@@ -238,25 +251,6 @@
|
||||
"name": "OwnerUpdated",
|
||||
"type": "event"
|
||||
},
|
||||
{
|
||||
"anonymous": false,
|
||||
"inputs": [
|
||||
{
|
||||
"indexed": false,
|
||||
"internalType": "address",
|
||||
"name": "owner",
|
||||
"type": "address"
|
||||
},
|
||||
{
|
||||
"indexed": false,
|
||||
"internalType": "uint256",
|
||||
"name": "amount",
|
||||
"type": "uint256"
|
||||
}
|
||||
],
|
||||
"name": "PremiumsWithdrawn",
|
||||
"type": "event"
|
||||
},
|
||||
{
|
||||
"inputs": [
|
||||
{
|
||||
@@ -306,17 +300,17 @@
|
||||
"inputs": [
|
||||
{
|
||||
"internalType": "address",
|
||||
"name": "token",
|
||||
"name": "_token",
|
||||
"type": "address"
|
||||
},
|
||||
{
|
||||
"internalType": "uint256",
|
||||
"name": "amount",
|
||||
"name": "_amount",
|
||||
"type": "uint256"
|
||||
},
|
||||
{
|
||||
"internalType": "string",
|
||||
"name": "pixTarget",
|
||||
"name": "_pixTarget",
|
||||
"type": "string"
|
||||
}
|
||||
],
|
||||
@@ -328,7 +322,7 @@
|
||||
"type": "uint256"
|
||||
}
|
||||
],
|
||||
"stateMutability": "payable",
|
||||
"stateMutability": "nonpayable",
|
||||
"type": "function"
|
||||
},
|
||||
{
|
||||
@@ -403,11 +397,6 @@
|
||||
"name": "remaining",
|
||||
"type": "uint256"
|
||||
},
|
||||
{
|
||||
"internalType": "uint256",
|
||||
"name": "premium",
|
||||
"type": "uint256"
|
||||
},
|
||||
{
|
||||
"internalType": "string",
|
||||
"name": "pixTarget",
|
||||
@@ -587,14 +576,18 @@
|
||||
},
|
||||
{
|
||||
"inputs": [],
|
||||
"name": "withdrawPremiums",
|
||||
"name": "withdrawBalance",
|
||||
"outputs": [],
|
||||
"stateMutability": "nonpayable",
|
||||
"type": "function"
|
||||
},
|
||||
{
|
||||
"stateMutability": "payable",
|
||||
"type": "receive"
|
||||
}
|
||||
],
|
||||
"bytecode": "0x60806040526001805560405162001806380380620018068339810160408190526200002a9162000123565b600080546001600160a01b031916339081178255604051909182917f8292fce18fa69edf4db7b94ea2e58241df0ae57f97e0a6c9b29067028bf92d76908290a350600382905580516000905b80821015620000d6576000620000ae8484815181106200009a576200009a62000203565b6020026020010151620000e060201b60201c565b6000908152600460205260409020805460ff1916600190811790915592909201915062000076565b5050505062000219565b600c1b611000600160ac1b031690565b634e487b7160e01b600052604160045260246000fd5b80516001600160a01b03811681146200011e57600080fd5b919050565b600080604083850312156200013757600080fd5b8251602080850151919350906001600160401b03808211156200015957600080fd5b818601915086601f8301126200016e57600080fd5b815181811115620001835762000183620000f0565b8060051b604051601f19603f83011681018181108582111715620001ab57620001ab620000f0565b604052918252848201925083810185019189831115620001ca57600080fd5b938501935b82851015620001f357620001e38562000106565b84529385019392850192620001cf565b8096505050505050509250929050565b634e487b7160e01b600052603260045260246000fd5b6115dd80620002296000396000f3fe6080604052600436106100e85760003560e01c80636193cdfb1161008a5780638e2a3d36116100595780638e2a3d36146102f55780639872dbfe1461032757806398a268711461033d578063bfe07da61461037d57600080fd5b80636193cdfb1461026857806372fada5c1461027d5780638da5cb5b1461029d5780638e2749d6146102d557600080fd5b80632dfdf0b5116100c65780632dfdf0b5146101d857806336317972146101ef5780634b2ae9801461020f5780634e1389ed1461024857600080fd5b806303aaf306146100ed57806313af40351461012057806316d7224014610142575b600080fd5b3480156100f957600080fd5b5061010d6101083660046111e7565b610390565b6040519081526020015b60405180910390f35b34801561012c57600080fd5b5061014061013b366004611269565b61053a565b005b34801561014e57600080fd5b5061019f61015d366004611284565b60066020526000908152604090208054600182015460028301546003840154600485015460059095015493949293919290916001600160a01b03918216911686565b6040805196875260208701959095529385019290925260608401526001600160a01b0390811660808401521660a082015260c001610117565b3480156101e457600080fd5b5060025461010d9081565b3480156101fb57600080fd5b5061014061020a36600461129d565b6105e0565b34801561021b57600080fd5b5061010d61022a366004611269565b600c1b750ffffffffffffffffffffffffffffffffffffffff0001690565b34801561025457600080fd5b506101406102633660046112e9565b6106a0565b34801561027457600080fd5b50610140610962565b34801561028957600080fd5b50610140610298366004611284565b6109f2565b3480156102a957600080fd5b506000546102bd906001600160a01b031681565b6040516001600160a01b039091168152602001610117565b3480156102e157600080fd5b506101406102f036600461133c565b610a7a565b34801561030157600080fd5b50610315610310366004611284565b610b76565b6040516101179695949392919061137e565b34801561033357600080fd5b5061010d60035481565b34801561034957600080fd5b5061036d610358366004611284565b60046020526000908152604090205460ff1681565b6040519015158152602001610117565b61010d61038b36600461140c565b610c46565b600061039a610e00565b6103a48383610a7a565b60008881526005602052604090206004810154600160a01b900460ff166103de57604051635972996f60e11b815260040160405180910390fd5b8054851115610400576040516308aeed0f60e21b815260040160405180910390fd5b61040b89868a610e2b565b915060006040518060c001604052808b81526020018881526020018781526020016003544361043a91906114a9565b81526001600160a01b03808c166020808401919091528b82166040938401526000878152600682528381208551815591850151600183015592840151600282015560608401516003820155608084015160048201805491841673ffffffffffffffffffffffffffffffffffffffff1992831617905560a085015160059092018054929093169116179055835491925087918491906104d99084906114c1565b9091555050604080518b81526020810188905284916001600160a01b038c16917f2a28b2ae47b0bd4b104e7cd29b1dfa72846af8c4cfdc009da2ae29db68cb67ea910160405180910390a3505061052f60018055565b979650505050505050565b6000546001600160a01b031633146105885760405162461bcd60e51b815260206004820152600c60248201526b15539055551213d49256915160a21b60448201526064015b60405180910390fd5b6000805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0383169081178255604051909133917f8292fce18fa69edf4db7b94ea2e58241df0ae57f97e0a6c9b29067028bf92d769190a350565b6105e8610e00565b6105f183610eaf565b6105fb8282610a7a565b60008381526005602052604090206004810154600160a01b900460ff1615156001141561062b5761062b846109f2565b600481015481546000835560038301546001600160a01b03928316926106549184911683610eec565b604080518781526020810183905233917f7719804546c0185709e60c90d164447ff251a5ba29af0216faa921350f6bebf7910160405180910390a250505061069b60018055565b505050565b6106a8610e00565b6000858152600660205260409020600381015443108015906106cc57506002810154155b156106ea576040516331da482760e11b815260040160405180910390fd5b80546000908152600560209081526040808320600280860154925191949361071893918601928b9101611513565b60405160208183030381529060405280519060200120905060008160405160200161076f91907f19457468657265756d205369676e6564204d6573736167653a0a3332000000008152601c810191909152603c0190565b60408051601f19818403018152918152815160209283012060008581526007909352Line truncated
|
||||
"deployedBytecode": "0x6080604052600436106100e85760003560e01c80636193cdfb1161008a5780638e2a3d36116100595780638e2a3d36146102f55780639872dbfe1461032757806398a268711461033d578063bfe07da61461037d57600080fd5b80636193cdfb1461026857806372fada5c1461027d5780638da5cb5b1461029d5780638e2749d6146102d557600080fd5b80632dfdf0b5116100c65780632dfdf0b5146101d857806336317972146101ef5780634b2ae9801461020f5780634e1389ed1461024857600080fd5b806303aaf306146100ed57806313af40351461012057806316d7224014610142575b600080fd5b3480156100f957600080fd5b5061010d6101083660046111e7565b610390565b6040519081526020015b60405180910390f35b34801561012c57600080fd5b5061014061013b366004611269565b61053a565b005b34801561014e57600080fd5b5061019f61015d366004611284565b60066020526000908152604090208054600182015460028301546003840154600485015460059095015493949293919290916001600160a01b03918216911686565b6040805196875260208701959095529385019290925260608401526001600160a01b0390811660808401521660a082015260c001610117565b3480156101e457600080fd5b5060025461010d9081565b3480156101fb57600080fd5b5061014061020a36600461129d565b6105e0565b34801561021b57600080fd5b5061010d61022a366004611269565b600c1b750ffffffffffffffffffffffffffffffffffffffff0001690565b34801561025457600080fd5b506101406102633660046112e9565b6106a0565b34801561027457600080fd5b50610140610962565b34801561028957600080fd5b50610140610298366004611284565b6109f2565b3480156102a957600080fd5b506000546102bd906001600160a01b031681565b6040516001600160a01b039091168152602001610117565b3480156102e157600080fd5b506101406102f036600461133c565b610a7a565b34801561030157600080fd5b50610315610310366004611284565b610b76565b6040516101179695949392919061137e565b34801561033357600080fd5b5061010d60035481565b34801561034957600080fd5b5061036d610358366004611284565b60046020526000908152604090205460ff1681565b6040519015158152602001610117565b61010d61038b36600461140c565b610c46565b600061039a610e00565b6103a48383610a7a565b60008881526005602052604090206004810154600160a01b900460ff166103de57604051635972996f60e11b815260040160405180910390fd5b8054851115610400576040516308aeed0f60e21b815260040160405180910390fd5b61040b89868a610e2b565b915060006040518060c001604052808b81526020018881526020018781526020016003544361043a91906114a9565b81526001600160a01b03808c166020808401919091528b82166040938401526000878152600682528381208551815591850151600183015592840151600282015560608401516003820155608084015160048201805491841673ffffffffffffffffffffffffffffffffffffffff1992831617905560a085015160059092018054929093169116179055835491925087918491906104d99084906114c1565b9091555050604080518b81526020810188905284916001600160a01b038c16917f2a28b2ae47b0bd4b104e7cd29b1dfa72846af8c4cfdc009da2ae29db68cb67ea910160405180910390a3505061052f60018055565b979650505050505050565b6000546001600160a01b031633146105885760405162461bcd60e51b815260206004820152600c60248201526b15539055551213d49256915160a21b60448201526064015b60405180910390fd5b6000805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0383169081178255604051909133917f8292fce18fa69edf4db7b94ea2e58241df0ae57f97e0a6c9b29067028bf92d769190a350565b6105e8610e00565b6105f183610eaf565b6105fb8282610a7a565b60008381526005602052604090206004810154600160a01b900460ff1615156001141561062b5761062b846109f2565b600481015481546000835560038301546001600160a01b03928316926106549184911683610eec565b604080518781526020810183905233917f7719804546c0185709e60c90d164447ff251a5ba29af0216faa921350f6bebf7910160405180910390a250505061069b60018055565b505050565b6106a8610e00565b6000858152600660205260409020600381015443108015906106cc57506002810154155b156106ea576040516331da482760e11b815260040160405180910390fd5b80546000908152600560209081526040808320600280860154925191949361071893918601928b9101611513565b60405160208183030381529060405280519060200120905060008160405160200161076f91907f19457468657265756d205369676e6564204d6573736167653a0a3332000000008152601c810191909152603c0190565b60408051601f1981840301815291815281516020928301206000858152600790935291205490915060ff161515600114156107bd57604051637a48537560e11b815260040160405180910390fd5b6040805160008082526020820180845284905260ff881692820192909252606081018990526080810188905261083f9060019060a0016020604051602081039080840390855afa158015610815573d6000803e3d6000fd5b5050604051601f190151600c1b750ffffffffffffffffffffffffffffffffffffffff00016919050565b60008181526004602052604090205490915060ff1661087157604051632057875960e21b815260040160405180910390fd5b6004840154600186015460028701546001600160a01b0390921691600091610898916114c1565b60006002890181905560038901819055868152600760205260409020805460ff1916600117905560048801549091506108dc9083906001600160a01b031683610eec565b60018701541561090757600587015460018801546109079184916001600160a01b0390911690610eec565b60048701546040518d81526001600160a01b03909116907f5e420822d2f7281fdc4b763c62c8b7874bf22108a35efe93144d79296aacc67d9060200160405180910390a25050505050505061095b60018055565b5050505050565b6000546001600160a01b031633146109ab5760405162461bcd60e51b815260206004820152600c60248201526b15539055551213d49256915160a21b604482015260640161057f565b476109b63382610f78565bLine truncated
|
||||
"bytecode": "0x60806040526001805560405162001807380380620018078339810160408190526200002a9162000123565b600080546001600160a01b031916339081178255604051909182917f8292fce18fa69edf4db7b94ea2e58241df0ae57f97e0a6c9b29067028bf92d76908290a350600382905580516000905b80821015620000d6576000620000ae8484815181106200009a576200009a62000203565b6020026020010151620000e060201b60201c565b6000908152600460205260409020805460ff1916600190811790915592909201915062000076565b5050505062000219565b600c1b611000600160ac1b031690565b634e487b7160e01b600052604160045260246000fd5b80516001600160a01b03811681146200011e57600080fd5b919050565b600080604083850312156200013757600080fd5b8251602080850151919350906001600160401b03808211156200015957600080fd5b818601915086601f8301126200016e57600080fd5b815181811115620001835762000183620000f0565b8060051b604051601f19603f83011681018181108582111715620001ab57620001ab620000f0565b604052918252848201925083810185019189831115620001ca57600080fd5b938501935b82851015620001f357620001e38562000106565b84529385019392850192620001cf565b8096505050505050509250929050565b634e487b7160e01b600052603260045260246000fd5b6115de80620002296000396000f3fe6080604052600436106100ec5760003560e01c80635fd8c7101161008a5780638e2a3d36116100595780638e2a3d36146103005780639872dbfe1461033157806398a2687114610347578063bfe07da61461038757600080fd5b80635fd8c7101461027357806372fada5c146102885780638da5cb5b146102a85780638e2749d6146102e057600080fd5b80632dfdf0b5116100c65780632dfdf0b5146101e357806336317972146101fa5780634b2ae9801461021a5780634e1389ed1461025357600080fd5b806303aaf306146100f857806313af40351461012b57806316d722401461014d57600080fd5b366100f357005b600080fd5b34801561010457600080fd5b506101186101133660046111e9565b6103a7565b6040519081526020015b60405180910390f35b34801561013757600080fd5b5061014b61014636600461126b565b610551565b005b34801561015957600080fd5b506101aa610168366004611286565b60066020526000908152604090208054600182015460028301546003840154600485015460059095015493949293919290916001600160a01b03918216911686565b6040805196875260208701959095529385019290925260608401526001600160a01b0390811660808401521660a082015260c001610122565b3480156101ef57600080fd5b506002546101189081565b34801561020657600080fd5b5061014b61021536600461129f565b6105f7565b34801561022657600080fd5b5061011861023536600461126b565b600c1b750ffffffffffffffffffffffffffffffffffffffff0001690565b34801561025f57600080fd5b5061014b61026e3660046112eb565b6106b7565b34801561027f57600080fd5b5061014b61097a565b34801561029457600080fd5b5061014b6102a3366004611286565b610a0a565b3480156102b457600080fd5b506000546102c8906001600160a01b031681565b6040516001600160a01b039091168152602001610122565b3480156102ec57600080fd5b5061014b6102fb36600461133e565b610a92565b34801561030c57600080fd5b5061032061031b366004611286565b610b8e565b604051610122959493929190611380565b34801561033d57600080fd5b5061011860035481565b34801561035357600080fd5b50610377610362366004611286565b60046020526000908152604090205460ff1681565b6040519015158152602001610122565b34801561039357600080fd5b506101186103a236600461140d565b610c58565b60006103b1610e02565b6103bb8383610a92565b60008881526005602052604090206003810154600160a01b900460ff166103f557604051635972996f60e11b815260040160405180910390fd5b8054851115610417576040516308aeed0f60e21b815260040160405180910390fd5b61042289868a610e2d565b915060006040518060c001604052808b81526020018881526020018781526020016003544361045191906114aa565b81526001600160a01b03808c166020808401919091528b82166040938401526000878152600682528381208551815591850151600183015592840151600282015560608401516003820155608084015160048201805491841673ffffffffffffffffffffffffffffffffffffffff1992831617905560a085015160059092018054929093169116179055835491925087918491906104f09084906114c2565b9091555050604080518b81526020810188905284916001600160a01b038c16917f2a28b2ae47b0bd4b104e7cd29b1dfa72846af8c4cfdc009da2ae29db68cb67ea910160405180910390a3505061054660018055565b979650505050505050565b6000546001600160a01b0316331461059f5760405162461bcd60e51b815260206004820152600c60248201526b15539055551213d49256915160a21b60448201526064015b60405180910390fd5b6000805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0383169081178255604051909133917f8292fce18fa69edf4db7b94ea2e58241df0ae57f97e0a6c9b29067028bf92d769190a350565b6105ff610e02565b61060883610eb1565b6106128282610a92565b60008381526005602052604090206003810154600160a01b900460ff161515600114156106425761064284610a0a565b600381015481546000835560028301546001600160a01b039283169261066b9184911683610eee565b604080518781526020810183905233917f7719804546c0185709e60c90d164447ff251a5ba29af0216faa921350f6bebf7910160405180910390a25050506106b260018055565b505050565b6106bf610e02565b60008581526006602052604090206003810154431015806106e257506002810154155b15610700576040516331da482760e11b815260040160405180910390fd5b805460009081526005602090815260408083206002850154915190939261073092600186019290918b9101611514565b60405160208183030381529060405280519060200120905060008160405160200161078791907f19457468657265756d205369676e6564204d6573736167653a0a3332000000008152601c810191909152603c0190565b60408051601f19818403Line truncated
|
||||
"deployedBytecode": "0x6080604052600436106100ec5760003560e01c80635fd8c7101161008a5780638e2a3d36116100595780638e2a3d36146103005780639872dbfe1461033157806398a2687114610347578063bfe07da61461038757600080fd5b80635fd8c7101461027357806372fada5c146102885780638da5cb5b146102a85780638e2749d6146102e057600080fd5b80632dfdf0b5116100c65780632dfdf0b5146101e357806336317972146101fa5780634b2ae9801461021a5780634e1389ed1461025357600080fd5b806303aaf306146100f857806313af40351461012b57806316d722401461014d57600080fd5b366100f357005b600080fd5b34801561010457600080fd5b506101186101133660046111e9565b6103a7565b6040519081526020015b60405180910390f35b34801561013757600080fd5b5061014b61014636600461126b565b610551565b005b34801561015957600080fd5b506101aa610168366004611286565b60066020526000908152604090208054600182015460028301546003840154600485015460059095015493949293919290916001600160a01b03918216911686565b6040805196875260208701959095529385019290925260608401526001600160a01b0390811660808401521660a082015260c001610122565b3480156101ef57600080fd5b506002546101189081565b34801561020657600080fd5b5061014b61021536600461129f565b6105f7565b34801561022657600080fd5b5061011861023536600461126b565b600c1b750ffffffffffffffffffffffffffffffffffffffff0001690565b34801561025f57600080fd5b5061014b61026e3660046112eb565b6106b7565b34801561027f57600080fd5b5061014b61097a565b34801561029457600080fd5b5061014b6102a3366004611286565b610a0a565b3480156102b457600080fd5b506000546102c8906001600160a01b031681565b6040516001600160a01b039091168152602001610122565b3480156102ec57600080fd5b5061014b6102fb36600461133e565b610a92565b34801561030c57600080fd5b5061032061031b366004611286565b610b8e565b604051610122959493929190611380565b34801561033d57600080fd5b5061011860035481565b34801561035357600080fd5b50610377610362366004611286565b60046020526000908152604090205460ff1681565b6040519015158152602001610122565b34801561039357600080fd5b506101186103a236600461140d565b610c58565b60006103b1610e02565b6103bb8383610a92565b60008881526005602052604090206003810154600160a01b900460ff166103f557604051635972996f60e11b815260040160405180910390fd5b8054851115610417576040516308aeed0f60e21b815260040160405180910390fd5b61042289868a610e2d565b915060006040518060c001604052808b81526020018881526020018781526020016003544361045191906114aa565b81526001600160a01b03808c166020808401919091528b82166040938401526000878152600682528381208551815591850151600183015592840151600282015560608401516003820155608084015160048201805491841673ffffffffffffffffffffffffffffffffffffffff1992831617905560a085015160059092018054929093169116179055835491925087918491906104f09084906114c2565b9091555050604080518b81526020810188905284916001600160a01b038c16917f2a28b2ae47b0bd4b104e7cd29b1dfa72846af8c4cfdc009da2ae29db68cb67ea910160405180910390a3505061054660018055565b979650505050505050565b6000546001600160a01b0316331461059f5760405162461bcd60e51b815260206004820152600c60248201526b15539055551213d49256915160a21b60448201526064015b60405180910390fd5b6000805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0383169081178255604051909133917f8292fce18fa69edf4db7b94ea2e58241df0ae57f97e0a6c9b29067028bf92d769190a350565b6105ff610e02565b61060883610eb1565b6106128282610a92565b60008381526005602052604090206003810154600160a01b900460ff161515600114156106425761064284610a0a565b600381015481546000835560028301546001600160a01b039283169261066b9184911683610eee565b604080518781526020810183905233917f7719804546c0185709e60c90d164447ff251a5ba29af0216faa921350f6bebf7910160405180910390a25050506106b260018055565b505050565b6106bf610e02565b60008581526006602052604090206003810154431015806106e257506002810154155b15610700576040516331da482760e11b815260040160405180910390fd5b805460009081526005602090815260408083206002850154915190939261073092600186019290918b9101611514565b60405160208183030381529060405280519060200120905060008160405160200161078791907f19457468657265756d205369676e6564204d6573736167653a0a3332000000008152601c810191909152603c0190565b60408051601f1981840301815291815281516020928301206000858152600790935291205490915060ff161515600114156107d557604051637a48537560e11b815260040160405180910390fd5b6040805160008082526020820180845284905260ff88169282019290925260608101899052608081018890526108579060019060a0016020604051602081039080840390855afa15801561082d573d6000803e3d6000fd5b5050604051601f190151600c1b750ffffffffffffffffffffffffffffffffffffffff00016919050565b60008181526004602052604090205490915060ff1661088957604051632057875960e21b815260040160405180910390fd5b6003840154600186015460028701546001600160a01b03909216916000916108b0916114c2565b60006002890181905560038901819055868152600760205260409020805460ff1916600117905560048801549091506108f49083906001600160a01b031683610eee565b60018701541561091f576005870154600188015461091f9184916001600160a01b0390911690610eee565b60048701546040518d81526001600160a01b03909116907f5e420822d2f7281fdc4b763c62c8b7874bf22108a35efe93144d79296aacc67d9060200160405180910390a25050505050505061097360018055565b5050505050565b6000546001600160a01b031633146109c35760405162461bcd60e51b815260206004820152600c60248201526b15539055551213d49256915160a21bLine truncated
|
||||
"linkReferences": {},
|
||||
"deployedLinkReferences": {}
|
||||
}
|
||||
@@ -2,6 +2,12 @@
|
||||
import SearchComponent from "../components/SearchComponent.vue";
|
||||
import blockchain from "../utils/blockchain";
|
||||
|
||||
// (TO DO) Tirar isso tudo daqui
|
||||
import p2pix from "../utils/smart_contract_files/P2PIX.json";
|
||||
import addresses from "../utils/smart_contract_files/localhost.json";
|
||||
import { useEtherStore } from "@/store/ether";
|
||||
import { ethers } from "ethers";
|
||||
|
||||
const confirmBuyClick = async ({ selectedDeposit, tokenValue }: any) => {
|
||||
// finish buy screen
|
||||
console.log(selectedDeposit);
|
||||
@@ -11,6 +17,31 @@ const confirmBuyClick = async ({ selectedDeposit, tokenValue }: any) => {
|
||||
.then((deposit) => (depositDetail = deposit));
|
||||
console.log(tokenValue);
|
||||
console.log(depositDetail);
|
||||
|
||||
// Makes lock with deposit ID and the Amount
|
||||
if (depositDetail){
|
||||
const lock = await blockchain.addLock(depositDetail.args.depositID, tokenValue);
|
||||
console.log(lock);
|
||||
|
||||
// (TO DO) Tirar isso daqui
|
||||
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 etherStore = useEtherStore();
|
||||
const p2pContract = new ethers.Contract(addresses.p2pix, p2pix.abi, signer);
|
||||
const filterLocks = p2pContract.filters.LockAdded(null);
|
||||
const eventsLocks = await p2pContract.queryFilter(filterLocks);
|
||||
etherStore.setLocksAddedList(eventsLocks);
|
||||
|
||||
// Data to QRCode
|
||||
// Chave Pix = depositDetail.pixTarget
|
||||
// Valor = tokenValue
|
||||
|
||||
}
|
||||
|
||||
};
|
||||
</script>
|
||||
|
||||
|
||||
+52
-16
@@ -5,38 +5,59 @@ import { ref } from "vue";
|
||||
import { useEtherStore } from "../store/ether";
|
||||
import blockchain from "../utils/blockchain";
|
||||
|
||||
// Blockchain Data
|
||||
const etherStore = useEtherStore();
|
||||
const { depositsAddedList } = storeToRefs(etherStore);
|
||||
const { locksAddedList } = storeToRefs(etherStore);
|
||||
|
||||
const { depositList } = storeToRefs(etherStore);
|
||||
|
||||
// Buyer's flow Data
|
||||
const depositValue = ref<Number>();
|
||||
const depositPixKey = ref<string>("");
|
||||
|
||||
// Split tokens between wallets in wallets.json
|
||||
const splitTokens = () => {
|
||||
blockchain.splitTokens();
|
||||
};
|
||||
|
||||
// Formatting methods
|
||||
// Formats wallet address in 0x000...0000 format
|
||||
const formatWalletAddress = (wallet: string): string => {
|
||||
const walletAddressLength = wallet.length;
|
||||
const initialText = wallet.substring(0, 5);
|
||||
const finalText = wallet.substring(
|
||||
walletAddressLength - 4,
|
||||
walletAddressLength
|
||||
);
|
||||
return `${initialText}...${finalText}`;
|
||||
};
|
||||
|
||||
// Deposit methods
|
||||
// Gets value and pix key from user's form to create a deposit in the blockchain
|
||||
const mockDeposit = () => {
|
||||
if (!depositValue.value || !depositPixKey.value) return;
|
||||
blockchain.mockDeposit(depositValue.value.toString(), depositPixKey.value);
|
||||
};
|
||||
|
||||
const countDeposit = () => {
|
||||
blockchain.countDeposit();
|
||||
blockchain.addDeposit(depositValue.value.toString(), depositPixKey.value);
|
||||
};
|
||||
|
||||
// Get specific deposit data by its ID
|
||||
const mapDeposit = (depositId: BigNumber) => {
|
||||
blockchain.mapDeposits(depositId);
|
||||
};
|
||||
|
||||
// Lock methods
|
||||
// (TO DO) Releases lock by specific ID and other additional data
|
||||
const releaseLock = () => {
|
||||
blockchain.releaseLock();
|
||||
};
|
||||
|
||||
// Get specific lock data by its ID
|
||||
const mapLock = (lockId: string) => {
|
||||
blockchain.mapLocks(lockId);
|
||||
};
|
||||
</script>
|
||||
|
||||
<template>
|
||||
<div class="page">
|
||||
<div class="flex flex-col gap-4 justify-start items-start w-2/3">
|
||||
<button type="button" class="default-button" @click="countDeposit()">
|
||||
Contar depósitos
|
||||
</button>
|
||||
|
||||
<div class="flex gap-4 w-full justify-between">
|
||||
<input
|
||||
type="number"
|
||||
@@ -60,17 +81,32 @@ const mapDeposit = (depositId: BigNumber) => {
|
||||
<button type="button" class="default-button" @click="splitTokens()">
|
||||
Dividir tokens
|
||||
</button>
|
||||
|
||||
<button type="button" class="default-button" @click="releaseLock()">
|
||||
Release Lock
|
||||
</button>
|
||||
</div>
|
||||
|
||||
<ul class="flex flex-col justify-center items-center gap-4">
|
||||
<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'])"
|
||||
v-for="deposit in depositsAddedList"
|
||||
:key="deposit.blockNumber"
|
||||
@click="mapDeposit(deposit.args.depositID)"
|
||||
>
|
||||
Address:<br />{{ deposit["args"]["0"] }}<br />
|
||||
MRBZ: {{ blockchain.formatEther(deposit["args"]["amount"]) }}
|
||||
Seller:<br />{{ formatWalletAddress(deposit.args.seller) }}<br />
|
||||
MRBZ: {{ blockchain.formatEther(deposit.args.amount) }}
|
||||
</li>
|
||||
</ul>
|
||||
<ul class="flex flex-col justify-center items-center gap-4">
|
||||
<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="lock in locksAddedList"
|
||||
:key="lock.blockNumber"
|
||||
@click="mapLock(lock.args.lockID)"
|
||||
>
|
||||
Buyer:<br />{{ formatWalletAddress(lock.args.buyer) }}<br />
|
||||
MRBZ: {{ blockchain.formatEther(lock.args.amount) }}
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
Reference in new issue
Block a user