私はここでかなり新しいので、助けてくれてありがとう。ビットコインのトランザクション チェーン全体を分析しようとしています。そのために、2つのテーブルを作成しようとしています
1) すべてのビットコイン アドレスとその残高の完全なリスト。
| | ID | 住所 | バランス | ------------------------------- | | 1 | 7d4kExk... | 32 | | | 2 | 9Eckjes... | 0 | | | . | | ... | ... |
2) ビットコイン ネットワークの任意の 2 つのアドレス間で発生したトランザクション数の記録
| | ID | 送信者 | 受信機 | 取引 | -------------------------------------------------- | | 1 | 7d4kExk... | klDk39D... | 2 | | | 2 | 9Eckjes... | 7d4kExk... | 3 | | | . | | ... | ... | .. |
これを行うために、すべてのブロックをループし、blockexplorer.com をスクレイピングしてテーブルをコンパイルする (おそらく非常に非効率的な) スクリプトを R で作成しました。これまでに数回実行してみましたが、主な問題が 2 つあります。
1 - 非常に遅い... このペースで少なくとも 1 週間はかかると想像できる
2 - ハングせずに 1 日か 2 日以上実行できませんでした。RStudioをフリーズしているようです。
次の 2 つの分野でご協力をお願いいたします。
1-コードを大幅に高速化するためにRでこれを行うより良い方法はありますか?
2 - このために R の使用を完全にやめて、別のアプローチを試す必要がありますか?
助けてくれてありがとう!私が使用している関連するコードのチャンクについては、以下を参照してください
url_start <- "http://blockexplorer.com/b/"
url_end <- ""
readUrl <- function(url) {
table <- try(readHTMLTable(url)[[1]])
if(inherits(table,"try-error")){
message(paste("URL does not seem to exist:", url))
errors <- errors + 1
return(NA)
} else {
processed <- processed + 1
return(table)
}
}
block_loop <- function (end, start = 0) {
...
addr_row <- 1 #starting row to fill out table
links_row <- 1 #starting row to fill out table
for (i in start:end) {
print(paste0("Reading block: ",i))
url <- paste(url_start,i,url_end, sep = "")
table <- readUrl(url)
if(is.na(table)){ next }
....