diff --git a/.golangci.yml b/.golangci.yml
index 0594670137..8e597f950a 100644
--- a/.golangci.yml
+++ b/.golangci.yml
@@ -16,6 +16,7 @@ linters:
enable:
- asciicheck # check for non-ascii characters
- errorlint # enure error wrapping is safely done
+ - gci # keep imports sorted deterministically
- gocritic # check for certain simplifications
- gofmt # ensure code is formatted
- gosec # check for security concerns
@@ -30,6 +31,13 @@ linters-settings:
#
check-type-assertions: true
+ gci:
+ sections:
+ - standard
+ - default
+ - prefix(github.com/ethereum/go-ethereum)
+ - prefix(github.com/offchainlabs)
+
gocritic:
disabled-tags:
- experimental
diff --git a/arbcompress/native.go b/arbcompress/native.go
index f7b8f0b8e0..943d21e89e 100644
--- a/arbcompress/native.go
+++ b/arbcompress/native.go
@@ -12,6 +12,7 @@ package arbcompress
#include "arbitrator.h"
*/
import "C"
+
import (
"errors"
"fmt"
diff --git a/arbitrator/bench/src/bin.rs b/arbitrator/bench/src/bin.rs
index 60a7036e2b..f9bd85ce53 100644
--- a/arbitrator/bench/src/bin.rs
+++ b/arbitrator/bench/src/bin.rs
@@ -18,13 +18,13 @@ use prover::prepare::prepare_machine;
#[derive(Parser, Debug)]
#[command(author, version, about, long_about = None)]
struct Args {
- /// Path to a preimages text file
+ /// Path to a preimages json file
#[arg(short, long)]
- preimages_path: PathBuf,
+ json_inputs: PathBuf,
/// Path to a machine.wavm.br
#[arg(short, long)]
- machine_path: PathBuf,
+ binary: PathBuf,
}
fn main() -> eyre::Result<()> {
@@ -33,7 +33,7 @@ fn main() -> eyre::Result<()> {
println!("Running benchmark with always merkleize feature on");
for step_size in step_sizes {
- let mut machine = prepare_machine(args.preimages_path.clone(), args.machine_path.clone())?;
+ let mut machine = prepare_machine(args.json_inputs.clone(), args.binary.clone())?;
let _ = machine.hash();
let mut hash_times = vec![];
let mut step_times = vec![];
diff --git a/arbitrator/prover/test-cases/dynamic.wat b/arbitrator/prover/test-cases/dynamic.wat
index 8771bde87c..5de0dbdca1 100644
--- a/arbitrator/prover/test-cases/dynamic.wat
+++ b/arbitrator/prover/test-cases/dynamic.wat
@@ -12,7 +12,7 @@
;; WAVM Module hash
(data (i32.const 0x000)
- "\a1\49\cf\81\13\ff\9c\95\f2\c8\c2\a1\42\35\75\36\7d\e8\6d\d4\22\d8\71\14\bb\9e\a4\7b\af\53\5d\d7") ;; user
+ "\ae\87\91\cf\6a\c4\55\ff\28\06\b9\55\d5\a7\36\e8\1b\c7\91\f7\93\8a\22\a4\08\23\25\16\37\01\48\25") ;; user
(func $start (local $user i32) (local $internals i32)
;; link in user.wat
i32.const 0
diff --git a/arbitrator/prover/test-cases/go/main.go b/arbitrator/prover/test-cases/go/main.go
index 1f81553af2..b959454d26 100644
--- a/arbitrator/prover/test-cases/go/main.go
+++ b/arbitrator/prover/test-cases/go/main.go
@@ -73,7 +73,7 @@ const BYTES_PER_FIELD_ELEMENT = 32
var BLS_MODULUS, _ = new(big.Int).SetString("52435875175126190479447740508185965837690552500527637822603658699938581184513", 10)
-var stylusModuleHash = common.HexToHash("a149cf8113ff9c95f2c8c2a1423575367de86dd422d87114bb9ea47baf535dd7") // user.wat
+var stylusModuleHash = common.HexToHash("ae8791cf6ac455ff2806b955d5a736e81bc791f7938a22a40823251637014825") // user.wat
func callStylusProgram(recurse int) {
evmData := programs.EvmData{}
diff --git a/arbitrator/prover/test-cases/link.wat b/arbitrator/prover/test-cases/link.wat
index ef15326481..85490a40b1 100644
--- a/arbitrator/prover/test-cases/link.wat
+++ b/arbitrator/prover/test-cases/link.wat
@@ -30,7 +30,7 @@
(data (i32.const 0x140)
"\47\f7\4f\9c\21\51\4f\52\24\ea\d3\37\5c\bf\a9\1b\1a\5f\ef\22\a5\2a\60\30\c5\52\18\90\6b\b1\51\e5") ;; iops
(data (i32.const 0x160)
- "\a1\49\cf\81\13\ff\9c\95\f2\c8\c2\a1\42\35\75\36\7d\e8\6d\d4\22\d8\71\14\bb\9e\a4\7b\af\53\5d\d7") ;; user
+ "\ae\87\91\cf\6a\c4\55\ff\28\06\b9\55\d5\a7\36\e8\1b\c7\91\f7\93\8a\22\a4\08\23\25\16\37\01\48\25") ;; user
(data (i32.const 0x180)
"\ee\47\08\f6\47\b2\10\88\1f\89\86\e7\e3\79\6b\b2\77\43\f1\4e\ee\cf\45\4a\9b\7c\d7\c4\5b\63\b6\d7") ;; return
diff --git a/arbitrator/prover/test-cases/user.wat b/arbitrator/prover/test-cases/user.wat
index 9ecb4dcc45..694d2f3ed8 100644
--- a/arbitrator/prover/test-cases/user.wat
+++ b/arbitrator/prover/test-cases/user.wat
@@ -22,6 +22,12 @@
i32.const 0xFFFFFF
i32.load
)
+ (func $infinite_loop (result i32)
+ (loop $loop
+ br $loop
+ )
+ unreachable
+ )
(func (export "user_entrypoint") (param $args_len i32) (result i32)
;; this func uses $args_len to select which func to call
@@ -43,6 +49,12 @@
(then (call $out_of_bounds) (return))
)
+ ;; reverts due to an out-of-gas error
+ (i32.eq (local.get $args_len) (i32.const 4))
+ (if
+ (then (call $infinite_loop) (return))
+ )
+
(i32.eq (local.get $args_len) (i32.const 32))
(if
(then (call $storage_load) (return))
diff --git a/arbitrator/stylus/tests/hostio-test/src/main.rs b/arbitrator/stylus/tests/hostio-test/src/main.rs
index 17a5d10266..47b46daad2 100644
--- a/arbitrator/stylus/tests/hostio-test/src/main.rs
+++ b/arbitrator/stylus/tests/hostio-test/src/main.rs
@@ -204,4 +204,37 @@ impl HostioTest {
fn tx_origin() -> Result
{
Ok(tx::origin())
}
+
+ fn storage_cache_bytes32() {
+ let key = B256::ZERO;
+ let val = B256::ZERO;
+ unsafe {
+ hostio::storage_cache_bytes32(key.as_ptr(), val.as_ptr());
+ }
+ }
+
+ fn pay_for_memory_grow(pages: U256) {
+ let pages: u16 = pages.try_into().unwrap();
+ unsafe {
+ hostio::pay_for_memory_grow(pages);
+ }
+ }
+
+ fn write_result_empty() {
+ }
+
+ fn write_result(size: U256) -> Result> {
+ let size: usize = size.try_into().unwrap();
+ let data = vec![0; size];
+ Ok(data)
+ }
+
+ fn read_args_no_args() {
+ }
+
+ fn read_args_one_arg(_arg1: U256) {
+ }
+
+ fn read_args_three_args(_arg1: U256, _arg2: U256, _arg3: U256) {
+ }
}
diff --git a/arbitrator/wasm-libraries/user-host-trait/src/lib.rs b/arbitrator/wasm-libraries/user-host-trait/src/lib.rs
index 35a4a31347..2f410849fc 100644
--- a/arbitrator/wasm-libraries/user-host-trait/src/lib.rs
+++ b/arbitrator/wasm-libraries/user-host-trait/src/lib.rs
@@ -936,7 +936,7 @@ pub trait UserHost: GasMeteredMachine {
fn pay_for_memory_grow(&mut self, pages: u16) -> Result<(), Self::Err> {
if pages == 0 {
self.buy_ink(HOSTIO_INK)?;
- return Ok(());
+ return trace!("pay_for_memory_grow", self, be!(pages), &[]);
}
let gas_cost = self.evm_api().add_pages(pages); // no sentry needed since the work happens after the hostio
self.buy_gas(gas_cost)?;
diff --git a/arbnode/api.go b/arbnode/api.go
index 2dabd41bff..55dc92434f 100644
--- a/arbnode/api.go
+++ b/arbnode/api.go
@@ -8,6 +8,7 @@ import (
"github.com/ethereum/go-ethereum/common"
"github.com/ethereum/go-ethereum/common/hexutil"
"github.com/ethereum/go-ethereum/ethdb"
+
"github.com/offchainlabs/nitro/arbutil"
"github.com/offchainlabs/nitro/staker"
"github.com/offchainlabs/nitro/validator"
diff --git a/arbnode/batch_poster.go b/arbnode/batch_poster.go
index 46a0160b71..a3256cb78f 100644
--- a/arbnode/batch_poster.go
+++ b/arbnode/batch_poster.go
@@ -203,11 +203,15 @@ func (c *BatchPosterConfig) Validate() error {
type BatchPosterConfigFetcher func() *BatchPosterConfig
+func DangerousBatchPosterConfigAddOptions(prefix string, f *pflag.FlagSet) {
+ f.Bool(prefix+".allow-posting-first-batch-when-sequencer-message-count-mismatch", DefaultBatchPosterConfig.Dangerous.AllowPostingFirstBatchWhenSequencerMessageCountMismatch, "allow posting the first batch even if sequence number doesn't match chain (useful after force-inclusion)")
+}
+
func BatchPosterConfigAddOptions(prefix string, f *pflag.FlagSet) {
f.Bool(prefix+".enable", DefaultBatchPosterConfig.Enable, "enable posting batches to l1")
f.Bool(prefix+".disable-dap-fallback-store-data-on-chain", DefaultBatchPosterConfig.DisableDapFallbackStoreDataOnChain, "If unable to batch to DA provider, disable fallback storing data on chain")
- f.Int(prefix+".max-size", DefaultBatchPosterConfig.MaxSize, "maximum batch size")
- f.Int(prefix+".max-4844-batch-size", DefaultBatchPosterConfig.Max4844BatchSize, "maximum 4844 blob enabled batch size")
+ f.Int(prefix+".max-size", DefaultBatchPosterConfig.MaxSize, "maximum estimated compressed batch size")
+ f.Int(prefix+".max-4844-batch-size", DefaultBatchPosterConfig.Max4844BatchSize, "maximum estimated compressed 4844 blob enabled batch size")
f.Duration(prefix+".max-delay", DefaultBatchPosterConfig.MaxDelay, "maximum batch posting delay")
f.Bool(prefix+".wait-for-max-delay", DefaultBatchPosterConfig.WaitForMaxDelay, "wait for the max batch delay, even if the batch is full")
f.Duration(prefix+".poll-interval", DefaultBatchPosterConfig.PollInterval, "how long to wait after no batches are ready to be posted before checking again")
@@ -229,6 +233,7 @@ func BatchPosterConfigAddOptions(prefix string, f *pflag.FlagSet) {
redislock.AddConfigOptions(prefix+".redis-lock", f)
dataposter.DataPosterConfigAddOptions(prefix+".data-poster", f, dataposter.DefaultDataPosterConfig)
genericconf.WalletConfigAddOptions(prefix+".parent-chain-wallet", f, DefaultBatchPosterConfig.ParentChainWallet.Pathname)
+ DangerousBatchPosterConfigAddOptions(prefix+".dangerous", f)
}
var DefaultBatchPosterConfig = BatchPosterConfig{
@@ -280,7 +285,7 @@ var TestBatchPosterConfig = BatchPosterConfig{
DASRetentionPeriod: daprovider.DefaultDASRetentionPeriod,
GasRefunderAddress: "",
ExtraBatchGas: 10_000,
- Post4844Blobs: true,
+ Post4844Blobs: false,
IgnoreBlobPrice: false,
DataPoster: dataposter.TestDataPosterConfig,
ParentChainWallet: DefaultBatchPosterL1WalletConfig,
diff --git a/arbnode/dataposter/data_poster.go b/arbnode/dataposter/data_poster.go
index 373d247696..65d8f579fa 100644
--- a/arbnode/dataposter/data_poster.go
+++ b/arbnode/dataposter/data_poster.go
@@ -20,10 +20,15 @@ import (
"time"
"github.com/Knetic/govaluate"
+ "github.com/holiman/uint256"
+ "github.com/redis/go-redis/v9"
+ "github.com/spf13/pflag"
+
"github.com/ethereum/go-ethereum/accounts/abi/bind"
"github.com/ethereum/go-ethereum/common"
"github.com/ethereum/go-ethereum/common/hexutil"
"github.com/ethereum/go-ethereum/consensus/misc/eip4844"
+ "github.com/ethereum/go-ethereum/core/txpool"
"github.com/ethereum/go-ethereum/core/types"
"github.com/ethereum/go-ethereum/crypto/kzg4844"
"github.com/ethereum/go-ethereum/ethclient"
@@ -34,9 +39,10 @@ import (
"github.com/ethereum/go-ethereum/rlp"
"github.com/ethereum/go-ethereum/rpc"
"github.com/ethereum/go-ethereum/signer/core/apitypes"
- "github.com/holiman/uint256"
+
"github.com/offchainlabs/nitro/arbnode/dataposter/dbstorage"
"github.com/offchainlabs/nitro/arbnode/dataposter/noop"
+ redisstorage "github.com/offchainlabs/nitro/arbnode/dataposter/redis"
"github.com/offchainlabs/nitro/arbnode/dataposter/slice"
"github.com/offchainlabs/nitro/arbnode/dataposter/storage"
"github.com/offchainlabs/nitro/util/arbmath"
@@ -45,10 +51,6 @@ import (
"github.com/offchainlabs/nitro/util/rpcclient"
"github.com/offchainlabs/nitro/util/signature"
"github.com/offchainlabs/nitro/util/stopwaiter"
- "github.com/redis/go-redis/v9"
- "github.com/spf13/pflag"
-
- redisstorage "github.com/offchainlabs/nitro/arbnode/dataposter/redis"
)
var (
@@ -1087,7 +1089,7 @@ func (p *DataPoster) updateBalance(ctx context.Context) error {
return nil
}
-const maxConsecutiveIntermittentErrors = 10
+const maxConsecutiveIntermittentErrors = 20
func (p *DataPoster) maybeLogError(err error, tx *storage.QueuedTransaction, msg string) {
nonce := tx.FullTx.Nonce()
@@ -1096,10 +1098,17 @@ func (p *DataPoster) maybeLogError(err error, tx *storage.QueuedTransaction, msg
return
}
logLevel := log.Error
- if errors.Is(err, storage.ErrStorageRace) {
+ isStorageRace := errors.Is(err, storage.ErrStorageRace)
+ if isStorageRace || strings.Contains(err.Error(), txpool.ErrFutureReplacePending.Error()) {
p.errorCount[nonce]++
if p.errorCount[nonce] <= maxConsecutiveIntermittentErrors {
- logLevel = log.Debug
+ if isStorageRace {
+ logLevel = log.Debug
+ } else {
+ logLevel = log.Info
+ }
+ } else if isStorageRace {
+ logLevel = log.Warn
}
} else {
delete(p.errorCount, nonce)
diff --git a/arbnode/dataposter/dataposter_test.go b/arbnode/dataposter/dataposter_test.go
index 7bf0f86e6f..dc5df1a6c4 100644
--- a/arbnode/dataposter/dataposter_test.go
+++ b/arbnode/dataposter/dataposter_test.go
@@ -9,6 +9,9 @@ import (
"time"
"github.com/Knetic/govaluate"
+ "github.com/google/go-cmp/cmp"
+ "github.com/holiman/uint256"
+
"github.com/ethereum/go-ethereum/accounts/abi/bind"
"github.com/ethereum/go-ethereum/common"
"github.com/ethereum/go-ethereum/common/hexutil"
@@ -17,8 +20,7 @@ import (
"github.com/ethereum/go-ethereum/log"
"github.com/ethereum/go-ethereum/params"
"github.com/ethereum/go-ethereum/rpc"
- "github.com/google/go-cmp/cmp"
- "github.com/holiman/uint256"
+
"github.com/offchainlabs/nitro/arbnode/dataposter/externalsignertest"
"github.com/offchainlabs/nitro/util/arbmath"
)
diff --git a/arbnode/dataposter/dbstorage/storage.go b/arbnode/dataposter/dbstorage/storage.go
index 6a6cd3cfa4..88989cf757 100644
--- a/arbnode/dataposter/dbstorage/storage.go
+++ b/arbnode/dataposter/dbstorage/storage.go
@@ -11,6 +11,7 @@ import (
"strconv"
"github.com/ethereum/go-ethereum/ethdb"
+
"github.com/offchainlabs/nitro/arbnode/dataposter/storage"
"github.com/offchainlabs/nitro/util/dbutil"
)
diff --git a/arbnode/dataposter/externalsignertest/externalsignertest.go b/arbnode/dataposter/externalsignertest/externalsignertest.go
index 554defc764..51ccec1903 100644
--- a/arbnode/dataposter/externalsignertest/externalsignertest.go
+++ b/arbnode/dataposter/externalsignertest/externalsignertest.go
@@ -22,6 +22,7 @@ import (
"github.com/ethereum/go-ethereum/common/hexutil"
"github.com/ethereum/go-ethereum/rpc"
"github.com/ethereum/go-ethereum/signer/core/apitypes"
+
"github.com/offchainlabs/nitro/util/testhelpers"
)
diff --git a/arbnode/dataposter/redis/redisstorage.go b/arbnode/dataposter/redis/redisstorage.go
index b54abf618b..364f9fc85c 100644
--- a/arbnode/dataposter/redis/redisstorage.go
+++ b/arbnode/dataposter/redis/redisstorage.go
@@ -9,9 +9,10 @@ import (
"errors"
"fmt"
+ "github.com/redis/go-redis/v9"
+
"github.com/offchainlabs/nitro/arbnode/dataposter/storage"
"github.com/offchainlabs/nitro/util/signature"
- "github.com/redis/go-redis/v9"
)
// Storage implements redis sorted set backed storage. It does not support
diff --git a/arbnode/dataposter/storage/storage.go b/arbnode/dataposter/storage/storage.go
index 8e5a7e1798..dfd4c2745c 100644
--- a/arbnode/dataposter/storage/storage.go
+++ b/arbnode/dataposter/storage/storage.go
@@ -12,6 +12,7 @@ import (
"github.com/ethereum/go-ethereum/core/types"
"github.com/ethereum/go-ethereum/log"
"github.com/ethereum/go-ethereum/rlp"
+
"github.com/offchainlabs/nitro/arbutil"
)
diff --git a/arbnode/dataposter/storage_test.go b/arbnode/dataposter/storage_test.go
index c6316caea7..cd4e4babae 100644
--- a/arbnode/dataposter/storage_test.go
+++ b/arbnode/dataposter/storage_test.go
@@ -9,12 +9,14 @@ import (
"path"
"testing"
+ "github.com/google/go-cmp/cmp"
+ "github.com/google/go-cmp/cmp/cmpopts"
+
"github.com/ethereum/go-ethereum/common"
"github.com/ethereum/go-ethereum/core/rawdb"
"github.com/ethereum/go-ethereum/core/types"
"github.com/ethereum/go-ethereum/rlp"
- "github.com/google/go-cmp/cmp"
- "github.com/google/go-cmp/cmp/cmpopts"
+
"github.com/offchainlabs/nitro/arbnode/dataposter/dbstorage"
"github.com/offchainlabs/nitro/arbnode/dataposter/redis"
"github.com/offchainlabs/nitro/arbnode/dataposter/slice"
diff --git a/arbnode/delayed.go b/arbnode/delayed.go
index 354fa671b3..f28a9617a3 100644
--- a/arbnode/delayed.go
+++ b/arbnode/delayed.go
@@ -334,7 +334,11 @@ func (b *DelayedBridge) parseMessage(ctx context.Context, ethLog types.Log) (*bi
if err != nil {
return nil, nil, err
}
- return parsedLog.MessageNum, args["messageData"].([]byte), nil
+ dataBytes, ok := args["messageData"].([]byte)
+ if !ok {
+ return nil, nil, errors.New("messageData not a byte array")
+ }
+ return parsedLog.MessageNum, dataBytes, nil
default:
return nil, nil, errors.New("unexpected log type")
}
diff --git a/arbnode/delayed_seq_reorg_test.go b/arbnode/delayed_seq_reorg_test.go
index 699eb3e8f6..f821d71e63 100644
--- a/arbnode/delayed_seq_reorg_test.go
+++ b/arbnode/delayed_seq_reorg_test.go
@@ -10,6 +10,7 @@ import (
"github.com/ethereum/go-ethereum/common"
"github.com/ethereum/go-ethereum/core/types"
+
"github.com/offchainlabs/nitro/arbos/arbostypes"
"github.com/offchainlabs/nitro/solgen/go/bridgegen"
)
diff --git a/arbnode/delayed_sequencer.go b/arbnode/delayed_sequencer.go
index b29a66dd05..abd24dbd12 100644
--- a/arbnode/delayed_sequencer.go
+++ b/arbnode/delayed_sequencer.go
@@ -10,10 +10,11 @@ import (
"math/big"
"sync"
+ flag "github.com/spf13/pflag"
+
"github.com/ethereum/go-ethereum/common"
"github.com/ethereum/go-ethereum/core/types"
"github.com/ethereum/go-ethereum/log"
- flag "github.com/spf13/pflag"
"github.com/offchainlabs/nitro/arbos/arbostypes"
"github.com/offchainlabs/nitro/execution"
diff --git a/arbnode/inbox_reader.go b/arbnode/inbox_reader.go
index 14ca83ab13..50893ca392 100644
--- a/arbnode/inbox_reader.go
+++ b/arbnode/inbox_reader.go
@@ -13,10 +13,11 @@ import (
"sync/atomic"
"time"
+ flag "github.com/spf13/pflag"
+
"github.com/ethereum/go-ethereum/common"
"github.com/ethereum/go-ethereum/ethclient"
"github.com/ethereum/go-ethereum/log"
- flag "github.com/spf13/pflag"
"github.com/offchainlabs/nitro/arbutil"
"github.com/offchainlabs/nitro/util/arbmath"
diff --git a/arbnode/inbox_test.go b/arbnode/inbox_test.go
index e588ef399b..0c31008ff1 100644
--- a/arbnode/inbox_test.go
+++ b/arbnode/inbox_test.go
@@ -11,23 +11,23 @@ import (
"testing"
"time"
+ "github.com/ethereum/go-ethereum/common"
+ "github.com/ethereum/go-ethereum/core"
+ "github.com/ethereum/go-ethereum/core/rawdb"
+ "github.com/ethereum/go-ethereum/core/types"
+ "github.com/ethereum/go-ethereum/ethdb"
+ "github.com/ethereum/go-ethereum/params"
+
+ "github.com/offchainlabs/nitro/arbos"
"github.com/offchainlabs/nitro/arbos/arbostypes"
"github.com/offchainlabs/nitro/arbos/l2pricing"
"github.com/offchainlabs/nitro/arbutil"
+ "github.com/offchainlabs/nitro/cmd/chaininfo"
"github.com/offchainlabs/nitro/execution/gethexec"
"github.com/offchainlabs/nitro/statetransfer"
-
"github.com/offchainlabs/nitro/util/arbmath"
"github.com/offchainlabs/nitro/util/testhelpers"
"github.com/offchainlabs/nitro/util/testhelpers/env"
-
- "github.com/ethereum/go-ethereum/common"
- "github.com/ethereum/go-ethereum/core"
- "github.com/ethereum/go-ethereum/core/rawdb"
- "github.com/ethereum/go-ethereum/core/types"
- "github.com/ethereum/go-ethereum/ethdb"
- "github.com/ethereum/go-ethereum/params"
- "github.com/offchainlabs/nitro/arbos"
)
type execClientWrapper struct {
@@ -45,7 +45,7 @@ func (w *execClientWrapper) FullSyncProgressMap() map[string]interface{} {
}
func NewTransactionStreamerForTest(t *testing.T, ownerAddress common.Address) (*gethexec.ExecutionEngine, *TransactionStreamer, ethdb.Database, *core.BlockChain) {
- chainConfig := params.ArbitrumDevTestChainConfig()
+ chainConfig := chaininfo.ArbitrumDevTestChainConfig()
initData := statetransfer.ArbosInitializationInfo{
Accounts: []statetransfer.AccountInitializationInfo{
diff --git a/arbnode/inbox_tracker_test.go b/arbnode/inbox_tracker_test.go
index 582b334aee..82d380b03c 100644
--- a/arbnode/inbox_tracker_test.go
+++ b/arbnode/inbox_tracker_test.go
@@ -4,6 +4,7 @@ import (
"testing"
"github.com/ethereum/go-ethereum/core/rawdb"
+
"github.com/offchainlabs/nitro/util/containers"
)
diff --git a/arbnode/maintenance.go b/arbnode/maintenance.go
index 7397229c2e..5e4e56b577 100644
--- a/arbnode/maintenance.go
+++ b/arbnode/maintenance.go
@@ -10,12 +10,14 @@ import (
"strings"
"time"
+ flag "github.com/spf13/pflag"
+
"github.com/ethereum/go-ethereum/ethdb"
"github.com/ethereum/go-ethereum/log"
+
"github.com/offchainlabs/nitro/arbnode/redislock"
"github.com/offchainlabs/nitro/execution"
"github.com/offchainlabs/nitro/util/stopwaiter"
- flag "github.com/spf13/pflag"
)
// Regularly runs db compaction if configured
diff --git a/arbnode/message_pruner.go b/arbnode/message_pruner.go
index b249bd886c..840a15f328 100644
--- a/arbnode/message_pruner.go
+++ b/arbnode/message_pruner.go
@@ -11,14 +11,14 @@ import (
"sync"
"time"
+ flag "github.com/spf13/pflag"
+
"github.com/ethereum/go-ethereum/ethdb"
"github.com/ethereum/go-ethereum/log"
"github.com/offchainlabs/nitro/arbutil"
"github.com/offchainlabs/nitro/util/stopwaiter"
"github.com/offchainlabs/nitro/validator"
-
- flag "github.com/spf13/pflag"
)
type MessagePruner struct {
diff --git a/arbnode/message_pruner_test.go b/arbnode/message_pruner_test.go
index e64bb4f838..8e6b744430 100644
--- a/arbnode/message_pruner_test.go
+++ b/arbnode/message_pruner_test.go
@@ -9,6 +9,7 @@ import (
"github.com/ethereum/go-ethereum/core/rawdb"
"github.com/ethereum/go-ethereum/ethdb"
+
"github.com/offchainlabs/nitro/arbutil"
)
diff --git a/arbnode/node.go b/arbnode/node.go
index c5b3bbe071..77562817dd 100644
--- a/arbnode/node.go
+++ b/arbnode/node.go
@@ -24,6 +24,7 @@ import (
"github.com/ethereum/go-ethereum/node"
"github.com/ethereum/go-ethereum/params"
"github.com/ethereum/go-ethereum/rpc"
+
"github.com/offchainlabs/nitro/arbnode/dataposter"
"github.com/offchainlabs/nitro/arbnode/dataposter/storage"
"github.com/offchainlabs/nitro/arbnode/resourcemanager"
diff --git a/arbnode/redislock/redis.go b/arbnode/redislock/redis.go
index de9508323a..075ff60c09 100644
--- a/arbnode/redislock/redis.go
+++ b/arbnode/redislock/redis.go
@@ -11,10 +11,12 @@ import (
"sync/atomic"
"time"
- "github.com/ethereum/go-ethereum/log"
- "github.com/offchainlabs/nitro/util/stopwaiter"
"github.com/redis/go-redis/v9"
flag "github.com/spf13/pflag"
+
+ "github.com/ethereum/go-ethereum/log"
+
+ "github.com/offchainlabs/nitro/util/stopwaiter"
)
type Simple struct {
diff --git a/arbnode/resourcemanager/resource_management.go b/arbnode/resourcemanager/resource_management.go
index 249b689443..462b38c578 100644
--- a/arbnode/resourcemanager/resource_management.go
+++ b/arbnode/resourcemanager/resource_management.go
@@ -14,10 +14,11 @@ import (
"strings"
"time"
+ "github.com/spf13/pflag"
+
"github.com/ethereum/go-ethereum/log"
"github.com/ethereum/go-ethereum/metrics"
"github.com/ethereum/go-ethereum/node"
- "github.com/spf13/pflag"
)
var (
diff --git a/arbnode/sequencer_inbox.go b/arbnode/sequencer_inbox.go
index 81146ed46e..9dae7cfb8d 100644
--- a/arbnode/sequencer_inbox.go
+++ b/arbnode/sequencer_inbox.go
@@ -16,9 +16,9 @@ import (
"github.com/ethereum/go-ethereum/common"
"github.com/ethereum/go-ethereum/core/types"
"github.com/ethereum/go-ethereum/ethclient"
+
"github.com/offchainlabs/nitro/arbstate/daprovider"
"github.com/offchainlabs/nitro/arbutil"
-
"github.com/offchainlabs/nitro/solgen/go/bridgegen"
)
@@ -124,7 +124,11 @@ func (m *SequencerInboxBatch) getSequencerData(ctx context.Context, client *ethc
if err != nil {
return nil, err
}
- return args["data"].([]byte), nil
+ dataBytes, ok := args["data"].([]byte)
+ if !ok {
+ return nil, errors.New("args[\"data\"] not a byte array")
+ }
+ return dataBytes, nil
case batchDataSeparateEvent:
var numberAsHash common.Hash
binary.BigEndian.PutUint64(numberAsHash[(32-8):], m.SequenceNumber)
diff --git a/arbnode/sync_monitor.go b/arbnode/sync_monitor.go
index 5ab1ede2d6..f06e9ca49f 100644
--- a/arbnode/sync_monitor.go
+++ b/arbnode/sync_monitor.go
@@ -5,10 +5,12 @@ import (
"sync"
"time"
+ flag "github.com/spf13/pflag"
+
"github.com/ethereum/go-ethereum/log"
+
"github.com/offchainlabs/nitro/arbutil"
"github.com/offchainlabs/nitro/util/stopwaiter"
- flag "github.com/spf13/pflag"
)
type SyncMonitor struct {
@@ -144,11 +146,13 @@ func (s *SyncMonitor) FullSyncProgressMap() map[string]interface{} {
batchProcessed := s.inboxReader.GetLastReadBatchCount()
res["batchProcessed"] = batchProcessed
- processedBatchMsgs, err := s.inboxReader.Tracker().GetBatchMessageCount(batchProcessed - 1)
- if err != nil {
- res["batchMetadataError"] = err.Error()
- } else {
- res["messageOfProcessedBatch"] = processedBatchMsgs
+ if batchProcessed > 0 {
+ processedBatchMsgs, err := s.inboxReader.Tracker().GetBatchMessageCount(batchProcessed - 1)
+ if err != nil {
+ res["batchMetadataError"] = err.Error()
+ } else {
+ res["messageOfProcessedBatch"] = processedBatchMsgs
+ }
}
l1reader := s.inboxReader.l1Reader
diff --git a/arbnode/transaction_streamer.go b/arbnode/transaction_streamer.go
index 38b1c003db..1a961ebd3f 100644
--- a/arbnode/transaction_streamer.go
+++ b/arbnode/transaction_streamer.go
@@ -8,6 +8,7 @@ import (
"context"
"encoding/binary"
"encoding/json"
+ "errors"
"fmt"
"math/big"
"reflect"
@@ -17,8 +18,6 @@ import (
"testing"
"time"
- "errors"
-
flag "github.com/spf13/pflag"
"github.com/ethereum/go-ethereum/common"
diff --git a/arbos/activate_test.go b/arbos/activate_test.go
index a89a38639a..b723c37aa6 100644
--- a/arbos/activate_test.go
+++ b/arbos/activate_test.go
@@ -9,6 +9,7 @@ import (
"time"
"github.com/ethereum/go-ethereum/common"
+
"github.com/offchainlabs/nitro/arbos/arbosState"
"github.com/offchainlabs/nitro/arbos/programs"
"github.com/offchainlabs/nitro/util/arbmath"
diff --git a/arbos/addressSet/addressSet.go b/arbos/addressSet/addressSet.go
index 156f36e7e7..4bb87e614d 100644
--- a/arbos/addressSet/addressSet.go
+++ b/arbos/addressSet/addressSet.go
@@ -9,6 +9,7 @@ import (
"errors"
"github.com/ethereum/go-ethereum/common"
+
"github.com/offchainlabs/nitro/arbos/storage"
"github.com/offchainlabs/nitro/arbos/util"
)
diff --git a/arbos/addressSet/addressSet_test.go b/arbos/addressSet/addressSet_test.go
index d32e07a546..b65c278b2b 100644
--- a/arbos/addressSet/addressSet_test.go
+++ b/arbos/addressSet/addressSet_test.go
@@ -8,16 +8,17 @@ import (
"math/rand"
"testing"
- "github.com/ethereum/go-ethereum/common/math"
- "github.com/ethereum/go-ethereum/params"
"github.com/google/go-cmp/cmp"
"github.com/google/go-cmp/cmp/cmpopts"
"github.com/ethereum/go-ethereum/common"
+ "github.com/ethereum/go-ethereum/common/math"
"github.com/ethereum/go-ethereum/core/state"
+
"github.com/offchainlabs/nitro/arbos/burn"
"github.com/offchainlabs/nitro/arbos/storage"
"github.com/offchainlabs/nitro/arbos/util"
+ "github.com/offchainlabs/nitro/cmd/chaininfo"
"github.com/offchainlabs/nitro/util/colors"
"github.com/offchainlabs/nitro/util/testhelpers"
)
@@ -26,7 +27,7 @@ func TestEmptyAddressSet(t *testing.T) {
sto := storage.NewMemoryBacked(burn.NewSystemBurner(nil, false))
Require(t, Initialize(sto))
aset := OpenAddressSet(sto)
- version := params.ArbitrumDevTestParams().InitialArbOSVersion
+ version := chaininfo.ArbitrumDevTestParams().InitialArbOSVersion
if size(t, aset) != 0 {
Fail(t)
@@ -49,7 +50,7 @@ func TestAddressSet(t *testing.T) {
sto := storage.NewGeth(db, burn.NewSystemBurner(nil, false))
Require(t, Initialize(sto))
aset := OpenAddressSet(sto)
- version := params.ArbitrumDevTestParams().InitialArbOSVersion
+ version := chaininfo.ArbitrumDevTestParams().InitialArbOSVersion
statedb, _ := (db).(*state.StateDB)
stateHashBeforeChanges := statedb.IntermediateRoot(false)
@@ -144,7 +145,7 @@ func TestAddressSetAllMembers(t *testing.T) {
sto := storage.NewGeth(db, burn.NewSystemBurner(nil, false))
Require(t, Initialize(sto))
aset := OpenAddressSet(sto)
- version := params.ArbitrumDevTestParams().InitialArbOSVersion
+ version := chaininfo.ArbitrumDevTestParams().InitialArbOSVersion
addr1 := testhelpers.RandomAddress()
addr2 := testhelpers.RandomAddress()
diff --git a/arbos/addressTable/addressTable.go b/arbos/addressTable/addressTable.go
index 6ae271060d..608883c34d 100644
--- a/arbos/addressTable/addressTable.go
+++ b/arbos/addressTable/addressTable.go
@@ -11,6 +11,7 @@ import (
"github.com/ethereum/go-ethereum/common"
"github.com/ethereum/go-ethereum/rlp"
+
"github.com/offchainlabs/nitro/arbos/storage"
"github.com/offchainlabs/nitro/arbos/util"
)
diff --git a/arbos/addressTable/addressTable_test.go b/arbos/addressTable/addressTable_test.go
index 6b06ed3406..873d5a4d1c 100644
--- a/arbos/addressTable/addressTable_test.go
+++ b/arbos/addressTable/addressTable_test.go
@@ -9,6 +9,7 @@ import (
"github.com/ethereum/go-ethereum/common"
"github.com/ethereum/go-ethereum/crypto"
+
"github.com/offchainlabs/nitro/arbos/burn"
"github.com/offchainlabs/nitro/arbos/storage"
"github.com/offchainlabs/nitro/util/testhelpers"
diff --git a/arbos/arbosState/arbosstate.go b/arbos/arbosState/arbosstate.go
index f53d9c892a..a3d1ae8386 100644
--- a/arbos/arbosState/arbosstate.go
+++ b/arbos/arbosState/arbosstate.go
@@ -32,6 +32,7 @@ import (
"github.com/offchainlabs/nitro/arbos/retryables"
"github.com/offchainlabs/nitro/arbos/storage"
"github.com/offchainlabs/nitro/arbos/util"
+ "github.com/offchainlabs/nitro/cmd/chaininfo"
"github.com/offchainlabs/nitro/util/testhelpers/env"
)
@@ -128,7 +129,7 @@ func NewArbosMemoryBackedArbOSState() (*ArbosState, *state.StateDB) {
log.Crit("failed to init empty statedb", "error", err)
}
burner := burn.NewSystemBurner(nil, false)
- chainConfig := params.ArbitrumDevTestChainConfig()
+ chainConfig := chaininfo.ArbitrumDevTestChainConfig()
newState, err := InitializeArbosState(statedb, burner, chainConfig, arbostypes.TestInitMessage)
if err != nil {
log.Crit("failed to open the ArbOS state", "error", err)
diff --git a/arbos/arbosState/arbosstate_test.go b/arbos/arbosState/arbosstate_test.go
index ef63c23386..440598991c 100644
--- a/arbos/arbosState/arbosstate_test.go
+++ b/arbos/arbosState/arbosstate_test.go
@@ -8,6 +8,7 @@ import (
"testing"
"github.com/ethereum/go-ethereum/common"
+
"github.com/offchainlabs/nitro/arbos/burn"
"github.com/offchainlabs/nitro/arbos/storage"
"github.com/offchainlabs/nitro/arbos/util"
diff --git a/arbos/arbosState/initialization_test.go b/arbos/arbosState/initialization_test.go
index 5e605b8bd2..8ccfbc7cfb 100644
--- a/arbos/arbosState/initialization_test.go
+++ b/arbos/arbosState/initialization_test.go
@@ -13,9 +13,10 @@ import (
"github.com/ethereum/go-ethereum/core"
"github.com/ethereum/go-ethereum/core/rawdb"
"github.com/ethereum/go-ethereum/core/state"
- "github.com/ethereum/go-ethereum/params"
+
"github.com/offchainlabs/nitro/arbos/arbostypes"
"github.com/offchainlabs/nitro/arbos/burn"
+ "github.com/offchainlabs/nitro/cmd/chaininfo"
"github.com/offchainlabs/nitro/statetransfer"
"github.com/offchainlabs/nitro/util/testhelpers"
"github.com/offchainlabs/nitro/util/testhelpers/env"
@@ -61,12 +62,11 @@ func tryMarshalUnmarshal(input *statetransfer.ArbosInitializationInfo, t *testin
raw := rawdb.NewMemoryDatabase()
initReader := statetransfer.NewMemoryInitDataReader(&initData)
- chainConfig := params.ArbitrumDevTestChainConfig()
+ chainConfig := chaininfo.ArbitrumDevTestChainConfig()
cacheConfig := core.DefaultCacheConfigWithScheme(env.GetTestStateScheme())
stateroot, err := InitializeArbosInDatabase(raw, cacheConfig, initReader, chainConfig, arbostypes.TestInitMessage, 0, 0)
Require(t, err)
-
triedbConfig := cacheConfig.TriedbConfig()
stateDb, err := state.New(stateroot, state.NewDatabaseWithConfig(raw, triedbConfig), nil)
Require(t, err)
diff --git a/arbos/arbosState/initialize.go b/arbos/arbosState/initialize.go
index 427bdc3087..29cb75b758 100644
--- a/arbos/arbosState/initialize.go
+++ b/arbos/arbosState/initialize.go
@@ -9,16 +9,19 @@ import (
"regexp"
"sort"
+ "github.com/holiman/uint256"
+
"github.com/ethereum/go-ethereum/common"
"github.com/ethereum/go-ethereum/core"
"github.com/ethereum/go-ethereum/core/rawdb"
"github.com/ethereum/go-ethereum/core/state"
+ "github.com/ethereum/go-ethereum/core/tracing"
"github.com/ethereum/go-ethereum/core/types"
"github.com/ethereum/go-ethereum/ethdb"
"github.com/ethereum/go-ethereum/log"
"github.com/ethereum/go-ethereum/params"
"github.com/ethereum/go-ethereum/trie"
- "github.com/holiman/uint256"
+
"github.com/offchainlabs/nitro/arbos/arbostypes"
"github.com/offchainlabs/nitro/arbos/burn"
"github.com/offchainlabs/nitro/arbos/l2pricing"
@@ -96,6 +99,16 @@ func InitializeArbosInDatabase(db ethdb.Database, cacheConfig *core.CacheConfig,
log.Crit("failed to open the ArbOS state", "error", err)
}
+ chainOwner, err := initData.GetChainOwner()
+ if err != nil {
+ return common.Hash{}, err
+ }
+ if chainOwner != (common.Address{}) {
+ err = arbosState.ChainOwners().Add(chainOwner)
+ if err != nil {
+ return common.Hash{}, err
+ }
+ }
addrTable := arbosState.AddressTable()
addrTableSize, err := addrTable.Size()
if err != nil {
@@ -159,7 +172,7 @@ func InitializeArbosInDatabase(db ethdb.Database, cacheConfig *core.CacheConfig,
if err != nil {
return common.Hash{}, err
}
- statedb.SetBalance(account.Addr, uint256.MustFromBig(account.EthBalance))
+ statedb.SetBalance(account.Addr, uint256.MustFromBig(account.EthBalance), tracing.BalanceChangeUnspecified)
statedb.SetNonce(account.Addr, account.Nonce)
if account.ContractInfo != nil {
statedb.SetCode(account.Addr, account.ContractInfo.Code)
@@ -190,7 +203,7 @@ func initializeRetryables(statedb *state.StateDB, rs *retryables.RetryableState,
return err
}
if r.Timeout <= currentTimestamp {
- statedb.AddBalance(r.Beneficiary, uint256.MustFromBig(r.Callvalue))
+ statedb.AddBalance(r.Beneficiary, uint256.MustFromBig(r.Callvalue), tracing.BalanceChangeUnspecified)
continue
}
retryablesList = append(retryablesList, r)
@@ -209,7 +222,7 @@ func initializeRetryables(statedb *state.StateDB, rs *retryables.RetryableState,
addr := r.To
to = &addr
}
- statedb.AddBalance(retryables.RetryableEscrowAddress(r.Id), uint256.MustFromBig(r.Callvalue))
+ statedb.AddBalance(retryables.RetryableEscrowAddress(r.Id), uint256.MustFromBig(r.Callvalue), tracing.BalanceChangeUnspecified)
_, err := rs.CreateRetryable(r.Id, r.Timeout, r.From, to, r.Callvalue, r.Beneficiary, r.Calldata)
if err != nil {
return err
diff --git a/arbos/arbostypes/incomingmessage.go b/arbos/arbostypes/incomingmessage.go
index c4c2dc037b..b9a366cbd5 100644
--- a/arbos/arbostypes/incomingmessage.go
+++ b/arbos/arbostypes/incomingmessage.go
@@ -16,6 +16,7 @@ import (
"github.com/ethereum/go-ethereum/params"
"github.com/offchainlabs/nitro/arbos/util"
+ "github.com/offchainlabs/nitro/cmd/chaininfo"
"github.com/offchainlabs/nitro/util/arbmath"
)
@@ -265,7 +266,7 @@ type ParsedInitMessage struct {
var DefaultInitialL1BaseFee = big.NewInt(50 * params.GWei)
var TestInitMessage = &ParsedInitMessage{
- ChainId: params.ArbitrumDevTestChainConfig().ChainID,
+ ChainId: chaininfo.ArbitrumDevTestChainConfig().ChainID,
InitialL1BaseFee: DefaultInitialL1BaseFee,
}
diff --git a/arbos/arbostypes/messagewithmeta.go b/arbos/arbostypes/messagewithmeta.go
index 79b7c4f9d2..a3bc167526 100644
--- a/arbos/arbostypes/messagewithmeta.go
+++ b/arbos/arbostypes/messagewithmeta.go
@@ -8,6 +8,7 @@ import (
"github.com/ethereum/go-ethereum/common"
"github.com/ethereum/go-ethereum/crypto"
"github.com/ethereum/go-ethereum/rlp"
+
"github.com/offchainlabs/nitro/arbutil"
)
diff --git a/arbos/block_processor.go b/arbos/block_processor.go
index 19fc36b351..fe0a39d230 100644
--- a/arbos/block_processor.go
+++ b/arbos/block_processor.go
@@ -10,12 +10,6 @@ import (
"math"
"math/big"
- "github.com/offchainlabs/nitro/arbos/arbosState"
- "github.com/offchainlabs/nitro/arbos/arbostypes"
- "github.com/offchainlabs/nitro/arbos/l2pricing"
- "github.com/offchainlabs/nitro/arbos/util"
- "github.com/offchainlabs/nitro/util/arbmath"
-
"github.com/ethereum/go-ethereum/arbitrum_types"
"github.com/ethereum/go-ethereum/common"
"github.com/ethereum/go-ethereum/core"
@@ -25,6 +19,12 @@ import (
"github.com/ethereum/go-ethereum/log"
"github.com/ethereum/go-ethereum/params"
"github.com/ethereum/go-ethereum/trie"
+
+ "github.com/offchainlabs/nitro/arbos/arbosState"
+ "github.com/offchainlabs/nitro/arbos/arbostypes"
+ "github.com/offchainlabs/nitro/arbos/l2pricing"
+ "github.com/offchainlabs/nitro/arbos/util"
+ "github.com/offchainlabs/nitro/util/arbmath"
)
// set by the precompile module, to avoid a package dependence cycle
@@ -340,18 +340,6 @@ func ProduceBlockAdvanced(
return receipt, result, nil
})()
- if tx.Type() == types.ArbitrumInternalTxType {
- // ArbOS might have upgraded to a new version, so we need to refresh our state
- state, err = arbosState.OpenSystemArbosState(statedb, nil, true)
- if err != nil {
- return nil, nil, err
- }
- // Update the ArbOS version in the header (if it changed)
- extraInfo := types.DeserializeHeaderExtraInformation(header)
- extraInfo.ArbOSFormatVersion = state.ArbOSVersion()
- extraInfo.UpdateHeaderWithInfo(header)
- }
-
// append the err, even if it is nil
hooks.TxErrors = append(hooks.TxErrors, err)
@@ -373,6 +361,18 @@ func ProduceBlockAdvanced(
continue
}
+ if tx.Type() == types.ArbitrumInternalTxType {
+ // ArbOS might have upgraded to a new version, so we need to refresh our state
+ state, err = arbosState.OpenSystemArbosState(statedb, nil, true)
+ if err != nil {
+ return nil, nil, err
+ }
+ // Update the ArbOS version in the header (if it changed)
+ extraInfo := types.DeserializeHeaderExtraInformation(header)
+ extraInfo.ArbOSFormatVersion = state.ArbOSVersion()
+ extraInfo.UpdateHeaderWithInfo(header)
+ }
+
if tx.Type() == types.ArbitrumInternalTxType && result.Err != nil {
return nil, nil, fmt.Errorf("failed to apply internal transaction: %w", result.Err)
}
diff --git a/arbos/blockhash/blockhash.go b/arbos/blockhash/blockhash.go
index 34c907207c..ff29bbca9a 100644
--- a/arbos/blockhash/blockhash.go
+++ b/arbos/blockhash/blockhash.go
@@ -8,6 +8,7 @@ import (
"errors"
"github.com/ethereum/go-ethereum/common"
+
"github.com/offchainlabs/nitro/arbos/storage"
)
diff --git a/arbos/blockhash/blockhash_test.go b/arbos/blockhash/blockhash_test.go
index bf3ee5ee11..c7cc04d966 100644
--- a/arbos/blockhash/blockhash_test.go
+++ b/arbos/blockhash/blockhash_test.go
@@ -8,6 +8,7 @@ import (
"github.com/ethereum/go-ethereum/common"
"github.com/ethereum/go-ethereum/crypto"
+
"github.com/offchainlabs/nitro/arbos/burn"
"github.com/offchainlabs/nitro/arbos/storage"
"github.com/offchainlabs/nitro/util/testhelpers"
diff --git a/arbos/burn/burn.go b/arbos/burn/burn.go
index 7d30ad12ec..c94f6bec2f 100644
--- a/arbos/burn/burn.go
+++ b/arbos/burn/burn.go
@@ -7,6 +7,7 @@ import (
"fmt"
glog "github.com/ethereum/go-ethereum/log"
+
"github.com/offchainlabs/nitro/arbos/util"
)
diff --git a/arbos/engine.go b/arbos/engine.go
index 0014e8ab96..a4aa9c46a9 100644
--- a/arbos/engine.go
+++ b/arbos/engine.go
@@ -48,16 +48,15 @@ func (e Engine) Prepare(chain consensus.ChainHeaderReader, header *types.Header)
return nil
}
-func (e Engine) Finalize(chain consensus.ChainHeaderReader, header *types.Header, state *state.StateDB, txs []*types.Transaction, uncles []*types.Header, withdrawals []*types.Withdrawal) {
- FinalizeBlock(header, txs, state, chain.Config())
+func (e Engine) Finalize(chain consensus.ChainHeaderReader, header *types.Header, state *state.StateDB, body *types.Body) {
+ FinalizeBlock(header, body.Transactions, state, chain.Config())
}
-func (e Engine) FinalizeAndAssemble(chain consensus.ChainHeaderReader, header *types.Header, state *state.StateDB, txs []*types.Transaction,
- uncles []*types.Header, receipts []*types.Receipt, withdrawals []*types.Withdrawal) (*types.Block, error) {
+func (e Engine) FinalizeAndAssemble(chain consensus.ChainHeaderReader, header *types.Header, state *state.StateDB, body *types.Body, receipts []*types.Receipt) (*types.Block, error) {
- e.Finalize(chain, header, state, txs, uncles, withdrawals)
+ e.Finalize(chain, header, state, body)
- block := types.NewBlock(header, txs, nil, receipts, trie.NewStackTrie(nil))
+ block := types.NewBlock(header, body.Transactions, nil, receipts, trie.NewStackTrie(nil))
return block, nil
}
diff --git a/arbos/extra_transaction_checks.go b/arbos/extra_transaction_checks.go
index 0f970c9925..480058cb0f 100644
--- a/arbos/extra_transaction_checks.go
+++ b/arbos/extra_transaction_checks.go
@@ -7,6 +7,7 @@ import (
"github.com/ethereum/go-ethereum/core/state"
"github.com/ethereum/go-ethereum/core/types"
"github.com/ethereum/go-ethereum/params"
+
"github.com/offchainlabs/nitro/arbos/arbosState"
)
diff --git a/arbos/incomingmessage_test.go b/arbos/incomingmessage_test.go
index 2933f6a719..22aba05bce 100644
--- a/arbos/incomingmessage_test.go
+++ b/arbos/incomingmessage_test.go
@@ -9,6 +9,7 @@ import (
"testing"
"github.com/ethereum/go-ethereum/common"
+
"github.com/offchainlabs/nitro/arbos/arbostypes"
)
diff --git a/arbos/internal_tx.go b/arbos/internal_tx.go
index 9832ac8005..64dede6290 100644
--- a/arbos/internal_tx.go
+++ b/arbos/internal_tx.go
@@ -8,15 +8,14 @@ import (
"fmt"
"math/big"
- "github.com/offchainlabs/nitro/util/arbmath"
-
- "github.com/ethereum/go-ethereum/log"
-
"github.com/ethereum/go-ethereum/common"
"github.com/ethereum/go-ethereum/core/types"
"github.com/ethereum/go-ethereum/core/vm"
+ "github.com/ethereum/go-ethereum/log"
+
"github.com/offchainlabs/nitro/arbos/arbosState"
"github.com/offchainlabs/nitro/arbos/util"
+ "github.com/offchainlabs/nitro/util/arbmath"
)
func InternalTxStartBlock(
diff --git a/arbos/l1pricing/batchPoster.go b/arbos/l1pricing/batchPoster.go
index a3428c441c..5975e95d0f 100644
--- a/arbos/l1pricing/batchPoster.go
+++ b/arbos/l1pricing/batchPoster.go
@@ -9,6 +9,7 @@ import (
"math/big"
"github.com/ethereum/go-ethereum/common"
+
"github.com/offchainlabs/nitro/arbos/addressSet"
"github.com/offchainlabs/nitro/arbos/storage"
"github.com/offchainlabs/nitro/util/arbmath"
diff --git a/arbos/l1pricing/batchPoster_test.go b/arbos/l1pricing/batchPoster_test.go
index 4e9b8565c0..3263ffca81 100644
--- a/arbos/l1pricing/batchPoster_test.go
+++ b/arbos/l1pricing/batchPoster_test.go
@@ -9,6 +9,7 @@ import (
"github.com/ethereum/go-ethereum/common"
"github.com/ethereum/go-ethereum/common/math"
+
"github.com/offchainlabs/nitro/arbos/burn"
"github.com/offchainlabs/nitro/arbos/storage"
)
diff --git a/arbos/l1pricing/l1PricingOldVersions.go b/arbos/l1pricing/l1PricingOldVersions.go
index 821d743e7d..1377351af3 100644
--- a/arbos/l1pricing/l1PricingOldVersions.go
+++ b/arbos/l1pricing/l1PricingOldVersions.go
@@ -9,6 +9,7 @@ import (
"github.com/ethereum/go-ethereum/common"
"github.com/ethereum/go-ethereum/core/vm"
+
"github.com/offchainlabs/nitro/arbos/util"
am "github.com/offchainlabs/nitro/util/arbmath"
)
diff --git a/arbos/l1pricing/l1pricing.go b/arbos/l1pricing/l1pricing.go
index 392bf36d37..37dae08c33 100644
--- a/arbos/l1pricing/l1pricing.go
+++ b/arbos/l1pricing/l1pricing.go
@@ -10,20 +10,19 @@ import (
"math/big"
"sync/atomic"
- "github.com/ethereum/go-ethereum/crypto"
-
+ "github.com/ethereum/go-ethereum/common"
+ "github.com/ethereum/go-ethereum/core"
+ "github.com/ethereum/go-ethereum/core/types"
"github.com/ethereum/go-ethereum/core/vm"
+ "github.com/ethereum/go-ethereum/crypto"
"github.com/ethereum/go-ethereum/params"
"github.com/offchainlabs/nitro/arbcompress"
- "github.com/offchainlabs/nitro/util/arbmath"
- am "github.com/offchainlabs/nitro/util/arbmath"
-
- "github.com/ethereum/go-ethereum/common"
- "github.com/ethereum/go-ethereum/core"
- "github.com/ethereum/go-ethereum/core/types"
"github.com/offchainlabs/nitro/arbos/storage"
"github.com/offchainlabs/nitro/arbos/util"
+ "github.com/offchainlabs/nitro/cmd/chaininfo"
+ "github.com/offchainlabs/nitro/util/arbmath"
+ am "github.com/offchainlabs/nitro/util/arbmath"
)
type L1PricingState struct {
@@ -540,7 +539,7 @@ var randomNonce = binary.BigEndian.Uint64(crypto.Keccak256([]byte("Nonce"))[:8])
var randomGasTipCap = new(big.Int).SetBytes(crypto.Keccak256([]byte("GasTipCap"))[:4])
var randomGasFeeCap = new(big.Int).SetBytes(crypto.Keccak256([]byte("GasFeeCap"))[:4])
var RandomGas = uint64(binary.BigEndian.Uint32(crypto.Keccak256([]byte("Gas"))[:4]))
-var randV = arbmath.BigMulByUint(params.ArbitrumOneChainConfig().ChainID, 3)
+var randV = arbmath.BigMulByUint(chaininfo.ArbitrumOneChainConfig().ChainID, 3)
var randR = crypto.Keccak256Hash([]byte("R")).Big()
var randS = crypto.Keccak256Hash([]byte("S")).Big()
diff --git a/arbos/l1pricing/l1pricing_test.go b/arbos/l1pricing/l1pricing_test.go
index b301c94257..b842c26db7 100644
--- a/arbos/l1pricing/l1pricing_test.go
+++ b/arbos/l1pricing/l1pricing_test.go
@@ -9,6 +9,7 @@ import (
"github.com/ethereum/go-ethereum/common"
"github.com/ethereum/go-ethereum/params"
+
"github.com/offchainlabs/nitro/arbos/burn"
"github.com/offchainlabs/nitro/arbos/storage"
)
diff --git a/arbos/l1pricing_test.go b/arbos/l1pricing_test.go
index 6f9e3ecb35..6ab0135be9 100644
--- a/arbos/l1pricing_test.go
+++ b/arbos/l1pricing_test.go
@@ -7,18 +7,21 @@ import (
"math/big"
"testing"
+ "github.com/holiman/uint256"
+
"github.com/ethereum/go-ethereum/common"
"github.com/ethereum/go-ethereum/common/math"
"github.com/ethereum/go-ethereum/core/state"
+ "github.com/ethereum/go-ethereum/core/tracing"
"github.com/ethereum/go-ethereum/core/vm"
- "github.com/holiman/uint256"
+ "github.com/ethereum/go-ethereum/params"
+
"github.com/offchainlabs/nitro/arbos/arbosState"
+ "github.com/offchainlabs/nitro/arbos/burn"
"github.com/offchainlabs/nitro/arbos/l1pricing"
"github.com/offchainlabs/nitro/arbos/util"
+ "github.com/offchainlabs/nitro/cmd/chaininfo"
"github.com/offchainlabs/nitro/util/arbmath"
-
- "github.com/ethereum/go-ethereum/params"
- "github.com/offchainlabs/nitro/arbos/burn"
)
type l1PricingTest struct {
@@ -172,7 +175,7 @@ func _testL1PricingFundsDue(t *testing.T, testParams *l1PricingTest, expectedRes
// create some fake collection
balanceAdded := new(big.Int).SetUint64(testParams.fundsCollectedPerSecond * 3)
unitsAdded := testParams.unitsPerSecond * 3
- evm.StateDB.AddBalance(l1pricing.L1PricerFundsPoolAddress, uint256.MustFromBig(balanceAdded))
+ evm.StateDB.AddBalance(l1pricing.L1PricerFundsPoolAddress, uint256.MustFromBig(balanceAdded), tracing.BalanceChangeUnspecified)
err = l1p.SetL1FeesAvailable(balanceAdded)
Require(t, err)
err = l1p.SetUnitsSinceUpdate(unitsAdded)
@@ -315,7 +318,7 @@ func _withinOnePercent(v1, v2 *big.Int) bool {
}
func newMockEVMForTesting() *vm.EVM {
- chainConfig := params.ArbitrumDevTestChainConfig()
+ chainConfig := chaininfo.ArbitrumDevTestChainConfig()
_, statedb := arbosState.NewArbosMemoryBackedArbOSState()
context := vm.BlockContext{
BlockNumber: big.NewInt(0),
diff --git a/arbos/l2pricing/model.go b/arbos/l2pricing/model.go
index 476effa8aa..367e8b6e1a 100644
--- a/arbos/l2pricing/model.go
+++ b/arbos/l2pricing/model.go
@@ -7,6 +7,7 @@ import (
"math/big"
"github.com/ethereum/go-ethereum/params"
+
"github.com/offchainlabs/nitro/util/arbmath"
)
diff --git a/arbos/merkleAccumulator/merkleAccumulator.go b/arbos/merkleAccumulator/merkleAccumulator.go
index e62303e5fd..0d51602c02 100644
--- a/arbos/merkleAccumulator/merkleAccumulator.go
+++ b/arbos/merkleAccumulator/merkleAccumulator.go
@@ -6,6 +6,7 @@ package merkleAccumulator
import (
"github.com/ethereum/go-ethereum/common"
"github.com/ethereum/go-ethereum/crypto"
+
"github.com/offchainlabs/nitro/arbos/storage"
"github.com/offchainlabs/nitro/util/arbmath"
)
diff --git a/arbos/parse_l2.go b/arbos/parse_l2.go
index 06722e4063..cd926f47bf 100644
--- a/arbos/parse_l2.go
+++ b/arbos/parse_l2.go
@@ -12,6 +12,7 @@ import (
"github.com/ethereum/go-ethereum/core/types"
"github.com/ethereum/go-ethereum/crypto"
"github.com/ethereum/go-ethereum/log"
+
"github.com/offchainlabs/nitro/arbos/arbostypes"
"github.com/offchainlabs/nitro/arbos/util"
"github.com/offchainlabs/nitro/util/arbmath"
diff --git a/arbos/programs/api.go b/arbos/programs/api.go
index 3e59031b2d..d8f12ffbd3 100644
--- a/arbos/programs/api.go
+++ b/arbos/programs/api.go
@@ -4,12 +4,14 @@
package programs
import (
+ "github.com/holiman/uint256"
+
"github.com/ethereum/go-ethereum/common"
"github.com/ethereum/go-ethereum/core/types"
"github.com/ethereum/go-ethereum/core/vm"
"github.com/ethereum/go-ethereum/log"
"github.com/ethereum/go-ethereum/params"
- "github.com/holiman/uint256"
+
"github.com/offchainlabs/nitro/arbos/util"
"github.com/offchainlabs/nitro/util/arbmath"
am "github.com/offchainlabs/nitro/util/arbmath"
@@ -254,7 +256,9 @@ func newApiClosures(
return memoryModel.GasCost(pages, open, ever)
}
captureHostio := func(name string, args, outs []byte, startInk, endInk uint64) {
- tracingInfo.Tracer.CaptureStylusHostio(name, args, outs, startInk, endInk)
+ if tracingInfo.Tracer != nil && tracingInfo.Tracer.CaptureStylusHostio != nil {
+ tracingInfo.Tracer.CaptureStylusHostio(name, args, outs, startInk, endInk)
+ }
tracingInfo.CaptureEVMTraceForHostio(name, args, outs, startInk, endInk)
}
diff --git a/arbos/programs/native.go b/arbos/programs/native.go
index 725b302ac0..f162704995 100644
--- a/arbos/programs/native.go
+++ b/arbos/programs/native.go
@@ -18,6 +18,7 @@ typedef uint64_t u64;
typedef size_t usize;
*/
import "C"
+
import (
"errors"
"fmt"
@@ -30,6 +31,7 @@ import (
"github.com/ethereum/go-ethereum/ethdb"
"github.com/ethereum/go-ethereum/log"
"github.com/ethereum/go-ethereum/metrics"
+
"github.com/offchainlabs/nitro/arbos/burn"
"github.com/offchainlabs/nitro/arbos/util"
"github.com/offchainlabs/nitro/arbutil"
diff --git a/arbos/programs/native_api.go b/arbos/programs/native_api.go
index 6cecb8ef63..ab15800ef9 100644
--- a/arbos/programs/native_api.go
+++ b/arbos/programs/native_api.go
@@ -22,6 +22,7 @@ void handleReqWrap(usize api, u32 req_type, RustSlice *data, u64 *out_cost, GoSl
}
*/
import "C"
+
import (
"runtime"
"sync"
@@ -29,6 +30,7 @@ import (
"github.com/ethereum/go-ethereum/core/vm"
"github.com/ethereum/go-ethereum/log"
+
"github.com/offchainlabs/nitro/arbos/util"
"github.com/offchainlabs/nitro/arbutil"
)
diff --git a/arbos/programs/params.go b/arbos/programs/params.go
index a0b8acd95c..9b219737d9 100644
--- a/arbos/programs/params.go
+++ b/arbos/programs/params.go
@@ -10,6 +10,7 @@ import (
"github.com/ethereum/go-ethereum/common"
"github.com/ethereum/go-ethereum/log"
"github.com/ethereum/go-ethereum/params"
+
"github.com/offchainlabs/nitro/arbos/storage"
"github.com/offchainlabs/nitro/arbos/util"
am "github.com/offchainlabs/nitro/util/arbmath"
diff --git a/arbos/programs/programs.go b/arbos/programs/programs.go
index 06ff4137da..06ba6ead8c 100644
--- a/arbos/programs/programs.go
+++ b/arbos/programs/programs.go
@@ -14,6 +14,7 @@ import (
"github.com/ethereum/go-ethereum/core/vm"
"github.com/ethereum/go-ethereum/log"
gethParams "github.com/ethereum/go-ethereum/params"
+
"github.com/offchainlabs/nitro/arbcompress"
"github.com/offchainlabs/nitro/arbos/addressSet"
"github.com/offchainlabs/nitro/arbos/storage"
diff --git a/arbos/programs/testcompile.go b/arbos/programs/testcompile.go
index 615b0f3f72..8a4e38444a 100644
--- a/arbos/programs/testcompile.go
+++ b/arbos/programs/testcompile.go
@@ -20,6 +20,7 @@ typedef size_t usize;
void handleReqWrap(usize api, u32 req_type, RustSlice *data, u64 *out_cost, GoSliceData *out_result, GoSliceData *out_raw_data);
*/
import "C"
+
import (
"fmt"
"os"
diff --git a/arbos/queue_test.go b/arbos/queue_test.go
index ff993a233f..75d60b82c3 100644
--- a/arbos/queue_test.go
+++ b/arbos/queue_test.go
@@ -7,7 +7,6 @@ import (
"testing"
"github.com/offchainlabs/nitro/arbos/arbosState"
-
"github.com/offchainlabs/nitro/arbos/storage"
"github.com/offchainlabs/nitro/arbos/util"
)
diff --git a/arbos/retryable_test.go b/arbos/retryable_test.go
index 2eccaea6c2..b2989de331 100644
--- a/arbos/retryable_test.go
+++ b/arbos/retryable_test.go
@@ -9,17 +9,17 @@ import (
"testing"
"time"
+ "github.com/ethereum/go-ethereum/common"
+ "github.com/ethereum/go-ethereum/core/state"
+ "github.com/ethereum/go-ethereum/core/vm"
+ "github.com/ethereum/go-ethereum/params"
+
"github.com/offchainlabs/nitro/arbos/arbosState"
"github.com/offchainlabs/nitro/arbos/burn"
"github.com/offchainlabs/nitro/arbos/retryables"
"github.com/offchainlabs/nitro/arbos/util"
"github.com/offchainlabs/nitro/util/colors"
"github.com/offchainlabs/nitro/util/testhelpers"
-
- "github.com/ethereum/go-ethereum/common"
- "github.com/ethereum/go-ethereum/core/state"
- "github.com/ethereum/go-ethereum/core/vm"
- "github.com/ethereum/go-ethereum/params"
)
func TestOpenNonexistentRetryable(t *testing.T) {
diff --git a/arbos/retryables/retryable.go b/arbos/retryables/retryable.go
index 5938244782..23ba2458ff 100644
--- a/arbos/retryables/retryable.go
+++ b/arbos/retryables/retryable.go
@@ -12,6 +12,7 @@ import (
"github.com/ethereum/go-ethereum/core/types"
"github.com/ethereum/go-ethereum/core/vm"
"github.com/ethereum/go-ethereum/crypto"
+
"github.com/offchainlabs/nitro/arbos/storage"
"github.com/offchainlabs/nitro/arbos/util"
"github.com/offchainlabs/nitro/util/arbmath"
diff --git a/arbos/storage/queue.go b/arbos/storage/queue.go
index 9c02dc1ee7..3c852a5743 100644
--- a/arbos/storage/queue.go
+++ b/arbos/storage/queue.go
@@ -4,9 +4,9 @@
package storage
import (
- "github.com/offchainlabs/nitro/arbos/util"
-
"github.com/ethereum/go-ethereum/common"
+
+ "github.com/offchainlabs/nitro/arbos/util"
)
type Queue struct {
diff --git a/arbos/storage/storage.go b/arbos/storage/storage.go
index bc16491af0..63db8ee928 100644
--- a/arbos/storage/storage.go
+++ b/arbos/storage/storage.go
@@ -21,6 +21,7 @@ import (
"github.com/ethereum/go-ethereum/triedb"
"github.com/ethereum/go-ethereum/triedb/hashdb"
"github.com/ethereum/go-ethereum/triedb/pathdb"
+
"github.com/offchainlabs/nitro/arbos/burn"
"github.com/offchainlabs/nitro/arbos/util"
"github.com/offchainlabs/nitro/util/arbmath"
diff --git a/arbos/storage/storage_test.go b/arbos/storage/storage_test.go
index b2e8bdb2ea..dd2c40b8f0 100644
--- a/arbos/storage/storage_test.go
+++ b/arbos/storage/storage_test.go
@@ -11,6 +11,7 @@ import (
"github.com/ethereum/go-ethereum/common"
"github.com/ethereum/go-ethereum/common/math"
"github.com/ethereum/go-ethereum/crypto"
+
"github.com/offchainlabs/nitro/arbos/burn"
"github.com/offchainlabs/nitro/util/arbmath"
)
diff --git a/arbos/tx_processor.go b/arbos/tx_processor.go
index d6c35339f6..aec08b15b5 100644
--- a/arbos/tx_processor.go
+++ b/arbos/tx_processor.go
@@ -9,22 +9,20 @@ import (
"math/big"
"github.com/holiman/uint256"
- "github.com/offchainlabs/nitro/arbos/l1pricing"
-
- "github.com/offchainlabs/nitro/arbos/util"
- "github.com/offchainlabs/nitro/util/arbmath"
+ "github.com/ethereum/go-ethereum/common"
+ "github.com/ethereum/go-ethereum/core"
"github.com/ethereum/go-ethereum/core/types"
+ "github.com/ethereum/go-ethereum/core/vm"
"github.com/ethereum/go-ethereum/log"
+ glog "github.com/ethereum/go-ethereum/log"
"github.com/ethereum/go-ethereum/params"
- "github.com/offchainlabs/nitro/arbos/retryables"
"github.com/offchainlabs/nitro/arbos/arbosState"
-
- "github.com/ethereum/go-ethereum/common"
- "github.com/ethereum/go-ethereum/core"
- "github.com/ethereum/go-ethereum/core/vm"
- glog "github.com/ethereum/go-ethereum/log"
+ "github.com/offchainlabs/nitro/arbos/l1pricing"
+ "github.com/offchainlabs/nitro/arbos/retryables"
+ "github.com/offchainlabs/nitro/arbos/util"
+ "github.com/offchainlabs/nitro/util/arbmath"
)
var arbosAddress = types.ArbosAddress
@@ -153,13 +151,17 @@ func (p *TxProcessor) StartTxHook() (endTxNow bool, gasUsed uint64, err error, r
}
evm.IncrementDepth() // fake a call
from := p.msg.From
- tracer.CaptureStart(evm, from, *p.msg.To, false, p.msg.Data, p.msg.GasLimit, p.msg.Value)
+ if tracer.OnEnter != nil {
+ tracer.OnEnter(evm.Depth(), byte(vm.CALL), from, *p.msg.To, p.msg.Data, p.msg.GasLimit, p.msg.Value)
+ }
tracingInfo = util.NewTracingInfo(evm, from, *p.msg.To, util.TracingDuringEVM)
p.state = arbosState.OpenSystemArbosStateOrPanic(evm.StateDB, tracingInfo, false)
return func() {
- tracer.CaptureEnd(nil, p.state.Burner.Burned(), nil)
+ if tracer.OnExit != nil {
+ tracer.OnExit(evm.Depth(), nil, p.state.Burner.Burned(), nil, false)
+ }
evm.DecrementDepth() // fake the return to the first faked call
tracingInfo = util.NewTracingInfo(evm, from, *p.msg.To, util.TracingAfterEVM)
diff --git a/arbos/util/retryable_encoding_test.go b/arbos/util/retryable_encoding_test.go
index d7a5480138..b74983ed0b 100644
--- a/arbos/util/retryable_encoding_test.go
+++ b/arbos/util/retryable_encoding_test.go
@@ -10,16 +10,15 @@ import (
"testing"
"time"
- "github.com/ethereum/go-ethereum/crypto"
-
"github.com/ethereum/go-ethereum/accounts/abi/bind"
"github.com/ethereum/go-ethereum/accounts/abi/bind/backends"
+ "github.com/ethereum/go-ethereum/common"
"github.com/ethereum/go-ethereum/core"
+ "github.com/ethereum/go-ethereum/core/types"
+ "github.com/ethereum/go-ethereum/crypto"
+
"github.com/offchainlabs/nitro/solgen/go/precompilesgen"
"github.com/offchainlabs/nitro/util/testhelpers"
-
- "github.com/ethereum/go-ethereum/common"
- "github.com/ethereum/go-ethereum/core/types"
)
func TestRetryableEncoding(t *testing.T) {
diff --git a/arbos/util/storage_cache.go b/arbos/util/storage_cache.go
index 9573d1ffc7..a9be5fe870 100644
--- a/arbos/util/storage_cache.go
+++ b/arbos/util/storage_cache.go
@@ -4,8 +4,9 @@
package util
import (
- "github.com/ethereum/go-ethereum/common"
"slices"
+
+ "github.com/ethereum/go-ethereum/common"
)
type storageCacheEntry struct {
diff --git a/arbos/util/storage_cache_test.go b/arbos/util/storage_cache_test.go
index 9fd452851d..0ba2c5285e 100644
--- a/arbos/util/storage_cache_test.go
+++ b/arbos/util/storage_cache_test.go
@@ -7,8 +7,10 @@ import (
"slices"
"testing"
- "github.com/ethereum/go-ethereum/common"
"github.com/google/go-cmp/cmp"
+
+ "github.com/ethereum/go-ethereum/common"
+
"github.com/offchainlabs/nitro/util/testhelpers"
)
diff --git a/arbos/util/tracing.go b/arbos/util/tracing.go
index c4a7168977..f092d32c2d 100644
--- a/arbos/util/tracing.go
+++ b/arbos/util/tracing.go
@@ -7,10 +7,12 @@ import (
"encoding/binary"
"math/big"
+ "github.com/holiman/uint256"
+
"github.com/ethereum/go-ethereum/common"
+ "github.com/ethereum/go-ethereum/core/tracing"
"github.com/ethereum/go-ethereum/core/vm"
"github.com/ethereum/go-ethereum/log"
- "github.com/holiman/uint256"
)
type TracingScenario uint64
@@ -22,7 +24,7 @@ const (
)
type TracingInfo struct {
- Tracer vm.EVMLogger
+ Tracer *tracing.Hooks
Scenario TracingScenario
Contract *vm.Contract
Depth int
@@ -59,8 +61,10 @@ func (info *TracingInfo) RecordStorageGet(key common.Hash) {
Stack: TracingStackFromArgs(HashToUint256(key)),
Contract: info.Contract,
}
- tracer.CaptureState(0, vm.SLOAD, 0, 0, scope, []byte{}, info.Depth, nil)
- } else {
+ if tracer.OnOpcode != nil {
+ tracer.OnOpcode(0, byte(vm.SLOAD), 0, 0, scope, []byte{}, info.Depth, nil)
+ }
+ } else if tracer.CaptureArbitrumStorageGet != nil {
tracer.CaptureArbitrumStorageGet(key, info.Depth, info.Scenario == TracingBeforeEVM)
}
}
@@ -73,8 +77,10 @@ func (info *TracingInfo) RecordStorageSet(key, value common.Hash) {
Stack: TracingStackFromArgs(HashToUint256(key), HashToUint256(value)),
Contract: info.Contract,
}
- tracer.CaptureState(0, vm.SSTORE, 0, 0, scope, []byte{}, info.Depth, nil)
- } else {
+ if tracer.OnOpcode != nil {
+ tracer.OnOpcode(0, byte(vm.SSTORE), 0, 0, scope, []byte{}, info.Depth, nil)
+ }
+ } else if tracer.CaptureArbitrumStorageSet != nil {
tracer.CaptureArbitrumStorageSet(key, value, info.Depth, info.Scenario == TracingBeforeEVM)
}
}
@@ -98,8 +104,12 @@ func (info *TracingInfo) MockCall(input []byte, gas uint64, from, to common.Addr
),
Contract: contract,
}
- tracer.CaptureState(0, vm.CALL, 0, 0, scope, []byte{}, depth, nil)
- tracer.CaptureEnter(vm.INVALID, from, to, input, 0, amount)
+ if tracer.OnOpcode != nil {
+ tracer.OnOpcode(0, byte(vm.CALL), 0, 0, scope, []byte{}, depth, nil)
+ }
+ if tracer.OnEnter != nil {
+ tracer.OnEnter(depth, byte(vm.CALL), from, to, input, gas, amount)
+ }
retScope := &vm.ScopeContext{
Memory: vm.NewMemory(),
@@ -109,8 +119,12 @@ func (info *TracingInfo) MockCall(input []byte, gas uint64, from, to common.Addr
),
Contract: contract,
}
- tracer.CaptureState(0, vm.RETURN, 0, 0, retScope, []byte{}, depth+1, nil)
- tracer.CaptureExit(nil, 0, nil)
+ if tracer.OnOpcode != nil {
+ tracer.OnOpcode(0, byte(vm.RETURN), 0, 0, retScope, []byte{}, depth+1, nil)
+ }
+ if tracer.OnExit != nil {
+ tracer.OnExit(depth, nil, 0, nil, false)
+ }
popScope := &vm.ScopeContext{
Memory: vm.NewMemory(),
@@ -119,7 +133,9 @@ func (info *TracingInfo) MockCall(input []byte, gas uint64, from, to common.Addr
),
Contract: contract,
}
- tracer.CaptureState(0, vm.POP, 0, 0, popScope, []byte{}, depth, nil)
+ if tracer.OnOpcode != nil {
+ tracer.OnOpcode(0, byte(vm.POP), 0, 0, popScope, []byte{}, depth, nil)
+ }
}
func (info *TracingInfo) CaptureEVMTraceForHostio(name string, args, outs []byte, startInk, endInk uint64) {
@@ -533,7 +549,9 @@ func (info *TracingInfo) captureState(op vm.OpCode, gas uint64, cost uint64, mem
Stack: TracingStackFromArgs(stack...),
Contract: info.Contract,
}
- info.Tracer.CaptureState(0, op, gas, cost, scope, []byte{}, info.Depth, nil)
+ if info.Tracer.OnOpcode != nil {
+ info.Tracer.OnOpcode(0, byte(op), gas, cost, scope, []byte{}, info.Depth, nil)
+ }
}
func lenToBytes(data []byte) []byte {
diff --git a/arbos/util/transfer.go b/arbos/util/transfer.go
index e293ef13c3..37437e01f6 100644
--- a/arbos/util/transfer.go
+++ b/arbos/util/transfer.go
@@ -9,10 +9,13 @@ import (
"fmt"
"math/big"
+ "github.com/holiman/uint256"
+
"github.com/ethereum/go-ethereum/common"
+ "github.com/ethereum/go-ethereum/core/tracing"
"github.com/ethereum/go-ethereum/core/vm"
"github.com/ethereum/go-ethereum/log"
- "github.com/holiman/uint256"
+
"github.com/offchainlabs/nitro/util/arbmath"
)
@@ -28,20 +31,6 @@ func TransferBalance(
if amount.Sign() < 0 {
panic(fmt.Sprintf("Tried to transfer negative amount %v from %v to %v", amount, from, to))
}
- if from != nil {
- balance := evm.StateDB.GetBalance(*from)
- if arbmath.BigLessThan(balance.ToBig(), amount) {
- return fmt.Errorf("%w: addr %v have %v want %v", vm.ErrInsufficientBalance, *from, balance, amount)
- }
- evm.StateDB.SubBalance(*from, uint256.MustFromBig(amount))
- if evm.Context.ArbOSVersion >= 30 {
- // ensure the from account is "touched" for EIP-161
- evm.StateDB.AddBalance(*from, &uint256.Int{})
- }
- }
- if to != nil {
- evm.StateDB.AddBalance(*to, uint256.MustFromBig(amount))
- }
if tracer := evm.Config.Tracer; tracer != nil {
if evm.Depth() != 0 && scenario != TracingDuringEVM {
// A non-zero depth implies this transfer is occurring inside EVM execution
@@ -50,24 +39,41 @@ func TransferBalance(
}
if scenario != TracingDuringEVM {
- tracer.CaptureArbitrumTransfer(evm, from, to, amount, scenario == TracingBeforeEVM, purpose)
- return nil
- }
+ if tracer.CaptureArbitrumTransfer != nil {
+ tracer.CaptureArbitrumTransfer(from, to, amount, scenario == TracingBeforeEVM, purpose)
+ }
+ } else {
+ fromCopy := from
+ toCopy := to
+ if fromCopy == nil {
+ fromCopy = &common.Address{}
+ }
+ if toCopy == nil {
+ toCopy = &common.Address{}
+ }
- if from == nil {
- from = &common.Address{}
+ info := &TracingInfo{
+ Tracer: evm.Config.Tracer,
+ Scenario: scenario,
+ Contract: vm.NewContract(addressHolder{*toCopy}, addressHolder{*fromCopy}, uint256.NewInt(0), 0),
+ Depth: evm.Depth(),
+ }
+ info.MockCall([]byte{}, 0, *fromCopy, *toCopy, amount)
}
- if to == nil {
- to = &common.Address{}
+ }
+ if from != nil {
+ balance := evm.StateDB.GetBalance(*from)
+ if arbmath.BigLessThan(balance.ToBig(), amount) {
+ return fmt.Errorf("%w: addr %v have %v want %v", vm.ErrInsufficientBalance, *from, balance, amount)
}
-
- info := &TracingInfo{
- Tracer: evm.Config.Tracer,
- Scenario: scenario,
- Contract: vm.NewContract(addressHolder{*to}, addressHolder{*from}, uint256.NewInt(0), 0),
- Depth: evm.Depth(),
+ evm.StateDB.SubBalance(*from, uint256.MustFromBig(amount), tracing.BalanceChangeTransfer)
+ if evm.Context.ArbOSVersion >= 30 {
+ // ensure the from account is "touched" for EIP-161
+ evm.StateDB.AddBalance(*from, &uint256.Int{}, tracing.BalanceChangeTransfer)
}
- info.MockCall([]byte{}, 0, *from, *to, amount)
+ }
+ if to != nil {
+ evm.StateDB.AddBalance(*to, uint256.MustFromBig(amount), tracing.BalanceChangeTransfer)
}
return nil
}
diff --git a/arbos/util/util.go b/arbos/util/util.go
index 69d90171a0..abb7135757 100644
--- a/arbos/util/util.go
+++ b/arbos/util/util.go
@@ -14,6 +14,7 @@ import (
"github.com/ethereum/go-ethereum/accounts/abi"
"github.com/ethereum/go-ethereum/common"
"github.com/ethereum/go-ethereum/core/types"
+
"github.com/offchainlabs/nitro/solgen/go/precompilesgen"
pgen "github.com/offchainlabs/nitro/solgen/go/precompilesgen"
"github.com/offchainlabs/nitro/util/arbmath"
diff --git a/arbstate/daprovider/reader.go b/arbstate/daprovider/reader.go
index 488b156454..e2fd884340 100644
--- a/arbstate/daprovider/reader.go
+++ b/arbstate/daprovider/reader.go
@@ -9,6 +9,7 @@ import (
"github.com/ethereum/go-ethereum/common"
"github.com/ethereum/go-ethereum/log"
+
"github.com/offchainlabs/nitro/arbutil"
"github.com/offchainlabs/nitro/util/blobs"
)
diff --git a/arbstate/inbox_fuzz_test.go b/arbstate/inbox_fuzz_test.go
index 5ede321810..5a77b7e298 100644
--- a/arbstate/inbox_fuzz_test.go
+++ b/arbstate/inbox_fuzz_test.go
@@ -10,6 +10,7 @@ import (
"testing"
"github.com/ethereum/go-ethereum/common"
+
"github.com/offchainlabs/nitro/arbos/arbostypes"
"github.com/offchainlabs/nitro/arbstate/daprovider"
)
diff --git a/arbutil/hash_test.go b/arbutil/hash_test.go
index 2b93353d08..4b39bf328e 100644
--- a/arbutil/hash_test.go
+++ b/arbutil/hash_test.go
@@ -4,8 +4,9 @@ import (
"bytes"
"testing"
- "github.com/ethereum/go-ethereum/common"
"github.com/google/go-cmp/cmp"
+
+ "github.com/ethereum/go-ethereum/common"
)
func TestSlotAddress(t *testing.T) {
diff --git a/blocks_reexecutor/blocks_reexecutor.go b/blocks_reexecutor/blocks_reexecutor.go
index b43999a7db..d074457626 100644
--- a/blocks_reexecutor/blocks_reexecutor.go
+++ b/blocks_reexecutor/blocks_reexecutor.go
@@ -7,24 +7,33 @@ import (
"math/rand"
"runtime"
"strings"
+ "sync"
+
+ flag "github.com/spf13/pflag"
"github.com/ethereum/go-ethereum/arbitrum"
+ "github.com/ethereum/go-ethereum/common"
"github.com/ethereum/go-ethereum/core"
+ "github.com/ethereum/go-ethereum/core/rawdb"
"github.com/ethereum/go-ethereum/core/state"
"github.com/ethereum/go-ethereum/core/types"
+ "github.com/ethereum/go-ethereum/ethdb"
"github.com/ethereum/go-ethereum/log"
+ "github.com/ethereum/go-ethereum/triedb"
+ "github.com/ethereum/go-ethereum/triedb/hashdb"
+
"github.com/offchainlabs/nitro/util/arbmath"
"github.com/offchainlabs/nitro/util/stopwaiter"
- flag "github.com/spf13/pflag"
)
type Config struct {
- Enable bool `koanf:"enable"`
- Mode string `koanf:"mode"`
- StartBlock uint64 `koanf:"start-block"`
- EndBlock uint64 `koanf:"end-block"`
- Room int `koanf:"room"`
- BlocksPerThread uint64 `koanf:"blocks-per-thread"`
+ Enable bool `koanf:"enable"`
+ Mode string `koanf:"mode"`
+ StartBlock uint64 `koanf:"start-block"`
+ EndBlock uint64 `koanf:"end-block"`
+ Room int `koanf:"room"`
+ MinBlocksPerThread uint64 `koanf:"min-blocks-per-thread"`
+ TrieCleanLimit int `koanf:"trie-clean-limit"`
}
func (c *Config) Validate() error {
@@ -48,10 +57,11 @@ var DefaultConfig = Config{
}
var TestConfig = Config{
- Enable: true,
- Mode: "full",
- Room: runtime.NumCPU(),
- BlocksPerThread: 10,
+ Enable: true,
+ Mode: "full",
+ Room: runtime.NumCPU(),
+ MinBlocksPerThread: 10,
+ TrieCleanLimit: 600,
}
func ConfigAddOptions(prefix string, f *flag.FlagSet) {
@@ -60,22 +70,28 @@ func ConfigAddOptions(prefix string, f *flag.FlagSet) {
f.Uint64(prefix+".start-block", DefaultConfig.StartBlock, "first block number of the block range for re-execution")
f.Uint64(prefix+".end-block", DefaultConfig.EndBlock, "last block number of the block range for re-execution")
f.Int(prefix+".room", DefaultConfig.Room, "number of threads to parallelize blocks re-execution")
- f.Uint64(prefix+".blocks-per-thread", DefaultConfig.BlocksPerThread, "minimum number of blocks to execute per thread. When mode is random this acts as the size of random block range sample")
+ f.Uint64(prefix+".min-blocks-per-thread", DefaultConfig.MinBlocksPerThread, "minimum number of blocks to execute per thread. When mode is random this acts as the size of random block range sample")
+ f.Int(prefix+".trie-clean-limit", DefaultConfig.TrieCleanLimit, "memory allowance (MB) to use for caching trie nodes in memory")
}
type BlocksReExecutor struct {
stopwaiter.StopWaiter
- config *Config
- blockchain *core.BlockChain
- stateFor arbitrum.StateForHeaderFunction
- done chan struct{}
- fatalErrChan chan error
- startBlock uint64
- currentBlock uint64
- blocksPerThread uint64
+ config *Config
+ db state.Database
+ blockchain *core.BlockChain
+ stateFor arbitrum.StateForHeaderFunction
+ done chan struct{}
+ fatalErrChan chan error
+ startBlock uint64
+ currentBlock uint64
+ minBlocksPerThread uint64
+ mutex sync.Mutex
}
-func New(c *Config, blockchain *core.BlockChain, fatalErrChan chan error) *BlocksReExecutor {
+func New(c *Config, blockchain *core.BlockChain, ethDb ethdb.Database, fatalErrChan chan error) (*BlocksReExecutor, error) {
+ if blockchain.TrieDB().Scheme() == rawdb.PathScheme {
+ return nil, errors.New("blocksReExecutor not supported on pathdb")
+ }
start := c.StartBlock
end := c.EndBlock
chainStart := blockchain.Config().ArbitrumChainParams.GenesisBlockNum
@@ -92,13 +108,13 @@ func New(c *Config, blockchain *core.BlockChain, fatalErrChan chan error) *Block
log.Warn("invalid state reexecutor's end block number, resetting to latest", "end", end, "latest", chainEnd)
end = chainEnd
}
- blocksPerThread := uint64(10000)
- if c.BlocksPerThread != 0 {
- blocksPerThread = c.BlocksPerThread
+ minBlocksPerThread := uint64(10000)
+ if c.MinBlocksPerThread != 0 {
+ minBlocksPerThread = c.MinBlocksPerThread
}
if c.Mode == "random" && end != start {
- // Reexecute a range of 10000 or (non-zero) c.BlocksPerThread number of blocks between start to end picked randomly
- rng := blocksPerThread
+ // Reexecute a range of 10000 or (non-zero) c.MinBlocksPerThread number of blocks between start to end picked randomly
+ rng := minBlocksPerThread
if rng > end-start {
rng = end - start
}
@@ -111,32 +127,46 @@ func New(c *Config, blockchain *core.BlockChain, fatalErrChan chan error) *Block
if start > 0 && start != chainStart {
start--
}
- // Divide work equally among available threads when BlocksPerThread is zero
- if c.BlocksPerThread == 0 {
+ // Divide work equally among available threads when MinBlocksPerThread is zero
+ if c.MinBlocksPerThread == 0 {
// #nosec G115
- work := (end - start) / uint64(c.Room)
+ work := (end - start) / uint64(c.Room*2)
if work > 0 {
- blocksPerThread = work
+ minBlocksPerThread = work
}
}
- return &BlocksReExecutor{
- config: c,
- blockchain: blockchain,
- currentBlock: end,
- startBlock: start,
- blocksPerThread: blocksPerThread,
- done: make(chan struct{}, c.Room),
- fatalErrChan: fatalErrChan,
- stateFor: func(header *types.Header) (*state.StateDB, arbitrum.StateReleaseFunc, error) {
- state, err := blockchain.StateAt(header.Root)
- return state, arbitrum.NoopStateRelease, err
- },
+ hashConfig := *hashdb.Defaults
+ hashConfig.CleanCacheSize = c.TrieCleanLimit * 1024 * 1024
+ trieConfig := triedb.Config{
+ Preimages: false,
+ HashDB: &hashConfig,
+ }
+ blocksReExecutor := &BlocksReExecutor{
+ config: c,
+ db: state.NewDatabaseWithConfig(ethDb, &trieConfig),
+ blockchain: blockchain,
+ currentBlock: end,
+ startBlock: start,
+ minBlocksPerThread: minBlocksPerThread,
+ done: make(chan struct{}, c.Room),
+ fatalErrChan: fatalErrChan,
}
+ blocksReExecutor.stateFor = func(header *types.Header) (*state.StateDB, arbitrum.StateReleaseFunc, error) {
+ blocksReExecutor.mutex.Lock()
+ defer blocksReExecutor.mutex.Unlock()
+ sdb, err := state.New(header.Root, blocksReExecutor.db, nil)
+ if err == nil {
+ _ = blocksReExecutor.db.TrieDB().Reference(header.Root, common.Hash{}) // Will be dereferenced later in advanceStateUpToBlock
+ return sdb, func() { blocksReExecutor.dereferenceRoot(header.Root) }, nil
+ }
+ return sdb, arbitrum.NoopStateRelease, err
+ }
+ return blocksReExecutor, nil
}
-// LaunchBlocksReExecution launches the thread to apply blocks of range [currentBlock-s.config.BlocksPerThread, currentBlock] to the last available valid state
+// LaunchBlocksReExecution launches the thread to apply blocks of range [currentBlock-s.config.MinBlocksPerThread, currentBlock] to the last available valid state
func (s *BlocksReExecutor) LaunchBlocksReExecution(ctx context.Context, currentBlock uint64) uint64 {
- start := arbmath.SaturatingUSub(currentBlock, s.blocksPerThread)
+ start := arbmath.SaturatingUSub(currentBlock, s.minBlocksPerThread)
if start < s.startBlock {
start = s.startBlock
}
@@ -145,12 +175,10 @@ func (s *BlocksReExecutor) LaunchBlocksReExecution(ctx context.Context, currentB
s.fatalErrChan <- fmt.Errorf("blocksReExecutor failed to get last available state while searching for state at %d, err: %w", start, err)
return s.startBlock
}
- // NoOp
- defer release()
start = startHeader.Number.Uint64()
s.LaunchThread(func(ctx context.Context) {
- _, err := arbitrum.AdvanceStateUpToBlock(ctx, s.blockchain, startState, s.blockchain.GetHeaderByNumber(currentBlock), startHeader, nil)
- if err != nil {
+ log.Info("Starting reexecution of blocks against historic state", "stateAt", start, "startBlock", start+1, "endBlock", currentBlock)
+ if err := s.advanceStateUpToBlock(ctx, startState, s.blockchain.GetHeaderByNumber(currentBlock), startHeader, release); err != nil {
s.fatalErrChan <- fmt.Errorf("blocksReExecutor errored advancing state from block %d to block %d, err: %w", start, currentBlock, err)
} else {
log.Info("Successfully reexecuted blocks against historic state", "stateAt", start, "startBlock", start+1, "endBlock", currentBlock)
@@ -199,3 +227,60 @@ func (s *BlocksReExecutor) Start(ctx context.Context, done chan struct{}) {
func (s *BlocksReExecutor) StopAndWait() {
s.StopWaiter.StopAndWait()
}
+
+func (s *BlocksReExecutor) dereferenceRoot(root common.Hash) {
+ s.mutex.Lock()
+ defer s.mutex.Unlock()
+ _ = s.db.TrieDB().Dereference(root)
+}
+
+func (s *BlocksReExecutor) commitStateAndVerify(statedb *state.StateDB, expected common.Hash, blockNumber uint64) (*state.StateDB, arbitrum.StateReleaseFunc, error) {
+ s.mutex.Lock()
+ defer s.mutex.Unlock()
+ result, err := statedb.Commit(blockNumber, true)
+ if err != nil {
+ return nil, arbitrum.NoopStateRelease, err
+ }
+ if result != expected {
+ return nil, arbitrum.NoopStateRelease, fmt.Errorf("bad root hash expected: %v got: %v", expected, result)
+ }
+ sdb, err := state.New(result, s.db, nil)
+ if err == nil {
+ _ = s.db.TrieDB().Reference(result, common.Hash{})
+ return sdb, func() { s.dereferenceRoot(result) }, nil
+ }
+ return sdb, arbitrum.NoopStateRelease, err
+}
+
+func (s *BlocksReExecutor) advanceStateUpToBlock(ctx context.Context, state *state.StateDB, targetHeader *types.Header, lastAvailableHeader *types.Header, lastRelease arbitrum.StateReleaseFunc) error {
+ targetBlockNumber := targetHeader.Number.Uint64()
+ blockToRecreate := lastAvailableHeader.Number.Uint64() + 1
+ prevHash := lastAvailableHeader.Hash()
+ var stateRelease arbitrum.StateReleaseFunc
+ defer func() {
+ lastRelease()
+ }()
+ var block *types.Block
+ var err error
+ for ctx.Err() == nil {
+ state, block, err = arbitrum.AdvanceStateByBlock(ctx, s.blockchain, state, blockToRecreate, prevHash, nil)
+ if err != nil {
+ return err
+ }
+ prevHash = block.Hash()
+ state, stateRelease, err = s.commitStateAndVerify(state, block.Root(), block.NumberU64())
+ if err != nil {
+ return fmt.Errorf("failed committing state for block %d : %w", blockToRecreate, err)
+ }
+ lastRelease()
+ lastRelease = stateRelease
+ if blockToRecreate >= targetBlockNumber {
+ if block.Hash() != targetHeader.Hash() {
+ return fmt.Errorf("blockHash doesn't match when recreating number: %d expected: %v got: %v", blockToRecreate, targetHeader.Hash(), block.Hash())
+ }
+ return nil
+ }
+ blockToRecreate++
+ }
+ return ctx.Err()
+}
diff --git a/broadcastclient/broadcastclient.go b/broadcastclient/broadcastclient.go
index 4e97ca8cd0..c4a3743276 100644
--- a/broadcastclient/broadcastclient.go
+++ b/broadcastclient/broadcastclient.go
@@ -25,6 +25,7 @@ import (
"github.com/ethereum/go-ethereum/log"
"github.com/ethereum/go-ethereum/metrics"
+
"github.com/offchainlabs/nitro/arbutil"
m "github.com/offchainlabs/nitro/broadcaster/message"
"github.com/offchainlabs/nitro/util/contracts"
@@ -129,9 +130,10 @@ type BroadcastClient struct {
chainId uint64
- // Protects conn and shuttingDown
- connMutex sync.Mutex
- conn net.Conn
+ // Protects conn, shuttingDown and compression
+ connMutex sync.Mutex
+ conn net.Conn
+ compression bool
retryCount atomic.Int64
@@ -298,7 +300,7 @@ func (bc *BroadcastClient) connect(ctx context.Context, nextSeqNum arbutil.Messa
return nil, nil
}
- conn, br, _, err := timeoutDialer.Dial(ctx, bc.websocketUrl)
+ conn, br, hs, err := timeoutDialer.Dial(ctx, bc.websocketUrl)
if errors.Is(err, ErrIncorrectFeedServerVersion) || errors.Is(err, ErrIncorrectChainId) {
return nil, err
}
@@ -324,6 +326,24 @@ func (bc *BroadcastClient) connect(ctx context.Context, nextSeqNum arbutil.Messa
return nil, ErrMissingFeedServerVersion
}
+ compressionNegotiated := false
+ for _, ext := range hs.Extensions {
+ if ext.Equal(deflateExt) {
+ compressionNegotiated = true
+ break
+ }
+ }
+ if !compressionNegotiated && config.EnableCompression {
+ log.Warn("Compression was not negotiated when connecting to feed server.")
+ }
+ if compressionNegotiated && !config.EnableCompression {
+ err := conn.Close()
+ if err != nil {
+ return nil, fmt.Errorf("error closing connection when negotiated disabled extension: %w", err)
+ }
+ return nil, errors.New("error dialing feed server: negotiated compression ws extension, but it is disabled")
+ }
+
var earlyFrameData io.Reader
if br != nil {
// Depending on how long the client takes to read the response, there may be
@@ -338,6 +358,7 @@ func (bc *BroadcastClient) connect(ctx context.Context, nextSeqNum arbutil.Messa
bc.connMutex.Lock()
bc.conn = conn
+ bc.compression = compressionNegotiated
bc.connMutex.Unlock()
log.Info("Feed connected", "feedServerVersion", feedServerVersion, "chainId", chainId, "requestedSeqNum", nextSeqNum)
@@ -361,7 +382,7 @@ func (bc *BroadcastClient) startBackgroundReader(earlyFrameData io.Reader) {
var op ws.OpCode
var err error
config := bc.config()
- msg, op, err = wsbroadcastserver.ReadData(ctx, bc.conn, earlyFrameData, config.Timeout, ws.StateClientSide, config.EnableCompression, flateReader)
+ msg, op, err = wsbroadcastserver.ReadData(ctx, bc.conn, earlyFrameData, config.Timeout, ws.StateClientSide, bc.compression, flateReader)
if err != nil {
if bc.isShuttingDown() {
return
diff --git a/broadcastclient/broadcastclient_test.go b/broadcastclient/broadcastclient_test.go
index a499628cd5..0d9b8443e6 100644
--- a/broadcastclient/broadcastclient_test.go
+++ b/broadcastclient/broadcastclient_test.go
@@ -30,43 +30,30 @@ import (
"github.com/offchainlabs/nitro/wsbroadcastserver"
)
-func TestReceiveMessagesWithoutCompression(t *testing.T) {
+func TestReceiveMessages(t *testing.T) {
t.Parallel()
- testReceiveMessages(t, false, false, false, false)
-}
-
-func TestReceiveMessagesWithCompression(t *testing.T) {
- t.Parallel()
- testReceiveMessages(t, true, true, false, false)
-}
-
-func TestReceiveMessagesWithServerOptionalCompression(t *testing.T) {
- t.Parallel()
- testReceiveMessages(t, true, true, false, false)
-}
-
-func TestReceiveMessagesWithServerOnlyCompression(t *testing.T) {
- t.Parallel()
- testReceiveMessages(t, false, true, false, false)
-}
-
-func TestReceiveMessagesWithClientOnlyCompression(t *testing.T) {
- t.Parallel()
- testReceiveMessages(t, true, false, false, false)
-}
-
-func TestReceiveMessagesWithRequiredCompression(t *testing.T) {
- t.Parallel()
- testReceiveMessages(t, true, true, true, false)
-}
-
-func TestReceiveMessagesWithRequiredCompressionButClientDisabled(t *testing.T) {
- t.Parallel()
- testReceiveMessages(t, false, true, true, true)
+ t.Run("withoutCompression", func(t *testing.T) {
+ testReceiveMessages(t, false, false, false, false)
+ })
+ t.Run("withServerOptionalCompression", func(t *testing.T) {
+ testReceiveMessages(t, true, true, false, false)
+ })
+ t.Run("withServerOnlyCompression", func(t *testing.T) {
+ testReceiveMessages(t, false, true, false, false)
+ })
+ t.Run("withClientOnlyCompression", func(t *testing.T) {
+ testReceiveMessages(t, true, false, false, false)
+ })
+ t.Run("withRequiredCompression", func(t *testing.T) {
+ testReceiveMessages(t, true, true, true, false)
+ })
+ t.Run("withRequiredCompressionButClientDisabled", func(t *testing.T) {
+ testReceiveMessages(t, false, true, true, true)
+ })
}
func testReceiveMessages(t *testing.T, clientCompression bool, serverCompression bool, serverRequire bool, expectNoMessagesReceived bool) {
- t.Helper()
+ t.Parallel()
ctx, cancel := context.WithCancel(context.Background())
defer cancel()
@@ -138,7 +125,11 @@ func TestInvalidSignature(t *testing.T) {
badPrivateKey, err := crypto.GenerateKey()
Require(t, err)
badPublicKey := badPrivateKey.Public()
- badSequencerAddr := crypto.PubkeyToAddress(*badPublicKey.(*ecdsa.PublicKey))
+ badECDSA, ok := badPublicKey.(*ecdsa.PublicKey)
+ if !ok {
+ t.Fatal("badPublicKey is not an ecdsa.PublicKey")
+ }
+ badSequencerAddr := crypto.PubkeyToAddress(*badECDSA)
config := DefaultTestConfig
ts := NewDummyTransactionStreamer(chainId, &badSequencerAddr)
@@ -151,6 +142,7 @@ func TestInvalidSignature(t *testing.T) {
nil,
fatalErrChan,
&badSequencerAddr,
+ t,
)
Require(t, err)
broadcastClient.Start(ctx)
@@ -201,8 +193,9 @@ func (ts *dummyTransactionStreamer) AddBroadcastMessages(feedMessages []*m.Broad
return nil
}
-func newTestBroadcastClient(config Config, listenerAddress net.Addr, chainId uint64, currentMessageCount arbutil.MessageIndex, txStreamer TransactionStreamerInterface, confirmedSequenceNumberListener chan arbutil.MessageIndex, feedErrChan chan error, validAddr *common.Address) (*BroadcastClient, error) {
- port := listenerAddress.(*net.TCPAddr).Port
+func newTestBroadcastClient(config Config, listenerAddress net.Addr, chainId uint64, currentMessageCount arbutil.MessageIndex, txStreamer TransactionStreamerInterface, confirmedSequenceNumberListener chan arbutil.MessageIndex, feedErrChan chan error, validAddr *common.Address, t *testing.T) (*BroadcastClient, error) {
+ t.Helper()
+ port := testhelpers.AddrTCPPort(listenerAddress, t)
var av contracts.AddressVerifierInterface
if validAddr != nil {
config.Verify.AcceptSequencer = true
@@ -225,6 +218,7 @@ func startMakeBroadcastClient(ctx context.Context, t *testing.T, clientConfig Co
nil,
feedErrChan,
sequencerAddr,
+ t,
)
Require(t, err)
broadcastClient.Start(ctx)
@@ -313,6 +307,7 @@ func TestServerClientDisconnect(t *testing.T) {
nil,
feedErrChan,
&sequencerAddr,
+ t,
)
Require(t, err)
broadcastClient.Start(ctx)
@@ -384,6 +379,7 @@ func TestBroadcastClientConfirmedMessage(t *testing.T) {
confirmedSequenceNumberListener,
feedErrChan,
&sequencerAddr,
+ t,
)
Require(t, err)
broadcastClient.Start(ctx)
@@ -456,6 +452,7 @@ func TestServerIncorrectChainId(t *testing.T) {
nil,
badFeedErrChan,
&sequencerAddr,
+ t,
)
Require(t, err)
badBroadcastClient.Start(ctx)
@@ -515,6 +512,7 @@ func TestServerMissingChainId(t *testing.T) {
nil,
badFeedErrChan,
&sequencerAddr,
+ t,
)
Require(t, err)
badBroadcastClient.Start(ctx)
@@ -572,6 +570,7 @@ func TestServerIncorrectFeedServerVersion(t *testing.T) {
nil,
badFeedErrChan,
&sequencerAddr,
+ t,
)
Require(t, err)
badBroadcastClient.Start(ctx)
@@ -631,6 +630,7 @@ func TestServerMissingFeedServerVersion(t *testing.T) {
nil,
badFeedErrChan,
&sequencerAddr,
+ t,
)
Require(t, err)
badBroadcastClient.Start(ctx)
@@ -682,6 +682,7 @@ func TestBroadcastClientReconnectsOnServerDisconnect(t *testing.T) {
nil,
feedErrChan,
&sequencerAddr,
+ t,
)
Require(t, err)
broadcastClient.Start(ctx)
@@ -794,6 +795,7 @@ func connectAndGetCachedMessages(ctx context.Context, addr net.Addr, chainId uin
nil,
feedErrChan,
sequencerAddr,
+ t,
)
Require(t, err)
broadcastClient.Start(ctx)
diff --git a/broadcaster/backlog/backlog.go b/broadcaster/backlog/backlog.go
index b7b935fb7a..0897eedd10 100644
--- a/broadcaster/backlog/backlog.go
+++ b/broadcaster/backlog/backlog.go
@@ -8,6 +8,7 @@ import (
"github.com/ethereum/go-ethereum/log"
"github.com/ethereum/go-ethereum/metrics"
+
m "github.com/offchainlabs/nitro/broadcaster/message"
"github.com/offchainlabs/nitro/util/arbmath"
"github.com/offchainlabs/nitro/util/containers"
@@ -328,7 +329,13 @@ func newBacklogSegment() *backlogSegment {
func IsBacklogSegmentNil(segment BacklogSegment) bool {
if segment == nil {
return true
- } else if segment.(*backlogSegment) == nil {
+ }
+ bs, ok := segment.(*backlogSegment)
+ if !ok {
+ log.Error("error in backlogSegment type assertion: clearing backlog")
+ return false
+ }
+ if bs == nil {
return true
}
return false
diff --git a/broadcaster/message/message.go b/broadcaster/message/message.go
index 1e26e6da5e..f2439912f8 100644
--- a/broadcaster/message/message.go
+++ b/broadcaster/message/message.go
@@ -2,6 +2,7 @@ package message
import (
"github.com/ethereum/go-ethereum/common"
+
"github.com/offchainlabs/nitro/arbos/arbostypes"
"github.com/offchainlabs/nitro/arbutil"
)
diff --git a/broadcaster/message/message_serialization_test.go b/broadcaster/message/message_serialization_test.go
index 1d8c10e388..5fb9d55dda 100644
--- a/broadcaster/message/message_serialization_test.go
+++ b/broadcaster/message/message_serialization_test.go
@@ -10,6 +10,7 @@ import (
"math/big"
"github.com/ethereum/go-ethereum/common"
+
"github.com/offchainlabs/nitro/arbos/arbostypes"
)
diff --git a/cmd/chaininfo/chain_defaults.go b/cmd/chaininfo/chain_defaults.go
new file mode 100644
index 0000000000..a69472cafc
--- /dev/null
+++ b/cmd/chaininfo/chain_defaults.go
@@ -0,0 +1,141 @@
+// Copyright 2021-2024, Offchain Labs, Inc.
+// For license information, see https://github.com/nitro/blob/master/LICENSE
+
+package chaininfo
+
+import (
+ "encoding/json"
+ "fmt"
+ "math/big"
+
+ "github.com/ethereum/go-ethereum/params"
+)
+
+var DefaultChainConfigs map[string]*params.ChainConfig
+
+func init() {
+ var chainsInfo []ChainInfo
+ err := json.Unmarshal(DefaultChainsInfoBytes, &chainsInfo)
+ if err != nil {
+ panic(fmt.Errorf("error initializing default chainsInfo: %w", err))
+ }
+ if len(chainsInfo) == 0 {
+ panic("Default chainsInfo is empty")
+ }
+ DefaultChainConfigs = make(map[string]*params.ChainConfig)
+ for _, chainInfo := range chainsInfo {
+ DefaultChainConfigs[chainInfo.ChainName] = chainInfo.ChainConfig
+ }
+}
+
+func CopyArbitrumChainParams(arbChainParams params.ArbitrumChainParams) params.ArbitrumChainParams {
+ return params.ArbitrumChainParams{
+ EnableArbOS: arbChainParams.EnableArbOS,
+ AllowDebugPrecompiles: arbChainParams.AllowDebugPrecompiles,
+ DataAvailabilityCommittee: arbChainParams.DataAvailabilityCommittee,
+ InitialArbOSVersion: arbChainParams.InitialArbOSVersion,
+ InitialChainOwner: arbChainParams.InitialChainOwner,
+ GenesisBlockNum: arbChainParams.GenesisBlockNum,
+ MaxCodeSize: arbChainParams.MaxCodeSize,
+ MaxInitCodeSize: arbChainParams.MaxInitCodeSize,
+ }
+}
+
+func CopyChainConfig(chainConfig *params.ChainConfig) *params.ChainConfig {
+ copy := ¶ms.ChainConfig{
+ DAOForkSupport: chainConfig.DAOForkSupport,
+ ArbitrumChainParams: CopyArbitrumChainParams(chainConfig.ArbitrumChainParams),
+ Clique: ¶ms.CliqueConfig{
+ Period: chainConfig.Clique.Period,
+ Epoch: chainConfig.Clique.Epoch,
+ },
+ }
+ if chainConfig.ChainID != nil {
+ copy.ChainID = new(big.Int).Set(chainConfig.ChainID)
+ }
+ if chainConfig.HomesteadBlock != nil {
+ copy.HomesteadBlock = new(big.Int).Set(chainConfig.HomesteadBlock)
+ }
+ if chainConfig.DAOForkBlock != nil {
+ copy.DAOForkBlock = new(big.Int).Set(chainConfig.DAOForkBlock)
+ }
+ if chainConfig.EIP150Block != nil {
+ copy.EIP150Block = new(big.Int).Set(chainConfig.EIP150Block)
+ }
+ if chainConfig.EIP155Block != nil {
+ copy.EIP155Block = new(big.Int).Set(chainConfig.EIP155Block)
+ }
+ if chainConfig.EIP158Block != nil {
+ copy.EIP158Block = new(big.Int).Set(chainConfig.EIP158Block)
+ }
+ if chainConfig.ByzantiumBlock != nil {
+ copy.ByzantiumBlock = new(big.Int).Set(chainConfig.ByzantiumBlock)
+ }
+ if chainConfig.ConstantinopleBlock != nil {
+ copy.ConstantinopleBlock = new(big.Int).Set(chainConfig.ConstantinopleBlock)
+ }
+ if chainConfig.PetersburgBlock != nil {
+ copy.PetersburgBlock = new(big.Int).Set(chainConfig.PetersburgBlock)
+ }
+ if chainConfig.IstanbulBlock != nil {
+ copy.IstanbulBlock = new(big.Int).Set(chainConfig.IstanbulBlock)
+ }
+ if chainConfig.MuirGlacierBlock != nil {
+ copy.MuirGlacierBlock = new(big.Int).Set(chainConfig.MuirGlacierBlock)
+ }
+ if chainConfig.BerlinBlock != nil {
+ copy.BerlinBlock = new(big.Int).Set(chainConfig.BerlinBlock)
+ }
+ if chainConfig.LondonBlock != nil {
+ copy.LondonBlock = new(big.Int).Set(chainConfig.LondonBlock)
+ }
+ return copy
+}
+
+func fetchArbitrumChainParams(chainName string) params.ArbitrumChainParams {
+ originalConfig, ok := DefaultChainConfigs[chainName]
+ if !ok {
+ panic(fmt.Sprintf("%s chain config not found in DefaultChainConfigs", chainName))
+ }
+ return CopyArbitrumChainParams(originalConfig.ArbitrumChainParams)
+}
+
+func ArbitrumOneParams() params.ArbitrumChainParams {
+ return fetchArbitrumChainParams("arb1")
+}
+func ArbitrumNovaParams() params.ArbitrumChainParams {
+ return fetchArbitrumChainParams("nova")
+}
+func ArbitrumRollupGoerliTestnetParams() params.ArbitrumChainParams {
+ return fetchArbitrumChainParams("goerli-rollup")
+}
+func ArbitrumDevTestParams() params.ArbitrumChainParams {
+ return fetchArbitrumChainParams("arb-dev-test")
+}
+func ArbitrumDevTestDASParams() params.ArbitrumChainParams {
+ return fetchArbitrumChainParams("anytrust-dev-test")
+}
+
+func fetchChainConfig(chainName string) *params.ChainConfig {
+ originalConfig, ok := DefaultChainConfigs[chainName]
+ if !ok {
+ panic(fmt.Sprintf("%s chain config not found in DefaultChainConfigs", chainName))
+ }
+ return CopyChainConfig(originalConfig)
+}
+
+func ArbitrumOneChainConfig() *params.ChainConfig {
+ return fetchChainConfig("arb1")
+}
+func ArbitrumNovaChainConfig() *params.ChainConfig {
+ return fetchChainConfig("nova")
+}
+func ArbitrumRollupGoerliTestnetChainConfig() *params.ChainConfig {
+ return fetchChainConfig("goerli-rollup")
+}
+func ArbitrumDevTestChainConfig() *params.ChainConfig {
+ return fetchChainConfig("arb-dev-test")
+}
+func ArbitrumDevTestDASChainConfig() *params.ChainConfig {
+ return fetchChainConfig("anytrust-dev-test")
+}
diff --git a/cmd/chaininfo/chain_defaults_test.go b/cmd/chaininfo/chain_defaults_test.go
new file mode 100644
index 0000000000..a19e5849a6
--- /dev/null
+++ b/cmd/chaininfo/chain_defaults_test.go
@@ -0,0 +1,17 @@
+// Copyright 2021-2024, Offchain Labs, Inc.
+// For license information, see https://github.com/nitro/blob/master/LICENSE
+
+package chaininfo
+
+import (
+ "reflect"
+ "testing"
+)
+
+func TestDefaultChainConfigsCopyCorrectly(t *testing.T) {
+ for _, chainName := range []string{"arb1", "nova", "goerli-rollup", "arb-dev-test", "anytrust-dev-test"} {
+ if !reflect.DeepEqual(DefaultChainConfigs[chainName], fetchChainConfig(chainName)) {
+ t.Fatalf("copy of %s default chain config mismatch", chainName)
+ }
+ }
+}
diff --git a/cmd/chaininfo/chain_info.go b/cmd/chaininfo/chain_info.go
index 13e586ced2..aa40d6514f 100644
--- a/cmd/chaininfo/chain_info.go
+++ b/cmd/chaininfo/chain_info.go
@@ -16,7 +16,7 @@ import (
)
//go:embed arbitrum_chain_info.json
-var DefaultChainInfo []byte
+var DefaultChainsInfoBytes []byte
type ChainInfo struct {
ChainName string `json:"chain-name"`
@@ -80,7 +80,7 @@ func ProcessChainInfo(chainId uint64, chainName string, l2ChainInfoFiles []strin
}
}
- chainInfo, err := findChainInfo(chainId, chainName, DefaultChainInfo)
+ chainInfo, err := findChainInfo(chainId, chainName, DefaultChainsInfoBytes)
if err != nil || chainInfo != nil {
return chainInfo, err
}
diff --git a/cmd/conf/chain.go b/cmd/conf/chain.go
index 28b06aad2b..435246e357 100644
--- a/cmd/conf/chain.go
+++ b/cmd/conf/chain.go
@@ -6,10 +6,11 @@ package conf
import (
"time"
+ flag "github.com/spf13/pflag"
+
"github.com/offchainlabs/nitro/cmd/genericconf"
"github.com/offchainlabs/nitro/util/headerreader"
"github.com/offchainlabs/nitro/util/rpcclient"
- flag "github.com/spf13/pflag"
)
type ParentChainConfig struct {
diff --git a/cmd/conf/database.go b/cmd/conf/database.go
index af18bacd57..8857b615f3 100644
--- a/cmd/conf/database.go
+++ b/cmd/conf/database.go
@@ -12,8 +12,9 @@ import (
"runtime"
"time"
- "github.com/ethereum/go-ethereum/ethdb/pebble"
flag "github.com/spf13/pflag"
+
+ "github.com/ethereum/go-ethereum/ethdb/pebble"
)
type PersistentConfig struct {
diff --git a/cmd/conf/init.go b/cmd/conf/init.go
index f01d99f8b7..cd2b6c8805 100644
--- a/cmd/conf/init.go
+++ b/cmd/conf/init.go
@@ -6,8 +6,9 @@ import (
"strings"
"time"
- "github.com/ethereum/go-ethereum/log"
"github.com/spf13/pflag"
+
+ "github.com/ethereum/go-ethereum/log"
)
type InitConfig struct {
@@ -20,6 +21,7 @@ type InitConfig struct {
DownloadPoll time.Duration `koanf:"download-poll"`
DevInit bool `koanf:"dev-init"`
DevInitAddress string `koanf:"dev-init-address"`
+ DevMaxCodeSize uint64 `koanf:"dev-max-code-size"`
DevInitBlockNum uint64 `koanf:"dev-init-blocknum"`
Empty bool `koanf:"empty"`
ImportWasm bool `koanf:"import-wasm"`
@@ -47,6 +49,7 @@ var InitConfigDefault = InitConfig{
DownloadPoll: time.Minute,
DevInit: false,
DevInitAddress: "",
+ DevMaxCodeSize: 0,
DevInitBlockNum: 0,
Empty: false,
ImportWasm: false,
@@ -75,6 +78,7 @@ func InitConfigAddOptions(prefix string, f *pflag.FlagSet) {
f.Bool(prefix+".dev-init", InitConfigDefault.DevInit, "init with dev data (1 account with balance) instead of file import")
f.String(prefix+".dev-init-address", InitConfigDefault.DevInitAddress, "Address of dev-account. Leave empty to use the dev-wallet.")
f.Uint64(prefix+".dev-init-blocknum", InitConfigDefault.DevInitBlockNum, "Number of preinit blocks. Must exist in ancient database.")
+ f.Uint64(prefix+".dev-max-code-size", InitConfigDefault.DevMaxCodeSize, "Max code size for dev accounts")
f.Bool(prefix+".empty", InitConfigDefault.Empty, "init with empty state")
f.Bool(prefix+".import-wasm", InitConfigDefault.ImportWasm, "if set, import the wasm directory when downloading a database (contains executable code - only use with highly trusted source)")
f.Bool(prefix+".then-quit", InitConfigDefault.ThenQuit, "quit after init is done")
diff --git a/cmd/dataavailability/data_availability_check.go b/cmd/dataavailability/data_availability_check.go
index d80c0475bf..e961215925 100644
--- a/cmd/dataavailability/data_availability_check.go
+++ b/cmd/dataavailability/data_availability_check.go
@@ -13,6 +13,8 @@ import (
"syscall"
"time"
+ flag "github.com/spf13/pflag"
+
"github.com/ethereum/go-ethereum"
"github.com/ethereum/go-ethereum/common"
"github.com/ethereum/go-ethereum/core/types"
@@ -27,8 +29,6 @@ import (
"github.com/offchainlabs/nitro/solgen/go/bridgegen"
"github.com/offchainlabs/nitro/util/metricsutil"
"github.com/offchainlabs/nitro/util/stopwaiter"
-
- flag "github.com/spf13/pflag"
)
// Data availability check is done to as to make sure that the data that is being stored by DAS is available at all time.
diff --git a/cmd/datool/datool.go b/cmd/datool/datool.go
index f791d8cbc4..06f94dc952 100644
--- a/cmd/datool/datool.go
+++ b/cmd/datool/datool.go
@@ -22,10 +22,10 @@ import (
"github.com/ethereum/go-ethereum/common"
"github.com/ethereum/go-ethereum/common/hexutil"
"github.com/ethereum/go-ethereum/crypto"
+
"github.com/offchainlabs/nitro/arbstate/daprovider"
"github.com/offchainlabs/nitro/cmd/genericconf"
"github.com/offchainlabs/nitro/cmd/util"
-
"github.com/offchainlabs/nitro/cmd/util/confighelpers"
"github.com/offchainlabs/nitro/das"
"github.com/offchainlabs/nitro/das/dastree"
diff --git a/cmd/dbconv/dbconv/config.go b/cmd/dbconv/dbconv/config.go
index 917f34261d..fdebda2d54 100644
--- a/cmd/dbconv/dbconv/config.go
+++ b/cmd/dbconv/dbconv/config.go
@@ -4,9 +4,10 @@ import (
"errors"
"fmt"
+ flag "github.com/spf13/pflag"
+
"github.com/offchainlabs/nitro/cmd/conf"
"github.com/offchainlabs/nitro/cmd/genericconf"
- flag "github.com/spf13/pflag"
)
type DBConfig struct {
diff --git a/cmd/dbconv/dbconv/dbconv.go b/cmd/dbconv/dbconv/dbconv.go
index 6a97df31c0..fdba1907c2 100644
--- a/cmd/dbconv/dbconv/dbconv.go
+++ b/cmd/dbconv/dbconv/dbconv.go
@@ -10,6 +10,7 @@ import (
"github.com/ethereum/go-ethereum/core/rawdb"
"github.com/ethereum/go-ethereum/ethdb"
"github.com/ethereum/go-ethereum/log"
+
"github.com/offchainlabs/nitro/util/dbutil"
)
diff --git a/cmd/dbconv/main.go b/cmd/dbconv/main.go
index 2d61c96552..f5aaced40b 100644
--- a/cmd/dbconv/main.go
+++ b/cmd/dbconv/main.go
@@ -6,13 +6,15 @@ import (
"os"
"time"
+ flag "github.com/spf13/pflag"
+
"github.com/ethereum/go-ethereum/log"
"github.com/ethereum/go-ethereum/metrics"
"github.com/ethereum/go-ethereum/metrics/exp"
+
"github.com/offchainlabs/nitro/cmd/dbconv/dbconv"
"github.com/offchainlabs/nitro/cmd/genericconf"
"github.com/offchainlabs/nitro/cmd/util/confighelpers"
- flag "github.com/spf13/pflag"
)
func parseDBConv(args []string) (*dbconv.DBConvConfig, error) {
diff --git a/cmd/deploy/deploy.go b/cmd/deploy/deploy.go
index c70ceb1d94..a597799b06 100644
--- a/cmd/deploy/deploy.go
+++ b/cmd/deploy/deploy.go
@@ -14,20 +14,20 @@ import (
"strings"
"time"
- "github.com/offchainlabs/nitro/cmd/chaininfo"
- "github.com/offchainlabs/nitro/cmd/genericconf"
- "github.com/offchainlabs/nitro/solgen/go/precompilesgen"
- "github.com/offchainlabs/nitro/util/headerreader"
- "github.com/offchainlabs/nitro/validator/server_common"
-
"github.com/ethereum/go-ethereum/common"
"github.com/ethereum/go-ethereum/core/types"
"github.com/ethereum/go-ethereum/ethclient"
"github.com/ethereum/go-ethereum/log"
"github.com/ethereum/go-ethereum/params"
+
"github.com/offchainlabs/nitro/arbnode"
+ "github.com/offchainlabs/nitro/cmd/chaininfo"
+ "github.com/offchainlabs/nitro/cmd/genericconf"
"github.com/offchainlabs/nitro/cmd/util"
deploycode "github.com/offchainlabs/nitro/deploy"
+ "github.com/offchainlabs/nitro/solgen/go/precompilesgen"
+ "github.com/offchainlabs/nitro/util/headerreader"
+ "github.com/offchainlabs/nitro/validator/server_common"
)
func main() {
diff --git a/cmd/genericconf/config.go b/cmd/genericconf/config.go
index 06e1fcd12d..408ba9a552 100644
--- a/cmd/genericconf/config.go
+++ b/cmd/genericconf/config.go
@@ -6,12 +6,13 @@ package genericconf
import (
"errors"
"io"
+ "log/slog"
"time"
+ flag "github.com/spf13/pflag"
+
"github.com/ethereum/go-ethereum/log"
"github.com/ethereum/go-ethereum/node"
- flag "github.com/spf13/pflag"
- "golang.org/x/exp/slog"
)
type ConfConfig struct {
diff --git a/cmd/genericconf/filehandler_test.go b/cmd/genericconf/filehandler_test.go
index daa9ed397c..7d24fbb69f 100644
--- a/cmd/genericconf/filehandler_test.go
+++ b/cmd/genericconf/filehandler_test.go
@@ -12,6 +12,7 @@ import (
"time"
"github.com/ethereum/go-ethereum/log"
+
"github.com/offchainlabs/nitro/util/testhelpers"
)
@@ -55,7 +56,11 @@ func readLogMessagesFromJSONFile(t *testing.T, path string) ([]string, error) {
if !ok {
testhelpers.FailImpl(t, "Incorrect record, msg key is missing", "record", record)
}
- messages = append(messages, msg.(string))
+ msgString, ok := msg.(string)
+ if !ok {
+ testhelpers.FailImpl(t, "Incorrect record, msg is not a string", "record", record)
+ }
+ messages = append(messages, msgString)
}
if errors.Is(err, io.EOF) {
return messages, nil
diff --git a/cmd/genericconf/liveconfig.go b/cmd/genericconf/liveconfig.go
index 1054140e9e..f256fe6612 100644
--- a/cmd/genericconf/liveconfig.go
+++ b/cmd/genericconf/liveconfig.go
@@ -9,6 +9,7 @@ import (
"time"
"github.com/ethereum/go-ethereum/log"
+
"github.com/offchainlabs/nitro/util/stopwaiter"
)
diff --git a/cmd/genericconf/logging.go b/cmd/genericconf/logging.go
index fa45953278..4cdaa5f3e8 100644
--- a/cmd/genericconf/logging.go
+++ b/cmd/genericconf/logging.go
@@ -8,8 +8,9 @@ import (
"os"
"sync"
- "github.com/ethereum/go-ethereum/log"
"gopkg.in/natefinch/lumberjack.v2"
+
+ "github.com/ethereum/go-ethereum/log"
)
var globalFileLoggerFactory = fileLoggerFactory{}
diff --git a/cmd/genericconf/loglevel.go b/cmd/genericconf/loglevel.go
index f7ad05a2cc..79cba22439 100644
--- a/cmd/genericconf/loglevel.go
+++ b/cmd/genericconf/loglevel.go
@@ -5,11 +5,11 @@ package genericconf
import (
"errors"
+ "log/slog"
"strconv"
"strings"
"github.com/ethereum/go-ethereum/log"
- "golang.org/x/exp/slog"
)
func ToSlogLevel(str string) (slog.Level, error) {
diff --git a/cmd/genericconf/pprof.go b/cmd/genericconf/pprof.go
index 9fd3a6f2a4..0bde03decd 100644
--- a/cmd/genericconf/pprof.go
+++ b/cmd/genericconf/pprof.go
@@ -3,7 +3,6 @@ package genericconf
import (
"fmt"
"net/http"
-
// Blank import pprof registers its HTTP handlers.
_ "net/http/pprof" // #nosec G108
diff --git a/cmd/nitro-val/config.go b/cmd/nitro-val/config.go
index 2adbe5e9aa..bca83277b3 100644
--- a/cmd/nitro-val/config.go
+++ b/cmd/nitro-val/config.go
@@ -2,19 +2,20 @@ package main
import (
"fmt"
-
"reflect"
"time"
+ flag "github.com/spf13/pflag"
+
"github.com/ethereum/go-ethereum/node"
"github.com/ethereum/go-ethereum/p2p"
"github.com/ethereum/go-ethereum/p2p/nat"
"github.com/ethereum/go-ethereum/rpc"
+
"github.com/offchainlabs/nitro/cmd/conf"
"github.com/offchainlabs/nitro/cmd/genericconf"
"github.com/offchainlabs/nitro/util/colors"
"github.com/offchainlabs/nitro/validator/valnode"
- flag "github.com/spf13/pflag"
)
type ValidationNodeConfig struct {
diff --git a/cmd/nitro/config_test.go b/cmd/nitro/config_test.go
index 9626893083..ef41d704f1 100644
--- a/cmd/nitro/config_test.go
+++ b/cmd/nitro/config_test.go
@@ -14,14 +14,14 @@ import (
"testing"
"time"
+ "github.com/r3labs/diff/v3"
+ flag "github.com/spf13/pflag"
+
"github.com/offchainlabs/nitro/cmd/genericconf"
"github.com/offchainlabs/nitro/cmd/util/confighelpers"
"github.com/offchainlabs/nitro/das"
"github.com/offchainlabs/nitro/util/colors"
"github.com/offchainlabs/nitro/util/testhelpers"
-
- "github.com/r3labs/diff/v3"
- flag "github.com/spf13/pflag"
)
func TestEmptyCliConfig(t *testing.T) {
diff --git a/cmd/nitro/init.go b/cmd/nitro/init.go
index f0b303817c..eb6d7df6fc 100644
--- a/cmd/nitro/init.go
+++ b/cmd/nitro/init.go
@@ -25,6 +25,7 @@ import (
"github.com/cavaliergopher/grab/v3"
"github.com/codeclysm/extract/v3"
+
"github.com/ethereum/go-ethereum/common"
"github.com/ethereum/go-ethereum/core"
"github.com/ethereum/go-ethereum/core/rawdb"
@@ -681,6 +682,7 @@ func openInitializeChainDb(ctx context.Context, stack *node.Node, config *NodeCo
Nonce: 0,
},
},
+ ChainOwner: common.HexToAddress(config.Init.DevInitAddress),
}
initDataReader = statetransfer.NewMemoryInitDataReader(&initData)
}
@@ -716,6 +718,9 @@ func openInitializeChainDb(ctx context.Context, stack *node.Node, config *NodeCo
if err != nil {
return chainDb, nil, err
}
+ if config.Init.DevInit && config.Init.DevMaxCodeSize != 0 {
+ chainConfig.ArbitrumChainParams.MaxCodeSize = config.Init.DevMaxCodeSize
+ }
testUpdateTxIndex(chainDb, chainConfig, &txIndexWg)
ancients, err := chainDb.Ancients()
if err != nil {
diff --git a/cmd/nitro/init_test.go b/cmd/nitro/init_test.go
index 48d969f053..8e7afe369d 100644
--- a/cmd/nitro/init_test.go
+++ b/cmd/nitro/init_test.go
@@ -23,11 +23,13 @@ import (
"testing"
"time"
+ "github.com/google/go-cmp/cmp"
+
"github.com/ethereum/go-ethereum/core/rawdb"
"github.com/ethereum/go-ethereum/ethclient"
"github.com/ethereum/go-ethereum/ethdb"
"github.com/ethereum/go-ethereum/node"
- "github.com/google/go-cmp/cmp"
+
"github.com/offchainlabs/nitro/arbnode"
"github.com/offchainlabs/nitro/cmd/chaininfo"
"github.com/offchainlabs/nitro/cmd/conf"
diff --git a/cmd/nitro/nitro.go b/cmd/nitro/nitro.go
index 076ac66ec4..a4536e11d0 100644
--- a/cmd/nitro/nitro.go
+++ b/cmd/nitro/nitro.go
@@ -466,24 +466,29 @@ func mainImpl() int {
fatalErrChan := make(chan error, 10)
- var blocksReExecutor *blocksreexecutor.BlocksReExecutor
if nodeConfig.BlocksReExecutor.Enable && l2BlockChain != nil {
- blocksReExecutor = blocksreexecutor.New(&nodeConfig.BlocksReExecutor, l2BlockChain, fatalErrChan)
- if nodeConfig.Init.ThenQuit {
- if err := gethexec.PopulateStylusTargetCache(&nodeConfig.Execution.StylusTarget); err != nil {
- log.Error("error populating stylus target cache", "err", err)
- return 1
- }
- success := make(chan struct{})
- blocksReExecutor.Start(ctx, success)
- deferFuncs = append(deferFuncs, func() { blocksReExecutor.StopAndWait() })
- select {
- case err := <-fatalErrChan:
- log.Error("shutting down due to fatal error", "err", err)
- defer log.Error("shut down due to fatal error", "err", err)
- return 1
- case <-success:
- }
+ if !nodeConfig.Init.ThenQuit {
+ log.Error("blocks-reexecutor cannot be enabled without --init.then-quit")
+ return 1
+ }
+ blocksReExecutor, err := blocksreexecutor.New(&nodeConfig.BlocksReExecutor, l2BlockChain, chainDb, fatalErrChan)
+ if err != nil {
+ log.Error("error initializing blocksReExecutor", "err", err)
+ return 1
+ }
+ if err := gethexec.PopulateStylusTargetCache(&nodeConfig.Execution.StylusTarget); err != nil {
+ log.Error("error populating stylus target cache", "err", err)
+ return 1
+ }
+ success := make(chan struct{})
+ blocksReExecutor.Start(ctx, success)
+ deferFuncs = append(deferFuncs, func() { blocksReExecutor.StopAndWait() })
+ select {
+ case err := <-fatalErrChan:
+ log.Error("shutting down due to fatal error", "err", err)
+ defer log.Error("shut down due to fatal error", "err", err)
+ return 1
+ case <-success:
}
}
@@ -635,10 +640,6 @@ func mainImpl() int {
// remove previous deferFuncs, StopAndWait closes database and blockchain.
deferFuncs = []func(){func() { currentNode.StopAndWait() }}
}
- if blocksReExecutor != nil && !nodeConfig.Init.ThenQuit {
- blocksReExecutor.Start(ctx, nil)
- deferFuncs = append(deferFuncs, func() { blocksReExecutor.StopAndWait() })
- }
sigint := make(chan os.Signal, 1)
signal.Notify(sigint, os.Interrupt, syscall.SIGTERM)
diff --git a/cmd/pruning/pruning.go b/cmd/pruning/pruning.go
index 0755f5ff9e..e89c79bc89 100644
--- a/cmd/pruning/pruning.go
+++ b/cmd/pruning/pruning.go
@@ -20,6 +20,7 @@ import (
"github.com/ethereum/go-ethereum/log"
"github.com/ethereum/go-ethereum/node"
"github.com/ethereum/go-ethereum/rpc"
+
"github.com/offchainlabs/nitro/arbnode"
"github.com/offchainlabs/nitro/arbnode/dataposter/storage"
"github.com/offchainlabs/nitro/arbutil"
diff --git a/cmd/replay/db.go b/cmd/replay/db.go
index 7147c48f75..3dc9f15da0 100644
--- a/cmd/replay/db.go
+++ b/cmd/replay/db.go
@@ -11,6 +11,7 @@ import (
"github.com/ethereum/go-ethereum/core/rawdb"
"github.com/ethereum/go-ethereum/ethdb"
+
"github.com/offchainlabs/nitro/arbutil"
"github.com/offchainlabs/nitro/wavmio"
)
diff --git a/cmd/seq-coordinator-manager/rediscoordinator/redis_coordinator.go b/cmd/seq-coordinator-manager/rediscoordinator/redis_coordinator.go
index b897b23252..b6b5342ca2 100644
--- a/cmd/seq-coordinator-manager/rediscoordinator/redis_coordinator.go
+++ b/cmd/seq-coordinator-manager/rediscoordinator/redis_coordinator.go
@@ -5,8 +5,9 @@ import (
"errors"
"strings"
- "github.com/offchainlabs/nitro/util/redisutil"
"github.com/redis/go-redis/v9"
+
+ "github.com/offchainlabs/nitro/util/redisutil"
)
// RedisCoordinator builds upon RedisCoordinator of redisutil with additional functionality
diff --git a/cmd/seq-coordinator-manager/seq-coordinator-manager.go b/cmd/seq-coordinator-manager/seq-coordinator-manager.go
index 43d90441ef..7b5dc68699 100644
--- a/cmd/seq-coordinator-manager/seq-coordinator-manager.go
+++ b/cmd/seq-coordinator-manager/seq-coordinator-manager.go
@@ -7,11 +7,13 @@ import (
"strconv"
"github.com/enescakir/emoji"
- "github.com/ethereum/go-ethereum/log"
"github.com/gdamore/tcell/v2"
+ "github.com/rivo/tview"
+
+ "github.com/ethereum/go-ethereum/log"
+
"github.com/offchainlabs/nitro/cmd/seq-coordinator-manager/rediscoordinator"
"github.com/offchainlabs/nitro/util/redisutil"
- "github.com/rivo/tview"
)
// Tview
diff --git a/cmd/util/confighelpers/configuration.go b/cmd/util/confighelpers/configuration.go
index 19b5b1a24c..8c4ef2a70b 100644
--- a/cmd/util/confighelpers/configuration.go
+++ b/cmd/util/confighelpers/configuration.go
@@ -209,6 +209,7 @@ func devFlagArgs() []string {
"--init.empty=false",
"--http.port", "8547",
"--http.addr", "127.0.0.1",
+ "--http.api=net,web3,eth,arb,arbdebug,debug",
}
return args
}
diff --git a/das/aggregator_test.go b/das/aggregator_test.go
index 4bc209513e..217315eef0 100644
--- a/das/aggregator_test.go
+++ b/das/aggregator_test.go
@@ -16,10 +16,10 @@ import (
"testing"
"time"
+ "github.com/ethereum/go-ethereum/log"
+
"github.com/offchainlabs/nitro/arbstate/daprovider"
"github.com/offchainlabs/nitro/blsSignatures"
-
- "github.com/ethereum/go-ethereum/log"
)
func TestDAS_BasicAggregationLocal(t *testing.T) {
diff --git a/das/cache_storage_service.go b/das/cache_storage_service.go
index 439ccda086..0ba20ac55b 100644
--- a/das/cache_storage_service.go
+++ b/das/cache_storage_service.go
@@ -7,14 +7,15 @@ import (
"context"
"fmt"
- "github.com/offchainlabs/nitro/arbstate/daprovider"
- "github.com/offchainlabs/nitro/das/dastree"
- "github.com/offchainlabs/nitro/util/pretty"
flag "github.com/spf13/pflag"
"github.com/ethereum/go-ethereum/common"
"github.com/ethereum/go-ethereum/common/lru"
"github.com/ethereum/go-ethereum/log"
+
+ "github.com/offchainlabs/nitro/arbstate/daprovider"
+ "github.com/offchainlabs/nitro/das/dastree"
+ "github.com/offchainlabs/nitro/util/pretty"
)
type CacheConfig struct {
diff --git a/das/chain_fetch_das.go b/das/chain_fetch_das.go
index 4de6c981cf..34b10d45ec 100644
--- a/das/chain_fetch_das.go
+++ b/das/chain_fetch_das.go
@@ -8,14 +8,14 @@ import (
"errors"
"sync"
- "github.com/offchainlabs/nitro/util/pretty"
-
"github.com/ethereum/go-ethereum/accounts/abi/bind"
"github.com/ethereum/go-ethereum/common"
"github.com/ethereum/go-ethereum/ethclient"
"github.com/ethereum/go-ethereum/log"
+
"github.com/offchainlabs/nitro/das/dastree"
"github.com/offchainlabs/nitro/solgen/go/bridgegen"
+ "github.com/offchainlabs/nitro/util/pretty"
)
type syncedKeysetCache struct {
diff --git a/das/das.go b/das/das.go
index 0b03c05ad6..e870761ac2 100644
--- a/das/das.go
+++ b/das/das.go
@@ -10,10 +10,11 @@ import (
"math"
"time"
+ flag "github.com/spf13/pflag"
+
"github.com/ethereum/go-ethereum/common"
"github.com/ethereum/go-ethereum/ethclient"
"github.com/ethereum/go-ethereum/log"
- flag "github.com/spf13/pflag"
"github.com/offchainlabs/nitro/arbstate/daprovider"
)
diff --git a/das/dasRpcClient.go b/das/dasRpcClient.go
index d6e2c389c9..3ea6c4e2c6 100644
--- a/das/dasRpcClient.go
+++ b/das/dasRpcClient.go
@@ -9,13 +9,14 @@ import (
"strings"
"time"
+ "golang.org/x/sync/errgroup"
+
"github.com/ethereum/go-ethereum/common"
"github.com/ethereum/go-ethereum/common/hexutil"
"github.com/ethereum/go-ethereum/log"
"github.com/ethereum/go-ethereum/metrics"
- "golang.org/x/sync/errgroup"
-
"github.com/ethereum/go-ethereum/rpc"
+
"github.com/offchainlabs/nitro/arbstate/daprovider"
"github.com/offchainlabs/nitro/blsSignatures"
"github.com/offchainlabs/nitro/util/pretty"
diff --git a/das/dasRpcServer.go b/das/dasRpcServer.go
index bb1be0384e..adddf26571 100644
--- a/das/dasRpcServer.go
+++ b/das/dasRpcServer.go
@@ -17,7 +17,6 @@ import (
"github.com/ethereum/go-ethereum/common/hexutil"
"github.com/ethereum/go-ethereum/log"
"github.com/ethereum/go-ethereum/metrics"
-
"github.com/ethereum/go-ethereum/rpc"
"github.com/offchainlabs/nitro/blsSignatures"
diff --git a/das/dastree/dastree.go b/das/dastree/dastree.go
index 2bcbccaae3..29a6b2495c 100644
--- a/das/dastree/dastree.go
+++ b/das/dastree/dastree.go
@@ -9,6 +9,7 @@ import (
"github.com/ethereum/go-ethereum/common"
"github.com/ethereum/go-ethereum/crypto"
+
"github.com/offchainlabs/nitro/arbutil"
"github.com/offchainlabs/nitro/util/arbmath"
)
diff --git a/das/dastree/dastree_test.go b/das/dastree/dastree_test.go
index 4d24c9ae98..b24d6ce69b 100644
--- a/das/dastree/dastree_test.go
+++ b/das/dastree/dastree_test.go
@@ -9,6 +9,7 @@ import (
"testing"
"github.com/ethereum/go-ethereum/crypto"
+
"github.com/offchainlabs/nitro/arbutil"
"github.com/offchainlabs/nitro/util/colors"
"github.com/offchainlabs/nitro/util/pretty"
diff --git a/das/db_storage_service.go b/das/db_storage_service.go
index 74bf12b927..0e38505a13 100644
--- a/das/db_storage_service.go
+++ b/das/db_storage_service.go
@@ -14,13 +14,15 @@ import (
"time"
badger "github.com/dgraph-io/badger/v4"
+ flag "github.com/spf13/pflag"
+
"github.com/ethereum/go-ethereum/common"
"github.com/ethereum/go-ethereum/log"
+
"github.com/offchainlabs/nitro/arbstate/daprovider"
"github.com/offchainlabs/nitro/das/dastree"
"github.com/offchainlabs/nitro/util/pretty"
"github.com/offchainlabs/nitro/util/stopwaiter"
- flag "github.com/spf13/pflag"
)
type LocalDBStorageConfig struct {
diff --git a/das/fallback_storage_service.go b/das/fallback_storage_service.go
index 0a451678d0..64bc3c2a7a 100644
--- a/das/fallback_storage_service.go
+++ b/das/fallback_storage_service.go
@@ -10,6 +10,7 @@ import (
"github.com/ethereum/go-ethereum/common"
"github.com/ethereum/go-ethereum/log"
+
"github.com/offchainlabs/nitro/arbstate/daprovider"
"github.com/offchainlabs/nitro/das/dastree"
"github.com/offchainlabs/nitro/util/arbmath"
diff --git a/das/fallback_storage_service_test.go b/das/fallback_storage_service_test.go
index b73df31624..4c7c0351e9 100644
--- a/das/fallback_storage_service_test.go
+++ b/das/fallback_storage_service_test.go
@@ -10,6 +10,7 @@ import (
"testing"
"github.com/ethereum/go-ethereum/common/math"
+
"github.com/offchainlabs/nitro/das/dastree"
)
diff --git a/das/google_cloud_storage_service_test.go b/das/google_cloud_storage_service_test.go
index 799d999bad..94d6f3ee44 100644
--- a/das/google_cloud_storage_service_test.go
+++ b/das/google_cloud_storage_service_test.go
@@ -2,13 +2,16 @@ package das
import (
"bytes"
- googlestorage "cloud.google.com/go/storage"
"context"
"errors"
- "github.com/ethereum/go-ethereum/common"
- "github.com/offchainlabs/nitro/das/dastree"
"testing"
"time"
+
+ googlestorage "cloud.google.com/go/storage"
+
+ "github.com/ethereum/go-ethereum/common"
+
+ "github.com/offchainlabs/nitro/das/dastree"
)
type mockGCSClient struct {
diff --git a/das/key_utils.go b/das/key_utils.go
index 33f29788b6..0262e7f666 100644
--- a/das/key_utils.go
+++ b/das/key_utils.go
@@ -11,6 +11,7 @@ import (
"os"
"github.com/ethereum/go-ethereum/crypto"
+
"github.com/offchainlabs/nitro/blsSignatures"
)
diff --git a/das/local_file_storage_service.go b/das/local_file_storage_service.go
index 5e64c34b10..71c98c7879 100644
--- a/das/local_file_storage_service.go
+++ b/das/local_file_storage_service.go
@@ -20,14 +20,16 @@ import (
"syscall"
"time"
+ flag "github.com/spf13/pflag"
+ "golang.org/x/sys/unix"
+
"github.com/ethereum/go-ethereum/common"
"github.com/ethereum/go-ethereum/log"
+
"github.com/offchainlabs/nitro/arbstate/daprovider"
"github.com/offchainlabs/nitro/das/dastree"
"github.com/offchainlabs/nitro/util/pretty"
"github.com/offchainlabs/nitro/util/stopwaiter"
- flag "github.com/spf13/pflag"
- "golang.org/x/sys/unix"
)
type LocalFileStorageConfig struct {
diff --git a/das/memory_backed_storage_service.go b/das/memory_backed_storage_service.go
index c013b501b9..8a2df28902 100644
--- a/das/memory_backed_storage_service.go
+++ b/das/memory_backed_storage_service.go
@@ -10,6 +10,7 @@ import (
"github.com/ethereum/go-ethereum/common"
"github.com/ethereum/go-ethereum/log"
+
"github.com/offchainlabs/nitro/arbstate/daprovider"
"github.com/offchainlabs/nitro/das/dastree"
)
diff --git a/das/panic_wrapper.go b/das/panic_wrapper.go
index 3530cb651d..4729792c33 100644
--- a/das/panic_wrapper.go
+++ b/das/panic_wrapper.go
@@ -10,6 +10,7 @@ import (
"github.com/ethereum/go-ethereum/common"
"github.com/ethereum/go-ethereum/log"
+
"github.com/offchainlabs/nitro/arbstate/daprovider"
)
diff --git a/das/reader_aggregator_strategies_test.go b/das/reader_aggregator_strategies_test.go
index cdb85b25e9..e211ee38fe 100644
--- a/das/reader_aggregator_strategies_test.go
+++ b/das/reader_aggregator_strategies_test.go
@@ -11,6 +11,7 @@ import (
"time"
"github.com/ethereum/go-ethereum/common"
+
"github.com/offchainlabs/nitro/arbstate/daprovider"
)
@@ -72,8 +73,10 @@ func TestDAS_SimpleExploreExploit(t *testing.T) {
}
for i := 0; i < len(was) && doMatch; i++ {
- if expected[i].(*dummyReader).int != was[i].(*dummyReader).int {
- Fail(t, fmt.Sprintf("expected %d, was %d", expected[i].(*dummyReader).int, was[i].(*dummyReader).int))
+ expR, expOK := expected[i].(*dummyReader)
+ wasR, wasOK := was[i].(*dummyReader)
+ if !expOK || !wasOK || expR.int != wasR.int {
+ Fail(t, fmt.Sprintf("expected %d, was %d", expected[i], was[i]))
}
}
}
diff --git a/das/redis_storage_service.go b/das/redis_storage_service.go
index e57240992c..cdd18ea974 100644
--- a/das/redis_storage_service.go
+++ b/das/redis_storage_service.go
@@ -10,17 +10,17 @@ import (
"fmt"
"time"
+ "github.com/redis/go-redis/v9"
+ flag "github.com/spf13/pflag"
"golang.org/x/crypto/sha3"
+ "github.com/ethereum/go-ethereum/common"
+ "github.com/ethereum/go-ethereum/log"
+
"github.com/offchainlabs/nitro/arbstate/daprovider"
"github.com/offchainlabs/nitro/das/dastree"
"github.com/offchainlabs/nitro/util/pretty"
"github.com/offchainlabs/nitro/util/redisutil"
- "github.com/redis/go-redis/v9"
- flag "github.com/spf13/pflag"
-
- "github.com/ethereum/go-ethereum/common"
- "github.com/ethereum/go-ethereum/log"
)
type RedisConfig struct {
diff --git a/das/redis_storage_service_test.go b/das/redis_storage_service_test.go
index 77d3e8cd0f..41ca6bac90 100644
--- a/das/redis_storage_service_test.go
+++ b/das/redis_storage_service_test.go
@@ -11,6 +11,7 @@ import (
"time"
"github.com/alicebob/miniredis/v2"
+
"github.com/offchainlabs/nitro/das/dastree"
)
diff --git a/das/redundant_storage_service.go b/das/redundant_storage_service.go
index 3158d28076..85274188d6 100644
--- a/das/redundant_storage_service.go
+++ b/das/redundant_storage_service.go
@@ -10,6 +10,7 @@ import (
"github.com/ethereum/go-ethereum/common"
"github.com/ethereum/go-ethereum/log"
+
"github.com/offchainlabs/nitro/arbstate/daprovider"
"github.com/offchainlabs/nitro/util/pretty"
)
diff --git a/das/restful_client.go b/das/restful_client.go
index b65426e7cd..3004ea1b59 100644
--- a/das/restful_client.go
+++ b/das/restful_client.go
@@ -14,6 +14,7 @@ import (
"strings"
"github.com/ethereum/go-ethereum/common"
+
"github.com/offchainlabs/nitro/arbstate/daprovider"
"github.com/offchainlabs/nitro/das/dastree"
)
diff --git a/das/restful_server.go b/das/restful_server.go
index b1607729e2..6c5e2ec453 100644
--- a/das/restful_server.go
+++ b/das/restful_server.go
@@ -17,6 +17,7 @@ import (
"github.com/ethereum/go-ethereum/common"
"github.com/ethereum/go-ethereum/log"
"github.com/ethereum/go-ethereum/metrics"
+
"github.com/offchainlabs/nitro/arbstate/daprovider"
"github.com/offchainlabs/nitro/cmd/genericconf"
"github.com/offchainlabs/nitro/util/pretty"
diff --git a/das/rpc_aggregator.go b/das/rpc_aggregator.go
index 9cf481e015..916637aac6 100644
--- a/das/rpc_aggregator.go
+++ b/das/rpc_aggregator.go
@@ -14,14 +14,15 @@ import (
"github.com/knadh/koanf"
"github.com/knadh/koanf/providers/confmap"
+
+ "github.com/ethereum/go-ethereum/common"
+ "github.com/ethereum/go-ethereum/ethclient"
+
"github.com/offchainlabs/nitro/arbstate/daprovider"
"github.com/offchainlabs/nitro/blsSignatures"
"github.com/offchainlabs/nitro/solgen/go/bridgegen"
"github.com/offchainlabs/nitro/util/metricsutil"
"github.com/offchainlabs/nitro/util/signature"
-
- "github.com/ethereum/go-ethereum/common"
- "github.com/ethereum/go-ethereum/ethclient"
)
type BackendConfig struct {
diff --git a/das/rpc_test.go b/das/rpc_test.go
index 370ec0a872..ebc4b736d5 100644
--- a/das/rpc_test.go
+++ b/das/rpc_test.go
@@ -14,6 +14,7 @@ import (
"time"
"github.com/ethereum/go-ethereum/crypto"
+
"github.com/offchainlabs/nitro/blsSignatures"
"github.com/offchainlabs/nitro/cmd/genericconf"
"github.com/offchainlabs/nitro/util/signature"
diff --git a/das/s3_storage_service.go b/das/s3_storage_service.go
index d251f12214..4c0dcaf5a3 100644
--- a/das/s3_storage_service.go
+++ b/das/s3_storage_service.go
@@ -16,14 +16,14 @@ import (
"github.com/aws/aws-sdk-go-v2/credentials"
"github.com/aws/aws-sdk-go-v2/feature/s3/manager"
"github.com/aws/aws-sdk-go-v2/service/s3"
- "github.com/offchainlabs/nitro/arbstate/daprovider"
- "github.com/offchainlabs/nitro/das/dastree"
- "github.com/offchainlabs/nitro/util/pretty"
+ flag "github.com/spf13/pflag"
"github.com/ethereum/go-ethereum/common"
"github.com/ethereum/go-ethereum/log"
- flag "github.com/spf13/pflag"
+ "github.com/offchainlabs/nitro/arbstate/daprovider"
+ "github.com/offchainlabs/nitro/das/dastree"
+ "github.com/offchainlabs/nitro/util/pretty"
)
type S3Uploader interface {
diff --git a/das/signature_verifier.go b/das/signature_verifier.go
index 0aa42bceb6..453b2fe305 100644
--- a/das/signature_verifier.go
+++ b/das/signature_verifier.go
@@ -11,6 +11,7 @@ import (
"os"
"github.com/ethereum/go-ethereum/crypto"
+
"github.com/offchainlabs/nitro/solgen/go/bridgegen"
"github.com/offchainlabs/nitro/util/contracts"
)
diff --git a/das/simple_das_reader_aggregator.go b/das/simple_das_reader_aggregator.go
index f45c56afe0..ff28d6a22a 100644
--- a/das/simple_das_reader_aggregator.go
+++ b/das/simple_das_reader_aggregator.go
@@ -12,13 +12,15 @@ import (
"sync"
"time"
+ flag "github.com/spf13/pflag"
+
"github.com/ethereum/go-ethereum/common"
"github.com/ethereum/go-ethereum/log"
+
"github.com/offchainlabs/nitro/arbstate/daprovider"
"github.com/offchainlabs/nitro/das/dastree"
"github.com/offchainlabs/nitro/util/pretty"
"github.com/offchainlabs/nitro/util/stopwaiter"
- flag "github.com/spf13/pflag"
)
// Most of the time we will use the SimpleDASReaderAggregator only to aggregate
diff --git a/das/storage_service.go b/das/storage_service.go
index b7526077e9..925bbb520a 100644
--- a/das/storage_service.go
+++ b/das/storage_service.go
@@ -12,6 +12,7 @@ import (
"github.com/ethereum/go-ethereum/common"
"github.com/ethereum/go-ethereum/common/hexutil"
+
"github.com/offchainlabs/nitro/arbstate/daprovider"
)
diff --git a/das/syncing_fallback_storage.go b/das/syncing_fallback_storage.go
index 0670a29c73..1aec2b7328 100644
--- a/das/syncing_fallback_storage.go
+++ b/das/syncing_fallback_storage.go
@@ -12,6 +12,8 @@ import (
"sync"
"time"
+ flag "github.com/spf13/pflag"
+
"github.com/ethereum/go-ethereum"
"github.com/ethereum/go-ethereum/accounts/abi"
"github.com/ethereum/go-ethereum/accounts/abi/bind"
@@ -19,13 +21,13 @@ import (
"github.com/ethereum/go-ethereum/core/types"
"github.com/ethereum/go-ethereum/ethclient"
"github.com/ethereum/go-ethereum/log"
+
"github.com/offchainlabs/nitro/arbstate/daprovider"
"github.com/offchainlabs/nitro/arbutil"
"github.com/offchainlabs/nitro/solgen/go/bridgegen"
"github.com/offchainlabs/nitro/util/arbmath"
"github.com/offchainlabs/nitro/util/headerreader"
"github.com/offchainlabs/nitro/util/stopwaiter"
- flag "github.com/spf13/pflag"
)
var sequencerInboxABI *abi.ABI
diff --git a/das/util.go b/das/util.go
index 114e075e79..cd300175bb 100644
--- a/das/util.go
+++ b/das/util.go
@@ -7,6 +7,7 @@ import (
"time"
"github.com/ethereum/go-ethereum/log"
+
"github.com/offchainlabs/nitro/arbstate/daprovider"
"github.com/offchainlabs/nitro/util/pretty"
)
diff --git a/deploy/deploy.go b/deploy/deploy.go
index bb4b2e6594..2738373c72 100644
--- a/deploy/deploy.go
+++ b/deploy/deploy.go
@@ -10,6 +10,7 @@ import (
"github.com/ethereum/go-ethereum/common"
"github.com/ethereum/go-ethereum/core/types"
"github.com/ethereum/go-ethereum/crypto"
+
"github.com/offchainlabs/nitro/cmd/chaininfo"
"github.com/offchainlabs/nitro/solgen/go/bridgegen"
"github.com/offchainlabs/nitro/solgen/go/challengegen"
diff --git a/execution/gethexec/api.go b/execution/gethexec/api.go
index 4fa60693d5..713d1496f9 100644
--- a/execution/gethexec/api.go
+++ b/execution/gethexec/api.go
@@ -18,6 +18,7 @@ import (
"github.com/ethereum/go-ethereum/core"
"github.com/ethereum/go-ethereum/core/types"
"github.com/ethereum/go-ethereum/rpc"
+
"github.com/offchainlabs/nitro/arbos/arbosState"
"github.com/offchainlabs/nitro/arbos/retryables"
"github.com/offchainlabs/nitro/util/arbmath"
diff --git a/execution/gethexec/block_recorder.go b/execution/gethexec/block_recorder.go
index a3af7876a8..2e3d51fec9 100644
--- a/execution/gethexec/block_recorder.go
+++ b/execution/gethexec/block_recorder.go
@@ -6,18 +6,20 @@ import (
"sync"
"testing"
+ flag "github.com/spf13/pflag"
+
"github.com/ethereum/go-ethereum/arbitrum"
"github.com/ethereum/go-ethereum/common"
"github.com/ethereum/go-ethereum/core"
"github.com/ethereum/go-ethereum/core/types"
"github.com/ethereum/go-ethereum/ethdb"
"github.com/ethereum/go-ethereum/log"
+
"github.com/offchainlabs/nitro/arbos"
"github.com/offchainlabs/nitro/arbos/arbosState"
"github.com/offchainlabs/nitro/arbos/arbostypes"
"github.com/offchainlabs/nitro/arbutil"
"github.com/offchainlabs/nitro/execution"
- flag "github.com/spf13/pflag"
)
// BlockRecorder uses a separate statedatabase from the blockchain.
@@ -75,19 +77,21 @@ func NewBlockRecorder(config *BlockRecorderConfig, execEngine *ExecutionEngine,
return recorder
}
-func stateLogFunc(targetHeader, header *types.Header, hasState bool) {
- if targetHeader == nil || header == nil {
- return
- }
- gap := targetHeader.Number.Int64() - header.Number.Int64()
- step := int64(500)
- stage := "computing state"
- if !hasState {
- step = 3000
- stage = "looking for full block"
- }
- if (gap >= step) && (gap%step == 0) {
- log.Info("Setting up validation", "stage", stage, "current", header.Number, "target", targetHeader.Number)
+func stateLogFunc(targetHeader *types.Header) arbitrum.StateBuildingLogFunction {
+ return func(header *types.Header, hasState bool) {
+ if targetHeader == nil || header == nil {
+ return
+ }
+ gap := targetHeader.Number.Int64() - header.Number.Int64()
+ step := int64(500)
+ stage := "computing state"
+ if !hasState {
+ step = 3000
+ stage = "looking for full block"
+ }
+ if (gap >= step) && (gap%step == 0) {
+ log.Info("Setting up validation", "stage", stage, "current", header.Number, "target", targetHeader.Number)
+ }
}
}
@@ -109,7 +113,7 @@ func (r *BlockRecorder) RecordBlockCreation(
}
}
- recordingdb, chaincontext, recordingKV, err := r.recordingDatabase.PrepareRecording(ctx, prevHeader, stateLogFunc)
+ recordingdb, chaincontext, recordingKV, err := r.recordingDatabase.PrepareRecording(ctx, prevHeader, stateLogFunc(prevHeader))
if err != nil {
return nil, err
}
@@ -321,7 +325,7 @@ func (r *BlockRecorder) PrepareForRecord(ctx context.Context, start, end arbutil
log.Warn("prepareblocks asked for non-found block", "hdrNum", hdrNum)
break
}
- _, err := r.recordingDatabase.GetOrRecreateState(ctx, header, stateLogFunc)
+ _, err := r.recordingDatabase.GetOrRecreateState(ctx, header, stateLogFunc(header))
if err != nil {
log.Warn("prepareblocks failed to get state for block", "hdrNum", hdrNum, "err", err)
break
diff --git a/execution/gethexec/blockchain.go b/execution/gethexec/blockchain.go
index fda8f49093..53b494a3c2 100644
--- a/execution/gethexec/blockchain.go
+++ b/execution/gethexec/blockchain.go
@@ -18,6 +18,7 @@ import (
"github.com/ethereum/go-ethereum/log"
"github.com/ethereum/go-ethereum/node"
"github.com/ethereum/go-ethereum/params"
+
"github.com/offchainlabs/nitro/arbos"
"github.com/offchainlabs/nitro/arbos/arbosState"
"github.com/offchainlabs/nitro/arbos/arbostypes"
diff --git a/execution/gethexec/executionengine.go b/execution/gethexec/executionengine.go
index 6571672b71..69535e82be 100644
--- a/execution/gethexec/executionengine.go
+++ b/execution/gethexec/executionengine.go
@@ -12,6 +12,7 @@ package gethexec
#include "arbitrator.h"
*/
import "C"
+
import (
"bytes"
"context"
@@ -26,20 +27,22 @@ import (
"testing"
"time"
+ "github.com/google/uuid"
+
"github.com/ethereum/go-ethereum/core"
"github.com/ethereum/go-ethereum/core/rawdb"
"github.com/ethereum/go-ethereum/core/state"
"github.com/ethereum/go-ethereum/core/types"
"github.com/ethereum/go-ethereum/log"
"github.com/ethereum/go-ethereum/metrics"
- "github.com/ethereum/go-ethereum/params"
- "github.com/google/uuid"
+
"github.com/offchainlabs/nitro/arbos"
"github.com/offchainlabs/nitro/arbos/arbosState"
"github.com/offchainlabs/nitro/arbos/arbostypes"
"github.com/offchainlabs/nitro/arbos/l1pricing"
"github.com/offchainlabs/nitro/arbos/programs"
"github.com/offchainlabs/nitro/arbutil"
+ "github.com/offchainlabs/nitro/cmd/chaininfo"
"github.com/offchainlabs/nitro/execution"
"github.com/offchainlabs/nitro/util/arbmath"
"github.com/offchainlabs/nitro/util/sharedmetrics"
@@ -901,7 +904,7 @@ func (s *ExecutionEngine) digestMessageWithBlockMutex(num arbutil.MessageIndex,
timestamp = time.Unix(int64(timestampInt), 0)
timeUntilUpgrade = time.Until(timestamp)
}
- maxSupportedVersion := params.ArbitrumDevTestChainConfig().ArbitrumChainParams.InitialArbOSVersion
+ maxSupportedVersion := chaininfo.ArbitrumDevTestChainConfig().ArbitrumChainParams.InitialArbOSVersion
logLevel := log.Warn
if timeUntilUpgrade < time.Hour*24 {
logLevel = log.Error
diff --git a/execution/gethexec/forwarder.go b/execution/gethexec/forwarder.go
index cdb4f394e5..8e64508e6c 100644
--- a/execution/gethexec/forwarder.go
+++ b/execution/gethexec/forwarder.go
@@ -14,8 +14,6 @@ import (
"sync/atomic"
"time"
- "github.com/offchainlabs/nitro/util/redisutil"
- "github.com/offchainlabs/nitro/util/stopwaiter"
flag "github.com/spf13/pflag"
"github.com/ethereum/go-ethereum/arbitrum"
@@ -24,6 +22,9 @@ import (
"github.com/ethereum/go-ethereum/ethclient"
"github.com/ethereum/go-ethereum/log"
"github.com/ethereum/go-ethereum/rpc"
+
+ "github.com/offchainlabs/nitro/util/redisutil"
+ "github.com/offchainlabs/nitro/util/stopwaiter"
)
type ForwarderConfig struct {
diff --git a/execution/gethexec/node.go b/execution/gethexec/node.go
index 499a13164e..11d173a21e 100644
--- a/execution/gethexec/node.go
+++ b/execution/gethexec/node.go
@@ -9,6 +9,8 @@ import (
"sync/atomic"
"testing"
+ flag "github.com/spf13/pflag"
+
"github.com/ethereum/go-ethereum/arbitrum"
"github.com/ethereum/go-ethereum/common"
"github.com/ethereum/go-ethereum/core"
@@ -21,6 +23,7 @@ import (
"github.com/ethereum/go-ethereum/log"
"github.com/ethereum/go-ethereum/node"
"github.com/ethereum/go-ethereum/rpc"
+
"github.com/offchainlabs/nitro/arbos/arbostypes"
"github.com/offchainlabs/nitro/arbos/programs"
"github.com/offchainlabs/nitro/arbutil"
@@ -28,7 +31,6 @@ import (
"github.com/offchainlabs/nitro/solgen/go/precompilesgen"
"github.com/offchainlabs/nitro/util/dbutil"
"github.com/offchainlabs/nitro/util/headerreader"
- flag "github.com/spf13/pflag"
)
type StylusTargetConfig struct {
diff --git a/execution/gethexec/sequencer.go b/execution/gethexec/sequencer.go
index cc98c7930f..92d440e8cb 100644
--- a/execution/gethexec/sequencer.go
+++ b/execution/gethexec/sequencer.go
@@ -15,11 +15,6 @@ import (
"sync/atomic"
"time"
- "github.com/offchainlabs/nitro/arbutil"
- "github.com/offchainlabs/nitro/execution"
- "github.com/offchainlabs/nitro/util/arbmath"
- "github.com/offchainlabs/nitro/util/containers"
- "github.com/offchainlabs/nitro/util/headerreader"
flag "github.com/spf13/pflag"
"github.com/ethereum/go-ethereum/arbitrum"
@@ -34,10 +29,16 @@ import (
"github.com/ethereum/go-ethereum/log"
"github.com/ethereum/go-ethereum/metrics"
"github.com/ethereum/go-ethereum/params"
+
"github.com/offchainlabs/nitro/arbos"
"github.com/offchainlabs/nitro/arbos/arbosState"
"github.com/offchainlabs/nitro/arbos/arbostypes"
"github.com/offchainlabs/nitro/arbos/l1pricing"
+ "github.com/offchainlabs/nitro/arbutil"
+ "github.com/offchainlabs/nitro/execution"
+ "github.com/offchainlabs/nitro/util/arbmath"
+ "github.com/offchainlabs/nitro/util/containers"
+ "github.com/offchainlabs/nitro/util/headerreader"
"github.com/offchainlabs/nitro/util/stopwaiter"
)
diff --git a/execution/gethexec/stylus_tracer.go b/execution/gethexec/stylus_tracer.go
index 4c18bb2ebe..8a024941d3 100644
--- a/execution/gethexec/stylus_tracer.go
+++ b/execution/gethexec/stylus_tracer.go
@@ -13,9 +13,11 @@ import (
"github.com/ethereum/go-ethereum/common"
"github.com/ethereum/go-ethereum/common/hexutil"
+ "github.com/ethereum/go-ethereum/core/tracing"
"github.com/ethereum/go-ethereum/core/vm"
"github.com/ethereum/go-ethereum/eth/tracers"
"github.com/ethereum/go-ethereum/log"
+
"github.com/offchainlabs/nitro/util/containers"
)
@@ -67,10 +69,20 @@ var nestsHostios = map[string]bool{
"static_call_contract": true,
}
-func newStylusTracer(ctx *tracers.Context, _ json.RawMessage) (tracers.Tracer, error) {
- return &stylusTracer{
+func newStylusTracer(ctx *tracers.Context, _ json.RawMessage) (*tracers.Tracer, error) {
+ t := &stylusTracer{
open: containers.NewStack[HostioTraceInfo](),
stack: containers.NewStack[*containers.Stack[HostioTraceInfo]](),
+ }
+
+ return &tracers.Tracer{
+ Hooks: &tracing.Hooks{
+ OnEnter: t.OnEnter,
+ OnExit: t.OnExit,
+ CaptureStylusHostio: t.CaptureStylusHostio,
+ },
+ GetResult: t.GetResult,
+ Stop: t.Stop,
}, nil
}
@@ -104,16 +116,18 @@ func (t *stylusTracer) CaptureStylusHostio(name string, args, outs []byte, start
}
t.open.Push(info)
}
-
-func (t *stylusTracer) CaptureEnter(typ vm.OpCode, from common.Address, to common.Address, input []byte, gas uint64, value *big.Int) {
+func (t *stylusTracer) OnEnter(depth int, typ byte, from common.Address, to common.Address, input []byte, gas uint64, value *big.Int) {
if t.interrupt.Load() {
return
}
+ if depth == 0 {
+ return
+ }
// This function adds the prefix evm_ because it assumes the opcode came from the EVM.
// If the opcode comes from WASM, the CaptureStylusHostio function will remove the evm prefix.
var name string
- switch typ {
+ switch vm.OpCode(typ) {
case vm.CALL:
name = "evm_call_contract"
case vm.DELEGATECALL:
@@ -139,10 +153,13 @@ func (t *stylusTracer) CaptureEnter(typ vm.OpCode, from common.Address, to commo
t.open = inner
}
-func (t *stylusTracer) CaptureExit(output []byte, gasUsed uint64, _ error) {
+func (t *stylusTracer) OnExit(depth int, output []byte, gasUsed uint64, _ error, reverted bool) {
if t.interrupt.Load() {
return
}
+ if depth == 0 {
+ return
+ }
var err error
t.open, err = t.stack.Pop()
if err != nil {
@@ -181,19 +198,3 @@ func (t *stylusTracer) Stop(err error) {
t.reason = err
t.interrupt.Store(true)
}
-
-// Unimplemented EVMLogger interface methods
-
-func (t *stylusTracer) CaptureArbitrumTransfer(env *vm.EVM, from, to *common.Address, value *big.Int, before bool, purpose string) {
-}
-func (t *stylusTracer) CaptureArbitrumStorageGet(key common.Hash, depth int, before bool) {}
-func (t *stylusTracer) CaptureArbitrumStorageSet(key, value common.Hash, depth int, before bool) {}
-func (t *stylusTracer) CaptureStart(env *vm.EVM, from common.Address, to common.Address, create bool, input []byte, gas uint64, value *big.Int) {
-}
-func (t *stylusTracer) CaptureEnd(output []byte, gasUsed uint64, err error) {}
-func (t *stylusTracer) CaptureState(pc uint64, op vm.OpCode, gas, cost uint64, scope *vm.ScopeContext, rData []byte, depth int, err error) {
-}
-func (t *stylusTracer) CaptureFault(pc uint64, op vm.OpCode, gas, cost uint64, _ *vm.ScopeContext, depth int, err error) {
-}
-func (t *stylusTracer) CaptureTxStart(gasLimit uint64) {}
-func (t *stylusTracer) CaptureTxEnd(restGas uint64) {}
diff --git a/execution/gethexec/sync_monitor.go b/execution/gethexec/sync_monitor.go
index 86949c7767..7f04b2ee4a 100644
--- a/execution/gethexec/sync_monitor.go
+++ b/execution/gethexec/sync_monitor.go
@@ -3,9 +3,10 @@ package gethexec
import (
"context"
- "github.com/offchainlabs/nitro/execution"
"github.com/pkg/errors"
flag "github.com/spf13/pflag"
+
+ "github.com/offchainlabs/nitro/execution"
)
type SyncMonitorConfig struct {
diff --git a/execution/gethexec/tx_pre_checker.go b/execution/gethexec/tx_pre_checker.go
index e0ae330148..e7ef20bae9 100644
--- a/execution/gethexec/tx_pre_checker.go
+++ b/execution/gethexec/tx_pre_checker.go
@@ -8,6 +8,8 @@ import (
"fmt"
"time"
+ flag "github.com/spf13/pflag"
+
"github.com/ethereum/go-ethereum/arbitrum_types"
"github.com/ethereum/go-ethereum/common"
"github.com/ethereum/go-ethereum/core"
@@ -15,11 +17,11 @@ import (
"github.com/ethereum/go-ethereum/core/types"
"github.com/ethereum/go-ethereum/metrics"
"github.com/ethereum/go-ethereum/params"
+
"github.com/offchainlabs/nitro/arbos/arbosState"
"github.com/offchainlabs/nitro/arbos/l1pricing"
"github.com/offchainlabs/nitro/util/arbmath"
"github.com/offchainlabs/nitro/util/headerreader"
- flag "github.com/spf13/pflag"
)
var (
diff --git a/execution/gethexec/wasmstorerebuilder.go b/execution/gethexec/wasmstorerebuilder.go
index e3eb8e9268..b40a7cd128 100644
--- a/execution/gethexec/wasmstorerebuilder.go
+++ b/execution/gethexec/wasmstorerebuilder.go
@@ -17,6 +17,7 @@ import (
"github.com/ethereum/go-ethereum/ethdb"
"github.com/ethereum/go-ethereum/log"
"github.com/ethereum/go-ethereum/rlp"
+
"github.com/offchainlabs/nitro/arbos/arbosState"
)
diff --git a/execution/interface.go b/execution/interface.go
index 2a3d79c697..c0aa71c146 100644
--- a/execution/interface.go
+++ b/execution/interface.go
@@ -7,6 +7,7 @@ import (
"github.com/ethereum/go-ethereum/common"
"github.com/ethereum/go-ethereum/core/state"
+
"github.com/offchainlabs/nitro/arbos/arbostypes"
"github.com/offchainlabs/nitro/arbutil"
)
diff --git a/execution/nodeInterface/NodeInterface.go b/execution/nodeInterface/NodeInterface.go
index 71ebbcce80..20282f8231 100644
--- a/execution/nodeInterface/NodeInterface.go
+++ b/execution/nodeInterface/NodeInterface.go
@@ -21,6 +21,7 @@ import (
"github.com/ethereum/go-ethereum/crypto"
"github.com/ethereum/go-ethereum/log"
"github.com/ethereum/go-ethereum/rpc"
+
"github.com/offchainlabs/nitro/arbos"
"github.com/offchainlabs/nitro/arbos/l1pricing"
"github.com/offchainlabs/nitro/arbos/retryables"
@@ -522,10 +523,14 @@ func (n NodeInterface) GasEstimateL1Component(
args.Gas = (*hexutil.Uint64)(&randomGas)
// We set the run mode to eth_call mode here because we want an exact estimate, not a padded estimate
- msg, err := args.ToMessage(randomGas, n.header, evm.StateDB.(*state.StateDB), core.MessageEthcallMode)
- if err != nil {
+ if err := args.CallDefaults(randomGas, evm.Context.BaseFee, evm.ChainConfig().ChainID); err != nil {
return 0, nil, nil, err
}
+ sdb, ok := evm.StateDB.(*state.StateDB)
+ if !ok {
+ return 0, nil, nil, errors.New("failed to cast to stateDB")
+ }
+ msg := args.ToMessage(evm.Context.BaseFee, randomGas, n.header, sdb, core.MessageEthcallMode)
pricing := c.State.L1PricingState()
l1BaseFeeEstimate, err := pricing.PricePerUnit()
@@ -578,10 +583,14 @@ func (n NodeInterface) GasEstimateComponents(
// Setting the gas currently doesn't affect the PosterDataCost,
// but we do it anyways for accuracy with potential future changes.
args.Gas = &totalRaw
- msg, err := args.ToMessage(gasCap, n.header, evm.StateDB.(*state.StateDB), core.MessageGasEstimationMode)
- if err != nil {
+ if err := args.CallDefaults(gasCap, evm.Context.BaseFee, evm.ChainConfig().ChainID); err != nil {
return 0, 0, nil, nil, err
}
+ sdb, ok := evm.StateDB.(*state.StateDB)
+ if !ok {
+ return 0, 0, nil, nil, errors.New("failed to cast to stateDB")
+ }
+ msg := args.ToMessage(evm.Context.BaseFee, gasCap, n.header, sdb, core.MessageGasEstimationMode)
brotliCompressionLevel, err := c.State.BrotliCompressionLevel()
if err != nil {
return 0, 0, nil, nil, fmt.Errorf("failed to get brotli compression level: %w", err)
diff --git a/execution/nodeInterface/NodeInterfaceDebug.go b/execution/nodeInterface/NodeInterfaceDebug.go
index ae9c157ce4..7066bf2ed2 100644
--- a/execution/nodeInterface/NodeInterfaceDebug.go
+++ b/execution/nodeInterface/NodeInterfaceDebug.go
@@ -10,6 +10,7 @@ import (
"github.com/ethereum/go-ethereum/common"
"github.com/ethereum/go-ethereum/core"
"github.com/ethereum/go-ethereum/core/types"
+
"github.com/offchainlabs/nitro/solgen/go/node_interfacegen"
)
diff --git a/execution/nodeInterface/virtual-contracts.go b/execution/nodeInterface/virtual-contracts.go
index d04be10857..5b9f4b3474 100644
--- a/execution/nodeInterface/virtual-contracts.go
+++ b/execution/nodeInterface/virtual-contracts.go
@@ -15,6 +15,7 @@ import (
"github.com/ethereum/go-ethereum/core/types"
"github.com/ethereum/go-ethereum/core/vm"
"github.com/ethereum/go-ethereum/log"
+
"github.com/offchainlabs/nitro/arbos"
"github.com/offchainlabs/nitro/arbos/arbosState"
"github.com/offchainlabs/nitro/arbos/l1pricing"
@@ -23,7 +24,6 @@ import (
"github.com/offchainlabs/nitro/precompiles"
"github.com/offchainlabs/nitro/solgen/go/node_interfacegen"
"github.com/offchainlabs/nitro/solgen/go/precompilesgen"
- "github.com/offchainlabs/nitro/util/arbmath"
)
type addr = common.Address
@@ -115,35 +115,28 @@ func init() {
return msg, nil, nil
}
- core.InterceptRPCGasCap = func(gascap *uint64, msg *core.Message, header *types.Header, statedb *state.StateDB) {
- if *gascap == 0 {
- // It's already unlimited
- return
- }
+ core.RPCPostingGasHook = func(msg *core.Message, header *types.Header, statedb *state.StateDB) (uint64, error) {
arbosVersion := arbosState.ArbOSVersion(statedb)
if arbosVersion == 0 {
// ArbOS hasn't been installed, so use the vanilla gas cap
- return
+ return 0, nil
}
state, err := arbosState.OpenSystemArbosState(statedb, nil, true)
if err != nil {
- log.Error("failed to open ArbOS state", "err", err)
- return
+ return 0, err
}
if header.BaseFee.Sign() == 0 {
// if gas is free or there's no reimbursable poster, the user won't pay for L1 data costs
- return
+ return 0, nil
}
brotliCompressionLevel, err := state.BrotliCompressionLevel()
if err != nil {
- log.Error("failed to get brotli compression level", "err", err)
- return
+ return 0, err
}
posterCost, _ := state.L1PricingState().PosterDataCost(msg, l1pricing.BatchPosterAddress, brotliCompressionLevel)
// Use estimate mode because this is used to raise the gas cap, so we don't want to underestimate.
- posterCostInL2Gas := arbos.GetPosterGas(state, header.BaseFee, core.MessageGasEstimationMode, posterCost)
- *gascap = arbmath.SaturatingUAdd(*gascap, posterCostInL2Gas)
+ return arbos.GetPosterGas(state, header.BaseFee, core.MessageGasEstimationMode, posterCost), nil
}
core.GetArbOSSpeedLimitPerSecond = func(statedb *state.StateDB) (uint64, error) {
diff --git a/gethhook/geth-hook.go b/gethhook/geth-hook.go
index 776e8cc452..3ad275b352 100644
--- a/gethhook/geth-hook.go
+++ b/gethhook/geth-hook.go
@@ -11,6 +11,7 @@ import (
"github.com/ethereum/go-ethereum/core/vm"
"github.com/ethereum/go-ethereum/log"
"github.com/ethereum/go-ethereum/params"
+
"github.com/offchainlabs/nitro/arbos"
"github.com/offchainlabs/nitro/precompiles"
)
diff --git a/gethhook/geth_test.go b/gethhook/geth_test.go
index 57ce2ddec0..381c128071 100644
--- a/gethhook/geth_test.go
+++ b/gethhook/geth_test.go
@@ -20,6 +20,7 @@ import (
"github.com/offchainlabs/nitro/arbos/arbosState"
"github.com/offchainlabs/nitro/arbos/arbostypes"
"github.com/offchainlabs/nitro/arbos/util"
+ "github.com/offchainlabs/nitro/cmd/chaininfo"
"github.com/offchainlabs/nitro/util/testhelpers"
)
@@ -49,7 +50,7 @@ var testChainConfig = ¶ms.ChainConfig{
MuirGlacierBlock: big.NewInt(0),
BerlinBlock: big.NewInt(0),
LondonBlock: big.NewInt(0),
- ArbitrumChainParams: params.ArbitrumDevTestParams(),
+ ArbitrumChainParams: chaininfo.ArbitrumDevTestParams(),
}
func TestEthDepositMessage(t *testing.T) {
diff --git a/go-ethereum b/go-ethereum
index b1075d3786..46fee83ed9 160000
--- a/go-ethereum
+++ b/go-ethereum
@@ -1 +1 @@
-Subproject commit b1075d3786b28a6a3a06fe0e0ab8d1cdecc72f55
+Subproject commit 46fee83ed96f765f16a39b0a2733190c67294e27
diff --git a/go.mod b/go.mod
index 488d455f44..34b04121f0 100644
--- a/go.mod
+++ b/go.mod
@@ -18,7 +18,7 @@ require (
github.com/aws/aws-sdk-go-v2/feature/s3/manager v1.17.27
github.com/aws/aws-sdk-go-v2/service/s3 v1.64.1
github.com/cavaliergopher/grab/v3 v3.0.1
- github.com/cockroachdb/pebble v0.0.0-20230928194634-aa077af62593
+ github.com/cockroachdb/pebble v1.1.0
github.com/codeclysm/extract/v3 v3.0.2
github.com/dgraph-io/badger/v4 v4.2.0
github.com/enescakir/emoji v1.0.0
@@ -44,7 +44,6 @@ require (
github.com/syndtr/goleveldb v1.0.1-0.20210819022825-2ae1ddf74ef7
github.com/wealdtech/go-merkletree v1.0.0
golang.org/x/crypto v0.24.0
- golang.org/x/exp v0.0.0-20231110203233-9a3e6036ecaa
golang.org/x/sys v0.21.0
golang.org/x/term v0.21.0
golang.org/x/tools v0.21.1-0.20240508182429-e35e4ccd0d2d
@@ -70,10 +69,11 @@ require (
go.opentelemetry.io/otel v1.24.0 // indirect
go.opentelemetry.io/otel/metric v1.24.0 // indirect
go.opentelemetry.io/otel/trace v1.24.0 // indirect
+ golang.org/x/exp v0.0.0-20231110203233-9a3e6036ecaa // indirect
google.golang.org/genproto v0.0.0-20240624140628-dc46fd24d27d // indirect
google.golang.org/genproto/googleapis/api v0.0.0-20240617180043-68d350f18fd4 // indirect
google.golang.org/genproto/googleapis/rpc v0.0.0-20240624140628-dc46fd24d27d // indirect
- google.golang.org/grpc v1.64.0 // indirect
+ google.golang.org/grpc v1.64.1 // indirect
)
require (
@@ -100,15 +100,15 @@ require (
github.com/bits-and-blooms/bitset v1.10.0 // indirect
github.com/btcsuite/btcd/btcec/v2 v2.2.0 // indirect
github.com/cespare/xxhash/v2 v2.3.0 // indirect
- github.com/cockroachdb/errors v1.9.1 // indirect
- github.com/cockroachdb/logtags v0.0.0-20211118104740-dabe8e521a4f // indirect
- github.com/cockroachdb/redact v1.1.3 // indirect
+ github.com/cockroachdb/errors v1.11.1 // indirect
+ github.com/cockroachdb/logtags v0.0.0-20230118201751-21c54148d20b // indirect
+ github.com/cockroachdb/redact v1.1.5 // indirect
github.com/cockroachdb/tokenbucket v0.0.0-20230807174530-cc333fc44b06 // indirect
github.com/consensys/bavard v0.1.13 // indirect
github.com/consensys/gnark-crypto v0.12.1 // indirect
github.com/cpuguy83/go-md2man/v2 v2.0.2 // indirect
github.com/crate-crypto/go-ipa v0.0.0-20231025140028-3c0104f4b233 // indirect
- github.com/crate-crypto/go-kzg-4844 v0.7.0 // indirect
+ github.com/crate-crypto/go-kzg-4844 v1.0.0 // indirect
github.com/davecgh/go-spew v1.1.1 // indirect
github.com/deckarep/golang-set/v2 v2.1.0 // indirect
github.com/decred/dcrd/dcrec/secp256k1/v4 v4.2.0 // indirect
@@ -117,13 +117,13 @@ require (
github.com/dlclark/regexp2 v1.7.0 // indirect
github.com/dop251/goja v0.0.0-20230806174421-c933cf95e127 // indirect
github.com/dustin/go-humanize v1.0.0 // indirect
- github.com/ethereum/c-kzg-4844 v0.4.0 // indirect
+ github.com/ethereum/c-kzg-4844 v1.0.0 // indirect
github.com/fsnotify/fsnotify v1.6.0 // indirect
github.com/gammazero/deque v0.2.1 // indirect
github.com/gballet/go-libpcsclite v0.0.0-20190607065134-2772fd86a8ff // indirect
github.com/gballet/go-verkle v0.1.1-0.20231031103413-a67434b50f46 // indirect
github.com/gdamore/encoding v1.0.0 // indirect
- github.com/getsentry/sentry-go v0.12.0 // indirect
+ github.com/getsentry/sentry-go v0.18.0 // indirect
github.com/go-ole/go-ole v1.3.0 // indirect
github.com/go-sourcemap/sourcemap v2.1.3+incompatible // indirect
github.com/gobwas/pool v0.2.1 // indirect
diff --git a/go.sum b/go.sum
index d11610724e..bbb38af6ac 100644
--- a/go.sum
+++ b/go.sum
@@ -45,26 +45,20 @@ cloud.google.com/go/storage v1.10.0/go.mod h1:FLPqc6j+Ki4BU591ie1oL6qBQGu2Bl/tZ9
cloud.google.com/go/storage v1.43.0 h1:CcxnSohZwizt4LCzQHWvBf1/kvtHUn7gk9QERXPyXFs=
cloud.google.com/go/storage v1.43.0/go.mod h1:ajvxEa7WmZS1PxvKRq4bq0tFT3vMd502JwstCcYv0Q0=
dmitri.shuralyov.com/gpu/mtl v0.0.0-20190408044501-666a987793e9/go.mod h1:H6x//7gZCb22OMCxBHrMx7a5I7Hp++hsVxbQ4BYO7hU=
-github.com/AndreasBriese/bbloom v0.0.0-20190306092124-e2d15f34fcf9/go.mod h1:bOvUY6CB00SOBii9/FifXqc0awNKxLFCL/+pkDPuyl8=
github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU=
github.com/BurntSushi/toml v1.3.2 h1:o7IhLm0Msx3BaB+n3Ag7L8EVlByGnpq14C4YWiu/gL8=
github.com/BurntSushi/toml v1.3.2/go.mod h1:CxXYINrC8qIiEnFrOxCa7Jy5BFHlXnUU2pbicEuybxQ=
github.com/BurntSushi/xgb v0.0.0-20160522181843-27f122750802/go.mod h1:IVnqGOEym/WlBOVXweHU+Q+/VP0lqqI8lqeDx9IjBqo=
-github.com/CloudyKit/fastprinter v0.0.0-20200109182630-33d98a066a53/go.mod h1:+3IMCy2vIlbG1XG/0ggNQv0SvxCAIpPM5b1nCz56Xno=
-github.com/CloudyKit/jet/v3 v3.0.0/go.mod h1:HKQPgSJmdK8hdoAbKUUWajkHyHo4RaU5rMdUywE7VMo=
github.com/DataDog/zstd v1.4.5 h1:EndNeuB0l9syBZhut0wns3gV1hL8zX8LIu6ZiVHWLIQ=
github.com/DataDog/zstd v1.4.5/go.mod h1:1jcaCB/ufaK+sKp1NBhlGmpz41jOoPQ35bpF36t7BBo=
-github.com/Joker/hpp v1.0.0/go.mod h1:8x5n+M1Hp5hC0g8okX3sR3vFQwynaX/UgSOM9MeBKzY=
github.com/Knetic/govaluate v3.0.1-0.20171022003610-9aa49832a739+incompatible h1:1G1pk05UrOh0NlF1oeaaix1x8XzrfjIDK47TY0Zehcw=
github.com/Knetic/govaluate v3.0.1-0.20171022003610-9aa49832a739+incompatible/go.mod h1:r7JcOSlj0wfOMncg0iLm8Leh48TZaKVeNIfJntJ2wa0=
github.com/Microsoft/go-winio v0.6.1 h1:9/kr64B9VUZrLm5YYwbGtUJnMgqWVOdUAXu6Migciow=
github.com/Microsoft/go-winio v0.6.1/go.mod h1:LRdKpFKfdobln8UmuiYcKPot9D2v6svN5+sAH+4kjUM=
-github.com/Shopify/goreferrer v0.0.0-20181106222321-ec9c9a553398/go.mod h1:a1uqRtAwp2Xwc6WNPJEufxJ7fx3npB4UV/JOLmbu5I0=
github.com/Shopify/toxiproxy v2.1.4+incompatible h1:TKdv8HiTLgE5wdJuEML90aBgNWsokNbMijUGhmcoBJc=
github.com/Shopify/toxiproxy v2.1.4+incompatible/go.mod h1:OXgGpZ6Cli1/URJOF1DMxUHB2q5Ap20/P/eIdh4G0pI=
github.com/StackExchange/wmi v1.2.1 h1:VIkavFPXSjcnS+O8yTq7NI32k0R5Aj+v39y29VYDOSA=
github.com/StackExchange/wmi v1.2.1/go.mod h1:rcmrprowKIVzvc+NUiLncP2uuArMWLCbu9SBzvHz7e8=
-github.com/ajg/form v1.5.1/go.mod h1:uL1WgH+h2mgNtvBq0339dVnzXdBETtL2LeUXaIv25UY=
github.com/alecthomas/template v0.0.0-20160405071501-a0175ee3bccc/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc=
github.com/alecthomas/template v0.0.0-20190718012654-fb15b899a751/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc=
github.com/alecthomas/units v0.0.0-20151022065526-2efee857e7cf/go.mod h1:ybxpYRFXyAe+OPACYpWeL0wqObRcbAqCMya13uyzqw0=
@@ -80,7 +74,6 @@ github.com/andybalholm/brotli v1.0.4 h1:V7DdXeJtZscaqfNuAdSRuRFzuiKlHSC/Zh3zl9qY
github.com/andybalholm/brotli v1.0.4/go.mod h1:fO7iG3H7G2nSZ7m0zPUDn85XEX2GTukHGRSepvi9Eig=
github.com/arduino/go-paths-helper v1.2.0 h1:qDW93PR5IZUN/jzO4rCtexiwF8P4OIcOmcSgAYLZfY4=
github.com/arduino/go-paths-helper v1.2.0/go.mod h1:HpxtKph+g238EJHq4geEPv9p+gl3v5YYu35Yb+w31Ck=
-github.com/armon/consul-api v0.0.0-20180202201655-eb2c6b5be1b6/go.mod h1:grANhF5doyWs3UAsr3K4I6qtAmlQcZDesFNEHPZAzj8=
github.com/armon/go-metrics v0.0.0-20180917152333-f0300d1749da/go.mod h1:Q73ZrmVTwzkszR9V5SSuryQ31EELlFMUz1kKyl939pY=
github.com/armon/go-radix v0.0.0-20180808171621-7fddfc383310/go.mod h1:ufUuZ+zHj4x4TnLV4JWEpy2hxWSpsRywHrMgIH9cCH8=
github.com/aws/aws-sdk-go-v2 v1.9.2/go.mod h1:cK/D0BBs0b/oWPIcX/Z/obahJK1TT7IPVjy53i/mX/4=
@@ -131,7 +124,6 @@ github.com/aws/aws-sdk-go-v2/service/sts v1.31.4/go.mod h1:yMWe0F+XG0DkRZK5ODZhG
github.com/aws/smithy-go v1.8.0/go.mod h1:SObp3lf9smib00L/v3U2eAKG8FyQ7iLrJnQiAmR5n+E=
github.com/aws/smithy-go v1.22.0 h1:uunKnWlcoL3zO7q+gG2Pk53joueEOsnNB28QdMsmiMM=
github.com/aws/smithy-go v1.22.0/go.mod h1:irrKGvNn1InZwb2d7fkIRNucdfwR8R+Ts3wxYa/cJHg=
-github.com/aymerick/raymond v2.0.3-0.20180322193309-b565731e1464+incompatible/go.mod h1:osfaiScAUVup+UC9Nfq76eWqDhXlp+4UYaA8uhTBO6g=
github.com/beorn7/perks v0.0.0-20180321164747-3a771d992973/go.mod h1:Dwedo/Wpr24TaqPxmxbtue+5NUziq4I4S80YR8gNf3Q=
github.com/beorn7/perks v1.0.0/go.mod h1:KWe93zE9D1o94FZ5RNwFwVgaQK1VOXiVxmqh+CedLV8=
github.com/beorn7/perks v1.0.1 h1:VlbKKnNfV8bJzeqoa4cOKqO6bYr3WgKZxO8Z16+hsOM=
@@ -164,37 +156,30 @@ github.com/chzyer/test v0.0.0-20180213035817-a1ea475d72b1/go.mod h1:Q3SI9o4m/ZMn
github.com/chzyer/test v0.0.0-20210722231415-061457976a23/go.mod h1:Q3SI9o4m/ZMnBNeIyt5eFwwo7qiLfzFZmjNmxjkiQlU=
github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw=
github.com/cncf/udpa/go v0.0.0-20191209042840-269d4d468f6f/go.mod h1:M8M6+tZqaGXZJjfX53e64911xZQV5JYwmTeXPW+k8Sc=
-github.com/cncf/udpa/go v0.0.0-20201120205902-5459f2c99403/go.mod h1:WmhPx2Nbnhtbo57+VJT5O0JRkEi1Wbu0z5j0R8u5Hbk=
-github.com/cockroachdb/datadriven v1.0.2/go.mod h1:a9RdTaap04u637JoCzcUoIcDmvwSUtcUFtT/C3kJlTU=
github.com/cockroachdb/datadriven v1.0.3-0.20230413201302-be42291fc80f h1:otljaYPt5hWxV3MUfO5dFPFiOXg9CyG5/kCfayTqsJ4=
github.com/cockroachdb/datadriven v1.0.3-0.20230413201302-be42291fc80f/go.mod h1:a9RdTaap04u637JoCzcUoIcDmvwSUtcUFtT/C3kJlTU=
-github.com/cockroachdb/errors v1.9.1 h1:yFVvsI0VxmRShfawbt/laCIDy/mtTqqnvoNgiy5bEV8=
-github.com/cockroachdb/errors v1.9.1/go.mod h1:2sxOtL2WIc096WSZqZ5h8fa17rdDq9HZOZLBCor4mBk=
-github.com/cockroachdb/logtags v0.0.0-20211118104740-dabe8e521a4f h1:6jduT9Hfc0njg5jJ1DdKCFPdMBrp/mdZfCpa5h+WM74=
-github.com/cockroachdb/logtags v0.0.0-20211118104740-dabe8e521a4f/go.mod h1:Vz9DsVWQQhf3vs21MhPMZpMGSht7O/2vFW2xusFUVOs=
-github.com/cockroachdb/pebble v0.0.0-20230928194634-aa077af62593 h1:aPEJyR4rPBvDmeyi+l/FS/VtA00IWvjeFvjen1m1l1A=
-github.com/cockroachdb/pebble v0.0.0-20230928194634-aa077af62593/go.mod h1:6hk1eMY/u5t+Cf18q5lFMUA1Rc+Sm5I6Ra1QuPyxXCo=
-github.com/cockroachdb/redact v1.1.3 h1:AKZds10rFSIj7qADf0g46UixK8NNLwWTNdCIGS5wfSQ=
-github.com/cockroachdb/redact v1.1.3/go.mod h1:BVNblN9mBWFyMyqK1k3AAiSxhvhfK2oOZZ2lK+dpvRg=
+github.com/cockroachdb/errors v1.11.1 h1:xSEW75zKaKCWzR3OfxXUxgrk/NtT4G1MiOv5lWZazG8=
+github.com/cockroachdb/errors v1.11.1/go.mod h1:8MUxA3Gi6b25tYlFEBGLf+D8aISL+M4MIpiWMSNRfxw=
+github.com/cockroachdb/logtags v0.0.0-20230118201751-21c54148d20b h1:r6VH0faHjZeQy818SGhaone5OnYfxFR/+AzdY3sf5aE=
+github.com/cockroachdb/logtags v0.0.0-20230118201751-21c54148d20b/go.mod h1:Vz9DsVWQQhf3vs21MhPMZpMGSht7O/2vFW2xusFUVOs=
+github.com/cockroachdb/pebble v1.1.0 h1:pcFh8CdCIt2kmEpK0OIatq67Ln9uGDYY3d5XnE0LJG4=
+github.com/cockroachdb/pebble v1.1.0/go.mod h1:sEHm5NOXxyiAoKWhoFxT8xMgd/f3RA6qUqQ1BXKrh2E=
+github.com/cockroachdb/redact v1.1.5 h1:u1PMllDkdFfPWaNGMyLD1+so+aq3uUItthCFqzwPJ30=
+github.com/cockroachdb/redact v1.1.5/go.mod h1:BVNblN9mBWFyMyqK1k3AAiSxhvhfK2oOZZ2lK+dpvRg=
github.com/cockroachdb/tokenbucket v0.0.0-20230807174530-cc333fc44b06 h1:zuQyyAKVxetITBuuhv3BI9cMrmStnpT18zmgmTxunpo=
github.com/cockroachdb/tokenbucket v0.0.0-20230807174530-cc333fc44b06/go.mod h1:7nc4anLGjupUW/PeY5qiNYsdNXj7zopG+eqsS7To5IQ=
github.com/codeclysm/extract/v3 v3.0.2 h1:sB4LcE3Php7LkhZwN0n2p8GCwZe92PEQutdbGURf5xc=
github.com/codeclysm/extract/v3 v3.0.2/go.mod h1:NKsw+hqua9H+Rlwy/w/3Qgt9jDonYEgB6wJu+25eOKw=
-github.com/codegangsta/inject v0.0.0-20150114235600-33e0aa1cb7c0/go.mod h1:4Zcjuz89kmFXt9morQgcfYZAYZ5n8WHjt81YYWIwtTM=
github.com/consensys/bavard v0.1.13 h1:oLhMLOFGTLdlda/kma4VOJazblc7IM5y5QPd2A/YjhQ=
github.com/consensys/bavard v0.1.13/go.mod h1:9ItSMtA/dXMAiL7BG6bqW2m3NdSEObYWoH223nGHukI=
github.com/consensys/gnark-crypto v0.12.1 h1:lHH39WuuFgVHONRl3J0LRBtuYdQTumFSDtJF7HpyG8M=
github.com/consensys/gnark-crypto v0.12.1/go.mod h1:v2Gy7L/4ZRosZ7Ivs+9SfUDr0f5UlG+EM5t7MPHiLuY=
-github.com/coreos/etcd v3.3.10+incompatible/go.mod h1:uF7uidLiAD3TWHmW31ZFd/JWoc32PjwdhPthX9715RE=
-github.com/coreos/go-etcd v2.0.0+incompatible/go.mod h1:Jez6KQU2B/sWsbdaef3ED8NzMklzPG4d5KIOhIy30Tk=
-github.com/coreos/go-semver v0.2.0/go.mod h1:nnelYz7RCh+5ahJtPPxZlU+153eP4D4r3EedlOD2RNk=
-github.com/cpuguy83/go-md2man v1.0.10/go.mod h1:SmD6nW6nTyfqj6ABTjUi3V3JVMnlJmwcJI5acqYI6dE=
github.com/cpuguy83/go-md2man/v2 v2.0.2 h1:p1EgwI/C7NhT0JmVkwCD2ZBK8j4aeHQX2pMHHBfMQ6w=
github.com/cpuguy83/go-md2man/v2 v2.0.2/go.mod h1:tgQtvFlXSQOSOSIRvRPT7W67SCa46tRHOmNcaadrF8o=
github.com/crate-crypto/go-ipa v0.0.0-20231025140028-3c0104f4b233 h1:d28BXYi+wUpz1KBmiF9bWrjEMacUEREV6MBi2ODnrfQ=
github.com/crate-crypto/go-ipa v0.0.0-20231025140028-3c0104f4b233/go.mod h1:geZJZH3SzKCqnz5VT0q/DyIG/tvu/dZk+VIfXicupJs=
-github.com/crate-crypto/go-kzg-4844 v0.7.0 h1:C0vgZRk4q4EZ/JgPfzuSoxdCq3C3mOZMBShovmncxvA=
-github.com/crate-crypto/go-kzg-4844 v0.7.0/go.mod h1:1kMhvPgI0Ky3yIa+9lFySEBUBXkYxeOi8ZF1sYioxhc=
+github.com/crate-crypto/go-kzg-4844 v1.0.0 h1:TsSgHwrkTKecKJ4kadtHi4b3xHW5dCFUDFnUp1TsawI=
+github.com/crate-crypto/go-kzg-4844 v1.0.0/go.mod h1:1kMhvPgI0Ky3yIa+9lFySEBUBXkYxeOi8ZF1sYioxhc=
github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E=
github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c=
@@ -205,7 +190,6 @@ github.com/decred/dcrd/crypto/blake256 v1.0.1 h1:7PltbUIQB7u/FfZ39+DGa/ShuMyJ5il
github.com/decred/dcrd/crypto/blake256 v1.0.1/go.mod h1:2OfgNZ5wDpcsFmHmCK5gZTPcCXqlm2ArzUIkw9czNJo=
github.com/decred/dcrd/dcrec/secp256k1/v4 v4.2.0 h1:8UrgZ3GkP4i/CLijOJx79Yu+etlyjdBU4sfcs2WYQMs=
github.com/decred/dcrd/dcrec/secp256k1/v4 v4.2.0/go.mod h1:v57UDF4pDQJcEfFUCRop3lJL149eHGSe9Jvczhzjo/0=
-github.com/dgraph-io/badger v1.6.0/go.mod h1:zwt7syl517jmP8s94KqSxTlM6IMsdhYy6psNgSztDR4=
github.com/dgraph-io/badger/v4 v4.2.0 h1:kJrlajbXXL9DFTNuhhu9yCx7JJa4qpYWxtE8BzuWsEs=
github.com/dgraph-io/badger/v4 v4.2.0/go.mod h1:qfCqhPoWDFJRx1gp5QwwyGo8xk1lbHUxvK9nK0OGAak=
github.com/dgraph-io/ristretto v0.1.1 h1:6CWw5tJNgpegArSHpNHJKldNeq03FQCwYvfMVWajOK8=
@@ -224,18 +208,14 @@ github.com/dop251/goja_nodejs v0.0.0-20210225215109-d91c329300e7/go.mod h1:hn7BA
github.com/dop251/goja_nodejs v0.0.0-20211022123610-8dd9abb0616d/go.mod h1:DngW8aVqWbuLRMHItjPUyqdj+HWPvnQe8V8y1nDpIbM=
github.com/dustin/go-humanize v1.0.0 h1:VSnTsYCnlFHaM2/igO1h6X3HA71jcobQuxemgkq4zYo=
github.com/dustin/go-humanize v1.0.0/go.mod h1:HtrtbFcZ19U5GC7JDqmcUSB87Iq5E25KnS6fMYU6eOk=
-github.com/eknkc/amber v0.0.0-20171010120322-cdade1c07385/go.mod h1:0vRUJqYpeSZifjYj7uP3BG/gKcuzL9xWVV/Y+cK33KM=
github.com/enescakir/emoji v1.0.0 h1:W+HsNql8swfCQFtioDGDHCHri8nudlK1n5p2rHCJoog=
github.com/enescakir/emoji v1.0.0/go.mod h1:Bt1EKuLnKDTYpLALApstIkAjdDrS/8IAgTkKp+WKFD0=
github.com/envoyproxy/go-control-plane v0.9.0/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4=
github.com/envoyproxy/go-control-plane v0.9.1-0.20191026205805-5f8ba28d4473/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4=
github.com/envoyproxy/go-control-plane v0.9.4/go.mod h1:6rpuAdCZL397s3pYoYcLgu1mIlRU8Am5FuJP05cCM98=
-github.com/envoyproxy/go-control-plane v0.9.9-0.20210217033140-668b12f5399d/go.mod h1:cXg6YxExXjJnVBQHBLXeUAgxn2UodCpnH306RInaBQk=
github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c=
-github.com/etcd-io/bbolt v1.3.3/go.mod h1:ZF2nL25h33cCyBtcyWeZ2/I3HQOfTP+0PIEvHjkjCrw=
-github.com/ethereum/c-kzg-4844 v0.4.0 h1:3MS1s4JtA868KpJxroZoepdV0ZKBp3u/O5HcZ7R3nlY=
-github.com/ethereum/c-kzg-4844 v0.4.0/go.mod h1:VewdlzQmpT5QSrVhbBuGoCdFJkpaJlO1aQputP83wc0=
-github.com/fasthttp-contrib/websocket v0.0.0-20160511215533-1f3b11f56072/go.mod h1:duJ4Jxv5lDcvg4QuQr0oowTf7dz4/CR8NtyCooz9HL8=
+github.com/ethereum/c-kzg-4844 v1.0.0 h1:0X1LBXxaEtYD9xsyj9B9ctQEZIpnvVDeoBx8aHEwTNA=
+github.com/ethereum/c-kzg-4844 v1.0.0/go.mod h1:VewdlzQmpT5QSrVhbBuGoCdFJkpaJlO1aQputP83wc0=
github.com/fatih/color v1.7.0/go.mod h1:Zm6kSWBoL9eyXnKyktHP6abPY2pDugNf5KwzbycvMj4=
github.com/fatih/structs v1.1.0/go.mod h1:9NiDSp5zOcgEDl+j00MP/WkGVPOlPRLejGD8Ga6PJ7M=
github.com/fatih/structtag v1.2.0 h1:/OdNE99OxoI/PqaW/SuSK9uxxT3f/tcSZgon/ssNSx4=
@@ -248,7 +228,6 @@ github.com/fsnotify/fsnotify v1.6.0 h1:n+5WquG0fcWoWp6xPWfHdbskMCQaFnG6PfBrh1Ky4
github.com/fsnotify/fsnotify v1.6.0/go.mod h1:sl3t1tCWJFWoRz9R8WJCbQihKKwmorjAbSClcnxKAGw=
github.com/gammazero/deque v0.2.1 h1:qSdsbG6pgp6nL7A0+K/B7s12mcCY/5l5SIUpMOl+dC0=
github.com/gammazero/deque v0.2.1/go.mod h1:LFroj8x4cMYCukHJDbxFCkT+r9AndaJnFMuZDV34tuU=
-github.com/gavv/httpexpect v2.0.0+incompatible/go.mod h1:x+9tiU1YnrOvnB725RkpoLv1M62hOWzwo5OXotisrKc=
github.com/gballet/go-libpcsclite v0.0.0-20190607065134-2772fd86a8ff h1:tY80oXqGNY4FhTFhk+o9oFHGINQ/+vhlm8HFzi6znCI=
github.com/gballet/go-libpcsclite v0.0.0-20190607065134-2772fd86a8ff/go.mod h1:x7DCsMOv1taUwEWCzT4cmDeAkigA5/QCwUodaVOe8Ww=
github.com/gballet/go-verkle v0.1.1-0.20231031103413-a67434b50f46 h1:BAIP2GihuqhwdILrV+7GJel5lyPV3u1+PgzrWLc0TkE=
@@ -257,13 +236,10 @@ github.com/gdamore/encoding v1.0.0 h1:+7OoQ1Bc6eTm5niUzBa0Ctsh6JbMW6Ra+YNuAtDBdk
github.com/gdamore/encoding v1.0.0/go.mod h1:alR0ol34c49FCSBLjhosxzcPHQbf2trDkoo5dl+VrEg=
github.com/gdamore/tcell/v2 v2.7.1 h1:TiCcmpWHiAU7F0rA2I3S2Y4mmLmO9KHxJ7E1QhYzQbc=
github.com/gdamore/tcell/v2 v2.7.1/go.mod h1:dSXtXTSK0VsW1biw65DZLZ2NKr7j0qP/0J7ONmsraWg=
-github.com/getsentry/sentry-go v0.12.0 h1:era7g0re5iY13bHSdN/xMkyV+5zZppjRVQhZrXCaEIk=
-github.com/getsentry/sentry-go v0.12.0/go.mod h1:NSap0JBYWzHND8oMbyi0+XZhUalc1TBdRL1M71JZW2c=
-github.com/gin-contrib/sse v0.0.0-20190301062529-5545eab6dad3/go.mod h1:VJ0WA2NBN22VlZ2dKZQPAPnyWw5XTlK1KymzLKsr59s=
-github.com/gin-gonic/gin v1.4.0/go.mod h1:OW2EZn3DO8Ln9oIKOvM++LBO+5UPHJJDH72/q/3rZdM=
-github.com/go-check/check v0.0.0-20180628173108-788fd7840127/go.mod h1:9ES+weclKsC9YodN5RgxqK/VD9HM9JsCSh7rNhMZE98=
-github.com/go-errors/errors v1.0.1 h1:LUHzmkK3GUKUrL/1gfBUxAHzcev3apQlezX/+O7ma6w=
-github.com/go-errors/errors v1.0.1/go.mod h1:f4zRHt4oKfwPJE5k8C9vpYG+aDHdBFUsgrm6/TyX73Q=
+github.com/getsentry/sentry-go v0.18.0 h1:MtBW5H9QgdcJabtZcuJG80BMOwaBpkRDZkxRkNC1sN0=
+github.com/getsentry/sentry-go v0.18.0/go.mod h1:Kgon4Mby+FJ7ZWHFUAZgVaIa8sxHtnRJRLTXZr51aKQ=
+github.com/go-errors/errors v1.4.2 h1:J6MZopCL4uSllY1OfXM374weqZFFItUbrImctkmUxIA=
+github.com/go-errors/errors v1.4.2/go.mod h1:sIVyrIiJhuEF+Pj9Ebtd6P/rEYROXFi3BopGUQ5a5Og=
github.com/go-gl/glfw v0.0.0-20190409004039-e6da0acd62b1/go.mod h1:vR7hzQXu2zJy9AVAgeJqvqgH9Q5CA+iKCZ2gyEVpxRU=
github.com/go-gl/glfw/v3.3/glfw v0.0.0-20191125211704-12ad95a8df72/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8=
github.com/go-gl/glfw/v3.3/glfw v0.0.0-20200222043503-6f7a984d4dc4/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8=
@@ -281,7 +257,6 @@ github.com/go-logr/logr v1.4.1 h1:pKouT5E8xu9zeFC39JXRDukb6JFQPXM5p5I91188VAQ=
github.com/go-logr/logr v1.4.1/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY=
github.com/go-logr/stdr v1.2.2 h1:hSWxHoqTgW2S2qGc0LTAI563KZ5YKYRhT3MFKZMbjag=
github.com/go-logr/stdr v1.2.2/go.mod h1:mMo/vtBO5dYbehREoey6XUKy/eSumjCCveDpRre4VKE=
-github.com/go-martini/martini v0.0.0-20170121215854-22fa46961aab/go.mod h1:/P9AEU963A2AYjv4d1V5eVL1CQbEJq6aCNHDDjibzu8=
github.com/go-ole/go-ole v1.2.5/go.mod h1:pprOEPIfldk/42T2oK7lQ4v4JSDwmV0As9GaiUsvbm0=
github.com/go-ole/go-ole v1.3.0 h1:Dt6ye7+vXGIKZ7Xtk4s6/xVdGDQynvom7xCFEdWr6uE=
github.com/go-ole/go-ole v1.3.0/go.mod h1:5LS6F96DhAwUc7C+1HLexzMXY1xGRSryjyPPKW6zv78=
@@ -289,27 +264,19 @@ github.com/go-sourcemap/sourcemap v2.1.3+incompatible h1:W1iEw64niKVGogNgBN3ePyL
github.com/go-sourcemap/sourcemap v2.1.3+incompatible/go.mod h1:F8jJfvm2KbVjc5NqelyYJmf/v5J0dwNLS2mL4sNA1Jg=
github.com/go-stack/stack v1.8.0/go.mod h1:v0f6uXyyMGvRgIKkXu+yp6POWl0qKG85gN/melR3HDY=
github.com/go-test/deep v1.0.2-0.20181118220953-042da051cf31/go.mod h1:wGDj63lr65AM2AQyKZd/NYHGb0R+1RLqB8NKt3aSFNA=
-github.com/gobwas/httphead v0.0.0-20180130184737-2c6c146eadee/go.mod h1:L0fX3K22YWvt/FAX9NnzrNzcI4wNYi9Yku4O0LKYflo=
github.com/gobwas/httphead v0.1.0 h1:exrUm0f4YX0L7EBwZHuCF4GDp8aJfVeBrlLQrs6NqWU=
github.com/gobwas/httphead v0.1.0/go.mod h1:O/RXo79gxV8G+RqlR/otEwx4Q36zl9rqC5u12GKvMCM=
-github.com/gobwas/pool v0.2.0/go.mod h1:q8bcK0KcYlCgd9e7WYLm9LpyS+YeLd8JVDW6WezmKEw=
github.com/gobwas/pool v0.2.1 h1:xfeeEhW7pwmX8nuLVlqbzVc7udMDrwetjEv+TZIz1og=
github.com/gobwas/pool v0.2.1/go.mod h1:q8bcK0KcYlCgd9e7WYLm9LpyS+YeLd8JVDW6WezmKEw=
-github.com/gobwas/ws v1.0.2/go.mod h1:szmBTxLgaFppYjEmNtny/v3w89xOydFnnZMcgRRu/EM=
github.com/gobwas/ws v1.2.1 h1:F2aeBZrm2NDsc7vbovKrWSogd4wvfAxg0FQ89/iqOTk=
github.com/gobwas/ws v1.2.1/go.mod h1:hRKAFb8wOxFROYNsT1bqfWnhX+b5MFeJM9r2ZSwg/KY=
github.com/gobwas/ws-examples v0.0.0-20190625122829-a9e8908d9484 h1:XC9N1eiAyO1zg62dpOU8bex8emB/zluUtKcbLNjJxGI=
github.com/gobwas/ws-examples v0.0.0-20190625122829-a9e8908d9484/go.mod h1:5nDZF4afNA1S7ZKcBXCMvDo4nuCTp1931DND7/W4aXo=
github.com/gofrs/flock v0.8.1 h1:+gYjHKf32LDeiEEFhQaotPbLuUXjY5ZqxKgXy7n59aw=
github.com/gofrs/flock v0.8.1/go.mod h1:F1TvTiK9OcQqauNUHlbJvyl9Qa1QvF/gOUDKA14jxHU=
-github.com/gogo/googleapis v0.0.0-20180223154316-0cd9801be74a/go.mod h1:gf4bu3Q80BeJ6H1S1vYPm8/ELATdvryBaNFGgqEef3s=
-github.com/gogo/googleapis v1.4.1/go.mod h1:2lpHqI5OcWCtVElxXnPt+s8oJvMpySlOyM6xDCrzib4=
github.com/gogo/protobuf v1.1.1/go.mod h1:r8qH/GZQm5c6nD/R0oafs1akxWv10x8SbQlK7atdtwQ=
-github.com/gogo/protobuf v1.2.0/go.mod h1:r8qH/GZQm5c6nD/R0oafs1akxWv10x8SbQlK7atdtwQ=
github.com/gogo/protobuf v1.3.2 h1:Ov1cvc58UF3b5XjBnZv7+opcTcQFZebYjWzi34vdm4Q=
github.com/gogo/protobuf v1.3.2/go.mod h1:P1XiOD3dCwIKUDQYPy72D8LYyHL2YPYrpS2s69NZV8Q=
-github.com/gogo/status v1.1.0/go.mod h1:BFv9nrluPLmrS0EmGVvLaPNmRosr9KapBYd5/hpY1WM=
-github.com/golang-jwt/jwt v3.2.2+incompatible/go.mod h1:8pz2t5EyA70fFQQSrl6XZXzqecmYZeUEB8OUGHkxJ+I=
github.com/golang-jwt/jwt/v4 v4.5.0 h1:7cYmW1XlMY7h7ii7UhUyChSgS5wUJEnm9uZVTGqOWzg=
github.com/golang-jwt/jwt/v4 v4.5.0/go.mod h1:m21LjoU+eqJr34lmDMbreY2eSTRJ1cv77w39/MY0Ch0=
github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q=
@@ -349,7 +316,6 @@ github.com/golang/snappy v0.0.1/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEW
github.com/golang/snappy v0.0.4/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q=
github.com/golang/snappy v0.0.5-0.20220116011046-fa5810519dcb h1:PBC98N2aIaM3XXiurYmW7fx4GZkL8feAMVq7nEjURHk=
github.com/golang/snappy v0.0.5-0.20220116011046-fa5810519dcb/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q=
-github.com/gomodule/redigo v1.7.1-0.20190724094224-574c33c3df38/go.mod h1:B4C85qUVwatsJoIUNIfCRsp7qO0iAmpGFZ4EELWSbC4=
github.com/google/btree v0.0.0-20180813153112-4030bb1f1f0c/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ=
github.com/google/btree v1.0.0/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ=
github.com/google/btree v1.1.2 h1:xf4v41cLI2Z6FxbKm+8Bu+m8ifhj15JuZ9sa0jZCMUU=
@@ -372,7 +338,6 @@ github.com/google/go-cmp v0.6.0 h1:ofyhxvXcZhMsU5ulbFiLKl/XBFqE1GSq7atu8tAmTRI=
github.com/google/go-cmp v0.6.0/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY=
github.com/google/go-github/v62 v62.0.0 h1:/6mGCaRywZz9MuHyw9gD1CwsbmBX8GWsbFkwMmHdhl4=
github.com/google/go-github/v62 v62.0.0/go.mod h1:EMxeUqGJq2xRu9DYBMwel/mr7kZrzUOfQmmpYrZn2a4=
-github.com/google/go-querystring v1.0.0/go.mod h1:odCYkC5MyYFN7vkCjXpyrEuKhc/BUO6wN/zVPAxq5ck=
github.com/google/go-querystring v1.1.0 h1:AnCroh3fv4ZBgVIf1Iwtovgjaw/GiKJo8M8yD/fhyJ8=
github.com/google/go-querystring v1.1.0/go.mod h1:Kcdr2DB4koayq7X8pmAG4sNG59So17icRSOU623lUBU=
github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg=
@@ -406,8 +371,6 @@ github.com/googleapis/gax-go/v2 v2.0.4/go.mod h1:0Wqv26UfaUD9n4G6kQubkQ+KchISgw+
github.com/googleapis/gax-go/v2 v2.0.5/go.mod h1:DWXyrwAJ9X0FpwwEdw+IPEYBICEFu5mhpdKc/us6bOk=
github.com/googleapis/gax-go/v2 v2.12.5 h1:8gw9KZK8TiVKB6q3zHY3SBzLnrGp6HQjyfYBYGmXdxA=
github.com/googleapis/gax-go/v2 v2.12.5/go.mod h1:BUDKcWo+RaKq5SC9vVYL0wLADa3VcfswbOMMRmB9H3E=
-github.com/gopherjs/gopherjs v0.0.0-20181017120253-0766667cb4d1/go.mod h1:wJfORRmW1u3UXTncJ5qlYoELFm8eSnnEO6hX4iZ3EWY=
-github.com/gorilla/websocket v1.4.1/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE=
github.com/gorilla/websocket v1.5.0 h1:PPwGk2jz7EePpoHN/+ClbZu8SPxiqlu12wZP/3sWmnc=
github.com/gorilla/websocket v1.5.0/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE=
github.com/graph-gophers/graphql-go v1.3.0 h1:Eb9x/q6MFpCLz7jBCiP/WTxjSDrYLR1QY41SORZyNJ0=
@@ -430,7 +393,6 @@ github.com/hashicorp/go-sockaddr v1.0.2/go.mod h1:rB4wwRAUzs07qva3c5SdrY/NEtAUjG
github.com/hashicorp/go-uuid v1.0.0/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/bN7x4byOro=
github.com/hashicorp/go-uuid v1.0.1/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/bN7x4byOro=
github.com/hashicorp/go-version v1.1.0/go.mod h1:fltr4n8CU8Ke44wwGCBoEymUuxUHl09ZGVZPK5anwXA=
-github.com/hashicorp/go-version v1.2.0/go.mod h1:fltr4n8CU8Ke44wwGCBoEymUuxUHl09ZGVZPK5anwXA=
github.com/hashicorp/golang-lru v0.5.0/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8=
github.com/hashicorp/golang-lru v0.5.1/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8=
github.com/hashicorp/golang-lru/v2 v2.0.7 h1:a+bsQ5rvGLjzHuww6tVxozPZFVghXaHOwFs4luLUK2k=
@@ -450,16 +412,8 @@ github.com/holiman/uint256 v1.2.4/go.mod h1:EOMSn4q6Nyt9P6efbI3bueV4e1b3dGlUCXei
github.com/hpcloud/tail v1.0.0/go.mod h1:ab1qPbhIpdTxEkNHXyeSf5vhxWSCs/tWer42PpOxQnU=
github.com/huin/goupnp v1.3.0 h1:UvLUlWDNpoUdYzb2TCn+MuTWtcjXKSza2n6CBdQ0xXc=
github.com/huin/goupnp v1.3.0/go.mod h1:gnGPsThkYa7bFi/KWmEysQRf48l2dvR5bxr2OFckNX8=
-github.com/hydrogen18/memlistener v0.0.0-20200120041712-dcc25e7acd91/go.mod h1:qEIFzExnS6016fRpRfxrExeVn2gbClQA99gQhnIcdhE=
github.com/ianlancetaylor/demangle v0.0.0-20181102032728-5e5cf60278f6/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc=
github.com/ianlancetaylor/demangle v0.0.0-20220319035150-800ac71e25c2/go.mod h1:aYm2/VgdVmcIU8iMfdMvDMsRAQjcfZSKFby6HOFvi/w=
-github.com/imkira/go-interpol v1.1.0/go.mod h1:z0h2/2T3XF8kyEPpRgJ3kmNv+C43p+I/CoI+jC3w2iA=
-github.com/inconshreveable/mousetrap v1.0.0/go.mod h1:PxqpIevigyE2G7u3NXJIT2ANytuPF1OarO4DADm73n8=
-github.com/iris-contrib/blackfriday v2.0.0+incompatible/go.mod h1:UzZ2bDEoaSGPbkg6SAB4att1aAwTmVIx/5gCVqeyUdI=
-github.com/iris-contrib/go.uuid v2.0.0+incompatible/go.mod h1:iz2lgM/1UnEf1kP0L/+fafWORmlnuysV2EMP8MW+qe0=
-github.com/iris-contrib/jade v1.1.3/go.mod h1:H/geBymxJhShH5kecoiOCSssPX7QWYH7UaeZTSWddIk=
-github.com/iris-contrib/pongo2 v0.0.1/go.mod h1:Ssh+00+3GAZqSQb30AvBRNxBx7rf0GqwkjqxNd0u65g=
-github.com/iris-contrib/schema v0.0.1/go.mod h1:urYA3uvUNG1TIIjOSCzHr9/LmbQo8LrOcOqfqxa4hXw=
github.com/jackpal/go-nat-pmp v1.0.2 h1:KzKSgb7qkJvOUTqYl9/Hg/me3pWgBmERKrTGD7BdWus=
github.com/jackpal/go-nat-pmp v1.0.2/go.mod h1:QPH045xvCAeXUZOxsnwmrtiCoxIr9eob+4orBN1SBKc=
github.com/jmespath/go-jmespath v0.4.0/go.mod h1:T8mJZnbsbmF+m6zOOFylbeCJqk5+pHWvzYPziyZiYoo=
@@ -468,13 +422,11 @@ github.com/joho/godotenv v1.3.0 h1:Zjp+RcGpHhGlrMbJzXTrZZPrWj+1vfm90La1wgB6Bhc=
github.com/joho/godotenv v1.3.0/go.mod h1:7hK45KPybAkOC6peb+G5yklZfMxEjkZhHbwpqxOKXbg=
github.com/jpillora/backoff v1.0.0/go.mod h1:J/6gKK9jxlEcS3zixgDgUAsiuZ7yrSoa/FX5e0EB2j4=
github.com/json-iterator/go v1.1.6/go.mod h1:+SdeFBvtyEkXs7REEP0seUULqWtbJapLOCVDaaPEHmU=
-github.com/json-iterator/go v1.1.9/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4=
github.com/json-iterator/go v1.1.10/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4=
github.com/json-iterator/go v1.1.11/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4=
github.com/json-iterator/go v1.1.12/go.mod h1:e30LSqwooZae/UwlEbR2852Gd8hjQvJoHmT4TnhNGBo=
github.com/jstemmer/go-junit-report v0.0.0-20190106144839-af01ea7f8024/go.mod h1:6v2b51hI/fHJwM22ozAgKL4VKDeJcHhJFhtBdhmNjmU=
github.com/jstemmer/go-junit-report v0.9.1/go.mod h1:Brl9GWCQeLvo8nXZwPNNblvFj/XSXhF0NWZEnDohbsk=
-github.com/jtolds/gls v4.20.0+incompatible/go.mod h1:QJZ7F/aHp+rZTRtaJ1ow/lLfFfVYBRgL+9YlvaHOwJU=
github.com/juju/clock v0.0.0-20180524022203-d293bb356ca4/go.mod h1:nD0vlnrUjcjJhqN5WuCWZyzfd5AHZAC9/ajvbSx69xA=
github.com/juju/errors v0.0.0-20150916125642-1b5e39b83d18/go.mod h1:W54LbzXuIE0boCoNJfwqpmkKJ1O4TCTZMetAt6jGk7Q=
github.com/juju/errors v0.0.0-20181118221551-089d3ea4e4d5 h1:rhqTjzJlm7EbkELJDKMTU7udov+Se0xZkWmugr6zGok=
@@ -489,19 +441,10 @@ github.com/juju/utils v0.0.0-20180808125547-9dfc6dbfb02b/go.mod h1:6/KLg8Wz/y2KV
github.com/juju/version v0.0.0-20161031051906-1f41e27e54f2/go.mod h1:kE8gK5X0CImdr7qpSKl3xB2PmpySSmfj7zVbkZFs81U=
github.com/julienschmidt/httprouter v1.2.0/go.mod h1:SYymIcj16QtmaHHD7aYtjjsJG7VTCxuUUipMqKk8s4w=
github.com/julienschmidt/httprouter v1.3.0/go.mod h1:JR6WtHb+2LUe8TCKY3cZOxFyyO8IZAc4RVcycCCAKdM=
-github.com/k0kubun/colorstring v0.0.0-20150214042306-9440f1994b88/go.mod h1:3w7q1U84EfirKl04SVQ/s7nPm1ZPhiXd34z40TNz36k=
-github.com/kataras/golog v0.0.10/go.mod h1:yJ8YKCmyL+nWjERB90Qwn+bdyBZsaQwU3bTVFgkFIp8=
-github.com/kataras/iris/v12 v12.1.8/go.mod h1:LMYy4VlP67TQ3Zgriz8RE2h2kMZV2SgMYbq3UhfoFmE=
-github.com/kataras/neffos v0.0.14/go.mod h1:8lqADm8PnbeFfL7CLXh1WHw53dG27MC3pgi2R1rmoTE=
-github.com/kataras/pio v0.0.2/go.mod h1:hAoW0t9UmXi4R5Oyq5Z4irTbaTsOemSrDGUtaTl7Dro=
-github.com/kataras/sitemap v0.0.5/go.mod h1:KY2eugMKiPwsJgx7+U103YZehfvNGOXURubcGyk0Bz8=
github.com/kisielk/errcheck v1.5.0/go.mod h1:pFxgyoBC7bSaBwPgfKdkLd5X25qrDl4LWUI2bnpBCr8=
github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck=
-github.com/klauspost/compress v1.8.2/go.mod h1:RyIbtBH6LamlWaDj8nUwkbUhJ87Yi3uG0guNDohfE1A=
-github.com/klauspost/compress v1.9.7/go.mod h1:RyIbtBH6LamlWaDj8nUwkbUhJ87Yi3uG0guNDohfE1A=
github.com/klauspost/compress v1.17.2 h1:RlWWUY/Dr4fL8qk9YG7DTZ7PDgME2V4csBXA8L/ixi4=
github.com/klauspost/compress v1.17.2/go.mod h1:ntbaceVETuRiXiv4DpjP66DpAtAGkEQskQzEyD//IeE=
-github.com/klauspost/cpuid v1.2.1/go.mod h1:Pj4uuM528wm8OyEC2QMXAi2YiTZ96dNQPGgoMS4s3ek=
github.com/knadh/koanf v1.4.0 h1:/k0Bh49SqLyLNfte9r6cvuZWrApOQhglOmhIU3L/zDw=
github.com/knadh/koanf v1.4.0/go.mod h1:1cfH5223ZeZUOs8FU2UdTmaNfHpqgtjV0+NHjRO43gs=
github.com/konsorten/go-windows-terminal-sequences v1.0.1/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ=
@@ -518,39 +461,25 @@ github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY=
github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE=
github.com/kylelemons/godebug v1.1.0 h1:RPNrshWIDI6G2gRW9EHilWtl7Z6Sb1BR0xunSBf0SNc=
github.com/kylelemons/godebug v1.1.0/go.mod h1:9/0rRGxNHcop5bhtWyNeEfOS8JIWk580+fNqagV/RAw=
-github.com/labstack/echo/v4 v4.5.0/go.mod h1:czIriw4a0C1dFun+ObrXp7ok03xON0N1awStJ6ArI7Y=
-github.com/labstack/gommon v0.3.0/go.mod h1:MULnywXg0yavhxWKc+lOruYdAhDwPK9wf0OL7NoOu+k=
github.com/leanovate/gopter v0.2.9 h1:fQjYxZaynp97ozCzfOyOuAGOU4aU/z37zf/tOujFk7c=
github.com/leanovate/gopter v0.2.9/go.mod h1:U2L/78B+KVFIx2VmW6onHJQzXtFb+p5y3y2Sh+Jxxv8=
github.com/lucasb-eyer/go-colorful v1.2.0 h1:1nnpGOrhyZZuNyfu1QjKiUICQ74+3FNCN69Aj6K7nkY=
github.com/lucasb-eyer/go-colorful v1.2.0/go.mod h1:R4dSotOR9KMtayYi1e77YzuveK+i7ruzyGqttikkLy0=
-github.com/magiconair/properties v1.8.0/go.mod h1:PppfXfuXeibc/6YijjN8zIbojt8czPbwD3XqdrwzmxQ=
github.com/mailru/easygo v0.0.0-20190618140210-3c14a0dc985f h1:4+gHs0jJFJ06bfN8PshnM6cHcxGjRUVRLo5jndDiKRQ=
github.com/mailru/easygo v0.0.0-20190618140210-3c14a0dc985f/go.mod h1:tHCZHV8b2A90ObojrEAzY0Lb03gxUxjDHr5IJyAh4ew=
github.com/mattn/go-colorable v0.0.9/go.mod h1:9vuHe8Xs5qXnSaW/c/ABM9alt+Vo+STaOChaDxuIBZU=
-github.com/mattn/go-colorable v0.1.2/go.mod h1:U0ppj6V5qS13XJ6of8GYAs25YV2eR4EVcfRqFIhoBtE=
-github.com/mattn/go-colorable v0.1.8/go.mod h1:u6P/XSegPjTcexA+o6vUJrdnUu04hMope9wVRipJSqc=
-github.com/mattn/go-colorable v0.1.11/go.mod h1:u5H1YNBxpqRaxsYJYSkiCWKzEfiAb1Gb520KVy5xxl4=
github.com/mattn/go-colorable v0.1.13 h1:fFA4WZxdEF4tXPZVKMLwD8oUnCTTo08duU7wxecdEvA=
github.com/mattn/go-colorable v0.1.13/go.mod h1:7S9/ev0klgBDR4GtXTXX8a3vIGJpMovkB8vQcUbaXHg=
github.com/mattn/go-isatty v0.0.3/go.mod h1:M+lRXTBqGeGNdLjl/ufCoiOlB5xdOkqRJdNxMWT7Zi4=
-github.com/mattn/go-isatty v0.0.7/go.mod h1:Iq45c/XA43vh69/j3iqttzPXn0bhXyGjM0Hdxcsrc5s=
-github.com/mattn/go-isatty v0.0.8/go.mod h1:Iq45c/XA43vh69/j3iqttzPXn0bhXyGjM0Hdxcsrc5s=
-github.com/mattn/go-isatty v0.0.9/go.mod h1:YNRxwqDuOph6SZLI9vUUz6OYw3QyUt7WiY2yME+cCiQ=
-github.com/mattn/go-isatty v0.0.12/go.mod h1:cbi8OIDigv2wuxKPP5vlRcQ1OAZbq2CE4Kysco4FUpU=
-github.com/mattn/go-isatty v0.0.14/go.mod h1:7GGIvUiUoEMVVmxf/4nioHXj79iQHKdU27kJ6hsGG94=
github.com/mattn/go-isatty v0.0.16/go.mod h1:kYGgaQfpe5nmfYZH+SKPsOc2e4SrIfOl2e/yFXSvRLM=
github.com/mattn/go-isatty v0.0.20 h1:xfD0iDuEKnDkl03q4limB+vH+GxLEtL/jb4xVJSWWEY=
github.com/mattn/go-isatty v0.0.20/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y=
github.com/mattn/go-runewidth v0.0.9/go.mod h1:H031xJmbD/WCDINGzjvQ9THkh0rPKHF+m2gUSrubnMI=
github.com/mattn/go-runewidth v0.0.15 h1:UNAjwbU9l54TA3KzvqLGxwWjHmMgBUVhBiTjelZgg3U=
github.com/mattn/go-runewidth v0.0.15/go.mod h1:Jdepj2loyihRzMpdS35Xk/zdY8IAYHsh153qUoGf23w=
-github.com/mattn/goveralls v0.0.2/go.mod h1:8d1ZMHsd7fW6IRPKQh46F2WRpyib5/X4FOpevwGNQEw=
github.com/matttproud/golang_protobuf_extensions v1.0.1/go.mod h1:D8He9yQNgCq6Z5Ld7szi9bcBfOoFv/3dc6xSMkL2PC0=
github.com/matttproud/golang_protobuf_extensions v1.0.2-0.20181231171920-c182affec369 h1:I0XW9+e1XWDxdcEniV4rQAIOPUGDq67JSCiRCgGCZLI=
github.com/matttproud/golang_protobuf_extensions v1.0.2-0.20181231171920-c182affec369/go.mod h1:BSXmuO+STAnVfrANrmjBb36TMTDstsz7MSK+HVaYKv4=
-github.com/mediocregopher/radix/v3 v3.4.2/go.mod h1:8FL3F6UQRXHXIBSPUs5h0RybMF8i4n7wVopoX3x7Bv8=
-github.com/microcosm-cc/bluemonday v1.0.2/go.mod h1:iVP4YcDBq+n/5fb23BhYFvIMq/leAFZyRl6bYmGDlGc=
github.com/mitchellh/cli v1.0.0/go.mod h1:hNIlj7HEI86fIcpObd7a0FcrxTWetlwJDGcceTlRvqc=
github.com/mitchellh/copystructure v1.0.0/go.mod h1:SNtv71yrdKgLRyLFxmLdkAbkKEFWgYaq1OVrnRcwhnw=
github.com/mitchellh/copystructure v1.2.0 h1:vpKXTN4ewci03Vljg/q9QvCGUDttBOGBIa15WveJJGw=
@@ -575,13 +504,8 @@ github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd/go.mod h1:6dJ
github.com/modern-go/reflect2 v0.0.0-20180701023420-4b7aa43c6742/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0=
github.com/modern-go/reflect2 v1.0.1/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0=
github.com/modern-go/reflect2 v1.0.2/go.mod h1:yWuevngMOJpCy52FWWMvUC8ws7m/LJsjYzDa0/r8luk=
-github.com/moul/http2curl v1.0.0/go.mod h1:8UbvGypXm98wA/IqH45anm5Y2Z6ep6O31QGOAZ3H0fQ=
github.com/mwitkow/go-conntrack v0.0.0-20161129095857-cc309e4a2223/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U=
github.com/mwitkow/go-conntrack v0.0.0-20190716064945-2f068394615f/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U=
-github.com/nats-io/jwt v0.3.0/go.mod h1:fRYCDE99xlTsqUzISS1Bi75UBJ6ljOJQOAAu5VglpSg=
-github.com/nats-io/nats.go v1.9.1/go.mod h1:ZjDU1L/7fJ09jvUSRVBR2e7+RnLiiIQyqyzEE/Zbp4w=
-github.com/nats-io/nkeys v0.1.0/go.mod h1:xpnFELMwJABBLVhffcfd1MZx6VsNRFpEugbxziKVo7w=
-github.com/nats-io/nuid v1.0.1/go.mod h1:19wcPz3Ph3q0Jbyiqsd0kePYG7A95tJPxeL+1OSON2c=
github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e/go.mod h1:zD1mROLANZcx1PVRCS0qkT7pwLkGfwJo4zjcN/Tysno=
github.com/npillmayer/nestext v0.1.3/go.mod h1:h2lrijH8jpicr25dFY+oAJLyzlya6jhnuG+zWp9L0Uk=
github.com/nxadm/tail v1.4.4 h1:DQuhQpB1tVlglWS2hLQ5OV6B5r8aGxSrPc5Qo6uTN78=
@@ -590,7 +514,6 @@ github.com/oklog/run v1.0.0/go.mod h1:dlhp/R75TPv97u0XWUtDeV/lRKWPKSdTuV0TZvrmrQ
github.com/olekukonko/tablewriter v0.0.5 h1:P2Ga83D34wi1o9J6Wh1mRuqd4mF/x/lgBS7N7AbDhec=
github.com/olekukonko/tablewriter v0.0.5/go.mod h1:hPp6KlRPjbx+hW8ykQs1w3UBbZlj6HuIJcUGPhkA7kY=
github.com/onsi/ginkgo v1.6.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE=
-github.com/onsi/ginkgo v1.10.3/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE=
github.com/onsi/ginkgo v1.12.1/go.mod h1:zj2OWP4+oCPe1qIXoGWkgMRwljMUYCdkwsT2108oapk=
github.com/onsi/ginkgo v1.14.0 h1:2mOpI4JVVPBN+WQRa0WKH2eXR+Ey+uK4n7Zj0aYpIQA=
github.com/onsi/ginkgo v1.14.0/go.mod h1:iSB4RoI2tjJc9BBv4NKIKWKya62Rps+oPG/Lv9klQyY=
@@ -600,7 +523,6 @@ github.com/onsi/gomega v1.10.1/go.mod h1:iN09h71vgCQne3DLsj+A5owkum+a2tYe+TOCB1y
github.com/opentracing/opentracing-go v1.1.0 h1:pWlfV3Bxv7k65HYwkikxat0+s3pV4bsqf19k25Ur8rU=
github.com/opentracing/opentracing-go v1.1.0/go.mod h1:UkNAQd3GIcIGf0SeVgPpRdFStlNbqXla1AfSYxPUl2o=
github.com/pascaldekloe/goe v0.1.0/go.mod h1:lzWF7FIEvWOWxwDKqyGYQf6ZUaNfKdP144TG7ZOy1lc=
-github.com/pelletier/go-toml v1.2.0/go.mod h1:5z9KED0ma1S8pY6P1sdut58dfprrGBbd/94hg7ilaic=
github.com/pelletier/go-toml v1.7.0 h1:7utD74fnzVc/cpcyy8sjrlFr5vYpypUixARcHIMIGuI=
github.com/pelletier/go-toml v1.7.0/go.mod h1:vwGMzjaWMwyfHwgIBhI2YUM4fB6nL6lVAvS1LBMMhTE=
github.com/pierrec/lz4 v2.0.5+incompatible/go.mod h1:pdkljMzZIN41W+lC3N2tnIh5sFi+IEE17M5jbnwPHcY=
@@ -654,34 +576,21 @@ github.com/rivo/uniseg v0.4.7 h1:WUdvkW8uEhrYfLC4ZzdpI2ztxP1I582+49Oc5Mq64VQ=
github.com/rivo/uniseg v0.4.7/go.mod h1:FN3SvrM+Zdj16jyLfmOkMNblXMcoc8DfTHruCPUcx88=
github.com/rogpeppe/go-internal v1.3.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4=
github.com/rogpeppe/go-internal v1.6.1/go.mod h1:xXDCJY+GAPziupqXw64V24skbSoqbTEfhy4qGm1nDQc=
-github.com/rogpeppe/go-internal v1.8.1/go.mod h1:JeRgkft04UBgHMgCIwADu4Pn6Mtm5d4nPKWu0nJ5d+o=
github.com/rogpeppe/go-internal v1.9.0 h1:73kH8U+JUqXU8lRuOHeVHaa/SZPifC7BkcraZVejAe8=
github.com/rogpeppe/go-internal v1.9.0/go.mod h1:WtVeX8xhTBvf0smdhujwtBcq4Qrzq/fJaraNFVN+nFs=
github.com/rs/cors v1.7.0 h1:+88SsELBHx5r+hZ8TCkggzSstaWNbDvThkVK8H6f9ik=
github.com/rs/cors v1.7.0/go.mod h1:gFx+x8UowdsKA9AchylcLynDq+nNFfI8FkUZdN/jGCU=
-github.com/russross/blackfriday v1.5.2/go.mod h1:JO/DiYxRf+HjHt06OyowR9PTA263kcR/rfWxYHBV53g=
github.com/russross/blackfriday/v2 v2.1.0 h1:JIOH55/0cWyOuilr9/qlrm0BSXldqnqwMsf35Ld67mk=
github.com/russross/blackfriday/v2 v2.1.0/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM=
github.com/ryanuber/columnize v2.1.0+incompatible/go.mod h1:sm1tb6uqfes/u+d4ooFouqFdy9/2g9QGwK3SQygK0Ts=
github.com/ryanuber/go-glob v1.0.0/go.mod h1:807d1WSdnB0XRJzKNil9Om6lcp/3a0v4qIHxIXzX/Yc=
-github.com/schollz/closestmatch v2.1.0+incompatible/go.mod h1:RtP1ddjLong6gTkbtmuhtR2uUrrJOpYzYRvbcPAid+g=
-github.com/sergi/go-diff v1.0.0/go.mod h1:0CfEIISq7TuYL3j771MWULgwwjU+GofnZX9QAmXWZgo=
github.com/shirou/gopsutil v3.21.4-0.20210419000835-c7a38de76ee5+incompatible h1:Bn1aCHHRnjv4Bl16T8rcaFjYSrGrIZvpiGO6P3Q4GpU=
github.com/shirou/gopsutil v3.21.4-0.20210419000835-c7a38de76ee5+incompatible/go.mod h1:5b4v6he4MtMOwMlS0TUMTu2PcXUg8+E1lC7eC3UO/RA=
-github.com/shurcooL/sanitized_anchor_name v1.0.0/go.mod h1:1NzhyTcUVG4SuEtjjoZeVRXNmyL/1OwPU0+IJeTBvfc=
github.com/sirupsen/logrus v1.2.0/go.mod h1:LxeOpSwHxABJmUn/MG1IvRgCAasNZTLOkJPxbbu5VWo=
github.com/sirupsen/logrus v1.4.2/go.mod h1:tLMulIdttU9McNUspp0xgXVQah82FyeX6MwdIuYE2rE=
github.com/sirupsen/logrus v1.6.0/go.mod h1:7uNnSEd1DgxDLC74fIahvMZmmYsHGZGEOFrfsX/uA88=
-github.com/smartystreets/assertions v0.0.0-20180927180507-b2de0cb4f26d/go.mod h1:OnSkiWE9lh6wB0YB77sQom3nweQdgAjqCqsofrRNTgc=
-github.com/smartystreets/goconvey v1.6.4/go.mod h1:syvi0/a8iFYH4r/RixwvyeAJjdLS9QV7WQ/tjFTllLA=
-github.com/spf13/afero v1.1.2/go.mod h1:j4pytiNVoe2o6bmDsKpLACNPDBIoEAkihy7loJ1B0CQ=
-github.com/spf13/cast v1.3.0/go.mod h1:Qx5cxh0v+4UWYiBimWS+eyWzqEqokIECu5etghLkUJE=
-github.com/spf13/cobra v0.0.5/go.mod h1:3K3wKZymM7VvHMDS9+Akkh4K60UwM26emMESw8tLCHU=
-github.com/spf13/jwalterweatherman v1.0.0/go.mod h1:cQK4TGJAtQXfYWX+Ddv3mKDzgVb68N+wFjFa4jdeBTo=
-github.com/spf13/pflag v1.0.3/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4=
github.com/spf13/pflag v1.0.5 h1:iy+VFUOCP1a+8yFto/drg2CJ5u0yRoB7fZw3DKv/JXA=
github.com/spf13/pflag v1.0.5/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg=
-github.com/spf13/viper v1.3.2/go.mod h1:ZiWeW+zYFKm7srdB9IoDzzZXaJaI5eL9QjNiN/DMA2s=
github.com/status-im/keycard-go v0.2.0 h1:QDLFswOQu1r5jsycloeQh3bVU8n/NatHHaZobtDnDzA=
github.com/status-im/keycard-go v0.2.0/go.mod h1:wlp8ZLbsmrF6g6WjugPAx+IzoLrkdf9+mHxBEeo3Hbg=
github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
@@ -691,7 +600,6 @@ github.com/stretchr/objx v0.5.0/go.mod h1:Yh+to48EsGEfYuaHDzXPcE3xhTkx73EhmCGUpE
github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs=
github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI=
github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4=
-github.com/stretchr/testify v1.5.1/go.mod h1:5W2xD1RspED5o8YsWQXVCued0rvSQ+mT+I5cxcmMvtA=
github.com/stretchr/testify v1.6.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
@@ -709,39 +617,20 @@ github.com/tklauser/numcpus v0.6.1 h1:ng9scYS7az0Bk4OZLvrNXNSAO2Pxr1XXRAPyjhIx+F
github.com/tklauser/numcpus v0.6.1/go.mod h1:1XfjsgE2zo8GVw7POkMbHENHzVg3GzmoZ9fESEdAacY=
github.com/tyler-smith/go-bip39 v1.1.0 h1:5eUemwrMargf3BSLRRCalXT93Ns6pQJIjYQN2nyfOP8=
github.com/tyler-smith/go-bip39 v1.1.0/go.mod h1:gUYDtqQw1JS3ZJ8UWVcGTGqqr6YIN3CWg+kkNaLt55U=
-github.com/ugorji/go v1.1.4/go.mod h1:uQMGLiO92mf5W77hV/PUCpI3pbzQx3CRekS0kk+RGrc=
-github.com/ugorji/go v1.1.7/go.mod h1:kZn38zHttfInRq0xu/PH0az30d+z6vm202qpg1oXVMw=
-github.com/ugorji/go/codec v0.0.0-20181204163529-d75b2dcb6bc8/go.mod h1:VFNgLljTbGfSG7qAOspJ7OScBnGdDN/yBr0sguwnwf0=
-github.com/ugorji/go/codec v1.1.7/go.mod h1:Ax+UKWsSmolVDwsd+7N3ZtXu+yMGCf907BLYF3GoBXY=
github.com/urfave/cli/v2 v2.25.7 h1:VAzn5oq403l5pHjc4OhD54+XGO9cdKVL/7lDjF+iKUs=
github.com/urfave/cli/v2 v2.25.7/go.mod h1:8qnjx1vcq5s2/wpsqoZFndg2CE5tNFyrTvS6SinrnYQ=
-github.com/urfave/negroni v1.0.0/go.mod h1:Meg73S6kFm/4PpbYdq35yYWoCZ9mS/YSx+lKnmiohz4=
-github.com/valyala/bytebufferpool v1.0.0/go.mod h1:6bBcMArwyJ5K/AmCkWv1jt77kVWyCJ6HpOuEn7z0Csc=
-github.com/valyala/fasthttp v1.6.0/go.mod h1:FstJa9V+Pj9vQ7OJie2qMHdwemEDaDiSdBnvPM1Su9w=
-github.com/valyala/fasttemplate v1.0.1/go.mod h1:UQGH1tvbgY+Nz5t2n7tXsz52dQxojPUpymEIMZ47gx8=
-github.com/valyala/fasttemplate v1.2.1/go.mod h1:KHLXt3tVN2HBp8eijSv/kGJopbvo7S+qRAEEKiv+SiQ=
-github.com/valyala/tcplisten v0.0.0-20161114210144-ceec8f93295a/go.mod h1:v3UYOV9WzVtRmSR+PDvWpU/qWl4Wa5LApYYX4ZtKbio=
github.com/vmihailenco/msgpack/v5 v5.3.5 h1:5gO0H1iULLWGhs2H5tbAHIZTV8/cYafcFOr9znI5mJU=
github.com/vmihailenco/msgpack/v5 v5.3.5/go.mod h1:7xyJ9e+0+9SaZT0Wt1RGleJXzli6Q/V5KbhBonMG9jc=
github.com/vmihailenco/tagparser/v2 v2.0.0 h1:y09buUbR+b5aycVFQs/g70pqKVZNBmxwAhO7/IwNM9g=
github.com/vmihailenco/tagparser/v2 v2.0.0/go.mod h1:Wri+At7QHww0WTrCBeu4J6bNtoV6mEfg5OIWRZA9qds=
github.com/wealdtech/go-merkletree v1.0.0 h1:DsF1xMzj5rK3pSQM6mPv8jlyJyHXhFxpnA2bwEjMMBY=
github.com/wealdtech/go-merkletree v1.0.0/go.mod h1:cdil512d/8ZC7Kx3bfrDvGMQXB25NTKbsm0rFrmDax4=
-github.com/xeipuuv/gojsonpointer v0.0.0-20180127040702-4e3ac2762d5f/go.mod h1:N2zxlSyiKSe5eX1tZViRH5QA0qijqEDrYZiPEAiq3wU=
-github.com/xeipuuv/gojsonreference v0.0.0-20180127040603-bd5ef7bd5415/go.mod h1:GwrjFmJcFw6At/Gs6z4yjiIwzuJ1/+UwLxMQDVQXShQ=
-github.com/xeipuuv/gojsonschema v1.2.0/go.mod h1:anYRn/JVcOK2ZgGU+IjEV4nwlhoK5sQluxsYJ78Id3Y=
-github.com/xordataexchange/crypt v0.0.3-0.20170626215501-b2862e3d0a77/go.mod h1:aYKd//L2LvnjZzWKhF00oedf4jCCReLcmhLdhm1A27Q=
github.com/xrash/smetrics v0.0.0-20201216005158-039620a65673 h1:bAn7/zixMGCfxrRTfdpNzjtPYqr8smhKouy9mxVdGPU=
github.com/xrash/smetrics v0.0.0-20201216005158-039620a65673/go.mod h1:N3UwUGtsrSj3ccvlPHLoLsHnpR27oXr4ZE984MbSER8=
-github.com/yalp/jsonpath v0.0.0-20180802001716-5cc68e5049a0/go.mod h1:/LWChgwKmvncFJFHJ7Gvn9wZArjbV5/FppcK2fKk/tI=
-github.com/yudai/gojsondiff v1.0.0/go.mod h1:AY32+k2cwILAkW1fbgxQ5mUmMiZFgLIV+FBNExI05xg=
-github.com/yudai/golcs v0.0.0-20170316035057-ecda9a501e82/go.mod h1:lgjkn3NuSvDfVJdfcVVdX+jpBxNmX4rDAzaS45IcYoM=
-github.com/yudai/pp v2.0.1+incompatible/go.mod h1:PuxR/8QJ7cyCkFp/aUDS+JY727OFEZkTdatxwunjIkc=
github.com/yuin/goldmark v1.1.25/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74=
github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74=
github.com/yuin/goldmark v1.1.32/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74=
github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74=
-github.com/yuin/goldmark v1.3.5/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1Zlc8k=
github.com/yuin/goldmark v1.4.13/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY=
github.com/yuin/gopher-lua v1.1.1 h1:kYKnWBjvbNP4XLT3+bPEwAXJx262OhaHDWDVOPjL46M=
github.com/yuin/gopher-lua v1.1.1/go.mod h1:GBR0iDaNXjAgGg9zfCvksxSRnQx76gclCIb7kdAd1Pw=
@@ -766,15 +655,11 @@ go.opentelemetry.io/otel/trace v1.24.0 h1:CsKnnL4dUAr/0llH9FKuc698G04IrpWV0MQA/Y
go.opentelemetry.io/otel/trace v1.24.0/go.mod h1:HPc3Xr/cOApsBI154IU0OI0HJexz+aw5uPdbs3UCjNU=
golang.org/x/crypto v0.0.0-20180214000028-650f4a345ab4/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4=
golang.org/x/crypto v0.0.0-20180904163835-0709b304e793/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4=
-golang.org/x/crypto v0.0.0-20181203042331-505ab145d0a9/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4=
golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=
golang.org/x/crypto v0.0.0-20190510104115-cbcb75029529/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
golang.org/x/crypto v0.0.0-20190605123033-f99c8df09eb5/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
-golang.org/x/crypto v0.0.0-20190701094942-4def268fd1a4/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
-golang.org/x/crypto v0.0.0-20191227163750-53104e6ec876/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
-golang.org/x/crypto v0.0.0-20210322153248-0c34fe9e7dc2/go.mod h1:T9bdIzuCu7OtxOm1hfPfRQxPLYneinmdGuTeoZ9dtd4=
golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc=
golang.org/x/crypto v0.24.0 h1:mnl8DM0o513X8fdIkmyFE/5hTYxbwYOjDS/+rK6qpRI=
golang.org/x/crypto v0.24.0/go.mod h1:Z1PMYSOR5nyMcyAVAIQSKCDwalqy85Aqn1x3Ws4L5DM=
@@ -802,7 +687,6 @@ golang.org/x/lint v0.0.0-20190930215403-16217165b5de/go.mod h1:6SW0HCj/g11FgYtHl
golang.org/x/lint v0.0.0-20191125180803-fdd1cda4f05f/go.mod h1:5qLYkcX4OjUUV8bRuDixDT3tpyyb+LUpUlRWLxfhWrs=
golang.org/x/lint v0.0.0-20200130185559-910be7a94367/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY=
golang.org/x/lint v0.0.0-20200302205851-738671d3881b/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY=
-golang.org/x/lint v0.0.0-20210508222113-6edffad5e616/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY=
golang.org/x/mobile v0.0.0-20190312151609-d3739f865fa6/go.mod h1:z+o9i4GpDbdi3rU15maQ/Ox0txvL9dWGYEHz965HBQE=
golang.org/x/mobile v0.0.0-20190719004257-d2bd2a29d028/go.mod h1:E/iHnbuqvinMTCcRqshq8CkpyQDoeVncDDYHnLhea+o=
golang.org/x/mod v0.0.0-20190513183733-4bf6d317e70e/go.mod h1:mXi4GBBbnImb6dmsKGUJ2LatrhH/nqhxcFungHvyanc=
@@ -811,7 +695,6 @@ golang.org/x/mod v0.1.1-0.20191105210325-c90efee705ee/go.mod h1:QqPTAvyqsEbceGzB
golang.org/x/mod v0.1.1-0.20191107180719-034126e5016b/go.mod h1:QqPTAvyqsEbceGzBzNggFXnrqF1CaUcvgkdR5Ot7KZg=
golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=
golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=
-golang.org/x/mod v0.4.2/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=
golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4=
golang.org/x/mod v0.8.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs=
golang.org/x/mod v0.17.0 h1:zY54UmvipHiNd+pm+m0x9KhZ9hl1/7QNMyxXbc6ICqA=
@@ -821,11 +704,9 @@ golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73r
golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
golang.org/x/net v0.0.0-20180906233101-161cd47e91fd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
golang.org/x/net v0.0.0-20181114220301-adae6a3d119a/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
-golang.org/x/net v0.0.0-20181220203305-927f97764cc3/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
golang.org/x/net v0.0.0-20190108225652-1e06a53dbb7e/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
golang.org/x/net v0.0.0-20190213061140-3a22650c66bd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
golang.org/x/net v0.0.0-20190311183353-d8887717615a/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg=
-golang.org/x/net v0.0.0-20190327091125-710a502c58a2/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg=
golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg=
golang.org/x/net v0.0.0-20190501004415-9ce7a6920f09/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg=
golang.org/x/net v0.0.0-20190503192946-f4e77d36d62c/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg=
@@ -834,7 +715,6 @@ golang.org/x/net v0.0.0-20190613194153-d28f0bde5980/go.mod h1:z5CRVTTTmAJ677TzLL
golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
golang.org/x/net v0.0.0-20190628185345-da137c7871d7/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
golang.org/x/net v0.0.0-20190724013045-ca1201d0de80/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
-golang.org/x/net v0.0.0-20190827160401-ba9fcec4b297/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
golang.org/x/net v0.0.0-20191209160850-c0dbc17a3553/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
golang.org/x/net v0.0.0-20200114155413-6afb5195e5aa/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
golang.org/x/net v0.0.0-20200202094626-16171245cfb2/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
@@ -854,9 +734,7 @@ golang.org/x/net v0.0.0-20200822124328-c89045814202/go.mod h1:/O7V0waA8r7cgGh81R
golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU=
golang.org/x/net v0.0.0-20201110031124-69a78807bb2b/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU=
golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg=
-golang.org/x/net v0.0.0-20210405180319-a5a99cb37ef4/go.mod h1:p54w0d4576C0XHj96bSt6lcn1PtDYWL6XObtHCRCNQM=
golang.org/x/net v0.0.0-20210525063256-abc453219eb5/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y=
-golang.org/x/net v0.0.0-20211008194852-3b03d305991f/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y=
golang.org/x/net v0.0.0-20220127200216-cd36cc0744dd/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk=
golang.org/x/net v0.0.0-20220225172249-27dd8689420f/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk=
golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c=
@@ -892,11 +770,9 @@ golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5h
golang.org/x/sys v0.0.0-20180905080454-ebe1bf3edb33/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
golang.org/x/sys v0.0.0-20180909124046-d0be0721c37e/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
golang.org/x/sys v0.0.0-20181116152217-5ac8a444bdc5/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
-golang.org/x/sys v0.0.0-20181205085412-a5c9d58dba9a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
golang.org/x/sys v0.0.0-20190129075346-302c3dd5f1cc/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
golang.org/x/sys v0.0.0-20190204203706-41f3e6584952/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
-golang.org/x/sys v0.0.0-20190222072716-a9d3bda3a223/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
golang.org/x/sys v0.0.0-20190312061237-fead79001313/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20190403152447-81d4e9dc473e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
@@ -905,9 +781,7 @@ golang.org/x/sys v0.0.0-20190502145724-3ef323f4f1fd/go.mod h1:h1NjWce9XRLGQEsW7w
golang.org/x/sys v0.0.0-20190507160741-ecd444e8653b/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20190606165138-5da285871e9c/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20190624142023-c5567b49c5d0/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
-golang.org/x/sys v0.0.0-20190626221950-04f50cda93cb/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20190726091711-fc99dfbffb4e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
-golang.org/x/sys v0.0.0-20190813064441-fde4db37ae7a/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20190904154756-749cb33beabd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20190916202348-b4ddaad3f8a3/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20191001151750-bb3f8db39f24/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
@@ -917,7 +791,6 @@ golang.org/x/sys v0.0.0-20191204072324-ce4227a45e2e/go.mod h1:h1NjWce9XRLGQEsW7w
golang.org/x/sys v0.0.0-20191228213918-04cbcbbfeed8/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20200106162015-b016eb3dc98e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20200113162924-86b910548bc1/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
-golang.org/x/sys v0.0.0-20200116001909-b77594299b42/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20200122134326-e047566fdf82/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20200202164722-d101bd2416d5/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20200212091648-12a6c2dcc1e4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
@@ -937,19 +810,12 @@ golang.org/x/sys v0.0.0-20200814200057-3d37ad5750ed/go.mod h1:h1NjWce9XRLGQEsW7w
golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20210124154548-22da62e12c0c/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
-golang.org/x/sys v0.0.0-20210330210617-4fbd30eecc44/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
-golang.org/x/sys v0.0.0-20210403161142-5e06dd20ab57/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20210423082822-04245dca01da/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
-golang.org/x/sys v0.0.0-20210510120138-977fb7262007/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.0.0-20210603081109-ebe580a85c40/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
-golang.org/x/sys v0.0.0-20210630005230-0f9fa26af87c/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.0.0-20210910150752-751e447fb3d0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
-golang.org/x/sys v0.0.0-20210927094055-39ccf1dd6fa6/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
-golang.org/x/sys v0.0.0-20211007075335-d3039528d8ac/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.0.0-20211216021012-1d35b9e2eb4e/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.0.0-20220114195835-da31bd327af9/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
-golang.org/x/sys v0.0.0-20220209214540-3681064d5158/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.0.0-20220310020820-b874c991c1a5/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.0.0-20220520151302-bc2c85ada10a/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
@@ -976,7 +842,6 @@ golang.org/x/text v0.3.1-0.20180807135948-17ff2d5776d2/go.mod h1:NqM8EUOU14njkJ3
golang.org/x/text v0.3.1-0.20181227161524-e6919f6577db/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk=
golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk=
golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
-golang.org/x/text v0.3.5/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ=
golang.org/x/text v0.3.8/go.mod h1:E6s5w1FMmriuDzIBO73fBruAKo1PCIq6d2Q6DHfQ8WQ=
@@ -987,18 +852,14 @@ golang.org/x/text v0.16.0/go.mod h1:GhwF1Be+LQoKShO3cGOHzqOgRrGaYc9AvblQOmPVHnI=
golang.org/x/time v0.0.0-20181108054448-85acf8d2951c/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
golang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
golang.org/x/time v0.0.0-20191024005414-555d28b269f0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
-golang.org/x/time v0.0.0-20201208040808-7e3f01d25324/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
golang.org/x/time v0.5.0 h1:o7cqy6amK/52YcAKIPlM3a+Fpj35zvRj2TP+e1xFSfk=
golang.org/x/time v0.5.0/go.mod h1:3BpzKBy/shNhVucY/MWOyx10tF3SFh9QdLuxbVysPQM=
golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
-golang.org/x/tools v0.0.0-20181221001348-537d06c36207/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
golang.org/x/tools v0.0.0-20190114222345-bf090417da8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
golang.org/x/tools v0.0.0-20190226205152-f727befe758c/go.mod h1:9Yl7xja0Znq3iFh3HoIrodX9oNMXvdceNzlUR8zjMvY=
golang.org/x/tools v0.0.0-20190311212946-11955173bddd/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs=
golang.org/x/tools v0.0.0-20190312151545-0bb0c0a6e846/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs=
golang.org/x/tools v0.0.0-20190312170243-e65039ee4138/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs=
-golang.org/x/tools v0.0.0-20190327201419-c70d86f8b7cf/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs=
-golang.org/x/tools v0.0.0-20190328211700-ab21143f2384/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs=
golang.org/x/tools v0.0.0-20190425150028-36563e24a262/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q=
golang.org/x/tools v0.0.0-20190506145303-2d16b83fe98c/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q=
golang.org/x/tools v0.0.0-20190524140312-2c0ae7006135/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q=
@@ -1035,7 +896,6 @@ golang.org/x/tools v0.0.0-20200729194436-6467de6f59a7/go.mod h1:njjCfa9FT2d7l9Bc
golang.org/x/tools v0.0.0-20200804011535-6c149bb5ef0d/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA=
golang.org/x/tools v0.0.0-20200825202427-b303f430e36d/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA=
golang.org/x/tools v0.0.0-20210106214847-113979e3529a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA=
-golang.org/x/tools v0.1.3/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk=
golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc=
golang.org/x/tools v0.6.0/go.mod h1:Xwgl3UAJ/d3gWutnCtw505GrjyAbvKui8lOU390QaIU=
golang.org/x/tools v0.21.1-0.20240508182429-e35e4ccd0d2d h1:vU5i/LfpvrRCpgM/VPfJLg5KjxD3E+hfT1SH+d9zLwg=
@@ -1069,7 +929,6 @@ google.golang.org/appengine v1.5.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7
google.golang.org/appengine v1.6.1/go.mod h1:i06prIuMbXzDqacNJfV5OdTW448YApPu5ww/cMBSeb0=
google.golang.org/appengine v1.6.5/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc=
google.golang.org/appengine v1.6.6/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc=
-google.golang.org/genproto v0.0.0-20180518175338-11a468237815/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc=
google.golang.org/genproto v0.0.0-20180817151627-c66870c02cf8/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc=
google.golang.org/genproto v0.0.0-20190307195333-5fe7a883aa19/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE=
google.golang.org/genproto v0.0.0-20190404172233-64821d5d2107/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE=
@@ -1100,14 +959,12 @@ google.golang.org/genproto v0.0.0-20200618031413-b414f8b61790/go.mod h1:jDfRM7Fc
google.golang.org/genproto v0.0.0-20200729003335-053ba62fc06f/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no=
google.golang.org/genproto v0.0.0-20200804131852-c06518451d9c/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no=
google.golang.org/genproto v0.0.0-20200825200019-8632dd797987/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no=
-google.golang.org/genproto v0.0.0-20210624195500-8bfb893ecb84/go.mod h1:SzzZ/N+nwJDaO1kznhnlzqS8ocJICar6hYhVyhi++24=
google.golang.org/genproto v0.0.0-20240624140628-dc46fd24d27d h1:PksQg4dV6Sem3/HkBX+Ltq8T0ke0PKIRBNBatoDTVls=
google.golang.org/genproto v0.0.0-20240624140628-dc46fd24d27d/go.mod h1:s7iA721uChleev562UJO2OYB0PPT9CMFjV+Ce7VJH5M=
google.golang.org/genproto/googleapis/api v0.0.0-20240617180043-68d350f18fd4 h1:MuYw1wJzT+ZkybKfaOXKp5hJiZDn2iHaXRw0mRYdHSc=
google.golang.org/genproto/googleapis/api v0.0.0-20240617180043-68d350f18fd4/go.mod h1:px9SlOOZBg1wM1zdnr8jEL4CNGUBZ+ZKYtNPApNQc4c=
google.golang.org/genproto/googleapis/rpc v0.0.0-20240624140628-dc46fd24d27d h1:k3zyW3BYYR30e8v3x0bTDdE9vpYFjZHK+HcyqkrppWk=
google.golang.org/genproto/googleapis/rpc v0.0.0-20240624140628-dc46fd24d27d/go.mod h1:Ue6ibwXGpU+dqIcODieyLOcgj7z8+IcskoNIgZxtrFY=
-google.golang.org/grpc v1.12.0/go.mod h1:yo6s7OP7yaDglbqo1J04qKzAhqBH6lvTonzMVmEdcZw=
google.golang.org/grpc v1.14.0/go.mod h1:yo6s7OP7yaDglbqo1J04qKzAhqBH6lvTonzMVmEdcZw=
google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c=
google.golang.org/grpc v1.20.1/go.mod h1:10oTOabMzJvdu6/UiuZezV6QK5dSlG84ov/aaiqXj38=
@@ -1123,9 +980,8 @@ google.golang.org/grpc v1.29.1/go.mod h1:itym6AZVZYACWQqET3MqgPpjcuV5QH3BxFS3Iji
google.golang.org/grpc v1.30.0/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak=
google.golang.org/grpc v1.31.0/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak=
google.golang.org/grpc v1.33.2/go.mod h1:JMHMWHQWaTccqQQlmk3MJZS+GWXOdAesneDmEnv2fbc=
-google.golang.org/grpc v1.38.0/go.mod h1:NREThFqKR1f3iQ6oBuvc5LadQuXVGo9rkm5ZGrQdJfM=
-google.golang.org/grpc v1.64.0 h1:KH3VH9y/MgNQg1dE7b3XfVK0GsPSIzJwdF617gUSbvY=
-google.golang.org/grpc v1.64.0/go.mod h1:oxjF8E3FBnjp+/gVFYdWacaLDx9na1aqy9oovLpxQYg=
+google.golang.org/grpc v1.64.1 h1:LKtvyfbX3UGVPFcGqJ9ItpVWW6oN/2XqTxfAnwRRXiA=
+google.golang.org/grpc v1.64.1/go.mod h1:hiQF4LFZelK2WKaP6W0L92zGHtiQdZxk8CrSdvyjeP0=
google.golang.org/protobuf v0.0.0-20200109180630-ec00e32a8dfd/go.mod h1:DFci5gLYBciE7Vtevhsrf46CRTquxDuWsQurQQe4oz8=
google.golang.org/protobuf v0.0.0-20200221191635-4d8936d0db64/go.mod h1:kwYJMbMJ01Woi6D6+Kah6886xMZcty6N08ah7+eCXa0=
google.golang.org/protobuf v0.0.0-20200228230310-ab0ca4ff8a60/go.mod h1:cfTl7dwQJ+fmap5saPgwCLgHXTUD7jkjRqWcaiX5VyM=
@@ -1151,12 +1007,8 @@ gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntN
gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q=
gopkg.in/errgo.v2 v2.1.0/go.mod h1:hNsd1EY+bozCKY1Ytp96fpM3vjJbqLJn88ws8XvfDNI=
gopkg.in/fsnotify.v1 v1.4.7/go.mod h1:Tz8NjZHkW78fSQdbUxIjBTcgA1z1m8ZHf0WmKUhAMys=
-gopkg.in/go-playground/assert.v1 v1.2.1/go.mod h1:9RXL0bg/zibRAgZUYszZSwO/z8Y/a8bDuhia5mkpMnE=
-gopkg.in/go-playground/validator.v8 v8.18.2/go.mod h1:RX2a/7Ha8BgOhfk7j780h4/u/RRjR0eouCJSH80/M2Y=
-gopkg.in/ini.v1 v1.51.1/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k=
+gopkg.in/mgo.v2 v2.0.0-20160818015218-f2b6f6c918c4 h1:hILp2hNrRnYjZpmIbx70psAHbBSEcQ1NIzDcUbJ1b6g=
gopkg.in/mgo.v2 v2.0.0-20160818015218-f2b6f6c918c4/go.mod h1:yeKp02qBN3iKW1OzL3MGk2IdtZzaj7SFntXj72NppTA=
-gopkg.in/mgo.v2 v2.0.0-20180705113604-9856a29383ce h1:xcEWjVhvbDy+nHP67nPDDpbYrY+ILlfndk4bRioVHaU=
-gopkg.in/mgo.v2 v2.0.0-20180705113604-9856a29383ce/go.mod h1:yeKp02qBN3iKW1OzL3MGk2IdtZzaj7SFntXj72NppTA=
gopkg.in/natefinch/lumberjack.v2 v2.0.0 h1:1Lc07Kr7qY4U2YPouBjpCLxpiyxIVoxqXgkXLknAOE8=
gopkg.in/natefinch/lumberjack.v2 v2.0.0/go.mod h1:l0ndWWf7gzL7RNwBG7wST/UCcT4T24xpD6X8LsfU/+k=
gopkg.in/square/go-jose.v2 v2.3.1/go.mod h1:M9dMgbHiYLoDGQrXy7OpJDJWiKiU//h+vD76mk0e1AI=
@@ -1171,9 +1023,7 @@ gopkg.in/yaml.v2 v2.2.8/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
gopkg.in/yaml.v2 v2.3.0/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
gopkg.in/yaml.v2 v2.4.0 h1:D8xgwECY7CYvx+Y2n4sBz93Jn9JRvxdiyyo8CTfuKaY=
gopkg.in/yaml.v2 v2.4.0/go.mod h1:RDklbk79AGWmwhnvt/jBztapEOGDOx6ZbXqjP6csGnQ=
-gopkg.in/yaml.v3 v3.0.0-20191120175047-4206685974f2/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
-gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA=
gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
honnef.co/go/tools v0.0.0-20190102054323-c2f93a96b099/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4=
diff --git a/linters/koanf/handlers.go b/linters/koanf/handlers.go
index 5ee3b80f9f..e3f7c67f68 100644
--- a/linters/koanf/handlers.go
+++ b/linters/koanf/handlers.go
@@ -126,7 +126,11 @@ func checkFlagDefs(pass *analysis.Pass, f *ast.FuncDecl, cnt map[string]int) Res
if !ok {
continue
}
- handleSelector(pass, callE.Args[1].(*ast.SelectorExpr), -1, cnt)
+ sel, ok := callE.Args[1].(*ast.SelectorExpr)
+ if !ok {
+ continue
+ }
+ handleSelector(pass, sel, -1, cnt)
if normSL := normalizeTag(sl); !strings.EqualFold(normSL, s) {
res.Errors = append(res.Errors, koanfError{
Pos: f.Pos(),
diff --git a/linters/linters.go b/linters/linters.go
index a6c9f6d55e..8d2807c0b2 100644
--- a/linters/linters.go
+++ b/linters/linters.go
@@ -1,11 +1,12 @@
package main
import (
+ "golang.org/x/tools/go/analysis/multichecker"
+
"github.com/offchainlabs/nitro/linters/koanf"
"github.com/offchainlabs/nitro/linters/pointercheck"
"github.com/offchainlabs/nitro/linters/rightshift"
"github.com/offchainlabs/nitro/linters/structinit"
- "golang.org/x/tools/go/analysis/multichecker"
)
func main() {
diff --git a/precompiles/ArbAddressTable_test.go b/precompiles/ArbAddressTable_test.go
index 62ce177480..3feaca6279 100644
--- a/precompiles/ArbAddressTable_test.go
+++ b/precompiles/ArbAddressTable_test.go
@@ -12,9 +12,10 @@ import (
"github.com/ethereum/go-ethereum/core"
"github.com/ethereum/go-ethereum/core/vm"
"github.com/ethereum/go-ethereum/crypto"
- "github.com/ethereum/go-ethereum/params"
+
"github.com/offchainlabs/nitro/arbos"
"github.com/offchainlabs/nitro/arbos/arbosState"
+ "github.com/offchainlabs/nitro/cmd/chaininfo"
"github.com/offchainlabs/nitro/util/testhelpers"
)
@@ -173,7 +174,7 @@ func newMockEVMForTestingWithVersionAndRunMode(version *uint64, runMode core.Mes
}
func newMockEVMForTestingWithVersion(version *uint64) *vm.EVM {
- chainConfig := params.ArbitrumDevTestChainConfig()
+ chainConfig := chaininfo.ArbitrumDevTestChainConfig()
if version != nil {
chainConfig.ArbitrumChainParams.InitialArbOSVersion = *version
}
diff --git a/precompiles/ArbAggregator_test.go b/precompiles/ArbAggregator_test.go
index 879fc737e4..eb72f12f25 100644
--- a/precompiles/ArbAggregator_test.go
+++ b/precompiles/ArbAggregator_test.go
@@ -9,6 +9,7 @@ import (
"github.com/ethereum/go-ethereum/common"
"github.com/ethereum/go-ethereum/crypto"
+
"github.com/offchainlabs/nitro/arbos/l1pricing"
)
diff --git a/precompiles/ArbGasInfo.go b/precompiles/ArbGasInfo.go
index b41dfda8a2..8d916926f3 100644
--- a/precompiles/ArbGasInfo.go
+++ b/precompiles/ArbGasInfo.go
@@ -8,6 +8,7 @@ import (
"github.com/ethereum/go-ethereum/common"
"github.com/ethereum/go-ethereum/params"
+
"github.com/offchainlabs/nitro/arbos/l1pricing"
"github.com/offchainlabs/nitro/arbos/storage"
"github.com/offchainlabs/nitro/util/arbmath"
diff --git a/precompiles/ArbGasInfo_test.go b/precompiles/ArbGasInfo_test.go
index 260d7b3cef..76489c3c9a 100644
--- a/precompiles/ArbGasInfo_test.go
+++ b/precompiles/ArbGasInfo_test.go
@@ -12,6 +12,7 @@ import (
"github.com/ethereum/go-ethereum/core/vm"
"github.com/ethereum/go-ethereum/crypto"
"github.com/ethereum/go-ethereum/params"
+
"github.com/offchainlabs/nitro/arbos/arbosState"
"github.com/offchainlabs/nitro/arbos/burn"
"github.com/offchainlabs/nitro/arbos/storage"
diff --git a/precompiles/ArbInfo.go b/precompiles/ArbInfo.go
index 9f8cf34532..60e23ffb6e 100644
--- a/precompiles/ArbInfo.go
+++ b/precompiles/ArbInfo.go
@@ -5,6 +5,7 @@ package precompiles
import (
"github.com/ethereum/go-ethereum/params"
+
"github.com/offchainlabs/nitro/util/arbmath"
)
diff --git a/precompiles/ArbOwner.go b/precompiles/ArbOwner.go
index 8b87445e0e..90a7b4ccc2 100644
--- a/precompiles/ArbOwner.go
+++ b/precompiles/ArbOwner.go
@@ -10,13 +10,13 @@ import (
"fmt"
"math/big"
+ "github.com/ethereum/go-ethereum/common"
+ "github.com/ethereum/go-ethereum/params"
+
"github.com/offchainlabs/nitro/arbos/l1pricing"
"github.com/offchainlabs/nitro/arbos/programs"
"github.com/offchainlabs/nitro/util/arbmath"
am "github.com/offchainlabs/nitro/util/arbmath"
-
- "github.com/ethereum/go-ethereum/common"
- "github.com/ethereum/go-ethereum/params"
)
// ArbOwner precompile provides owners with tools for managing the rollup.
diff --git a/precompiles/ArbOwner_test.go b/precompiles/ArbOwner_test.go
index 1fc6e679cb..51b2fc0cd9 100644
--- a/precompiles/ArbOwner_test.go
+++ b/precompiles/ArbOwner_test.go
@@ -9,17 +9,19 @@ import (
"math/big"
"testing"
+ "github.com/holiman/uint256"
+
"github.com/ethereum/go-ethereum/common"
"github.com/ethereum/go-ethereum/core"
+ "github.com/ethereum/go-ethereum/core/tracing"
"github.com/ethereum/go-ethereum/core/types"
"github.com/ethereum/go-ethereum/crypto"
- "github.com/ethereum/go-ethereum/params"
- "github.com/holiman/uint256"
"github.com/offchainlabs/nitro/arbos/arbosState"
"github.com/offchainlabs/nitro/arbos/burn"
"github.com/offchainlabs/nitro/arbos/l1pricing"
"github.com/offchainlabs/nitro/arbos/util"
+ "github.com/offchainlabs/nitro/cmd/chaininfo"
"github.com/offchainlabs/nitro/util/testhelpers"
)
@@ -114,7 +116,7 @@ func TestArbOwner(t *testing.T) {
Fail(t, avail)
}
deposited := big.NewInt(1000000)
- evm.StateDB.AddBalance(l1pricing.L1PricerFundsPoolAddress, uint256.MustFromBig(deposited))
+ evm.StateDB.AddBalance(l1pricing.L1PricerFundsPoolAddress, uint256.MustFromBig(deposited), tracing.BalanceChangeUnspecified)
avail, err = gasInfo.GetL1FeesAvailable(callCtx, evm)
Require(t, err)
if avail.Sign() != 0 {
@@ -180,7 +182,7 @@ func TestArbOwnerSetChainConfig(t *testing.T) {
prec := &ArbOwner{}
callCtx := testContext(caller, evm)
- chainConfig := params.ArbitrumDevTestChainConfig()
+ chainConfig := chaininfo.ArbitrumDevTestChainConfig()
chainConfig.ArbitrumChainParams.AllowDebugPrecompiles = false
serializedChainConfig, err := json.Marshal(chainConfig)
Require(t, err)
diff --git a/precompiles/ArbRetryableTx.go b/precompiles/ArbRetryableTx.go
index d925499180..49cc9a3264 100644
--- a/precompiles/ArbRetryableTx.go
+++ b/precompiles/ArbRetryableTx.go
@@ -9,8 +9,8 @@ import (
"github.com/ethereum/go-ethereum/common"
"github.com/ethereum/go-ethereum/core/types"
-
"github.com/ethereum/go-ethereum/params"
+
"github.com/offchainlabs/nitro/arbos/retryables"
"github.com/offchainlabs/nitro/arbos/storage"
"github.com/offchainlabs/nitro/arbos/util"
diff --git a/precompiles/ArbRetryableTx_test.go b/precompiles/ArbRetryableTx_test.go
index 47450299ce..d5b93640c9 100644
--- a/precompiles/ArbRetryableTx_test.go
+++ b/precompiles/ArbRetryableTx_test.go
@@ -7,12 +7,12 @@ import (
"math/big"
"testing"
- "github.com/offchainlabs/nitro/arbos"
- "github.com/offchainlabs/nitro/arbos/storage"
-
"github.com/ethereum/go-ethereum/common"
"github.com/ethereum/go-ethereum/core"
"github.com/ethereum/go-ethereum/core/vm"
+
+ "github.com/offchainlabs/nitro/arbos"
+ "github.com/offchainlabs/nitro/arbos/storage"
templates "github.com/offchainlabs/nitro/solgen/go/precompilesgen"
)
diff --git a/precompiles/ArbSys.go b/precompiles/ArbSys.go
index 689d3b18de..04cde46ebe 100644
--- a/precompiles/ArbSys.go
+++ b/precompiles/ArbSys.go
@@ -9,6 +9,7 @@ import (
"github.com/ethereum/go-ethereum/common"
"github.com/ethereum/go-ethereum/core/vm"
+
"github.com/offchainlabs/nitro/arbos/util"
"github.com/offchainlabs/nitro/util/arbmath"
"github.com/offchainlabs/nitro/util/merkletree"
diff --git a/precompiles/ArbWasm.go b/precompiles/ArbWasm.go
index bc24c8a6e8..eecca35ce6 100644
--- a/precompiles/ArbWasm.go
+++ b/precompiles/ArbWasm.go
@@ -7,6 +7,7 @@ import (
"github.com/ethereum/go-ethereum/common"
"github.com/ethereum/go-ethereum/core/vm"
gethparams "github.com/ethereum/go-ethereum/params"
+
"github.com/offchainlabs/nitro/arbos/programs"
"github.com/offchainlabs/nitro/arbos/util"
"github.com/offchainlabs/nitro/util/arbmath"
diff --git a/precompiles/precompile.go b/precompiles/precompile.go
index 9a356c5a8e..5b5376a4ca 100644
--- a/precompiles/precompile.go
+++ b/precompiles/precompile.go
@@ -14,13 +14,6 @@ import (
"strings"
"unicode"
- "github.com/offchainlabs/nitro/arbos"
- "github.com/offchainlabs/nitro/arbos/arbosState"
- "github.com/offchainlabs/nitro/arbos/programs"
- "github.com/offchainlabs/nitro/arbos/util"
- pgen "github.com/offchainlabs/nitro/solgen/go/precompilesgen"
- "github.com/offchainlabs/nitro/util/arbmath"
-
"github.com/ethereum/go-ethereum/accounts/abi"
"github.com/ethereum/go-ethereum/accounts/abi/bind"
"github.com/ethereum/go-ethereum/common"
@@ -30,6 +23,13 @@ import (
"github.com/ethereum/go-ethereum/log"
glog "github.com/ethereum/go-ethereum/log"
"github.com/ethereum/go-ethereum/params"
+
+ "github.com/offchainlabs/nitro/arbos"
+ "github.com/offchainlabs/nitro/arbos/arbosState"
+ "github.com/offchainlabs/nitro/arbos/programs"
+ "github.com/offchainlabs/nitro/arbos/util"
+ pgen "github.com/offchainlabs/nitro/solgen/go/precompilesgen"
+ "github.com/offchainlabs/nitro/util/arbmath"
)
type ArbosPrecompile interface {
diff --git a/precompiles/precompile_test.go b/precompiles/precompile_test.go
index 18b33714aa..c8b8a46b96 100644
--- a/precompiles/precompile_test.go
+++ b/precompiles/precompile_test.go
@@ -10,12 +10,12 @@ import (
"os"
"testing"
- "github.com/ethereum/go-ethereum/core/state"
- "github.com/ethereum/go-ethereum/log"
-
"github.com/ethereum/go-ethereum/common"
+ "github.com/ethereum/go-ethereum/core/state"
"github.com/ethereum/go-ethereum/crypto"
+ "github.com/ethereum/go-ethereum/log"
"github.com/ethereum/go-ethereum/params"
+
"github.com/offchainlabs/nitro/arbos/storage"
templates "github.com/offchainlabs/nitro/solgen/go/precompilesgen"
"github.com/offchainlabs/nitro/util/arbmath"
diff --git a/precompiles/wrapper.go b/precompiles/wrapper.go
index b9363c40a2..edc079fc5b 100644
--- a/precompiles/wrapper.go
+++ b/precompiles/wrapper.go
@@ -7,12 +7,12 @@ import (
"errors"
"math/big"
- "github.com/offchainlabs/nitro/arbos/arbosState"
- "github.com/offchainlabs/nitro/arbos/util"
-
"github.com/ethereum/go-ethereum/common"
"github.com/ethereum/go-ethereum/core/vm"
"github.com/ethereum/go-ethereum/log"
+
+ "github.com/offchainlabs/nitro/arbos/arbosState"
+ "github.com/offchainlabs/nitro/arbos/util"
)
// DebugPrecompile is a precompile wrapper for those not allowed in production
diff --git a/pubsub/common.go b/pubsub/common.go
index 315c5a8160..3f9e310591 100644
--- a/pubsub/common.go
+++ b/pubsub/common.go
@@ -5,8 +5,9 @@ import (
"fmt"
"strings"
- "github.com/ethereum/go-ethereum/log"
"github.com/redis/go-redis/v9"
+
+ "github.com/ethereum/go-ethereum/log"
)
func ResultKeyFor(streamName, id string) string { return fmt.Sprintf("%s.%s", streamName, id) }
diff --git a/pubsub/consumer.go b/pubsub/consumer.go
index b6274abb84..8173961385 100644
--- a/pubsub/consumer.go
+++ b/pubsub/consumer.go
@@ -10,11 +10,13 @@ import (
"strconv"
"time"
- "github.com/ethereum/go-ethereum/log"
"github.com/google/uuid"
- "github.com/offchainlabs/nitro/util/stopwaiter"
"github.com/redis/go-redis/v9"
"github.com/spf13/pflag"
+
+ "github.com/ethereum/go-ethereum/log"
+
+ "github.com/offchainlabs/nitro/util/stopwaiter"
)
type ConsumerConfig struct {
diff --git a/pubsub/producer.go b/pubsub/producer.go
index b9696e2866..b7e85048c8 100644
--- a/pubsub/producer.go
+++ b/pubsub/producer.go
@@ -18,12 +18,14 @@ import (
"sync"
"time"
- "github.com/ethereum/go-ethereum/log"
"github.com/google/uuid"
- "github.com/offchainlabs/nitro/util/containers"
- "github.com/offchainlabs/nitro/util/stopwaiter"
"github.com/redis/go-redis/v9"
"github.com/spf13/pflag"
+
+ "github.com/ethereum/go-ethereum/log"
+
+ "github.com/offchainlabs/nitro/util/containers"
+ "github.com/offchainlabs/nitro/util/stopwaiter"
)
const (
diff --git a/pubsub/pubsub_test.go b/pubsub/pubsub_test.go
index 8bd1aed25d..c82a35e0b8 100644
--- a/pubsub/pubsub_test.go
+++ b/pubsub/pubsub_test.go
@@ -9,12 +9,14 @@ import (
"testing"
"time"
- "github.com/ethereum/go-ethereum/log"
"github.com/google/go-cmp/cmp"
"github.com/google/uuid"
+ "github.com/redis/go-redis/v9"
+
+ "github.com/ethereum/go-ethereum/log"
+
"github.com/offchainlabs/nitro/util/containers"
"github.com/offchainlabs/nitro/util/redisutil"
- "github.com/redis/go-redis/v9"
)
var (
diff --git a/relay/relay_stress_test.go b/relay/relay_stress_test.go
index 575a77ee6f..93ba510193 100644
--- a/relay/relay_stress_test.go
+++ b/relay/relay_stress_test.go
@@ -7,6 +7,7 @@ import (
"time"
"github.com/ethereum/go-ethereum/log"
+
"github.com/offchainlabs/nitro/arbos/arbostypes"
"github.com/offchainlabs/nitro/arbutil"
"github.com/offchainlabs/nitro/broadcastclient"
diff --git a/scripts/split-val-entry.sh b/scripts/split-val-entry.sh
index 42e0c5fe08..ab8c520918 100755
--- a/scripts/split-val-entry.sh
+++ b/scripts/split-val-entry.sh
@@ -39,4 +39,4 @@ for port in 52000 52001; do
done
done
echo launching nitro-node
-/usr/local/bin/nitro --validation.wasm.allowed-wasm-module-roots /home/user/nitro-legacy/machines,/home/user/target/machines --node.block-validator.validation-server-configs-list='[{"jwtsecret":"/tmp/nitro-val.jwt","url":"ws://127.0.0.10:52000"}, {"jwtsecret":"/tmp/nitro-val.jwt","url":"ws://127.0.0.10:52001"}]' "$@"
+exec /usr/local/bin/nitro --validation.wasm.allowed-wasm-module-roots /home/user/nitro-legacy/machines,/home/user/target/machines --node.block-validator.validation-server-configs-list='[{"jwtsecret":"/tmp/nitro-val.jwt","url":"ws://127.0.0.10:52000"}, {"jwtsecret":"/tmp/nitro-val.jwt","url":"ws://127.0.0.10:52001"}]' "$@"
diff --git a/staker/block_challenge_backend.go b/staker/block_challenge_backend.go
index 0dd89865bd..a8a6e917a2 100644
--- a/staker/block_challenge_backend.go
+++ b/staker/block_challenge_backend.go
@@ -13,6 +13,7 @@ import (
"github.com/ethereum/go-ethereum/common/math"
"github.com/ethereum/go-ethereum/core/types"
"github.com/ethereum/go-ethereum/crypto"
+
"github.com/offchainlabs/nitro/arbutil"
"github.com/offchainlabs/nitro/solgen/go/challengegen"
"github.com/offchainlabs/nitro/validator"
diff --git a/staker/block_validator.go b/staker/block_validator.go
index 5a1f123693..0a1a38ba17 100644
--- a/staker/block_validator.go
+++ b/staker/block_validator.go
@@ -16,12 +16,15 @@ import (
"testing"
"time"
+ "github.com/spf13/pflag"
+
"github.com/ethereum/go-ethereum/common"
"github.com/ethereum/go-ethereum/core/rawdb"
"github.com/ethereum/go-ethereum/ethdb"
"github.com/ethereum/go-ethereum/log"
"github.com/ethereum/go-ethereum/metrics"
"github.com/ethereum/go-ethereum/rlp"
+
"github.com/offchainlabs/nitro/arbnode/resourcemanager"
"github.com/offchainlabs/nitro/arbutil"
"github.com/offchainlabs/nitro/util/containers"
@@ -31,7 +34,6 @@ import (
"github.com/offchainlabs/nitro/validator/client/redis"
"github.com/offchainlabs/nitro/validator/inputs"
"github.com/offchainlabs/nitro/validator/server_api"
- "github.com/spf13/pflag"
)
var (
diff --git a/staker/block_validator_schema.go b/staker/block_validator_schema.go
index f6eb39f015..330116dda0 100644
--- a/staker/block_validator_schema.go
+++ b/staker/block_validator_schema.go
@@ -5,6 +5,7 @@ package staker
import (
"github.com/ethereum/go-ethereum/common"
+
"github.com/offchainlabs/nitro/validator"
)
diff --git a/staker/challenge_manager.go b/staker/challenge_manager.go
index 27cb92a5c7..96e496acf8 100644
--- a/staker/challenge_manager.go
+++ b/staker/challenge_manager.go
@@ -19,6 +19,7 @@ import (
"github.com/ethereum/go-ethereum/ethdb"
"github.com/ethereum/go-ethereum/log"
"github.com/ethereum/go-ethereum/rpc"
+
"github.com/offchainlabs/nitro/arbutil"
"github.com/offchainlabs/nitro/solgen/go/challengegen"
"github.com/offchainlabs/nitro/validator"
diff --git a/staker/challenge_test.go b/staker/challenge_test.go
index 33f1644c63..ede1295a13 100644
--- a/staker/challenge_test.go
+++ b/staker/challenge_test.go
@@ -20,6 +20,7 @@ import (
"github.com/ethereum/go-ethereum/core"
"github.com/ethereum/go-ethereum/crypto"
"github.com/ethereum/go-ethereum/log"
+
"github.com/offchainlabs/nitro/solgen/go/mocksgen"
"github.com/offchainlabs/nitro/solgen/go/ospgen"
"github.com/offchainlabs/nitro/validator"
diff --git a/staker/execution_challenge_bakend.go b/staker/execution_challenge_bakend.go
index 8ab60efced..6616d8f8c1 100644
--- a/staker/execution_challenge_bakend.go
+++ b/staker/execution_challenge_bakend.go
@@ -7,6 +7,7 @@ import (
"context"
"github.com/ethereum/go-ethereum/common"
+
"github.com/offchainlabs/nitro/validator"
)
diff --git a/staker/l1_validator.go b/staker/l1_validator.go
index 5b0c211324..8ee05dda22 100644
--- a/staker/l1_validator.go
+++ b/staker/l1_validator.go
@@ -10,19 +10,19 @@ import (
"math/big"
"time"
- "github.com/offchainlabs/nitro/staker/txbuilder"
- "github.com/offchainlabs/nitro/util/arbmath"
- "github.com/offchainlabs/nitro/util/headerreader"
- "github.com/offchainlabs/nitro/validator"
-
"github.com/ethereum/go-ethereum/accounts/abi/bind"
"github.com/ethereum/go-ethereum/common"
"github.com/ethereum/go-ethereum/core/types"
"github.com/ethereum/go-ethereum/crypto"
"github.com/ethereum/go-ethereum/ethclient"
"github.com/ethereum/go-ethereum/log"
+
"github.com/offchainlabs/nitro/arbutil"
"github.com/offchainlabs/nitro/solgen/go/rollupgen"
+ "github.com/offchainlabs/nitro/staker/txbuilder"
+ "github.com/offchainlabs/nitro/util/arbmath"
+ "github.com/offchainlabs/nitro/util/headerreader"
+ "github.com/offchainlabs/nitro/validator"
)
type ConfirmType uint8
diff --git a/staker/rollup_watcher.go b/staker/rollup_watcher.go
index 4d7db52322..8b27e544b1 100644
--- a/staker/rollup_watcher.go
+++ b/staker/rollup_watcher.go
@@ -13,17 +13,17 @@ import (
"strings"
"sync/atomic"
+ "github.com/ethereum/go-ethereum"
+ "github.com/ethereum/go-ethereum/accounts/abi/bind"
"github.com/ethereum/go-ethereum/common"
+ "github.com/ethereum/go-ethereum/core/types"
"github.com/ethereum/go-ethereum/crypto"
"github.com/ethereum/go-ethereum/log"
"github.com/ethereum/go-ethereum/rpc"
+
"github.com/offchainlabs/nitro/arbutil"
"github.com/offchainlabs/nitro/solgen/go/rollupgen"
"github.com/offchainlabs/nitro/util/headerreader"
-
- "github.com/ethereum/go-ethereum"
- "github.com/ethereum/go-ethereum/accounts/abi/bind"
- "github.com/ethereum/go-ethereum/core/types"
)
var rollupInitializedID common.Hash
diff --git a/staker/staker.go b/staker/staker.go
index 45e6f6f551..c5f9c1cd65 100644
--- a/staker/staker.go
+++ b/staker/staker.go
@@ -12,6 +12,9 @@ import (
"strings"
"time"
+ "github.com/google/btree"
+ flag "github.com/spf13/pflag"
+
"github.com/ethereum/go-ethereum/accounts/abi/bind"
"github.com/ethereum/go-ethereum/common"
"github.com/ethereum/go-ethereum/core/types"
@@ -19,8 +22,6 @@ import (
"github.com/ethereum/go-ethereum/log"
"github.com/ethereum/go-ethereum/metrics"
"github.com/ethereum/go-ethereum/rpc"
- "github.com/google/btree"
- flag "github.com/spf13/pflag"
"github.com/offchainlabs/nitro/arbnode/dataposter"
"github.com/offchainlabs/nitro/arbutil"
diff --git a/staker/stateless_block_validator.go b/staker/stateless_block_validator.go
index d9c9c5446b..bb25a38f5d 100644
--- a/staker/stateless_block_validator.go
+++ b/staker/stateless_block_validator.go
@@ -9,23 +9,22 @@ import (
"fmt"
"testing"
- "github.com/offchainlabs/nitro/arbstate/daprovider"
-
"github.com/ethereum/go-ethereum/common"
"github.com/ethereum/go-ethereum/core/state"
"github.com/ethereum/go-ethereum/ethdb"
"github.com/ethereum/go-ethereum/log"
"github.com/ethereum/go-ethereum/node"
"github.com/ethereum/go-ethereum/params"
+
"github.com/offchainlabs/nitro/arbos/arbostypes"
+ "github.com/offchainlabs/nitro/arbstate/daprovider"
"github.com/offchainlabs/nitro/arbutil"
"github.com/offchainlabs/nitro/execution"
"github.com/offchainlabs/nitro/util/rpcclient"
"github.com/offchainlabs/nitro/validator"
+ validatorclient "github.com/offchainlabs/nitro/validator/client"
"github.com/offchainlabs/nitro/validator/client/redis"
"github.com/offchainlabs/nitro/validator/server_api"
-
- validatorclient "github.com/offchainlabs/nitro/validator/client"
)
type StatelessBlockValidator struct {
diff --git a/staker/validatorwallet/contract.go b/staker/validatorwallet/contract.go
index 3202d58569..4d4f8288ef 100644
--- a/staker/validatorwallet/contract.go
+++ b/staker/validatorwallet/contract.go
@@ -19,6 +19,7 @@ import (
"github.com/ethereum/go-ethereum/ethclient"
"github.com/ethereum/go-ethereum/log"
"github.com/ethereum/go-ethereum/params"
+
"github.com/offchainlabs/nitro/arbnode/dataposter"
"github.com/offchainlabs/nitro/solgen/go/rollupgen"
"github.com/offchainlabs/nitro/staker/txbuilder"
diff --git a/staker/validatorwallet/eoa.go b/staker/validatorwallet/eoa.go
index 7c7f472579..870a959152 100644
--- a/staker/validatorwallet/eoa.go
+++ b/staker/validatorwallet/eoa.go
@@ -11,6 +11,7 @@ import (
"github.com/ethereum/go-ethereum/common"
"github.com/ethereum/go-ethereum/core/types"
"github.com/ethereum/go-ethereum/ethclient"
+
"github.com/offchainlabs/nitro/arbnode/dataposter"
"github.com/offchainlabs/nitro/solgen/go/challengegen"
"github.com/offchainlabs/nitro/solgen/go/rollupgen"
diff --git a/staker/validatorwallet/noop.go b/staker/validatorwallet/noop.go
index fec39ac2b1..24c7280811 100644
--- a/staker/validatorwallet/noop.go
+++ b/staker/validatorwallet/noop.go
@@ -11,6 +11,7 @@ import (
"github.com/ethereum/go-ethereum/common"
"github.com/ethereum/go-ethereum/core/types"
"github.com/ethereum/go-ethereum/ethclient"
+
"github.com/offchainlabs/nitro/arbnode/dataposter"
"github.com/offchainlabs/nitro/staker/txbuilder"
)
diff --git a/statetransfer/data.go b/statetransfer/data.go
index df4694aa17..21268a443a 100644
--- a/statetransfer/data.go
+++ b/statetransfer/data.go
@@ -14,6 +14,7 @@ type ArbosInitializationInfo struct {
AddressTableContents []common.Address
RetryableData []InitializationDataForRetryable
Accounts []AccountInitializationInfo
+ ChainOwner common.Address
}
type InitializationDataForRetryable struct {
diff --git a/statetransfer/interface.go b/statetransfer/interface.go
index 7d592b4430..cb70fdd14d 100644
--- a/statetransfer/interface.go
+++ b/statetransfer/interface.go
@@ -17,6 +17,7 @@ type InitDataReader interface {
GetNextBlockNumber() (uint64, error)
GetRetryableDataReader() (RetryableDataReader, error)
GetAccountDataReader() (AccountDataReader, error)
+ GetChainOwner() (common.Address, error)
}
type ListReader interface {
diff --git a/statetransfer/jsondatareader.go b/statetransfer/jsondatareader.go
index c36061c0b0..5e992df3f0 100644
--- a/statetransfer/jsondatareader.go
+++ b/statetransfer/jsondatareader.go
@@ -210,3 +210,7 @@ func (r *JsonInitDataReader) GetAccountDataReader() (AccountDataReader, error) {
JsonListReader: listreader,
}, nil
}
+
+func (r *JsonInitDataReader) GetChainOwner() (common.Address, error) {
+ return common.Address{}, nil
+}
diff --git a/statetransfer/memdatareader.go b/statetransfer/memdatareader.go
index 1d60888937..3d6b68343c 100644
--- a/statetransfer/memdatareader.go
+++ b/statetransfer/memdatareader.go
@@ -99,6 +99,10 @@ func (r *MemoryInitDataReader) GetAccountDataReader() (AccountDataReader, error)
}, nil
}
+func (r *MemoryInitDataReader) GetChainOwner() (common.Address, error) {
+ return r.d.ChainOwner, nil
+}
+
func (r *MemoryInitDataReader) Close() error {
return nil
}
diff --git a/system_tests/aliasing_test.go b/system_tests/aliasing_test.go
index 60a89468a5..e6c9dab45f 100644
--- a/system_tests/aliasing_test.go
+++ b/system_tests/aliasing_test.go
@@ -12,6 +12,7 @@ import (
"github.com/ethereum/go-ethereum/accounts/abi"
"github.com/ethereum/go-ethereum/common"
"github.com/ethereum/go-ethereum/core/types"
+
"github.com/offchainlabs/nitro/arbos/util"
"github.com/offchainlabs/nitro/solgen/go/mocksgen"
"github.com/offchainlabs/nitro/solgen/go/precompilesgen"
diff --git a/system_tests/batch_poster_test.go b/system_tests/batch_poster_test.go
index 0ec03e84c4..39d7fa576c 100644
--- a/system_tests/batch_poster_test.go
+++ b/system_tests/batch_poster_test.go
@@ -13,6 +13,7 @@ import (
"time"
"github.com/andybalholm/brotli"
+
"github.com/ethereum/go-ethereum/accounts/abi"
"github.com/ethereum/go-ethereum/common"
"github.com/ethereum/go-ethereum/core/types"
diff --git a/system_tests/block_hash_test.go b/system_tests/block_hash_test.go
index b437f3dad9..454b4359ad 100644
--- a/system_tests/block_hash_test.go
+++ b/system_tests/block_hash_test.go
@@ -8,6 +8,7 @@ import (
"testing"
"github.com/ethereum/go-ethereum/accounts/abi/bind"
+
"github.com/offchainlabs/nitro/solgen/go/mocksgen"
)
diff --git a/system_tests/blocks_reexecutor_test.go b/system_tests/blocks_reexecutor_test.go
index c6a7181c46..e9ef5a2260 100644
--- a/system_tests/blocks_reexecutor_test.go
+++ b/system_tests/blocks_reexecutor_test.go
@@ -5,6 +5,8 @@ import (
"testing"
"github.com/ethereum/go-ethereum/common"
+ "github.com/ethereum/go-ethereum/core/rawdb"
+
blocksreexecutor "github.com/offchainlabs/nitro/blocks_reexecutor"
)
@@ -13,6 +15,7 @@ func TestBlocksReExecutorModes(t *testing.T) {
defer cancel()
builder := NewNodeBuilder(ctx).DefaultConfig(t, false)
+ builder.execConfig.Caching.StateScheme = rawdb.HashScheme
cleanup := builder.Build(t)
defer cleanup()
@@ -37,7 +40,8 @@ func TestBlocksReExecutorModes(t *testing.T) {
// Reexecute blocks at mode full
success := make(chan struct{})
- executorFull := blocksreexecutor.New(&blocksreexecutor.TestConfig, blockchain, feedErrChan)
+ executorFull, err := blocksreexecutor.New(&blocksreexecutor.TestConfig, blockchain, builder.L2.ExecNode.ChainDB, feedErrChan)
+ Require(t, err)
executorFull.Start(ctx, success)
select {
case err := <-feedErrChan:
@@ -49,7 +53,8 @@ func TestBlocksReExecutorModes(t *testing.T) {
success = make(chan struct{})
c := &blocksreexecutor.TestConfig
c.Mode = "random"
- executorRandom := blocksreexecutor.New(c, blockchain, feedErrChan)
+ executorRandom, err := blocksreexecutor.New(c, blockchain, builder.L2.ExecNode.ChainDB, feedErrChan)
+ Require(t, err)
executorRandom.Start(ctx, success)
select {
case err := <-feedErrChan:
diff --git a/system_tests/bloom_test.go b/system_tests/bloom_test.go
index 68fb7c3add..df6c549dda 100644
--- a/system_tests/bloom_test.go
+++ b/system_tests/bloom_test.go
@@ -17,6 +17,7 @@ import (
"github.com/ethereum/go-ethereum"
"github.com/ethereum/go-ethereum/common"
"github.com/ethereum/go-ethereum/core/types"
+
"github.com/offchainlabs/nitro/solgen/go/mocksgen"
)
diff --git a/system_tests/common_test.go b/system_tests/common_test.go
index 027a41d875..277c97858a 100644
--- a/system_tests/common_test.go
+++ b/system_tests/common_test.go
@@ -11,6 +11,7 @@ import (
"encoding/json"
"flag"
"io"
+ "log/slog"
"math/big"
"net"
"net/http"
@@ -21,27 +22,6 @@ import (
"testing"
"time"
- "github.com/offchainlabs/nitro/arbos"
- "github.com/offchainlabs/nitro/arbos/arbostypes"
- "github.com/offchainlabs/nitro/arbos/util"
- "github.com/offchainlabs/nitro/arbstate/daprovider"
- "github.com/offchainlabs/nitro/arbutil"
- "github.com/offchainlabs/nitro/blsSignatures"
- "github.com/offchainlabs/nitro/cmd/chaininfo"
- "github.com/offchainlabs/nitro/cmd/conf"
- "github.com/offchainlabs/nitro/cmd/genericconf"
- "github.com/offchainlabs/nitro/das"
- "github.com/offchainlabs/nitro/deploy"
- "github.com/offchainlabs/nitro/execution/gethexec"
- "github.com/offchainlabs/nitro/util/arbmath"
- "github.com/offchainlabs/nitro/util/headerreader"
- "github.com/offchainlabs/nitro/util/redisutil"
- "github.com/offchainlabs/nitro/util/signature"
- "github.com/offchainlabs/nitro/validator/inputs"
- "github.com/offchainlabs/nitro/validator/server_api"
- "github.com/offchainlabs/nitro/validator/server_common"
- "github.com/offchainlabs/nitro/validator/valnode"
- rediscons "github.com/offchainlabs/nitro/validator/valnode/redis"
"github.com/redis/go-redis/v9"
"github.com/ethereum/go-ethereum"
@@ -72,16 +52,36 @@ import (
"github.com/ethereum/go-ethereum/rpc"
"github.com/offchainlabs/nitro/arbnode"
+ "github.com/offchainlabs/nitro/arbos"
+ "github.com/offchainlabs/nitro/arbos/arbostypes"
+ "github.com/offchainlabs/nitro/arbos/util"
+ "github.com/offchainlabs/nitro/arbstate/daprovider"
+ "github.com/offchainlabs/nitro/arbutil"
+ "github.com/offchainlabs/nitro/blsSignatures"
+ "github.com/offchainlabs/nitro/cmd/chaininfo"
+ "github.com/offchainlabs/nitro/cmd/conf"
+ "github.com/offchainlabs/nitro/cmd/genericconf"
+ "github.com/offchainlabs/nitro/das"
+ "github.com/offchainlabs/nitro/deploy"
+ "github.com/offchainlabs/nitro/execution/gethexec"
_ "github.com/offchainlabs/nitro/execution/nodeInterface"
"github.com/offchainlabs/nitro/solgen/go/bridgegen"
"github.com/offchainlabs/nitro/solgen/go/mocksgen"
"github.com/offchainlabs/nitro/solgen/go/precompilesgen"
"github.com/offchainlabs/nitro/solgen/go/upgrade_executorgen"
"github.com/offchainlabs/nitro/statetransfer"
+ "github.com/offchainlabs/nitro/util/arbmath"
+ "github.com/offchainlabs/nitro/util/headerreader"
+ "github.com/offchainlabs/nitro/util/redisutil"
+ "github.com/offchainlabs/nitro/util/signature"
"github.com/offchainlabs/nitro/util/testhelpers"
"github.com/offchainlabs/nitro/util/testhelpers/env"
"github.com/offchainlabs/nitro/util/testhelpers/github"
- "golang.org/x/exp/slog"
+ "github.com/offchainlabs/nitro/validator/inputs"
+ "github.com/offchainlabs/nitro/validator/server_api"
+ "github.com/offchainlabs/nitro/validator/server_common"
+ "github.com/offchainlabs/nitro/validator/valnode"
+ rediscons "github.com/offchainlabs/nitro/validator/valnode/redis"
)
type info = *BlockchainTestInfo
@@ -286,7 +286,7 @@ func L3NitroConfigDefaultTest(t *testing.T) *NitroConfig {
MuirGlacierBlock: big.NewInt(0),
BerlinBlock: big.NewInt(0),
LondonBlock: big.NewInt(0),
- ArbitrumChainParams: params.ArbitrumDevTestParams(),
+ ArbitrumChainParams: chaininfo.ArbitrumDevTestParams(),
Clique: ¶ms.CliqueConfig{
Period: 0,
Epoch: 0,
@@ -320,7 +320,7 @@ func (b *NodeBuilder) DefaultConfig(t *testing.T, withL1 bool) *NodeBuilder {
b.takeOwnership = true
b.nodeConfig = arbnode.ConfigDefaultL2Test()
}
- b.chainConfig = params.ArbitrumDevTestChainConfig()
+ b.chainConfig = chaininfo.ArbitrumDevTestChainConfig()
b.L1Info = NewL1TestInfo(t)
b.L2Info = NewArbTestInfo(t, b.chainConfig.ChainID)
b.dataDir = t.TempDir()
@@ -375,7 +375,7 @@ func (b *NodeBuilder) Build(t *testing.T) func() {
func (b *NodeBuilder) CheckConfig(t *testing.T) {
if b.chainConfig == nil {
- b.chainConfig = params.ArbitrumDevTestChainConfig()
+ b.chainConfig = chaininfo.ArbitrumDevTestChainConfig()
}
if b.nodeConfig == nil {
b.nodeConfig = arbnode.ConfigDefaultL1Test()
@@ -1179,7 +1179,7 @@ func createTestL1BlockChain(t *testing.T, l1info info) (info, *ethclient.Client,
stackConfig := testhelpers.CreateStackConfigForTest(t.TempDir())
l1info.GenerateAccount("Faucet")
- chainConfig := params.ArbitrumDevTestChainConfig()
+ chainConfig := chaininfo.ArbitrumDevTestChainConfig()
chainConfig.ArbitrumChainParams = params.ArbitrumChainParams{}
stack, err := node.New(stackConfig)
@@ -1196,6 +1196,7 @@ func createTestL1BlockChain(t *testing.T, l1info info) (info, *ethclient.Client,
l1Genesis.BaseFee = big.NewInt(50 * params.GWei)
nodeConf.Genesis = l1Genesis
nodeConf.Miner.Etherbase = l1info.GetAddress("Faucet")
+ nodeConf.Miner.PendingFeeRecipient = l1info.GetAddress("Faucet")
nodeConf.SyncMode = downloader.FullSync
l1backend, err := eth.New(stack, &nodeConf)
@@ -1206,26 +1207,23 @@ func createTestL1BlockChain(t *testing.T, l1info info) (info, *ethclient.Client,
catalyst.RegisterSimulatedBeaconAPIs(stack, simBeacon)
stack.RegisterLifecycle(simBeacon)
- tempKeyStore := keystore.NewPlaintextKeyStore(t.TempDir())
+ tempKeyStore := keystore.NewKeyStore(t.TempDir(), keystore.LightScryptN, keystore.LightScryptP)
faucetAccount, err := tempKeyStore.ImportECDSA(l1info.Accounts["Faucet"].PrivateKey, "passphrase")
Require(t, err)
Require(t, tempKeyStore.Unlock(faucetAccount, "passphrase"))
l1backend.AccountManager().AddBackend(tempKeyStore)
- l1backend.SetEtherbase(l1info.GetAddress("Faucet"))
stack.RegisterLifecycle(&lifecycle{stop: func() error {
- l1backend.StopMining()
- return nil
+ return l1backend.Stop()
}})
stack.RegisterAPIs([]rpc.API{{
Namespace: "eth",
- Service: filters.NewFilterAPI(filters.NewFilterSystem(l1backend.APIBackend, filters.Config{}), false),
+ Service: filters.NewFilterAPI(filters.NewFilterSystem(l1backend.APIBackend, filters.Config{})),
}})
stack.RegisterAPIs(tracers.APIs(l1backend.APIBackend))
Require(t, stack.Start())
- Require(t, l1backend.StartMining())
rpcClient := stack.Attach()
@@ -1511,7 +1509,7 @@ func setupConfigWithDAS(
t *testing.T, ctx context.Context, dasModeString string,
) (*params.ChainConfig, *arbnode.Config, *das.LifecycleManager, string, *blsSignatures.PublicKey) {
l1NodeConfigA := arbnode.ConfigDefaultL1Test()
- chainConfig := params.ArbitrumDevTestChainConfig()
+ chainConfig := chaininfo.ArbitrumDevTestChainConfig()
var dbPath string
var err error
@@ -1519,10 +1517,10 @@ func setupConfigWithDAS(
switch dasModeString {
case "db":
enableDbStorage = true
- chainConfig = params.ArbitrumDevTestDASChainConfig()
+ chainConfig = chaininfo.ArbitrumDevTestDASChainConfig()
case "files":
enableFileStorage = true
- chainConfig = params.ArbitrumDevTestDASChainConfig()
+ chainConfig = chaininfo.ArbitrumDevTestDASChainConfig()
case "onchain":
enableDas = false
default:
diff --git a/system_tests/conditionaltx_test.go b/system_tests/conditionaltx_test.go
index 286060e666..2d9140ffcd 100644
--- a/system_tests/conditionaltx_test.go
+++ b/system_tests/conditionaltx_test.go
@@ -21,6 +21,7 @@ import (
"github.com/ethereum/go-ethereum/core/types"
"github.com/ethereum/go-ethereum/crypto"
"github.com/ethereum/go-ethereum/rpc"
+
"github.com/offchainlabs/nitro/execution/gethexec"
"github.com/offchainlabs/nitro/solgen/go/mocksgen"
)
diff --git a/system_tests/contract_tx_test.go b/system_tests/contract_tx_test.go
index c1ef840c43..306b8fada3 100644
--- a/system_tests/contract_tx_test.go
+++ b/system_tests/contract_tx_test.go
@@ -14,9 +14,10 @@ import (
"github.com/ethereum/go-ethereum/common"
"github.com/ethereum/go-ethereum/core/types"
"github.com/ethereum/go-ethereum/crypto"
- "github.com/ethereum/go-ethereum/params"
+
"github.com/offchainlabs/nitro/arbos"
"github.com/offchainlabs/nitro/arbos/arbostypes"
+ "github.com/offchainlabs/nitro/cmd/chaininfo"
"github.com/offchainlabs/nitro/util/arbmath"
)
@@ -54,7 +55,7 @@ func TestContractTxDeploy(t *testing.T) {
// #nosec G115
requestId[0] = uint8(stateNonce)
contractTx := &types.ArbitrumContractTx{
- ChainId: params.ArbitrumDevTestChainConfig().ChainID,
+ ChainId: chaininfo.ArbitrumDevTestChainConfig().ChainID,
RequestId: requestId,
From: from,
GasFeeCap: big.NewInt(1e9),
diff --git a/system_tests/das_test.go b/system_tests/das_test.go
index ed3844d528..52703c879d 100644
--- a/system_tests/das_test.go
+++ b/system_tests/das_test.go
@@ -8,6 +8,7 @@ import (
"encoding/base64"
"errors"
"io"
+ "log/slog"
"math/big"
"net"
"net/http"
@@ -20,17 +21,16 @@ import (
"github.com/ethereum/go-ethereum/core/types"
"github.com/ethereum/go-ethereum/ethclient"
"github.com/ethereum/go-ethereum/log"
- "github.com/ethereum/go-ethereum/params"
"github.com/offchainlabs/nitro/arbnode"
"github.com/offchainlabs/nitro/blsSignatures"
+ "github.com/offchainlabs/nitro/cmd/chaininfo"
"github.com/offchainlabs/nitro/cmd/genericconf"
"github.com/offchainlabs/nitro/das"
"github.com/offchainlabs/nitro/solgen/go/bridgegen"
"github.com/offchainlabs/nitro/solgen/go/precompilesgen"
"github.com/offchainlabs/nitro/util/headerreader"
"github.com/offchainlabs/nitro/util/testhelpers"
- "golang.org/x/exp/slog"
)
func startLocalDASServer(
@@ -201,7 +201,7 @@ func TestDASComplexConfigAndRestMirror(t *testing.T) {
// Setup L1 chain and contracts
builder := NewNodeBuilder(ctx).DefaultConfig(t, true)
- builder.chainConfig = params.ArbitrumDevTestDASChainConfig()
+ builder.chainConfig = chaininfo.ArbitrumDevTestDASChainConfig()
builder.BuildL1(t)
arbSys, _ := precompilesgen.NewArbSys(types.ArbSysAddress, builder.L1.Client)
@@ -329,7 +329,7 @@ func TestDASBatchPosterFallback(t *testing.T) {
// Setup L1
builder := NewNodeBuilder(ctx).DefaultConfig(t, true)
- builder.chainConfig = params.ArbitrumDevTestDASChainConfig()
+ builder.chainConfig = chaininfo.ArbitrumDevTestDASChainConfig()
builder.BuildL1(t)
l1client := builder.L1.Client
l1info := builder.L1Info
diff --git a/system_tests/db_conversion_test.go b/system_tests/db_conversion_test.go
index aca28262cb..d19629fade 100644
--- a/system_tests/db_conversion_test.go
+++ b/system_tests/db_conversion_test.go
@@ -12,6 +12,7 @@ import (
"github.com/ethereum/go-ethereum/core/rawdb"
"github.com/ethereum/go-ethereum/core/types"
"github.com/ethereum/go-ethereum/trie"
+
"github.com/offchainlabs/nitro/cmd/dbconv/dbconv"
"github.com/offchainlabs/nitro/util/arbmath"
)
diff --git a/system_tests/debugapi_test.go b/system_tests/debugapi_test.go
index eb2bcd095d..6be79ed4c9 100644
--- a/system_tests/debugapi_test.go
+++ b/system_tests/debugapi_test.go
@@ -12,6 +12,7 @@ import (
"github.com/ethereum/go-ethereum/eth"
"github.com/ethereum/go-ethereum/eth/tracers"
"github.com/ethereum/go-ethereum/rpc"
+
"github.com/offchainlabs/nitro/solgen/go/precompilesgen"
)
diff --git a/system_tests/delayedinbox_test.go b/system_tests/delayedinbox_test.go
index ca3e7b5999..346b0fbc2f 100644
--- a/system_tests/delayedinbox_test.go
+++ b/system_tests/delayedinbox_test.go
@@ -11,6 +11,7 @@ import (
"github.com/ethereum/go-ethereum/accounts/abi"
"github.com/ethereum/go-ethereum/core/types"
+
"github.com/offchainlabs/nitro/arbos"
"github.com/offchainlabs/nitro/solgen/go/bridgegen"
)
diff --git a/system_tests/estimation_test.go b/system_tests/estimation_test.go
index 6285702342..e489b1864e 100644
--- a/system_tests/estimation_test.go
+++ b/system_tests/estimation_test.go
@@ -15,6 +15,7 @@ import (
"github.com/ethereum/go-ethereum/core/vm"
"github.com/ethereum/go-ethereum/eth/gasestimator"
"github.com/ethereum/go-ethereum/params"
+
"github.com/offchainlabs/nitro/arbos/arbostypes"
"github.com/offchainlabs/nitro/solgen/go/mocksgen"
"github.com/offchainlabs/nitro/solgen/go/node_interfacegen"
diff --git a/system_tests/forwarder_test.go b/system_tests/forwarder_test.go
index 6a1d1c68d8..843668454d 100644
--- a/system_tests/forwarder_test.go
+++ b/system_tests/forwarder_test.go
@@ -15,7 +15,9 @@ import (
"time"
"github.com/alicebob/miniredis/v2"
+
"github.com/ethereum/go-ethereum/ethclient"
+
"github.com/offchainlabs/nitro/arbnode"
"github.com/offchainlabs/nitro/util/redisutil"
)
diff --git a/system_tests/infra_fee_test.go b/system_tests/infra_fee_test.go
index 9366fc204e..2e03eb0815 100644
--- a/system_tests/infra_fee_test.go
+++ b/system_tests/infra_fee_test.go
@@ -13,6 +13,7 @@ import (
"github.com/ethereum/go-ethereum/common"
"github.com/ethereum/go-ethereum/crypto"
+
"github.com/offchainlabs/nitro/arbos/l2pricing"
"github.com/offchainlabs/nitro/solgen/go/precompilesgen"
"github.com/offchainlabs/nitro/util/arbmath"
diff --git a/system_tests/initialization_test.go b/system_tests/initialization_test.go
index 17e020e6ab..4807a8e67a 100644
--- a/system_tests/initialization_test.go
+++ b/system_tests/initialization_test.go
@@ -10,7 +10,8 @@ import (
"github.com/ethereum/go-ethereum"
"github.com/ethereum/go-ethereum/common"
- "github.com/ethereum/go-ethereum/params"
+
+ "github.com/offchainlabs/nitro/cmd/chaininfo"
"github.com/offchainlabs/nitro/statetransfer"
"github.com/offchainlabs/nitro/util/testhelpers"
)
@@ -50,7 +51,7 @@ func TestInitContract(t *testing.T) {
defer cancel()
expectedSums := make(map[common.Address]*big.Int)
prand := testhelpers.NewPseudoRandomDataSource(t, 1)
- l2info := NewArbTestInfo(t, params.ArbitrumDevTestChainConfig().ChainID)
+ l2info := NewArbTestInfo(t, chaininfo.ArbitrumDevTestChainConfig().ChainID)
for i := 0; i < 50; i++ {
contractData, sum := InitOneContract(prand)
accountAddress := prand.GetAddress()
diff --git a/system_tests/log_subscription_test.go b/system_tests/log_subscription_test.go
index e4402533a6..4d38ea6e9c 100644
--- a/system_tests/log_subscription_test.go
+++ b/system_tests/log_subscription_test.go
@@ -12,6 +12,7 @@ import (
"github.com/ethereum/go-ethereum"
"github.com/ethereum/go-ethereum/common"
"github.com/ethereum/go-ethereum/core/types"
+
"github.com/offchainlabs/nitro/solgen/go/precompilesgen"
)
diff --git a/system_tests/meaningless_reorg_test.go b/system_tests/meaningless_reorg_test.go
index 06a5d3d2b3..350b21a6cf 100644
--- a/system_tests/meaningless_reorg_test.go
+++ b/system_tests/meaningless_reorg_test.go
@@ -10,6 +10,7 @@ import (
"time"
"github.com/ethereum/go-ethereum/common"
+
"github.com/offchainlabs/nitro/solgen/go/bridgegen"
)
diff --git a/system_tests/nodeinterface_test.go b/system_tests/nodeinterface_test.go
index 927dc1b630..5c32dcf20f 100644
--- a/system_tests/nodeinterface_test.go
+++ b/system_tests/nodeinterface_test.go
@@ -15,6 +15,7 @@ import (
"github.com/ethereum/go-ethereum/accounts/abi/bind"
"github.com/ethereum/go-ethereum/common"
"github.com/ethereum/go-ethereum/core/types"
+
"github.com/offchainlabs/nitro/arbos/util"
"github.com/offchainlabs/nitro/solgen/go/node_interfacegen"
)
diff --git a/system_tests/outbox_test.go b/system_tests/outbox_test.go
index 25c52396f9..ea6dc2be8b 100644
--- a/system_tests/outbox_test.go
+++ b/system_tests/outbox_test.go
@@ -18,6 +18,7 @@ import (
"github.com/ethereum/go-ethereum/core/vm"
"github.com/ethereum/go-ethereum/crypto"
"github.com/ethereum/go-ethereum/params"
+
"github.com/offchainlabs/nitro/gethhook"
"github.com/offchainlabs/nitro/solgen/go/node_interfacegen"
"github.com/offchainlabs/nitro/solgen/go/precompilesgen"
diff --git a/system_tests/precompile_doesnt_revert_test.go b/system_tests/precompile_doesnt_revert_test.go
index e6751d347d..fc4b0e745e 100644
--- a/system_tests/precompile_doesnt_revert_test.go
+++ b/system_tests/precompile_doesnt_revert_test.go
@@ -13,8 +13,9 @@ import (
"github.com/ethereum/go-ethereum/common"
"github.com/ethereum/go-ethereum/core/types"
"github.com/ethereum/go-ethereum/crypto"
- "github.com/ethereum/go-ethereum/params"
+
"github.com/offchainlabs/nitro/arbos/l1pricing"
+ "github.com/offchainlabs/nitro/cmd/chaininfo"
"github.com/offchainlabs/nitro/solgen/go/precompilesgen"
)
@@ -156,7 +157,7 @@ func TestArbOwnerDoesntRevert(t *testing.T) {
arbOwner, err := precompilesgen.NewArbOwner(types.ArbOwnerAddress, builder.L2.Client)
Require(t, err)
- chainConfig := params.ArbitrumDevTestChainConfig()
+ chainConfig := chaininfo.ArbitrumDevTestChainConfig()
chainConfig.ArbitrumChainParams.MaxCodeSize = 100
serializedChainConfig, err := json.Marshal(chainConfig)
Require(t, err)
diff --git a/system_tests/precompile_fuzz_test.go b/system_tests/precompile_fuzz_test.go
index 8ab133cf58..82dd393ea2 100644
--- a/system_tests/precompile_fuzz_test.go
+++ b/system_tests/precompile_fuzz_test.go
@@ -12,10 +12,11 @@ import (
"github.com/ethereum/go-ethereum/core/rawdb"
"github.com/ethereum/go-ethereum/core/state"
"github.com/ethereum/go-ethereum/core/vm"
- "github.com/ethereum/go-ethereum/params"
+
"github.com/offchainlabs/nitro/arbos/arbosState"
"github.com/offchainlabs/nitro/arbos/arbostypes"
"github.com/offchainlabs/nitro/arbos/burn"
+ "github.com/offchainlabs/nitro/cmd/chaininfo"
"github.com/offchainlabs/nitro/gethhook"
"github.com/offchainlabs/nitro/precompiles"
)
@@ -32,7 +33,7 @@ func FuzzPrecompiles(f *testing.F) {
panic(err)
}
burner := burn.NewSystemBurner(nil, false)
- chainConfig := params.ArbitrumDevTestChainConfig()
+ chainConfig := chaininfo.ArbitrumDevTestChainConfig()
_, err = arbosState.InitializeArbosState(sdb, burner, chainConfig, arbostypes.TestInitMessage)
if err != nil {
panic(err)
diff --git a/system_tests/precompile_test.go b/system_tests/precompile_test.go
index 9d5737c249..78f34df6c7 100644
--- a/system_tests/precompile_test.go
+++ b/system_tests/precompile_test.go
@@ -14,9 +14,10 @@ import (
"github.com/ethereum/go-ethereum/common"
"github.com/ethereum/go-ethereum/core/types"
"github.com/ethereum/go-ethereum/crypto"
- "github.com/ethereum/go-ethereum/params"
+
"github.com/offchainlabs/nitro/arbos"
"github.com/offchainlabs/nitro/arbos/l1pricing"
+ "github.com/offchainlabs/nitro/cmd/chaininfo"
"github.com/offchainlabs/nitro/solgen/go/mocksgen"
"github.com/offchainlabs/nitro/solgen/go/precompilesgen"
"github.com/offchainlabs/nitro/util/arbmath"
@@ -37,7 +38,7 @@ func TestPurePrecompileMethodCalls(t *testing.T) {
Require(t, err, "could not deploy ArbSys contract")
chainId, err := arbSys.ArbChainID(&bind.CallOpts{})
Require(t, err, "failed to get the ChainID")
- if chainId.Uint64() != params.ArbitrumDevTestChainConfig().ChainID.Uint64() {
+ if chainId.Uint64() != chaininfo.ArbitrumDevTestChainConfig().ChainID.Uint64() {
Fatal(t, "Wrong ChainID", chainId.Uint64())
}
@@ -433,12 +434,15 @@ func TestGasAccountingParams(t *testing.T) {
Require(t, err)
arbGasInfoSpeedLimit, arbGasInfoPoolSize, arbGasInfoTxGasLimit, err := arbGasInfo.GetGasAccountingParams(&bind.CallOpts{Context: ctx})
Require(t, err)
+ // #nosec G115
if arbGasInfoSpeedLimit.Cmp(big.NewInt(int64(speedLimit))) != 0 {
Fatal(t, "expected speed limit to be", speedLimit, "got", arbGasInfoSpeedLimit)
}
+ // #nosec G115
if arbGasInfoPoolSize.Cmp(big.NewInt(int64(txGasLimit))) != 0 {
Fatal(t, "expected pool size to be", txGasLimit, "got", arbGasInfoPoolSize)
}
+ // #nosec G115
if arbGasInfoTxGasLimit.Cmp(big.NewInt(int64(txGasLimit))) != 0 {
Fatal(t, "expected tx gas limit to be", txGasLimit, "got", arbGasInfoTxGasLimit)
}
diff --git a/system_tests/program_gas_test.go b/system_tests/program_gas_test.go
index 119897cbfe..3450214a14 100644
--- a/system_tests/program_gas_test.go
+++ b/system_tests/program_gas_test.go
@@ -2,6 +2,7 @@ package arbtest
import (
"context"
+ "encoding/binary"
"fmt"
"math"
"math/big"
@@ -13,9 +14,11 @@ import (
"github.com/ethereum/go-ethereum/common"
"github.com/ethereum/go-ethereum/core/types"
"github.com/ethereum/go-ethereum/core/vm"
+ "github.com/ethereum/go-ethereum/crypto"
"github.com/ethereum/go-ethereum/eth/tracers/logger"
"github.com/ethereum/go-ethereum/ethclient"
"github.com/ethereum/go-ethereum/rpc"
+
"github.com/offchainlabs/nitro/arbos/util"
"github.com/offchainlabs/nitro/execution/gethexec"
"github.com/offchainlabs/nitro/solgen/go/mocksgen"
@@ -23,6 +26,162 @@ import (
"github.com/offchainlabs/nitro/util/testhelpers"
)
+const HOSTIO_INK = 8400
+
+func checkInkUsage(
+ t *testing.T,
+ builder *NodeBuilder,
+ stylusProgram common.Address,
+ hostio string,
+ signature string,
+ params []uint32,
+ expectedInk uint64,
+) {
+ toU256ByteSlice := func(i uint32) []byte {
+ arr := make([]byte, 32)
+ binary.BigEndian.PutUint32(arr[28:32], i)
+ return arr
+ }
+
+ testName := fmt.Sprintf("%v_%v", signature, params)
+
+ data := crypto.Keccak256([]byte(signature))[:4]
+ for _, p := range params {
+ data = append(data, toU256ByteSlice(p)...)
+ }
+
+ const txGas uint64 = 32_000_000
+ tx := builder.L2Info.PrepareTxTo("Owner", &stylusProgram, txGas, nil, data)
+
+ err := builder.L2.Client.SendTransaction(builder.ctx, tx)
+ Require(t, err, "testName", testName)
+ _, err = builder.L2.EnsureTxSucceeded(tx)
+ Require(t, err, "testName", testName)
+
+ stylusGasUsage, err := stylusHostiosGasUsage(builder.ctx, builder.L2.Client.Client(), tx)
+ Require(t, err, "testName", testName)
+
+ _, ok := stylusGasUsage[hostio]
+ if !ok {
+ Fatal(t, "hostio not found in gas usage", "hostio", hostio, "stylusGasUsage", stylusGasUsage, "testName", testName)
+ }
+
+ if len(stylusGasUsage[hostio]) != 1 {
+ Fatal(t, "unexpected number of gas usage", "hostio", hostio, "stylusGasUsage", stylusGasUsage, "testName", testName)
+ }
+
+ expectedGas := float64(expectedInk) / 10000
+ returnedGas := stylusGasUsage[hostio][0]
+ if math.Abs(expectedGas-returnedGas) > 1e-9 {
+ Fatal(t, "unexpected gas usage", "hostio", hostio, "expected", expectedGas, "returned", returnedGas, "testName", testName)
+ }
+}
+
+func TestWriteResultGasUsage(t *testing.T) {
+ t.Parallel()
+
+ builder := setupGasCostTest(t)
+ auth := builder.L2Info.GetDefaultTransactOpts("Owner", builder.ctx)
+ stylusProgram := deployWasm(t, builder.ctx, auth, builder.L2.Client, rustFile("hostio-test"))
+
+ hostio := "write_result"
+
+ // writeResultEmpty doesn't return any value
+ signature := "writeResultEmpty()"
+ expectedInk := HOSTIO_INK + 16381*2
+ // #nosec G115
+ checkInkUsage(t, builder, stylusProgram, hostio, signature, nil, uint64(expectedInk))
+
+ // writeResult(uint256) returns an array of uint256
+ signature = "writeResult(uint256)"
+ numberOfElementsInReturnedArray := 10000
+ arrayOverhead := 32 + 32 // 32 bytes for the array length and 32 bytes for the array offset
+ expectedInk = HOSTIO_INK + (16381+55*(32*numberOfElementsInReturnedArray+arrayOverhead-32))*2
+ // #nosec G115
+ checkInkUsage(t, builder, stylusProgram, hostio, signature, []uint32{uint32(numberOfElementsInReturnedArray)}, uint64(expectedInk))
+
+ signature = "writeResult(uint256)"
+ numberOfElementsInReturnedArray = 0
+ expectedInk = HOSTIO_INK + (16381+55*(arrayOverhead-32))*2
+ // #nosec G115
+ checkInkUsage(t, builder, stylusProgram, hostio, signature, []uint32{uint32(numberOfElementsInReturnedArray)}, uint64(expectedInk))
+}
+
+func TestReadArgsGasUsage(t *testing.T) {
+ t.Parallel()
+
+ builder := setupGasCostTest(t)
+ auth := builder.L2Info.GetDefaultTransactOpts("Owner", builder.ctx)
+ stylusProgram := deployWasm(t, builder.ctx, auth, builder.L2.Client, rustFile("hostio-test"))
+
+ hostio := "read_args"
+
+ signature := "readArgsNoArgs()"
+ expectedInk := HOSTIO_INK + 5040
+ // #nosec G115
+ checkInkUsage(t, builder, stylusProgram, hostio, signature, nil, uint64(expectedInk))
+
+ signature = "readArgsOneArg(uint256)"
+ signatureOverhead := 4
+ expectedInk = HOSTIO_INK + 5040 + 30*(32+signatureOverhead-32)
+ // #nosec G115
+ checkInkUsage(t, builder, stylusProgram, hostio, signature, []uint32{1}, uint64(expectedInk))
+
+ signature = "readArgsThreeArgs(uint256,uint256,uint256)"
+ expectedInk = HOSTIO_INK + 5040 + 30*(3*32+signatureOverhead-32)
+ // #nosec G115
+ checkInkUsage(t, builder, stylusProgram, hostio, signature, []uint32{1, 1, 1}, uint64(expectedInk))
+}
+
+func TestMsgReentrantGasUsage(t *testing.T) {
+ t.Parallel()
+
+ builder := setupGasCostTest(t)
+ auth := builder.L2Info.GetDefaultTransactOpts("Owner", builder.ctx)
+ stylusProgram := deployWasm(t, builder.ctx, auth, builder.L2.Client, rustFile("hostio-test"))
+
+ hostio := "msg_reentrant"
+
+ signature := "writeResultEmpty()"
+ expectedInk := HOSTIO_INK
+ // #nosec G115
+ checkInkUsage(t, builder, stylusProgram, hostio, signature, nil, uint64(expectedInk))
+}
+
+func TestStorageCacheBytes32GasUsage(t *testing.T) {
+ t.Parallel()
+
+ builder := setupGasCostTest(t)
+ auth := builder.L2Info.GetDefaultTransactOpts("Owner", builder.ctx)
+ stylusProgram := deployWasm(t, builder.ctx, auth, builder.L2.Client, rustFile("hostio-test"))
+
+ hostio := "storage_cache_bytes32"
+
+ signature := "storageCacheBytes32()"
+ expectedInk := HOSTIO_INK + (13440-HOSTIO_INK)*2
+ // #nosec G115
+ checkInkUsage(t, builder, stylusProgram, hostio, signature, nil, uint64(expectedInk))
+}
+
+func TestPayForMemoryGrowGasUsage(t *testing.T) {
+ t.Parallel()
+
+ builder := setupGasCostTest(t)
+ auth := builder.L2Info.GetDefaultTransactOpts("Owner", builder.ctx)
+ stylusProgram := deployWasm(t, builder.ctx, auth, builder.L2.Client, rustFile("hostio-test"))
+
+ hostio := "pay_for_memory_grow"
+ signature := "payForMemoryGrow(uint256)"
+
+ expectedInk := 9320660000
+ // #nosec G115
+ checkInkUsage(t, builder, stylusProgram, hostio, signature, []uint32{100}, uint64(expectedInk))
+
+ expectedInk = HOSTIO_INK
+ // #nosec G115
+ checkInkUsage(t, builder, stylusProgram, hostio, signature, []uint32{0}, uint64(expectedInk))
+}
+
func TestProgramSimpleCost(t *testing.T) {
builder := setupGasCostTest(t)
auth := builder.L2Info.GetDefaultTransactOpts("Owner", builder.ctx)
@@ -122,20 +281,23 @@ func TestProgramStorageCost(t *testing.T) {
writeZeroData = multicallAppendStore(writeZeroData, slot, common.Hash{}, false)
}
+ writePair := compareGasPair{vm.SSTORE, "storage_flush_cache"}
+ readPair := compareGasPair{vm.SLOAD, "storage_load_bytes32"}
+
for _, tc := range []struct {
name string
data []byte
+ pair compareGasPair
}{
- {"initialWrite", writeRandAData},
- {"read", readData},
- {"writeAgain", writeRandBData},
- {"delete", writeZeroData},
- {"readZeros", readData},
- {"writeAgainAgain", writeRandAData},
+ {"initialWrite", writeRandAData, writePair},
+ {"read", readData, readPair},
+ {"writeAgain", writeRandBData, writePair},
+ {"delete", writeZeroData, writePair},
+ {"readZeros", readData, readPair},
+ {"writeAgainAgain", writeRandAData, writePair},
} {
t.Run(tc.name, func(t *testing.T) {
- compareGasUsage(t, builder, evmMulticall, stylusMulticall, tc.data, nil, compareGasSum, 0,
- compareGasPair{vm.SSTORE, "storage_flush_cache"}, compareGasPair{vm.SLOAD, "storage_load_bytes32"})
+ compareGasUsage(t, builder, evmMulticall, stylusMulticall, tc.data, nil, compareGasSum, 0, tc.pair)
})
}
}
@@ -350,7 +512,7 @@ func compareGasUsage(
switch mode {
case compareGasForEach:
if len(evmGasUsage[opcode]) != len(stylusGasUsage[hostio]) {
- Fatal(t, "mismatch between hostios and opcodes", evmGasUsage, stylusGasUsage)
+ Fatal(t, "mismatch between opcode ", opcode, " - ", evmGasUsage[opcode], " and hostio ", hostio, " - ", stylusGasUsage[hostio])
}
for i := range evmGasUsage[opcode] {
opcodeGas := evmGasUsage[opcode][i]
@@ -360,10 +522,12 @@ func compareGasUsage(
}
case compareGasSum:
evmSum := float64(0)
+ for _, v := range evmGasUsage[opcode] {
+ evmSum += float64(v)
+ }
stylusSum := float64(0)
- for i := range evmGasUsage[opcode] {
- evmSum += float64(evmGasUsage[opcode][i])
- stylusSum += stylusGasUsage[hostio][i]
+ for _, v := range stylusGasUsage[hostio] {
+ stylusSum += v
}
t.Logf("evm %v usage: %v - stylus %v usage: %v", opcode, evmSum, hostio, stylusSum)
checkPercentDiff(t, evmSum, stylusSum, maxAllowedDifference)
@@ -400,14 +564,16 @@ func evmOpcodesGasUsage(ctx context.Context, rpcClient rpc.ClientInterface, tx *
// in the caller's depth. Then, we subtract the gas before the call by the
// gas after the call returned.
var gasAfterCall uint64
+ var found bool
for j := i + 1; j < len(result.StructLogs); j++ {
if result.StructLogs[j].Depth == result.StructLogs[i].Depth {
// back to the original call
gasAfterCall = result.StructLogs[j].Gas + result.StructLogs[j].GasCost
+ found = true
break
}
}
- if gasAfterCall == 0 {
+ if !found {
return nil, fmt.Errorf("malformed log: didn't get back to call original depth")
}
if i == 0 {
diff --git a/system_tests/program_norace_test.go b/system_tests/program_norace_test.go
index 56b2046716..b1e5af8395 100644
--- a/system_tests/program_norace_test.go
+++ b/system_tests/program_norace_test.go
@@ -16,6 +16,7 @@ import (
"github.com/ethereum/go-ethereum/common"
"github.com/ethereum/go-ethereum/core/types"
"github.com/ethereum/go-ethereum/eth/tracers"
+
"github.com/offchainlabs/nitro/arbos/util"
"github.com/offchainlabs/nitro/arbutil"
"github.com/offchainlabs/nitro/solgen/go/mocksgen"
diff --git a/system_tests/program_recursive_test.go b/system_tests/program_recursive_test.go
index e928f9f3aa..ca726c684d 100644
--- a/system_tests/program_recursive_test.go
+++ b/system_tests/program_recursive_test.go
@@ -8,6 +8,7 @@ import (
"github.com/ethereum/go-ethereum/core/types"
"github.com/ethereum/go-ethereum/core/vm"
"github.com/ethereum/go-ethereum/log"
+
"github.com/offchainlabs/nitro/arbnode"
"github.com/offchainlabs/nitro/arbutil"
"github.com/offchainlabs/nitro/solgen/go/mocksgen"
diff --git a/system_tests/program_test.go b/system_tests/program_test.go
index ea4ccddd03..5fbb1189c7 100644
--- a/system_tests/program_test.go
+++ b/system_tests/program_test.go
@@ -30,6 +30,7 @@ import (
"github.com/ethereum/go-ethereum/ethdb"
"github.com/ethereum/go-ethereum/log"
"github.com/ethereum/go-ethereum/params"
+
"github.com/offchainlabs/nitro/arbcompress"
"github.com/offchainlabs/nitro/arbos/programs"
"github.com/offchainlabs/nitro/arbos/util"
@@ -1000,6 +1001,31 @@ func testCreate(t *testing.T, jit bool) {
validateBlockRange(t, blocks, jit, builder)
}
+func TestProgramInfiniteLoopShouldCauseErrOutOfGas(t *testing.T) {
+ t.Parallel()
+ testInfiniteLoopCausesErrOutOfGas(t, true)
+ testInfiniteLoopCausesErrOutOfGas(t, false)
+}
+
+func testInfiniteLoopCausesErrOutOfGas(t *testing.T, jit bool) {
+ builder, auth, cleanup := setupProgramTest(t, jit)
+ ctx := builder.ctx
+ l2info := builder.L2Info
+ l2client := builder.L2.Client
+ defer cleanup()
+
+ userWasm := deployWasm(t, ctx, auth, l2client, "../arbitrator/prover/test-cases/user.wat")
+ // Passing input of size 4 invokes $infinite_loop function that calls the infinite loop
+ tx := l2info.PrepareTxTo("Owner", &userWasm, 1000000, nil, make([]byte, 4))
+ Require(t, l2client.SendTransaction(ctx, tx))
+ receipt, err := EnsureTxSucceeded(ctx, l2client, tx)
+ if !strings.Contains(err.Error(), vm.ErrOutOfGas.Error()) {
+ t.Fatalf("transaction should have failed with out of gas error but instead failed with: %v", err)
+ }
+
+ validateBlocks(t, receipt.BlockNumber.Uint64(), jit, builder)
+}
+
func TestProgramMemory(t *testing.T) {
t.Parallel()
testMemory(t, true)
diff --git a/system_tests/pruning_test.go b/system_tests/pruning_test.go
index 90ac3c6909..f49ed8ddcf 100644
--- a/system_tests/pruning_test.go
+++ b/system_tests/pruning_test.go
@@ -11,6 +11,7 @@ import (
"github.com/ethereum/go-ethereum/ethdb"
"github.com/ethereum/go-ethereum/node"
"github.com/ethereum/go-ethereum/trie"
+
"github.com/offchainlabs/nitro/cmd/conf"
"github.com/offchainlabs/nitro/cmd/pruning"
"github.com/offchainlabs/nitro/execution/gethexec"
diff --git a/system_tests/recreatestate_rpc_test.go b/system_tests/recreatestate_rpc_test.go
index 22329a1be5..dc1356347c 100644
--- a/system_tests/recreatestate_rpc_test.go
+++ b/system_tests/recreatestate_rpc_test.go
@@ -21,6 +21,7 @@ import (
"github.com/ethereum/go-ethereum/params"
"github.com/ethereum/go-ethereum/rpc"
"github.com/ethereum/go-ethereum/trie"
+
"github.com/offchainlabs/nitro/execution/gethexec"
"github.com/offchainlabs/nitro/util"
)
diff --git a/system_tests/retryable_test.go b/system_tests/retryable_test.go
index 89446e3c4b..55d26c8372 100644
--- a/system_tests/retryable_test.go
+++ b/system_tests/retryable_test.go
@@ -16,13 +16,14 @@ import (
"github.com/ethereum/go-ethereum/core/types"
"github.com/ethereum/go-ethereum/eth/gasestimator"
"github.com/ethereum/go-ethereum/params"
+
"github.com/offchainlabs/nitro/arbnode"
"github.com/offchainlabs/nitro/arbos"
"github.com/offchainlabs/nitro/arbos/arbostypes"
"github.com/offchainlabs/nitro/arbos/l2pricing"
"github.com/offchainlabs/nitro/arbos/retryables"
"github.com/offchainlabs/nitro/arbos/util"
-
+ "github.com/offchainlabs/nitro/cmd/chaininfo"
"github.com/offchainlabs/nitro/solgen/go/bridgegen"
"github.com/offchainlabs/nitro/solgen/go/mocksgen"
"github.com/offchainlabs/nitro/solgen/go/node_interfacegen"
@@ -75,7 +76,7 @@ func retryableSetup(t *testing.T, modifyNodeConfig ...func(*NodeBuilder)) (
if !msgTypes[message.Message.Header.Kind] {
continue
}
- txs, err := arbos.ParseL2Transactions(message.Message, params.ArbitrumDevTestChainConfig().ChainID)
+ txs, err := arbos.ParseL2Transactions(message.Message, chaininfo.ArbitrumDevTestChainConfig().ChainID)
Require(t, err)
for _, tx := range txs {
if txTypes[tx.Type()] {
diff --git a/system_tests/seq_coordinator_test.go b/system_tests/seq_coordinator_test.go
index e7d8bf6b39..76cff95f04 100644
--- a/system_tests/seq_coordinator_test.go
+++ b/system_tests/seq_coordinator_test.go
@@ -8,7 +8,6 @@ import (
"errors"
"fmt"
"math/big"
- "net"
"testing"
"time"
@@ -153,7 +152,15 @@ func TestRedisSeqCoordinatorPriorities(t *testing.T) {
nodeForwardTarget := func(nodeNum int) int {
execNode := testNodes[nodeNum].ExecNode
- fwTarget := execNode.TxPublisher.(*gethexec.TxPreChecker).TransactionPublisher.(*gethexec.Sequencer).ForwardTarget()
+ preChecker, ok := execNode.TxPublisher.(*gethexec.TxPreChecker)
+ if !ok {
+ return -1
+ }
+ sequencer, ok := preChecker.TransactionPublisher.(*gethexec.Sequencer)
+ if !ok {
+ return -1
+ }
+ fwTarget := sequencer.ForwardTarget()
if fwTarget == "" {
return -1
}
@@ -323,7 +330,7 @@ func testCoordinatorMessageSync(t *testing.T, successCase bool) {
// nodeB doesn't sequence transactions, but adds messages related to them to its output feed.
// nodeBOutputFeedReader reads those messages from this feed and processes them.
// nodeBOutputFeedReader doesn't read messages from L1 since none of the nodes posts to L1.
- nodeBPort := testClientB.ConsensusNode.BroadcastServer.ListenerAddr().(*net.TCPAddr).Port
+ nodeBPort := testhelpers.AddrTCPPort(testClientB.ConsensusNode.BroadcastServer.ListenerAddr(), t)
nodeConfigNodeBOutputFeedReader := arbnode.ConfigDefaultL1NonSequencerTest()
nodeConfigNodeBOutputFeedReader.Feed.Input = *newBroadcastClientConfigTest(nodeBPort)
testClientNodeBOutputFeedReader, cleanupNodeBOutputFeedReader := builder.Build2ndNode(t, &SecondNodeParams{nodeConfig: nodeConfigNodeBOutputFeedReader})
diff --git a/system_tests/seq_nonce_test.go b/system_tests/seq_nonce_test.go
index c099563e29..7486b8a4ae 100644
--- a/system_tests/seq_nonce_test.go
+++ b/system_tests/seq_nonce_test.go
@@ -15,6 +15,7 @@ import (
"github.com/ethereum/go-ethereum/common"
"github.com/ethereum/go-ethereum/core"
+
"github.com/offchainlabs/nitro/util/arbmath"
)
diff --git a/system_tests/seq_pause_test.go b/system_tests/seq_pause_test.go
index 6ce464d8da..c867a98271 100644
--- a/system_tests/seq_pause_test.go
+++ b/system_tests/seq_pause_test.go
@@ -8,6 +8,7 @@ import (
"time"
"github.com/ethereum/go-ethereum/core/types"
+
"github.com/offchainlabs/nitro/execution/gethexec"
)
diff --git a/system_tests/seq_reject_test.go b/system_tests/seq_reject_test.go
index 2dbdba6804..be230e26f5 100644
--- a/system_tests/seq_reject_test.go
+++ b/system_tests/seq_reject_test.go
@@ -7,7 +7,6 @@ import (
"context"
"fmt"
"math/big"
- "net"
"strings"
"sync"
"sync/atomic"
@@ -17,9 +16,11 @@ import (
"github.com/ethereum/go-ethereum/common"
"github.com/ethereum/go-ethereum/core/types"
"github.com/ethereum/go-ethereum/params"
+
"github.com/offchainlabs/nitro/solgen/go/mocksgen"
"github.com/offchainlabs/nitro/util/arbmath"
"github.com/offchainlabs/nitro/util/colors"
+ "github.com/offchainlabs/nitro/util/testhelpers"
)
func TestSequencerRejection(t *testing.T) {
@@ -35,7 +36,7 @@ func TestSequencerRejection(t *testing.T) {
builder := NewNodeBuilder(ctx).DefaultConfig(t, false)
builder.takeOwnership = false
- port := builderSeq.L2.ConsensusNode.BroadcastServer.ListenerAddr().(*net.TCPAddr).Port
+ port := testhelpers.AddrTCPPort(builderSeq.L2.ConsensusNode.BroadcastServer.ListenerAddr(), t)
builder.nodeConfig.Feed.Input = *newBroadcastClientConfigTest(port)
cleanup := builder.Build(t)
defer cleanup()
diff --git a/system_tests/seqcompensation_test.go b/system_tests/seqcompensation_test.go
index 156ced6bfc..41133b8a42 100644
--- a/system_tests/seqcompensation_test.go
+++ b/system_tests/seqcompensation_test.go
@@ -10,6 +10,7 @@ import (
"time"
"github.com/ethereum/go-ethereum/core/types"
+
"github.com/offchainlabs/nitro/arbos/l1pricing"
)
diff --git a/system_tests/seqfeed_test.go b/system_tests/seqfeed_test.go
index 21f0755225..b757291561 100644
--- a/system_tests/seqfeed_test.go
+++ b/system_tests/seqfeed_test.go
@@ -7,7 +7,6 @@ import (
"context"
"fmt"
"math/big"
- "net"
"reflect"
"testing"
"time"
@@ -15,6 +14,7 @@ import (
"github.com/ethereum/go-ethereum/common"
"github.com/ethereum/go-ethereum/core/types"
"github.com/ethereum/go-ethereum/log"
+
"github.com/offchainlabs/nitro/arbnode"
"github.com/offchainlabs/nitro/arbos/arbostypes"
"github.com/offchainlabs/nitro/arbos/l1pricing"
@@ -61,7 +61,7 @@ func TestSequencerFeed(t *testing.T) {
defer cleanupSeq()
seqInfo, seqNode, seqClient := builderSeq.L2Info, builderSeq.L2.ConsensusNode, builderSeq.L2.Client
- port := seqNode.BroadcastServer.ListenerAddr().(*net.TCPAddr).Port
+ port := testhelpers.AddrTCPPort(seqNode.BroadcastServer.ListenerAddr(), t)
builder := NewNodeBuilder(ctx).DefaultConfig(t, false)
builder.nodeConfig.Feed.Input = *newBroadcastClientConfigTest(port)
builder.takeOwnership = false
@@ -107,7 +107,7 @@ func TestRelayedSequencerFeed(t *testing.T) {
Require(t, err)
config := relay.ConfigDefault
- port := seqNode.BroadcastServer.ListenerAddr().(*net.TCPAddr).Port
+ port := testhelpers.AddrTCPPort(seqNode.BroadcastServer.ListenerAddr(), t)
config.Node.Feed.Input = *newBroadcastClientConfigTest(port)
config.Node.Feed.Output = *newBroadcasterConfigTest()
config.Chain.ID = bigChainId.Uint64()
@@ -119,7 +119,7 @@ func TestRelayedSequencerFeed(t *testing.T) {
Require(t, err)
defer currentRelay.StopAndWait()
- port = currentRelay.GetListenerAddr().(*net.TCPAddr).Port
+ port = testhelpers.AddrTCPPort(currentRelay.GetListenerAddr(), t)
builder := NewNodeBuilder(ctx).DefaultConfig(t, false)
builder.nodeConfig.Feed.Input = *newBroadcastClientConfigTest(port)
builder.takeOwnership = false
@@ -219,7 +219,7 @@ func testLyingSequencer(t *testing.T, dasModeStr string) {
defer cleanupC()
l2clientC, nodeC := testClientC.Client, testClientC.ConsensusNode
- port := nodeC.BroadcastServer.ListenerAddr().(*net.TCPAddr).Port
+ port := testhelpers.AddrTCPPort(nodeC.BroadcastServer.ListenerAddr(), t)
// The client node, connects to lying sequencer's feed
nodeConfigB := arbnode.ConfigDefaultL1NonSequencerTest()
@@ -361,7 +361,7 @@ func testBlockHashComparison(t *testing.T, blockHash *common.Hash, mustMismatch
}
defer wsBroadcastServer.StopAndWait()
- port := wsBroadcastServer.ListenerAddr().(*net.TCPAddr).Port
+ port := testhelpers.AddrTCPPort(wsBroadcastServer.ListenerAddr(), t)
builder := NewNodeBuilder(ctx).DefaultConfig(t, true)
builder.nodeConfig.Feed.Input = *newBroadcastClientConfigTest(port)
@@ -468,7 +468,7 @@ func TestPopulateFeedBacklog(t *testing.T) {
// Creates a sink node that will read from the output feed of the previous node.
nodeConfigSink := builder.nodeConfig
- port := builder.L2.ConsensusNode.BroadcastServer.ListenerAddr().(*net.TCPAddr).Port
+ port := testhelpers.AddrTCPPort(builder.L2.ConsensusNode.BroadcastServer.ListenerAddr(), t)
nodeConfigSink.Feed.Input = *newBroadcastClientConfigTest(port)
testClientSink, cleanupSink := builder.Build2ndNode(t, &SecondNodeParams{nodeConfig: nodeConfigSink})
defer cleanupSink()
diff --git a/system_tests/state_fuzz_test.go b/system_tests/state_fuzz_test.go
index c8312350e6..8388e8417c 100644
--- a/system_tests/state_fuzz_test.go
+++ b/system_tests/state_fuzz_test.go
@@ -20,6 +20,7 @@ import (
"github.com/ethereum/go-ethereum/core/state"
"github.com/ethereum/go-ethereum/core/types"
"github.com/ethereum/go-ethereum/params"
+
"github.com/offchainlabs/nitro/arbcompress"
"github.com/offchainlabs/nitro/arbos"
"github.com/offchainlabs/nitro/arbos/arbosState"
@@ -27,6 +28,7 @@ import (
"github.com/offchainlabs/nitro/arbos/l2pricing"
"github.com/offchainlabs/nitro/arbstate"
"github.com/offchainlabs/nitro/arbstate/daprovider"
+ "github.com/offchainlabs/nitro/cmd/chaininfo"
"github.com/offchainlabs/nitro/statetransfer"
"github.com/offchainlabs/nitro/util/testhelpers/env"
)
@@ -135,7 +137,7 @@ func FuzzStateTransition(f *testing.F) {
return
}
chainDb := rawdb.NewMemoryDatabase()
- chainConfig := params.ArbitrumRollupGoerliTestnetChainConfig()
+ chainConfig := chaininfo.ArbitrumRollupGoerliTestnetChainConfig()
serializedChainConfig, err := json.Marshal(chainConfig)
if err != nil {
panic(err)
@@ -206,7 +208,7 @@ func FuzzStateTransition(f *testing.F) {
}
numberOfMessageRunModes := uint8(core.MessageReplayMode) + 1 // TODO update number of run modes when new mode is added
runMode := core.MessageRunMode(runModeSeed % numberOfMessageRunModes)
- _, err = BuildBlock(statedb, genesis, noopChainContext{}, params.ArbitrumOneChainConfig(), inbox, seqBatch, runMode)
+ _, err = BuildBlock(statedb, genesis, noopChainContext{}, chaininfo.ArbitrumOneChainConfig(), inbox, seqBatch, runMode)
if err != nil {
// With the fixed header it shouldn't be possible to read a delayed message,
// and no other type of error should be possible.
diff --git a/system_tests/staterecovery_test.go b/system_tests/staterecovery_test.go
index 42faee7e0d..d5ed3fcd33 100644
--- a/system_tests/staterecovery_test.go
+++ b/system_tests/staterecovery_test.go
@@ -10,6 +10,7 @@ import (
"github.com/ethereum/go-ethereum/core/types"
"github.com/ethereum/go-ethereum/node"
"github.com/ethereum/go-ethereum/trie"
+
"github.com/offchainlabs/nitro/cmd/conf"
"github.com/offchainlabs/nitro/cmd/staterecovery"
"github.com/offchainlabs/nitro/execution/gethexec"
diff --git a/system_tests/stylus_trace_test.go b/system_tests/stylus_trace_test.go
index 52039df460..fe5de21dad 100644
--- a/system_tests/stylus_trace_test.go
+++ b/system_tests/stylus_trace_test.go
@@ -10,12 +10,14 @@ import (
"math/big"
"testing"
+ "github.com/holiman/uint256"
+
"github.com/ethereum/go-ethereum/common"
"github.com/ethereum/go-ethereum/core/types"
"github.com/ethereum/go-ethereum/core/vm"
"github.com/ethereum/go-ethereum/crypto"
"github.com/ethereum/go-ethereum/eth/tracers/logger"
- "github.com/holiman/uint256"
+
"github.com/offchainlabs/nitro/arbos/util"
"github.com/offchainlabs/nitro/solgen/go/mocksgen"
"github.com/offchainlabs/nitro/solgen/go/precompilesgen"
diff --git a/system_tests/stylus_tracer_test.go b/system_tests/stylus_tracer_test.go
index 7fda39f04e..b833d7df17 100644
--- a/system_tests/stylus_tracer_test.go
+++ b/system_tests/stylus_tracer_test.go
@@ -7,9 +7,11 @@ import (
"encoding/binary"
"testing"
+ "github.com/google/go-cmp/cmp"
+
"github.com/ethereum/go-ethereum/common"
"github.com/ethereum/go-ethereum/core/vm"
- "github.com/google/go-cmp/cmp"
+
"github.com/offchainlabs/nitro/execution/gethexec"
"github.com/offchainlabs/nitro/solgen/go/mocksgen"
"github.com/offchainlabs/nitro/util/containers"
diff --git a/system_tests/test_info.go b/system_tests/test_info.go
index 6313e392ca..105d491006 100644
--- a/system_tests/test_info.go
+++ b/system_tests/test_info.go
@@ -11,16 +11,16 @@ import (
"sync/atomic"
"testing"
- "github.com/offchainlabs/nitro/arbos/l2pricing"
- "github.com/offchainlabs/nitro/util"
-
"github.com/ethereum/go-ethereum/accounts/abi/bind"
"github.com/ethereum/go-ethereum/common"
"github.com/ethereum/go-ethereum/core/types"
"github.com/ethereum/go-ethereum/crypto"
"github.com/ethereum/go-ethereum/log"
"github.com/ethereum/go-ethereum/params"
+
+ "github.com/offchainlabs/nitro/arbos/l2pricing"
"github.com/offchainlabs/nitro/statetransfer"
+ "github.com/offchainlabs/nitro/util"
)
var simulatedChainID = big.NewInt(1337)
diff --git a/system_tests/triedb_race_test.go b/system_tests/triedb_race_test.go
index 7828cf386d..78a7258aea 100644
--- a/system_tests/triedb_race_test.go
+++ b/system_tests/triedb_race_test.go
@@ -11,6 +11,7 @@ import (
"github.com/ethereum/go-ethereum/core/rawdb"
"github.com/ethereum/go-ethereum/log"
"github.com/ethereum/go-ethereum/rpc"
+
"github.com/offchainlabs/nitro/util/testhelpers"
)
diff --git a/system_tests/twonodeslong_test.go b/system_tests/twonodeslong_test.go
index 60707b83fb..5791661b16 100644
--- a/system_tests/twonodeslong_test.go
+++ b/system_tests/twonodeslong_test.go
@@ -14,10 +14,10 @@ import (
"testing"
"time"
+ "github.com/ethereum/go-ethereum/core/types"
+
"github.com/offchainlabs/nitro/arbos/l2pricing"
"github.com/offchainlabs/nitro/arbutil"
-
- "github.com/ethereum/go-ethereum/core/types"
)
func testTwoNodesLong(t *testing.T, dasModeStr string) {
diff --git a/system_tests/unsupported_txtypes_test.go b/system_tests/unsupported_txtypes_test.go
index a228cb2454..6e92243c85 100644
--- a/system_tests/unsupported_txtypes_test.go
+++ b/system_tests/unsupported_txtypes_test.go
@@ -13,10 +13,11 @@ import (
"math/big"
"testing"
+ "github.com/holiman/uint256"
+
"github.com/ethereum/go-ethereum/common"
"github.com/ethereum/go-ethereum/core/types"
"github.com/ethereum/go-ethereum/params"
- "github.com/holiman/uint256"
)
func TestBlobAndInternalTxsReject(t *testing.T) {
diff --git a/system_tests/validation_mock_test.go b/system_tests/validation_mock_test.go
index 912b48ea6a..ad19203093 100644
--- a/system_tests/validation_mock_test.go
+++ b/system_tests/validation_mock_test.go
@@ -13,6 +13,7 @@ import (
"github.com/ethereum/go-ethereum/ethdb"
"github.com/ethereum/go-ethereum/node"
"github.com/ethereum/go-ethereum/rpc"
+
"github.com/offchainlabs/nitro/arbnode"
"github.com/offchainlabs/nitro/arbos/arbostypes"
"github.com/offchainlabs/nitro/arbutil"
@@ -21,11 +22,10 @@ import (
"github.com/offchainlabs/nitro/util/containers"
"github.com/offchainlabs/nitro/util/rpcclient"
"github.com/offchainlabs/nitro/validator"
+ validatorclient "github.com/offchainlabs/nitro/validator/client"
"github.com/offchainlabs/nitro/validator/server_api"
"github.com/offchainlabs/nitro/validator/server_arb"
"github.com/offchainlabs/nitro/validator/valnode"
-
- validatorclient "github.com/offchainlabs/nitro/validator/client"
)
type mockSpawner struct {
diff --git a/system_tests/wrap_transaction_test.go b/system_tests/wrap_transaction_test.go
index 36052fb2db..dd68c25d6a 100644
--- a/system_tests/wrap_transaction_test.go
+++ b/system_tests/wrap_transaction_test.go
@@ -18,6 +18,7 @@ import (
"github.com/ethereum/go-ethereum/ethclient"
"github.com/ethereum/go-ethereum/log"
"github.com/ethereum/go-ethereum/rpc"
+
"github.com/offchainlabs/nitro/arbutil"
"github.com/offchainlabs/nitro/solgen/go/precompilesgen"
"github.com/offchainlabs/nitro/util/headerreader"
diff --git a/util/arbmath/bits.go b/util/arbmath/bits.go
index 1b91e2755a..501ef9787e 100644
--- a/util/arbmath/bits.go
+++ b/util/arbmath/bits.go
@@ -6,8 +6,9 @@ package arbmath
import (
"encoding/binary"
- "github.com/ethereum/go-ethereum/common"
"github.com/holiman/uint256"
+
+ "github.com/ethereum/go-ethereum/common"
)
type bytes32 = common.Hash
diff --git a/util/arbmath/math_test.go b/util/arbmath/math_test.go
index 3660f3657e..befa7813e1 100644
--- a/util/arbmath/math_test.go
+++ b/util/arbmath/math_test.go
@@ -11,6 +11,7 @@ import (
"testing"
"github.com/ethereum/go-ethereum/common"
+
"github.com/offchainlabs/nitro/util/testhelpers"
)
diff --git a/util/blobs/blobs.go b/util/blobs/blobs.go
index f5914edd2e..cae9c7d30f 100644
--- a/util/blobs/blobs.go
+++ b/util/blobs/blobs.go
@@ -118,7 +118,7 @@ func ComputeCommitmentsAndHashes(blobs []kzg4844.Blob) ([]kzg4844.Commitment, []
for i := range blobs {
var err error
- commitments[i], err = kzg4844.BlobToCommitment(blobs[i])
+ commitments[i], err = kzg4844.BlobToCommitment(&blobs[i])
if err != nil {
return nil, nil, err
}
@@ -135,7 +135,7 @@ func ComputeBlobProofs(blobs []kzg4844.Blob, commitments []kzg4844.Commitment) (
proofs := make([]kzg4844.Proof, len(blobs))
for i := range blobs {
var err error
- proofs[i], err = kzg4844.ComputeBlobProof(blobs[i], commitments[i])
+ proofs[i], err = kzg4844.ComputeBlobProof(&blobs[i], commitments[i])
if err != nil {
return nil, err
}
diff --git a/util/containers/syncmap.go b/util/containers/syncmap.go
index e24d56fda6..9190d81974 100644
--- a/util/containers/syncmap.go
+++ b/util/containers/syncmap.go
@@ -1,6 +1,9 @@
package containers
-import "sync"
+import (
+ "fmt"
+ "sync"
+)
type SyncMap[K any, V any] struct {
internal sync.Map
@@ -12,7 +15,11 @@ func (m *SyncMap[K, V]) Load(key K) (V, bool) {
var empty V
return empty, false
}
- return val.(V), true
+ vVal, ok := val.(V)
+ if !ok {
+ panic(fmt.Sprintf("type assertion failed on %s", val))
+ }
+ return vVal, true
}
func (m *SyncMap[K, V]) Store(key K, val V) {
@@ -27,7 +34,11 @@ func (m *SyncMap[K, V]) Delete(key K) {
func (m *SyncMap[K, V]) Keys() []K {
s := make([]K, 0)
m.internal.Range(func(k, v interface{}) bool {
- s = append(s, k.(K))
+ kKey, ok := k.(K)
+ if !ok {
+ panic(fmt.Sprintf("type assertion failed on %s", k))
+ }
+ s = append(s, kKey)
return true
})
return s
diff --git a/util/contracts/address_verifier.go b/util/contracts/address_verifier.go
index eb2f862210..66686e9dc8 100644
--- a/util/contracts/address_verifier.go
+++ b/util/contracts/address_verifier.go
@@ -10,6 +10,7 @@ import (
"github.com/ethereum/go-ethereum/accounts/abi/bind"
"github.com/ethereum/go-ethereum/common"
+
"github.com/offchainlabs/nitro/solgen/go/bridgegen"
)
diff --git a/util/dbutil/dbutil.go b/util/dbutil/dbutil.go
index 6573c5742c..28a57025e9 100644
--- a/util/dbutil/dbutil.go
+++ b/util/dbutil/dbutil.go
@@ -10,9 +10,10 @@ import (
"regexp"
"github.com/cockroachdb/pebble"
+ "github.com/syndtr/goleveldb/leveldb"
+
"github.com/ethereum/go-ethereum/ethdb"
"github.com/ethereum/go-ethereum/ethdb/memorydb"
- "github.com/syndtr/goleveldb/leveldb"
)
func IsErrNotFound(err error) bool {
diff --git a/util/headerreader/blob_client.go b/util/headerreader/blob_client.go
index 4831994bba..0c92ff2e85 100644
--- a/util/headerreader/blob_client.go
+++ b/util/headerreader/blob_client.go
@@ -15,16 +15,17 @@ import (
"path"
"time"
+ "github.com/spf13/pflag"
+
"github.com/ethereum/go-ethereum/common"
"github.com/ethereum/go-ethereum/common/hexutil"
"github.com/ethereum/go-ethereum/crypto/kzg4844"
"github.com/ethereum/go-ethereum/ethclient"
"github.com/ethereum/go-ethereum/log"
+
"github.com/offchainlabs/nitro/util/blobs"
"github.com/offchainlabs/nitro/util/jsonapi"
"github.com/offchainlabs/nitro/util/pretty"
-
- "github.com/spf13/pflag"
)
type BlobClient struct {
@@ -248,7 +249,7 @@ func (b *BlobClient) blobSidecars(ctx context.Context, slot uint64, versionedHas
var proof kzg4844.Proof
copy(proof[:], blobItem.KzgProof)
- err = kzg4844.VerifyBlobProof(output[outputIdx], commitment, proof)
+ err = kzg4844.VerifyBlobProof(&output[outputIdx], commitment, proof)
if err != nil {
return nil, fmt.Errorf("failed to verify blob proof for blob at slot(%d) at index(%d), blob(%s)", slot, blobItem.Index, pretty.FirstFewChars(blobItem.Blob.String()))
}
diff --git a/util/headerreader/blob_client_test.go b/util/headerreader/blob_client_test.go
index 9735899daa..52c22e434a 100644
--- a/util/headerreader/blob_client_test.go
+++ b/util/headerreader/blob_client_test.go
@@ -11,8 +11,9 @@ import (
"reflect"
"testing"
- "github.com/offchainlabs/nitro/util/testhelpers"
"github.com/r3labs/diff/v3"
+
+ "github.com/offchainlabs/nitro/util/testhelpers"
)
func TestSaveBlobsToDisk(t *testing.T) {
diff --git a/util/headerreader/header_reader.go b/util/headerreader/header_reader.go
index 98f778dee8..f8e3bc6cd6 100644
--- a/util/headerreader/header_reader.go
+++ b/util/headerreader/header_reader.go
@@ -12,6 +12,8 @@ import (
"sync"
"time"
+ flag "github.com/spf13/pflag"
+
"github.com/ethereum/go-ethereum"
"github.com/ethereum/go-ethereum/accounts/abi/bind"
"github.com/ethereum/go-ethereum/common"
@@ -19,9 +21,9 @@ import (
"github.com/ethereum/go-ethereum/ethclient"
"github.com/ethereum/go-ethereum/log"
"github.com/ethereum/go-ethereum/rpc"
+
"github.com/offchainlabs/nitro/arbutil"
"github.com/offchainlabs/nitro/util/stopwaiter"
- flag "github.com/spf13/pflag"
)
// A regexp matching "execution reverted" errors returned from the parent chain RPC.
diff --git a/util/jsonapi/preimages_test.go b/util/jsonapi/preimages_test.go
index 3074a1e698..5b699df5fe 100644
--- a/util/jsonapi/preimages_test.go
+++ b/util/jsonapi/preimages_test.go
@@ -10,6 +10,7 @@ import (
"testing"
"github.com/ethereum/go-ethereum/common"
+
"github.com/offchainlabs/nitro/util/testhelpers"
)
diff --git a/util/merkletree/merkleAccumulator_test.go b/util/merkletree/merkleAccumulator_test.go
index d26f0244d3..95e1862b7a 100644
--- a/util/merkletree/merkleAccumulator_test.go
+++ b/util/merkletree/merkleAccumulator_test.go
@@ -10,6 +10,7 @@ import (
"github.com/ethereum/go-ethereum/common"
"github.com/ethereum/go-ethereum/crypto"
+
"github.com/offchainlabs/nitro/arbos/merkleAccumulator"
)
diff --git a/util/merkletree/merkleEventProof.go b/util/merkletree/merkleEventProof.go
index 130249cc3f..cab85dbefe 100644
--- a/util/merkletree/merkleEventProof.go
+++ b/util/merkletree/merkleEventProof.go
@@ -5,6 +5,7 @@ package merkletree
import (
"github.com/ethereum/go-ethereum/common"
+
"github.com/offchainlabs/nitro/arbos/merkleAccumulator"
)
diff --git a/util/merkletree/merkleEventProof_test.go b/util/merkletree/merkleEventProof_test.go
index 6af8479190..c0c8e777cb 100644
--- a/util/merkletree/merkleEventProof_test.go
+++ b/util/merkletree/merkleEventProof_test.go
@@ -8,6 +8,7 @@ import (
"github.com/ethereum/go-ethereum/common"
"github.com/ethereum/go-ethereum/crypto"
+
"github.com/offchainlabs/nitro/arbos/burn"
"github.com/offchainlabs/nitro/arbos/merkleAccumulator"
"github.com/offchainlabs/nitro/arbos/storage"
diff --git a/util/merkletree/merkleTree.go b/util/merkletree/merkleTree.go
index fffa9bcabc..9cf7b485d9 100644
--- a/util/merkletree/merkleTree.go
+++ b/util/merkletree/merkleTree.go
@@ -10,6 +10,7 @@ import (
"github.com/ethereum/go-ethereum/common"
"github.com/ethereum/go-ethereum/crypto"
+
"github.com/offchainlabs/nitro/arbos/util"
)
diff --git a/util/redisutil/test_redis.go b/util/redisutil/test_redis.go
index 6d493b1546..9cabfc23d6 100644
--- a/util/redisutil/test_redis.go
+++ b/util/redisutil/test_redis.go
@@ -10,6 +10,7 @@ import (
"testing"
"github.com/alicebob/miniredis/v2"
+
"github.com/offchainlabs/nitro/util/testhelpers"
)
diff --git a/util/rpcclient/rpcclient_test.go b/util/rpcclient/rpcclient_test.go
index 1a7da54774..f711747b70 100644
--- a/util/rpcclient/rpcclient_test.go
+++ b/util/rpcclient/rpcclient_test.go
@@ -9,10 +9,12 @@ import (
"testing"
"time"
- "github.com/ethereum/go-ethereum/node"
- "github.com/ethereum/go-ethereum/rpc"
"github.com/google/go-cmp/cmp"
"github.com/google/go-cmp/cmp/cmpopts"
+
+ "github.com/ethereum/go-ethereum/node"
+ "github.com/ethereum/go-ethereum/rpc"
+
"github.com/offchainlabs/nitro/util/testhelpers"
)
diff --git a/util/sharedmetrics/sharedmetrics.go b/util/sharedmetrics/sharedmetrics.go
index 9b4b3609bc..1df34d4d54 100644
--- a/util/sharedmetrics/sharedmetrics.go
+++ b/util/sharedmetrics/sharedmetrics.go
@@ -2,6 +2,7 @@ package sharedmetrics
import (
"github.com/ethereum/go-ethereum/metrics"
+
"github.com/offchainlabs/nitro/arbutil"
)
diff --git a/util/signature/sign_verify.go b/util/signature/sign_verify.go
index 5ed852bfbc..f222860d8b 100644
--- a/util/signature/sign_verify.go
+++ b/util/signature/sign_verify.go
@@ -4,9 +4,11 @@ import (
"context"
"errors"
+ flag "github.com/spf13/pflag"
+
"github.com/ethereum/go-ethereum/crypto"
+
"github.com/offchainlabs/nitro/util/contracts"
- flag "github.com/spf13/pflag"
)
type SignVerify struct {
diff --git a/util/stopwaiter/stopwaiter.go b/util/stopwaiter/stopwaiter.go
index 1e70e328eb..993768dd85 100644
--- a/util/stopwaiter/stopwaiter.go
+++ b/util/stopwaiter/stopwaiter.go
@@ -13,6 +13,7 @@ import (
"time"
"github.com/ethereum/go-ethereum/log"
+
"github.com/offchainlabs/nitro/util/containers"
)
diff --git a/util/stopwaiter/stopwaiter_test.go b/util/stopwaiter/stopwaiter_test.go
index 5319927887..c561e1f43b 100644
--- a/util/stopwaiter/stopwaiter_test.go
+++ b/util/stopwaiter/stopwaiter_test.go
@@ -9,6 +9,7 @@ import (
"time"
"github.com/ethereum/go-ethereum/log"
+
"github.com/offchainlabs/nitro/util/testhelpers"
)
diff --git a/util/testhelpers/env/env.go b/util/testhelpers/env/env.go
index 27d74465de..2a8090c212 100644
--- a/util/testhelpers/env/env.go
+++ b/util/testhelpers/env/env.go
@@ -14,7 +14,7 @@ import (
// An environment variable controls that behavior.
func GetTestStateScheme() string {
envTestStateScheme := os.Getenv("TEST_STATE_SCHEME")
- stateScheme := rawdb.PathScheme
+ stateScheme := rawdb.HashScheme
if envTestStateScheme == rawdb.PathScheme || envTestStateScheme == rawdb.HashScheme {
stateScheme = envTestStateScheme
}
diff --git a/util/testhelpers/port.go b/util/testhelpers/port.go
index d31fa41cdc..c17e9d9ec2 100644
--- a/util/testhelpers/port.go
+++ b/util/testhelpers/port.go
@@ -2,6 +2,7 @@ package testhelpers
import (
"net"
+ "testing"
)
// FreeTCPPortListener returns a listener listening on an unused local port.
@@ -15,3 +16,13 @@ func FreeTCPPortListener() (net.Listener, error) {
}
return l, nil
}
+
+// Func AddrTCPPort returns the port of a net.Addr.
+func AddrTCPPort(n net.Addr, t *testing.T) int {
+ t.Helper()
+ tcpAddr, ok := n.(*net.TCPAddr)
+ if !ok {
+ t.Fatal("Could not get TCP address net.Addr")
+ }
+ return tcpAddr.Port
+}
diff --git a/util/testhelpers/port_test.go b/util/testhelpers/port_test.go
index ef9bb18537..bb8f87b2f7 100644
--- a/util/testhelpers/port_test.go
+++ b/util/testhelpers/port_test.go
@@ -14,10 +14,18 @@ func TestFreeTCPPortListener(t *testing.T) {
if err != nil {
t.Fatal(err)
}
- if aListener.Addr().(*net.TCPAddr).Port == bListener.Addr().(*net.TCPAddr).Port {
+ aTCPAddr, ok := aListener.Addr().(*net.TCPAddr)
+ if !ok {
+ t.Fatalf("aListener.Addr() is not a *net.TCPAddr: %v", aListener.Addr())
+ }
+ bTCPAddr, ok := bListener.Addr().(*net.TCPAddr)
+ if !ok {
+ t.Fatalf("bListener.Addr() is not a *net.TCPAddr: %v", aListener.Addr())
+ }
+ if aTCPAddr.Port == bTCPAddr.Port {
t.Errorf("FreeTCPPortListener() got same port: %v, %v", aListener, bListener)
}
- if aListener.Addr().(*net.TCPAddr).Port == 0 || bListener.Addr().(*net.TCPAddr).Port == 0 {
+ if aTCPAddr.Port == 0 || bTCPAddr.Port == 0 {
t.Errorf("FreeTCPPortListener() got port 0")
}
}
diff --git a/util/testhelpers/testhelpers.go b/util/testhelpers/testhelpers.go
index d681b422bf..7f3e63a811 100644
--- a/util/testhelpers/testhelpers.go
+++ b/util/testhelpers/testhelpers.go
@@ -7,6 +7,7 @@ import (
"context"
crypto "crypto/rand"
"io"
+ "log/slog"
"math/big"
"math/rand"
"os"
@@ -17,8 +18,8 @@ import (
"github.com/ethereum/go-ethereum/common"
"github.com/ethereum/go-ethereum/log"
+
"github.com/offchainlabs/nitro/util/colors"
- "golang.org/x/exp/slog"
)
// Fail a test should an error occur
diff --git a/validator/client/redis/producer.go b/validator/client/redis/producer.go
index c5726ffe8b..4bfb721f59 100644
--- a/validator/client/redis/producer.go
+++ b/validator/client/redis/producer.go
@@ -5,10 +5,14 @@ import (
"fmt"
"sync/atomic"
+ "github.com/redis/go-redis/v9"
+ "github.com/spf13/pflag"
+
"github.com/ethereum/go-ethereum/common"
"github.com/ethereum/go-ethereum/core/rawdb"
"github.com/ethereum/go-ethereum/ethdb"
"github.com/ethereum/go-ethereum/log"
+
"github.com/offchainlabs/nitro/pubsub"
"github.com/offchainlabs/nitro/util/containers"
"github.com/offchainlabs/nitro/util/redisutil"
@@ -16,8 +20,6 @@ import (
"github.com/offchainlabs/nitro/validator"
"github.com/offchainlabs/nitro/validator/server_api"
"github.com/offchainlabs/nitro/validator/server_common"
- "github.com/redis/go-redis/v9"
- "github.com/spf13/pflag"
)
type ValidationClientConfig struct {
diff --git a/validator/client/validation_client.go b/validator/client/validation_client.go
index 934362f00a..0a6555121e 100644
--- a/validator/client/validation_client.go
+++ b/validator/client/validation_client.go
@@ -11,21 +11,19 @@ import (
"sync/atomic"
"time"
- "github.com/offchainlabs/nitro/validator"
-
- "github.com/offchainlabs/nitro/util/containers"
- "github.com/offchainlabs/nitro/util/rpcclient"
- "github.com/offchainlabs/nitro/util/stopwaiter"
-
- "github.com/offchainlabs/nitro/validator/server_api"
- "github.com/offchainlabs/nitro/validator/server_common"
-
"github.com/ethereum/go-ethereum/common"
"github.com/ethereum/go-ethereum/core/rawdb"
"github.com/ethereum/go-ethereum/ethdb"
"github.com/ethereum/go-ethereum/log"
"github.com/ethereum/go-ethereum/node"
"github.com/ethereum/go-ethereum/rpc"
+
+ "github.com/offchainlabs/nitro/util/containers"
+ "github.com/offchainlabs/nitro/util/rpcclient"
+ "github.com/offchainlabs/nitro/util/stopwaiter"
+ "github.com/offchainlabs/nitro/validator"
+ "github.com/offchainlabs/nitro/validator/server_api"
+ "github.com/offchainlabs/nitro/validator/server_common"
)
type ValidationClient struct {
diff --git a/validator/execution_state.go b/validator/execution_state.go
index 092fbe2908..b9cea8ec3b 100644
--- a/validator/execution_state.go
+++ b/validator/execution_state.go
@@ -7,6 +7,7 @@ import (
"github.com/ethereum/go-ethereum/common"
"github.com/ethereum/go-ethereum/crypto"
+
"github.com/offchainlabs/nitro/solgen/go/challengegen"
"github.com/offchainlabs/nitro/solgen/go/rollupgen"
)
diff --git a/validator/interface.go b/validator/interface.go
index 9fb831ca0d..bfccaefcfa 100644
--- a/validator/interface.go
+++ b/validator/interface.go
@@ -5,6 +5,7 @@ import (
"github.com/ethereum/go-ethereum/common"
"github.com/ethereum/go-ethereum/ethdb"
+
"github.com/offchainlabs/nitro/util/containers"
)
diff --git a/validator/server_api/json.go b/validator/server_api/json.go
index 8dfbc8446a..f56493cd92 100644
--- a/validator/server_api/json.go
+++ b/validator/server_api/json.go
@@ -11,9 +11,9 @@ import (
"github.com/ethereum/go-ethereum/common"
"github.com/ethereum/go-ethereum/ethdb"
+
"github.com/offchainlabs/nitro/arbcompress"
"github.com/offchainlabs/nitro/arbutil"
-
"github.com/offchainlabs/nitro/util/jsonapi"
"github.com/offchainlabs/nitro/validator"
)
diff --git a/validator/server_arb/execution_run.go b/validator/server_arb/execution_run.go
index d29a88d34d..270ace3180 100644
--- a/validator/server_arb/execution_run.go
+++ b/validator/server_arb/execution_run.go
@@ -11,8 +11,8 @@ import (
"github.com/ethereum/go-ethereum/common"
"github.com/ethereum/go-ethereum/crypto"
-
"github.com/ethereum/go-ethereum/log"
+
"github.com/offchainlabs/nitro/util/containers"
"github.com/offchainlabs/nitro/util/stopwaiter"
"github.com/offchainlabs/nitro/validator"
diff --git a/validator/server_arb/execution_run_test.go b/validator/server_arb/execution_run_test.go
index 479db58515..1f8e9625c1 100644
--- a/validator/server_arb/execution_run_test.go
+++ b/validator/server_arb/execution_run_test.go
@@ -6,6 +6,7 @@ import (
"testing"
"github.com/ethereum/go-ethereum/common"
+
"github.com/offchainlabs/nitro/validator"
)
diff --git a/validator/server_arb/machine.go b/validator/server_arb/machine.go
index f882fe65a6..c429fa6101 100644
--- a/validator/server_arb/machine.go
+++ b/validator/server_arb/machine.go
@@ -10,6 +10,7 @@ package server_arb
ResolvedPreimage preimageResolverC(size_t context, uint8_t preimageType, const uint8_t* hash);
*/
import "C"
+
import (
"context"
"errors"
@@ -21,6 +22,7 @@ import (
"github.com/ethereum/go-ethereum/common"
"github.com/ethereum/go-ethereum/log"
+
"github.com/offchainlabs/nitro/arbutil"
"github.com/offchainlabs/nitro/util/arbmath"
"github.com/offchainlabs/nitro/util/containers"
diff --git a/validator/server_arb/machine_loader.go b/validator/server_arb/machine_loader.go
index 13cf0f2403..8c9d37e174 100644
--- a/validator/server_arb/machine_loader.go
+++ b/validator/server_arb/machine_loader.go
@@ -4,6 +4,7 @@ import (
"context"
"github.com/ethereum/go-ethereum/common"
+
"github.com/offchainlabs/nitro/validator/server_common"
)
diff --git a/validator/server_arb/machine_test.go b/validator/server_arb/machine_test.go
index e3ffb28b42..008d757889 100644
--- a/validator/server_arb/machine_test.go
+++ b/validator/server_arb/machine_test.go
@@ -11,6 +11,7 @@ import (
"testing"
"github.com/ethereum/go-ethereum/common"
+
"github.com/offchainlabs/nitro/arbutil"
"github.com/offchainlabs/nitro/util/testhelpers"
)
diff --git a/validator/server_arb/mock_machine.go b/validator/server_arb/mock_machine.go
index 3cf0f9f771..00512d1d77 100644
--- a/validator/server_arb/mock_machine.go
+++ b/validator/server_arb/mock_machine.go
@@ -7,6 +7,7 @@ import (
"context"
"github.com/ethereum/go-ethereum/common"
+
"github.com/offchainlabs/nitro/validator"
)
diff --git a/validator/server_arb/nitro_machine.go b/validator/server_arb/nitro_machine.go
index 926b1e8930..a2f7de3153 100644
--- a/validator/server_arb/nitro_machine.go
+++ b/validator/server_arb/nitro_machine.go
@@ -9,6 +9,7 @@ package server_arb
#include
*/
import "C"
+
import (
"context"
"errors"
@@ -19,6 +20,7 @@ import (
"github.com/ethereum/go-ethereum/common"
"github.com/ethereum/go-ethereum/log"
+
"github.com/offchainlabs/nitro/validator/server_common"
)
diff --git a/validator/server_arb/prover_interface.go b/validator/server_arb/prover_interface.go
index 3010d2138d..8479a8aa8f 100644
--- a/validator/server_arb/prover_interface.go
+++ b/validator/server_arb/prover_interface.go
@@ -22,10 +22,12 @@ void AddToStringList(char** list, int index, char* val) {
}
*/
import "C"
+
import (
"unsafe"
"github.com/ethereum/go-ethereum/common"
+
"github.com/offchainlabs/nitro/validator"
)
diff --git a/validator/server_arb/validator_spawner.go b/validator/server_arb/validator_spawner.go
index 07971e2ba5..bb7fbcf97d 100644
--- a/validator/server_arb/validator_spawner.go
+++ b/validator/server_arb/validator_spawner.go
@@ -10,18 +10,18 @@ import (
"github.com/spf13/pflag"
+ "github.com/ethereum/go-ethereum/common"
+ "github.com/ethereum/go-ethereum/core/rawdb"
"github.com/ethereum/go-ethereum/ethdb"
+ "github.com/ethereum/go-ethereum/log"
+ "github.com/ethereum/go-ethereum/metrics"
+
"github.com/offchainlabs/nitro/arbutil"
"github.com/offchainlabs/nitro/util/containers"
"github.com/offchainlabs/nitro/util/stopwaiter"
"github.com/offchainlabs/nitro/validator"
"github.com/offchainlabs/nitro/validator/server_common"
"github.com/offchainlabs/nitro/validator/valnode/redis"
-
- "github.com/ethereum/go-ethereum/common"
- "github.com/ethereum/go-ethereum/core/rawdb"
- "github.com/ethereum/go-ethereum/log"
- "github.com/ethereum/go-ethereum/metrics"
)
var arbitratorValidationSteps = metrics.NewRegisteredHistogram("arbitrator/validation/steps", nil, metrics.NewBoundedHistogramSample())
diff --git a/validator/server_common/machine_loader.go b/validator/server_common/machine_loader.go
index f4633ebedf..e86589b657 100644
--- a/validator/server_common/machine_loader.go
+++ b/validator/server_common/machine_loader.go
@@ -5,6 +5,7 @@ import (
"sync"
"github.com/ethereum/go-ethereum/common"
+
"github.com/offchainlabs/nitro/util/containers"
)
diff --git a/validator/server_common/valrun.go b/validator/server_common/valrun.go
index 8486664008..9a2a6cb414 100644
--- a/validator/server_common/valrun.go
+++ b/validator/server_common/valrun.go
@@ -2,6 +2,7 @@ package server_common
import (
"github.com/ethereum/go-ethereum/common"
+
"github.com/offchainlabs/nitro/util/containers"
"github.com/offchainlabs/nitro/validator"
)
diff --git a/validator/server_jit/jit_machine.go b/validator/server_jit/jit_machine.go
index 0748101277..dc7657441e 100644
--- a/validator/server_jit/jit_machine.go
+++ b/validator/server_jit/jit_machine.go
@@ -19,6 +19,7 @@ import (
"github.com/ethereum/go-ethereum/core/rawdb"
"github.com/ethereum/go-ethereum/log"
"github.com/ethereum/go-ethereum/metrics"
+
"github.com/offchainlabs/nitro/util/arbmath"
"github.com/offchainlabs/nitro/validator"
)
diff --git a/validator/server_jit/machine_loader.go b/validator/server_jit/machine_loader.go
index 3d8b01367f..a4ccede324 100644
--- a/validator/server_jit/machine_loader.go
+++ b/validator/server_jit/machine_loader.go
@@ -10,6 +10,7 @@ import (
"time"
"github.com/ethereum/go-ethereum/common"
+
"github.com/offchainlabs/nitro/validator/server_common"
)
diff --git a/validator/server_jit/spawner.go b/validator/server_jit/spawner.go
index f30b6e181a..91b1e818f0 100644
--- a/validator/server_jit/spawner.go
+++ b/validator/server_jit/spawner.go
@@ -3,11 +3,12 @@ package server_jit
import (
"context"
"fmt"
- flag "github.com/spf13/pflag"
"runtime"
"sync/atomic"
"time"
+ flag "github.com/spf13/pflag"
+
"github.com/ethereum/go-ethereum/common"
"github.com/ethereum/go-ethereum/core/rawdb"
"github.com/ethereum/go-ethereum/ethdb"
diff --git a/validator/validation_entry.go b/validator/validation_entry.go
index 4ec6919d3b..555a4c76c7 100644
--- a/validator/validation_entry.go
+++ b/validator/validation_entry.go
@@ -3,6 +3,7 @@ package validator
import (
"github.com/ethereum/go-ethereum/common"
"github.com/ethereum/go-ethereum/ethdb"
+
"github.com/offchainlabs/nitro/arbutil"
)
diff --git a/validator/valnode/redis/consumer.go b/validator/valnode/redis/consumer.go
index 6a8efbf12b..53275a8030 100644
--- a/validator/valnode/redis/consumer.go
+++ b/validator/valnode/redis/consumer.go
@@ -6,14 +6,16 @@ import (
"runtime"
"time"
+ "github.com/spf13/pflag"
+
"github.com/ethereum/go-ethereum/common"
"github.com/ethereum/go-ethereum/log"
+
"github.com/offchainlabs/nitro/pubsub"
"github.com/offchainlabs/nitro/util/redisutil"
"github.com/offchainlabs/nitro/util/stopwaiter"
"github.com/offchainlabs/nitro/validator"
"github.com/offchainlabs/nitro/validator/server_api"
- "github.com/spf13/pflag"
)
// ValidationServer implements consumer for the requests originated from
diff --git a/validator/valnode/redis/consumer_test.go b/validator/valnode/redis/consumer_test.go
index 0ebd697f16..595aecc9ca 100644
--- a/validator/valnode/redis/consumer_test.go
+++ b/validator/valnode/redis/consumer_test.go
@@ -6,6 +6,7 @@ import (
"time"
"github.com/ethereum/go-ethereum/log"
+
"github.com/offchainlabs/nitro/util/redisutil"
"github.com/offchainlabs/nitro/util/testhelpers"
)
diff --git a/validator/valnode/valnode.go b/validator/valnode/valnode.go
index 972e11189d..e2f4f79bef 100644
--- a/validator/valnode/valnode.go
+++ b/validator/valnode/valnode.go
@@ -3,17 +3,18 @@ package valnode
import (
"context"
- "github.com/offchainlabs/nitro/validator"
+ "github.com/spf13/pflag"
"github.com/ethereum/go-ethereum/log"
"github.com/ethereum/go-ethereum/node"
"github.com/ethereum/go-ethereum/rpc"
+
+ "github.com/offchainlabs/nitro/validator"
"github.com/offchainlabs/nitro/validator/server_api"
"github.com/offchainlabs/nitro/validator/server_arb"
"github.com/offchainlabs/nitro/validator/server_common"
"github.com/offchainlabs/nitro/validator/server_jit"
"github.com/offchainlabs/nitro/validator/valnode/redis"
- "github.com/spf13/pflag"
)
type WasmConfig struct {
diff --git a/wavmio/stub.go b/wavmio/stub.go
index 0c82506ff3..01031860e9 100644
--- a/wavmio/stub.go
+++ b/wavmio/stub.go
@@ -17,6 +17,7 @@ import (
"github.com/ethereum/go-ethereum/common"
"github.com/ethereum/go-ethereum/crypto"
"github.com/ethereum/go-ethereum/log"
+
"github.com/offchainlabs/nitro/arbutil"
)
diff --git a/wsbroadcastserver/clientconnection.go b/wsbroadcastserver/clientconnection.go
index 00ae0f0dcf..2585452db7 100644
--- a/wsbroadcastserver/clientconnection.go
+++ b/wsbroadcastserver/clientconnection.go
@@ -13,14 +13,15 @@ import (
"sync/atomic"
"time"
+ "github.com/gobwas/ws"
+ "github.com/gobwas/ws/wsflate"
+ "github.com/mailru/easygo/netpoll"
+
"github.com/ethereum/go-ethereum/log"
+
"github.com/offchainlabs/nitro/arbutil"
"github.com/offchainlabs/nitro/broadcaster/backlog"
m "github.com/offchainlabs/nitro/broadcaster/message"
-
- "github.com/gobwas/ws"
- "github.com/gobwas/ws/wsflate"
- "github.com/mailru/easygo/netpoll"
"github.com/offchainlabs/nitro/util/stopwaiter"
)
diff --git a/wsbroadcastserver/connectionlimiter.go b/wsbroadcastserver/connectionlimiter.go
index e483eb545e..d086fc074e 100644
--- a/wsbroadcastserver/connectionlimiter.go
+++ b/wsbroadcastserver/connectionlimiter.go
@@ -8,9 +8,10 @@ import (
"sync"
"time"
+ flag "github.com/spf13/pflag"
+
"github.com/ethereum/go-ethereum/log"
"github.com/ethereum/go-ethereum/metrics"
- flag "github.com/spf13/pflag"
)
var (
diff --git a/wsbroadcastserver/utils.go b/wsbroadcastserver/utils.go
index 9df1d7d9ca..40ceb3e5bf 100644
--- a/wsbroadcastserver/utils.go
+++ b/wsbroadcastserver/utils.go
@@ -12,10 +12,11 @@ import (
"strings"
"time"
- "github.com/ethereum/go-ethereum/log"
"github.com/gobwas/ws"
"github.com/gobwas/ws/wsflate"
"github.com/gobwas/ws/wsutil"
+
+ "github.com/ethereum/go-ethereum/log"
)
func init() {
@@ -136,7 +137,7 @@ func ReadData(ctx context.Context, conn net.Conn, earlyFrameData io.Reader, time
var data []byte
if msg.IsCompressed() {
if !compression {
- return nil, 0, errors.New("Received compressed frame even though compression is disabled")
+ return nil, 0, errors.New("Received compressed frame even though compression extension wasn't negotiated")
}
flateReader.Reset(&reader)
data, err = io.ReadAll(flateReader)
diff --git a/wsbroadcastserver/wsbroadcastserver.go b/wsbroadcastserver/wsbroadcastserver.go
index ee21cbaae3..da9420a527 100644
--- a/wsbroadcastserver/wsbroadcastserver.go
+++ b/wsbroadcastserver/wsbroadcastserver.go
@@ -24,6 +24,7 @@ import (
"github.com/ethereum/go-ethereum/log"
"github.com/ethereum/go-ethereum/metrics"
+
"github.com/offchainlabs/nitro/arbutil"
"github.com/offchainlabs/nitro/broadcaster/backlog"
m "github.com/offchainlabs/nitro/broadcaster/message"