Pavel Strakhov 8bcdee8bb6 feat(lazer): add mapping to improve efficiency of evm contract (#2507) 8 ماه پیش
..
lib f68b5d5abc feat(lazer/contracts/evm): add deterministic deployment script (#2137) 1 سال پیش
script 57c302d0bc pre-commit 11 ماه پیش
src 8bcdee8bb6 feat(lazer): add mapping to improve efficiency of evm contract (#2507) 8 ماه پیش
test 49de9a239c fix(lazer): address evm contract audit (#2415) 8 ماه پیش
.gitignore 6ab44570b2 feat: add lazer contracts and sdks (#2119) 1 سال پیش
README.md 1bf3ae1b42 Pre-commit... again?! 11 ماه پیش
foundry.toml f68b5d5abc feat(lazer/contracts/evm): add deterministic deployment script (#2137) 1 سال پیش
remappings.txt 6ab44570b2 feat: add lazer contracts and sdks (#2119) 1 سال پیش

README.md

Pyth Lazer EVM Contract and SDK

This package is built using Foundry.

PythLazer is an EVM on-chain contract that keeps track of trusted signers of Pyth Lazer payloads. It allows consumers to easily check validity of Pyth Lazer signatures while enabling key rotation.

PythLazerReceiver contains utilities required to validate and parse Pyth Lazer payloads. Contracts should use PythLazerReceiver as the base contract (or one of the base contracts) of their contracts to gain access to the provided functions.

Build

$ forge build

Test

$ forge test

Format

$ forge fmt

Gas Snapshots

$ forge snapshot

Anvil

Anvil does not come with CreateX by default. It can be deployed or an RPC which has the contract can be forked. The below command forks an RPC with a functional CreateX contract.

$ anvil --fork-url "https://eth-sepolia.public.blastapi.io"

Deploy

$ forge script script/PythLazerDeploy.s.sol --rpc-url <your_rpc_url> --private-key <your_private_key> --broadcast

Upgrade

The UUPSUpgradeable feature adds functions to the cocntract which support upgrading through the use of an UUPS/ERC1967Proxy. A function can be defined to migrate state if needed. Be careful of changing storage slots when upgrading. See Documentation for more details. In addition, the private key is necessary or contracts will be deployed to different addresses than expected.

$ forge script script/PythLazerDeploy.s.sol --rpc-url <your_rpc_url> --private-key <your_private_key> --broadcast --sig "migrate()"

Cast

$ cast <subcommand>

Help

$ forge --help
$ anvil --help
$ cast --help