github.com/ethereum-optimism/optimism/l2geth@v0.0.0-20230612200230-50b04ade19e3/rollup/util/vm_errors.go (about)

     1  package util
     2  
     3  import (
     4  	"fmt"
     5  	"strings"
     6  
     7  	"github.com/ethereum-optimism/optimism/l2geth/accounts/abi"
     8  )
     9  
    10  var codec abi.ABI
    11  
    12  func init() {
    13  	const abidata = `
    14  	[
    15  		{
    16  			"type": "function",
    17  			"name": "Error",
    18  			"constant": true,
    19  			"inputs": [
    20  				{
    21  					"name": "msg",
    22  					"type": "string"
    23  				}
    24        ],
    25  			"outputs": []
    26  		}
    27  	]
    28  `
    29  
    30  	var err error
    31  	codec, err = abi.JSON(strings.NewReader(abidata))
    32  	if err != nil {
    33  		panic(fmt.Errorf("unable to create abi decoder: %v", err))
    34  	}
    35  }
    36  
    37  // EncodeSolidityError generates an abi-encoded error message.
    38  func EncodeSolidityError(err error) ([]byte, error) {
    39  	return codec.Pack("Error", err.Error())
    40  }