Skip to content

Commit

Permalink
Merge pull request #3019 from TrueBlocks/remove-broken-tests
Browse files Browse the repository at this point in the history
Fixes previously broken test cases in various tools
  • Loading branch information
tjayrush committed Jul 5, 2023
2 parents 51bb208 + 68eccc9 commit ce41a32
Show file tree
Hide file tree
Showing 82 changed files with 8,007 additions and 10,998 deletions.
33 changes: 28 additions & 5 deletions src/apps/chifra/internal/blocks/handle_logs.go
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,8 @@ import (
"errors"
"fmt"

"github.com/TrueBlocks/trueblocks-core/src/apps/chifra/pkg/abi"
"github.com/TrueBlocks/trueblocks-core/src/apps/chifra/pkg/articulate"
"github.com/TrueBlocks/trueblocks-core/src/apps/chifra/pkg/base"
"github.com/TrueBlocks/trueblocks-core/src/apps/chifra/pkg/output"
"github.com/TrueBlocks/trueblocks-core/src/apps/chifra/pkg/rpcClient"
Expand All @@ -17,6 +19,9 @@ import (
)

func (opts *BlocksOptions) HandleLogs() error {
abiMap := make(abi.AbiInterfaceMap)
loadedMap := make(map[base.Address]bool)
skipMap := make(map[base.Address]bool)
chain := opts.Globals.Chain

ctx, cancel := context.WithCancel(context.Background())
Expand Down Expand Up @@ -65,6 +70,23 @@ func (opts *BlocksOptions) HandleLogs() error {
for _, log := range logs {
// Note: This is needed because of a GoLang bug when taking the pointer of a loop variable
log := log
if opts.Articulate {
address := log.Address
if !loadedMap[address] && !skipMap[address] {
if err := abi.LoadAbi(chain, address, abiMap); err != nil {
skipMap[address] = true
errorChan <- err // continue even with an error
} else {
loadedMap[address] = true
}
}

if !skipMap[address] {
if log.ArticulatedLog, err = articulate.ArticulateLog(&log, abiMap); err != nil {
errorChan <- err // continue even with an error
}
}
}
if !opts.shouldShow(&log) {
continue
}
Expand All @@ -75,11 +97,12 @@ func (opts *BlocksOptions) HandleLogs() error {
}

extra := map[string]interface{}{
"count": opts.Count,
"uncles": opts.Uncles,
"logs": opts.Logs,
"traces": opts.Traces,
"addresses": opts.Uniq,
"count": opts.Count,
"uncles": opts.Uncles,
"logs": opts.Logs,
"traces": opts.Traces,
"addresses": opts.Uniq,
"articulate": opts.Articulate,
}
return output.StreamMany(ctx, fetchData, opts.Globals.OutputOptsWithExtra(extra))
}
Expand Down
7 changes: 4 additions & 3 deletions src/apps/chifra/internal/blocks/handle_show.go
Original file line number Diff line number Diff line change
Expand Up @@ -57,9 +57,10 @@ func (opts *BlocksOptions) HandleShowBlocks() error {
}

extra := map[string]interface{}{
"hashes": opts.Hashes,
"count": opts.Count,
"uncles": opts.Uncles,
"hashes": opts.Hashes,
"count": opts.Count,
"uncles": opts.Uncles,
"articulate": opts.Articulate,
}
return output.StreamMany(ctx, fetchData, opts.Globals.OutputOptsWithExtra(extra))
}
11 changes: 6 additions & 5 deletions src/apps/chifra/internal/blocks/handle_traces.go
Original file line number Diff line number Diff line change
Expand Up @@ -52,11 +52,12 @@ func (opts *BlocksOptions) HandleTraces() error {
}

extra := map[string]interface{}{
"count": opts.Count,
"uncles": opts.Uncles,
"logs": opts.Logs,
"traces": opts.Traces,
"addresses": opts.Uniq,
"count": opts.Count,
"uncles": opts.Uncles,
"logs": opts.Logs,
"traces": opts.Traces,
"addresses": opts.Uniq,
"articulate": opts.Articulate,
}
return output.StreamMany(ctx, fetchData, opts.Globals.OutputOptsWithExtra(extra))
}
7 changes: 4 additions & 3 deletions src/apps/chifra/internal/blocks/handle_uncles.go
Original file line number Diff line number Diff line change
Expand Up @@ -58,9 +58,10 @@ func (opts *BlocksOptions) HandleUncles() error {
}

extra := map[string]interface{}{
"hashes": opts.Hashes,
"count": opts.Count,
"uncles": opts.Uncles,
"hashes": opts.Hashes,
"count": opts.Count,
"uncles": opts.Uncles,
"articulate": opts.Articulate,
}
return output.StreamMany(ctx, fetchData, opts.Globals.OutputOptsWithExtra(extra))
}
20 changes: 18 additions & 2 deletions src/apps/chifra/pkg/identifiers/resolve.go
Original file line number Diff line number Diff line change
Expand Up @@ -78,6 +78,8 @@ func snapBnToPeriod(bn uint64, chain, period string) (uint64, error) {
if err != nil {
return bn, err
}

// within five minutes of the period, snap to the future, otherwise snap to the past
switch period {
case "hourly":
dt = dt.ShiftMinutes(5)
Expand All @@ -87,11 +89,21 @@ func snapBnToPeriod(bn uint64, chain, period string) (uint64, error) {
dt = dt.FloorDay()
case "weekly":
dt = dt.ShiftMinutes(5)
dt = dt.FloorWeek() // returns Monday -- we want Sunday
dt = dt.ShiftDays(-1).FloorDay()
dt = dt.FloorWeek()
dt = dt.ShiftDays(-1).FloorDay() // returns Monday -- we want Sunday
case "monthly":
dt = dt.ShiftMinutes(5)
dt = dt.FloorMonth()
case "quarterly": // we assume here that the data is already on the quarter
dt = dt.ShiftMinutes(5)
dt = dt.FloorMonth()
for {
if dt.Month() == 1 || dt.Month() == 4 || dt.Month() == 7 || dt.Month() == 10 {
break
}
dt = dt.ShiftMonths(1)
dt = dt.FloorMonth()
}
case "annually":
dt = dt.ShiftMinutes(5)
dt = dt.FloorYear()
Expand Down Expand Up @@ -136,6 +148,10 @@ func (id *Identifier) nextBlock(chain string, current uint64) (uint64, error) {
dt = dt.ShiftMinutes(5)
dt = dt.ShiftMonths(1)
dt = dt.FloorMonth()
case "quarterly":
dt = dt.ShiftMinutes(5)
dt = dt.ShiftMonths(3)
dt = dt.FloorMonth()
case "annually":
dt = dt.ShiftMinutes(5)
dt = dt.ShiftYears(1)
Expand Down
3 changes: 2 additions & 1 deletion src/dev_tools/testRunner/testCases/apps/acctExport.csv
Original file line number Diff line number Diff line change
Expand Up @@ -83,7 +83,8 @@ on ,both ,fast ,monitors ,apps/acctExport ,monitors_clean_2 ,y

on ,both ,fast ,list ,apps/acctExport ,list_prepare_3 ,y ,addrs = 0x00ad1a7b0ef4d3c5070d73b9412b6ed22efb7533 & fmt = json
on ,both ,fast ,monitors ,apps/acctExport ,monitors_list1 ,y ,addrs = 0x00ad1a7b0ef4d3c5070d73b9412b6ed22efb7533 & list & fmt = json
on ,both ,fast ,monitors ,apps/acctExport ,monitors_list1_v ,y ,addrs = 0x00ad1a7b0ef4d3c5070d73b9412b6ed22efb7533 & list & fmt = json & verbose
local ,both ,fast ,monitors ,apps/acctExport ,monitors_list1_v ,y ,addrs = 0x00ad1a7b0ef4d3c5070d73b9412b6ed22efb7533 & list & fmt = json
& verbose
on ,both ,fast ,monitors ,apps/acctExport ,monitors_decache ,y ,addrs = 0x00ad1a7b0ef4d3c5070d73b9412b6ed22efb7533 & decache
on ,both ,fast ,monitors ,apps/acctExport ,monitors_decache_again ,y ,addrs = 0x00ad1a7b0ef4d3c5070d73b9412b6ed22efb7533 & decache
on ,both ,fast ,monitors ,apps/acctExport ,monitors_list2 ,n ,addrs = 0x00ad1a7b0ef4d3c5070d73b9412b6ed22efb7533 & list & fmt = csv
Expand Down
4 changes: 2 additions & 2 deletions src/dev_tools/testRunner/testCases/apps/blockScrape.csv
Original file line number Diff line number Diff line change
Expand Up @@ -9,9 +9,9 @@ on ,both ,fast ,scrape ,apps/blockScrape ,nAProcs_invalid ,n

on ,both ,fast ,scrape ,apps/blockScrape ,nBlocks ,n ,block_cnt = 12
on ,both ,fast ,scrape ,apps/blockScrape ,listpins ,n ,listpins
local ,both ,fast ,scrape ,apps/blockScrape ,pin ,n ,pin
delay ,both ,fast ,scrape ,apps/blockScrape ,pin ,n ,pin
on ,both ,fast ,scrape ,apps/blockScrape ,mode_01_fail ,n ,action = badmode
local ,both ,fast ,scrape ,apps/blockScrape ,real_run ,n ,sleep = .5 & pin & log_level = 8
delay ,both ,fast ,scrape ,apps/blockScrape ,real_run ,n ,sleep = .5 & pin & log_level = 8
on ,both ,fast ,scrape ,apps/blockScrape ,real_run2 ,n ,sleep = .5
on ,api ,fast ,scrape ,apps/blockScrape ,no_tracing ,y ,chain = non-tracing

Expand Down
2 changes: 1 addition & 1 deletion src/dev_tools/testRunner/testCases/apps/chunkMan.csv
Original file line number Diff line number Diff line change
Expand Up @@ -46,7 +46,7 @@ on ,both ,fast ,chunks ,apps/chunkMan ,pin_data_bad2 ,y ,mode
on ,both ,fast ,chunks ,apps/chunkMan ,block_not_found ,y ,mode = index & belongs = 0x0101f3be8ebb4bbd39a2e3b9a3639d4259832fd9 & blocks = 0x0f1217b92276cd17608d4212879739e6a5ec388bd7a03bef9798655234afd2b2

# Seems to be a lot of 'presistance' issues with this test case
local ,both ,fast ,chunks ,apps/chunkMan ,check_okay ,y ,mode = manifest & check
delay ,both ,fast ,chunks ,apps/chunkMan ,check_okay ,y ,mode = manifest & check

on ,both ,fast ,chunks ,apps/chunkMan ,redir_output ,y ,mode = index & blocks = 2000000 & output = output_test_file
on ,both ,fast ,chunks ,apps/chunkMan ,redir_output_append ,n ,mode = index & blocks = 3000000 & output = output_test_file & no_header & append
2 changes: 1 addition & 1 deletion src/dev_tools/testRunner/testCases/dev_tools/makeClass.csv
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ on ,cmd ,fast ,null ,dev_tools/makeClass ,noparams1 ,n ,
on ,cmd ,fast ,null ,dev_tools/makeClass ,noparams2 ,n ,x
on ,cmd ,fast ,null ,dev_tools/makeClass ,nonexist ,n ,@ e & x
on ,cmd ,fast ,null ,dev_tools/makeClass ,conflict1 ,n ,@ e & all
local ,cmd ,fast ,null ,dev_tools/makeClass ,conflict2 ,n ,@ d & all
delay ,cmd ,fast ,null ,dev_tools/makeClass ,conflict2 ,n ,@ d & all
on ,cmd ,fast ,null ,dev_tools/makeClass ,conflict3 ,n ,@ a & edit
on ,cmd ,fast ,null ,dev_tools/makeClass ,edit ,n ,edit @ a & filter = function
on ,cmd ,fast ,null ,dev_tools/makeClass ,run ,n ,all & files = block
Expand Down
14 changes: 7 additions & 7 deletions src/dev_tools/testRunner/testCases/tools/ethNames.csv
Original file line number Diff line number Diff line change
Expand Up @@ -70,15 +70,15 @@ on ,both ,medi ,names ,tools/ethNames ,duplicated_option_1 ,n ,terms
# Various parts of editing names does not work
on ,both ,fast ,names ,tools/ethNames ,edit_invalid ,y ,invalid & fmt = json
on ,both ,fast ,names ,tools/ethNames ,edit_add ,y ,create & fmt = json
local ,both ,fast ,names ,tools/ethNames ,show_add ,y ,terms = 0x0000000000000000000000000000000010101010 & fmt = json
delay ,both ,fast ,names ,tools/ethNames ,show_add ,y ,terms = 0x0000000000000000000000000000000010101010 & fmt = json
on ,both ,fast ,names ,tools/ethNames ,edit_edit ,y ,update & fmt = json
local ,both ,fast ,names ,tools/ethNames ,show_edit ,y ,terms = 0x0000000000000000000000000000000010101010 & fmt = json
delay ,both ,fast ,names ,tools/ethNames ,show_edit ,y ,terms = 0x0000000000000000000000000000000010101010 & fmt = json
on ,both ,fast ,names ,tools/ethNames ,edit_delete ,y ,delete & terms = 0x0000000000000000000000000000000010101010 & fmt = json
local ,both ,fast ,names ,tools/ethNames ,show_delete ,y ,terms = 0x0000000000000000000000000000000010101010 & fmt = json
delay ,both ,fast ,names ,tools/ethNames ,show_delete ,y ,terms = 0x0000000000000000000000000000000010101010 & fmt = json
on ,both ,fast ,names ,tools/ethNames ,edit_undelete ,y ,undelete & terms = 0x0000000000000000000000000000000010101010 & fmt = json
local ,both ,fast ,names ,tools/ethNames ,show_undelete ,y ,terms = 0x0000000000000000000000000000000010101010 & fmt = json
delay ,both ,fast ,names ,tools/ethNames ,show_undelete ,y ,terms = 0x0000000000000000000000000000000010101010 & fmt = json
on ,both ,fast ,names ,tools/ethNames ,edit_remove ,y ,remove & terms = 0x0000000000000000000000000000000010101010 & fmt = json
local ,both ,fast ,names ,tools/ethNames ,show_remove ,y ,terms = 0x0000000000000000000000000000000010101010 & fmt = json
delay ,both ,fast ,names ,tools/ethNames ,show_remove ,y ,terms = 0x0000000000000000000000000000000010101010 & fmt = json

local ,both ,fast ,names ,tools/ethNames ,edit_custom_delete ,y ,delete & terms = 0x054993ab0f2b1acc0fdc65405ee203b4271bebe6 & to_custom & all
local ,both ,fast ,names ,tools/ethNames ,edit_custom_undelete ,y ,undelete & terms = 0x054993ab0f2b1acc0fdc65405ee203b4271bebe6 & to_custom & all
delay ,both ,fast ,names ,tools/ethNames ,edit_custom_delete ,y ,delete & terms = 0x054993ab0f2b1acc0fdc65405ee203b4271bebe6 & to_custom & all
delay ,both ,fast ,names ,tools/ethNames ,edit_custom_undelete ,y ,undelete & terms = 0x054993ab0f2b1acc0fdc65405ee203b4271bebe6 & to_custom & all
36 changes: 19 additions & 17 deletions src/dev_tools/testRunner/testCases/tools/getBlocks.csv
Original file line number Diff line number Diff line change
Expand Up @@ -17,15 +17,15 @@ on ,both ,fast ,blocks ,tools/getBlocks ,special_2 ,y ,blo
on ,both ,fast ,blocks ,tools/getBlocks ,combo_one_range ,y ,blocks = 1590000 4000001-4000002 1001001 1234567
on ,both ,fast ,blocks ,tools/getBlocks ,combo_two_range ,y ,blocks = 1590000 4000001-4000002 1001001-1001100 1234567
on ,both ,medi ,blocks ,tools/getBlocks ,hashes_1 ,y ,blocks = 4001001 & hashes
slow2 ,both ,medi ,blocks ,tools/getBlocks ,address_uniqTx1 ,n ,blocks = 3982128 & uniq
slow ,both ,medi ,blocks ,tools/getBlocks ,address_uniqTx1 ,n ,blocks = 3982128 & uniq
slow ,both ,medi ,blocks ,tools/getBlocks ,mulitBlock_uniq_2630 ,y ,blocks = 3982128-3982133 & uniq & fmt = json
slow ,both ,slow ,blocks ,tools/getBlocks ,byzantium_1 ,y ,blocks = 4369999 4370000 4380101
on ,both ,fast ,blocks ,tools/getBlocks ,blockByHash ,y ,blocks = 0xd19bc98080cd70951fad3951cef2d512e6334aa3c7e64a38985c955d4d2e273b
on ,both ,fast ,blocks ,tools/getBlocks ,miner ,y ,blocks = 1 & uniq & fmt = json
on ,both ,fast ,blocks ,tools/getBlocks ,addrMisconfig ,y ,blocks = 32279 & uniq & verbose
on ,both ,fast ,blocks ,tools/getBlocks ,addrBlockZero ,y ,blocks = 0 & uniq

slow2 ,both ,medi ,blocks ,tools/getBlocks ,uniqTxCnt1 ,y ,blocks = 3982128 & uniq & count & fmt = json & verbose
slow ,both ,medi ,blocks ,tools/getBlocks ,uniqTxCnt1 ,y ,blocks = 3982128 & uniq & count & fmt = json & verbose
on ,both ,fast ,blocks ,tools/getBlocks ,addrCntFail ,y ,blocks = 3982128 & count
on ,both ,fast ,blocks ,tools/getBlocks ,uncles_count ,y ,blocks = 3 469 & uncles & count
on ,both ,medi ,blocks ,tools/getBlocks ,count1 ,y ,blocks = 3 & fmt = json & count
Expand All @@ -34,10 +34,10 @@ on ,both ,medi ,blocks ,tools/getBlocks ,count5 ,y ,blo
on ,both ,medi ,blocks ,tools/getBlocks ,count6 ,y ,blocks = 3 & fmt = json & count & traces & uncles & fmt = txt
on ,both ,medi ,blocks ,tools/getBlocks ,count_uncles_uniq ,y ,blocks = 3 469 & count & uncles & uniq & fmt = json
on ,both ,medi ,blocks ,tools/getBlocks ,count_logs ,y ,blocks = 6001002 & count & traces & uncles & logs & fmt = json
slow2 ,both ,medi ,blocks ,tools/getBlocks ,count_logs_uniq ,y ,blocks = 6001002 & count & logs & uniq & fmt = json
slow2 ,both ,medi ,blocks ,tools/getBlocks ,count_traces_uniq ,y ,blocks = 6001002 & count & traces & uniq & fmt = json
slow2 ,both ,medi ,blocks ,tools/getBlocks ,count_all_uniq ,y ,blocks = 3 6001002 & count & uncles & logs & traces & uniq & fmt = json
slow2 ,both ,medi ,blocks ,tools/getBlocks ,uniqTxCnt2 ,y ,blocks = 1301011-1312011:313 & uniq & count & fmt = json
slow ,both ,medi ,blocks ,tools/getBlocks ,count_logs_uniq ,y ,blocks = 6001002 & count & logs & uniq & fmt = json
slow ,both ,medi ,blocks ,tools/getBlocks ,count_traces_uniq ,y ,blocks = 6001002 & count & traces & uniq & fmt = json
slow ,both ,medi ,blocks ,tools/getBlocks ,count_all_uniq ,y ,blocks = 3 6001002 & count & uncles & logs & traces & uniq & fmt = json
slow ,both ,medi ,blocks ,tools/getBlocks ,uniqTxCnt2 ,y ,blocks = 1301011-1312011:313 & uniq & count & fmt = json
on ,both ,fast ,blocks ,tools/getBlocks ,list_fail ,y ,list = 0 & list_count = 12
on ,both ,fast ,blocks ,tools/getBlocks ,list_list_count ,y ,list = 1000 & list_count = 10
on ,both ,fast ,blocks ,tools/getBlocks ,list_count_block_fail ,y ,list_count = 10 & blocks = 1000
Expand Down Expand Up @@ -69,14 +69,13 @@ on ,both ,fast ,blocks ,tools/getBlocks ,no_cache_uncles ,y ,blo
on ,both ,fast ,blocks ,tools/getBlocks ,no_cache_uniq ,y ,blocks = 4012000-4012001 & cache & uniq
on ,both ,fast ,blocks ,tools/getBlocks ,no_trace_hashes ,y ,blocks = 4012000-4012001 & traces & hashes
on ,both ,fast ,blocks ,tools/getBlocks ,no_trace_uniq ,y ,blocks = 4012000-4012001 & traces & uniq
on ,both ,fast ,blocks ,tools/getBlocks ,artic_not_logs ,y ,blocks = 4012000-4012001 & articulate
on ,both ,fast ,blocks ,tools/getBlocks ,bigrange_not_logs ,y ,blocks = 4012000-4012001 & big_range = 100

on ,both ,fast ,blocks ,tools/getBlocks ,access_list ,y ,blocks = 16500011 & fmt = json & raw

on ,both ,fast ,blocks ,tools/getBlocks ,flow_error_1 ,n ,blocks = 4102000 & fmt = txt & flow = to
slow2 ,both ,fast ,blocks ,tools/getBlocks ,flow_uniq_from ,n ,blocks = 4102000 & fmt = txt & uniq & flow = from
slow2 ,both ,fast ,blocks ,tools/getBlocks ,flow_uniq_reward ,n ,blocks = 4102000 & fmt = txt & uniq & flow = reward
slow ,both ,fast ,blocks ,tools/getBlocks ,flow_uniq_from ,n ,blocks = 4102000 & fmt = txt & uniq & flow = from
slow ,both ,fast ,blocks ,tools/getBlocks ,flow_uniq_reward ,n ,blocks = 4102000 & fmt = txt & uniq & flow = reward

on ,both ,fast ,blocks ,tools/getBlocks ,list_block_fail ,y ,list = 1000 & blocks = 1000

Expand All @@ -86,17 +85,20 @@ on ,both ,fast ,blocks ,tools/getBlocks ,raw_01 ,y ,blo
on ,both ,slow ,blocks ,tools/getBlocks ,terse_no_raw ,y ,blocks = 4001001-4001003 & hashes
on ,both ,fast ,blocks ,tools/getBlocks ,terse_yes_raw ,y ,blocks = 4001001 & hashes & raw

on ,both ,fast ,blocks ,tools/getBlocks ,artic_not_logs ,y ,blocks = 4012000-4012001 & articulate
on ,both ,fast ,blocks ,tools/getBlocks ,with_logs_art ,y ,blocks = 4012000-4012001 & logs & articulate
on ,both ,fast ,blocks ,tools/getBlocks ,with_traces_art ,y ,blocks = 4012000-4012001 & traces & articulate
on ,both ,fast ,blocks ,tools/getBlocks ,with_uncles_art ,y ,blocks = 4012000-4012001 & uncles & articulate
on ,both ,fast ,blocks ,tools/getBlocks ,with_hashes_art ,y ,blocks = 4012000-4012001 & hashes & articulate
on ,both ,fast ,blocks ,tools/getBlocks ,with_logs_csv_art ,n ,blocks = 4012000-4012001 & logs & fmt = csv & articulate

# We should support reconcilations for chifra blocks
delay ,both ,fast ,blocks ,tools/getBlocks ,reconcile_miner ,y ,blocks = 3 & fmt = json & account_for = 0x5088d623ba0fcf0131e0897a91734a4d83596aa0
delay ,both ,fast ,blocks ,tools/getBlocks ,reconcile_uncle ,y ,blocks = 3 & fmt = json & account_for = 0xc8ebccc5f5689fa8659d83713341e5ad19349448

# These fail because they do not create value JSON
file_cmd ,cmd ,fast ,blocks ,tools/getBlocks ,cmd_file1 ,n ,file = cmd_file1 & cache
file_cmd ,cmd ,fast ,blocks ,tools/getBlocks ,cmd_file2 ,n ,file = cmd_file2 & cache

on ,both ,fast ,blocks ,tools/getBlocks ,redir_output ,n ,blocks = 1001001-1001005 & fmt = csv & output = output_test_file
on ,both ,fast ,blocks ,tools/getBlocks ,redir_output_append ,n ,blocks = 1001005-1001010 & fmt = csv & output = output_test_file & no_header & append

# Not sure why these fail remotely only
local ,both ,fast ,blocks ,tools/getBlocks ,with_logs_art ,y ,blocks = 4012000-4012001 & logs & articulate
local ,both ,fast ,blocks ,tools/getBlocks ,with_logs_csv_art ,n ,blocks = 4012000-4012001 & logs & fmt = csv & articulate

# Blocks could easily have reconcilations
local ,both ,fast ,blocks ,tools/getBlocks ,reconcile_miner ,y ,blocks = 3 & fmt = json & account_for = 0x5088d623ba0fcf0131e0897a91734a4d83596aa0
local ,both ,fast ,blocks ,tools/getBlocks ,reconcile_uncle ,y ,blocks = 3 & fmt = json & account_for = 0xc8ebccc5f5689fa8659d83713341e5ad19349448

0 comments on commit ce41a32

Please sign in to comment.