diff --git a/lazer/contracts/evm/src/PythLazerLib.sol b/lazer/contracts/evm/src/PythLazerLib.sol index 1d24ebad87..705ddca5ee 100644 --- a/lazer/contracts/evm/src/PythLazerLib.sol +++ b/lazer/contracts/evm/src/PythLazerLib.sol @@ -8,7 +8,9 @@ library PythLazerLib { enum PriceFeedProperty { Price, BestBidPrice, - BestAskPrice + BestAskPrice, + PublisherCount, + Exponent } enum Channel { @@ -74,6 +76,24 @@ library PythLazerLib { new_pos = pos; } + function parseFeedValueUint16( + bytes calldata update, + uint16 pos + ) public pure returns (uint16 value, uint16 new_pos) { + value = uint16(bytes2(update[pos:pos + 2])); + pos += 2; + new_pos = pos; + } + + function parseFeedValueInt16( + bytes calldata update, + uint16 pos + ) public pure returns (int16 value, uint16 new_pos) { + value = int16(uint16(bytes2(update[pos:pos + 2]))); + pos += 2; + new_pos = pos; + } + function parseFeedValueUint8( bytes calldata update, uint16 pos diff --git a/lazer/contracts/evm/test/PythLazer.t.sol b/lazer/contracts/evm/test/PythLazer.t.sol index 17a6d73043..a658f72e0a 100644 --- a/lazer/contracts/evm/test/PythLazer.t.sol +++ b/lazer/contracts/evm/test/PythLazer.t.sol @@ -34,11 +34,11 @@ contract PythLazerTest is Test { function test_verify() public { // Prepare dummy update and signer - address trustedSigner = 0xEfEf56cD66896f6799A90A4e4d512C330c094e44; + address trustedSigner = 0xb8d50f0bAE75BF6E03c104903d7C3aFc4a6596Da; vm.prank(address(1)); pythLazer.updateTrustedSigner(trustedSigner, 3000000000000000); bytes - memory update = hex"2a22999a577d3cc0202197939d736bc0dcf71b9dde7b9470e4d16fa8e2120c0787a1c0d744d0c39cc372af4d1ecf2d09e84160ca905f3f597d20e2eec144a446a0459ad600001c93c7d3750006240af373971c01010000000201000000000005f5e100"; + memory update = hex"2a22999a9ee4e2a3df5affd0ad8c7c46c96d3b5ef197dd653bedd8f44a4b6b69b767fbc66341e80b80acb09ead98c60d169b9a99657ebada101f447378f227bffbc69d3d01003493c7d37500062cf28659c1e801010000000605000000000005f5e10002000000000000000001000000000000000003000104fff8"; uint256 fee = pythLazer.verification_fee();