Skip to content

Commit

Permalink
Updates Submitter w/ Oracle fallback (#1671)
Browse files Browse the repository at this point in the history

---------

Co-authored-by: Trajan0x <[email protected]>
Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>
  • Loading branch information
3 people authored Dec 20, 2023
1 parent 77e6efb commit 530cf51
Show file tree
Hide file tree
Showing 30 changed files with 628 additions and 439 deletions.
4 changes: 2 additions & 2 deletions agents/go.mod
Original file line number Diff line number Diff line change
Expand Up @@ -74,7 +74,7 @@ require (
github.com/acomagu/bufpipe v1.0.4 // indirect
github.com/agnivade/levenshtein v1.1.1 // indirect
github.com/alecthomas/chroma v0.7.1 // indirect
github.com/andybalholm/brotli v1.0.4 // indirect
github.com/andybalholm/brotli v1.0.5 // indirect
github.com/aws/aws-sdk-go-v2 v1.18.0 // indirect
github.com/aws/aws-sdk-go-v2/config v1.18.21 // indirect
github.com/aws/aws-sdk-go-v2/credentials v1.13.20 // indirect
Expand Down Expand Up @@ -194,7 +194,7 @@ require (
github.com/juju/ansiterm v0.0.0-20180109212912-720a0952cc2a // indirect
github.com/keep-network/keep-common v1.7.1-0.20211012131917-7102d7b9c6a0 // indirect
github.com/kevinburke/ssh_config v1.2.0 // indirect
github.com/klauspost/compress v1.15.12 // indirect
github.com/klauspost/compress v1.16.0 // indirect
github.com/klauspost/cpuid/v2 v2.2.4 // indirect
github.com/kyokomi/emoji/v2 v2.2.8 // indirect
github.com/leodido/go-urn v1.2.4 // indirect
Expand Down
7 changes: 4 additions & 3 deletions agents/go.sum
Original file line number Diff line number Diff line change
Expand Up @@ -148,8 +148,9 @@ github.com/allegro/bigcache v1.2.1 h1:hg1sY1raCwic3Vnsvje6TT7/pnZba83LeFck5NrFKS
github.com/allegro/bigcache v1.2.1/go.mod h1:Cb/ax3seSYIx7SuZdm2G2xzfwmv3TPSk2ucNfQESPXM=
github.com/andreyvit/diff v0.0.0-20170406064948-c7f18ee00883 h1:bvNMNQO63//z+xNgfBlViaCIJKLlCJ6/fmUseuG0wVQ=
github.com/andreyvit/diff v0.0.0-20170406064948-c7f18ee00883/go.mod h1:rCTlJbsFo29Kk6CurOXKm700vrz8f0KW0JNfpkRJY/8=
github.com/andybalholm/brotli v1.0.4 h1:V7DdXeJtZscaqfNuAdSRuRFzuiKlHSC/Zh3zl9qY3JY=
github.com/andybalholm/brotli v1.0.4/go.mod h1:fO7iG3H7G2nSZ7m0zPUDn85XEX2GTukHGRSepvi9Eig=
github.com/andybalholm/brotli v1.0.5 h1:8uQZIdzKmjc/iuPu7O2ioW48L81FgatrcpfFmiq/cCs=
github.com/andybalholm/brotli v1.0.5/go.mod h1:fO7iG3H7G2nSZ7m0zPUDn85XEX2GTukHGRSepvi9Eig=
github.com/anmitsu/go-shlex v0.0.0-20161002113705-648efa622239/go.mod h1:2FmKhYUyUczH0OGQWaF5ceTx0UBShxjsH6f8oGKYe2c=
github.com/anmitsu/go-shlex v0.0.0-20200514113438-38f4b401e2be h1:9AeTilPcZAjCFIImctFaOjnTIavg87rW78vTPkQqLI8=
github.com/antihax/optional v1.0.0/go.mod h1:uupD/76wgC+ih3iEmQUL+0Ugr19nfwCT1kdvxnR2qWY=
Expand Down Expand Up @@ -815,8 +816,8 @@ github.com/kkdai/bstream v0.0.0-20161212061736-f391b8402d23/go.mod h1:J+Gs4SYgM6
github.com/klauspost/compress v1.4.0/go.mod h1:RyIbtBH6LamlWaDj8nUwkbUhJ87Yi3uG0guNDohfE1A=
github.com/klauspost/compress v1.15.0/go.mod h1:/3/Vjq9QcHkK5uEr5lBEmyoZ1iFhe47etQ6QUkpK6sk=
github.com/klauspost/compress v1.15.9/go.mod h1:PhcZ0MbTNciWF3rruxRgKxI5NkcHHrHUDtV4Yw2GlzU=
github.com/klauspost/compress v1.15.12 h1:YClS/PImqYbn+UILDnqxQCZ3RehC9N318SU3kElDUEM=
github.com/klauspost/compress v1.15.12/go.mod h1:QPwzmACJjUTFsnSHH934V6woptycfrDDJnH7hvFVbGM=
github.com/klauspost/compress v1.16.0 h1:iULayQNOReoYUe+1qtKOqw9CwJv3aNQu8ivo7lw1HU4=
github.com/klauspost/compress v1.16.0/go.mod h1:ntbaceVETuRiXiv4DpjP66DpAtAGkEQskQzEyD//IeE=
github.com/klauspost/cpuid v0.0.0-20170728055534-ae7887de9fa5/go.mod h1:Pj4uuM528wm8OyEC2QMXAi2YiTZ96dNQPGgoMS4s3ek=
github.com/klauspost/cpuid v1.2.1/go.mod h1:Pj4uuM528wm8OyEC2QMXAi2YiTZ96dNQPGgoMS4s3ek=
github.com/klauspost/cpuid/v2 v2.0.9/go.mod h1:FInQzS24/EEf25PyTYn52gqo7WaD8xa0213Md/qVLRg=
Expand Down
8 changes: 6 additions & 2 deletions agents/types/utils.go
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@ package types
import (
"context"
"fmt"
"math/big"

"github.com/ethereum/go-ethereum/common"
"github.com/ethereum/go-ethereum/crypto"
Expand All @@ -27,9 +28,12 @@ func signEncoder(ctx context.Context, signer signer.Signer, encoder Encoder, sal
}

// Sign the message.
signature, err := signer.SignMessage(ctx, core.BytesToSlice(hashedDigest), false)
sig, err := signer.SignMessage(ctx, core.BytesToSlice(hashedDigest), false)
if err != nil {
return nil, nil, common.Hash{}, fmt.Errorf("could not sign: %w", err)
}
return signature, encoded, hashedDigest, nil

sig = NewSignature(new(big.Int).Add(big.NewInt(27), sig.V()), sig.R(), sig.S())

return sig, encoded, hashedDigest, nil
}
2 changes: 1 addition & 1 deletion contrib/promexporter/config/config.go
Original file line number Diff line number Diff line change
Expand Up @@ -99,7 +99,7 @@ func DecodeConfig(filePath string) (_ Config, err error) {
Name: "messenger",
},
{
Address: "0x0a1e1d0eb6a1cef79e46f0e2d35b7bf2e958a26a",
Address: "0x49357ba0Ef3a8daC25903472eEe45C41221D4F9a",
Name: "cctp",
ChainIDs: types.ToInts(types.ETH, types.ARBITRUM, types.AVALANCHE, types.OPTIMISM),
},
Expand Down
2 changes: 1 addition & 1 deletion contrib/terraform-provider-helmproxy/go.mod
Original file line number Diff line number Diff line change
Expand Up @@ -127,7 +127,7 @@ require (
github.com/json-iterator/go v1.1.12 // indirect
github.com/kevinburke/ssh_config v1.2.0 // indirect
github.com/kirsle/configdir v0.0.0-20170128060238-e45d2f54772f // indirect
github.com/klauspost/compress v1.15.12 // indirect
github.com/klauspost/compress v1.16.0 // indirect
github.com/kylelemons/godebug v1.1.0 // indirect
github.com/lann/builder v0.0.0-20180802200727-47ae307949d0 // indirect
github.com/lann/ps v0.0.0-20150810152359-62de8c46ede0 // indirect
Expand Down
4 changes: 2 additions & 2 deletions contrib/terraform-provider-helmproxy/go.sum
Original file line number Diff line number Diff line change
Expand Up @@ -764,8 +764,8 @@ github.com/kisielk/errcheck v1.6.0/go.mod h1:pFxgyoBC7bSaBwPgfKdkLd5X25qrDl4LWUI
github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck=
github.com/klauspost/compress v1.10.7/go.mod h1:aoV0uJVorq1K+umq18yTdKaF57EivdYsUV+/s2qKfXs=
github.com/klauspost/compress v1.11.0/go.mod h1:aoV0uJVorq1K+umq18yTdKaF57EivdYsUV+/s2qKfXs=
github.com/klauspost/compress v1.15.12 h1:YClS/PImqYbn+UILDnqxQCZ3RehC9N318SU3kElDUEM=
github.com/klauspost/compress v1.15.12/go.mod h1:QPwzmACJjUTFsnSHH934V6woptycfrDDJnH7hvFVbGM=
github.com/klauspost/compress v1.16.0 h1:iULayQNOReoYUe+1qtKOqw9CwJv3aNQu8ivo7lw1HU4=
github.com/klauspost/compress v1.16.0/go.mod h1:ntbaceVETuRiXiv4DpjP66DpAtAGkEQskQzEyD//IeE=
github.com/konsorten/go-windows-terminal-sequences v1.0.1/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ=
github.com/konsorten/go-windows-terminal-sequences v1.0.2/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ=
github.com/konsorten/go-windows-terminal-sequences v1.0.3/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ=
Expand Down
89 changes: 45 additions & 44 deletions ethergo/backends/anvil/anvil.go
Original file line number Diff line number Diff line change
Expand Up @@ -135,6 +135,7 @@ func NewAnvilBackend(ctx context.Context, t *testing.T, args *OptionBuilder) *Ba
return fmt.Errorf("failed to connect")
}

// nolint: staticcheck
res, err := rpcClient.ChainID(ctx)
if err != nil {
return fmt.Errorf("failed to get chain id: %w", err)
Expand Down Expand Up @@ -263,7 +264,7 @@ func setupOtterscan(ctx context.Context, tb testing.TB, pool *dockertest.Pool, a
var logger = log.Logger("anvil-docker")

// storeWallets stores preseeded wallets w/ balances.
func (f *Backend) storeWallets(args *OptionBuilder) error {
func (b *Backend) storeWallets(args *OptionBuilder) error {
derivationPath := args.GetDerivationPath()
derivIter := accounts.DefaultIterator(derivationPath)
maxAccounts := args.GetAccounts()
Expand All @@ -275,7 +276,7 @@ func (f *Backend) storeWallets(args *OptionBuilder) error {
return fmt.Errorf("could not get seed phrase: %w", err)
}

f.store.Store(walletToKey(f.Backend.T(), wall))
b.store.Store(walletToKey(b.Backend.T(), wall))
}
return nil
}
Expand All @@ -299,31 +300,31 @@ func walletToKey(tb testing.TB, wall wallet.Wallet) *keystore.Key {
}

// ChainConfig gets the chain config.
func (f *Backend) ChainConfig() *params.ChainConfig {
return f.chainConfig
func (b *Backend) ChainConfig() *params.ChainConfig {
return b.chainConfig
}

// Signer gets the signer for the chain.
func (f *Backend) Signer() types.Signer {
latestBlock, err := f.BlockNumber(f.Context())
require.Nil(f.T(), err)
func (b *Backend) Signer() types.Signer {
latestBlock, err := b.BlockNumber(b.Context())
require.Nil(b.T(), err)

return types.MakeSigner(f.ChainConfig(), new(big.Int).SetUint64(latestBlock))
return types.MakeSigner(b.ChainConfig(), new(big.Int).SetUint64(latestBlock))
}

// FundAccount funds an account with the given amount.
func (f *Backend) FundAccount(ctx context.Context, address common.Address, amount big.Int) {
ctx, cancel := onecontext.Merge(ctx, f.Context())
func (b *Backend) FundAccount(ctx context.Context, address common.Address, amount big.Int) {
ctx, cancel := onecontext.Merge(ctx, b.Context())
defer cancel()

anvilClient, err := Dial(ctx, f.RPCAddress())
require.Nilf(f.T(), err, "failed to dial anvil client on chain %d: %v", f.GetChainID(), err)
anvilClient, err := Dial(ctx, b.RPCAddress())
require.Nilf(b.T(), err, "failed to dial anvil client on chain %d: %v", b.GetChainID(), err)

unlocker := f.fundingMux.Lock(address)
unlocker := b.fundingMux.Lock(address)
defer unlocker.Unlock()

prevBalance, err := f.Backend.BalanceAt(ctx, address, nil)
require.Nil(f.T(), err)
prevBalance, err := b.Backend.BalanceAt(ctx, address, nil)
require.Nil(b.T(), err)

newBal := new(big.Int).Add(prevBalance, &amount)

Expand All @@ -338,13 +339,13 @@ func (f *Backend) FundAccount(ctx context.Context, address common.Address, amoun

// TODO: this may cause issues when newBal overflows uint64
err = anvilClient.SetBalance(ctx, address, newBal.Uint64())
require.Nil(f.T(), err)
require.Nil(b.T(), err)
}

// WaitForConfirmation checks confirmation if the transaction is signed.
// nolint: cyclop
func (f *Backend) WaitForConfirmation(ctx context.Context, tx *types.Transaction) {
require.NotNil(f.T(), tx, "tx is nil")
func (b *Backend) WaitForConfirmation(ctx context.Context, tx *types.Transaction) {
require.NotNil(b.T(), tx, "tx is nil")
v, r, s := tx.RawSignatureValues()
isUnsigned := isZero(v) && isZero(r) && isZero(s)
if isUnsigned {
Expand All @@ -354,48 +355,48 @@ func (f *Backend) WaitForConfirmation(ctx context.Context, tx *types.Transaction
return
}

f.Backend.WaitForConfirmation(ctx, tx)
b.Backend.WaitForConfirmation(ctx, tx)
}

func isZero(val *big.Int) bool {
return val.Cmp(big.NewInt(0)) == 0
}

// GetFundedAccount gets a funded account.
func (f *Backend) GetFundedAccount(ctx context.Context, requestBalance *big.Int) *keystore.Key {
key := f.MockAccount()
func (b *Backend) GetFundedAccount(ctx context.Context, requestBalance *big.Int) *keystore.Key {
key := b.MockAccount()

f.store.Store(key)
b.store.Store(key)

f.FundAccount(ctx, key.Address, *requestBalance)
b.FundAccount(ctx, key.Address, *requestBalance)

return key
}

// GetTxContext gets the tx context for the given address.
// TODO: dedupe w/ geth.
func (f *Backend) GetTxContext(ctx context.Context, address *common.Address) (res backends.AuthType) {
ctx, cancel := onecontext.Merge(ctx, f.Context())
func (b *Backend) GetTxContext(ctx context.Context, address *common.Address) (res backends.AuthType) {
ctx, cancel := onecontext.Merge(ctx, b.Context())
defer cancel()

var acct *keystore.Key
// TODO handle storing accounts to conform to get tx context
if address != nil {
acct = f.store.GetAccount(*address)
acct = b.store.GetAccount(*address)
if acct == nil {
f.T().Errorf("could not get account %s", address.String())
b.T().Errorf("could not get account %s", address.String())
return res
}
} else {
acct = f.GetFundedAccount(ctx, new(big.Int).SetUint64(math.MaxUint64))
f.store.Store(acct)
acct = b.GetFundedAccount(ctx, new(big.Int).SetUint64(math.MaxUint64))
b.store.Store(acct)
}

auth, err := f.NewKeyedTransactorFromKey(acct.PrivateKey)
require.Nilf(f.T(), err, "could not get transactor for chain %d: %v", f.GetChainID(), err)
auth, err := b.NewKeyedTransactorFromKey(acct.PrivateKey)
require.Nilf(b.T(), err, "could not get transactor for chain %d: %v", b.GetChainID(), err)

auth.GasPrice, err = f.SuggestGasPrice(ctx)
require.Nilf(f.T(), err, "could not get gas price for chain %d: %v", f.GetChainID(), err)
auth.GasPrice, err = b.SuggestGasPrice(ctx)
require.Nilf(b.T(), err, "could not get gas price for chain %d: %v", b.GetChainID(), err)

auth.GasLimit = gasLimit

Expand All @@ -412,21 +413,21 @@ func (f *Backend) GetTxContext(ctx context.Context, address *common.Address) (re
// in the meantime, this may cause race conditions.
//
// We also print a warning message to the console as an added precaution.
func (f *Backend) ImpersonateAccount(ctx context.Context, address common.Address, transact func(opts *bind.TransactOpts) *types.Transaction) error {
f.impersonationMux.Lock()
defer f.impersonationMux.Unlock()
func (b *Backend) ImpersonateAccount(ctx context.Context, address common.Address, transact func(opts *bind.TransactOpts) *types.Transaction) error {
b.impersonationMux.Lock()
defer b.impersonationMux.Unlock()

f.warnImpersonation()
b.warnImpersonation()

anvilClient, err := Dial(ctx, f.RPCAddress())
require.Nilf(f.T(), err, "could not dial anvil client rpc at %s for chain %d: %v", f.RPCAddress(), f.GetChainID(), err)
anvilClient, err := Dial(ctx, b.RPCAddress())
require.Nilf(b.T(), err, "could not dial anvil client rpc at %s for chain %d: %v", b.RPCAddress(), b.GetChainID(), err)

err = anvilClient.ImpersonateAccount(ctx, address)
require.Nilf(f.T(), err, "could not impersonate account %s for chain %d: %v", address.String(), f.GetChainID(), err)
require.Nilf(b.T(), err, "could not impersonate account %s for chain %d: %v", address.String(), b.GetChainID(), err)

defer func() {
err = anvilClient.StopImpersonatingAccount(ctx, address)
require.Nilf(f.T(), err, "could not stop impersonating account %s for chain %d: %v", address.String(), f.GetChainID(), err)
require.Nilf(b.T(), err, "could not stop impersonating account %s for chain %d: %v", address.String(), b.GetChainID(), err)
}()

tx := transact(&bind.TransactOpts{
Expand All @@ -439,14 +440,14 @@ func (f *Backend) ImpersonateAccount(ctx context.Context, address common.Address

// TODO: test both legacy and dynamic tx types
err = anvilClient.SendUnsignedTransaction(ctx, address, tx)
require.Nilf(f.T(), err, "could not send unsigned transaction for chain %d: %v from %s", f.GetChainID(), err, address.String())
require.Nilf(b.T(), err, "could not send unsigned transaction for chain %d: %v from %s", b.GetChainID(), err, address.String())

return nil
}

func (f *Backend) warnImpersonation() {
func (b *Backend) warnImpersonation() {
warnImpersonationOnce.Do(func() {
f.T().Logf(`
b.T().Logf(`
Using Account Impersonation.
WARNING: This cannot be called concurrently with other impersonation calls.
Please make sure your callers are concurrency safe against account impersonation.
Expand Down
1 change: 1 addition & 0 deletions ethergo/backends/base/base.go
Original file line number Diff line number Diff line change
Expand Up @@ -103,6 +103,7 @@ func (b *Backend) EnableTenderly() bool {
}

// Client fetches an eth client fro the backend.
// nolint: staticcheck
func (b *Backend) Client() client.EVMClient {
return b.Chain
}
Expand Down
1 change: 1 addition & 0 deletions ethergo/backends/simulated/chain.go
Original file line number Diff line number Diff line change
Expand Up @@ -134,4 +134,5 @@ func (s Client) SuggestGasPrice(ctx context.Context) (gasPrice *big.Int, err err
return big.NewInt(0).Add(estimatedPrice, baseFee), nil
}

// nolint: staticcheck
var _ client.EVMClient = &Client{}
1 change: 1 addition & 0 deletions ethergo/chain/chain_impl.go
Original file line number Diff line number Diff line change
Expand Up @@ -140,6 +140,7 @@ func NewFromURL(ctx context.Context, url string) (Chain, error) {
}

// NewFromClient gets a chain from client.
// nolint: staticcheck
func NewFromClient(ctx context.Context, config *client.Config, evmClient client.EVMClient) (chain Chain, err error) {
rpcURL := ""
if len(config.RPCUrl) > 0 {
Expand Down
30 changes: 30 additions & 0 deletions ethergo/client/client.go
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,8 @@ package client

import (
"context"
"encoding/json"
"errors"
"fmt"
"github.com/ethereum/go-ethereum"
"github.com/ethereum/go-ethereum/accounts/abi/bind"
Expand Down Expand Up @@ -96,13 +98,41 @@ func (c *clientImpl) getW3Client() *w3.Client {

// BatchWithContext batches multiple w3 calls.
func (c *clientImpl) BatchWithContext(ctx context.Context, calls ...w3types.Caller) (err error) {
// Do not create an even if there are no calls
if len(calls) == 0 {
return nil
}

ctx, span := c.tracing.Tracer().Start(ctx, batchAttribute)
span.SetAttributes(parseCalls(calls))
span.SetAttributes(attribute.String(endpointAttribute, c.endpoint))

defer func() {
if errors.Is(err, w3.CallErrors{}) {
var batchErr w3.CallErrors
_ = errors.As(err, &batchErr)
for i, callErr := range batchErr {
rawReq, err := calls[i].CreateRequest()
// this already happened, so it can't be failing now.
// just error.
if err != nil {
fmt.Println("could not create request: this should never happen", err)
continue
}

params, err := json.Marshal(rawReq.Args)
if err != nil {
fmt.Println("could not marshal params: this should never happen", err)
continue
}
span.RecordError(callErr, trace.WithAttributes(attribute.String("method", rawReq.Method), attribute.String("params", string(params))))
}
metrics.EndSpan(span)
return
}
metrics.EndSpanWithErr(span, err)
}()

//nolint: wrapcheck
return c.getW3Client().CallCtx(ctx, calls...)
}
Expand Down
2 changes: 1 addition & 1 deletion ethergo/go.mod
Original file line number Diff line number Diff line change
Expand Up @@ -117,7 +117,7 @@ require (
github.com/docker/docker v20.10.23+incompatible // indirect
github.com/docker/go-connections v0.4.0 // indirect
github.com/docker/go-units v0.5.0 // indirect
github.com/dustin/go-humanize v1.0.0 // indirect
github.com/dustin/go-humanize v1.0.1 // indirect
github.com/edsrzf/mmap-go v1.0.0 // indirect
github.com/emirpasic/gods v1.18.1 // indirect
github.com/fatih/color v1.13.0 // indirect
Expand Down
3 changes: 2 additions & 1 deletion ethergo/go.sum
Original file line number Diff line number Diff line change
Expand Up @@ -329,8 +329,9 @@ github.com/docker/go-units v0.5.0 h1:69rxXcBk27SvSaaxTtLh/8llcHD8vYHT7WSdRZ/jvr4
github.com/docker/go-units v0.5.0/go.mod h1:fgPhTUdO+D/Jk86RDLlptpiXQzgHJF7gydDDbaIK4Dk=
github.com/dop251/goja v0.0.0-20200219165308-d1232e640a87/go.mod h1:Mw6PkjjMXWbTj+nnj4s3QPXq1jaT0s5pC0iFD4+BOAA=
github.com/dop251/goja v0.0.0-20200721192441-a695b0cdd498/go.mod h1:Mw6PkjjMXWbTj+nnj4s3QPXq1jaT0s5pC0iFD4+BOAA=
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/dustin/go-humanize v1.0.1 h1:GzkhY7T5VNhEkwH0PVJgjz+fX1rhBrR7pRT3mDkpeCY=
github.com/dustin/go-humanize v1.0.1/go.mod h1:Mu1zIs6XwVuF/gI1OepvI0qD18qycQx+mFykh5fBlto=
github.com/dvyukov/go-fuzz v0.0.0-20200318091601-be3528f3a813/go.mod h1:11Gm+ccJnvAhCNLlf5+cS9KjtbaD5I5zaZpFMsTHWTw=
github.com/eapache/go-resiliency v1.1.0/go.mod h1:kFI+JgMyC7bLPUVY133qvEBtVayf5mFgVsvEsIPBvNs=
github.com/eapache/go-xerial-snappy v0.0.0-20180814174437-776d5712da21/go.mod h1:+020luEh2TKB4/GOp8oxxtq0Daoen/Cii55CzbTV6DU=
Expand Down
Loading

0 comments on commit 530cf51

Please sign in to comment.