|
@@ -0,0 +1,36 @@
|
|
|
|
|
+/*
|
|
|
|
|
+ This script advances Ganache network state. It runs as a sidecar pod alongside the devnet and
|
|
|
|
|
+ ensures that manual token transfers triggered through the web UI will be able to be confirmed.
|
|
|
|
|
+ */
|
|
|
|
|
+
|
|
|
|
|
+advanceBlock = () => {
|
|
|
|
|
+ return new Promise((resolve, reject) => {
|
|
|
|
|
+ web3.currentProvider.send({
|
|
|
|
|
+ jsonrpc: "2.0",
|
|
|
|
|
+ method: "evm_mine",
|
|
|
|
|
+ id: new Date().getTime()
|
|
|
|
|
+ }, (err, result) => {
|
|
|
|
|
+ if (err) {
|
|
|
|
|
+ return reject(err);
|
|
|
|
|
+ }
|
|
|
|
|
+ const newBlockHash = web3.eth.getBlock('latest').hash;
|
|
|
|
|
+
|
|
|
|
|
+ return resolve(newBlockHash)
|
|
|
|
|
+ });
|
|
|
|
|
+ });
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+function sleep(ms) {
|
|
|
|
|
+ return new Promise(resolve => setTimeout(resolve, ms));
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+module.exports = function(callback) {
|
|
|
|
|
+ const fn = async () => {
|
|
|
|
|
+ while (true) {
|
|
|
|
|
+ console.log(await advanceBlock());
|
|
|
|
|
+ await sleep(1000);
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ fn().catch(reason => console.error(reason))
|
|
|
|
|
+}
|