Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions packages/core/contracts/cross-chain-oracle/OracleSpoke.sol
Original file line number Diff line number Diff line change
Expand Up @@ -104,7 +104,7 @@ contract OracleSpoke is
uint256 time,
bytes memory ancillaryData
) public view override nonReentrantView() onlyRegisteredContract() returns (bool) {
bytes32 priceRequestId = _encodePriceRequest(identifier, time, ancillaryData);
bytes32 priceRequestId = _encodePriceRequest(identifier, time, _stampAncillaryData(ancillaryData));
return prices[priceRequestId].state == RequestState.Resolved;
}

Expand Down Expand Up @@ -136,7 +136,7 @@ contract OracleSpoke is
uint256 time,
bytes memory ancillaryData
) public view override nonReentrantView() onlyRegisteredContract() returns (int256) {
bytes32 priceRequestId = _encodePriceRequest(identifier, time, ancillaryData);
bytes32 priceRequestId = _encodePriceRequest(identifier, time, _stampAncillaryData(ancillaryData));
Price storage lookup = prices[priceRequestId];
require(lookup.state == RequestState.Resolved, "Price has not been resolved");
return lookup.price;
Expand Down
22 changes: 9 additions & 13 deletions packages/core/test/cross-chain-oracle/OracleSpoke.js
Original file line number Diff line number Diff line change
Expand Up @@ -103,20 +103,18 @@ describe("OracleSpoke.js", async () => {
assert.equal(pushPriceEvents.length, 1);
assert.isTrue(
await oracleSpoke.methods
.hasPrice(defaultIdentifier, defaultTimestamp, expectedAncillaryData)
.hasPrice(defaultIdentifier, defaultTimestamp, defaultAncillaryData)
.call({ from: owner })
);
});
it("hasPrice", async function () {
let expectedAncillaryData = await oracleSpoke.methods.stampAncillaryData(defaultAncillaryData).call();

assert.isFalse(
await oracleSpoke.methods
.hasPrice(defaultIdentifier, defaultTimestamp, expectedAncillaryData)
.hasPrice(defaultIdentifier, defaultTimestamp, defaultAncillaryData)
.call({ from: owner })
);

expectedAncillaryData = await oracleSpoke.methods.stampAncillaryData(defaultAncillaryData).call();
let expectedAncillaryData = await oracleSpoke.methods.stampAncillaryData(defaultAncillaryData).call();
await messenger.methods
.publishPrice(
oracleSpoke.options.address,
Expand All @@ -130,13 +128,13 @@ describe("OracleSpoke.js", async () => {
// Only registered caller can call
assert(
await didContractThrow(
oracleSpoke.methods.hasPrice(defaultIdentifier, defaultTimestamp, expectedAncillaryData).call({ from: rando })
oracleSpoke.methods.hasPrice(defaultIdentifier, defaultTimestamp, defaultAncillaryData).call({ from: rando })
)
);

assert.isTrue(
await oracleSpoke.methods
.hasPrice(defaultIdentifier, defaultTimestamp, expectedAncillaryData)
.hasPrice(defaultIdentifier, defaultTimestamp, defaultAncillaryData)
.call({ from: owner })
);

Expand All @@ -155,16 +153,14 @@ describe("OracleSpoke.js", async () => {
assert.isTrue(await oracleSpoke.methods.hasPrice(defaultIdentifier, defaultTimestamp).call({ from: owner }));
});
it("getPrice", async function () {
let expectedAncillaryData = await oracleSpoke.methods.stampAncillaryData(defaultAncillaryData).call();

// Reverts if price not available
assert(
await didContractThrow(
oracleSpoke.methods.getPrice(defaultIdentifier, defaultTimestamp, expectedAncillaryData).call({ from: owner })
oracleSpoke.methods.getPrice(defaultIdentifier, defaultTimestamp, defaultAncillaryData).call({ from: owner })
)
);

expectedAncillaryData = await oracleSpoke.methods.stampAncillaryData(defaultAncillaryData).call();
let expectedAncillaryData = await oracleSpoke.methods.stampAncillaryData(defaultAncillaryData).call();
await messenger.methods
.publishPrice(
oracleSpoke.options.address,
Expand All @@ -178,13 +174,13 @@ describe("OracleSpoke.js", async () => {
// Only registered caller can call
assert(
await didContractThrow(
oracleSpoke.methods.getPrice(defaultIdentifier, defaultTimestamp, expectedAncillaryData).call({ from: rando })
oracleSpoke.methods.getPrice(defaultIdentifier, defaultTimestamp, defaultAncillaryData).call({ from: rando })
)
);

assert.equal(
await oracleSpoke.methods
.getPrice(defaultIdentifier, defaultTimestamp, expectedAncillaryData)
.getPrice(defaultIdentifier, defaultTimestamp, defaultAncillaryData)
.call({ from: owner }),
defaultPrice
);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -88,7 +88,7 @@ describe("Admin_ChildMessenger", function () {
// Encode price response data.
const dataToSend = web3.eth.abi.encodeParameters(
["bytes32", "uint256", "bytes", "int256"],
[identifier, timestamp, ancillaryData, "100"]
[identifier, timestamp, await oracleSpokeReal.methods.stampAncillaryData(ancillaryData).call(), "100"]
);

// Only the owner can send a message to the spoke contracts.
Expand Down