mirror of
https://github.com/Rucknium/misc-research.git
synced 2025-05-06 19:42:12 +00:00
Better curl for p2pool-output-stats
This commit is contained in:
parent
1127f0f7ef
commit
598e5bcf38
1 changed files with 14 additions and 6 deletions
|
@ -31,6 +31,7 @@ xmr.rpc <- function(
|
||||||
num.as.string = FALSE,
|
num.as.string = FALSE,
|
||||||
nonce.as.string = FALSE,
|
nonce.as.string = FALSE,
|
||||||
keep.trying.rpc = FALSE,
|
keep.trying.rpc = FALSE,
|
||||||
|
curl = RCurl::getCurlHandle(),
|
||||||
...
|
...
|
||||||
){
|
){
|
||||||
|
|
||||||
|
@ -49,7 +50,8 @@ xmr.rpc <- function(
|
||||||
postfields = json.ret,
|
postfields = json.ret,
|
||||||
httpheader = c('Content-Type' = 'application/json', Accept = 'application/json')
|
httpheader = c('Content-Type' = 'application/json', Accept = 'application/json')
|
||||||
# https://stackoverflow.com/questions/19267261/timeout-while-reading-csv-file-from-url-in-r
|
# https://stackoverflow.com/questions/19267261/timeout-while-reading-csv-file-from-url-in-r
|
||||||
)
|
),
|
||||||
|
curl = curl
|
||||||
), error = function(e) {NULL})
|
), error = function(e) {NULL})
|
||||||
|
|
||||||
if (keep.trying.rpc && length(rcp.ret) == 0) {
|
if (keep.trying.rpc && length(rcp.ret) == 0) {
|
||||||
|
@ -60,7 +62,8 @@ xmr.rpc <- function(
|
||||||
postfields = json.ret,
|
postfields = json.ret,
|
||||||
httpheader = c('Content-Type' = 'application/json', Accept = 'application/json')
|
httpheader = c('Content-Type' = 'application/json', Accept = 'application/json')
|
||||||
# https://stackoverflow.com/questions/19267261/timeout-while-reading-csv-file-from-url-in-r
|
# https://stackoverflow.com/questions/19267261/timeout-while-reading-csv-file-from-url-in-r
|
||||||
)
|
),
|
||||||
|
curl = curl
|
||||||
), error = function(e) {NULL})
|
), error = function(e) {NULL})
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -81,13 +84,14 @@ xmr.rpc <- function(
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
get.coinbase.tx.size <- function(miner_tx_hash) {
|
get.coinbase.tx.size <- function(miner_tx_hash, curl = RCurl::getCurlHandle()) {
|
||||||
|
|
||||||
rcp.ret <- RCurl::postForm("http://127.0.0.1:18081/get_transactions",
|
rcp.ret <- RCurl::postForm("http://127.0.0.1:18081/get_transactions",
|
||||||
.opts = list(
|
.opts = list(
|
||||||
postfields = paste0('{"txs_hashes":["', miner_tx_hash, '"]}'),
|
postfields = paste0('{"txs_hashes":["', miner_tx_hash, '"]}'),
|
||||||
httpheader = c('Content-Type' = 'application/json', Accept = 'application/json')
|
httpheader = c('Content-Type' = 'application/json', Accept = 'application/json')
|
||||||
)
|
),
|
||||||
|
curl = curl
|
||||||
)
|
)
|
||||||
|
|
||||||
rcp.ret <- RJSONIO::fromJSON(rcp.ret, asText = TRUE)
|
rcp.ret <- RJSONIO::fromJSON(rcp.ret, asText = TRUE)
|
||||||
|
@ -117,22 +121,26 @@ blocks <- block.start:block.stop
|
||||||
|
|
||||||
detect.p2pool <- vector("list", length(blocks))
|
detect.p2pool <- vector("list", length(blocks))
|
||||||
|
|
||||||
|
curl.handle <- RCurl::getCurlHandle()
|
||||||
|
|
||||||
for (i in seq_along(blocks)) {
|
for (i in seq_along(blocks)) {
|
||||||
|
|
||||||
block.data <- xmr.rpc(method = "get_block",
|
block.data <- xmr.rpc(method = "get_block",
|
||||||
params = list(height = blocks[i]))$result
|
params = list(height = blocks[i]), curl = curl.handle)$result
|
||||||
|
|
||||||
miner_tx_hash <- block.data$miner_tx_hash
|
miner_tx_hash <- block.data$miner_tx_hash
|
||||||
|
|
||||||
block.data <- RJSONIO::fromJSON(block.data$json, asText = TRUE)
|
block.data <- RJSONIO::fromJSON(block.data$json, asText = TRUE)
|
||||||
|
|
||||||
|
coinbase.tx.size <- get.coinbase.tx.size(miner_tx_hash, curl = curl.handle)
|
||||||
|
|
||||||
detect.p2pool[[i]] <- data.table::data.table(
|
detect.p2pool[[i]] <- data.table::data.table(
|
||||||
block_height = blocks[i],
|
block_height = blocks[i],
|
||||||
timestamp = block.data$timestamp,
|
timestamp = block.data$timestamp,
|
||||||
is_p2pool = grepl("(X3X32X)|(X3X32$)", paste0(block.data$miner_tx$extra, collapse = "X")),
|
is_p2pool = grepl("(X3X32X)|(X3X32$)", paste0(block.data$miner_tx$extra, collapse = "X")),
|
||||||
# tx_extra with "3" followed by "32" indicates merge mining with p2pool
|
# tx_extra with "3" followed by "32" indicates merge mining with p2pool
|
||||||
n_outputs = length(block.data$miner_tx$vout),
|
n_outputs = length(block.data$miner_tx$vout),
|
||||||
tx_size_bytes = get.coinbase.tx.size(miner_tx_hash)
|
tx_size_bytes = coinbase.tx.size
|
||||||
)
|
)
|
||||||
if (blocks[i] %% 1000 == 0) {
|
if (blocks[i] %% 1000 == 0) {
|
||||||
cat("Block", blocks[i], "processed\n")
|
cat("Block", blocks[i], "processed\n")
|
||||||
|
|
Loading…
Reference in a new issue