Skip to content
This repository was archived by the owner on Aug 12, 2023. It is now read-only.

Commit e45cd83

Browse files
authored
Put in temporary hack for Matcha attribution (#428)
1 parent e799a4c commit e45cd83

File tree

6 files changed

+116
-52
lines changed

6 files changed

+116
-52
lines changed

src/fills/get-relayer-for-fill.js

-18
This file was deleted.

src/fills/get-relayer-for-fill.test.js

-32
This file was deleted.

src/jobs/create-fills/build-fill.js

+3-2
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
const _ = require('lodash');
22

33
const { FILL_STATUS } = require('../../constants');
4-
const getRelayerForFill = require('../../fills/get-relayer-for-fill');
4+
const resolveRelayer = require('../../relayers/resolve-relayer');
55

66
const buildFill = ({ eventData, eventId, protocolVersion, transaction }) => {
77
const {
@@ -16,7 +16,8 @@ const buildFill = ({ eventData, eventId, protocolVersion, transaction }) => {
1616
taker,
1717
} = eventData;
1818

19-
const relayer = getRelayerForFill({
19+
const relayer = resolveRelayer({
20+
affiliateAddress: transaction.affiliateAddress,
2021
feeRecipient,
2122
senderAddress,
2223
takerAddress: taker,

src/relayers/resolve-relayer.js

+35
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
const _ = require('lodash');
2+
3+
const getAllRelayers = require('../relayers/get-all-relayers');
4+
5+
const resolveRelayer = metadata => {
6+
const {
7+
affiliateAddress,
8+
feeRecipient,
9+
senderAddress,
10+
takerAddress,
11+
} = metadata;
12+
13+
const relayers = getAllRelayers();
14+
const matchingRelayer = _.find(
15+
relayers,
16+
relayer =>
17+
_.includes(relayer.takerAddresses, takerAddress) ||
18+
_.includes(relayer.feeRecipients, feeRecipient) ||
19+
_.includes(relayer.senderAddresses, senderAddress),
20+
);
21+
22+
// TODO: Remove this temporary hack once apps feature is in place
23+
if (
24+
(affiliateAddress === '0x86003b044f70dac0abc80ac8957305b6370893ed' && // Matcha
25+
feeRecipient === '0x1000000000000000000000000000000000000011') || // 0x API
26+
(affiliateAddress === '0x86003b044f70dac0abc80ac8957305b6370893ed' && // Matcha
27+
matchingRelayer === undefined)
28+
) {
29+
return relayers.matcha;
30+
}
31+
32+
return matchingRelayer || null;
33+
};
34+
35+
module.exports = resolveRelayer;

src/relayers/resolve-relayer.test.js

+78
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,78 @@
1+
const resolveRelayer = require('./resolve-relayer');
2+
3+
it('should return null when no relayer matched', () => {
4+
const metadata = {
5+
feeRecipient: '0xe269e891a2ec8585a378882ffa531141205e92e9',
6+
takerAddress: '0x5dd835a893734b8d556eccf87800b76dda5aedc5',
7+
};
8+
const relayer = resolveRelayer(metadata);
9+
10+
expect(relayer).toBeNull();
11+
});
12+
13+
it('should return DDEX when taker address matches', () => {
14+
const metadata = {
15+
takerAddress: '0xe269e891a2ec8585a378882ffa531141205e92e9',
16+
};
17+
const relayer = resolveRelayer(metadata);
18+
19+
expect(relayer).toMatchSnapshot();
20+
});
21+
22+
it('should return Bamboo Relay when fee recipient matches', () => {
23+
const metadata = {
24+
feeRecipient: '0x5dd835a893734b8d556eccf87800b76dda5aedc5',
25+
};
26+
const relayer = resolveRelayer(metadata);
27+
28+
expect(relayer).toMatchSnapshot();
29+
});
30+
31+
it('should return Gods Unchained when sender address matches', () => {
32+
const metadata = {
33+
senderAddress: '0xb04239b53806ab31141e6cd47c63fb3480cac908',
34+
};
35+
const relayer = resolveRelayer(metadata);
36+
37+
expect(relayer.name).toBe('Gods Unchained');
38+
});
39+
40+
it('should return Matcha when affiliate address is 0x86003b044f70dac0abc80ac8957305b6370893ed and no other relayer matches', () => {
41+
const metadata = {
42+
affiliateAddress: '0x86003b044f70dac0abc80ac8957305b6370893ed',
43+
feeRecipient: '0xe269e891a2ec8585a378882ffa531141205e92e9',
44+
takerAddress: '0x5dd835a893734b8d556eccf87800b76dda5aedc5',
45+
};
46+
const relayer = resolveRelayer(metadata);
47+
48+
expect(relayer.name).toBe('Matcha');
49+
});
50+
51+
it('should return SwitchDex when affiliate address matches Matcha but fee recipient matches SwitchDex', () => {
52+
const metadata = {
53+
affiliateAddress: '0x86003b044f70dac0abc80ac8957305b6370893ed',
54+
feeRecipient: '0x10aa8c82e3656170baae80d189b8b7dcea6865c9',
55+
};
56+
const relayer = resolveRelayer(metadata);
57+
58+
expect(relayer.name).toBe('SwitchDex');
59+
});
60+
61+
it('should return Matcha when fee recipient is 0x86003b044f70dac0abc80ac8957305b6370893ed', () => {
62+
const metadata = {
63+
feeRecipient: '0x86003b044f70dac0abc80ac8957305b6370893ed',
64+
};
65+
const relayer = resolveRelayer(metadata);
66+
67+
expect(relayer.name).toBe('Matcha');
68+
});
69+
70+
it('should return Matcha when fee recipient is 0x API but affiliate address matches Matcha', () => {
71+
const metadata = {
72+
affiliateAddress: '0x86003b044f70dac0abc80ac8957305b6370893ed',
73+
feeRecipient: '0x1000000000000000000000000000000000000011',
74+
};
75+
const relayer = resolveRelayer(metadata);
76+
77+
expect(relayer.name).toBe('Matcha');
78+
});

0 commit comments

Comments
 (0)