set_update_fee.move 970 B

123456789101112131415161718192021222324252627282930313233343536
  1. module pyth::set_update_fee {
  2. use wormhole::cursor;
  3. use pyth::deserialize;
  4. use std::math64;
  5. use pyth::state;
  6. friend pyth::governance;
  7. const MAX_U64: u128 = (1 << 64) - 1;
  8. struct SetUpdateFee {
  9. mantissa: u64,
  10. exponent: u64,
  11. }
  12. public(friend) fun execute(payload: vector<u8>) {
  13. let SetUpdateFee { mantissa, exponent } = from_byte_vec(payload);
  14. let fee = apply_exponent(mantissa, exponent);
  15. state::set_update_fee(fee);
  16. }
  17. fun from_byte_vec(bytes: vector<u8>): SetUpdateFee {
  18. let cursor = cursor::init(bytes);
  19. let mantissa = deserialize::deserialize_u64(&mut cursor);
  20. let exponent = deserialize::deserialize_u64(&mut cursor);
  21. cursor::destroy_empty(cursor);
  22. SetUpdateFee {
  23. mantissa,
  24. exponent,
  25. }
  26. }
  27. fun apply_exponent(mantissa: u64, exponent: u64): u64 {
  28. mantissa * math64::pow(10, exponent)
  29. }
  30. }