-
Notifications
You must be signed in to change notification settings - Fork 0
/
tx.R
99 lines (92 loc) · 2.38 KB
/
tx.R
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
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
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
source("db.R")
library(tidyverse)
multisig_tx <- tx_tbl %>%
inner_join(
script_tbl,
by = c("id" = "tx_id"),
suffix = c("", ".script")
) %>%
inner_join(
block_tbl,
by = c("block_id" = "id"),
suffix = c("", ".block")
) %>%
left_join(
ma_tx_mint_tbl,
by = c("id" = "tx_id"),
suffix = c("", ".ma_tx_mint")
) %>%
filter(type == "timelock") %>%
transmute(
id,
id.ma_tx_mint,
mint = !is.na(id.ma_tx_mint),
slot_no,
date = as.Date(time)
)
non_minting_multisig_tx <- tx_tbl %>%
inner_join(
script_tbl,
by = c("id" = "tx_id"),
suffix = c("", ".script")
) %>%
inner_join(
block_tbl,
by = c("block_id" = "id"),
suffix = c("", ".block")
) %>%
anti_join(
ma_tx_mint_tbl,
by = c("id" = "tx_id")
) %>%
filter(type == "timelock") %>%
transmute(
id,
slot_no,
date = as.Date(time)
)
aggregate_tx_stats <- function(data) {
data %>%
group_by(date, mint) %>%
summarise(count = n()) %>%
collect() %>%
mutate(count = as.numeric(count)) %>%
ungroup() %>%
pivot_wider(names_from = mint, values_from = count, values_fill = 0) %>%
mutate(Mint = cumsum(`TRUE`), `Not Mint` = cumsum(`FALSE`)) %>%
pivot_longer(
c(Mint, `Not Mint`),
names_to = "Type",
values_to = "count"
)
}
plot_multisig_cum_count <- function(data) {
data %>%
ggplot(aes(date, count, fill = Type)) +
geom_area() +
labs(
title = "Multi-sig Transactions on Cardano chain",
subtitle = "Transactions with native script",
x = "Date",
y = "Cumulative Count"
) +
scale_x_date(breaks = "month")
}
unspent_assets <- utxo_tbl %>%
inner_join(
ma_tx_out_tbl,
by = c("id" = "tx_out_id")
) %>%
left_join(multi_asset_tbl, by = c("ident" = "id"))
coin_transfers <- tx_out_tbl %>%
inner_join(
tx_in_tbl,
by = c("tx_id" = "tx_in_id"),
suffix = c(".tx_out", ".tx_in")
) %>%
inner_join(
tx_out_tbl,
by = c("tx_out_id" = "id", "tx_out_index" = "index"),
suffix = c("", ".tx_in_out")
) %>%
filter(payment_cred != `payment_cred.tx_in_out`)