Skip to content

Commit

Permalink
Update fee data to 2023-10-17. Add Exodus Desktop wallet fee plot
Browse files Browse the repository at this point in the history
  • Loading branch information
Rucknium committed Oct 18, 2023
1 parent e9ff8e6 commit 0fb1ff2
Show file tree
Hide file tree
Showing 10 changed files with 1,931 additions and 1,805 deletions.
4 changes: 2 additions & 2 deletions Monero-Nonstandard-Fees/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ The data in this directory can help identify which wallet implementations may be

## Identification of nonstandard fees in Monero

The tabulation of nonstandard fees will use "nanonero" as the basic unit. A [nanonero](https://web.getmonero.org/resources/moneropedia/denominations.html) is 0.000000001 XMR. In other words, it is 1/1000th of the smallest Monero unit, the piconero. In the tables in the `data ` directory, fee per byte is rounded down to the nearest integer nanonero. The complete operation is `floor( (tx_fee/tx_size_bytes)/1000 )`.
The tabulation of nonstandard fees will use "nanonero" as the basic unit. A [nanonero](https://web.getmonero.org/resources/moneropedia/denominations.html) is 0.000000001 XMR. In other words, it is 1/1000th of the smallest Monero unit, the piconero. In the tables in the `data` directory, fee per byte is rounded down to the nearest integer nanonero. The complete operation is `floor( (tx_fee/tx_size_bytes)/1000 )`.

Except when the dynamic block/fee algorithm is raising block size and fees, a `get_fee_estimate` RPC call to `monerod` will return these four values for nanoneros per byte: 20, 80, 320, 4000. These four levels are supposed to give transactions different priorities: "slow, normal, fast, fastest". However, since Monero blocks are usually not full, paying a higher fee usually does not mean that a transaction will be confirmed in a block any faster than a lower fee unless mining pool operators update their block templates more frequently when they receive transactions with higher fees. Any fees outside of these four values are considered nonstandard.

Expand All @@ -31,7 +31,7 @@ According to my research, at least eight wallets did not upgrade in time for the

Wallets accessible to ordinary users are not the only wallet implementations creating transactions on the Monero blockchain. Services like centralized exchanges also create transactions. Downtime/uptime of withdrawal capability of these services can provide clues about which set of transactions with nonstandard fees they may be creating. moneroj.net has a record of Binance withdrawal suspensions: https://moneroj.net/withdrawals/

A researcher could create transactions with nonstandard wallets to provide evidence that a specific wallet is responsible for certain types of nonstandard fees. The fees of any transaction can be viewed by inputting its transaction ID into a block explorer like https://xmrchain.net/ . Note that` xmrchain.net`'s definition of kB is 1024 bytes, not 1000 bytes.
A researcher could create transactions with nonstandard wallets to provide evidence that a specific wallet is responsible for certain types of nonstandard fees. The fees of any transaction can be viewed by inputting its transaction ID into a block explorer like https://xmrchain.net/ . Note that `xmrchain.net`'s definition of kB is 1024 bytes, not 1000 bytes.

## Tabulated data

Expand Down
32 changes: 32 additions & 0 deletions Monero-Nonstandard-Fees/code/Exodus-txs-release-fix-plot.R
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@

# install.packages("ggplot2")
# install.packages("lubridate")

library(ggplot2)

fee.clusters <- read.csv("Monero-Nonstandard-Fees/data/fee-clusters-by-day.csv", stringsAsFactors = FALSE)

exodus <- data.frame(block_timestamp_date = fee.clusters$block_timestamp_date, exodus.txs = fee.clusters$X24_34_44_fee, stringsAsFactors = FALSE)

exodus$Week <- factor(c(rep(NA, 3), paste0("Week starting ",
rep(exodus$block_timestamp_date[-(1:3)][seq(1, nrow(exodus) - 3, by = 7)], each = 7))))
# Note: If data newer than 2023-10-17, then must change this

exodus$day.of.week <- lubridate::wday(as.Date(exodus$block_timestamp_date), label = TRUE, week_start = "Wednesday")

exodus <- exodus[(nrow(exodus) - 7*8 + 1):nrow(exodus), ]


png("Monero-Nonstandard-Fees/images/Exodus-txs-after-fix-release.png", width = 800, height = 800)

theme_set(theme_gray(base_size = 18))

ggplot(exodus, aes(x = day.of.week, y = exodus.txs, col = Week, group = Week)) +
geom_line() + geom_point() + expand_limits(y = 0) +
labs(title = "Number of Monero transactions with 0.00024060, 0.00034245, or\n0.00044430 XMR total fee (suspected Exodus Desktop wallet transactions)",
x = "Day of week (by UTC time)", y = "Number of transactions per day",
caption = "New version of Exodus Desktop with standard fee calculations was released 2023-10-10") +
annotate("text", y = 0, x = 6, label = "github.com/Rucknium", size = 6) +
theme(plot.caption = element_text(color = "red"))

dev.off()
1,747 changes: 880 additions & 867 deletions Monero-Nonstandard-Fees/data/example-tx-ids-by-fee.csv

Large diffs are not rendered by default.

23 changes: 23 additions & 0 deletions Monero-Nonstandard-Fees/data/fee-clusters-by-day.csv
Original file line number Diff line number Diff line change
Expand Up @@ -406,3 +406,26 @@
2023-09-22,17546,269,829,51,508,59,1.53311296021885,4.72472358372279,0.290664538926251,2.89524677989285,0.336258976404879
2023-09-23,15250,192,699,49,440,33,1.25901639344262,4.58360655737705,0.321311475409836,2.88524590163934,0.216393442622951
2023-09-24,15914,203,791,60,456,43,1.2756063843157,4.97046625612668,0.377026517531733,2.86540153324117,0.270202337564409
2023-09-25,20650,351,1077,73,623,75,1.69975786924939,5.21549636803874,0.353510895883777,3.01694915254237,0.36319612590799
2023-09-26,19975,327,1019,80,566,60,1.63704630788486,5.10137672090113,0.400500625782228,2.83354192740926,0.300375469336671
2023-09-27,19883,319,1079,80,607,62,1.60438565608812,5.42674646683096,0.402353769551878,3.05285922647488,0.311824171402706
2023-09-28,19190,308,1074,54,544,62,1.60500260552371,5.59666492965086,0.281396560708702,2.83480979676915,0.323084940072955
2023-09-29,18582,286,938,71,554,41,1.53912388332795,5.04789581315251,0.382090194812184,2.98137982994296,0.220643633623937
2023-09-30,18242,203,760,49,477,38,1.1128165771297,4.16620984541169,0.268610897927859,2.61484486350181,0.208310492270584
2023-10-01,19539,203,801,54,551,59,1.03894774553457,4.09949332105021,0.276370336250576,2.82000102359384,0.301960182199703
2023-10-02,23853,317,1154,51,701,67,1.32897329476376,4.8379658743135,0.213809583700163,2.93883368968264,0.280887100155117
2023-10-03,22384,354,1063,76,601,79,1.58148677626876,4.74892780557541,0.339528234453181,2.6849535382416,0.352930664760543
2023-10-04,22486,346,1046,52,646,71,1.53873521302144,4.65178333185093,0.231255003113048,2.87289869251979,0.315752023481277
2023-10-05,21813,293,1107,81,587,59,1.34323568514189,5.0749553018842,0.371338192820795,2.69105579241737,0.270480905881814
2023-10-06,20378,289,987,81,593,54,1.41819609382668,4.84345863185789,0.397487486505054,2.91000098145058,0.264991657670036
2023-10-07,17188,204,777,62,433,56,1.18687456364906,4.52059576448685,0.360716779148243,2.51919944147079,0.3258087037468
2023-10-08,18215,231,851,62,452,56,1.26818556135054,4.67197364809223,0.34037880867417,2.4814713148504,0.307438923963766
2023-10-09,22380,301,1111,69,579,59,1.3449508489723,4.96425379803396,0.308310991957105,2.58713136729222,0.263628239499553
2023-10-10,22555,334,1044,113,607,86,1.48082465085347,4.62868543560186,0.500997561516293,2.69119929062292,0.381290179561073
2023-10-11,20342,299,943,86,439,71,1.46986530331334,4.63572903352669,0.422770622357684,2.1580965490119,0.349031560318553
2023-10-12,19838,323,1022,92,347,59,1.62818832543603,5.15172900494001,0.463756427059179,1.74916826292973,0.297409013005343
2023-10-13,19076,284,1013,57,330,44,1.48878171524429,5.3103375969805,0.298804780876494,1.72992241560075,0.230656322080101
2023-10-14,17129,198,784,50,278,33,1.15593438029074,4.57703310175725,0.291902621285539,1.6229785743476,0.192655730048456
2023-10-15,17952,407,881,49,253,34,2.2671568627451,4.9075311942959,0.27295008912656,1.4093137254902,0.189393939393939
2023-10-16,22941,355,1182,60,301,65,1.54744780088052,5.15234732574866,0.261540473388257,1.31206137483109,0.283335512837278
2023-10-17,22056,327,1169,85,282,70,1.48258977149075,5.30014508523758,0.38538266231411,1.27856365614799,0.317373957199855
4 changes: 4 additions & 0 deletions Monero-Nonstandard-Fees/data/fee-clusters-by-week.csv
Original file line number Diff line number Diff line change
Expand Up @@ -58,3 +58,7 @@
"2023-36",128558,2136,6488,446,3805,376,1.66150686849515,5.04674932715195,0.346925123290655,2.9597535742622,0.29247499183248
"2023-37",129885,2106,6504,400,4005,391,1.62143434576741,5.00750664048966,0.307964738037495,3.08349693960042,0.301035531431651
"2023-38",127059,1868,6289,433,3641,378,1.47018314326415,4.94966905138558,0.340786563722365,2.86559787185481,0.297499586806129
"2023-39",136061,1997,6748,461,3922,397,1.46772403554288,4.95954020623103,0.338818618119814,2.88253062964406,0.291780892393853
"2023-40",146317,2034,6985,465,4013,442,1.39013238379682,4.77388136716855,0.317803126089245,2.74267515052933,0.302083831680529
"2023-41",139272,2146,6798,516,2833,386,1.54086966511574,4.88109598483543,0.370498018266414,2.03414900338905,0.277155494284565
"2023-42",44997,682,2351,145,583,135,1.51565659932884,5.22479276396204,0.322243705135898,1.29564193168433,0.300020001333422
Loading

0 comments on commit 0fb1ff2

Please sign in to comment.