friend_tech How many volumes does arbitrage have?

Original link: https://igaojin.me/2023/09/18/friend-tech-%E5%A5%97%E5%88%A9%E5%88%B0%E5%BA%95%E6%9C% 89%E5%A4%9A%E5%8D%B7/

background

Recently I am planning to engage in arbitrage with friend tech…

Just write a sql to see how many people are currently making profits. This data will not be based on keys that have not been sold.

The data is here friend tech top profit

Sort by profit amount
friend_tech_top_profit1.png

Sort by loss amount
friend_tech_top_profit2.png

The first few profitable accounts are definitely robot accounts. Just look at their data and you will find some problems.

data analysis

All data are based on block 411977 , real user 0xda , purchase tx

The data looks like this

 1
2
3
4
5
6
7
8
9
10
11
12

fromnoncetotransactionIndexgasPricegasFeestatusnew_status
00xa3afA500e3d88CAfA41AA7B95a8dEF7d2CBce92b941660xfF231524719dB94a0Ef08A88fC4e6939134EadE811254698872434951723127900
10x135557B95fc164cB152e853568b25880Ba06F94A94870x4Ff30D7222B852c67A66Dc8E8d56A8cf92B8411c21254698872394616413986700
20x8ac85761268B9Ac3fDe06d381611b64B232CEa97662930x4Ff30D7222B852c67A66Dc8E8d56A8cf92B8411c31254698872397503555135900
30x1BA4C73e7831b8099377c0583acfF4DBE488dFc6166260x4C99B25DdD0887D88b6C1364E3Df63a3bE76A5c341254698872428797029923900
40xa92a6331d0174c0eDC463B097E8564a492D451FA936090xfF231524719dB94a0Ef08A88fC4e6939134EadE851254698872434951723127900
50x9a34845CCBeA93925B15F5af6d9F4aFae4EC590a937550xfF231524719dB94a0Ef08A88fC4e6939134EadE861254698872434951723127900
60x5ED1222A1c0BdBA479B61201231f539ac131DD69641310x4C99B25DdD0887D88b6C1364E3Df63a3bE76A5c371254698872428797029923900
70xe8C5433d6E8Fc7a2b38eF0391FabA7470c9576e451420x4C99B25DdD0887D88b6C1364E3Df63a3bE76A5c381254698872428797029923900
80x38Cd1a8474A948a5a3e4d4b06c4069F2116DD184855740x4Ff30D7222B852c67A66Dc8E8d56A8cf92B8411c91254698872406164978583500
90x3c2c170296446e241dE2eE39d7036254d55Df9E4936020xfF231524719dB94a0Ef08A88fC4e6939134EadE8101254698872426290299680300

Number of transactions

 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
twenty one
twenty two
twenty three
twenty four
25
26
27
28
29
30
31
 import json
import pandas as pd

from hexbytes import HexBytes

with open( '4119771_da681.json' ) as f:
txs = json.loads(f.read())

def filter_da68 (txs) :
flashruntxs = []
for tx in txs:
_input = tx[ "input" ]
if "da68ee" in _input:
flashruntxs.append(
{
"from" : tx[ "from" ],
"nonce" : tx[ "nonce" ],
"to" : tx[ "to" ],
"transactionIndex" : tx[ "transactionIndex" ],
"gasPrice" : tx[ "gasPrice" ],
"gasFee" : tx[ "gasFee" ],
"status" : tx[ "status" ],
}
)
return flashruntxs

da68 = filter_da68(txs)

len(da68),len(txs)

( 506 , 517 )

You can see that there are 517 transactions in the entire block, of which 506 are related to da68. It is very outrageous, 97.87% of users are here to rush ahead.

How many robots are there in total?

Let’s classify them here according to the contract address. You can see several head robots.
The top 3 account for most transactions.

 1
2
3
4
5
6
7
8
9
10
11
 to_count = df[ 'to' ].value_counts()
to_count

0x4C99B25DdD0887D88b6C1364E3Df63a3bE76A5c3 184
0xfF231524719dB94a0Ef08A88fC4e6939134EadE8 161
0x4Ff30D7222B852c67A66Dc8E8d56A8cf92B8411c 123
0xCF205808Ed36593aa40a44F10c7f7C2F67d4A4d4 19
0xe27ddadbC8779D01fC539Bf5BA8529D728418625 9
0x27E8A5B043d3f58dde1c7ab96d2E3cF07558A1f1 8
0xAfE6795A9097BbCE00fe61462d22CCeeF706a3e8 2
Name: to, dtype: int64

Looking at how much gas fees these robots spent, I didn’t expect that it only cost $7.69 to send 184 transactions.

 1
2
3
4
5
6
7
8
9
10
11
12
13
 ethprice= 1640
for to in to_count.index:
tteth = sum(df[df.to==to].gasFee)/ 1e18
ttusd = tteth*ethprice
print(tteth,ttusd)

0.004690181471662096 7.691897613525838
0.004104812550636566 6.731892583043968
0.003097893590529322 5.080545488468088
0.000457215606189089 0.749833594150106
0.000226412037571068 0.3713157416165515
0.00017632952477182 0.2891804206257848
5.0244385725274e-05 0.08240079258944936

