Procházet zdrojové kódy

feat(lazer-protocol): Update EVM payload (#2314)

* Remove real time from channel options

* Bump version

* Update enums for payload and use newer payload

* Change example payload

* Retain real time

* Reorder properties

* Comma

* Revert update to JS version
Darun Seethammagari před 9 měsíci
rodič
revize
5ef46e4986

+ 21 - 1
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

+ 2 - 2
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();