【问题标题】:How to advance block number when I’m developing on RSK Regtest?当我在 RSK Regtest 上开发时,如何提高块号?
【发布时间】:2021-01-25 13:01:29
【问题描述】:

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

智能合约使用区块号, 并且我需要增加块号而不实际等待时间过去。

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();
   });
)};

如何在上述松露(摩卡)测试中做到这一点?

【问题讨论】:

    标签: javascript mocha.js rsk


    【解决方案1】:

    快速说明,强调这一点不可能 “实际” RSK 区块链(主网和测试网), 因为它涉及“假”挖矿。

    但是,在 Regtest 中,这确实可能的:

    (1)

    使用evm_mine JSON-RPC 方法来挖块。

    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 JSON-RPC方法增加block的时间:

    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
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-05-05
      • 1970-01-01
      • 2021-05-27
      • 1970-01-01
      • 2021-08-20
      • 2021-09-25
      • 2021-11-25
      相关资源
      最近更新 更多