diff --git a/.github/workflows/publish.yaml b/.github/workflows/publish.yaml index 1d44d1ca9..a49e8cf86 100644 --- a/.github/workflows/publish.yaml +++ b/.github/workflows/publish.yaml @@ -30,17 +30,6 @@ jobs: # size and performance optimized binary with profile.cli run: cargo b --release -p libra - # release bin - - name: libra publish - if: ${{ !contains(github.ref, 'ci-bins') }} - uses: svenstaro/upload-release-action@v2 - with: - repo_token: ${{ secrets.GITHUB_TOKEN }} - file: target/release/libra - tag: ${{ github.ref }} - overwrite: true - file_glob: true - # CI bin - name: libra publish if: ${{ contains(github.ref, 'ci-bins') }} diff --git a/framework/libra-framework/sources/ol_sources/activity.move b/framework/libra-framework/sources/ol_sources/activity.move new file mode 100644 index 000000000..b40d2b0de --- /dev/null +++ b/framework/libra-framework/sources/ol_sources/activity.move @@ -0,0 +1,26 @@ + +/// Maintains the version number for the blockchain. +module ol_framework::activity { + use std::signer; + + friend diem_framework::transaction_validation; + + struct Activity has key { + timestamp: u64, + } + + fun lazy_initialize(user: &signer, timestamp: u64) { + if (!exists(signer::address_of(user))) { + move_to(user, Activity { + timestamp + }) + } + } + public(friend) fun increment(user: &signer, timestamp: u64) acquires Activity { + lazy_initialize(user, timestamp); + + let state = borrow_global_mut(signer::address_of(user)); + state.timestamp = timestamp; + + } +} diff --git a/framework/libra-framework/sources/transaction_validation.move b/framework/libra-framework/sources/transaction_validation.move index 41b9ba611..10ffa0a71 100644 --- a/framework/libra-framework/sources/transaction_validation.move +++ b/framework/libra-framework/sources/transaction_validation.move @@ -5,14 +5,14 @@ module diem_framework::transaction_validation { use std::vector; use diem_framework::account; - // use diem_framework::diem_coin::DiemCoin; - use ol_framework::libra_coin::{Self, LibraCoin}; use diem_framework::chain_id; use diem_framework::coin; use diem_framework::system_addresses; use diem_framework::timestamp; use diem_framework::transaction_fee; + use ol_framework::libra_coin::{Self, LibraCoin}; + use ol_framework::activity; // use diem_std::debug::print; friend diem_framework::genesis; @@ -75,8 +75,9 @@ module diem_framework::transaction_validation { txn_expiration_time: u64, chain_id: u8, ) { + let time = timestamp::now_seconds(); assert!( - timestamp::now_seconds() < txn_expiration_time, + time < txn_expiration_time, error::invalid_argument(PROLOGUE_ETRANSACTION_EXPIRED), ); assert!(chain_id::get() == chain_id, error::invalid_argument(PROLOGUE_EBAD_CHAIN_ID)); @@ -113,6 +114,8 @@ module diem_framework::transaction_validation { ); let balance = libra_coin::balance(transaction_sender); assert!(balance >= max_transaction_fee, error::invalid_argument(PROLOGUE_ECANT_PAY_GAS_DEPOSIT)); + + activity::increment(&sender, time); } fun module_prologue( @@ -204,6 +207,7 @@ module diem_framework::transaction_validation { // later redistribution. transaction_fee::collect_fee(addr, transaction_fee_amount); }; + // Increment sequence number account::increment_sequence_number(addr); }