@@ -3,10 +3,12 @@ module pizza_drop::airdrop {
use aptos_framework::account;
use aptos_std::table::{Self, Table};
use aptos_framework::event;
- use aptos_framework::timestamp;
use aptos_framework::coin::{Self, Coin};
use aptos_framework::aptos_coin::AptosCoin;
+ #[test_only]
+ use aptos_std::crypto_algebra::enable_cryptography_algebra_natives;
+
#[test_only]
use std::debug;
@@ -59,7 +61,8 @@ module pizza_drop::airdrop {
coin::register<AptosCoin>(&resource_signer);
}
- public entry fun register_pizza_lover(owner: &signer, user: address) acquires ModuleData, State {
+ #[randomness]
+ entry fun register_pizza_lover(owner: &signer, user: address) acquires ModuleData, State {
let state = borrow_global_mut<State>(get_resource_address());
assert!(signer::address_of(owner) == state.owner, E_NOT_OWNER);
get_random_slice(user);
@@ -117,12 +120,10 @@ module pizza_drop::airdrop {
coin::transfer<AptosCoin>(&resource_signer, to, amount);
}
- #[randomness]
- entry fun get_random_slice(user_addr: address) acquires ModuleData, State {
+ fun get_random_slice(user_addr: address) acquires ModuleData, State {
let state = borrow_global_mut<State>(get_resource_address());
- let time = timestamp::now_microseconds();
- let random_val = time % 401;
- let random_amount = 100 + random_val; // 100-500 APT (in Octas: 10^8 smallest unit)
+ // 100-500 APT (in Octas: 10^8 smallest unit)
+ let random_amount = 100 + aptos_framework::randomness::u64_range(0, 400);
table::add(&mut state.users_claimed_amount, user_addr, random_amount);
}
@@ -177,6 +178,11 @@ module pizza_drop::airdrop {
use aptos_framework::account;
use aptos_framework::timestamp;
use aptos_framework::aptos_coin;
+ use aptos_framework::randomness;
+
+ enable_cryptography_algebra_natives(framework);
+ randomness::initialize_for_testing(framework);
+ randomness::set_seed(x"0000000000000000000000000000000000000000000000000000000000000000");
// Initialize timestamp and APT for testing
timestamp::set_time_has_started_for_testing(framework);
@@ -270,6 +276,11 @@ module pizza_drop::airdrop {
use aptos_framework::account;
use aptos_framework::timestamp;
use aptos_framework::aptos_coin;
+ use aptos_framework::randomness;
+
+ enable_cryptography_algebra_natives(framework);
+ randomness::initialize_for_testing(framework);
+ randomness::set_seed(x"0000000000000000000000000000000000000000000000000000000000000000");
// Setup
timestamp::set_time_has_started_for_testing(framework);
@@ -349,6 +360,11 @@ module pizza_drop::airdrop {
use aptos_framework::account;
use aptos_framework::timestamp;
use aptos_framework::aptos_coin;
+ use aptos_framework::randomness;
+
+ enable_cryptography_algebra_natives(framework);
+ randomness::initialize_for_testing(framework);
+ randomness::set_seed(x"0000000000000000000000000000000000000000000000000000000000000000");
// Setup
timestamp::set_time_has_started_for_testing(framework);
@@ -379,4 +395,36 @@ module pizza_drop::airdrop {
coin::destroy_burn_cap(burn_cap);
coin::destroy_mint_cap(mint_cap);
}
}