javascript - 当我在 RSK Regtest 上开发时,如何提高 block 号?

标签 javascript mocha.js rsk

我有一个智能合约,它检查实际 block 号是否高于固定 block 号以执行某些功能,我需要编写一个单元测试来验证该行为。我在 Regtest 模式下使用 RSK 来执行测试,我需要在不实际等待时间过去的情况下增加 block 号。
智能合约使用区 block 号,
我需要增加 block 号而不实际等待时间过去。

context('once deployed', function () {
   it('can only be released after cliff', async function () {
     // TODO here I need to increment time or block number
     await this.lockup.release();
   });
)};

我怎样才能在像上面这样的松露( Mocha )测试中做到这一点?

最佳答案

快速说明,强调这一点不是 可能在
“实际” RSK 区 block 链(主网和测试网),
因为它涉及“假”采矿。
然而,在 Regtest 中,这个 确实有可能:
(1)
使用 evm_mine JSON-RPC 方法来挖掘 block 。

function evmMine () {
    return new Promise((resolve, reject) => {
        web3.currentProvider.send({
            jsonrpc: "2.0",
            method: "evm_mine",
            id: new Date().getTime()
            }, (error, result) => {
                if (error) {
                    return reject(error);
                }
                return resolve(result);
            });
    });
};

await evmMine(); // Force a single block to be mined.
这与以太坊开发者工具中使用的方法是一致的,例如伽纳彻。
(2)
使用 evm_increaseTime增加 block 时间的 JSON-RPC 方法:
function evmIncreaseTime(seconds) {
    return new Promise((resolve, reject) => {
        web3.currentProvider.send({
            method: "evm_increaseTime",
            params: [seconds],
            jsonrpc: "2.0",
            id: new Date().getTime()
          }, (error, result) => {
            if (error) {
                return reject(error);
            }
            return asyncMine().then( ()=> resolve(result));
          });
    }); 
}

await evmIncreaseTime(600); // Force block to be mined such that ~10 minutes has passed

关于javascript - 当我在 RSK Regtest 上开发时,如何提高 block 号?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65885291/

相关文章:

javascript - 如何使用 jQuery/js 打开多个窗口并触发表单提交事件?

javascript - 如何隔离和迭代 React 应用程序中的各个 React 组件

angularjs - Angular Mocks 'module' 第二次运行失败

javascript - 为什么 Mocha 没有内置的断言定义

bit-manipulation - 在 Solidity 中将 uint24 转换为 HEX 字符串

javascript - 通过主键选择记录

javascript - Cypress 无法使用 ENOTFOUND 加载网站

rsk - 可以在 RSK 上使用空的 'tx.data' 创建部署交易吗?

javascript - JavaScript 可以引用当前文件夹之外的图像源吗?

web3 - RSK 中出现 "transaction nonce too high"错误怎么办?