From 5a62e021e2eb833eb4987769bba5f1e5c92a24d9 Mon Sep 17 00:00:00 2001 From: Alfonso Acosta Date: Wed, 31 Jan 2024 11:05:42 +0100 Subject: [PATCH 1/5] rpc: Reduce event memory footprint (#1183) 1. Get rid of the in-memory operation index (since it was always set to zero anyways) 2. Keep events serialized while in memory (it saves quite a bit of space due to the inneficient representation of unions in golang). (cherry picked from commit 433cd44dbc897c85fadf899448acbb31da62256d) --- cmd/soroban-rpc/internal/events/cursor.go | 2 + cmd/soroban-rpc/internal/events/events.go | 40 +++++---- .../internal/events/events_test.go | 82 +++++++++---------- 3 files changed, 61 insertions(+), 63 deletions(-) diff --git a/cmd/soroban-rpc/internal/events/cursor.go b/cmd/soroban-rpc/internal/events/cursor.go index 9f37b513..3fbfbecb 100644 --- a/cmd/soroban-rpc/internal/events/cursor.go +++ b/cmd/soroban-rpc/internal/events/cursor.go @@ -20,6 +20,8 @@ type Cursor struct { // Tx is the index of the transaction within the ledger which emitted the event. Tx uint32 // Op is the index of the operation within the transaction which emitted the event. + // Note: Currently, there is no use for it (events are transaction-wide and not operation-specific) + // but we keep it in order to make the API future-proof. Op uint32 // Event is the index of the event within in the operation which emitted the event. Event uint32 diff --git a/cmd/soroban-rpc/internal/events/events.go b/cmd/soroban-rpc/internal/events/events.go index 0c5fdc83..e2c9030b 100644 --- a/cmd/soroban-rpc/internal/events/events.go +++ b/cmd/soroban-rpc/internal/events/events.go @@ -15,24 +15,16 @@ import ( "github.com/stellar/soroban-tools/cmd/soroban-rpc/internal/ledgerbucketwindow" ) -type bucket struct { - ledgerSeq uint32 - ledgerCloseTimestamp int64 - events []event -} - type event struct { - contents xdr.DiagnosticEvent - txIndex uint32 - opIndex uint32 - eventIndex uint32 + diagnosticEventXDR []byte + txIndex uint32 + eventIndex uint32 } func (e event) cursor(ledgerSeq uint32) Cursor { return Cursor{ Ledger: ledgerSeq, Tx: e.txIndex, - Op: e.opIndex, Event: e.eventIndex, } } @@ -129,7 +121,12 @@ func (m *MemoryStore) Scan(eventRange Range, f func(xdr.DiagnosticEvent, Cursor, if eventRange.End.Cmp(cur) <= 0 { return lastLedgerInWindow, nil } - if !f(event.contents, cur, timestamp) { + var diagnosticEvent xdr.DiagnosticEvent + err := xdr.SafeUnmarshal(event.diagnosticEventXDR, &diagnosticEvent) + if err != nil { + return 0, err + } + if !f(diagnosticEvent, cur, timestamp) { return lastLedgerInWindow, nil } } @@ -201,7 +198,9 @@ func (m *MemoryStore) IngestEvents(ledgerCloseMeta xdr.LedgerCloseMeta) error { BucketContent: events, } m.lock.Lock() - m.eventsByLedger.Append(bucket) + if _, err = m.eventsByLedger.Append(bucket); err != nil { + return err + } m.lock.Unlock() m.eventsDurationMetric.With(prometheus.Labels{"operation": "ingest"}). Observe(time.Since(startTime).Seconds()) @@ -241,15 +240,14 @@ func readEvents(networkPassphrase string, ledgerCloseMeta xdr.LedgerCloseMeta) ( return nil, err } for index, e := range txEvents { + diagnosticEventXDR, err := e.MarshalBinary() + if err != nil { + return nil, err + } events = append(events, event{ - contents: e, - txIndex: tx.Index, - // NOTE: we cannot really index by operation since all events - // are provided as part of the transaction. However, - // that shouldn't matter in practice since a transaction - // can only contain a single Host Function Invocation. - opIndex: 0, - eventIndex: uint32(index), + diagnosticEventXDR: diagnosticEventXDR, + txIndex: tx.Index, + eventIndex: uint32(index), }) } } diff --git a/cmd/soroban-rpc/internal/events/events_test.go b/cmd/soroban-rpc/internal/events/events_test.go index 9f6a3fe0..fc4d3c6b 100644 --- a/cmd/soroban-rpc/internal/events/events_test.go +++ b/cmd/soroban-rpc/internal/events/events_test.go @@ -1,6 +1,7 @@ package events import ( + "bytes" "testing" "github.com/stellar/go/xdr" @@ -13,24 +14,24 @@ import ( var ( ledger5CloseTime = ledgerCloseTime(5) ledger5Events = []event{ - newEvent(1, 0, 0, 100), - newEvent(1, 0, 1, 200), - newEvent(2, 0, 0, 300), - newEvent(2, 1, 0, 400), + newEvent(1, 0, 100), + newEvent(1, 1, 200), + newEvent(2, 0, 300), + newEvent(2, 1, 400), } ledger6CloseTime = ledgerCloseTime(6) ledger6Events []event = nil ledger7CloseTime = ledgerCloseTime(7) ledger7Events = []event{ - newEvent(1, 0, 0, 500), + newEvent(1, 0, 500), } ledger8CloseTime = ledgerCloseTime(8) ledger8Events = []event{ - newEvent(1, 0, 0, 600), - newEvent(2, 0, 0, 700), - newEvent(2, 0, 1, 800), - newEvent(2, 0, 2, 900), - newEvent(2, 1, 0, 1000), + newEvent(1, 0, 600), + newEvent(2, 0, 700), + newEvent(2, 1, 800), + newEvent(2, 2, 900), + newEvent(2, 3, 1000), } ) @@ -38,43 +39,39 @@ func ledgerCloseTime(seq uint32) int64 { return int64(seq)*25 + 100 } -func newEvent(txIndex, opIndex, eventIndex, val uint32) event { +func newEvent(txIndex, eventIndex, val uint32) event { v := xdr.Uint32(val) - return event{ - contents: xdr.DiagnosticEvent{ - InSuccessfulContractCall: true, - Event: xdr.ContractEvent{ - Type: xdr.ContractEventTypeSystem, - Body: xdr.ContractEventBody{ - V: 0, - V0: &xdr.ContractEventV0{ - Data: xdr.ScVal{ - Type: xdr.ScValTypeScvU32, - U32: &v, - }, + + e := xdr.DiagnosticEvent{ + InSuccessfulContractCall: true, + Event: xdr.ContractEvent{ + Type: xdr.ContractEventTypeSystem, + Body: xdr.ContractEventBody{ + V: 0, + V0: &xdr.ContractEventV0{ + Data: xdr.ScVal{ + Type: xdr.ScValTypeScvU32, + U32: &v, }, }, }, }, - txIndex: txIndex, - opIndex: opIndex, - eventIndex: eventIndex, } -} - -func mustMarshal(e xdr.DiagnosticEvent) string { - result, err := xdr.MarshalBase64(e) + diagnosticEventXDR, err := e.MarshalBinary() if err != nil { panic(err) } - return result + return event{ + diagnosticEventXDR: diagnosticEventXDR, + txIndex: txIndex, + eventIndex: eventIndex, + } } func (e event) equals(other event) bool { return e.txIndex == other.txIndex && - e.opIndex == other.opIndex && e.eventIndex == other.eventIndex && - mustMarshal(e.contents) == mustMarshal(other.contents) + bytes.Equal(e.diagnosticEventXDR, other.diagnosticEventXDR) } func eventsAreEqual(t *testing.T, a, b []event) { @@ -291,7 +288,7 @@ func TestScan(t *testing.T) { }, { Range{ - Start: Cursor{Ledger: 5, Tx: 1, Op: 2}, + Start: Cursor{Ledger: 5, Tx: 2}, ClampStart: false, End: Cursor{Ledger: 9}, ClampEnd: false, @@ -327,7 +324,7 @@ func TestScan(t *testing.T) { }, { Range{ - Start: Cursor{Ledger: 8, Tx: 2, Op: 1, Event: 0}, + Start: Cursor{Ledger: 8, Tx: 2, Event: 3}, ClampStart: false, End: MaxCursor, ClampEnd: true, @@ -336,7 +333,7 @@ func TestScan(t *testing.T) { }, { Range{ - Start: Cursor{Ledger: 8, Tx: 2, Op: 1, Event: 0}, + Start: Cursor{Ledger: 8, Tx: 2, Event: 3}, ClampStart: false, End: Cursor{Ledger: 9}, ClampEnd: false, @@ -354,9 +351,9 @@ func TestScan(t *testing.T) { }, { Range{ - Start: Cursor{Ledger: 5, Tx: 1, Op: 2}, + Start: Cursor{Ledger: 5, Tx: 2}, ClampStart: false, - End: Cursor{Ledger: 8, Tx: 1, Op: 4}, + End: Cursor{Ledger: 8, Tx: 2}, ClampEnd: false, }, concat(ledger5Events[2:], ledger6Events, ledger7Events, ledger8Events[:1]), @@ -367,11 +364,12 @@ func TestScan(t *testing.T) { iterateAll := true f := func(contractEvent xdr.DiagnosticEvent, cursor Cursor, ledgerCloseTimestamp int64) bool { require.Equal(t, ledgerCloseTime(cursor.Ledger), ledgerCloseTimestamp) + diagnosticEventXDR, err := contractEvent.MarshalBinary() + require.NoError(t, err) events = append(events, event{ - contents: contractEvent, - txIndex: cursor.Tx, - opIndex: cursor.Op, - eventIndex: cursor.Event, + diagnosticEventXDR: diagnosticEventXDR, + txIndex: cursor.Tx, + eventIndex: cursor.Event, }) return iterateAll } From 1ccb4d4d70acda4690987f80870617f01942f00f Mon Sep 17 00:00:00 2001 From: Aditya Vyas Date: Thu, 25 Jan 2024 12:11:01 -0500 Subject: [PATCH 2/5] soroban-rpc: Remove panics from internal codebase (#1167) * Remove panic - 1 * Remove panic - 2 * Remove panic - 3 * Remove panic - 4 * Small changes - 1 * undo changes in Get() func * undo changes - 2 * undo changes - 3 * add test for append error (cherry picked from commit b6671e2d02fef7063a9364cc8af17ef3152f6c20) --- .../internal/config/config_option.go | 4 +- .../internal/config/config_option_test.go | 11 ++ cmd/soroban-rpc/internal/config/log_format.go | 12 +- cmd/soroban-rpc/internal/config/options.go | 2 +- .../ledgerbucketwindow/ledgerbucketwindow.go | 6 +- .../ledgerbucketwindow_test.go | 123 +++++++----------- .../internal/transactions/transactions.go | 5 +- 7 files changed, 73 insertions(+), 90 deletions(-) diff --git a/cmd/soroban-rpc/internal/config/config_option.go b/cmd/soroban-rpc/internal/config/config_option.go index 86eab8e7..3c8ca87a 100644 --- a/cmd/soroban-rpc/internal/config/config_option.go +++ b/cmd/soroban-rpc/internal/config/config_option.go @@ -88,8 +88,6 @@ func (o *ConfigOption) setValue(i interface{}) (err error) { if o.CustomSetValue != nil { return o.CustomSetValue(o, i) } - // it's unfortunate that Set below panics when it cannot set the value.. - // we'll want to catch this so that we can alert the user nicely. defer func() { if recoverRes := recover(); recoverRes != nil { var ok bool @@ -101,7 +99,7 @@ func (o *ConfigOption) setValue(i interface{}) (err error) { } }() parser := func(option *ConfigOption, i interface{}) error { - panic(fmt.Sprintf("no parser for flag %s", o.Name)) + return errors.Errorf("no parser for flag %s", o.Name) } switch o.ConfigKey.(type) { case *bool: diff --git a/cmd/soroban-rpc/internal/config/config_option_test.go b/cmd/soroban-rpc/internal/config/config_option_test.go index 831c8865..a6309cb3 100644 --- a/cmd/soroban-rpc/internal/config/config_option_test.go +++ b/cmd/soroban-rpc/internal/config/config_option_test.go @@ -4,6 +4,7 @@ import ( "fmt" "math" "testing" + "time" "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" @@ -115,6 +116,16 @@ func TestUnassignableField(t *testing.T) { require.Contains(t, err.Error(), co.Name) } +func TestNoParserForFlag(t *testing.T) { + var co ConfigOption + var invalidKey []time.Duration + co.Name = "mykey" + co.ConfigKey = &invalidKey + err := co.setValue("abc") + require.Error(t, err) + require.Contains(t, err.Error(), "no parser for flag mykey") +} + func TestSetValue(t *testing.T) { var b bool var i int diff --git a/cmd/soroban-rpc/internal/config/log_format.go b/cmd/soroban-rpc/internal/config/log_format.go index 076e43e6..1ab4c7fc 100644 --- a/cmd/soroban-rpc/internal/config/log_format.go +++ b/cmd/soroban-rpc/internal/config/log_format.go @@ -1,6 +1,8 @@ package config -import "fmt" +import ( + "fmt" +) type LogFormat int @@ -47,13 +49,13 @@ func (f *LogFormat) UnmarshalTOML(i interface{}) error { } } -func (f LogFormat) String() string { +func (f LogFormat) String() (string, error) { switch f { case LogFormatText: - return "text" + return "text", nil case LogFormatJSON: - return "json" + return "json", nil default: - panic(fmt.Sprintf("unknown log format: %d", f)) + return "", fmt.Errorf("unknown log format: %d", f) } } diff --git a/cmd/soroban-rpc/internal/config/options.go b/cmd/soroban-rpc/internal/config/options.go index cecfb2e7..d38dd7cd 100644 --- a/cmd/soroban-rpc/internal/config/options.go +++ b/cmd/soroban-rpc/internal/config/options.go @@ -130,7 +130,7 @@ func (cfg *Config) options() ConfigOptions { return nil }, MarshalTOML: func(option *ConfigOption) (interface{}, error) { - return cfg.LogFormat.String(), nil + return cfg.LogFormat.String() }, }, { diff --git a/cmd/soroban-rpc/internal/ledgerbucketwindow/ledgerbucketwindow.go b/cmd/soroban-rpc/internal/ledgerbucketwindow/ledgerbucketwindow.go index 0d447e71..8234b607 100644 --- a/cmd/soroban-rpc/internal/ledgerbucketwindow/ledgerbucketwindow.go +++ b/cmd/soroban-rpc/internal/ledgerbucketwindow/ledgerbucketwindow.go @@ -35,12 +35,12 @@ func NewLedgerBucketWindow[T any](retentionWindow uint32) *LedgerBucketWindow[T] } // Append adds a new bucket to the window. If the window is full a bucket will be evicted and returned. -func (w *LedgerBucketWindow[T]) Append(bucket LedgerBucket[T]) *LedgerBucket[T] { +func (w *LedgerBucketWindow[T]) Append(bucket LedgerBucket[T]) (*LedgerBucket[T], error) { length := w.Len() if length > 0 { expectedLedgerSequence := w.buckets[w.start].LedgerSeq + length if expectedLedgerSequence != bucket.LedgerSeq { - panic(fmt.Errorf("ledgers not contiguous: expected ledger sequence %v but received %v", expectedLedgerSequence, bucket.LedgerSeq)) + return &LedgerBucket[T]{}, fmt.Errorf("error appending ledgers: ledgers not contiguous: expected ledger sequence %v but received %v", expectedLedgerSequence, bucket.LedgerSeq) } } @@ -57,7 +57,7 @@ func (w *LedgerBucketWindow[T]) Append(bucket LedgerBucket[T]) *LedgerBucket[T] w.start = (w.start + 1) % length } - return evicted + return evicted, nil } // Len returns the length (number of buckets in the window) diff --git a/cmd/soroban-rpc/internal/ledgerbucketwindow/ledgerbucketwindow_test.go b/cmd/soroban-rpc/internal/ledgerbucketwindow/ledgerbucketwindow_test.go index b472af0b..2e50ed6d 100644 --- a/cmd/soroban-rpc/internal/ledgerbucketwindow/ledgerbucketwindow_test.go +++ b/cmd/soroban-rpc/internal/ledgerbucketwindow/ledgerbucketwindow_test.go @@ -18,118 +18,87 @@ func TestAppend(t *testing.T) { m := NewLedgerBucketWindow[uint32](3) require.Equal(t, uint32(0), m.Len()) - // test appending first bucket of events - evicted := m.Append(bucket(5)) + // Test appending first bucket of events + evicted, err := m.Append(bucket(5)) + require.NoError(t, err) require.Nil(t, evicted) require.Equal(t, uint32(1), m.Len()) require.Equal(t, bucket(5), *m.Get(0)) - // the next bucket must follow the previous bucket (ledger 5) - - require.PanicsWithError( - t, "ledgers not contiguous: expected ledger sequence 6 but received 10", - func() { - m.Append(LedgerBucket[uint32]{ - LedgerSeq: 10, - LedgerCloseTimestamp: 100, - BucketContent: 10, - }) - }, - ) - require.PanicsWithError( - t, "ledgers not contiguous: expected ledger sequence 6 but received 4", - func() { - m.Append(LedgerBucket[uint32]{ - LedgerSeq: 4, - LedgerCloseTimestamp: 100, - BucketContent: 4, - }) - }, - ) - require.PanicsWithError( - t, "ledgers not contiguous: expected ledger sequence 6 but received 5", - func() { - m.Append(LedgerBucket[uint32]{ - LedgerSeq: 5, - LedgerCloseTimestamp: 100, - BucketContent: 5, - }) - }, - ) + // The next bucket must follow the previous bucket (ledger 5) + _, err = m.Append(LedgerBucket[uint32]{ + LedgerSeq: 10, + LedgerCloseTimestamp: 100, + BucketContent: 10, + }) + require.Errorf(t, err, "ledgers not contiguous: expected ledger sequence 6 but received 10") + + _, err = m.Append(LedgerBucket[uint32]{ + LedgerSeq: 4, + LedgerCloseTimestamp: 100, + BucketContent: 4, + }) + require.Errorf(t, err, "ledgers not contiguous: expected ledger sequence 6 but received 4") + // check that none of the calls above modified our buckets require.Equal(t, uint32(1), m.Len()) require.Equal(t, bucket(5), *m.Get(0)) - // append ledger 6 bucket, now we have two buckets filled - evicted = m.Append(bucket(6)) + // Append ledger 6 bucket, now we have two buckets filled + evicted, err = m.Append(bucket(6)) + require.NoError(t, err) require.Nil(t, evicted) require.Equal(t, uint32(2), m.Len()) require.Equal(t, bucket(5), *m.Get(0)) require.Equal(t, bucket(6), *m.Get(1)) - // the next bucket of events must follow the previous bucket (ledger 6) - require.PanicsWithError( - t, "ledgers not contiguous: expected ledger sequence 7 but received 10", - func() { - m.Append(LedgerBucket[uint32]{ - LedgerSeq: 10, - LedgerCloseTimestamp: 100, - BucketContent: 10, - }) - }, - ) - require.PanicsWithError( - t, "ledgers not contiguous: expected ledger sequence 7 but received 4", - func() { - m.Append(LedgerBucket[uint32]{ - LedgerSeq: 4, - LedgerCloseTimestamp: 100, - BucketContent: 4, - }) - }, - ) - require.PanicsWithError( - t, "ledgers not contiguous: expected ledger sequence 7 but received 5", - func() { - m.Append(LedgerBucket[uint32]{ - LedgerSeq: 5, - LedgerCloseTimestamp: 100, - BucketContent: 5, - }) - }, - ) - - // append ledger 7, now we have all three buckets filled - evicted = m.Append(bucket(7)) - require.Nil(t, evicted) + // Append ledger 7, now we have all three buckets filled + evicted, err = m.Append(bucket(7)) + require.NoError(t, err) require.Nil(t, evicted) require.Equal(t, uint32(3), m.Len()) require.Equal(t, bucket(5), *m.Get(0)) require.Equal(t, bucket(6), *m.Get(1)) require.Equal(t, bucket(7), *m.Get(2)) - // append ledger 8, but all buckets are full, so we need to evict ledger 5 - evicted = m.Append(bucket(8)) + // Append ledger 8, but all buckets are full, so we need to evict ledger 5 + evicted, err = m.Append(bucket(8)) + require.NoError(t, err) require.Equal(t, bucket(5), *evicted) require.Equal(t, uint32(3), m.Len()) require.Equal(t, bucket(6), *m.Get(0)) require.Equal(t, bucket(7), *m.Get(1)) require.Equal(t, bucket(8), *m.Get(2)) - // append ledger 9 events, but all buckets are full, so we need to evict ledger 6 - evicted = m.Append(bucket(9)) + // Append ledger 9 events, but all buckets are full, so we need to evict ledger 6 + evicted, err = m.Append(bucket(9)) + require.NoError(t, err) require.Equal(t, bucket(6), *evicted) require.Equal(t, uint32(3), m.Len()) require.Equal(t, bucket(7), *m.Get(0)) require.Equal(t, bucket(8), *m.Get(1)) require.Equal(t, bucket(9), *m.Get(2)) - // append ledger 10, but all buckets are full, so we need to evict ledger 7. + // Append ledger 10, but all buckets are full, so we need to evict ledger 7. // The start index must have wrapped around - evicted = m.Append(bucket(10)) + evicted, err = m.Append(bucket(10)) + require.NoError(t, err) require.Equal(t, bucket(7), *evicted) require.Equal(t, uint32(3), m.Len()) require.Equal(t, bucket(8), *m.Get(0)) require.Equal(t, bucket(9), *m.Get(1)) require.Equal(t, bucket(10), *m.Get(2)) } + +func TestAppendError(t *testing.T) { + m := NewLedgerBucketWindow[uint32](3) + require.Equal(t, uint32(0), m.Len()) + + evicted, err := m.Append(bucket(5)) + require.NoError(t, err) + require.Nil(t, evicted) + + evicted, err = m.Append(bucket(1)) + require.Error(t, err) + require.Contains(t, err.Error(), "error appending ledgers: ledgers not contiguous: expected ledger sequence 6 but received 1") +} diff --git a/cmd/soroban-rpc/internal/transactions/transactions.go b/cmd/soroban-rpc/internal/transactions/transactions.go index 8d58a035..5ed719ad 100644 --- a/cmd/soroban-rpc/internal/transactions/transactions.go +++ b/cmd/soroban-rpc/internal/transactions/transactions.go @@ -122,7 +122,10 @@ func (m *MemoryStore) IngestTransactions(ledgerCloseMeta xdr.LedgerCloseMeta) er m.lock.Lock() defer m.lock.Unlock() - evicted := m.transactionsByLedger.Append(bucket) + evicted, err := m.transactionsByLedger.Append(bucket) + if err != nil { + return err + } if evicted != nil { // garbage-collect evicted entries for _, evictedTxHash := range evicted.BucketContent { From 7d8e2a6972ff9debb6067eb103f9bd02924ed417 Mon Sep 17 00:00:00 2001 From: Alfonso Acosta Date: Thu, 1 Feb 2024 17:26:42 +0100 Subject: [PATCH 3/5] rpc: Store and serve the event transaction ID (#1185) (cherry picked from commit 0c77361264c08c4d785694a13fca903416b76650) --- cmd/soroban-rpc/internal/events/events.go | 10 ++++++-- .../internal/events/events_test.go | 5 ++-- .../internal/methods/get_events.go | 12 ++++++---- .../internal/methods/get_events_test.go | 24 ++++++++++++++----- 4 files changed, 37 insertions(+), 14 deletions(-) diff --git a/cmd/soroban-rpc/internal/events/events.go b/cmd/soroban-rpc/internal/events/events.go index e2c9030b..e854cd77 100644 --- a/cmd/soroban-rpc/internal/events/events.go +++ b/cmd/soroban-rpc/internal/events/events.go @@ -19,6 +19,7 @@ type event struct { diagnosticEventXDR []byte txIndex uint32 eventIndex uint32 + txHash *xdr.Hash // intentionally stored as a pointer to save memory (amortized as soon as there are two events in a transaction) } func (e event) cursor(ledgerSeq uint32) Cursor { @@ -90,13 +91,15 @@ type Range struct { ClampEnd bool } +type ScanFunction func(xdr.DiagnosticEvent, Cursor, int64, *xdr.Hash) bool + // Scan applies f on all the events occurring in the given range. // The events are processed in sorted ascending Cursor order. // If f returns false, the scan terminates early (f will not be applied on // remaining events in the range). Note that a read lock is held for the // entire duration of the Scan function so f should be written in a way // to minimize latency. -func (m *MemoryStore) Scan(eventRange Range, f func(xdr.DiagnosticEvent, Cursor, int64) bool) (uint32, error) { +func (m *MemoryStore) Scan(eventRange Range, f ScanFunction) (uint32, error) { startTime := time.Now() m.lock.RLock() defer m.lock.RUnlock() @@ -126,7 +129,7 @@ func (m *MemoryStore) Scan(eventRange Range, f func(xdr.DiagnosticEvent, Cursor, if err != nil { return 0, err } - if !f(diagnosticEvent, cur, timestamp) { + if !f(diagnosticEvent, cur, timestamp, event.txHash) { return lastLedgerInWindow, nil } } @@ -235,10 +238,12 @@ func readEvents(networkPassphrase string, ledgerCloseMeta xdr.LedgerCloseMeta) ( if !tx.Result.Successful() { continue } + txEvents, err := tx.GetDiagnosticEvents() if err != nil { return nil, err } + txHash := tx.Result.TransactionHash for index, e := range txEvents { diagnosticEventXDR, err := e.MarshalBinary() if err != nil { @@ -248,6 +253,7 @@ func readEvents(networkPassphrase string, ledgerCloseMeta xdr.LedgerCloseMeta) ( diagnosticEventXDR: diagnosticEventXDR, txIndex: tx.Index, eventIndex: uint32(index), + txHash: &txHash, }) } } diff --git a/cmd/soroban-rpc/internal/events/events_test.go b/cmd/soroban-rpc/internal/events/events_test.go index fc4d3c6b..df9b3385 100644 --- a/cmd/soroban-rpc/internal/events/events_test.go +++ b/cmd/soroban-rpc/internal/events/events_test.go @@ -83,7 +83,7 @@ func eventsAreEqual(t *testing.T, a, b []event) { func TestScanRangeValidation(t *testing.T) { m := NewMemoryStore(interfaces.MakeNoOpDeamon(), "unit-tests", 4) - assertNoCalls := func(contractEvent xdr.DiagnosticEvent, cursor Cursor, timestamp int64) bool { + assertNoCalls := func(xdr.DiagnosticEvent, Cursor, int64, *xdr.Hash) bool { t.Fatalf("unexpected call") return true } @@ -362,7 +362,7 @@ func TestScan(t *testing.T) { for _, input := range genEquivalentInputs(testCase.input) { var events []event iterateAll := true - f := func(contractEvent xdr.DiagnosticEvent, cursor Cursor, ledgerCloseTimestamp int64) bool { + f := func(contractEvent xdr.DiagnosticEvent, cursor Cursor, ledgerCloseTimestamp int64, hash *xdr.Hash) bool { require.Equal(t, ledgerCloseTime(cursor.Ledger), ledgerCloseTimestamp) diagnosticEventXDR, err := contractEvent.MarshalBinary() require.NoError(t, err) @@ -370,6 +370,7 @@ func TestScan(t *testing.T) { diagnosticEventXDR: diagnosticEventXDR, txIndex: cursor.Tx, eventIndex: cursor.Event, + txHash: hash, }) return iterateAll } diff --git a/cmd/soroban-rpc/internal/methods/get_events.go b/cmd/soroban-rpc/internal/methods/get_events.go index e5bf3628..71cad1e9 100644 --- a/cmd/soroban-rpc/internal/methods/get_events.go +++ b/cmd/soroban-rpc/internal/methods/get_events.go @@ -76,6 +76,7 @@ type EventInfo struct { Topic []string `json:"topic"` Value string `json:"value"` InSuccessfulContractCall bool `json:"inSuccessfulContractCall"` + TransactionHash string `json:"txHash"` } type GetEventsRequest struct { @@ -299,7 +300,7 @@ type GetEventsResponse struct { } type eventScanner interface { - Scan(eventRange events.Range, f func(xdr.DiagnosticEvent, events.Cursor, int64) bool) (uint32, error) + Scan(eventRange events.Range, f events.ScanFunction) (uint32, error) } type eventsRPCHandler struct { @@ -334,6 +335,7 @@ func (h eventsRPCHandler) getEvents(request GetEventsRequest) (GetEventsResponse cursor events.Cursor ledgerCloseTimestamp int64 event xdr.DiagnosticEvent + txHash *xdr.Hash } var found []entry latestLedger, err := h.scanner.Scan( @@ -343,9 +345,9 @@ func (h eventsRPCHandler) getEvents(request GetEventsRequest) (GetEventsResponse End: events.MaxCursor, ClampEnd: true, }, - func(event xdr.DiagnosticEvent, cursor events.Cursor, ledgerCloseTimestamp int64) bool { + func(event xdr.DiagnosticEvent, cursor events.Cursor, ledgerCloseTimestamp int64, txHash *xdr.Hash) bool { if request.Matches(event) { - found = append(found, entry{cursor, ledgerCloseTimestamp, event}) + found = append(found, entry{cursor, ledgerCloseTimestamp, event, txHash}) } return uint(len(found)) < limit }, @@ -363,6 +365,7 @@ func (h eventsRPCHandler) getEvents(request GetEventsRequest) (GetEventsResponse entry.event, entry.cursor, time.Unix(entry.ledgerCloseTimestamp, 0).UTC().Format(time.RFC3339), + entry.txHash.HexString(), ) if err != nil { return GetEventsResponse{}, errors.Wrap(err, "could not parse event") @@ -375,7 +378,7 @@ func (h eventsRPCHandler) getEvents(request GetEventsRequest) (GetEventsResponse }, nil } -func eventInfoForEvent(event xdr.DiagnosticEvent, cursor events.Cursor, ledgerClosedAt string) (EventInfo, error) { +func eventInfoForEvent(event xdr.DiagnosticEvent, cursor events.Cursor, ledgerClosedAt string, txHash string) (EventInfo, error) { v0, ok := event.Event.Body.GetV0() if !ok { return EventInfo{}, errors.New("unknown event version") @@ -411,6 +414,7 @@ func eventInfoForEvent(event xdr.DiagnosticEvent, cursor events.Cursor, ledgerCl Topic: topic, Value: data, InSuccessfulContractCall: event.InSuccessfulContractCall, + TransactionHash: txHash, } if event.Event.ContractId != nil { info.ContractID = strkey.MustEncode(strkey.VersionByteContract, (*event.Event.ContractId)[:]) diff --git a/cmd/soroban-rpc/internal/methods/get_events_test.go b/cmd/soroban-rpc/internal/methods/get_events_test.go index 4d15e2c0..5d1b929c 100644 --- a/cmd/soroban-rpc/internal/methods/get_events_test.go +++ b/cmd/soroban-rpc/internal/methods/get_events_test.go @@ -591,7 +591,8 @@ func TestGetEvents(t *testing.T) { ), )) } - assert.NoError(t, store.IngestEvents(ledgerCloseMetaWithEvents(1, now.Unix(), txMeta...))) + ledgerCloseMeta := ledgerCloseMetaWithEvents(1, now.Unix(), txMeta...) + assert.NoError(t, store.IngestEvents(ledgerCloseMeta)) handler := eventsRPCHandler{ scanner: store, @@ -626,6 +627,7 @@ func TestGetEvents(t *testing.T) { Topic: []string{value}, Value: value, InSuccessfulContractCall: true, + TransactionHash: ledgerCloseMeta.TransactionHash(i).HexString(), }) } assert.Equal(t, GetEventsResponse{expected, 1}, results) @@ -699,7 +701,8 @@ func TestGetEvents(t *testing.T) { ), )) } - assert.NoError(t, store.IngestEvents(ledgerCloseMetaWithEvents(1, now.Unix(), txMeta...))) + ledgerCloseMeta := ledgerCloseMetaWithEvents(1, now.Unix(), txMeta...) + assert.NoError(t, store.IngestEvents(ledgerCloseMeta)) number := xdr.Uint64(4) handler := eventsRPCHandler{ @@ -738,6 +741,7 @@ func TestGetEvents(t *testing.T) { Topic: []string{counterXdr, value}, Value: value, InSuccessfulContractCall: true, + TransactionHash: ledgerCloseMeta.TransactionHash(4).HexString(), }, } assert.Equal(t, GetEventsResponse{expected, 1}, results) @@ -792,7 +796,8 @@ func TestGetEvents(t *testing.T) { ), ), } - assert.NoError(t, store.IngestEvents(ledgerCloseMetaWithEvents(1, now.Unix(), txMeta...))) + ledgerCloseMeta := ledgerCloseMetaWithEvents(1, now.Unix(), txMeta...) + assert.NoError(t, store.IngestEvents(ledgerCloseMeta)) handler := eventsRPCHandler{ scanner: store, @@ -832,6 +837,7 @@ func TestGetEvents(t *testing.T) { Topic: []string{counterXdr, value}, Value: value, InSuccessfulContractCall: true, + TransactionHash: ledgerCloseMeta.TransactionHash(3).HexString(), }, } assert.Equal(t, GetEventsResponse{expected, 1}, results) @@ -865,7 +871,8 @@ func TestGetEvents(t *testing.T) { ), ), } - assert.NoError(t, store.IngestEvents(ledgerCloseMetaWithEvents(1, now.Unix(), txMeta...))) + ledgerCloseMeta := ledgerCloseMetaWithEvents(1, now.Unix(), txMeta...) + assert.NoError(t, store.IngestEvents(ledgerCloseMeta)) handler := eventsRPCHandler{ scanner: store, @@ -892,6 +899,7 @@ func TestGetEvents(t *testing.T) { Topic: []string{counterXdr}, Value: counterXdr, InSuccessfulContractCall: true, + TransactionHash: ledgerCloseMeta.TransactionHash(0).HexString(), }, } assert.Equal(t, GetEventsResponse{expected, 1}, results) @@ -913,7 +921,8 @@ func TestGetEvents(t *testing.T) { ), )) } - assert.NoError(t, store.IngestEvents(ledgerCloseMetaWithEvents(1, now.Unix(), txMeta...))) + ledgerCloseMeta := ledgerCloseMetaWithEvents(1, now.Unix(), txMeta...) + assert.NoError(t, store.IngestEvents(ledgerCloseMeta)) handler := eventsRPCHandler{ scanner: store, @@ -947,6 +956,7 @@ func TestGetEvents(t *testing.T) { Topic: []string{value}, Value: value, InSuccessfulContractCall: true, + TransactionHash: ledgerCloseMeta.TransactionHash(i).HexString(), }) } assert.Equal(t, GetEventsResponse{expected, 1}, results) @@ -996,7 +1006,8 @@ func TestGetEvents(t *testing.T) { ), ), } - assert.NoError(t, store.IngestEvents(ledgerCloseMetaWithEvents(5, now.Unix(), txMeta...))) + ledgerCloseMeta := ledgerCloseMetaWithEvents(5, now.Unix(), txMeta...) + assert.NoError(t, store.IngestEvents(ledgerCloseMeta)) id := &events.Cursor{Ledger: 5, Tx: 1, Op: 0, Event: 0} handler := eventsRPCHandler{ @@ -1031,6 +1042,7 @@ func TestGetEvents(t *testing.T) { Topic: []string{counterXdr}, Value: expectedXdr, InSuccessfulContractCall: true, + TransactionHash: ledgerCloseMeta.TransactionHash(i).HexString(), }) } assert.Equal(t, GetEventsResponse{expected, 5}, results) From 651e6e9b89a41a5e71912d5f62863b09ed8e5c18 Mon Sep 17 00:00:00 2001 From: Alfonso Acosta Date: Mon, 5 Feb 2024 08:58:18 -0800 Subject: [PATCH 4/5] soroban-rpc: Remove panics from internal codebase (#1167) * Remove panic - 1 * Remove panic - 2 * Remove panic - 3 * Remove panic - 4 * Small changes - 1 * undo changes in Get() func * undo changes - 2 * undo changes - 3 * add test for append error (cherry picked from commit b6671e2d02fef7063a9364cc8af17ef3152f6c20) --- .github/workflows/soroban-rpc.yml | 2 +- Cargo.lock | 69 +++++++------- Cargo.toml | 32 +++---- cmd/soroban-rpc/internal/daemon/daemon.go | 2 +- .../internal/test/docker-compose.yml | 2 +- cmd/soroban-rpc/lib/preflight/Cargo.toml | 2 +- go.mod | 36 ++++++-- go.sum | 90 ++++++++++++++++--- scripts/check-dependencies.bash | 4 +- 9 files changed, 164 insertions(+), 75 deletions(-) diff --git a/.github/workflows/soroban-rpc.yml b/.github/workflows/soroban-rpc.yml index eb1a2616..2d96467f 100644 --- a/.github/workflows/soroban-rpc.yml +++ b/.github/workflows/soroban-rpc.yml @@ -112,7 +112,7 @@ jobs: env: SOROBAN_RPC_INTEGRATION_TESTS_ENABLED: true SOROBAN_RPC_INTEGRATION_TESTS_CAPTIVE_CORE_BIN: /usr/bin/stellar-core - PROTOCOL_20_CORE_DEBIAN_PKG_VERSION: 20.1.0-1656.114b833e7.focal + PROTOCOL_20_CORE_DEBIAN_PKG_VERSION: 20.2.0-1716.rc3.34d82fc00.focal steps: - uses: actions/checkout@v3 with: diff --git a/Cargo.lock b/Cargo.lock index 938336ea..c5cc9e35 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -2369,8 +2369,8 @@ dependencies = [ [[package]] name = "soroban-builtin-sdk-macros" -version = "20.1.0" -source = "git+https://github.com/stellar/rs-soroban-env?rev=36d33cb6c986c9a8a9200b7eb04cf02e2c3f0ef4#36d33cb6c986c9a8a9200b7eb04cf02e2c3f0ef4" +version = "20.2.0" +source = "git+https://github.com/stellar/rs-soroban-env?rev=1bfc0f2a2ee134efc1e1b0d5270281d0cba61c2e#1bfc0f2a2ee134efc1e1b0d5270281d0cba61c2e" dependencies = [ "itertools 0.11.0", "proc-macro2", @@ -2440,8 +2440,8 @@ dependencies = [ [[package]] name = "soroban-env-common" -version = "20.1.0" -source = "git+https://github.com/stellar/rs-soroban-env?rev=36d33cb6c986c9a8a9200b7eb04cf02e2c3f0ef4#36d33cb6c986c9a8a9200b7eb04cf02e2c3f0ef4" +version = "20.2.0" +source = "git+https://github.com/stellar/rs-soroban-env?rev=1bfc0f2a2ee134efc1e1b0d5270281d0cba61c2e#1bfc0f2a2ee134efc1e1b0d5270281d0cba61c2e" dependencies = [ "arbitrary", "crate-git-revision 0.0.6", @@ -2457,8 +2457,8 @@ dependencies = [ [[package]] name = "soroban-env-guest" -version = "20.1.0" -source = "git+https://github.com/stellar/rs-soroban-env?rev=36d33cb6c986c9a8a9200b7eb04cf02e2c3f0ef4#36d33cb6c986c9a8a9200b7eb04cf02e2c3f0ef4" +version = "20.2.0" +source = "git+https://github.com/stellar/rs-soroban-env?rev=1bfc0f2a2ee134efc1e1b0d5270281d0cba61c2e#1bfc0f2a2ee134efc1e1b0d5270281d0cba61c2e" dependencies = [ "soroban-env-common", "static_assertions", @@ -2466,8 +2466,8 @@ dependencies = [ [[package]] name = "soroban-env-host" -version = "20.1.0" -source = "git+https://github.com/stellar/rs-soroban-env?rev=36d33cb6c986c9a8a9200b7eb04cf02e2c3f0ef4#36d33cb6c986c9a8a9200b7eb04cf02e2c3f0ef4" +version = "20.2.0" +source = "git+https://github.com/stellar/rs-soroban-env?rev=1bfc0f2a2ee134efc1e1b0d5270281d0cba61c2e#1bfc0f2a2ee134efc1e1b0d5270281d0cba61c2e" dependencies = [ "backtrace", "curve25519-dalek 4.1.1", @@ -2492,8 +2492,8 @@ dependencies = [ [[package]] name = "soroban-env-macros" -version = "20.1.0" -source = "git+https://github.com/stellar/rs-soroban-env?rev=36d33cb6c986c9a8a9200b7eb04cf02e2c3f0ef4#36d33cb6c986c9a8a9200b7eb04cf02e2c3f0ef4" +version = "20.2.0" +source = "git+https://github.com/stellar/rs-soroban-env?rev=1bfc0f2a2ee134efc1e1b0d5270281d0cba61c2e#1bfc0f2a2ee134efc1e1b0d5270281d0cba61c2e" dependencies = [ "itertools 0.11.0", "proc-macro2", @@ -2510,8 +2510,8 @@ version = "20.2.0" [[package]] name = "soroban-ledger-snapshot" -version = "20.1.0" -source = "git+https://github.com/stellar/rs-soroban-sdk?rev=e6c2c900ab82b5f6eec48f69cb2cb519e19819cb#e6c2c900ab82b5f6eec48f69cb2cb519e19819cb" +version = "20.3.0" +source = "git+https://github.com/stellar/rs-soroban-sdk?rev=4aef54ff9295c2fca4c5b9fbd2c92d0ff99f67de#4aef54ff9295c2fca4c5b9fbd2c92d0ff99f67de" dependencies = [ "serde", "serde_json", @@ -2523,8 +2523,8 @@ dependencies = [ [[package]] name = "soroban-sdk" -version = "20.1.0" -source = "git+https://github.com/stellar/rs-soroban-sdk?rev=e6c2c900ab82b5f6eec48f69cb2cb519e19819cb#e6c2c900ab82b5f6eec48f69cb2cb519e19819cb" +version = "20.3.0" +source = "git+https://github.com/stellar/rs-soroban-sdk?rev=4aef54ff9295c2fca4c5b9fbd2c92d0ff99f67de#4aef54ff9295c2fca4c5b9fbd2c92d0ff99f67de" dependencies = [ "arbitrary", "bytes-lit", @@ -2542,8 +2542,8 @@ dependencies = [ [[package]] name = "soroban-sdk-macros" -version = "20.1.0" -source = "git+https://github.com/stellar/rs-soroban-sdk?rev=e6c2c900ab82b5f6eec48f69cb2cb519e19819cb#e6c2c900ab82b5f6eec48f69cb2cb519e19819cb" +version = "20.3.0" +source = "git+https://github.com/stellar/rs-soroban-sdk?rev=4aef54ff9295c2fca4c5b9fbd2c92d0ff99f67de#4aef54ff9295c2fca4c5b9fbd2c92d0ff99f67de" dependencies = [ "crate-git-revision 0.0.6", "darling", @@ -2561,8 +2561,8 @@ dependencies = [ [[package]] name = "soroban-simulation" -version = "20.1.0" -source = "git+https://github.com/stellar/rs-soroban-env?rev=36d33cb6c986c9a8a9200b7eb04cf02e2c3f0ef4#36d33cb6c986c9a8a9200b7eb04cf02e2c3f0ef4" +version = "20.2.0" +source = "git+https://github.com/stellar/rs-soroban-env?rev=1bfc0f2a2ee134efc1e1b0d5270281d0cba61c2e#1bfc0f2a2ee134efc1e1b0d5270281d0cba61c2e" dependencies = [ "anyhow", "rand", @@ -2584,8 +2584,8 @@ dependencies = [ [[package]] name = "soroban-spec" -version = "20.1.0" -source = "git+https://github.com/stellar/rs-soroban-sdk?rev=e6c2c900ab82b5f6eec48f69cb2cb519e19819cb#e6c2c900ab82b5f6eec48f69cb2cb519e19819cb" +version = "20.3.0" +source = "git+https://github.com/stellar/rs-soroban-sdk?rev=4aef54ff9295c2fca4c5b9fbd2c92d0ff99f67de#4aef54ff9295c2fca4c5b9fbd2c92d0ff99f67de" dependencies = [ "base64 0.13.1", "stellar-xdr", @@ -2597,6 +2597,7 @@ dependencies = [ name = "soroban-spec-json" version = "20.2.0" source = "git+https://github.com/stellar/soroban-tools?rev=6a19e181a5699c33b409f1c39f6fdc6b784769e0#6a19e181a5699c33b409f1c39f6fdc6b784769e0" +version = "20.3.0" dependencies = [ "serde", "serde_derive", @@ -2609,8 +2610,8 @@ dependencies = [ [[package]] name = "soroban-spec-rust" -version = "20.1.0" -source = "git+https://github.com/stellar/rs-soroban-sdk?rev=e6c2c900ab82b5f6eec48f69cb2cb519e19819cb#e6c2c900ab82b5f6eec48f69cb2cb519e19819cb" +version = "20.3.0" +source = "git+https://github.com/stellar/rs-soroban-sdk?rev=4aef54ff9295c2fca4c5b9fbd2c92d0ff99f67de#4aef54ff9295c2fca4c5b9fbd2c92d0ff99f67de" dependencies = [ "prettyplease", "proc-macro2", @@ -2626,6 +2627,7 @@ dependencies = [ name = "soroban-spec-tools" version = "20.2.0" source = "git+https://github.com/stellar/soroban-tools?rev=6a19e181a5699c33b409f1c39f6fdc6b784769e0#6a19e181a5699c33b409f1c39f6fdc6b784769e0" +version = "20.3.0" dependencies = [ "base64 0.21.5", "ethnum", @@ -2660,6 +2662,7 @@ dependencies = [ name = "soroban-spec-typescript" version = "20.2.0" source = "git+https://github.com/stellar/soroban-tools?rev=6a19e181a5699c33b409f1c39f6fdc6b784769e0#6a19e181a5699c33b409f1c39f6fdc6b784769e0" +version = "20.3.0" dependencies = [ "base64 0.21.5", "heck", @@ -2700,16 +2703,16 @@ dependencies = [ [[package]] name = "soroban-token-sdk" -version = "20.1.0" -source = "git+https://github.com/stellar/rs-soroban-sdk?rev=e6c2c900ab82b5f6eec48f69cb2cb519e19819cb#e6c2c900ab82b5f6eec48f69cb2cb519e19819cb" +version = "20.3.0" +source = "git+https://github.com/stellar/rs-soroban-sdk?rev=4aef54ff9295c2fca4c5b9fbd2c92d0ff99f67de#4aef54ff9295c2fca4c5b9fbd2c92d0ff99f67de" dependencies = [ "soroban-sdk", ] [[package]] name = "soroban-wasmi" -version = "0.31.1-soroban.20.0.0" -source = "git+https://github.com/stellar/wasmi?rev=ab29800224d85ee64d4ac127bac84cdbb0276721#ab29800224d85ee64d4ac127bac84cdbb0276721" +version = "0.31.1-soroban.20.0.1" +source = "git+https://github.com/stellar/wasmi?rev=0ed3f3dee30dc41ebe21972399e0a73a41944aa0#0ed3f3dee30dc41ebe21972399e0a73a41944aa0" dependencies = [ "smallvec", "spin", @@ -2763,9 +2766,9 @@ dependencies = [ [[package]] name = "stellar-xdr" -version = "20.0.2" +version = "20.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e9f00a85bd9b1617d4cb7e741733889c9940e6bdeca360db81752b0ef04fe3a5" +checksum = "e59cdf3eb4467fb5a4b00b52e7de6dca72f67fac6f9b700f55c95a5d86f09c9d" dependencies = [ "arbitrary", "base64 0.13.1", @@ -2863,14 +2866,14 @@ dependencies = [ [[package]] name = "test_swap" -version = "20.2.0" +version = "20.3.0" dependencies = [ "soroban-sdk", ] [[package]] name = "test_token" -version = "20.2.0" +version = "20.3.0" dependencies = [ "soroban-sdk", "soroban-token-sdk", @@ -2878,7 +2881,7 @@ dependencies = [ [[package]] name = "test_udt" -version = "20.2.0" +version = "20.3.0" dependencies = [ "soroban-sdk", ] @@ -3315,12 +3318,12 @@ checksum = "7ab9b36309365056cd639da3134bf87fa8f3d86008abf99e612384a6eecd459f" [[package]] name = "wasmi_arena" version = "0.4.0" -source = "git+https://github.com/stellar/wasmi?rev=ab29800224d85ee64d4ac127bac84cdbb0276721#ab29800224d85ee64d4ac127bac84cdbb0276721" +source = "git+https://github.com/stellar/wasmi?rev=0ed3f3dee30dc41ebe21972399e0a73a41944aa0#0ed3f3dee30dc41ebe21972399e0a73a41944aa0" [[package]] name = "wasmi_core" version = "0.13.0" -source = "git+https://github.com/stellar/wasmi?rev=ab29800224d85ee64d4ac127bac84cdbb0276721#ab29800224d85ee64d4ac127bac84cdbb0276721" +source = "git+https://github.com/stellar/wasmi?rev=0ed3f3dee30dc41ebe21972399e0a73a41944aa0#0ed3f3dee30dc41ebe21972399e0a73a41944aa0" dependencies = [ "downcast-rs", "libm", diff --git a/Cargo.toml b/Cargo.toml index 24f2e66e..369cd4e9 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -10,31 +10,31 @@ default-members = ["cmd/crates/soroban-test"] exclude = ["cmd/crates/soroban-test/tests/fixtures/hello"] [workspace.package] -version = "20.2.0" +version = "20.3.0" rust-version = "1.74.0" [workspace.dependencies.soroban-env-host] -version = "=20.1.0" +version = "=20.2.0" git = "https://github.com/stellar/rs-soroban-env" -rev = "36d33cb6c986c9a8a9200b7eb04cf02e2c3f0ef4" +rev = "1bfc0f2a2ee134efc1e1b0d5270281d0cba61c2e" # path = "../rs-soroban-env/soroban-env-host" [workspace.dependencies.soroban-simulation] -version = "=20.1.0" +version = "=20.2.0" git = "https://github.com/stellar/rs-soroban-env" -rev = "36d33cb6c986c9a8a9200b7eb04cf02e2c3f0ef4" +rev = "1bfc0f2a2ee134efc1e1b0d5270281d0cba61c2e" # path = "../rs-soroban-env/soroban-simulation" [workspace.dependencies.soroban-spec] -version = "=20.1.0" +version = "=20.3.0" git = "https://github.com/stellar/rs-soroban-sdk" -rev = "e6c2c900ab82b5f6eec48f69cb2cb519e19819cb" +rev = "4aef54ff9295c2fca4c5b9fbd2c92d0ff99f67de" # path = "../rs-soroban-sdk/soroban-spec" [workspace.dependencies.soroban-spec-rust] -version = "=20.1.0" +version = "=20.3.0" git = "https://github.com/stellar/rs-soroban-sdk" -rev = "e6c2c900ab82b5f6eec48f69cb2cb519e19819cb" +rev = "4aef54ff9295c2fca4c5b9fbd2c92d0ff99f67de" # path = "../rs-soroban-sdk/soroban-spec-rust" [workspace.dependencies.soroban-spec-json] @@ -53,19 +53,19 @@ git = "https://github.com/stellar/soroban-tools" rev = "7ee51fa731aa21365363aef687bae6040b81aa7a" [workspace.dependencies.soroban-sdk] -version = "=20.1.0" +version = "=20.3.0" git = "https://github.com/stellar/rs-soroban-sdk" -rev = "e6c2c900ab82b5f6eec48f69cb2cb519e19819cb" +rev = "4aef54ff9295c2fca4c5b9fbd2c92d0ff99f67de" [workspace.dependencies.soroban-token-sdk] -version = "=20.1.0" +version = "=20.3.0" git = "https://github.com/stellar/rs-soroban-sdk" -rev = "e6c2c900ab82b5f6eec48f69cb2cb519e19819cb" +rev = "4aef54ff9295c2fca4c5b9fbd2c92d0ff99f67de" [workspace.dependencies.soroban-ledger-snapshot] -version = "=20.1.0" +version = "=20.3.0" git = "https://github.com/stellar/rs-soroban-sdk" -rev = "e6c2c900ab82b5f6eec48f69cb2cb519e19819cb" +rev = "4aef54ff9295c2fca4c5b9fbd2c92d0ff99f67de" [workspace.dependencies.soroban-cli] version = "20.2.0" @@ -73,7 +73,7 @@ git = "https://github.com/stellar/soroban-tools" rev = "6a19e181a5699c33b409f1c39f6fdc6b784769e0" [workspace.dependencies.stellar-xdr] -version = "=20.0.2" +version = "=20.1.0" default-features = true [workspace.dependencies] diff --git a/cmd/soroban-rpc/internal/daemon/daemon.go b/cmd/soroban-rpc/internal/daemon/daemon.go index 63afb9a7..d2ee9c3a 100644 --- a/cmd/soroban-rpc/internal/daemon/daemon.go +++ b/cmd/soroban-rpc/internal/daemon/daemon.go @@ -146,7 +146,7 @@ func MustNew(cfg *config.Config) *Daemon { } historyArchive, err := historyarchive.Connect( cfg.HistoryArchiveURLs[0], - historyarchive.ConnectOptions{ + historyarchive.ArchiveOptions{ CheckpointFrequency: cfg.CheckpointFrequency, }, ) diff --git a/cmd/soroban-rpc/internal/test/docker-compose.yml b/cmd/soroban-rpc/internal/test/docker-compose.yml index b7309cdc..1b67d836 100644 --- a/cmd/soroban-rpc/internal/test/docker-compose.yml +++ b/cmd/soroban-rpc/internal/test/docker-compose.yml @@ -15,7 +15,7 @@ services: # Note: Please keep the image pinned to an immutable tag matching the Captive Core version. # This avoids implicit updates which break compatibility between # the Core container and captive core. - image: ${CORE_IMAGE:-stellar/unsafe-stellar-core:20.1.0-1656.114b833e7.focal} + image: ${CORE_IMAGE:-stellar/unsafe-stellar-core:20.2.0-1716.rc3.34d82fc00.focal} depends_on: - core-postgres restart: on-failure diff --git a/cmd/soroban-rpc/lib/preflight/Cargo.toml b/cmd/soroban-rpc/lib/preflight/Cargo.toml index 6bdd9ba8..7b1f0e48 100644 --- a/cmd/soroban-rpc/lib/preflight/Cargo.toml +++ b/cmd/soroban-rpc/lib/preflight/Cargo.toml @@ -12,5 +12,5 @@ libc = "0.2.147" sha2 = { workspace = true } # we need the testutils feature in order to get backtraces in the preflight library # when soroban rpc is configured to run with --preflight-enable-debug -soroban-env-host = { workspace = true, features = ["recording_auth", "testutils"]} +soroban-env-host = { workspace = true, features = ["recording_mode", "testutils"]} soroban-simulation = { workspace = true } diff --git a/go.mod b/go.mod index a8bd3bf4..d7c19cf4 100644 --- a/go.mod +++ b/go.mod @@ -18,17 +18,30 @@ require ( github.com/sirupsen/logrus v1.9.3 github.com/spf13/cobra v1.7.0 github.com/spf13/pflag v1.0.5 - github.com/stellar/go v0.0.0-20240109175136-3ca501f09055 + github.com/stellar/go v0.0.0-20240202231803-b0df9f046eb4 github.com/stretchr/testify v1.8.4 golang.org/x/mod v0.13.0 gotest.tools/v3 v3.5.0 ) require ( + cloud.google.com/go v0.111.0 // indirect + cloud.google.com/go/compute v1.23.3 // indirect + cloud.google.com/go/compute/metadata v0.2.3 // indirect + cloud.google.com/go/iam v1.1.5 // indirect + cloud.google.com/go/storage v1.30.1 // indirect dario.cat/mergo v1.0.0 // indirect github.com/cloudflare/circl v1.3.5 // indirect github.com/cyphar/filepath-securejoin v0.2.4 // indirect + github.com/go-logr/logr v1.2.4 // indirect + github.com/go-logr/stdr v1.2.2 // indirect github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da // indirect + github.com/golang/protobuf v1.5.3 // indirect + github.com/google/s2a-go v0.1.7 // indirect + github.com/google/uuid v1.4.0 // indirect + github.com/googleapis/enterprise-certificate-proxy v0.3.2 // indirect + github.com/googleapis/gax-go/v2 v2.12.0 // indirect + github.com/hashicorp/golang-lru v1.0.2 // indirect github.com/matttproud/golang_protobuf_extensions/v2 v2.0.0 // indirect github.com/pelletier/go-toml/v2 v2.1.0 // indirect github.com/pjbgf/sha1cd v0.3.0 // indirect @@ -37,8 +50,19 @@ require ( github.com/skeema/knownhosts v1.2.1 // indirect github.com/sourcegraph/conc v0.3.0 // indirect github.com/subosito/gotenv v1.6.0 // indirect + go.opencensus.io v0.24.0 // indirect + go.opentelemetry.io/otel v1.19.0 // indirect + go.opentelemetry.io/otel/metric v1.19.0 // indirect + go.opentelemetry.io/otel/trace v1.19.0 // indirect go.uber.org/multierr v1.11.0 // indirect + golang.org/x/oauth2 v0.13.0 // indirect golang.org/x/tools v0.14.0 // indirect + google.golang.org/api v0.149.0 // indirect + google.golang.org/appengine v1.6.8 // indirect + google.golang.org/genproto v0.0.0-20231212172506-995d672761c0 // indirect + google.golang.org/genproto/googleapis/api v0.0.0-20231211222908-989df2bf70f3 // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20240102182953-50ed04b92917 // indirect + google.golang.org/grpc v1.60.1 // indirect gopkg.in/ini.v1 v1.67.0 // indirect ) @@ -85,13 +109,13 @@ require ( github.com/stellar/go-xdr v0.0.0-20231122183749-b53fb00bcac2 // indirect github.com/stretchr/objx v0.5.1 // indirect github.com/xanzy/ssh-agent v0.3.3 // indirect - golang.org/x/crypto v0.14.0 // indirect + golang.org/x/crypto v0.16.0 // indirect golang.org/x/exp v0.0.0-20231006140011-7918f672742d // indirect - golang.org/x/net v0.17.0 // indirect + golang.org/x/net v0.19.0 // indirect golang.org/x/sync v0.5.0 // indirect - golang.org/x/sys v0.13.0 // indirect - golang.org/x/text v0.13.0 // indirect - google.golang.org/protobuf v1.31.0 // indirect + golang.org/x/sys v0.16.0 // indirect + golang.org/x/text v0.14.0 // indirect + google.golang.org/protobuf v1.32.0 // indirect gopkg.in/tylerb/graceful.v1 v1.2.15 // indirect gopkg.in/warnings.v0 v0.1.2 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect diff --git a/go.sum b/go.sum index ed68c009..56e9fc7a 100644 --- a/go.sum +++ b/go.sum @@ -17,14 +17,22 @@ cloud.google.com/go v0.65.0/go.mod h1:O5N8zS7uWy9vkA9vayVHs65eM1ubvY4h553ofrNHOb cloud.google.com/go v0.72.0/go.mod h1:M+5Vjvlc2wnp6tjzE102Dw08nGShTscUx2nZMufOKPI= cloud.google.com/go v0.74.0/go.mod h1:VV1xSbzvo+9QJOxLDaJfTjx5e+MePCpCWwvftOeQmWk= cloud.google.com/go v0.75.0/go.mod h1:VGuuCn7PG0dwsd5XPVm2Mm3wlh3EL55/79EKB6hlPTY= +cloud.google.com/go v0.111.0 h1:YHLKNupSD1KqjDbQ3+LVdQ81h/UJbJyZG203cEfnQgM= +cloud.google.com/go v0.111.0/go.mod h1:0mibmpKP1TyOOFYQY5izo0LnT+ecvOQ0Sg3OdmMiNRU= cloud.google.com/go/bigquery v1.0.1/go.mod h1:i/xbL2UlR5RvWAURpBYZTtm/cXjCha9lbfbpx4poX+o= cloud.google.com/go/bigquery v1.3.0/go.mod h1:PjpwJnslEMmckchkHFfq+HTD2DmtT67aNFKH1/VBDHE= cloud.google.com/go/bigquery v1.4.0/go.mod h1:S8dzgnTigyfTmLBfrtrhyYhwRxG72rYxvftPBK2Dvzc= cloud.google.com/go/bigquery v1.5.0/go.mod h1:snEHRnqQbz117VIFhE8bmtwIDY80NLUZUMb4Nv6dBIg= cloud.google.com/go/bigquery v1.7.0/go.mod h1://okPTzCYNXSlb24MZs83e2Do+h+VXtc4gLoIoXIAPc= cloud.google.com/go/bigquery v1.8.0/go.mod h1:J5hqkt3O0uAFnINi6JXValWIb1v0goeZM77hZzJN/fQ= +cloud.google.com/go/compute v1.23.3 h1:6sVlXXBmbd7jNX0Ipq0trII3e4n1/MsADLK6a+aiVlk= +cloud.google.com/go/compute v1.23.3/go.mod h1:VCgBUoMnIVIR0CscqQiPJLAG25E3ZRZMzcFZeQ+h8CI= +cloud.google.com/go/compute/metadata v0.2.3 h1:mg4jlk7mCAj6xXp9UJ4fjI9VUI5rubuGBW5aJ7UnBMY= +cloud.google.com/go/compute/metadata v0.2.3/go.mod h1:VAV5nSsACxMJvgaAuX6Pk2AawlZn8kiOGuCv6gTkwuA= cloud.google.com/go/datastore v1.0.0/go.mod h1:LXYbyblFSglQ5pkeyhO+Qmw7ukd3C+pD7TKLgZqpHYE= cloud.google.com/go/datastore v1.1.0/go.mod h1:umbIZjpQpHh4hmRpGhH4tLFup+FVzqBi1b3c64qFpCk= +cloud.google.com/go/iam v1.1.5 h1:1jTsCu4bcsNsE4iiqNT5SHwrDRCfRmIaaaVFhRveTJI= +cloud.google.com/go/iam v1.1.5/go.mod h1:rB6P/Ic3mykPbFio+vo7403drjlgvoWfYpJhMXEbzv8= cloud.google.com/go/pubsub v1.0.1/go.mod h1:R0Gpsv3s54REJCy4fxDixWD93lHJMoZTyQ2kNxGRt3I= cloud.google.com/go/pubsub v1.1.0/go.mod h1:EwwdRX2sKPjnvnqCa270oGRyludottCI76h+R3AArQw= cloud.google.com/go/pubsub v1.2.0/go.mod h1:jhfEVHT8odbXTkndysNHCcx0awwzvfOlguIAii9o8iA= @@ -35,6 +43,8 @@ cloud.google.com/go/storage v1.6.0/go.mod h1:N7U0C8pVQ/+NIKOBQyamJIeKQKkZ+mxpohl cloud.google.com/go/storage v1.8.0/go.mod h1:Wv1Oy7z6Yz3DshWRJFhqM/UCfaWIRTdp0RXyy7KQOVs= cloud.google.com/go/storage v1.10.0/go.mod h1:FLPqc6j+Ki4BU591ie1oL6qBQGu2Bl/tZ9ullr3+Kg0= cloud.google.com/go/storage v1.14.0/go.mod h1:GrKmX003DSIwi9o29oFT7YDnHYwZoctc3fOKtUw0Xmo= +cloud.google.com/go/storage v1.30.1 h1:uOdMxAs8HExqBlnLtnQyP0YkvbiDpdGShGKtx6U/oNM= +cloud.google.com/go/storage v1.30.1/go.mod h1:NfxhC0UJE1aXSx7CIIbCf7y9HKT7BiccwkR7+P7gN8E= dario.cat/mergo v1.0.0 h1:AGCNq9Evsj31mOgNPcLyXc+4PNABt905YmuqPYYpBWk= dario.cat/mergo v1.0.0/go.mod h1:uNxQE+84aUszobStD9th8a29P2fMDhsBdgRYvZOxGmk= dmitri.shuralyov.com/gpu/mtl v0.0.0-20190408044501-666a987793e9/go.mod h1:H6x//7gZCb22OMCxBHrMx7a5I7Hp++hsVxbQ4BYO7hU= @@ -131,6 +141,11 @@ github.com/go-gl/glfw/v3.3/glfw v0.0.0-20191125211704-12ad95a8df72/go.mod h1:tQ2 github.com/go-gl/glfw/v3.3/glfw v0.0.0-20200222043503-6f7a984d4dc4/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8= github.com/go-gorp/gorp/v3 v3.1.0 h1:ItKF/Vbuj31dmV4jxA1qblpSwkl9g1typ24xoe70IGs= github.com/go-gorp/gorp/v3 v3.1.0/go.mod h1:dLEjIyyRNiXvNZ8PSmzpt1GsWAUK8kjVhEpjH8TixEw= +github.com/go-logr/logr v1.2.2/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A= +github.com/go-logr/logr v1.2.4 h1:g01GSCwiDw2xSZfjJ2/T9M+S6pFdcNtFYsp+Y43HYDQ= +github.com/go-logr/logr v1.2.4/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A= +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-sql-driver/mysql v1.6.0 h1:BCTh4TKNUYmOmMUcQ3IipzF5prigylS7XXjEkfCHuOE= github.com/go-sql-driver/mysql v1.6.0/go.mod h1:DCzpHaOWr8IXmIStZouvnhqoel9Qv2LBy8hT2VhHyBg= github.com/gobuffalo/logger v1.0.6 h1:nnZNpxYo0zx+Aj9RfMPBm+x9zAU2OayFh/xrAWi34HU= @@ -167,6 +182,9 @@ github.com/golang/protobuf v1.4.1/go.mod h1:U8fpvMrcmy5pZrNK1lt4xCsGvpyWQ/VVv6QD github.com/golang/protobuf v1.4.2/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI= github.com/golang/protobuf v1.4.3/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI= github.com/golang/protobuf v1.5.0/go.mod h1:FsONVRAS9T7sI+LIUmWTfcYkHO4aIWwzhcaSAoJOfIk= +github.com/golang/protobuf v1.5.2/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY= +github.com/golang/protobuf v1.5.3 h1:KhyjKVUg7Usr/dYsdSqoFveMYd5ko72D+zANwlG1mmg= +github.com/golang/protobuf v1.5.3/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY= 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/go-cmp v0.2.0/go.mod h1:oXzfMopK8JAjlY9xF4vHSVASa0yLyX7SntLO5aqRK0M= @@ -177,15 +195,19 @@ github.com/google/go-cmp v0.4.1/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/ github.com/google/go-cmp v0.5.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/go-cmp v0.5.1/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/go-cmp v0.5.2/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= +github.com/google/go-cmp v0.5.3/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/go-cmp v0.5.4/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= 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-querystring v0.0.0-20160401233042-9235644dd9e5 h1:oERTZ1buOUYlpmKaqlO5fYmz8cZ1rYu5DieJzF4ZVmU= github.com/google/go-querystring v0.0.0-20160401233042-9235644dd9e5/go.mod h1:odCYkC5MyYFN7vkCjXpyrEuKhc/BUO6wN/zVPAxq5ck= +github.com/google/martian v2.1.0+incompatible h1:/CP5g8u/VJHijgedC/Legn3BAbAaWPgecwXBIDzw5no= github.com/google/martian v2.1.0+incompatible/go.mod h1:9I4somxYTbIHy5NJKHRl3wXiIaQGbYVAs8BPL6v8lEs= github.com/google/martian/v3 v3.0.0/go.mod h1:y5Zk1BBys9G+gd6Jrk0W3cC1+ELVxBWuIGO+w/tUAp0= github.com/google/martian/v3 v3.1.0/go.mod h1:y5Zk1BBys9G+gd6Jrk0W3cC1+ELVxBWuIGO+w/tUAp0= +github.com/google/martian/v3 v3.3.2 h1:IqNFLAmvJOgVlpdEBiQbDc2EwKW77amAycfTuWKdfvw= +github.com/google/martian/v3 v3.3.2/go.mod h1:oBOf6HBosgwRXnUGWUB05QECsc6uvmMiJ3+6W4l/CUk= github.com/google/pprof v0.0.0-20181206194817-3ea8567a2e57/go.mod h1:zfwlbNMJ+OItoe0UupaVj+oy1omPYYDuagoSzA8v9mc= github.com/google/pprof v0.0.0-20190515194954-54271f7e092f/go.mod h1:zfwlbNMJ+OItoe0UupaVj+oy1omPYYDuagoSzA8v9mc= github.com/google/pprof v0.0.0-20191218002539-d4f498aebedc/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= @@ -197,11 +219,19 @@ github.com/google/pprof v0.0.0-20201023163331-3e6fc7fc9c4c/go.mod h1:kpwsk12EmLe github.com/google/pprof v0.0.0-20201203190320-1bf35d6f28c2/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= github.com/google/pprof v0.0.0-20201218002935-b9804c9f04c2/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= github.com/google/renameio v0.1.0/go.mod h1:KWCgfxg9yswjAJkECMjeO8J8rahYeXnNhOm40UhjYkI= +github.com/google/s2a-go v0.1.7 h1:60BLSyTrOV4/haCDW4zb1guZItoSq8foHCXrAnjBo/o= +github.com/google/s2a-go v0.1.7/go.mod h1:50CgR4k1jNlWBu4UfS4AcfhVe1r6pdZPygJ3R8F0Qdw= github.com/google/shlex v0.0.0-20191202100458-e7afc7fbc510 h1:El6M4kTTCOh6aBiKaUGG7oYTSPP8MxqL4YI3kZKwcP4= github.com/google/shlex v0.0.0-20191202100458-e7afc7fbc510/go.mod h1:pupxD2MaaD3pAXIBCelhxNneeOaAeabZDe5s4K6zSpQ= github.com/google/uuid v1.1.2/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= +github.com/google/uuid v1.4.0 h1:MtMxsa51/r9yyhkyLsVeVt0B+BGQZzpQiTQ4eHZ8bc4= +github.com/google/uuid v1.4.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= +github.com/googleapis/enterprise-certificate-proxy v0.3.2 h1:Vie5ybvEvT75RniqhfFxPRy3Bf7vr3h0cechB90XaQs= +github.com/googleapis/enterprise-certificate-proxy v0.3.2/go.mod h1:VLSiSSBs/ksPL8kq3OBOQ6WRI2QnaFynd1DCjZ62+V0= github.com/googleapis/gax-go/v2 v2.0.4/go.mod h1:0Wqv26UfaUD9n4G6kQubkQ+KchISgw+vpHVxEJEs9eg= github.com/googleapis/gax-go/v2 v2.0.5/go.mod h1:DWXyrwAJ9X0FpwwEdw+IPEYBICEFu5mhpdKc/us6bOk= +github.com/googleapis/gax-go/v2 v2.12.0 h1:A+gCJKdRfqXkr+BIRGtZLibNXf0m1f9E4HG56etFpas= +github.com/googleapis/gax-go/v2 v2.12.0/go.mod h1:y+aIqrI5eb1YGMVJfuV3185Ts/D7qKpsEkdD5+I6QGU= github.com/googleapis/google-cloud-go-testing v0.0.0-20200911160855-bcd43fbb19e8/go.mod h1:dvDLG8qkwmyD9a/MJJN3XJcT3xFxOKAvTZGvuZmac9g= github.com/gorilla/schema v1.2.0 h1:YufUaxZYCKGFuAq3c96BOhjgd5nmXiOY9NGzF247Tsc= github.com/gorilla/schema v1.2.0/go.mod h1:kgLaKoK1FELgZqMAVxx/5cbj0kT+57qxUrAlIO2eleU= @@ -209,6 +239,8 @@ github.com/guregu/null v4.0.0+incompatible h1:4zw0ckM7ECd6FNNddc3Fu4aty9nTlpkkzH github.com/guregu/null v4.0.0+incompatible/go.mod h1:ePGpQaN9cw0tj45IR5E5ehMvsFlLlQZAkkOXZurJ3NM= 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 v1.0.2 h1:dV3g9Z/unq5DpblPpw+Oqcv4dU/1omnb4Ok8iPY6p1c= +github.com/hashicorp/golang-lru v1.0.2/go.mod h1:iADmTwqILo4mZ8BN3D2Q6+9jd8WM5uGBxy+E8yxSoD4= github.com/hashicorp/hcl v1.0.0 h1:0Anlzjpi4vEasTeNFn2mLJgTSwt0+6sfsiTG8qcWGx4= github.com/hashicorp/hcl v1.0.0/go.mod h1:E5yfLk+7swimpb2L/Alb/PJmXilQ/rhwaUYs4T20WEQ= github.com/ianlancetaylor/demangle v0.0.0-20181102032728-5e5cf60278f6/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc= @@ -334,8 +366,8 @@ 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.17.0 h1:I5txKw7MJasPL/BrfkbA0Jyo/oELqVmux4pR/UxOMfI= github.com/spf13/viper v1.17.0/go.mod h1:BmMMMLQXSbcHK6KAOiFLz0l5JHrU89OdIRHvsk0+yVI= -github.com/stellar/go v0.0.0-20240109175136-3ca501f09055 h1:6/i5f/4CsoArb9eNe+Pr+ATQkBvWNK31at6qaw9zMH4= -github.com/stellar/go v0.0.0-20240109175136-3ca501f09055/go.mod h1:PAWie4LYyDzJXqDVG4Qcj1Nt+uNk7sjzgSCXndQYsBA= +github.com/stellar/go v0.0.0-20240202231803-b0df9f046eb4 h1:1DQT7eta18GSv+z6wF7AMUf7NqQ0qOrr2uJPGMRakRg= +github.com/stellar/go v0.0.0-20240202231803-b0df9f046eb4/go.mod h1:Ka4piwZT4Q9799f+BZeaKkAiYo4UpIWXyu0oSUbCVfM= github.com/stellar/go-xdr v0.0.0-20231122183749-b53fb00bcac2 h1:OzCVd0SV5qE3ZcDeSFCmOWLZfEWZ3Oe8KtmSOYKEVWE= github.com/stellar/go-xdr v0.0.0-20231122183749-b53fb00bcac2/go.mod h1:yoxyU/M8nl9LKeWIoBrbDPQ7Cy+4jxRcWcOayZ4BMps= github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= @@ -349,6 +381,7 @@ github.com/stretchr/testify v1.5.1/go.mod h1:5W2xD1RspED5o8YsWQXVCued0rvSQ+mT+I5 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= github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU= +github.com/stretchr/testify v1.8.1/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4= github.com/stretchr/testify v1.8.2/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4= github.com/stretchr/testify v1.8.4 h1:CcVxjf3Q8PM0mHUKJCdn+eZZtm5yQwehR5yeSVQQcUk= github.com/stretchr/testify v1.8.4/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo= @@ -385,6 +418,16 @@ go.opencensus.io v0.22.2/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= go.opencensus.io v0.22.3/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= go.opencensus.io v0.22.4/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= go.opencensus.io v0.22.5/go.mod h1:5pWMHQbX5EPX2/62yrJeAkowc+lfs/XD7Uxpq3pI6kk= +go.opencensus.io v0.24.0 h1:y73uSU6J157QMP2kn2r30vwW1A2W2WFwSCGnAVxeaD0= +go.opencensus.io v0.24.0/go.mod h1:vNK8G9p7aAivkbmorf4v+7Hgx+Zs0yY+0fOtgBfjQKo= +go.opentelemetry.io/otel v1.19.0 h1:MuS/TNf4/j4IXsZuJegVzI1cwut7Qc00344rgH7p8bs= +go.opentelemetry.io/otel v1.19.0/go.mod h1:i0QyjOq3UPoTzff0PJB2N66fb4S0+rSbSB15/oyH9fY= +go.opentelemetry.io/otel/metric v1.19.0 h1:aTzpGtV0ar9wlV4Sna9sdJyII5jTVJEvKETPiOKwvpE= +go.opentelemetry.io/otel/metric v1.19.0/go.mod h1:L5rUsV9kM1IxCj1MmSdS+JQAcVm319EUrDVLrt7jqt8= +go.opentelemetry.io/otel/sdk v1.19.0 h1:6USY6zH+L8uMH8L3t1enZPR3WFEmSTADlqldyHtJi3o= +go.opentelemetry.io/otel/sdk v1.19.0/go.mod h1:NedEbbS4w3C6zElbLdPJKOpJQOrGUJ+GfzpjUvI0v1A= +go.opentelemetry.io/otel/trace v1.19.0 h1:DFVQmlVbfVeOuBRrwdtaehRrWiL1JoVs9CPIQ1Dzxpg= +go.opentelemetry.io/otel/trace v1.19.0/go.mod h1:mfaSyvGyEJEI0nyV2I4qhNQnbBOUUmYZpYojqMnX2vo= go.uber.org/multierr v1.11.0 h1:blXXJkSxSSfBVBlC76pxqeO+LN3aDfLQo+309xJstO0= go.uber.org/multierr v1.11.0/go.mod h1:20+QtiLqy0Nd6FdQB9TLXag12DsQkrbs3htMFfDN80Y= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= @@ -398,8 +441,8 @@ golang.org/x/crypto v0.0.0-20220622213112-05595931fe9d/go.mod h1:IxCIyHEi3zRg3s0 golang.org/x/crypto v0.0.0-20220722155217-630584e8d5aa/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= golang.org/x/crypto v0.3.1-0.20221117191849-2c476679df9a/go.mod h1:hebNnKkNXi2UzZN1eVRvBB7co0a+JxK6XbPiWVs/3J4= golang.org/x/crypto v0.7.0/go.mod h1:pYwdfH91IfpZVANVyUOhSIPZaFoJGxTFbZhFTx+dXZU= -golang.org/x/crypto v0.14.0 h1:wBqGXzWJW6m1XrIKlAH0Hs1JJ7+9KBwnIO8v66Q9cHc= -golang.org/x/crypto v0.14.0/go.mod h1:MVFd36DqK4CsrnJYDkBA3VC4m2GkXAM0PvzMCn4JQf4= +golang.org/x/crypto v0.16.0 h1:mMMrFzRSCF0GvB7Ne27XVtVAaXLrPmgPC7/v0tkwHaY= +golang.org/x/crypto v0.16.0/go.mod h1:gCAAfMLgwOJRpTjQ2zCCt2OcSfYMTeZVSRtQlPC7Nq4= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20190306152737-a1d7652674e8/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20190510132918-efd6b22b2522/go.mod h1:ZjyILWgesfNpC6sMxTJOJm9Kp84zZh5NQWvqDGG3Qr8= @@ -467,6 +510,7 @@ golang.org/x/net v0.0.0-20200707034311-ab3426394381/go.mod h1:/O7V0waA8r7cgGh81R golang.org/x/net v0.0.0-20200822124328-c89045814202/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= golang.org/x/net v0.0.0-20201031054903-ff519b6c9102/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-20201209123823-ac852fbbde11/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= golang.org/x/net v0.0.0-20201224014010-6772e930b67b/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= @@ -476,8 +520,8 @@ golang.org/x/net v0.1.0/go.mod h1:Cx3nUiGt4eDBEyega/BKRp+/AlGL8hYe7U9odMt2Cco= golang.org/x/net v0.2.0/go.mod h1:KqCZLdyyvdV855qA2rE3GC2aiw5xGR5TEjj8smXukLY= golang.org/x/net v0.6.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs= golang.org/x/net v0.8.0/go.mod h1:QVkue5JL9kW//ek3r6jTKnTFis1tRmNAW2P1shuFdJc= -golang.org/x/net v0.17.0 h1:pVaXccu2ozPjCXewfr1S7xza/zcXTity9cCdXQYSjIM= -golang.org/x/net v0.17.0/go.mod h1:NxSsAGuq816PNPmqtQdLE42eU2Fs7NoRIZrHJAlaCOE= +golang.org/x/net v0.19.0 h1:zTwKpTd2XuCqf8huc7Fo2iSy+4RHPd10s4KzeTnVr1c= +golang.org/x/net v0.19.0/go.mod h1:CfAk/cbD4CthTvqiEl8NpboMuiuOYsAr/7NOjZJtv1U= golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= golang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= @@ -487,6 +531,8 @@ golang.org/x/oauth2 v0.0.0-20200902213428-5d25da1a8d43/go.mod h1:KelEdhl1UZF7XfJ golang.org/x/oauth2 v0.0.0-20201109201403-9fd604954f58/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= golang.org/x/oauth2 v0.0.0-20201208152858-08078c50e5b5/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= golang.org/x/oauth2 v0.0.0-20210218202405-ba52d332ba99/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= +golang.org/x/oauth2 v0.13.0 h1:jDDenyj+WgFtmV3zYVoi8aE2BwtXFLWOA67ZfNWftiY= +golang.org/x/oauth2 v0.13.0/go.mod h1:/JMhi4ZRXAf4HG9LiNmxvk+45+96RUlVThiH8FzNBn0= golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= @@ -547,16 +593,16 @@ golang.org/x/sys v0.2.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.3.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.13.0 h1:Af8nKPmuFypiUBjVoU9V20FiaFXOcuZI21p0ycVYYGE= -golang.org/x/sys v0.13.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.16.0 h1:xWw16ngr6ZMtmxDyKyIgsE93KNKz5HKmMa3b8ALHidU= +golang.org/x/sys v0.16.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= golang.org/x/term v0.1.0/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= golang.org/x/term v0.2.0/go.mod h1:TVmDHMZPmdnySmBfhjOoOdhjzdE1h4u1VwSiw2l1Nuc= golang.org/x/term v0.5.0/go.mod h1:jMB1sMXY+tzblOD4FWmEbocvup2/aLOaQEp7JmGp78k= golang.org/x/term v0.6.0/go.mod h1:m6U89DPEgQRMq3DNkDClhWw02AUbt2daBVO4cn4Hv9U= -golang.org/x/term v0.13.0 h1:bb+I9cTfFazGW51MZqBVmZy7+JEJMouUHTUSKVQLBek= -golang.org/x/term v0.13.0/go.mod h1:LTmsnFJwVN6bCy1rVCoS+qHT1HhALEFxKncY3WNNh4U= +golang.org/x/term v0.15.0 h1:y/Oo/a/q3IXu26lQgl04j/gjuBDOBlx7X6Om1j2CPW4= +golang.org/x/term v0.15.0/go.mod h1:BDl952bC7+uMoWR75FIrCDx79TPU9oHkTZ9yRbYOrX0= golang.org/x/text v0.0.0-20170915032832-14c0d48ead0c/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.1-0.20180807135948-17ff2d5776d2/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= @@ -565,11 +611,12 @@ golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.4/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= golang.org/x/text v0.4.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= golang.org/x/text v0.7.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= golang.org/x/text v0.8.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8= -golang.org/x/text v0.13.0 h1:ablQoSUd0tRdKxZewP80B+BaqeKJuVhuRxj/dkrun3k= -golang.org/x/text v0.13.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE= +golang.org/x/text v0.14.0 h1:ScX5w1eTa3QqT8oi6+ziP7dTV1S2+ALU0bI+0zXKWiQ= +golang.org/x/text v0.14.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU= 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= @@ -628,6 +675,8 @@ golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8T golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= +golang.org/x/xerrors v0.0.0-20220907171357-04be3eba64a2 h1:H2TDz8ibqkAF6YGhCdN3jS9O0/s90v0rJh3X/OLHEUk= +golang.org/x/xerrors v0.0.0-20220907171357-04be3eba64a2/go.mod h1:K8+ghG5WaK9qNqU5K3HdILfMLy1f3aNYFI/wnl100a8= google.golang.org/api v0.4.0/go.mod h1:8k5glujaEP+g9n7WNsDg8QP6cUVNI86fCNMcbazEtwE= google.golang.org/api v0.7.0/go.mod h1:WtwebWUNSVBH/HAw79HIFXZNqEvBhG+Ra+ax0hx3E3M= google.golang.org/api v0.8.0/go.mod h1:o4eAsZoiT+ibD93RtjEohWalFOjRDx6CVaqeizhEnKg= @@ -647,6 +696,8 @@ google.golang.org/api v0.30.0/go.mod h1:QGmEvQ87FHZNiUVJkT14jQNYJ4ZJjdRF23ZXz513 google.golang.org/api v0.35.0/go.mod h1:/XrVsuzM0rZmrsbjJutiuftIzeuTQcEeaYcSk/mQ1dg= google.golang.org/api v0.36.0/go.mod h1:+z5ficQTmoYpPn8LCUNVpK5I7hwkpjbcgqA7I34qYtE= google.golang.org/api v0.40.0/go.mod h1:fYKFpnQN0DsDSKRVRcQSDQNtqWPfM9i+zNPxepjRCQ8= +google.golang.org/api v0.149.0 h1:b2CqT6kG+zqJIVKRQ3ELJVLN1PwHZ6DJ3dW8yl82rgY= +google.golang.org/api v0.149.0/go.mod h1:Mwn1B7JTXrzXtnvmzQE2BD6bYZQ8DShKZDZbeN9I7qI= google.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM= google.golang.org/appengine v1.4.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= google.golang.org/appengine v1.5.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= @@ -654,6 +705,8 @@ google.golang.org/appengine v1.6.1/go.mod h1:i06prIuMbXzDqacNJfV5OdTW448YApPu5ww 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/appengine v1.6.7/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc= +google.golang.org/appengine v1.6.8 h1:IhEN5q69dyKagZPYMSdIjS2HqprW324FRQZJcGqPAsM= +google.golang.org/appengine v1.6.8/go.mod h1:1jJ3jBArFh5pcgW8gCtRJnepW8FzD1V44FJffLiz/Ds= 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-20190418145605-e7d98fc518a7/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= @@ -690,6 +743,12 @@ google.golang.org/genproto v0.0.0-20201210142538-e3217bee35cc/go.mod h1:FWY/as6D google.golang.org/genproto v0.0.0-20201214200347-8c77b98c765d/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= google.golang.org/genproto v0.0.0-20210108203827-ffc7fda8c3d7/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= google.golang.org/genproto v0.0.0-20210226172003-ab064af71705/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20231212172506-995d672761c0 h1:YJ5pD9rF8o9Qtta0Cmy9rdBwkSjrTCT6XTiUQVOtIos= +google.golang.org/genproto v0.0.0-20231212172506-995d672761c0/go.mod h1:l/k7rMz0vFTBPy+tFSGvXEd3z+BcoG1k7EHbqm+YBsY= +google.golang.org/genproto/googleapis/api v0.0.0-20231211222908-989df2bf70f3 h1:EWIeHfGuUf00zrVZGEgYFxok7plSAXBGcH7NNdMAWvA= +google.golang.org/genproto/googleapis/api v0.0.0-20231211222908-989df2bf70f3/go.mod h1:k2dtGpRrbsSyKcNPKKI5sstZkrNCZwpU/ns96JoHbGg= +google.golang.org/genproto/googleapis/rpc v0.0.0-20240102182953-50ed04b92917 h1:6G8oQ016D88m1xAKljMlBOOGWDZkes4kMhgGFlf8WcQ= +google.golang.org/genproto/googleapis/rpc v0.0.0-20240102182953-50ed04b92917/go.mod h1:xtjpI3tXFPP051KaWnhvxkiubL/6dJ18vLVf7q2pTOU= google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= google.golang.org/grpc v1.20.1/go.mod h1:10oTOabMzJvdu6/UiuZezV6QK5dSlG84ov/aaiqXj38= google.golang.org/grpc v1.21.1/go.mod h1:oYelfM1adQP15Ek0mdvEgi9Df8B9CZIaU1084ijfRaM= @@ -706,6 +765,8 @@ google.golang.org/grpc v1.31.1/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM google.golang.org/grpc v1.33.2/go.mod h1:JMHMWHQWaTccqQQlmk3MJZS+GWXOdAesneDmEnv2fbc= google.golang.org/grpc v1.34.0/go.mod h1:WotjhfgOW/POjDeRt8vscBtXq+2VjORFy659qA51WJ8= google.golang.org/grpc v1.35.0/go.mod h1:qjiiYl8FncCW8feJPdyg3v6XW24KsRHe+dy9BAGRRjU= +google.golang.org/grpc v1.60.1 h1:26+wFr+cNqSGFcOXcabYC0lUVJVRa2Sb2ortSK7VrEU= +google.golang.org/grpc v1.60.1/go.mod h1:OlCHIeLYqSSsLi6i49B5QGdzaMZK9+M7LXN2FKz4eGM= 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= @@ -717,8 +778,9 @@ google.golang.org/protobuf v1.23.1-0.20200526195155-81db48ad09cc/go.mod h1:EGpAD google.golang.org/protobuf v1.24.0/go.mod h1:r/3tXBNzIEhYS9I1OUVjXDlt8tc493IdKGjtUeSXeh4= google.golang.org/protobuf v1.25.0/go.mod h1:9JNX74DMeImyA3h4bdi1ymwjUzf21/xIlbajtzgsN7c= google.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp09yW+WbY/TyQbw= -google.golang.org/protobuf v1.31.0 h1:g0LDEJHgrBl9N9r17Ru3sqWhkIx2NB67okBHPwC7hs8= -google.golang.org/protobuf v1.31.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= +google.golang.org/protobuf v1.26.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc= +google.golang.org/protobuf v1.32.0 h1:pPC6BG5ex8PDFnkbrGU3EixyhKcQ2aDuBS36lqK/C7I= +google.golang.org/protobuf v1.32.0/go.mod h1:c6P6GXX6sHbq/GpV6MGZEdwhWPcYBgnhAHhKbcUYpos= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= diff --git a/scripts/check-dependencies.bash b/scripts/check-dependencies.bash index 7415e395..91b4e22a 100755 --- a/scripts/check-dependencies.bash +++ b/scripts/check-dependencies.bash @@ -81,8 +81,8 @@ fi # on the same XDR revision # TODO: The sed extractions below won't work when the commit is not included in the Core image tag/debian packages version -CORE_CONTAINER_REVISION=$($SED -n 's/.*\/\(stellar-core\|unsafe-stellar-core\(-next\)\{0,1\}\)\:.*\..*-[^\.]*\.\(.*\)\..*/\3/p' < cmd/soroban-rpc/internal/test/docker-compose.yml) -CAPTIVE_CORE_PKG_REVISION=$($SED -n 's/.*DEBIAN_PKG_VERSION:.*\..*-[^\.]*\.\(.*\)\..*/\1/p' < .github/workflows/soroban-rpc.yml) +CORE_CONTAINER_REVISION=$($SED -n 's/.*\/\(stellar-core\|unsafe-stellar-core\(-next\)\{0,1\}\)\:.*\.\([a-zA-Z0-9]*\)\..*/\3/p' < cmd/soroban-rpc/internal/test/docker-compose.yml) +CAPTIVE_CORE_PKG_REVISION=$($SED -n 's/.*DEBIAN_PKG_VERSION:..*\.\([a-zA-Z0-9]*\)\..*/\1/p' < .github/workflows/soroban-rpc.yml) if [ "$CORE_CONTAINER_REVISION" != "$CAPTIVE_CORE_PKG_REVISION" ]; then echo "Soroban RPC integration tests are using different versions of the Core container and Captive Core Debian package." From c5a2d6bcd9bc7340595f1229dee14ea9133eb046 Mon Sep 17 00:00:00 2001 From: Alfonso Acosta Date: Mon, 5 Feb 2024 08:58:18 -0800 Subject: [PATCH 5/5] Bump dependencies for pubnet release (#1189) * Bump dependencies for pubnet release * Fix core version checker to accept rc version tags (cherry picked from commit 90f7cd93012b956f2c22fd5204a33800a4d78fc4) --- Cargo.lock | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/Cargo.lock b/Cargo.lock index c5cc9e35..4078741d 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -2586,6 +2586,8 @@ dependencies = [ name = "soroban-spec" version = "20.3.0" source = "git+https://github.com/stellar/rs-soroban-sdk?rev=4aef54ff9295c2fca4c5b9fbd2c92d0ff99f67de#4aef54ff9295c2fca4c5b9fbd2c92d0ff99f67de" +version = "20.3.0" +source = "git+https://github.com/stellar/rs-soroban-sdk?rev=4aef54ff9295c2fca4c5b9fbd2c92d0ff99f67de#4aef54ff9295c2fca4c5b9fbd2c92d0ff99f67de" dependencies = [ "base64 0.13.1", "stellar-xdr", @@ -2598,6 +2600,7 @@ name = "soroban-spec-json" version = "20.2.0" source = "git+https://github.com/stellar/soroban-tools?rev=6a19e181a5699c33b409f1c39f6fdc6b784769e0#6a19e181a5699c33b409f1c39f6fdc6b784769e0" version = "20.3.0" +version = "20.3.0" dependencies = [ "serde", "serde_derive", @@ -2628,6 +2631,7 @@ name = "soroban-spec-tools" version = "20.2.0" source = "git+https://github.com/stellar/soroban-tools?rev=6a19e181a5699c33b409f1c39f6fdc6b784769e0#6a19e181a5699c33b409f1c39f6fdc6b784769e0" version = "20.3.0" +version = "20.3.0" dependencies = [ "base64 0.21.5", "ethnum", @@ -2663,6 +2667,7 @@ name = "soroban-spec-typescript" version = "20.2.0" source = "git+https://github.com/stellar/soroban-tools?rev=6a19e181a5699c33b409f1c39f6fdc6b784769e0#6a19e181a5699c33b409f1c39f6fdc6b784769e0" version = "20.3.0" +version = "20.3.0" dependencies = [ "base64 0.21.5", "heck",