我正在使用Rust语言编写Solana合约,遇到了一个关键性问题。
为了获取当前的Unix时间戳,我像下面这样使用了SystemTime
。
let current_timestamp: i64 = SystemTime::now()
.duration_since(UNIX_EPOCH)
.unwrap()
.as_secs() as i64;
顺便说一下,客户要求不使用SystemTime
,因为它浪费了太多的计算资源。
针对这个问题,我使用了BpfClock
,但是它没有通过单元测试。
let clock = BpfClock::get()?;
let current_timestamp: i64 = clock.unix_timestamp;
以下是单元测试结果的错误信息:
thread 'processor::tests::test_withdraw' panicked at 'called `Result::unwrap()` on an `Err` value: UnsupportedSysvar'