From bfabcb71dd940c3ebb80e3715d598400826fb7f3 Mon Sep 17 00:00:00 2001 From: Igor Line Date: Tue, 18 Apr 2023 21:37:12 +0200 Subject: [PATCH] feat: add activity cost specification for action on mainnet --- frontend/src/hooks/useCreateCampaign.ts | 31 +++++-- .../views/createCampaign/CreateCampaign.tsx | 84 ++++++++++++++++--- .../l2/L2CampaignFactory.sol | 27 +++--- 3 files changed, 112 insertions(+), 30 deletions(-) diff --git a/frontend/src/hooks/useCreateCampaign.ts b/frontend/src/hooks/useCreateCampaign.ts index cbf92a8..ce6c1e1 100644 --- a/frontend/src/hooks/useCreateCampaign.ts +++ b/frontend/src/hooks/useCreateCampaign.ts @@ -1,20 +1,35 @@ -import {BigNumber, ethers} from "ethers"; -import {useSigner} from "wagmi"; -import {L2CampaingFactory} from "../contracts"; +import { BigNumber, ethers } from "ethers"; +import { useSigner } from "wagmi"; +import { L2CampaingFactory } from "../contracts"; export const useCreateCampaign = () => { - const {data: signer} = useSigner(); + const { data: signer } = useSigner(); - const deployCampaign = async (commision: BigNumber, target: string, deadline: BigNumber, totalReward: BigNumber, signature: string) => { + const deployCampaign = async ( + commision: BigNumber, + target: string, + deadline: BigNumber, + totalReward: BigNumber, + signature: string, + activityCost: BigNumber + ) => { const contract = new ethers.Contract( L2CampaingFactory, - ["function deployCampaign(uint256 _commission,address _target,uint256 _deadline, string memory _signature) external payable"], + [ + "function deployCampaign(uint256 _commission,address _target,uint256 _deadline, string memory _signature) external payable", + ], signer! ); - const deployRes = await contract.deployCampaign(commision, target, deadline, signature, {value: totalReward}); + const deployRes = await contract.deployCampaign( + commision, + target, + deadline, + signature, + { value: totalReward } + ); console.log("deployRes", deployRes); }; - return {deployCampaign}; + return { deployCampaign }; }; diff --git a/frontend/src/views/createCampaign/CreateCampaign.tsx b/frontend/src/views/createCampaign/CreateCampaign.tsx index 45c467d..6e0414e 100644 --- a/frontend/src/views/createCampaign/CreateCampaign.tsx +++ b/frontend/src/views/createCampaign/CreateCampaign.tsx @@ -1,4 +1,12 @@ -import { Box, Button, Flex, Heading, Input, Select, Text } from "@chakra-ui/react"; +import { + Box, + Button, + Flex, + Heading, + Input, + Select, + Text, +} from "@chakra-ui/react"; import { SingleDatepicker } from "chakra-dayzed-datepicker"; import { BigNumber, ethers } from "ethers"; import { useState } from "react"; @@ -10,25 +18,39 @@ export const CreateCampaign = () => { const { deployCampaign } = useCreateCampaign(); const onCreateCampaign = async () => { - await deployCampaign(ethers.utils.parseEther(commision), target, BigNumber.from(date.getTime() * 2), ethers.utils.parseEther(totalReward), signature); + await deployCampaign( + ethers.utils.parseEther(commision), + target, + BigNumber.from(date.getTime() * 2), + ethers.utils.parseEther(totalReward), + signature, + ethers.utils.parseEther(activityCost) + ); }; const [target, setTarget] = useState(BAYC); const [signature, setSignature] = useState("mintApe(uint256)"); const [commision, setCommision] = useState("0.00001"); const [totalReward, setTotalReward] = useState("0.001"); + const [activityCost, setActivityCost] = useState("0.8"); const [date, setDate] = useState(new Date()); return (
- - Create Campaign + + Create Campaign Specifiy advertised Contract - setTarget(e.target.value)} type="text" placeholder="" /> + setTarget(e.target.value)} + type="text" + placeholder="" + /> @@ -40,13 +62,40 @@ export const CreateCampaign = () => { Function signature - setSignature(e.target.value)} type="text" placeholder="" /> + setSignature(e.target.value)} + type="text" + placeholder="" + /> + + + + Activity cost + + setActivityCost(e.target.value)} + type="text" + placeholder="" + /> + + ETH + User aquision Reward - setCommision(e.target.value)} type="number" placeholder="0x..." /> + setCommision(e.target.value)} + type="number" + placeholder="0x..." + /> ETH @@ -55,7 +104,13 @@ export const CreateCampaign = () => { Total reward amount - setTotalReward(e.target.value)} type="number" placeholder="0x..." /> + setTotalReward(e.target.value)} + type="number" + placeholder="0x..." + /> ETH @@ -64,11 +119,20 @@ export const CreateCampaign = () => { Deadline - + - diff --git a/src/crosschainAdvertiser/l2/L2CampaignFactory.sol b/src/crosschainAdvertiser/l2/L2CampaignFactory.sol index 7df2861..a0d3ae4 100644 --- a/src/crosschainAdvertiser/l2/L2CampaignFactory.sol +++ b/src/crosschainAdvertiser/l2/L2CampaignFactory.sol @@ -18,7 +18,8 @@ contract L2CampaignFactory is Ownable { address campaign, uint256 commission, uint256 totalReward, - string signature + string signature, + uint256 activityCost ); constructor(address _l1Caller, address _connext, uint32 _originDomain) { @@ -32,28 +33,30 @@ contract L2CampaignFactory is Ownable { } function deployCampaign( - uint256 _commission, - address _target, - uint256 _deadline, - string memory _signature + uint256 commission, + address target, + uint256 deadline, + string memory signature, + uint256 activityCost ) external payable { L2Campaign campaign = new L2Campaign{value: msg.value}( - _commission, - _target, - _deadline, + commission, + target, + deadline, l1Caller, connext, originDomain, - bytes4(keccak256(bytes(_signature))) + bytes4(keccak256(bytes(signature))) ); emit CampaignCreated( - _target, + target, msg.sender, address(campaign), - _commission, + commission, msg.value, - _signature + signature, + activityCost ); } }