Let’s take a look at how many trumpets there are among these robots. We also found a few rookie robots…

 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
twenty one
twenty two
twenty three
twenty four
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
 for to in to_count.index:
print( 'to:' ,to)
print(df[df.to==to][ 'from' ].value_counts())
print()
print( '#' * 30 )


to: 0x4C99B25DdD0887D88b6C1364E3Df63a3bE76A5c3
0x5ED1222A1c0BdBA479B61201231f539ac131DD69 27
0x1BA4C73e7831b8099377c0583acfF4DBE488dFc6 26
0xd9E4b9579a5CF5B336E258820CC95cA34411c9D6 26
0x27C2a598Db389b5276c0156f14B4dE75E490712F 26
0xe8C5433d6E8Fc7a2b38eF0391FabA7470c9576e4 24
0xDd2B7694259a83753918BF5b6dC6961fabd2FDbC 24
0xC81a00ee6839EE0dFbF465d3C08E5F0b0291b71A 20
0x3Ee2183b706cf381e7e4586b8063a779f1E7b7dA 11
Name: from , dtype: int64

##############################
to: 0xfF231524719dB94a0Ef08A88fC4e6939134EadE8
0xa3afA500e3d88CAfA41AA7B95a8dEF7d2CBce92b 9
0xa92a6331d0174c0eDC463B097E8564a492D451FA 9
0x2bE3973950D0F1951E12C21bC7bB8e2428101Fdd 9
0x63cEe818600f91C4473CD14cDfD9C10d918B587b 9
0x92c21dB4a7cC0302ccCb71d444aE674Ec3980c93 9
0xCb44B9062eB0Cd22c4C0701385e6482BF4a77759 9
0x57ae46a097751124f8c35A86f64B4c38d2C62675 9
0x8eE3847cAE34e6e0292dc3DF8DD3C0C69a266b97 9
0x807db242cD37b5E2B53697842197611f51693C06 9
0xDb6f56639AaeA09FfEA6080D31A32851524128d4 9
0x9D94BdAf42d7906b3D3c011053ed2cBF42A1cA3f 9
0x244Fb415A8765812B9bc5B52cA14fd83C9d7E0e5 9
0xF689ac0322786Ac2D7245Fcd665fe120ff1d0408 9
0x895D2d10FB9b92D0e1002c1a1bCdb90Ed42c3588 9
0xF53010525Df586e78b14114C9cd05481E79E6C8C 9
0x3c2c170296446e241dE2eE39d7036254d55Df9E4 9
0x9a34845CCBeA93925B15F5af6d9F4aFae4EC590a 9
0x36da68690F238366156890010c411394FC529cd9 8
Name: from , dtype: int64

##############################
to: 0x4Ff30D7222B852c67A66Dc8E8d56A8cf92B8411c
0x8ac85761268B9Ac3fDe06d381611b64B232CEa97 13
0x135557B95fc164cB152e853568b25880Ba06F94A 12
0x38Cd1a8474A948a5a3e4d4b06c4069F2116DD184 12
0x3547DbcD816bc17D7dE0e7e67a8B8bEE74384ACF 12
0xa9ff99346829E7c578E6d38C2269997a2FCcEEE1 12
0xd65eD99CB8b3b65CE378e3E5CaE545B751f4DAc6 11
0x1F238B47ab9fD915e5852601E83c6c1358297870 11
0x75Ff68BDe78974ab54a642fD294369447bD9Feef 10
0xf1E7E7Ad07C046abb6e488F73c126B897892755c 10
0x76eF08c772Db73E05fa00398746FbA31eFC5804F 10
0x7CfE232Ed8b0acc111ec780b7Cb95C68f3CF7Aa6 10
Name: from , dtype: int64

##############################
to: 0xCF205808Ed36593aa40a44F10c7f7C2F67d4A4d4
0x188eCF8f4290C4e5d641449B88CEf94574174972 15
0xDa68EEe4c5b10D8A574b9ec072335c583B1C67A2 1
0xbEbA981C5697b1CFa7c04fCB523E94bD42F79afB 1
0x40954b9B4bAfC41Ec6387325fD0069C68674a04d 1
0x296D3324Ee4b2316E87f965F4A04F073780f5310 1
Name: from , dtype: int64

##############################
to: 0xe27ddadbC8779D01fC539Bf5BA8529D728418625
0xeFa4b454A64049ff93cC37b54102982ACEdf4Eae 9
Name: from , dtype: int64

##############################
to: 0x27E8A5B043d3f58dde1c7ab96d2E3cF07558A1f1
0x8b113ad5c2b2E3ddb102305e32259c6b23D12aa3 4
0x89B5BB48f016b809EB2eE78416550487334C1331 4
Name: from , dtype: int64

##############################
to: 0xAfE6795A9097BbCE00fe61462d22CCeeF706a3e8
0xC1322133ACbAd823614bf79Ca9eC409fA3A7E39A 2
Name: from , dtype: int64

