Skip to content

Commit b012c36

Browse files
committed
v0.1.1: index trade interaction
1 parent 1a4b317 commit b012c36

File tree

5 files changed

+39
-2
lines changed

5 files changed

+39
-2
lines changed

contracts/IIndexedEvents.sol

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
// SPDX-License-Identifier: LGPL-3.0
2+
pragma solidity ^0.8.22;
3+
4+
/// @notice Emitted when an interaction occurs. Used by wavs-indexer.
5+
/// @param addr The address that interacted.
6+
/// @param interactionType The type of interaction.
7+
/// @param tags Tags to index.
8+
/// @param data Arbitrary data associated with the interaction.
9+
event Interaction(
10+
address indexed addr,
11+
string indexed interactionType,
12+
string[] tags,
13+
bytes data
14+
);

contracts/MarketMaker.sol

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,9 +4,11 @@ pragma solidity ^0.8.22;
44
import {Ownable} from "@openzeppelin/contracts/access/Ownable.sol";
55
import {IERC20} from "forge-std/interfaces/IERC20.sol";
66
import {IERC1155Receiver} from "@openzeppelin/contracts/token/ERC1155/IERC1155Receiver.sol";
7+
import {Strings} from "@openzeppelin/contracts/utils/Strings.sol";
78
import {CTHelpers} from "@lay3rlabs/conditional-tokens-contracts/CTHelpers.sol";
89
import {ConditionalTokens} from "@lay3rlabs/conditional-tokens-contracts/ConditionalTokens.sol";
910
import {Whitelist} from "./Whitelist.sol";
11+
import {Interaction} from "./IIndexedEvents.sol";
1012

1113
abstract contract MarketMaker is Ownable, IERC1155Receiver {
1214
/*
@@ -168,10 +170,13 @@ abstract contract MarketMaker is Ownable, IERC1155Receiver {
168170
// Calculate net cost for executing trade
169171
int256 outcomeTokenNetCost = calcNetCost(outcomeTokenAmounts);
170172
int256 fees;
173+
string memory tradeType;
171174
if (outcomeTokenNetCost < 0) {
172175
fees = int256(calcMarketFee(uint256(-outcomeTokenNetCost)));
176+
tradeType = "sell";
173177
} else {
174178
fees = int256(calcMarketFee(uint256(outcomeTokenNetCost)));
179+
tradeType = "buy";
175180
}
176181

177182
require(fees >= 0);
@@ -225,6 +230,11 @@ abstract contract MarketMaker is Ownable, IERC1155Receiver {
225230
if (netCost < 0) {
226231
require(collateralToken.transfer(msg.sender, uint256(-netCost)));
227232
}
233+
234+
string[] memory tags = new string[](2);
235+
tags[0] = string.concat("tradeType:", tradeType);
236+
tags[1] = string.concat("collateralToken:", Strings.toHexString(address(collateralToken)));
237+
emit Interaction(msg.sender, "prediction_market_trade", tags, abi.encode(outcomeTokenAmounts, outcomeTokenNetCost, uint256(fees)));
228238
}
229239

230240
/// @dev Calculates fee to be paid to market maker

package-lock.json

Lines changed: 13 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "conditional-tokens-market-makers",
3-
"version": "0.1.0",
3+
"version": "0.1.1",
44
"description": "Conditional Tokens Market Makers",
55
"license": "LGPL-3.0",
66
"author": "Contributors to Conditional Tokens Market Makers",

0 commit comments

Comments
 (0)