2

我有一个使用区块编号的智能合约,我需要增加区块编号而无需真正等待时间过去。

在 Regtest 中运行 RSK 节点时这可能吗?我怎样才能用 Javascript 做到这一点?

4

1 回答 1

4

在 Regtest 中,是的,确实有可能:使用evm_mineJSON-RPC 方法来挖掘块。

const asyncMine = async () => {
    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);
            });
    });
};

请注意,这与以太坊开发工具(例如 Ganache)中使用的方法一致。或者,用于evm_increaseTime增加块的时间:

function increaseTimestamp(web3, increase) {
    return new Promise((resolve, reject) => {
        web3.currentProvider.send({
            method: "evm_increaseTime",
            params: [increase],
            jsonrpc: "2.0",
            id: new Date().getTime()
          }, (error, result) => {
            if (error) {
                return reject(error);
            }
            return asyncMine().then( ()=> resolve(result));
          });
    }); 
}
于 2021-01-12T12:00:23.103 回答