12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485 |
- // import {ApiPromise, WsProvider} from "@polkadot/api";
- // import {Hash, Header} from "@polkadot/types/interfaces/runtime";
- // import { types } from '@joystream/types'
- //
- // async function main() {
- // let startDate = new Date(2020, 4, 20, 13, 0);
- // console.log(startDate);
- // let endDate = new Date(2020, 4, 29, 23, 59);
- //
- // // Initialise the provider to connect to the local node
- // const provider = new WsProvider('wss://rome-rpc-endpoint.joystream.org:9944');
- //
- // // Create the API and wait until ready
- // const api = await ApiPromise.create({provider, types});
- //
- // let blockInterval = await getBlockInterval(api, startDate.getTime(), endDate.getTime());
- // console.log(blockInterval);
- // }
- //
- // async function getBlockInterval(api: ApiPromise, startTimestamp: number, endTimestamp: number) {
- //
- // let approximateStartBlockHash = await getApproximatedBlockHash(api, startTimestamp);
- // let startBlock = await adjustApproximatedBlockHash(api, startTimestamp, approximateStartBlockHash);
- //
- // let approximateEndBlockHash = await getApproximatedBlockHash(api, endTimestamp);
- // let endBlock = await adjustApproximatedBlockHash(api, endTimestamp, approximateEndBlockHash);
- //
- // let startBlockHeader = await api.rpc.chain.getHeader(startBlock) as Header;
- // let endBlockHeader = await api.rpc.chain.getHeader(endBlock) as Header;
- //
- // return {
- // 'startBlock':
- // startBlockHeader.number.unwrap().toNumber(),
- // 'endBlock':
- // endBlockHeader.number.unwrap().toNumber()
- // };
- // }
- //
- // async function getApproximatedBlockHash(api: ApiPromise, timestampToFound: number): Promise<Hash> {
- // let lastHeader = await api.rpc.chain.getHeader();
- // let lastHash = lastHeader.hash.toString();
- // let lastTimestamp = parseInt((await api.query.timestamp.now.at(lastHash)).toString());
- //
- // let prevousBlockHash = lastHeader.parentHash;
- // let previousBlockTimestamp = parseInt((await api.query.timestamp.now.at(prevousBlockHash)).toString());
- //
- // let secondsPerBlock = lastTimestamp - previousBlockTimestamp;
- //
- // let blocksDiff = Math.floor((lastTimestamp - timestampToFound) / secondsPerBlock);
- // let lastBlockNumber = lastHeader.number.unwrap();
- // let approximatedBlockNr = lastBlockNumber.toNumber() - blocksDiff;
- // return await api.rpc.chain.getBlockHash(approximatedBlockNr);
- // }
- //
- // async function adjustApproximatedBlockHash(api: ApiPromise, timestamp: number, hash: Hash) {
- // let approximatedBlockTimestamp = parseInt((await api.query.timestamp.now.at(hash)).toString());
- //
- // if (timestamp == approximatedBlockTimestamp) {
- // return hash;
- // }
- //
- // let step = 1;
- // if (timestamp < approximatedBlockTimestamp) {
- // step = -1;
- // }
- //
- // let approximatedBlockHeader = await api.rpc.chain.getHeader(hash);
- // let blockNumber = approximatedBlockHeader.number.unwrap().toNumber();
- // let lastHashFound = hash;
- // do {
- // blockNumber += step;
- // let nextBlockHash = await api.rpc.chain.getBlockHash(blockNumber);
- // let nextBlockTimeStamp = parseInt((await api.query.timestamp.now.at(nextBlockHash)).toString());
- //
- // if (Math.abs(approximatedBlockTimestamp - timestamp) < Math.abs(nextBlockTimeStamp - timestamp)) {
- // return lastHashFound;
- // }
- //
- // approximatedBlockTimestamp = nextBlockTimeStamp;
- // lastHashFound = nextBlockHash;
- //
- // } while (true);
- // }
- //
- // main();
|