地址在solidity中收到令牌的时间戳

问题描述

试图找到一种方法或文档来获取地址在智能合约中收到令牌的时间的 timestamp

我已经阅读了许多基于 reflection 的合同,这些合同根据时间对接收和发送代币收取不同级别的费用,但天真地说,以下不只是从交换开始到那时的情况在被调用函数中?

uint256 private _start_timestamp = block.timestamp;

function _getMultiplier() private view returns (uint256) {
    uint256 time_since_start = block.timestamp - _start_timestamp;
    uint256 hour = 60 * 60;
    if (time_since_start < 1 * hour) {
        return (3);
    } else if (time_since_start < 2 * hour) {
        return (2);
    } else {
        return (1);
    }
}

我对 block.timestamp 仅适用于合同创建的理解是否正确?

如果是这样,我需要知道当前地址是否正在发送令牌,他们何时收到令牌。这怎么可能?

我想到的另一件事是,我最初认为我可以使用 Pancakeswap 路由器来识别时间戳。然而,虽然初始流动性将被添加到 Pancakeswap,但同样的逻辑需要应用于交易所。

解决方法

我对 block.timestamp 仅适用于合约创建的理解是否正确?

不,block.timestamp 适用于每个交易。它不适用于读取。

如果是这样,我需要知道当前地址是否正在发送令牌,他们何时收到令牌。这怎么可能?

这是调用 block.timestamp 时的 transferFrom

以下内容不就是从交换开始到被调用函数的那个​​点吗?

您的问题没有足够的源代码和上下文信息来回答这个问题,例如函数的调用是如何完成的以及由谁完成的。

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...