Skip to content

Commit 78eee2b

Browse files
committed
Drop lastUpdateTimestamp
1 parent 35703f0 commit 78eee2b

File tree

10 files changed

+64
-24
lines changed

10 files changed

+64
-24
lines changed

go/report/report.go

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,10 @@ import (
44
"fmt"
55

66
"github.com/ethereum/go-ethereum/accounts/abi"
7+
78
v1 "github.com/smartcontractkit/data-streams-sdk/go/report/v1"
89
v10 "github.com/smartcontractkit/data-streams-sdk/go/report/v10"
10+
v13 "github.com/smartcontractkit/data-streams-sdk/go/report/v13"
911
v2 "github.com/smartcontractkit/data-streams-sdk/go/report/v2"
1012
v3 "github.com/smartcontractkit/data-streams-sdk/go/report/v3"
1113
v4 "github.com/smartcontractkit/data-streams-sdk/go/report/v4"
@@ -18,7 +20,7 @@ import (
1820

1921
// Data represents the actual report data and attributes
2022
type Data interface {
21-
v1.Data | v2.Data | v3.Data | v4.Data | v5.Data | v6.Data | v7.Data | v8.Data | v9.Data | v10.Data
23+
v1.Data | v2.Data | v3.Data | v4.Data | v5.Data | v6.Data | v7.Data | v8.Data | v9.Data | v10.Data | v13.Data
2224
Schema() abi.Arguments
2325
}
2426

go/report/report_test.go

Lines changed: 54 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,8 +8,10 @@ import (
88
"time"
99

1010
"github.com/ethereum/go-ethereum/accounts/abi"
11+
1112
v1 "github.com/smartcontractkit/data-streams-sdk/go/report/v1"
1213
v10 "github.com/smartcontractkit/data-streams-sdk/go/report/v10"
14+
v13 "github.com/smartcontractkit/data-streams-sdk/go/report/v13"
1315
v2 "github.com/smartcontractkit/data-streams-sdk/go/report/v2"
1416
v3 "github.com/smartcontractkit/data-streams-sdk/go/report/v3"
1517
v4 "github.com/smartcontractkit/data-streams-sdk/go/report/v4"
@@ -160,6 +162,20 @@ func TestReport(t *testing.T) {
160162
if !reflect.DeepEqual(v10Report, rv10) {
161163
t.Errorf("expected: %#v, got: %#v", v10Report, rv10)
162164
}
165+
166+
b, err = schema.Pack(v13Report.ReportContext, v13Report.ReportBlob, v13Report.RawRs, v13Report.RawSs, v13Report.RawVs)
167+
if err != nil {
168+
t.Errorf("failed to encode report: %s", err)
169+
}
170+
171+
rv13, err := Decode[v13.Data](b)
172+
if err != nil {
173+
t.Errorf("failed to decode report: %s", err)
174+
}
175+
176+
if !reflect.DeepEqual(v13Report, rv13) {
177+
t.Errorf("expected: %#v, got: %#v", v13Report, rv13)
178+
}
163179
}
164180

165181
var v1Report = &Report[v1.Data]{
@@ -252,6 +268,15 @@ var v10Report = &Report[v10.Data]{
252268
RawVs: [32]uint8{00, 01, 10, 74, 67, 29, 24, 17, 12, 18, 22, 11, 69, 11, 63, 86, 12, 86, 23, 58, 13, 53, 29, 12, 17, 10, 17, 12, 63, 27, 12, 14},
253269
}
254270

271+
var v13Report = &Report[v13.Data]{
272+
Data: v13Data,
273+
ReportContext: [3][32]uint8{},
274+
ReportBlob: mustPackData(v13Data),
275+
RawRs: [][32]uint8{{00, 01, 10, 74, 67, 29, 24, 17, 12, 18, 22, 11, 69, 11, 63, 86, 12, 86, 23, 58, 13, 53, 29, 12, 17, 10, 17, 12, 63, 27, 12, 14}},
276+
RawSs: [][32]uint8{{01, 02, 10, 73, 65, 19, 14, 27, 42, 48, 52, 18, 39, 116, 67, 85, 13, 82, 33, 48, 23, 33, 49, 32, 67, 50, 37, 32, 63, 77, 14, 64}},
277+
RawVs: [32]uint8{00, 01, 10, 74, 67, 29, 24, 17, 12, 18, 22, 11, 69, 11, 63, 86, 12, 86, 23, 58, 13, 53, 29, 12, 17, 10, 17, 12, 63, 27, 12, 14},
278+
}
279+
255280
var v1Data = v1.Data{
256281
FeedID: [32]uint8{00, 01, 107, 74, 167, 229, 124, 167, 182, 138, 225, 191, 69, 101, 63, 86, 182, 86, 253, 58, 163, 53, 239, 127, 174, 105, 107, 102, 63, 27, 132, 114},
257282
ObservationsTimestamp: uint32(time.Now().Unix()),
@@ -374,6 +399,20 @@ var v10Data = v10.Data{
374399
TokenizedPrice: big.NewInt(1001),
375400
}
376401

402+
var v13Data = v13.Data{
403+
FeedID: [32]uint8{00, 13, 19, 169, 185, 197, 227, 122, 9, 159, 55, 78, 146, 195, 121, 20, 175, 92, 38, 143, 58, 138, 151, 33, 241, 114, 81, 53, 191, 180, 203, 184},
404+
ValidFromTimestamp: uint32(time.Now().Unix()),
405+
ObservationsTimestamp: uint32(time.Now().Unix()),
406+
NativeFee: big.NewInt(10),
407+
LinkFee: big.NewInt(10),
408+
ExpiresAt: uint32(time.Now().Unix()) + 100,
409+
BestAsk: big.NewInt(75),
410+
BestBid: big.NewInt(78),
411+
AskVolume: 10000,
412+
BidVolume: 11000,
413+
LastTradedPrice: big.NewInt(76),
414+
}
415+
377416
func mustPackData(d interface{}) []byte {
378417
var args []interface{}
379418
var dataSchema abi.Arguments
@@ -511,6 +550,21 @@ func mustPackData(d interface{}) []byte {
511550
v.ActivationDateTime,
512551
v.TokenizedPrice,
513552
}
553+
case v13.Data:
554+
dataSchema = v13.Schema()
555+
args = []interface{}{
556+
v.FeedID,
557+
v.ValidFromTimestamp,
558+
v.ObservationsTimestamp,
559+
v.NativeFee,
560+
v.LinkFee,
561+
v.ExpiresAt,
562+
v.BestAsk,
563+
v.BestBid,
564+
v.AskVolume,
565+
v.BidVolume,
566+
v.LastTradedPrice,
567+
}
514568
default:
515569
panic(fmt.Sprintf("invalid type to pack: %#v", v))
516570
}

go/report/v13/data.go

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -20,20 +20,19 @@ func Schema() abi.Arguments {
2020
}
2121
return result
2222
}
23-
return abi.Arguments([]abi.Argument{
23+
return []abi.Argument{
2424
{Name: "feedId", Type: mustNewType("bytes32")},
2525
{Name: "validFromTimestamp", Type: mustNewType("uint32")},
2626
{Name: "observationsTimestamp", Type: mustNewType("uint32")},
2727
{Name: "nativeFee", Type: mustNewType("uint192")},
2828
{Name: "linkFee", Type: mustNewType("uint192")},
2929
{Name: "expiresAt", Type: mustNewType("uint32")},
30-
{Name: "lastUpdateTimestamp", Type: mustNewType("uint64")},
3130
{Name: "bestAsk", Type: mustNewType("int192")},
3231
{Name: "bestBid", Type: mustNewType("int192")},
3332
{Name: "askVolume", Type: mustNewType("uint64")},
3433
{Name: "bidVolume", Type: mustNewType("uint64")},
3534
{Name: "lastTradedPrice", Type: mustNewType("int192")},
36-
})
35+
}
3736
}
3837

3938
// Data is the container for this schema's attributes
@@ -44,7 +43,6 @@ type Data struct {
4443
NativeFee *big.Int
4544
LinkFee *big.Int
4645
ExpiresAt uint32
47-
LastUpdateTimestamp uint64
4846
BestAsk *big.Int
4947
BestBid *big.Int
5048
AskVolume uint64

go/report/v13/data_test.go

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,6 @@ func TestData(t *testing.T) {
1515
NativeFee: big.NewInt(10),
1616
LinkFee: big.NewInt(10),
1717
ExpiresAt: uint32(time.Now().Unix()) + 100,
18-
LastUpdateTimestamp: uint64(time.Now().UnixNano()) - 100,
1918
BestAsk: big.NewInt(105),
2019
BestBid: big.NewInt(101),
2120
AskVolume: 10001,
@@ -30,7 +29,6 @@ func TestData(t *testing.T) {
3029
r.NativeFee,
3130
r.LinkFee,
3231
r.ExpiresAt,
33-
r.LastUpdateTimestamp,
3432
r.BestAsk,
3533
r.BestBid,
3634
r.AskVolume,

rust/crates/report/src/report.rs

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -357,7 +357,6 @@ mod tests {
357357
native_fee: BigInt::from(MOCK_FEE),
358358
link_fee: BigInt::from(MOCK_FEE),
359359
expires_at: MOCK_TIMESTAMP + 100,
360-
last_update_timestamp: MOCK_TIMESTAMP as u64,
361360
best_ask: BigInt::from(MOCK_BEST_ASK),
362361
best_bid: BigInt::from(MOCK_BEST_BID),
363362
ask_volume: MARKET_ASK_VOLUME,

rust/crates/report/src/report/v13.rs

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,6 @@ use num_bigint::BigInt;
1414
/// - `native_fee`: Base cost to validate a transaction using the report, denominated in the chain's native token (e.g., WETH/ETH).
1515
/// - `link_fee`: Base cost to validate a transaction using the report, denominated in LINK.
1616
/// - `expires_at`: Latest timestamp where the report can be verified onchain.
17-
/// - `last_update_timestamp`: Timestamp of the last valid price update.
1817
/// - `best_ask`: The best (lowest) ask price (18 decimal precision).
1918
/// - `best_bid`: The best (highest) bid price (18 decimal precision).
2019
/// - `ask_volume`: Total volume of current ask positions.
@@ -30,7 +29,6 @@ use num_bigint::BigInt;
3029
/// uint192 nativeFee;
3130
/// uint192 linkFee;
3231
/// uint32 expiresAt;
33-
/// uint64 lastUpdateTimestamp;
3432
/// int192 best_ask;
3533
/// int192 best_bid;
3634
/// uint64 ask_volume;
@@ -82,7 +80,6 @@ impl ReportDataV13 {
8280
let native_fee = ReportBase::read_uint192(data, 3 * ReportBase::WORD_SIZE)?;
8381
let link_fee = ReportBase::read_uint192(data, 4 * ReportBase::WORD_SIZE)?;
8482
let expires_at = ReportBase::read_uint32(data, 5 * ReportBase::WORD_SIZE)?;
85-
let last_update_timestamp = ReportBase::read_uint64(data, 6 * ReportBase::WORD_SIZE)?;
8683
let best_ask = ReportBase::read_int192(data, 7 * ReportBase::WORD_SIZE)?;
8784
let best_bid = ReportBase::read_int192(data, 8 * ReportBase::WORD_SIZE)?;
8885
let ask_volume = ReportBase::read_uint64(data, 9 * ReportBase::WORD_SIZE)?;
@@ -96,7 +93,6 @@ impl ReportDataV13 {
9693
native_fee,
9794
link_fee,
9895
expires_at,
99-
last_update_timestamp,
10096
best_ask,
10197
best_bid,
10298
ask_volume,
@@ -168,7 +164,6 @@ mod tests {
168164
assert_eq!(decoded.native_fee, expected_fee);
169165
assert_eq!(decoded.link_fee, expected_fee);
170166
assert_eq!(decoded.expires_at, expected_timestamp + 100);
171-
assert_eq!(decoded.last_update_timestamp, expected_timestamp as u64);
172167
assert_eq!(decoded.best_ask, expected_best_ask);
173168
assert_eq!(decoded.best_bid, expected_best_bid);
174169
assert_eq!(decoded.ask_volume, expected_ask_volume);

typescript/src/decoder/implementation.ts

Lines changed: 5 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -136,7 +136,6 @@ const reportSchemaV13 = [
136136
{ type: "uint192", name: "nativeFee" },
137137
{ type: "uint192", name: "linkFee" },
138138
{ type: "uint32", name: "expiresAt" },
139-
{ type: "uint64", name: "lastUpdateTimestamp" },
140139
{ type: "int192", name: "bestAsk" },
141140
{ type: "int192", name: "bestBid" },
142141
{ type: "uint64", name: "askVolume" },
@@ -479,12 +478,11 @@ function decodeV13Report(reportBlob: string): DecodedV13Report {
479478
nativeFee: decoded[3],
480479
linkFee: decoded[4],
481480
expiresAt: Number(decoded[5]),
482-
lastUpdateTimestamp: Number(decoded[6]),
483-
bestAsk: decoded[7],
484-
bestBid: decoded[8],
485-
askVolume: Number(decoded[9]),
486-
bidVolume: Number(decoded[10]),
487-
lastTradedPrice: decoded[11],
481+
bestAsk: decoded[6],
482+
bestBid: decoded[7],
483+
askVolume: Number(decoded[8]),
484+
bidVolume: Number(decoded[9]),
485+
lastTradedPrice: decoded[10],
488486
};
489487
} catch (error) {
490488
throw new ReportDecodingError(

typescript/src/types/report.ts

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -176,7 +176,6 @@ export interface DecodedV10Report extends DecodedReportFields {
176176
*/
177177
export interface DecodedV13Report extends DecodedReportFields {
178178
version: "V13";
179-
lastUpdateTimestamp: number;
180179
bestAsk: bigint;
181180
bestBid: bigint;
182181
askVolume: number;

typescript/src/utils/report.ts

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -137,7 +137,6 @@ export function formatReport(
137137
}
138138
case "V13": {
139139
const r = report as DecodedV13Report;
140-
output += `Last Update: ${r.lastUpdateTimestamp}\n`;
141140
output += `Best Ask: ${r.bestAsk.toString()}\n`;
142141
output += `Best Bid: ${r.bestBid.toString()}\n`;
143142
output += `Ask Volume: ${r.askVolume.toString()}\n`;

typescript/tests/unit/decoder/decoder.test.ts

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -232,7 +232,6 @@ const mockV13ReportBlob = abiCoder.encode(
232232
1000000000000000000n, // 1 native token
233233
2000000000000000000n, // 2 LINK
234234
Math.floor(Date.now() / 1000) + 3600, // expires in 1 hour
235-
BigInt(Math.floor(Date.now() / 1000)), // lastUpdateTimestamp
236235
75000000000000000000n, // best ask $75
237236
78000000000000000000n, // best bid $78
238237
10000, // ask volume
@@ -683,7 +682,6 @@ describe("Report Decoder", () => {
683682
expect(decoded.nativeFee).toBeDefined();
684683
expect(decoded.linkFee).toBeDefined();
685684
expect(decoded.expiresAt).toBeDefined();
686-
expect(decoded.lastUpdateTimestamp).toBeDefined();
687685
expect(decoded.bestAsk).toBeDefined();
688686
expect(decoded.bestBid).toBeDefined();
689687
expect(decoded.askVolume).toBeDefined();

0 commit comments

Comments
 (0)