Skip to main content
edited title
Link

How to define type parameter in decodeParameter method to get revert message in Web3js?

Became Hot Network Question
deleted 3 characters in body
Source Link

How to define type parameter in decodeParameter method to get revert message in Web3js?

I want to get the revert massage from a send method call to a smart contract. So I use: receipt.logs[0].data that is a string containing a hexadecimal value.

Now I want to to decode this value to get the revert message. So I use web3.eth.abi.decodeParameter method. The main problem is how to give type parameter to get the proper message.

For example If I give:

    const data = '0x0000000000000000000000000000000000000000000000000000c51ccda68b0000000000000000000000000000000000000000000000000002774a57aab99b34000000000000000000000000000000000000000000003692f60f63a91b794ce70000000000000000000000000000000000000000000000000276853add131034000000000000000000000000000000000000000000003692f61028c5e91fd7e7';
    window.web3 = new Web3('https://rpc-mumbai.maticvigil.com');
    window.ethereum.enable();
    web3.eth.handleRevert = true;
    let revertType = [{
        type: 'string', 
        name: 'message'
    }];
    const reason = web3.eth.abi.decodeParameter(revertType, data);
    console.log(reason);

It logs:

Uncaught (in promise) Error: invalid type (argument="type", value="messanger", code=INVALID_ARGUMENT, version=abi/5.7.0)

And if I use:

    const data = '0x0000000000000000000000000000000000000000000000000000c51ccda68b0000000000000000000000000000000000000000000000000002774a57aab99b34000000000000000000000000000000000000000000003692f60f63a91b794ce70000000000000000000000000000000000000000000000000276853add131034000000000000000000000000000000000000000000003692f61028c5e91fd7e7';
    window.web3 = new Web3('https://rpc-mumbai.maticvigil.com');
    window.ethereum.enable();
    web3.eth.handleRevert = true;
    const reason = web3.eth.abi.decodeParameter('string', data);
    console.log(reason);

It logs:

index.ts:269 Uncaught (in promise) Error: data out-of-bounds (length=0, offset=32, code=BUFFER_OVERRUN, version=abi/5.7.0)

The txHash in this example is 0x074e91fe5c1535d9bdc2bbc8cbadc0378c93eb06318401b1f341d844185430fb on Mumbai Polygon testnet:

   https://mumbai.polygonscan.com/tx/0x074e91fe5c1535d9bdc2bbc8cbadc0378c93eb06318401b1f341d844185430fb

How to define type parameter in decodeParameter method to get revert message?

I want to get the revert massage from a send method call to a smart contract. So I use: receipt.logs[0].data that is a string containing a hexadecimal value.

Now I want to to decode this value to get the revert message. So I use web3.eth.abi.decodeParameter method. The main problem is how to give type parameter to get the proper message.

For example If I give:

    const data = '0x0000000000000000000000000000000000000000000000000000c51ccda68b0000000000000000000000000000000000000000000000000002774a57aab99b34000000000000000000000000000000000000000000003692f60f63a91b794ce70000000000000000000000000000000000000000000000000276853add131034000000000000000000000000000000000000000000003692f61028c5e91fd7e7';
    window.web3 = new Web3('https://rpc-mumbai.maticvigil.com');
    window.ethereum.enable();
    web3.eth.handleRevert = true;
    let revertType = [{
        type: 'string', 
        name: 'message'
    }];
    const reason = web3.eth.abi.decodeParameter(revertType, data);
    console.log(reason);

It logs:

Uncaught (in promise) Error: invalid type (argument="type", value="messanger", code=INVALID_ARGUMENT, version=abi/5.7.0)

And if I use:

    const data = '0x0000000000000000000000000000000000000000000000000000c51ccda68b0000000000000000000000000000000000000000000000000002774a57aab99b34000000000000000000000000000000000000000000003692f60f63a91b794ce70000000000000000000000000000000000000000000000000276853add131034000000000000000000000000000000000000000000003692f61028c5e91fd7e7';
    window.web3 = new Web3('https://rpc-mumbai.maticvigil.com');
    window.ethereum.enable();
    web3.eth.handleRevert = true;
    const reason = web3.eth.abi.decodeParameter('string', data);
    console.log(reason);

It logs:

index.ts:269 Uncaught (in promise) Error: data out-of-bounds (length=0, offset=32, code=BUFFER_OVERRUN, version=abi/5.7.0)

The txHash in this example is 0x074e91fe5c1535d9bdc2bbc8cbadc0378c93eb06318401b1f341d844185430fb on Mumbai Polygon testnet:

 https://mumbai.polygonscan.com/tx/0x074e91fe5c1535d9bdc2bbc8cbadc0378c93eb06318401b1f341d844185430fb