##############################

Take a final look at the overview

26 is the user’s transaction. You can see that all gasPrices are the same as the user’s…

 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
twenty one
twenty two
twenty three
twenty four
25
26
27
28
29
30
31
32
33
34
35
36
37
38
 # Filter out data with transactionIndex in the range of 16-40
filtered_df = df[(df[ 'transactionIndex' ] >= 16 ) & (df[ 'transactionIndex' ] <= 36 )]

# Sort by transactionIndex from small to large
sorted_df = filtered_df.sort_values(by= 'transactionIndex' )

def highlight_row (row) :
if row[ 'transactionIndex' ] == 26 :
return [ 'background-color: yellow' ] * len(row)
else :
return [ '' ] * len(row)

highlighted_df = filtered_df.style.apply(highlight_row, axis= 1 )
highlighted_df


from noncetotransactionIndexgasPricegasFeestatus
15 0xa9ff99346829E7c578E6d38C2269997a2FCcEEE1 73039 0x4Ff30D7222B852c67A66Dc8E8d56A8cf92B8411c 16 ​​125469887 24061649785835 0
16 0x895d2d10FB9B92D0E1002C1A1BCDB90ed42C358894987 0xFF231524719db94a08a88FC4EDE8 17 125469887231279 0 _ _
0 _ _ _ _ _ _ _
0 _ _ _ _ _ _ _
19 0XC81A00EE6839EE0DFBF465D3C08E5F0B0291B71A 2708 0x4C99B25ddd088b6C1364E3DF63BE76A5C3 20 12546987970299239 0 _
20 0x244Fb415A8765812B9bc5B52cA14fd83C9d7E0e5 56203 0xfF231524719dB94a0Ef08A88fC4e6939134EadE8 21 125469887 24234031585311 0
21 0x5ED1222A1c0BdBA479B61201231f539ac131DD69 64132 0x4C99B25DdD0887D88b6C1364E3Df63a3bE76A5c3 22 125469887 24287970299239 0
1 _ _ _ _ _ _ _
23 0x1ba4c73e7831B8099377C0583ACFF4DBE488DFC6 16627 0x4c99b25dddddddd88b6c1363BE76A5C3 24 1254698876064763 0 _
0 _ _ _ _ _ _ _
25 0xDa68EEe4c5b10D8A574b9ec072335c583B1C67A2 0 0xCF205808Ed36593aa40a44F10c7f7C2F67d4A4d4 26 125469887 28895454735018 1
26 0x9d94BDAF42D7906B3D3C011053ED2CBF42A1CA3F 55712 0xFF231524719DB94A08A88FC4EDE8 27 1254698895956846186 1 _
27 0xe8C5433d6E8Fc7a2b38eF0391FabA7470c9576e4 5143 0x4C99B25DdD0887D88b6C1364E3Df63a3bE76A5c3 28 125469887 25586583629689 0
28 0xd9e4b9579A5CF5B336E258820CC95CA34411C9D6 7656 0x4c99b25ddddddddddd in88B6C1363A3BE76A5C3 29 12546586583629689 0
29 0x1F238B47ab9fD915e5852601E83c6c1358297870 188626 0x4Ff30D7222B852c67A66Dc8E8d56A8cf92B8411c 30 125469887 25293638606288 0
30 0XDB6F566399FFEA09FFEA6080D31A32851524128D4 55742 0xFF231524719DB94A08A88FC4E6939134EDE8 31 1254698803297854 0 _
31 0x27C2a598Db389b5276c0156f14B4dE75E490712F 8112 0x4C99B25DdD0887D88b6C1364E3Df63a3bE76A5c3 32 125469887 25586583629689 0
32 0x8ac85761268B9Ac3fDe06d381611b64B232CEa97 66294 0x4Ff30D7222B852c67A66Dc8E8d56A8cf92B8411c 33 125469887 25293638606288 0
33 0x75Ff68BDe78974ab54a642fD294369447bD9Feef 74796 0x4Ff30D7222B852c67A66Dc8E8d56A8cf92B8411c 34 125469887 25207024371812 0
34 0xDd2B7694259a83753918BF5b6dC6961fabd2FDbC 3181 0x4C99B25DdD0887D88b6C1364E3Df63a3bE76A5c3 35 125469887 25586583629689 0
35 0x807db242cD37b5E2B53697842197611f51693C06 55979 0xfF231524719dB94a0Ef08A88fC4e6939134EadE8 36 125469887 25474803297854 0

Code and related data download

https://github.com/jin10086/friend-tech-bot-analyze

Author of this article : Gao Jin
Address of this article : https://igaojin.me/2023/09/18/friend-tech-How many volumes does arbitrage have/
Copyright statement : Please indicate the source when reprinting!

This article is reproduced from: https://igaojin.me/2023/09/18/friend-tech-%E5%A5%97%E5%88%A9%E5%88%B0%E5%BA%95%E6%9C% 89%E5%A4%9A%E5%8D%B7/
This site is only for collection, and the copyright belongs to the original author.