Skip to content

Latest commit

 

History

History
108 lines (62 loc) · 5.81 KB

TransactionTimeout.md

File metadata and controls

108 lines (62 loc) · 5.81 KB

Module 0x1::TransactionTimeout

A module used to check expiration time of transactions.

Function is_valid_transaction_timestamp

Check whether the given timestamp is valid for transactions.

public fun is_valid_transaction_timestamp(txn_timestamp: u64): bool
Implementation
public fun is_valid_transaction_timestamp(txn_timestamp: u64): bool {
  let current_block_time = Timestamp::now_seconds();
  let block_number = Block::get_current_block_number();
  // before first block, just require txn_timestamp > genesis timestamp.
  if (block_number == 0) {
    return txn_timestamp > current_block_time
  };
  let timeout = TransactionTimeoutConfig::duration_seconds();
  let max_txn_time = current_block_time + timeout;
  current_block_time < txn_timestamp && txn_timestamp < max_txn_time
}
Specification

Module Specification

pragma verify;
pragma aborts_if_is_strict;

fun spec_is_valid_transaction_timestamp(txn_timestamp: u64):bool {
 if (Block::get_current_block_number() == 0) {
   txn_timestamp > Timestamp::now_seconds()
 } else {
     Timestamp::now_seconds() < txn_timestamp && txn_timestamp <
     (Timestamp::now_seconds() + TransactionTimeoutConfig::duration_seconds())
 }
}