How to define type parameter in decodeParameter method to get revert message in Web3js?

I want to get the revert massage from a send method call to a smart contract. So I use: receipt.logs[0].data that is a string containing a hexadecimal value.

Now I want to to decode this value to get the revert message. So I use web3.eth.abi.decodeParameter method. The main problem is how to give type parameter to get the proper message.

For example If I give:

    const data = '0x0000000000000000000000000000000000000000000000000000c51ccda68b0000000000000000000000000000000000000000000000000002774a57aab99b34000000000000000000000000000000000000000000003692f60f63a91b794ce70000000000000000000000000000000000000000000000000276853add131034000000000000000000000000000000000000000000003692f61028c5e91fd7e7';
    window.web3 = new Web3('https://rpc-mumbai.maticvigil.com');
    window.ethereum.enable();
    web3.eth.handleRevert = true;
    let revertType = [{
        type: 'string', 
        name: 'message'
    }];
    const reason = web3.eth.abi.decodeParameter(revertType, data);
    console.log(reason);

It logs:

Uncaught (in promise) Error: invalid type (argument="type", value="messanger", code=INVALID_ARGUMENT, version=abi/5.7.0)

And if I use:

    const data = '0x0000000000000000000000000000000000000000000000000000c51ccda68b0000000000000000000000000000000000000000000000000002774a57aab99b34000000000000000000000000000000000000000000003692f60f63a91b794ce70000000000000000000000000000000000000000000000000276853add131034000000000000000000000000000000000000000000003692f61028c5e91fd7e7';
    window.web3 = new Web3('https://rpc-mumbai.maticvigil.com');
    window.ethereum.enable();
    web3.eth.handleRevert = true;
    const reason = web3.eth.abi.decodeParameter('string', data);
    console.log(reason);

It logs:

index.ts:269 Uncaught (in promise) Error: data out-of-bounds (length=0, offset=32, code=BUFFER_OVERRUN, version=abi/5.7.0)

The txHash in this example is 0x074e91fe5c1535d9bdc2bbc8cbadc0378c93eb06318401b1f341d844185430fb on Mumbai Polygon testnet:  https://mumbai.polygonscan.com/tx/0x074e91fe5c1535d9bdc2bbc8cbadc0378c93eb06318401b1f341d844185430fb

Source Link

How to define type parameter in decodeParameter method to get revert message?

I want to get the revert massage from a send method call to a smart contract. So I use: receipt.logs[0].data that is a string containing a hexadecimal value.

Now I want to to decode this value to get the revert message. So I use web3.eth.abi.decodeParameter method. The main problem is how to give type parameter to get the proper message.

For example If I give:

    const data = '0x0000000000000000000000000000000000000000000000000000c51ccda68b0000000000000000000000000000000000000000000000000002774a57aab99b34000000000000000000000000000000000000000000003692f60f63a91b794ce70000000000000000000000000000000000000000000000000276853add131034000000000000000000000000000000000000000000003692f61028c5e91fd7e7';
    window.web3 = new Web3('https://rpc-mumbai.maticvigil.com');
    window.ethereum.enable();
    web3.eth.handleRevert = true;
    let revertType = [{
        type: 'string', 
        name: 'message'
    }];
    const reason = web3.eth.abi.decodeParameter(revertType, data);
    console.log(reason);

It logs:

Uncaught (in promise) Error: invalid type (argument="type", value="messanger", code=INVALID_ARGUMENT, version=abi/5.7.0)

And if I use:

    const data = '0x0000000000000000000000000000000000000000000000000000c51ccda68b0000000000000000000000000000000000000000000000000002774a57aab99b34000000000000000000000000000000000000000000003692f60f63a91b794ce70000000000000000000000000000000000000000000000000276853add131034000000000000000000000000000000000000000000003692f61028c5e91fd7e7';
    window.web3 = new Web3('https://rpc-mumbai.maticvigil.com');
    window.ethereum.enable();
    web3.eth.handleRevert = true;
    const reason = web3.eth.abi.decodeParameter('string', data);
    console.log(reason);

It logs:

index.ts:269 Uncaught (in promise) Error: data out-of-bounds (length=0, offset=32, code=BUFFER_OVERRUN, version=abi/5.7.0)

The txHash in this example is 0x074e91fe5c1535d9bdc2bbc8cbadc0378c93eb06318401b1f341d844185430fb on Mumbai Polygon testnet:

https://mumbai.polygonscan.com/tx/0x074e91fe5c1535d9bdc2bbc8cbadc0378c93eb06318401b1f341d844185430fb