-
Notifications
You must be signed in to change notification settings - Fork 145
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Make it possible and easy to manipulate next block's block_timestamp #207
Comments
Hey @cmichi @pgherveou, is it possible to add such functionality? |
@pgherveou up! |
Sorry for the slow reply will look into options when i get a chance next week |
mmm I guess we could do that by exposing a subxt client to call sudo::timestamp::now Not sure it fits your use case, but with drink! you can do something like this #[drink::test]
fn some_test() -> Result<(), Box<dyn Error>> {
let contract = BundleProvider::local()?;
let mut session = Session::<MinimalRuntime>::new()?
.deploy_bundle_and(contract, "new", &["true"], vec![], None)?;
// manipulate timestamp
session.sandbox().set_timestamp(1);
// do more testing
Ok(())
} |
Hey @pgherveou, we have managed to modify the pallet timestamp and use it in the contract node. Check it here: https://github.com/WookashWackomy/custom-substrate-contracts-node/tree/contracts-node-custom-timestamp-pallet. In the shared repo, a new storage field to pallet-timestamp "fake_time" was added. "fake_time" may be set with a "set_time" call. If "fake_time" != 0 then it is used instead of the real time. It would be beneficial for every developer to add something similar to this repo. The question is how to manage the timestamp. There is one problem we don't know how to solve yet. Namely, when the node is restarted with '--base-path' argument, it should restart with the state that was previously saved at the path. The state of contracts is restored properly but the state of pallet_timestamp storage is not... |
@pgherveou up, what do you think about the above? |
A few questions:
|
Ad 1) we need to be able to modify time in e2e enviroment, not in drink enviroment. |
Some contracts must be tested in an e2e environment (using substrate-contract-node) with the possibility of testing their time-dependent behavior. To make such tests possible one should be able to manipulate the next block's block_timestamps. It would be great if such manipulation could be done using polkadot.js.
Currently, it is not possible to set a block_timestamp of the next block. The issue is to add such a functionality.
The text was updated successfully, but these errors were encountered: