github.com/klaytn/klaytn@v1.12.1/tests/evm_op_benchmark_test.go (about)

     1  // Copyright 2019 The klaytn Authors
     2  // This file is part of the klaytn library.
     3  //
     4  // The klaytn library is free software: you can redistribute it and/or modify
     5  // it under the terms of the GNU Lesser General Public License as published by
     6  // the Free Software Foundation, either version 3 of the License, or
     7  // (at your option) any later version.
     8  //
     9  // The klaytn library is distributed in the hope that it will be useful,
    10  // but WITHOUT ANY WARRANTY; without even the implied warranty of
    11  // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
    12  // GNU Lesser General Public License for more details.
    13  //
    14  // You should have received a copy of the GNU Lesser General Public License
    15  // along with the klaytn library. If not, see <http://www.gnu.org/licenses/>.
    16  
    17  package tests
    18  
    19  import (
    20  	"crypto/ecdsa"
    21  	"encoding/json"
    22  	"fmt"
    23  	"math/big"
    24  	"strings"
    25  	"testing"
    26  	"time"
    27  
    28  	"github.com/klaytn/klaytn/accounts/abi"
    29  	"github.com/klaytn/klaytn/blockchain/types"
    30  	"github.com/klaytn/klaytn/common"
    31  	"github.com/klaytn/klaytn/common/compiler"
    32  	"github.com/klaytn/klaytn/common/profile"
    33  	"github.com/klaytn/klaytn/crypto"
    34  	"github.com/klaytn/klaytn/log"
    35  	"github.com/klaytn/klaytn/params"
    36  	"github.com/stretchr/testify/assert"
    37  	"github.com/stretchr/testify/require"
    38  )
    39  
    40  type BenchmarkEvmOpTestCase struct {
    41  	testName string
    42  	funcName string
    43  	input    []interface{}
    44  }
    45  
    46  func BenchmarkEvmOp(t *testing.B) {
    47  	log.EnableLogForTest(log.LvlCrit, log.LvlTrace)
    48  	prof := profile.NewProfiler()
    49  
    50  	// Initialize blockchain
    51  	start := time.Now()
    52  	bcdata, err := NewBCData(6, 4)
    53  	if err != nil {
    54  		t.Fatal(err)
    55  	}
    56  	prof.Profile("main_init_blockchain", time.Now().Sub(start))
    57  	defer bcdata.Shutdown()
    58  
    59  	// Initialize address-balance map for verification
    60  	start = time.Now()
    61  	accountMap := NewAccountMap()
    62  	if err := accountMap.Initialize(bcdata); err != nil {
    63  		t.Fatal(err)
    64  	}
    65  	prof.Profile("main_init_accountMap", time.Now().Sub(start))
    66  
    67  	// reservoir account
    68  	reservoir := &TestAccountType{
    69  		Addr:  *bcdata.addrs[0],
    70  		Keys:  []*ecdsa.PrivateKey{bcdata.privKeys[0]},
    71  		Nonce: uint64(0),
    72  	}
    73  
    74  	// multisig10Initial has a initial key pair of multisig10 before the account key update
    75  	multisig10Initial, err := createAnonymousAccount("bb113e82881499a7a361e8354a5b68f6c6885c7bcba09ea2b0891480396c3200")
    76  	require.Equal(t, nil, err)
    77  
    78  	multisig10, err := createMultisigAccount(uint(1),
    79  		[]uint{1, 1, 1, 1, 1, 1, 1, 1, 1, 1},
    80  		[]string{
    81  			"bb113e82881499a7a361e8354a5b68f6c6885c7bcba09ea2b0891480396c322e",
    82  			"a5c9a50938a089618167c9d67dbebc0deaffc3c76ddc6b40c2777ae59438e989",
    83  			"a5c9a50938a089618167c9d67dbebc0deaffc3c76ddc6b40c2777ae59438e98A",
    84  			"a5c9a50938a089618167c9d67dbebc0deaffc3c76ddc6b40c2777ae59438e98B",
    85  			"a5c9a50938a089618167c9d67dbebc0deaffc3c76ddc6b40c2777ae59438e98C",
    86  			"a5c9a50938a089618167c9d67dbebc0deaffc3c76ddc6b40c2777ae59438e98D",
    87  			"a5c9a50938a089618167c9d67dbebc0deaffc3c76ddc6b40c2777ae59438e98E",
    88  			"a5c9a50938a089618167c9d67dbebc0deaffc3c76ddc6b40c2777ae59438e98F",
    89  			"a5c9a50938a089618167c9d67dbebc0deaffc3c76ddc6b40c2777ae59438e999",
    90  			"c32c471b732e2f56103e2f8e8cfd52792ef548f05f326e546a7d1fbf9d0419ec",
    91  		},
    92  		multisig10Initial.Addr)
    93  
    94  	if testing.Verbose() {
    95  		fmt.Println("reservoirAddr = ", reservoir.Addr.String())
    96  	}
    97  
    98  	gasPrice := new(big.Int).SetUint64(0)
    99  	gasLimit := uint64(100000000000)
   100  
   101  	signer := types.LatestSignerForChainID(bcdata.bc.Config().ChainID)
   102  
   103  	filename := string("../contracts/computationcost/opcodeBench.sol")
   104  	contracts, err := compiler.CompileSolidityOrLoad("", filename)
   105  	require.NoError(t, err)
   106  
   107  	var c compiler.Contract
   108  	for k, v := range contracts {
   109  		if strings.Contains(k, "StopContract") {
   110  			c = *v
   111  			break
   112  		}
   113  	}
   114  
   115  	contractCode := c.Code
   116  	stopContractAbiJson, err := json.Marshal(c.Info.AbiDefinition)
   117  	require.NoError(t, err)
   118  
   119  	stopContractAbi, err := abi.JSON(strings.NewReader(string(stopContractAbiJson)))
   120  	require.NoError(t, err)
   121  
   122  	StopContractStopInput, err := stopContractAbi.Pack("Sstop")
   123  	require.NoError(t, err)
   124  
   125  	for k, v := range contracts {
   126  		if strings.Contains(k, "OpCodeBenchmarkContract") {
   127  			c = *v
   128  			break
   129  		}
   130  	}
   131  
   132  	abiJson, err := json.Marshal(c.Info.AbiDefinition)
   133  	require.NoError(t, err)
   134  	abiStr := string(abiJson)
   135  
   136  	contractAddrs := make(map[string]common.Address)
   137  	contractNames := make([]string, 0, len(contracts))
   138  
   139  	// Deploy smart contract (reservoir -> contract), create multisig account.
   140  	{
   141  		var txs types.Transactions
   142  
   143  		amount := new(big.Int).SetUint64(0)
   144  
   145  		for name, contract := range contracts {
   146  			fmt.Println("deploying contract ", name)
   147  			values := map[types.TxValueKeyType]interface{}{
   148  				types.TxValueKeyNonce:         reservoir.Nonce,
   149  				types.TxValueKeyFrom:          reservoir.Addr,
   150  				types.TxValueKeyTo:            (*common.Address)(nil),
   151  				types.TxValueKeyAmount:        amount,
   152  				types.TxValueKeyGasLimit:      gasLimit,
   153  				types.TxValueKeyGasPrice:      gasPrice,
   154  				types.TxValueKeyHumanReadable: false,
   155  				types.TxValueKeyData:          common.FromHex(contract.Code),
   156  				types.TxValueKeyCodeFormat:    params.CodeFormatEVM,
   157  			}
   158  			tx, err := types.NewTransactionWithMap(types.TxTypeSmartContractDeploy, values)
   159  			require.Equal(t, nil, err)
   160  
   161  			err = tx.SignWithKeys(signer, reservoir.Keys)
   162  			require.Equal(t, nil, err)
   163  
   164  			txs = append(txs, tx)
   165  			reservoir.Nonce += 1
   166  
   167  			contractNames = append(contractNames, name)
   168  		}
   169  
   170  		{
   171  			values := map[types.TxValueKeyType]interface{}{
   172  				types.TxValueKeyNonce:      multisig10Initial.Nonce,
   173  				types.TxValueKeyFrom:       multisig10Initial.Addr,
   174  				types.TxValueKeyGasLimit:   gasLimit,
   175  				types.TxValueKeyGasPrice:   gasPrice,
   176  				types.TxValueKeyAccountKey: multisig10.AccKey,
   177  				types.TxValueKeyFeePayer:   reservoir.Addr,
   178  			}
   179  			tx, err := types.NewTransactionWithMap(types.TxTypeFeeDelegatedAccountUpdate, values)
   180  			assert.Equal(t, nil, err)
   181  
   182  			err = tx.SignWithKeys(signer, multisig10Initial.Keys)
   183  			assert.Equal(t, nil, err)
   184  
   185  			err = tx.SignFeePayerWithKeys(signer, reservoir.Keys)
   186  			assert.Equal(t, nil, err)
   187  
   188  			txs = append(txs, tx)
   189  			multisig10Initial.Nonce++
   190  		}
   191  
   192  		require.NoError(t, bcdata.GenABlockWithTransactions(accountMap, txs, prof))
   193  	}
   194  
   195  	blockHash := bcdata.bc.CurrentBlock().Hash()
   196  	receipts := bcdata.bc.GetReceiptsByBlockHash(blockHash)
   197  	for i := 0; i < len(contracts); i++ {
   198  		addr := receipts[i].ContractAddress
   199  		n := strings.Split(contractNames[i], ":")[1]
   200  		contractAddrs[n] = addr
   201  		fmt.Println("createdaddr", addr.String())
   202  	}
   203  
   204  	// prepare data for validate sender (reservoir)
   205  	validateSenderData1 := make([]byte, 0, 20+32+65)
   206  	{
   207  		hash := crypto.Keccak256Hash(reservoir.Addr.Bytes())
   208  		sigs, err := crypto.Sign(hash.Bytes(), reservoir.Keys[0])
   209  		require.NoError(t, err)
   210  
   211  		validateSenderData1 = append([]byte{}, reservoir.Addr.Bytes()...)
   212  		validateSenderData1 = append(validateSenderData1, hash.Bytes()...)
   213  		validateSenderData1 = append(validateSenderData1, sigs...)
   214  	}
   215  
   216  	// prepare data for validate sender (multisig10)
   217  	validateSenderMultisig10_2 := make([]byte, 0, 20+32+65*2)
   218  	validateSenderMultisig10_3 := make([]byte, 0, 20+32+65*3)
   219  	validateSenderMultisig10_4 := make([]byte, 0, 20+32+65*4)
   220  	validateSenderMultisig10_5 := make([]byte, 0, 20+32+65*5)
   221  	validateSenderMultisig10_6 := make([]byte, 0, 20+32+65*6)
   222  	validateSenderMultisig10_7 := make([]byte, 0, 20+32+65*7)
   223  	validateSenderMultisig10_8 := make([]byte, 0, 20+32+65*8)
   224  	validateSenderMultisig10_9 := make([]byte, 0, 20+32+65*9)
   225  	validateSenderMultisig10_10 := make([]byte, 0, 20+32+65*10)
   226  	{
   227  		hash := crypto.Keccak256Hash(multisig10.Addr.Bytes())
   228  		sigs := make([][]byte, 10)
   229  		for i := 0; i < 10; i++ {
   230  			s, err := crypto.Sign(hash.Bytes(), multisig10.Keys[i])
   231  			require.NoError(t, err)
   232  			sigs[i] = s
   233  		}
   234  		validateSenderMultisig := make([]byte, 0, 20+32)
   235  		validateSenderMultisig = append(validateSenderMultisig, multisig10.Addr.Bytes()...)
   236  		validateSenderMultisig = append(validateSenderMultisig, hash.Bytes()...)
   237  
   238  		validateSenderMultisig10_2 = append(validateSenderMultisig10_2, validateSenderMultisig...)
   239  		validateSenderMultisig10_2 = append(validateSenderMultisig10_2, sigs[0]...)
   240  		validateSenderMultisig10_2 = append(validateSenderMultisig10_2, sigs[1]...)
   241  
   242  		validateSenderMultisig10_3 = append(validateSenderMultisig10_3, validateSenderMultisig10_2...)
   243  		validateSenderMultisig10_3 = append(validateSenderMultisig10_3, sigs[2]...)
   244  
   245  		validateSenderMultisig10_4 = append(validateSenderMultisig10_4, validateSenderMultisig10_3...)
   246  		validateSenderMultisig10_4 = append(validateSenderMultisig10_4, sigs[3]...)
   247  
   248  		validateSenderMultisig10_5 = append(validateSenderMultisig10_5, validateSenderMultisig10_4...)
   249  		validateSenderMultisig10_5 = append(validateSenderMultisig10_5, sigs[4]...)
   250  
   251  		validateSenderMultisig10_6 = append(validateSenderMultisig10_6, validateSenderMultisig10_5...)
   252  		validateSenderMultisig10_6 = append(validateSenderMultisig10_6, sigs[5]...)
   253  
   254  		validateSenderMultisig10_7 = append(validateSenderMultisig10_7, validateSenderMultisig10_6...)
   255  		validateSenderMultisig10_7 = append(validateSenderMultisig10_7, sigs[6]...)
   256  
   257  		validateSenderMultisig10_8 = append(validateSenderMultisig10_8, validateSenderMultisig10_7...)
   258  		validateSenderMultisig10_8 = append(validateSenderMultisig10_8, sigs[7]...)
   259  
   260  		validateSenderMultisig10_9 = append(validateSenderMultisig10_9, validateSenderMultisig10_8...)
   261  		validateSenderMultisig10_9 = append(validateSenderMultisig10_9, sigs[8]...)
   262  
   263  		validateSenderMultisig10_10 = append(validateSenderMultisig10_10, validateSenderMultisig10_9...)
   264  		validateSenderMultisig10_10 = append(validateSenderMultisig10_10, sigs[9]...)
   265  	}
   266  
   267  	loopCnt := big.NewInt(1000000)
   268  	// loopCnt := big.NewInt(10000)
   269  	// loopCnt := big.NewInt(1)
   270  
   271  	testcases := []struct {
   272  		testName string
   273  		funcName string
   274  		input    []interface{}
   275  	}{
   276  		{
   277  			"Add/low",
   278  			"Add",
   279  			[]interface{}{
   280  				loopCnt, big.NewInt(1), big.NewInt(1),
   281  			},
   282  		},
   283  		{
   284  			"Add/high",
   285  			"Add",
   286  			[]interface{}{
   287  				loopCnt,
   288  				new(big.Int).SetBytes(common.FromHex("7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe")),
   289  				new(big.Int).SetBytes(common.FromHex("7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe")),
   290  			},
   291  		},
   292  		{
   293  			"Sub/low",
   294  			"Sub",
   295  			[]interface{}{
   296  				loopCnt, big.NewInt(1), big.NewInt(1),
   297  			},
   298  		},
   299  		{
   300  			"Sub/high",
   301  			"Sub",
   302  			[]interface{}{
   303  				loopCnt,
   304  				new(big.Int).SetBytes(common.FromHex("7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe")),
   305  				new(big.Int).SetBytes(common.FromHex("7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe")),
   306  			},
   307  		},
   308  		{
   309  			"Mul/low",
   310  			"Mul",
   311  			[]interface{}{
   312  				loopCnt, big.NewInt(1), big.NewInt(1),
   313  			},
   314  		},
   315  		{
   316  			"Mul/high",
   317  			"Mul",
   318  			[]interface{}{
   319  				loopCnt,
   320  				new(big.Int).SetBytes(common.FromHex("7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe")),
   321  				new(big.Int).SetBytes(common.FromHex("7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe")),
   322  			},
   323  		},
   324  		{
   325  			"Div/low",
   326  			"Div",
   327  			[]interface{}{
   328  				loopCnt, big.NewInt(1), big.NewInt(1),
   329  			},
   330  		},
   331  		{
   332  			"Div/high",
   333  			"Div",
   334  			[]interface{}{
   335  				loopCnt,
   336  				new(big.Int).SetBytes(common.FromHex("7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe")),
   337  				new(big.Int).SetBytes(common.FromHex("7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe")),
   338  			},
   339  		},
   340  		{
   341  			"Sdiv/low",
   342  			"Sdiv",
   343  			[]interface{}{
   344  				loopCnt, big.NewInt(1), big.NewInt(1),
   345  			},
   346  		},
   347  		{
   348  			"Sdiv/high",
   349  			"Sdiv",
   350  			[]interface{}{
   351  				loopCnt,
   352  				new(big.Int).SetBytes(common.FromHex("7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe")),
   353  				new(big.Int).SetBytes(common.FromHex("7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe")),
   354  			},
   355  		},
   356  		{
   357  			"Mod/low",
   358  			"Mod",
   359  			[]interface{}{
   360  				loopCnt, big.NewInt(1), big.NewInt(1),
   361  			},
   362  		},
   363  		{
   364  			"Mod/high",
   365  			"Mod",
   366  			[]interface{}{
   367  				loopCnt,
   368  				new(big.Int).SetBytes(common.FromHex("7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe")),
   369  				new(big.Int).SetBytes(common.FromHex("7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe")),
   370  			},
   371  		},
   372  		{
   373  			"Smod/low",
   374  			"Smod",
   375  			[]interface{}{
   376  				loopCnt, big.NewInt(1), big.NewInt(1),
   377  			},
   378  		},
   379  		{
   380  			"Smod/high",
   381  			"Smod",
   382  			[]interface{}{
   383  				loopCnt,
   384  				new(big.Int).SetBytes(common.FromHex("7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe")),
   385  				new(big.Int).SetBytes(common.FromHex("7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe")),
   386  			},
   387  		},
   388  		{
   389  			"Exp/low",
   390  			"Exp",
   391  			[]interface{}{
   392  				loopCnt, big.NewInt(10), big.NewInt(10),
   393  			},
   394  		},
   395  		{
   396  			"Exp/high",
   397  			"Exp",
   398  			[]interface{}{
   399  				loopCnt,
   400  				new(big.Int).SetBytes(common.FromHex("7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe")),
   401  				new(big.Int).SetBytes(common.FromHex("7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe")),
   402  			},
   403  		},
   404  		{
   405  			"Addmod/low",
   406  			"Addmod",
   407  			[]interface{}{
   408  				loopCnt, big.NewInt(10), big.NewInt(10), big.NewInt(10),
   409  			},
   410  		},
   411  		{
   412  			"Addmod/high",
   413  			"Addmod",
   414  			[]interface{}{
   415  				loopCnt,
   416  				new(big.Int).SetBytes(common.FromHex("7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe")),
   417  				new(big.Int).SetBytes(common.FromHex("7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe")),
   418  				new(big.Int).SetBytes(common.FromHex("7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe")),
   419  			},
   420  		},
   421  		{
   422  			"Mulmod/low",
   423  			"Mulmod",
   424  			[]interface{}{
   425  				loopCnt, big.NewInt(10), big.NewInt(10), big.NewInt(10),
   426  			},
   427  		},
   428  		{
   429  			"Mulmod/high",
   430  			"Mulmod",
   431  			[]interface{}{
   432  				loopCnt,
   433  				new(big.Int).SetBytes(common.FromHex("7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe")),
   434  				new(big.Int).SetBytes(common.FromHex("7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe")),
   435  				new(big.Int).SetBytes(common.FromHex("7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe")),
   436  			},
   437  		},
   438  		{
   439  			"Not",
   440  			"Not",
   441  			[]interface{}{
   442  				loopCnt,
   443  			},
   444  		},
   445  		{
   446  			"Lt",
   447  			"Lt",
   448  			[]interface{}{
   449  				loopCnt,
   450  			},
   451  		},
   452  		{
   453  			"Gt",
   454  			"Gt",
   455  			[]interface{}{
   456  				loopCnt,
   457  			},
   458  		},
   459  		{
   460  			"Slt",
   461  			"Slt",
   462  			[]interface{}{
   463  				loopCnt,
   464  			},
   465  		},
   466  		{
   467  			"Sgt",
   468  			"Sgt",
   469  			[]interface{}{
   470  				loopCnt,
   471  			},
   472  		},
   473  		{
   474  			"Eq",
   475  			"Eq",
   476  			[]interface{}{
   477  				loopCnt,
   478  			},
   479  		},
   480  		{
   481  			"Iszero",
   482  			"Iszero",
   483  			[]interface{}{
   484  				loopCnt,
   485  			},
   486  		},
   487  		{
   488  			"And",
   489  			"And",
   490  			[]interface{}{
   491  				loopCnt,
   492  			},
   493  		},
   494  		{
   495  			"Or",
   496  			"Or",
   497  			[]interface{}{
   498  				loopCnt,
   499  			},
   500  		},
   501  		{
   502  			"Xor",
   503  			"Xor",
   504  			[]interface{}{
   505  				loopCnt,
   506  			},
   507  		},
   508  		{
   509  			"Byte",
   510  			"Byte",
   511  			[]interface{}{
   512  				loopCnt,
   513  			},
   514  		},
   515  		{
   516  			"Shl/low",
   517  			"Shl",
   518  			[]interface{}{
   519  				loopCnt, big.NewInt(1), big.NewInt(1),
   520  			},
   521  		},
   522  		{
   523  			"Shl/high",
   524  			"Shl",
   525  			[]interface{}{
   526  				loopCnt,
   527  				new(big.Int).SetBytes(common.FromHex("7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe")),
   528  				new(big.Int).SetBytes(common.FromHex("7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe")),
   529  			},
   530  		},
   531  		{
   532  			"Shr/low",
   533  			"Shr",
   534  			[]interface{}{
   535  				loopCnt, big.NewInt(1), big.NewInt(1),
   536  			},
   537  		},
   538  		{
   539  			"Shr/high",
   540  			"Shr",
   541  			[]interface{}{
   542  				loopCnt,
   543  				new(big.Int).SetBytes(common.FromHex("7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe")),
   544  				new(big.Int).SetBytes(common.FromHex("7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe")),
   545  			},
   546  		},
   547  		{
   548  			"Sar/low",
   549  			"Sar",
   550  			[]interface{}{
   551  				loopCnt, big.NewInt(1), big.NewInt(1),
   552  			},
   553  		},
   554  		{
   555  			"Sar/high",
   556  			"Sar",
   557  			[]interface{}{
   558  				loopCnt,
   559  				new(big.Int).SetBytes(common.FromHex("7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe")),
   560  				new(big.Int).SetBytes(common.FromHex("7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe")),
   561  			},
   562  		},
   563  		{
   564  			"SignExtend/low",
   565  			"SignExtend",
   566  			[]interface{}{
   567  				loopCnt, big.NewInt(1), big.NewInt(1),
   568  			},
   569  		},
   570  		{
   571  			"SignExtend/high",
   572  			"SignExtend",
   573  			[]interface{}{
   574  				loopCnt,
   575  				new(big.Int).SetBytes(common.FromHex("32")),
   576  				new(big.Int).SetBytes(common.FromHex("7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe")),
   577  			},
   578  		},
   579  		{
   580  			"Sha3",
   581  			"Sha3",
   582  			[]interface{}{
   583  				loopCnt,
   584  			},
   585  		},
   586  		{
   587  			"Pc",
   588  			"Pc",
   589  			[]interface{}{
   590  				loopCnt,
   591  			},
   592  		},
   593  		{
   594  			"Dup1",
   595  			"Dup1",
   596  			[]interface{}{
   597  				loopCnt,
   598  			},
   599  		},
   600  		{
   601  			"Dup2",
   602  			"Dup2",
   603  			[]interface{}{
   604  				loopCnt,
   605  			},
   606  		},
   607  		{
   608  			"Dup3",
   609  			"Dup3",
   610  			[]interface{}{
   611  				loopCnt,
   612  			},
   613  		},
   614  		{
   615  			"Dup4",
   616  			"Dup4",
   617  			[]interface{}{
   618  				loopCnt,
   619  			},
   620  		},
   621  		{
   622  			"Dup5",
   623  			"Dup5",
   624  			[]interface{}{
   625  				loopCnt,
   626  			},
   627  		},
   628  		{
   629  			"Dup6",
   630  			"Dup6",
   631  			[]interface{}{
   632  				loopCnt,
   633  			},
   634  		},
   635  		{
   636  			"Dup7",
   637  			"Dup7",
   638  			[]interface{}{
   639  				loopCnt,
   640  			},
   641  		},
   642  		{
   643  			"Dup8",
   644  			"Dup8",
   645  			[]interface{}{
   646  				loopCnt,
   647  			},
   648  		},
   649  		{
   650  			"Dup9",
   651  			"Dup9",
   652  			[]interface{}{
   653  				loopCnt,
   654  			},
   655  		},
   656  		{
   657  			"Dup10",
   658  			"Dup10",
   659  			[]interface{}{
   660  				loopCnt,
   661  			},
   662  		},
   663  		{
   664  			"Dup11",
   665  			"Dup11",
   666  			[]interface{}{
   667  				loopCnt,
   668  			},
   669  		},
   670  		{
   671  			"Dup12",
   672  			"Dup12",
   673  			[]interface{}{
   674  				loopCnt,
   675  			},
   676  		},
   677  		{
   678  			"Dup13",
   679  			"Dup13",
   680  			[]interface{}{
   681  				loopCnt,
   682  			},
   683  		},
   684  		{
   685  			"Dup14",
   686  			"Dup14",
   687  			[]interface{}{
   688  				loopCnt,
   689  			},
   690  		},
   691  		{
   692  			"Dup15",
   693  			"Dup15",
   694  			[]interface{}{
   695  				loopCnt,
   696  			},
   697  		},
   698  		{
   699  			"Dup16",
   700  			"Dup16",
   701  			[]interface{}{
   702  				loopCnt,
   703  			},
   704  		},
   705  		{
   706  			"Swap1",
   707  			"Swap1",
   708  			[]interface{}{
   709  				loopCnt,
   710  			},
   711  		},
   712  		{
   713  			"Swap2",
   714  			"Swap2",
   715  			[]interface{}{
   716  				loopCnt,
   717  			},
   718  		},
   719  		{
   720  			"Swap3",
   721  			"Swap3",
   722  			[]interface{}{
   723  				loopCnt,
   724  			},
   725  		},
   726  		{
   727  			"Swap4",
   728  			"Swap4",
   729  			[]interface{}{
   730  				loopCnt,
   731  			},
   732  		},
   733  		{
   734  			"Swap5",
   735  			"Swap5",
   736  			[]interface{}{
   737  				loopCnt,
   738  			},
   739  		},
   740  		{
   741  			"Swap6",
   742  			"Swap6",
   743  			[]interface{}{
   744  				loopCnt,
   745  			},
   746  		},
   747  		{
   748  			"Swap7",
   749  			"Swap7",
   750  			[]interface{}{
   751  				loopCnt,
   752  			},
   753  		},
   754  		{
   755  			"Swap8",
   756  			"Swap8",
   757  			[]interface{}{
   758  				loopCnt,
   759  			},
   760  		},
   761  		{
   762  			"Swap9",
   763  			"Swap9",
   764  			[]interface{}{
   765  				loopCnt,
   766  			},
   767  		},
   768  		{
   769  			"Swap10",
   770  			"Swap10",
   771  			[]interface{}{
   772  				loopCnt,
   773  			},
   774  		},
   775  		{
   776  			"Swap11",
   777  			"Swap11",
   778  			[]interface{}{
   779  				loopCnt,
   780  			},
   781  		},
   782  		{
   783  			"Swap12",
   784  			"Swap12",
   785  			[]interface{}{
   786  				loopCnt,
   787  			},
   788  		},
   789  		{
   790  			"Swap13",
   791  			"Swap13",
   792  			[]interface{}{
   793  				loopCnt,
   794  			},
   795  		},
   796  		{
   797  			"Swap14",
   798  			"Swap14",
   799  			[]interface{}{
   800  				loopCnt,
   801  			},
   802  		},
   803  		{
   804  			"Swap15",
   805  			"Swap15",
   806  			[]interface{}{
   807  				loopCnt,
   808  			},
   809  		},
   810  		{
   811  			"Swap16",
   812  			"Swap16",
   813  			[]interface{}{
   814  				loopCnt,
   815  			},
   816  		},
   817  		{
   818  			"Call",
   819  			"Call",
   820  			[]interface{}{
   821  				loopCnt,
   822  				contractAddrs["StopContract"],
   823  			},
   824  		},
   825  		{
   826  			"CallCode",
   827  			"CallCode",
   828  			[]interface{}{
   829  				loopCnt,
   830  				contractAddrs["StopContract"],
   831  			},
   832  		},
   833  		{
   834  			"StaticCall",
   835  			"StaticCall",
   836  			[]interface{}{
   837  				loopCnt,
   838  				contractAddrs["StopContract"], StopContractStopInput,
   839  			},
   840  		},
   841  		{
   842  			"DelegateCall",
   843  			"DelegateCall",
   844  			[]interface{}{
   845  				loopCnt,
   846  				contractAddrs["StopContract"],
   847  			},
   848  		},
   849  		{
   850  			"Create",
   851  			"Create",
   852  			[]interface{}{
   853  				loopCnt,
   854  			},
   855  		},
   856  		{
   857  			"Create2",
   858  			"Create2",
   859  			[]interface{}{
   860  				loopCnt, common.FromHex(contractCode), big.NewInt(1234),
   861  			},
   862  		},
   863  		{
   864  			"Sstore",
   865  			"Sstore",
   866  			[]interface{}{
   867  				loopCnt,
   868  				big.NewInt(0),
   869  			},
   870  		},
   871  		{
   872  			"Sload",
   873  			"Sload",
   874  			[]interface{}{
   875  				loopCnt,
   876  			},
   877  		},
   878  		{
   879  			"Mstore/10",
   880  			"Mstore",
   881  			[]interface{}{
   882  				loopCnt, big.NewInt(10),
   883  			},
   884  		},
   885  		{
   886  			"Mstore/100",
   887  			"Mstore",
   888  			[]interface{}{
   889  				loopCnt, big.NewInt(100),
   890  			},
   891  		},
   892  		{
   893  			"Mstore/100000",
   894  			"Mstore",
   895  			[]interface{}{
   896  				loopCnt, big.NewInt(100000),
   897  			},
   898  		},
   899  		{
   900  			"Mstore/1000000",
   901  			"Mstore",
   902  			[]interface{}{
   903  				loopCnt, big.NewInt(1000000),
   904  			},
   905  		},
   906  		{
   907  			"Mload/10",
   908  			"Mload",
   909  			[]interface{}{
   910  				loopCnt, big.NewInt(10),
   911  			},
   912  		},
   913  		{
   914  			"Mload/100",
   915  			"Mload",
   916  			[]interface{}{
   917  				loopCnt, big.NewInt(100),
   918  			},
   919  		},
   920  		{
   921  			"Mload/100000",
   922  			"Mload",
   923  			[]interface{}{
   924  				loopCnt, big.NewInt(100000),
   925  			},
   926  		},
   927  		{
   928  			"Mload/1000000",
   929  			"Mload",
   930  			[]interface{}{
   931  				loopCnt, big.NewInt(1000000),
   932  			},
   933  		},
   934  		{
   935  			"Msize",
   936  			"Msize",
   937  			[]interface{}{
   938  				loopCnt, big.NewInt(1000),
   939  			},
   940  		},
   941  		{
   942  			"Gas",
   943  			"Gas",
   944  			[]interface{}{
   945  				loopCnt,
   946  			},
   947  		},
   948  		{
   949  			"Address",
   950  			"Address",
   951  			[]interface{}{
   952  				loopCnt,
   953  			},
   954  		},
   955  		{
   956  			"Balance",
   957  			"Balance",
   958  			[]interface{}{
   959  				loopCnt, reservoir.Addr,
   960  			},
   961  		},
   962  		{
   963  			"Caller",
   964  			"Caller",
   965  			[]interface{}{
   966  				loopCnt,
   967  			},
   968  		},
   969  		{
   970  			"CallValue",
   971  			"CallValue",
   972  			[]interface{}{
   973  				loopCnt,
   974  			},
   975  		},
   976  		{
   977  			"CallDataLoad",
   978  			"CallDataLoad",
   979  			[]interface{}{
   980  				loopCnt,
   981  			},
   982  		},
   983  		{
   984  			"CallDataSize",
   985  			"CallDataSize",
   986  			[]interface{}{
   987  				loopCnt,
   988  			},
   989  		},
   990  		{
   991  			"CallDataCopy/1",
   992  			"CallDataCopy",
   993  			[]interface{}{
   994  				loopCnt,
   995  				common.FromHex("01"),
   996  				big.NewInt(1),
   997  			},
   998  		},
   999  		{
  1000  			"CallDataCopy/16",
  1001  			"CallDataCopy",
  1002  			[]interface{}{
  1003  				loopCnt,
  1004  				common.FromHex("01020304050607080910111213141516"),
  1005  				big.NewInt(16),
  1006  			},
  1007  		},
  1008  		{
  1009  			"CallDataCopy/32",
  1010  			"CallDataCopy",
  1011  			[]interface{}{
  1012  				loopCnt,
  1013  				common.FromHex("0102030405060708091011121314151617181920212223242526272829303132"),
  1014  				big.NewInt(32),
  1015  			},
  1016  		},
  1017  		{
  1018  			"CallDataCopy/64",
  1019  			"CallDataCopy",
  1020  			[]interface{}{
  1021  				loopCnt,
  1022  				common.FromHex("01020304050607080910111213141516171819202122232425262728293031320102030405060708091011121314151617181920212223242526272829303132"),
  1023  				big.NewInt(64),
  1024  			},
  1025  		},
  1026  		{
  1027  			"CallDataCopy/128",
  1028  			"CallDataCopy",
  1029  			[]interface{}{
  1030  				loopCnt,
  1031  				common.FromHex("0102030405060708091011121314151617181920212223242526272829303132010203040506070809101112131415161718192021222324252627282930313201020304050607080910111213141516171819202122232425262728293031320102030405060708091011121314151617181920212223242526272829303132"),
  1032  				big.NewInt(128),
  1033  			},
  1034  		},
  1035  		{
  1036  			"CallDataCopy/256",
  1037  			"CallDataCopy",
  1038  			[]interface{}{
  1039  				loopCnt,
  1040  				common.FromHex("01020304050607080910111213141516171819202122232425262728293031320102030405060708091011121314151617181920212223242526272829303132010203040506070809101112131415161718192021222324252627282930313201020304050607080910111213141516171819202122232425262728293031320102030405060708091011121314151617181920212223242526272829303132010203040506070809101112131415161718192021222324252627282930313201020304050607080910111213141516171819202122232425262728293031320102030405060708091011121314151617181920212223242526272829303132"),
  1041  				big.NewInt(256),
  1042  			},
  1043  		},
  1044  		{
  1045  			"CallDataCopy/512",
  1046  			"CallDataCopy",
  1047  			[]interface{}{
  1048  				loopCnt,
  1049  				common.FromHex("0102030405060708091011121314151617181920212223242526272829303132010203040506070809101112131415161718192021222324252627282930313201020304050607080910111213141516171819202122232425262728293031320102030405060708091011121314151617181920212223242526272829303132010203040506070809101112131415161718192021222324252627282930313201020304050607080910111213141516171819202122232425262728293031320102030405060708091011121314151617181920212223242526272829303132010203040506070809101112131415161718192021222324252627282930313201020304050607080910111213141516171819202122232425262728293031320102030405060708091011121314151617181920212223242526272829303132010203040506070809101112131415161718192021222324252627282930313201020304050607080910111213141516171819202122232425262728293031320102030405060708091011121314151617181920212223242526272829303132010203040506070809101112131415161718192021222324252627282930313201020304050607080910111213141516171819202122232425262728293031320102030405060708091011121314151617181920212223242526272829303132"),
  1050  				big.NewInt(512),
  1051  			},
  1052  		},
  1053  		{
  1054  			"CallDataCopy/1024",
  1055  			"CallDataCopy",
  1056  			[]interface{}{
  1057  				loopCnt,
  1058  				common.FromHex("01020304050607080910111213141516171819202122232425262728293031320102030405060708091011121314151617181920212223242526272829303132010203040506070809101112131415161718192021222324252627282930313201020304050607080910111213141516171819202122232425262728293031320102030405060708091011121314151617181920212223242526272829303132010203040506070809101112131415161718192021222324252627282930313201020304050607080910111213141516171819202122232425262728293031320102030405060708091011121314151617181920212223242526272829303132010203040506070809101112131415161718192021222324252627282930313201020304050607080910111213141516171819202122232425262728293031320102030405060708091011121314151617181920212223242526272829303132010203040506070809101112131415161718192021222324252627282930313201020304050607080910111213141516171819202122232425262728293031320102030405060708091011121314151617181920212223242526272829303132010203040506070809101112131415161718192021222324252627282930313201020304050607080910111213141516171819202122232425262728293031320102030405060708091011121314151617181920212223242526272829303132010203040506070809101112131415161718192021222324252627282930313201020304050607080910111213141516171819202122232425262728293031320102030405060708091011121314151617181920212223242526272829303132010203040506070809101112131415161718192021222324252627282930313201020304050607080910111213141516171819202122232425262728293031320102030405060708091011121314151617181920212223242526272829303132010203040506070809101112131415161718192021222324252627282930313201020304050607080910111213141516171819202122232425262728293031320102030405060708091011121314151617181920212223242526272829303132010203040506070809101112131415161718192021222324252627282930313201020304050607080910111213141516171819202122232425262728293031320102030405060708091011121314151617181920212223242526272829303132010203040506070809101112131415161718192021222324252627282930313201020304050607080910111213141516171819202122232425262728293031320102030405060708091011121314151617181920212223242526272829303132"),
  1059  				big.NewInt(1024),
  1060  			},
  1061  		},
  1062  		{
  1063  			"CodeSize",
  1064  			"CodeSize",
  1065  			[]interface{}{
  1066  				loopCnt,
  1067  			},
  1068  		},
  1069  		{
  1070  			"CodeCopy/32",
  1071  			"CodeCopy",
  1072  			[]interface{}{
  1073  				loopCnt, big.NewInt(32),
  1074  			},
  1075  		},
  1076  		{
  1077  			"CodeCopy/64",
  1078  			"CodeCopy",
  1079  			[]interface{}{
  1080  				loopCnt, big.NewInt(64),
  1081  			},
  1082  		},
  1083  		{
  1084  			"CodeCopy/128",
  1085  			"CodeCopy",
  1086  			[]interface{}{
  1087  				loopCnt, big.NewInt(128),
  1088  			},
  1089  		},
  1090  		{
  1091  			"CodeCopy/256",
  1092  			"CodeCopy",
  1093  			[]interface{}{
  1094  				loopCnt, big.NewInt(256),
  1095  			},
  1096  		},
  1097  		{
  1098  			"CodeCopy/512",
  1099  			"CodeCopy",
  1100  			[]interface{}{
  1101  				loopCnt, big.NewInt(512),
  1102  			},
  1103  		},
  1104  		{
  1105  			"CodeCopy/1024",
  1106  			"CodeCopy",
  1107  			[]interface{}{
  1108  				loopCnt, big.NewInt(1024),
  1109  			},
  1110  		},
  1111  		{
  1112  			"ExtCodeSize",
  1113  			"ExtCodeSize",
  1114  			[]interface{}{
  1115  				loopCnt, contractAddrs["OpCodeBenchmarkContract"],
  1116  			},
  1117  		},
  1118  		{
  1119  			"ExtCodeCopy/32",
  1120  			"ExtCodeCopy",
  1121  			[]interface{}{
  1122  				loopCnt, contractAddrs["OpCodeBenchmarkContract"], big.NewInt(32),
  1123  			},
  1124  		},
  1125  		{
  1126  			"ExtCodeCopy/64",
  1127  			"ExtCodeCopy",
  1128  			[]interface{}{
  1129  				loopCnt, contractAddrs["OpCodeBenchmarkContract"], big.NewInt(64),
  1130  			},
  1131  		},
  1132  		{
  1133  			"ExtCodeCopy/128",
  1134  			"ExtCodeCopy",
  1135  			[]interface{}{
  1136  				loopCnt, contractAddrs["OpCodeBenchmarkContract"], big.NewInt(128),
  1137  			},
  1138  		},
  1139  		{
  1140  			"ExtCodeCopy/256",
  1141  			"ExtCodeCopy",
  1142  			[]interface{}{
  1143  				loopCnt, contractAddrs["OpCodeBenchmarkContract"], big.NewInt(256),
  1144  			},
  1145  		},
  1146  		{
  1147  			"ExtCodeCopy/512",
  1148  			"ExtCodeCopy",
  1149  			[]interface{}{
  1150  				loopCnt, contractAddrs["OpCodeBenchmarkContract"], big.NewInt(512),
  1151  			},
  1152  		},
  1153  		{
  1154  			"ExtCodeCopy/1024",
  1155  			"ExtCodeCopy",
  1156  			[]interface{}{
  1157  				loopCnt, contractAddrs["OpCodeBenchmarkContract"], big.NewInt(1024),
  1158  			},
  1159  		},
  1160  		{
  1161  			"ReturnDataSize",
  1162  			"ReturnDataSize",
  1163  			[]interface{}{
  1164  				loopCnt,
  1165  			},
  1166  		},
  1167  		{
  1168  			"ReturnDataCopy/1",
  1169  			"ReturnDataCopy",
  1170  			[]interface{}{
  1171  				loopCnt, big.NewInt(1), contractAddrs["StopContract"],
  1172  			},
  1173  		},
  1174  		{
  1175  			"ReturnDataCopy/32",
  1176  			"ReturnDataCopy",
  1177  			[]interface{}{
  1178  				loopCnt, big.NewInt(32), contractAddrs["StopContract"],
  1179  			},
  1180  		},
  1181  		{
  1182  			"ReturnDataCopy/64",
  1183  			"ReturnDataCopy",
  1184  			[]interface{}{
  1185  				loopCnt, big.NewInt(32), contractAddrs["StopContract"],
  1186  			},
  1187  		},
  1188  		{
  1189  			"ReturnDataCopy/128",
  1190  			"ReturnDataCopy",
  1191  			[]interface{}{
  1192  				loopCnt, big.NewInt(128), contractAddrs["StopContract"],
  1193  			},
  1194  		},
  1195  		{
  1196  			"ReturnDataCopy/256",
  1197  			"ReturnDataCopy",
  1198  			[]interface{}{
  1199  				loopCnt, big.NewInt(256), contractAddrs["StopContract"],
  1200  			},
  1201  		},
  1202  		{
  1203  			"ReturnDataCopy/512",
  1204  			"ReturnDataCopy",
  1205  			[]interface{}{
  1206  				loopCnt, big.NewInt(512), contractAddrs["StopContract"],
  1207  			},
  1208  		},
  1209  		{
  1210  			"ReturnDataCopy/1024",
  1211  			"ReturnDataCopy",
  1212  			[]interface{}{
  1213  				loopCnt, big.NewInt(1024), contractAddrs["StopContract"],
  1214  			},
  1215  		},
  1216  		// Not supported in solc-0.4.24
  1217  		//{
  1218  		//	"ExtCodeHash",
  1219  		//	"ExtCodeHash",
  1220  		//	[]interface{}{
  1221  		//		loopCnt, contractAddrs["OpCodeBenchmarkContract"],
  1222  		//	},
  1223  		//},
  1224  
  1225  		{
  1226  			"Log0/32",
  1227  			"Log0",
  1228  			[]interface{}{
  1229  				loopCnt,
  1230  				common.FromHex("0102030405060708091011121314151617181920212223242526272829303132"),
  1231  			},
  1232  		},
  1233  		{
  1234  			"Log0/64",
  1235  			"Log0",
  1236  			[]interface{}{
  1237  				loopCnt,
  1238  				common.FromHex("01020304050607080910111213141516171819202122232425262728293031320102030405060708091011121314151617181920212223242526272829303132"),
  1239  			},
  1240  		},
  1241  		{
  1242  			"Log0/128",
  1243  			"Log0",
  1244  			[]interface{}{
  1245  				loopCnt,
  1246  				common.FromHex("0102030405060708091011121314151617181920212223242526272829303132010203040506070809101112131415161718192021222324252627282930313201020304050607080910111213141516171819202122232425262728293031320102030405060708091011121314151617181920212223242526272829303132"),
  1247  			},
  1248  		},
  1249  		{
  1250  			"Log0/256",
  1251  			"Log0",
  1252  			[]interface{}{
  1253  				loopCnt,
  1254  				common.FromHex("01020304050607080910111213141516171819202122232425262728293031320102030405060708091011121314151617181920212223242526272829303132010203040506070809101112131415161718192021222324252627282930313201020304050607080910111213141516171819202122232425262728293031320102030405060708091011121314151617181920212223242526272829303132010203040506070809101112131415161718192021222324252627282930313201020304050607080910111213141516171819202122232425262728293031320102030405060708091011121314151617181920212223242526272829303132"),
  1255  			},
  1256  		},
  1257  		{
  1258  			"Log0/512",
  1259  			"Log0",
  1260  			[]interface{}{
  1261  				loopCnt,
  1262  				common.FromHex("0102030405060708091011121314151617181920212223242526272829303132010203040506070809101112131415161718192021222324252627282930313201020304050607080910111213141516171819202122232425262728293031320102030405060708091011121314151617181920212223242526272829303132010203040506070809101112131415161718192021222324252627282930313201020304050607080910111213141516171819202122232425262728293031320102030405060708091011121314151617181920212223242526272829303132010203040506070809101112131415161718192021222324252627282930313201020304050607080910111213141516171819202122232425262728293031320102030405060708091011121314151617181920212223242526272829303132010203040506070809101112131415161718192021222324252627282930313201020304050607080910111213141516171819202122232425262728293031320102030405060708091011121314151617181920212223242526272829303132010203040506070809101112131415161718192021222324252627282930313201020304050607080910111213141516171819202122232425262728293031320102030405060708091011121314151617181920212223242526272829303132"),
  1263  			},
  1264  		},
  1265  		{
  1266  			"Log0/1024",
  1267  			"Log0",
  1268  			[]interface{}{
  1269  				loopCnt,
  1270  				common.FromHex("01020304050607080910111213141516171819202122232425262728293031320102030405060708091011121314151617181920212223242526272829303132010203040506070809101112131415161718192021222324252627282930313201020304050607080910111213141516171819202122232425262728293031320102030405060708091011121314151617181920212223242526272829303132010203040506070809101112131415161718192021222324252627282930313201020304050607080910111213141516171819202122232425262728293031320102030405060708091011121314151617181920212223242526272829303132010203040506070809101112131415161718192021222324252627282930313201020304050607080910111213141516171819202122232425262728293031320102030405060708091011121314151617181920212223242526272829303132010203040506070809101112131415161718192021222324252627282930313201020304050607080910111213141516171819202122232425262728293031320102030405060708091011121314151617181920212223242526272829303132010203040506070809101112131415161718192021222324252627282930313201020304050607080910111213141516171819202122232425262728293031320102030405060708091011121314151617181920212223242526272829303132010203040506070809101112131415161718192021222324252627282930313201020304050607080910111213141516171819202122232425262728293031320102030405060708091011121314151617181920212223242526272829303132010203040506070809101112131415161718192021222324252627282930313201020304050607080910111213141516171819202122232425262728293031320102030405060708091011121314151617181920212223242526272829303132010203040506070809101112131415161718192021222324252627282930313201020304050607080910111213141516171819202122232425262728293031320102030405060708091011121314151617181920212223242526272829303132010203040506070809101112131415161718192021222324252627282930313201020304050607080910111213141516171819202122232425262728293031320102030405060708091011121314151617181920212223242526272829303132010203040506070809101112131415161718192021222324252627282930313201020304050607080910111213141516171819202122232425262728293031320102030405060708091011121314151617181920212223242526272829303132"),
  1271  			},
  1272  		},
  1273  
  1274  		{
  1275  			"Log1/32",
  1276  			"Log1",
  1277  			[]interface{}{
  1278  				loopCnt,
  1279  				common.FromHex("0102030405060708091011121314151617181920212223242526272829303132"),
  1280  				big.NewInt(1),
  1281  			},
  1282  		},
  1283  		{
  1284  			"Log1/64",
  1285  			"Log1",
  1286  			[]interface{}{
  1287  				loopCnt,
  1288  				common.FromHex("01020304050607080910111213141516171819202122232425262728293031320102030405060708091011121314151617181920212223242526272829303132"),
  1289  				big.NewInt(1),
  1290  			},
  1291  		},
  1292  		{
  1293  			"Log1/128",
  1294  			"Log1",
  1295  			[]interface{}{
  1296  				loopCnt,
  1297  				common.FromHex("0102030405060708091011121314151617181920212223242526272829303132010203040506070809101112131415161718192021222324252627282930313201020304050607080910111213141516171819202122232425262728293031320102030405060708091011121314151617181920212223242526272829303132"),
  1298  				big.NewInt(1),
  1299  			},
  1300  		},
  1301  		{
  1302  			"Log1/256",
  1303  			"Log1",
  1304  			[]interface{}{
  1305  				loopCnt,
  1306  				common.FromHex("01020304050607080910111213141516171819202122232425262728293031320102030405060708091011121314151617181920212223242526272829303132010203040506070809101112131415161718192021222324252627282930313201020304050607080910111213141516171819202122232425262728293031320102030405060708091011121314151617181920212223242526272829303132010203040506070809101112131415161718192021222324252627282930313201020304050607080910111213141516171819202122232425262728293031320102030405060708091011121314151617181920212223242526272829303132"),
  1307  				big.NewInt(1),
  1308  			},
  1309  		},
  1310  		{
  1311  			"Log1/512",
  1312  			"Log1",
  1313  			[]interface{}{
  1314  				loopCnt,
  1315  				common.FromHex("0102030405060708091011121314151617181920212223242526272829303132010203040506070809101112131415161718192021222324252627282930313201020304050607080910111213141516171819202122232425262728293031320102030405060708091011121314151617181920212223242526272829303132010203040506070809101112131415161718192021222324252627282930313201020304050607080910111213141516171819202122232425262728293031320102030405060708091011121314151617181920212223242526272829303132010203040506070809101112131415161718192021222324252627282930313201020304050607080910111213141516171819202122232425262728293031320102030405060708091011121314151617181920212223242526272829303132010203040506070809101112131415161718192021222324252627282930313201020304050607080910111213141516171819202122232425262728293031320102030405060708091011121314151617181920212223242526272829303132010203040506070809101112131415161718192021222324252627282930313201020304050607080910111213141516171819202122232425262728293031320102030405060708091011121314151617181920212223242526272829303132"),
  1316  				big.NewInt(1),
  1317  			},
  1318  		},
  1319  		{
  1320  			"Log1/1024",
  1321  			"Log1",
  1322  			[]interface{}{
  1323  				loopCnt,
  1324  				common.FromHex("01020304050607080910111213141516171819202122232425262728293031320102030405060708091011121314151617181920212223242526272829303132010203040506070809101112131415161718192021222324252627282930313201020304050607080910111213141516171819202122232425262728293031320102030405060708091011121314151617181920212223242526272829303132010203040506070809101112131415161718192021222324252627282930313201020304050607080910111213141516171819202122232425262728293031320102030405060708091011121314151617181920212223242526272829303132010203040506070809101112131415161718192021222324252627282930313201020304050607080910111213141516171819202122232425262728293031320102030405060708091011121314151617181920212223242526272829303132010203040506070809101112131415161718192021222324252627282930313201020304050607080910111213141516171819202122232425262728293031320102030405060708091011121314151617181920212223242526272829303132010203040506070809101112131415161718192021222324252627282930313201020304050607080910111213141516171819202122232425262728293031320102030405060708091011121314151617181920212223242526272829303132010203040506070809101112131415161718192021222324252627282930313201020304050607080910111213141516171819202122232425262728293031320102030405060708091011121314151617181920212223242526272829303132010203040506070809101112131415161718192021222324252627282930313201020304050607080910111213141516171819202122232425262728293031320102030405060708091011121314151617181920212223242526272829303132010203040506070809101112131415161718192021222324252627282930313201020304050607080910111213141516171819202122232425262728293031320102030405060708091011121314151617181920212223242526272829303132010203040506070809101112131415161718192021222324252627282930313201020304050607080910111213141516171819202122232425262728293031320102030405060708091011121314151617181920212223242526272829303132010203040506070809101112131415161718192021222324252627282930313201020304050607080910111213141516171819202122232425262728293031320102030405060708091011121314151617181920212223242526272829303132"),
  1325  				big.NewInt(1),
  1326  			},
  1327  		},
  1328  
  1329  		{
  1330  			"Log2/32",
  1331  			"Log2",
  1332  			[]interface{}{
  1333  				loopCnt,
  1334  				common.FromHex("0102030405060708091011121314151617181920212223242526272829303132"),
  1335  				big.NewInt(1),
  1336  				big.NewInt(2),
  1337  			},
  1338  		},
  1339  		{
  1340  			"Log2/64",
  1341  			"Log2",
  1342  			[]interface{}{
  1343  				loopCnt,
  1344  				common.FromHex("01020304050607080910111213141516171819202122232425262728293031320102030405060708091011121314151617181920212223242526272829303132"),
  1345  				big.NewInt(1),
  1346  				big.NewInt(2),
  1347  			},
  1348  		},
  1349  		{
  1350  			"Log2/128",
  1351  			"Log2",
  1352  			[]interface{}{
  1353  				loopCnt,
  1354  				common.FromHex("0102030405060708091011121314151617181920212223242526272829303132010203040506070809101112131415161718192021222324252627282930313201020304050607080910111213141516171819202122232425262728293031320102030405060708091011121314151617181920212223242526272829303132"),
  1355  				big.NewInt(1),
  1356  				big.NewInt(2),
  1357  			},
  1358  		},
  1359  		{
  1360  			"Log2/256",
  1361  			"Log2",
  1362  			[]interface{}{
  1363  				loopCnt,
  1364  				common.FromHex("01020304050607080910111213141516171819202122232425262728293031320102030405060708091011121314151617181920212223242526272829303132010203040506070809101112131415161718192021222324252627282930313201020304050607080910111213141516171819202122232425262728293031320102030405060708091011121314151617181920212223242526272829303132010203040506070809101112131415161718192021222324252627282930313201020304050607080910111213141516171819202122232425262728293031320102030405060708091011121314151617181920212223242526272829303132"),
  1365  				big.NewInt(1),
  1366  				big.NewInt(2),
  1367  			},
  1368  		},
  1369  		{
  1370  			"Log2/512",
  1371  			"Log2",
  1372  			[]interface{}{
  1373  				loopCnt,
  1374  				common.FromHex("0102030405060708091011121314151617181920212223242526272829303132010203040506070809101112131415161718192021222324252627282930313201020304050607080910111213141516171819202122232425262728293031320102030405060708091011121314151617181920212223242526272829303132010203040506070809101112131415161718192021222324252627282930313201020304050607080910111213141516171819202122232425262728293031320102030405060708091011121314151617181920212223242526272829303132010203040506070809101112131415161718192021222324252627282930313201020304050607080910111213141516171819202122232425262728293031320102030405060708091011121314151617181920212223242526272829303132010203040506070809101112131415161718192021222324252627282930313201020304050607080910111213141516171819202122232425262728293031320102030405060708091011121314151617181920212223242526272829303132010203040506070809101112131415161718192021222324252627282930313201020304050607080910111213141516171819202122232425262728293031320102030405060708091011121314151617181920212223242526272829303132"),
  1375  				big.NewInt(1),
  1376  				big.NewInt(2),
  1377  			},
  1378  		},
  1379  		{
  1380  			"Log2/1024",
  1381  			"Log2",
  1382  			[]interface{}{
  1383  				loopCnt,
  1384  				common.FromHex("01020304050607080910111213141516171819202122232425262728293031320102030405060708091011121314151617181920212223242526272829303132010203040506070809101112131415161718192021222324252627282930313201020304050607080910111213141516171819202122232425262728293031320102030405060708091011121314151617181920212223242526272829303132010203040506070809101112131415161718192021222324252627282930313201020304050607080910111213141516171819202122232425262728293031320102030405060708091011121314151617181920212223242526272829303132010203040506070809101112131415161718192021222324252627282930313201020304050607080910111213141516171819202122232425262728293031320102030405060708091011121314151617181920212223242526272829303132010203040506070809101112131415161718192021222324252627282930313201020304050607080910111213141516171819202122232425262728293031320102030405060708091011121314151617181920212223242526272829303132010203040506070809101112131415161718192021222324252627282930313201020304050607080910111213141516171819202122232425262728293031320102030405060708091011121314151617181920212223242526272829303132010203040506070809101112131415161718192021222324252627282930313201020304050607080910111213141516171819202122232425262728293031320102030405060708091011121314151617181920212223242526272829303132010203040506070809101112131415161718192021222324252627282930313201020304050607080910111213141516171819202122232425262728293031320102030405060708091011121314151617181920212223242526272829303132010203040506070809101112131415161718192021222324252627282930313201020304050607080910111213141516171819202122232425262728293031320102030405060708091011121314151617181920212223242526272829303132010203040506070809101112131415161718192021222324252627282930313201020304050607080910111213141516171819202122232425262728293031320102030405060708091011121314151617181920212223242526272829303132010203040506070809101112131415161718192021222324252627282930313201020304050607080910111213141516171819202122232425262728293031320102030405060708091011121314151617181920212223242526272829303132"),
  1385  				big.NewInt(1),
  1386  				big.NewInt(2),
  1387  			},
  1388  		},
  1389  
  1390  		{
  1391  			"Log3/32",
  1392  			"Log3",
  1393  			[]interface{}{
  1394  				loopCnt,
  1395  				common.FromHex("0102030405060708091011121314151617181920212223242526272829303132"),
  1396  				big.NewInt(1),
  1397  				big.NewInt(2),
  1398  				big.NewInt(3),
  1399  			},
  1400  		},
  1401  		{
  1402  			"Log3/64",
  1403  			"Log3",
  1404  			[]interface{}{
  1405  				loopCnt,
  1406  				common.FromHex("01020304050607080910111213141516171819202122232425262728293031320102030405060708091011121314151617181920212223242526272829303132"),
  1407  				big.NewInt(1),
  1408  				big.NewInt(2),
  1409  				big.NewInt(3),
  1410  			},
  1411  		},
  1412  		{
  1413  			"Log3/128",
  1414  			"Log3",
  1415  			[]interface{}{
  1416  				loopCnt,
  1417  				common.FromHex("0102030405060708091011121314151617181920212223242526272829303132010203040506070809101112131415161718192021222324252627282930313201020304050607080910111213141516171819202122232425262728293031320102030405060708091011121314151617181920212223242526272829303132"),
  1418  				big.NewInt(1),
  1419  				big.NewInt(2),
  1420  				big.NewInt(3),
  1421  			},
  1422  		},
  1423  		{
  1424  			"Log3/256",
  1425  			"Log3",
  1426  			[]interface{}{
  1427  				loopCnt,
  1428  				common.FromHex("01020304050607080910111213141516171819202122232425262728293031320102030405060708091011121314151617181920212223242526272829303132010203040506070809101112131415161718192021222324252627282930313201020304050607080910111213141516171819202122232425262728293031320102030405060708091011121314151617181920212223242526272829303132010203040506070809101112131415161718192021222324252627282930313201020304050607080910111213141516171819202122232425262728293031320102030405060708091011121314151617181920212223242526272829303132"),
  1429  				big.NewInt(1),
  1430  				big.NewInt(2),
  1431  				big.NewInt(3),
  1432  			},
  1433  		},
  1434  		{
  1435  			"Log3/512",
  1436  			"Log3",
  1437  			[]interface{}{
  1438  				loopCnt,
  1439  				common.FromHex("0102030405060708091011121314151617181920212223242526272829303132010203040506070809101112131415161718192021222324252627282930313201020304050607080910111213141516171819202122232425262728293031320102030405060708091011121314151617181920212223242526272829303132010203040506070809101112131415161718192021222324252627282930313201020304050607080910111213141516171819202122232425262728293031320102030405060708091011121314151617181920212223242526272829303132010203040506070809101112131415161718192021222324252627282930313201020304050607080910111213141516171819202122232425262728293031320102030405060708091011121314151617181920212223242526272829303132010203040506070809101112131415161718192021222324252627282930313201020304050607080910111213141516171819202122232425262728293031320102030405060708091011121314151617181920212223242526272829303132010203040506070809101112131415161718192021222324252627282930313201020304050607080910111213141516171819202122232425262728293031320102030405060708091011121314151617181920212223242526272829303132"),
  1440  				big.NewInt(1),
  1441  				big.NewInt(2),
  1442  				big.NewInt(3),
  1443  			},
  1444  		},
  1445  		{
  1446  			"Log3/1024",
  1447  			"Log3",
  1448  			[]interface{}{
  1449  				loopCnt,
  1450  				common.FromHex("01020304050607080910111213141516171819202122232425262728293031320102030405060708091011121314151617181920212223242526272829303132010203040506070809101112131415161718192021222324252627282930313201020304050607080910111213141516171819202122232425262728293031320102030405060708091011121314151617181920212223242526272829303132010203040506070809101112131415161718192021222324252627282930313201020304050607080910111213141516171819202122232425262728293031320102030405060708091011121314151617181920212223242526272829303132010203040506070809101112131415161718192021222324252627282930313201020304050607080910111213141516171819202122232425262728293031320102030405060708091011121314151617181920212223242526272829303132010203040506070809101112131415161718192021222324252627282930313201020304050607080910111213141516171819202122232425262728293031320102030405060708091011121314151617181920212223242526272829303132010203040506070809101112131415161718192021222324252627282930313201020304050607080910111213141516171819202122232425262728293031320102030405060708091011121314151617181920212223242526272829303132010203040506070809101112131415161718192021222324252627282930313201020304050607080910111213141516171819202122232425262728293031320102030405060708091011121314151617181920212223242526272829303132010203040506070809101112131415161718192021222324252627282930313201020304050607080910111213141516171819202122232425262728293031320102030405060708091011121314151617181920212223242526272829303132010203040506070809101112131415161718192021222324252627282930313201020304050607080910111213141516171819202122232425262728293031320102030405060708091011121314151617181920212223242526272829303132010203040506070809101112131415161718192021222324252627282930313201020304050607080910111213141516171819202122232425262728293031320102030405060708091011121314151617181920212223242526272829303132010203040506070809101112131415161718192021222324252627282930313201020304050607080910111213141516171819202122232425262728293031320102030405060708091011121314151617181920212223242526272829303132"),
  1451  				big.NewInt(1),
  1452  				big.NewInt(2),
  1453  				big.NewInt(3),
  1454  			},
  1455  		},
  1456  
  1457  		{
  1458  			"Log4/32",
  1459  			"Log4",
  1460  			[]interface{}{
  1461  				loopCnt,
  1462  				common.FromHex("0102030405060708091011121314151617181920212223242526272829303132"),
  1463  				big.NewInt(1),
  1464  				big.NewInt(2),
  1465  				big.NewInt(3),
  1466  				big.NewInt(4),
  1467  			},
  1468  		},
  1469  		{
  1470  			"Log4/64",
  1471  			"Log4",
  1472  			[]interface{}{
  1473  				loopCnt,
  1474  				common.FromHex("01020304050607080910111213141516171819202122232425262728293031320102030405060708091011121314151617181920212223242526272829303132"),
  1475  				big.NewInt(1),
  1476  				big.NewInt(2),
  1477  				big.NewInt(3),
  1478  				big.NewInt(4),
  1479  			},
  1480  		},
  1481  		{
  1482  			"Log4/128",
  1483  			"Log4",
  1484  			[]interface{}{
  1485  				loopCnt,
  1486  				common.FromHex("0102030405060708091011121314151617181920212223242526272829303132010203040506070809101112131415161718192021222324252627282930313201020304050607080910111213141516171819202122232425262728293031320102030405060708091011121314151617181920212223242526272829303132"),
  1487  				big.NewInt(1),
  1488  				big.NewInt(2),
  1489  				big.NewInt(3),
  1490  				big.NewInt(4),
  1491  			},
  1492  		},
  1493  		{
  1494  			"Log4/256",
  1495  			"Log4",
  1496  			[]interface{}{
  1497  				loopCnt,
  1498  				common.FromHex("01020304050607080910111213141516171819202122232425262728293031320102030405060708091011121314151617181920212223242526272829303132010203040506070809101112131415161718192021222324252627282930313201020304050607080910111213141516171819202122232425262728293031320102030405060708091011121314151617181920212223242526272829303132010203040506070809101112131415161718192021222324252627282930313201020304050607080910111213141516171819202122232425262728293031320102030405060708091011121314151617181920212223242526272829303132"),
  1499  				big.NewInt(1),
  1500  				big.NewInt(2),
  1501  				big.NewInt(3),
  1502  				big.NewInt(4),
  1503  			},
  1504  		},
  1505  		{
  1506  			"Log4/512",
  1507  			"Log4",
  1508  			[]interface{}{
  1509  				loopCnt,
  1510  				common.FromHex("0102030405060708091011121314151617181920212223242526272829303132010203040506070809101112131415161718192021222324252627282930313201020304050607080910111213141516171819202122232425262728293031320102030405060708091011121314151617181920212223242526272829303132010203040506070809101112131415161718192021222324252627282930313201020304050607080910111213141516171819202122232425262728293031320102030405060708091011121314151617181920212223242526272829303132010203040506070809101112131415161718192021222324252627282930313201020304050607080910111213141516171819202122232425262728293031320102030405060708091011121314151617181920212223242526272829303132010203040506070809101112131415161718192021222324252627282930313201020304050607080910111213141516171819202122232425262728293031320102030405060708091011121314151617181920212223242526272829303132010203040506070809101112131415161718192021222324252627282930313201020304050607080910111213141516171819202122232425262728293031320102030405060708091011121314151617181920212223242526272829303132"),
  1511  				big.NewInt(1),
  1512  				big.NewInt(2),
  1513  				big.NewInt(3),
  1514  				big.NewInt(4),
  1515  			},
  1516  		},
  1517  		{
  1518  			"Log4/1024",
  1519  			"Log4",
  1520  			[]interface{}{
  1521  				loopCnt,
  1522  				common.FromHex("01020304050607080910111213141516171819202122232425262728293031320102030405060708091011121314151617181920212223242526272829303132010203040506070809101112131415161718192021222324252627282930313201020304050607080910111213141516171819202122232425262728293031320102030405060708091011121314151617181920212223242526272829303132010203040506070809101112131415161718192021222324252627282930313201020304050607080910111213141516171819202122232425262728293031320102030405060708091011121314151617181920212223242526272829303132010203040506070809101112131415161718192021222324252627282930313201020304050607080910111213141516171819202122232425262728293031320102030405060708091011121314151617181920212223242526272829303132010203040506070809101112131415161718192021222324252627282930313201020304050607080910111213141516171819202122232425262728293031320102030405060708091011121314151617181920212223242526272829303132010203040506070809101112131415161718192021222324252627282930313201020304050607080910111213141516171819202122232425262728293031320102030405060708091011121314151617181920212223242526272829303132010203040506070809101112131415161718192021222324252627282930313201020304050607080910111213141516171819202122232425262728293031320102030405060708091011121314151617181920212223242526272829303132010203040506070809101112131415161718192021222324252627282930313201020304050607080910111213141516171819202122232425262728293031320102030405060708091011121314151617181920212223242526272829303132010203040506070809101112131415161718192021222324252627282930313201020304050607080910111213141516171819202122232425262728293031320102030405060708091011121314151617181920212223242526272829303132010203040506070809101112131415161718192021222324252627282930313201020304050607080910111213141516171819202122232425262728293031320102030405060708091011121314151617181920212223242526272829303132010203040506070809101112131415161718192021222324252627282930313201020304050607080910111213141516171819202122232425262728293031320102030405060708091011121314151617181920212223242526272829303132"),
  1523  				big.NewInt(1),
  1524  				big.NewInt(2),
  1525  				big.NewInt(3),
  1526  				big.NewInt(4),
  1527  			},
  1528  		},
  1529  
  1530  		{
  1531  			"Origin",
  1532  			"Origin",
  1533  			[]interface{}{
  1534  				loopCnt,
  1535  			},
  1536  		},
  1537  
  1538  		{
  1539  			"GasPrice",
  1540  			"GasPrice",
  1541  			[]interface{}{
  1542  				loopCnt,
  1543  			},
  1544  		},
  1545  
  1546  		{
  1547  			"BlockHash",
  1548  			"BlockHash",
  1549  			[]interface{}{
  1550  				loopCnt,
  1551  			},
  1552  		},
  1553  
  1554  		{
  1555  			"Coinbase",
  1556  			"Coinbase",
  1557  			[]interface{}{
  1558  				loopCnt,
  1559  			},
  1560  		},
  1561  
  1562  		{
  1563  			"Timestamp",
  1564  			"Timestamp",
  1565  			[]interface{}{
  1566  				loopCnt,
  1567  			},
  1568  		},
  1569  
  1570  		{
  1571  			"Number",
  1572  			"Number",
  1573  			[]interface{}{
  1574  				loopCnt,
  1575  			},
  1576  		},
  1577  
  1578  		{
  1579  			"Difficulty",
  1580  			"Difficulty",
  1581  			[]interface{}{
  1582  				loopCnt,
  1583  			},
  1584  		},
  1585  
  1586  		{
  1587  			"GasLimit",
  1588  			"GasLimit",
  1589  			[]interface{}{
  1590  				loopCnt,
  1591  			},
  1592  		},
  1593  
  1594  		{
  1595  			"Combination",
  1596  			"Combination",
  1597  			[]interface{}{
  1598  				loopCnt, big.NewInt(100),
  1599  			},
  1600  		},
  1601  
  1602  		{
  1603  			"ecrecover",
  1604  			"precompiledContractTest",
  1605  			[]interface{}{
  1606  				loopCnt,
  1607  				common.HexToAddress("0x01"),
  1608  				common.FromHex("38d18acb67d25c8bb9942764b62f18e17054f66a817bd4295423adf9ed98873e000000000000000000000000000000000000000000000000000000000000001b38d18acb67d25c8bb9942764b62f18e17054f66a817bd4295423adf9ed98873e789d1dd423d25f0772d2748d60f7e4b81bb14d086eba8e8e8efb6dcff8a4ae02"),
  1609  			},
  1610  		},
  1611  
  1612  		{
  1613  			"sha256/32",
  1614  			"precompiledContractTest",
  1615  			[]interface{}{
  1616  				loopCnt,
  1617  				common.HexToAddress("0x02"),
  1618  				common.FromHex("0102030405060708091011121314151617181920212223242526272829303132"),
  1619  			},
  1620  		},
  1621  		{
  1622  			"sha256/64",
  1623  			"precompiledContractTest",
  1624  			[]interface{}{
  1625  				loopCnt,
  1626  				common.HexToAddress("0x02"),
  1627  				common.FromHex("01020304050607080910111213141516171819202122232425262728293031320102030405060708091011121314151617181920212223242526272829303132"),
  1628  			},
  1629  		},
  1630  		{
  1631  			"sha256/128",
  1632  			"precompiledContractTest",
  1633  			[]interface{}{
  1634  				loopCnt,
  1635  				common.HexToAddress("0x02"),
  1636  				common.FromHex("0102030405060708091011121314151617181920212223242526272829303132010203040506070809101112131415161718192021222324252627282930313201020304050607080910111213141516171819202122232425262728293031320102030405060708091011121314151617181920212223242526272829303132"),
  1637  			},
  1638  		},
  1639  		{
  1640  			"sha256/256",
  1641  			"precompiledContractTest",
  1642  			[]interface{}{
  1643  				loopCnt,
  1644  				common.HexToAddress("0x02"),
  1645  				common.FromHex("01020304050607080910111213141516171819202122232425262728293031320102030405060708091011121314151617181920212223242526272829303132010203040506070809101112131415161718192021222324252627282930313201020304050607080910111213141516171819202122232425262728293031320102030405060708091011121314151617181920212223242526272829303132010203040506070809101112131415161718192021222324252627282930313201020304050607080910111213141516171819202122232425262728293031320102030405060708091011121314151617181920212223242526272829303132"),
  1646  			},
  1647  		},
  1648  
  1649  		// ripemd160hash
  1650  		{
  1651  			"ripemd160/32",
  1652  			"precompiledContractTest",
  1653  			[]interface{}{
  1654  				loopCnt,
  1655  				common.HexToAddress("0x03"),
  1656  				common.FromHex("0102030405060708091011121314151617181920212223242526272829303132"),
  1657  			},
  1658  		},
  1659  		{
  1660  			"ripemd160/64",
  1661  			"precompiledContractTest",
  1662  			[]interface{}{
  1663  				loopCnt,
  1664  				common.HexToAddress("0x03"),
  1665  				common.FromHex("01020304050607080910111213141516171819202122232425262728293031320102030405060708091011121314151617181920212223242526272829303132"),
  1666  			},
  1667  		},
  1668  		{
  1669  			"ripemd160/128",
  1670  			"precompiledContractTest",
  1671  			[]interface{}{
  1672  				loopCnt,
  1673  				common.HexToAddress("0x03"),
  1674  				common.FromHex("0102030405060708091011121314151617181920212223242526272829303132010203040506070809101112131415161718192021222324252627282930313201020304050607080910111213141516171819202122232425262728293031320102030405060708091011121314151617181920212223242526272829303132"),
  1675  			},
  1676  		},
  1677  		{
  1678  			"ripemd160/256",
  1679  			"precompiledContractTest",
  1680  			[]interface{}{
  1681  				loopCnt,
  1682  				common.HexToAddress("0x03"),
  1683  				common.FromHex("01020304050607080910111213141516171819202122232425262728293031320102030405060708091011121314151617181920212223242526272829303132010203040506070809101112131415161718192021222324252627282930313201020304050607080910111213141516171819202122232425262728293031320102030405060708091011121314151617181920212223242526272829303132010203040506070809101112131415161718192021222324252627282930313201020304050607080910111213141516171819202122232425262728293031320102030405060708091011121314151617181920212223242526272829303132"),
  1684  			},
  1685  		},
  1686  
  1687  		// datacopy
  1688  		{
  1689  			"dataCopy/32",
  1690  			"precompiledContractTest",
  1691  			[]interface{}{
  1692  				loopCnt,
  1693  				common.HexToAddress("0x04"),
  1694  				common.FromHex("0102030405060708091011121314151617181920212223242526272829303132"),
  1695  			},
  1696  		},
  1697  		{
  1698  			"dataCopy/64",
  1699  			"precompiledContractTest",
  1700  			[]interface{}{
  1701  				loopCnt,
  1702  				common.HexToAddress("0x04"),
  1703  				common.FromHex("01020304050607080910111213141516171819202122232425262728293031320102030405060708091011121314151617181920212223242526272829303132"),
  1704  			},
  1705  		},
  1706  		{
  1707  			"dataCopy/128",
  1708  			"precompiledContractTest",
  1709  			[]interface{}{
  1710  				loopCnt,
  1711  				common.HexToAddress("0x04"),
  1712  				common.FromHex("0102030405060708091011121314151617181920212223242526272829303132010203040506070809101112131415161718192021222324252627282930313201020304050607080910111213141516171819202122232425262728293031320102030405060708091011121314151617181920212223242526272829303132"),
  1713  			},
  1714  		},
  1715  		{
  1716  			"dataCopy/256",
  1717  			"precompiledContractTest",
  1718  			[]interface{}{
  1719  				loopCnt,
  1720  				common.HexToAddress("0x04"),
  1721  				common.FromHex("01020304050607080910111213141516171819202122232425262728293031320102030405060708091011121314151617181920212223242526272829303132010203040506070809101112131415161718192021222324252627282930313201020304050607080910111213141516171819202122232425262728293031320102030405060708091011121314151617181920212223242526272829303132010203040506070809101112131415161718192021222324252627282930313201020304050607080910111213141516171819202122232425262728293031320102030405060708091011121314151617181920212223242526272829303132"),
  1722  			},
  1723  		},
  1724  
  1725  		// bigExpMod
  1726  		{
  1727  			"bigExpMod/eip_example1",
  1728  			"precompiledContractTest",
  1729  			[]interface{}{
  1730  				loopCnt,
  1731  				common.HexToAddress("0x05"),
  1732  				common.FromHex("0000000000000000000000000000000000000000000000000000000000000001" +
  1733  					"0000000000000000000000000000000000000000000000000000000000000020" +
  1734  					"0000000000000000000000000000000000000000000000000000000000000020" +
  1735  					"03" +
  1736  					"fffffffffffffffffffffffffffffffffffffffffffffffffffffffefffffc2e" +
  1737  					"fffffffffffffffffffffffffffffffffffffffffffffffffffffffefffffc2f"),
  1738  			},
  1739  		},
  1740  		{
  1741  			"bigExpMod/eip_example2",
  1742  			"precompiledContractTest",
  1743  			[]interface{}{
  1744  				loopCnt,
  1745  				common.HexToAddress("0x05"),
  1746  				common.FromHex("0000000000000000000000000000000000000000000000000000000000000000" +
  1747  					"0000000000000000000000000000000000000000000000000000000000000020" +
  1748  					"0000000000000000000000000000000000000000000000000000000000000020" +
  1749  					"fffffffffffffffffffffffffffffffffffffffffffffffffffffffefffffc2e" +
  1750  					"fffffffffffffffffffffffffffffffffffffffffffffffffffffffefffffc2f"),
  1751  			},
  1752  		},
  1753  		{
  1754  			"bigExpMod/eip_example2/mod",
  1755  			"precompiledContractTest",
  1756  			[]interface{}{
  1757  				loopCnt,
  1758  				common.HexToAddress("0x05"),
  1759  				common.FromHex("0000000000000000000000000000000000000000000000000000000000000001" +
  1760  					"0000000000000000000000000000000000000000000000000000000000000020" +
  1761  					"0000000000000000000000000000000000000000000000000000000000000020" +
  1762  					"fffffffffffffffffffffffffffffffffffffffffffffffffffffffefffffc2e" +
  1763  					"fffffffffffffffffffffffffffffffffffffffffffffffffffffffefffffc2f"),
  1764  			},
  1765  		},
  1766  		{
  1767  			"bigExpMod/modexp_modsize0_returndatasize.json/Byzantium/4",
  1768  			"precompiledContractTest",
  1769  			[]interface{}{
  1770  				loopCnt,
  1771  				common.HexToAddress("0x05"),
  1772  				common.FromHex("0000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000f3f14010101"),
  1773  			},
  1774  		},
  1775  		{
  1776  			"bigExpMod/nagydani-1-square",
  1777  			"precompiledContractTest",
  1778  			[]interface{}{
  1779  				loopCnt,
  1780  				common.HexToAddress("0x05"),
  1781  				common.FromHex("000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000040e09ad9675465c53a109fac66a445c91b292d2bb2c5268addb30cd82f80fcb0033ff97c80a5fc6f39193ae969c6ede6710a6b7ac27078a06d90ef1c72e5c85fb502fc9e1f6beb81516545975218075ec2af118cd8798df6e08a147c60fd6095ac2bb02c2908cf4dd7c81f11c289e4bce98f3553768f392a80ce22bf5c4f4a248c6b"),
  1782  			},
  1783  		},
  1784  		{
  1785  			"bigExpMod/nagydani-1-qube",
  1786  			"precompiledContractTest",
  1787  			[]interface{}{
  1788  				loopCnt,
  1789  				common.HexToAddress("0x05"),
  1790  				common.FromHex("000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000040e09ad9675465c53a109fac66a445c91b292d2bb2c5268addb30cd82f80fcb0033ff97c80a5fc6f39193ae969c6ede6710a6b7ac27078a06d90ef1c72e5c85fb503fc9e1f6beb81516545975218075ec2af118cd8798df6e08a147c60fd6095ac2bb02c2908cf4dd7c81f11c289e4bce98f3553768f392a80ce22bf5c4f4a248c6b"),
  1791  			},
  1792  		},
  1793  		{
  1794  			"bigExpMod/nagydani-1-pow0x10001",
  1795  			"precompiledContractTest",
  1796  			[]interface{}{
  1797  				loopCnt,
  1798  				common.HexToAddress("0x05"),
  1799  				common.FromHex("000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000030000000000000000000000000000000000000000000000000000000000000040e09ad9675465c53a109fac66a445c91b292d2bb2c5268addb30cd82f80fcb0033ff97c80a5fc6f39193ae969c6ede6710a6b7ac27078a06d90ef1c72e5c85fb5010001fc9e1f6beb81516545975218075ec2af118cd8798df6e08a147c60fd6095ac2bb02c2908cf4dd7c81f11c289e4bce98f3553768f392a80ce22bf5c4f4a248c6b"),
  1800  			},
  1801  		},
  1802  		{
  1803  			"bigExpMod/nagydani-2-square",
  1804  			"precompiledContractTest",
  1805  			[]interface{}{
  1806  				loopCnt,
  1807  				common.HexToAddress("0x05"),
  1808  				common.FromHex("000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000080cad7d991a00047dd54d3399b6b0b937c718abddef7917c75b6681f40cc15e2be0003657d8d4c34167b2f0bbbca0ccaa407c2a6a07d50f1517a8f22979ce12a81dcaf707cc0cebfc0ce2ee84ee7f77c38b9281b9822a8d3de62784c089c9b18dcb9a2a5eecbede90ea788a862a9ddd9d609c2c52972d63e289e28f6a590ffbf5102e6d893b80aeed5e6e9ce9afa8a5d5675c93a32ac05554cb20e9951b2c140e3ef4e433068cf0fb73bc9f33af1853f64aa27a0028cbf570d7ac9048eae5dc7b28c87c31e5810f1e7fa2cda6adf9f1076dbc1ec1238560071e7efc4e9565c49be9e7656951985860a558a754594115830bcdb421f741408346dd5997bb01c287087"),
  1809  			},
  1810  		},
  1811  		{
  1812  			"bigExpMod/nagydani-2-qube",
  1813  			"precompiledContractTest",
  1814  			[]interface{}{
  1815  				loopCnt,
  1816  				common.HexToAddress("0x05"),
  1817  				common.FromHex("000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000080cad7d991a00047dd54d3399b6b0b937c718abddef7917c75b6681f40cc15e2be0003657d8d4c34167b2f0bbbca0ccaa407c2a6a07d50f1517a8f22979ce12a81dcaf707cc0cebfc0ce2ee84ee7f77c38b9281b9822a8d3de62784c089c9b18dcb9a2a5eecbede90ea788a862a9ddd9d609c2c52972d63e289e28f6a590ffbf5103e6d893b80aeed5e6e9ce9afa8a5d5675c93a32ac05554cb20e9951b2c140e3ef4e433068cf0fb73bc9f33af1853f64aa27a0028cbf570d7ac9048eae5dc7b28c87c31e5810f1e7fa2cda6adf9f1076dbc1ec1238560071e7efc4e9565c49be9e7656951985860a558a754594115830bcdb421f741408346dd5997bb01c287087"),
  1818  			},
  1819  		},
  1820  		{
  1821  			"bigExpMod/nagydani-2-pow0x10001",
  1822  			"precompiledContractTest",
  1823  			[]interface{}{
  1824  				loopCnt,
  1825  				common.HexToAddress("0x05"),
  1826  				common.FromHex("000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000030000000000000000000000000000000000000000000000000000000000000080cad7d991a00047dd54d3399b6b0b937c718abddef7917c75b6681f40cc15e2be0003657d8d4c34167b2f0bbbca0ccaa407c2a6a07d50f1517a8f22979ce12a81dcaf707cc0cebfc0ce2ee84ee7f77c38b9281b9822a8d3de62784c089c9b18dcb9a2a5eecbede90ea788a862a9ddd9d609c2c52972d63e289e28f6a590ffbf51010001e6d893b80aeed5e6e9ce9afa8a5d5675c93a32ac05554cb20e9951b2c140e3ef4e433068cf0fb73bc9f33af1853f64aa27a0028cbf570d7ac9048eae5dc7b28c87c31e5810f1e7fa2cda6adf9f1076dbc1ec1238560071e7efc4e9565c49be9e7656951985860a558a754594115830bcdb421f741408346dd5997bb01c287087"),
  1827  			},
  1828  		},
  1829  		{
  1830  			"bigExpMod/nagydani-3-square",
  1831  			"precompiledContractTest",
  1832  			[]interface{}{
  1833  				loopCnt,
  1834  				common.HexToAddress("0x05"),
  1835  				common.FromHex("000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000100c9130579f243e12451760976261416413742bd7c91d39ae087f46794062b8c239f2a74abf3918605a0e046a7890e049475ba7fbb78f5de6490bd22a710cc04d30088179a919d86c2da62cf37f59d8f258d2310d94c24891be2d7eeafaa32a8cb4b0cfe5f475ed778f45907dc8916a73f03635f233f7a77a00a3ec9ca6761a5bbd558a2318ecd0caa1c5016691523e7e1fa267dd35e70c66e84380bdcf7c0582f540174e572c41f81e93da0b757dff0b0fe23eb03aa19af0bdec3afb474216febaacb8d0381e631802683182b0fe72c28392539850650b70509f54980241dc175191a35d967288b532a7a8223ce2440d010615f70df269501944d4ec16fe4a3cb02d7a85909174757835187cb52e71934e6c07ef43b4c46fc30bbcd0bc72913068267c54a4aabebb493922492820babdeb7dc9b1558fcf7bd82c37c82d3147e455b623ab0efa752fe0b3a67ca6e4d126639e645a0bf417568adbb2a6a4eef62fa1fa29b2a5a43bebea1f82193a7dd98eb483d09bb595af1fa9c97c7f41f5649d976aee3e5e59e2329b43b13bea228d4a93f16ba139ccb511de521ffe747aa2eca664f7c9e33da59075cc335afcd2bf3ae09765f01ab5a7c3e3938ec168b74724b5074247d200d9970382f683d6059b94dbc336603d1dfee714e4b447ac2fa1d99ecb4961da2854e03795ed758220312d101e1e3d87d5313a6d052aebde75110363d"),
  1836  			},
  1837  		},
  1838  		{
  1839  			"bigExpMod/nagydani-3-qube",
  1840  			"precompiledContractTest",
  1841  			[]interface{}{
  1842  				loopCnt,
  1843  				common.HexToAddress("0x05"),
  1844  				common.FromHex("000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000100c9130579f243e12451760976261416413742bd7c91d39ae087f46794062b8c239f2a74abf3918605a0e046a7890e049475ba7fbb78f5de6490bd22a710cc04d30088179a919d86c2da62cf37f59d8f258d2310d94c24891be2d7eeafaa32a8cb4b0cfe5f475ed778f45907dc8916a73f03635f233f7a77a00a3ec9ca6761a5bbd558a2318ecd0caa1c5016691523e7e1fa267dd35e70c66e84380bdcf7c0582f540174e572c41f81e93da0b757dff0b0fe23eb03aa19af0bdec3afb474216febaacb8d0381e631802683182b0fe72c28392539850650b70509f54980241dc175191a35d967288b532a7a8223ce2440d010615f70df269501944d4ec16fe4a3cb03d7a85909174757835187cb52e71934e6c07ef43b4c46fc30bbcd0bc72913068267c54a4aabebb493922492820babdeb7dc9b1558fcf7bd82c37c82d3147e455b623ab0efa752fe0b3a67ca6e4d126639e645a0bf417568adbb2a6a4eef62fa1fa29b2a5a43bebea1f82193a7dd98eb483d09bb595af1fa9c97c7f41f5649d976aee3e5e59e2329b43b13bea228d4a93f16ba139ccb511de521ffe747aa2eca664f7c9e33da59075cc335afcd2bf3ae09765f01ab5a7c3e3938ec168b74724b5074247d200d9970382f683d6059b94dbc336603d1dfee714e4b447ac2fa1d99ecb4961da2854e03795ed758220312d101e1e3d87d5313a6d052aebde75110363d"),
  1845  			},
  1846  		},
  1847  		{
  1848  			"bigExpMod/nagydani-3-pow0x10001",
  1849  			"precompiledContractTest",
  1850  			[]interface{}{
  1851  				loopCnt,
  1852  				common.HexToAddress("0x05"),
  1853  				common.FromHex("000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000030000000000000000000000000000000000000000000000000000000000000100c9130579f243e12451760976261416413742bd7c91d39ae087f46794062b8c239f2a74abf3918605a0e046a7890e049475ba7fbb78f5de6490bd22a710cc04d30088179a919d86c2da62cf37f59d8f258d2310d94c24891be2d7eeafaa32a8cb4b0cfe5f475ed778f45907dc8916a73f03635f233f7a77a00a3ec9ca6761a5bbd558a2318ecd0caa1c5016691523e7e1fa267dd35e70c66e84380bdcf7c0582f540174e572c41f81e93da0b757dff0b0fe23eb03aa19af0bdec3afb474216febaacb8d0381e631802683182b0fe72c28392539850650b70509f54980241dc175191a35d967288b532a7a8223ce2440d010615f70df269501944d4ec16fe4a3cb010001d7a85909174757835187cb52e71934e6c07ef43b4c46fc30bbcd0bc72913068267c54a4aabebb493922492820babdeb7dc9b1558fcf7bd82c37c82d3147e455b623ab0efa752fe0b3a67ca6e4d126639e645a0bf417568adbb2a6a4eef62fa1fa29b2a5a43bebea1f82193a7dd98eb483d09bb595af1fa9c97c7f41f5649d976aee3e5e59e2329b43b13bea228d4a93f16ba139ccb511de521ffe747aa2eca664f7c9e33da59075cc335afcd2bf3ae09765f01ab5a7c3e3938ec168b74724b5074247d200d9970382f683d6059b94dbc336603d1dfee714e4b447ac2fa1d99ecb4961da2854e03795ed758220312d101e1e3d87d5313a6d052aebde75110363d"),
  1854  			},
  1855  		},
  1856  		{
  1857  			"bigExpMod/nagydani-4-square",
  1858  			"precompiledContractTest",
  1859  			[]interface{}{
  1860  				loopCnt,
  1861  				common.HexToAddress("0x05"),
  1862  				common.FromHex("000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000200db34d0e438249c0ed685c949cc28776a05094e1c48691dc3f2dca5fc3356d2a0663bd376e4712839917eb9a19c670407e2c377a2de385a3ff3b52104f7f1f4e0c7bf7717fb913896693dc5edbb65b760ef1b00e42e9d8f9af17352385e1cd742c9b006c0f669995cb0bb21d28c0aced2892267637b6470d8cee0ab27fc5d42658f6e88240c31d6774aa60a7ebd25cd48b56d0da11209f1928e61005c6eb709f3e8e0aaf8d9b10f7d7e296d772264dc76897ccdddadc91efa91c1903b7232a9e4c3b941917b99a3bc0c26497dedc897c25750af60237aa67934a26a2bc491db3dcc677491944bc1f51d3e5d76b8d846a62db03dedd61ff508f91a56d71028125035c3a44cbb041497c83bf3e4ae2a9613a401cc721c547a2afa3b16a2969933d3626ed6d8a7428648f74122fd3f2a02a20758f7f693892c8fd798b39abac01d18506c45e71432639e9f9505719ee822f62ccbf47f6850f096ff77b5afaf4be7d772025791717dbe5abf9b3f40cff7d7aab6f67e38f62faf510747276e20a42127e7500c444f9ed92baf65ade9e836845e39c4316d9dce5f8e2c8083e2c0acbb95296e05e51aab13b6b8f53f06c9c4276e12b0671133218cc3ea907da3bd9a367096d9202128d14846cc2e20d56fc8473ecb07cecbfb8086919f3971926e7045b853d85a69d026195c70f9f7a823536e2a8f4b3e12e94d9b53a934353451094b8102df3143a0057457d75e8c708b6337a6f5a4fd1a06727acf9fb93e2993c62f3378b37d56c85e7b1e00f0145ebf8e4095bd723166293c60b6ac1252291ef65823c9e040ddad14969b3b340a4ef714db093a587c37766d68b8d6b5016e741587e7e6bf7e763b44f0247e64bae30f994d248bfd20541a333e5b225ef6a61199e301738b1e688f70ec1d7fb892c183c95dc543c3e12adf8a5e8b9ca9d04f9445cced3ab256f29e998e69efaa633a7b60e1db5a867924ccab0a171d9d6e1098dfa15acde9553de599eaa56490c8f411e4985111f3d40bddfc5e301edb01547b01a886550a61158f7e2033c59707789bf7c854181d0c2e2a42a93cf09209747d7082e147eb8544de25c3eb14f2e35559ea0c0f5877f2f3fc92132c0ae9da4e45b2f6c866a224ea6d1f28c05320e287750fbc647368d41116e528014cc1852e5531d53e4af938374daba6cee4baa821ed07117253bb3601ddd00d59a3d7fb2ef1f5a2fbba7c429f0cf9a5b3462410fd833a69118f8be9c559b1000cc608fd877fb43f8e65c2d1302622b944462579056874b387208d90623fcdaf93920ca7a9e4ba64ea208758222ad868501cc2c345e2d3a5ea2a17e5069248138c8a79c0251185d29ee73e5afab5354769142d2bf0cb6712727aa6bf84a6245fcdae66e4938d84d1b9dd09a884818622080ff5f98942fb20acd7e0c916c2d5ea7ce6f7e173315384518f"),
  1863  			},
  1864  		},
  1865  		{
  1866  			"bigExpMod/nagydani-4-qube",
  1867  			"precompiledContractTest",
  1868  			[]interface{}{
  1869  				loopCnt,
  1870  				common.HexToAddress("0x05"),
  1871  				common.FromHex("000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000200db34d0e438249c0ed685c949cc28776a05094e1c48691dc3f2dca5fc3356d2a0663bd376e4712839917eb9a19c670407e2c377a2de385a3ff3b52104f7f1f4e0c7bf7717fb913896693dc5edbb65b760ef1b00e42e9d8f9af17352385e1cd742c9b006c0f669995cb0bb21d28c0aced2892267637b6470d8cee0ab27fc5d42658f6e88240c31d6774aa60a7ebd25cd48b56d0da11209f1928e61005c6eb709f3e8e0aaf8d9b10f7d7e296d772264dc76897ccdddadc91efa91c1903b7232a9e4c3b941917b99a3bc0c26497dedc897c25750af60237aa67934a26a2bc491db3dcc677491944bc1f51d3e5d76b8d846a62db03dedd61ff508f91a56d71028125035c3a44cbb041497c83bf3e4ae2a9613a401cc721c547a2afa3b16a2969933d3626ed6d8a7428648f74122fd3f2a02a20758f7f693892c8fd798b39abac01d18506c45e71432639e9f9505719ee822f62ccbf47f6850f096ff77b5afaf4be7d772025791717dbe5abf9b3f40cff7d7aab6f67e38f62faf510747276e20a42127e7500c444f9ed92baf65ade9e836845e39c4316d9dce5f8e2c8083e2c0acbb95296e05e51aab13b6b8f53f06c9c4276e12b0671133218cc3ea907da3bd9a367096d9202128d14846cc2e20d56fc8473ecb07cecbfb8086919f3971926e7045b853d85a69d026195c70f9f7a823536e2a8f4b3e12e94d9b53a934353451094b8103df3143a0057457d75e8c708b6337a6f5a4fd1a06727acf9fb93e2993c62f3378b37d56c85e7b1e00f0145ebf8e4095bd723166293c60b6ac1252291ef65823c9e040ddad14969b3b340a4ef714db093a587c37766d68b8d6b5016e741587e7e6bf7e763b44f0247e64bae30f994d248bfd20541a333e5b225ef6a61199e301738b1e688f70ec1d7fb892c183c95dc543c3e12adf8a5e8b9ca9d04f9445cced3ab256f29e998e69efaa633a7b60e1db5a867924ccab0a171d9d6e1098dfa15acde9553de599eaa56490c8f411e4985111f3d40bddfc5e301edb01547b01a886550a61158f7e2033c59707789bf7c854181d0c2e2a42a93cf09209747d7082e147eb8544de25c3eb14f2e35559ea0c0f5877f2f3fc92132c0ae9da4e45b2f6c866a224ea6d1f28c05320e287750fbc647368d41116e528014cc1852e5531d53e4af938374daba6cee4baa821ed07117253bb3601ddd00d59a3d7fb2ef1f5a2fbba7c429f0cf9a5b3462410fd833a69118f8be9c559b1000cc608fd877fb43f8e65c2d1302622b944462579056874b387208d90623fcdaf93920ca7a9e4ba64ea208758222ad868501cc2c345e2d3a5ea2a17e5069248138c8a79c0251185d29ee73e5afab5354769142d2bf0cb6712727aa6bf84a6245fcdae66e4938d84d1b9dd09a884818622080ff5f98942fb20acd7e0c916c2d5ea7ce6f7e173315384518f"),
  1872  			},
  1873  		},
  1874  		{
  1875  			"bigExpMod/nagydani-4-pow0x10001",
  1876  			"precompiledContractTest",
  1877  			[]interface{}{
  1878  				loopCnt,
  1879  				common.HexToAddress("0x05"),
  1880  				common.FromHex("000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000030000000000000000000000000000000000000000000000000000000000000200db34d0e438249c0ed685c949cc28776a05094e1c48691dc3f2dca5fc3356d2a0663bd376e4712839917eb9a19c670407e2c377a2de385a3ff3b52104f7f1f4e0c7bf7717fb913896693dc5edbb65b760ef1b00e42e9d8f9af17352385e1cd742c9b006c0f669995cb0bb21d28c0aced2892267637b6470d8cee0ab27fc5d42658f6e88240c31d6774aa60a7ebd25cd48b56d0da11209f1928e61005c6eb709f3e8e0aaf8d9b10f7d7e296d772264dc76897ccdddadc91efa91c1903b7232a9e4c3b941917b99a3bc0c26497dedc897c25750af60237aa67934a26a2bc491db3dcc677491944bc1f51d3e5d76b8d846a62db03dedd61ff508f91a56d71028125035c3a44cbb041497c83bf3e4ae2a9613a401cc721c547a2afa3b16a2969933d3626ed6d8a7428648f74122fd3f2a02a20758f7f693892c8fd798b39abac01d18506c45e71432639e9f9505719ee822f62ccbf47f6850f096ff77b5afaf4be7d772025791717dbe5abf9b3f40cff7d7aab6f67e38f62faf510747276e20a42127e7500c444f9ed92baf65ade9e836845e39c4316d9dce5f8e2c8083e2c0acbb95296e05e51aab13b6b8f53f06c9c4276e12b0671133218cc3ea907da3bd9a367096d9202128d14846cc2e20d56fc8473ecb07cecbfb8086919f3971926e7045b853d85a69d026195c70f9f7a823536e2a8f4b3e12e94d9b53a934353451094b81010001df3143a0057457d75e8c708b6337a6f5a4fd1a06727acf9fb93e2993c62f3378b37d56c85e7b1e00f0145ebf8e4095bd723166293c60b6ac1252291ef65823c9e040ddad14969b3b340a4ef714db093a587c37766d68b8d6b5016e741587e7e6bf7e763b44f0247e64bae30f994d248bfd20541a333e5b225ef6a61199e301738b1e688f70ec1d7fb892c183c95dc543c3e12adf8a5e8b9ca9d04f9445cced3ab256f29e998e69efaa633a7b60e1db5a867924ccab0a171d9d6e1098dfa15acde9553de599eaa56490c8f411e4985111f3d40bddfc5e301edb01547b01a886550a61158f7e2033c59707789bf7c854181d0c2e2a42a93cf09209747d7082e147eb8544de25c3eb14f2e35559ea0c0f5877f2f3fc92132c0ae9da4e45b2f6c866a224ea6d1f28c05320e287750fbc647368d41116e528014cc1852e5531d53e4af938374daba6cee4baa821ed07117253bb3601ddd00d59a3d7fb2ef1f5a2fbba7c429f0cf9a5b3462410fd833a69118f8be9c559b1000cc608fd877fb43f8e65c2d1302622b944462579056874b387208d90623fcdaf93920ca7a9e4ba64ea208758222ad868501cc2c345e2d3a5ea2a17e5069248138c8a79c0251185d29ee73e5afab5354769142d2bf0cb6712727aa6bf84a6245fcdae66e4938d84d1b9dd09a884818622080ff5f98942fb20acd7e0c916c2d5ea7ce6f7e173315384518f"),
  1881  			},
  1882  		},
  1883  		{
  1884  			"bigExpMod/nagydani-5-square",
  1885  			"precompiledContractTest",
  1886  			[]interface{}{
  1887  				loopCnt,
  1888  				common.HexToAddress("0x05"),
  1889  				common.FromHex("000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000400c5a1611f8be90071a43db23cc2fe01871cc4c0e8ab5743f6378e4fef77f7f6db0095c0727e20225beb665645403453e325ad5f9aeb9ba99bf3c148f63f9c07cf4fe8847ad5242d6b7d4499f93bd47056ddab8f7dee878fc2314f344dbee2a7c41a5d3db91eff372c730c2fdd3a141a4b61999e36d549b9870cf2f4e632c4d5df5f024f81c028000073a0ed8847cfb0593d36a47142f578f05ccbe28c0c06aeb1b1da027794c48db880278f79ba78ae64eedfea3c07d10e0562668d839749dc95f40467d15cf65b9cfc52c7c4bcef1cda3596dd52631aac942f146c7cebd46065131699ce8385b0db1874336747ee020a5698a3d1a1082665721e769567f579830f9d259cec1a836845109c21cf6b25da572512bf3c42fd4b96e43895589042ab60dd41f497db96aec102087fe784165bb45f942859268fd2ff6c012d9d00c02ba83eace047cc5f7b2c392c2955c58a49f0338d6fc58749c9db2155522ac17914ec216ad87f12e0ee95574613942fa615898c4d9e8a3be68cd6afa4e7a003dedbdf8edfee31162b174f965b20ae752ad89c967b3068b6f722c16b354456ba8e280f987c08e0a52d40a2e8f3a59b94d590aeef01879eb7a90b3ee7d772c839c85519cbeaddc0c193ec4874a463b53fcaea3271d80ebfb39b33489365fc039ae549a17a9ff898eea2f4cb27b8dbee4c17b998438575b2b8d107e4a0d66ba7fca85b41a58a8d51f191a35c856dfbe8aef2b00048a694bbccff832d23c8ca7a7ff0b6c0b3011d00b97c86c0628444d267c951d9e4fb8f83e154b8f74fb51aa16535e498235c5597dac9606ed0be3173a3836baa4e7d756ffe1e2879b415d3846bccd538c05b847785699aefde3e305decb600cd8fb0e7d8de5efc26971a6ad4e6d7a2d91474f1023a0ac4b78dc937da0ce607a45974d2cac1c33a2631ff7fe6144a3b2e5cf98b531a9627dea92c1dc82204d09db0439b6a11dd64b484e1263aa45fd9539b6020b55e3baece3986a8bffc1003406348f5c61265099ed43a766ee4f93f5f9c5abbc32a0fd3ac2b35b87f9ec26037d88275bd7dd0a54474995ee34ed3727f3f97c48db544b1980193a4b76a8a3ddab3591ce527f16d91882e67f0103b5cda53f7da54d489fc4ac08b6ab358a5a04aa9daa16219d50bd672a7cb804ed769d218807544e5993f1c27427104b349906a0b654df0bf69328afd3013fbe430155339c39f236df5557bf92f1ded7ff609a8502f49064ec3d1dbfb6c15d3a4c11a4f8acd12278cbf68acd5709463d12e3338a6eddb8c112f199645e23154a8e60879d2a654e3ed9296aa28f134168619691cd2c6b9e2eba4438381676173fc63c2588a3c5910dc149cf3760f0aa9fa9c3f5faa9162b0bf1aac9dd32b706a60ef53cbdb394b6b40222b5bc80eea82ba8958386672564cae3794f977871ab62337cf02e30049201ec12937e7ce79d0f55d9c810e20acf52212aca1d3888949e0e4830aad88d804161230eb89d4d329cc83570fe257217d2119134048dd2ed167646975fc7d77136919a049ea74cf08ddd2b896890bb24a0ba18094a22baa351bf29ad96c66bbb1a598f2ca391749620e62d61c3561a7d3653ccc8892c7b99baaf76bf836e2991cb06d6bc0514568ff0d1ec8bb4b3d6984f5eaefb17d3ea2893722375d3ddb8e389a8eef7d7d198f8e687d6a513983df906099f9a2d23f4f9dec6f8ef2f11fc0a21fac45353b94e00486f5e17d386af42502d09db33cf0cf28310e049c07e88682aeeb00cb833c5174266e62407a57583f1f88b304b7c6e0c84bbe1c0fd423072d37a5bd0aacf764229e5c7cd02473460ba3645cd8e8ae144065bf02d0dd238593d8e230354f67e0b2f23012c23274f80e3ee31e35e2606a4a3f31d94ab755e6d163cff52cbb36b6d0cc67ffc512aeed1dce4d7a0d70ce82f2baba12e8d514dc92a056f994adfb17b5b9712bd5186f27a2fda1f7039c5df2c8587fdc62f5627580c13234b55be4df3056050e2d1ef3218f0dd66cb05265fe1acfb0989d8213f2c19d1735a7cf3fa65d88dad5af52dc2bba22b7abf46c3bc77b5091baab9e8f0ddc4d5e581037de91a9f8dcbc69309be29cc815cf19a20a7585b8b3073edf51fc9baeb3e509b97fa4ecfd621e0fd57bd61cac1b895c03248ff12bdbc57509250df3517e8a3fe1d776836b34ab352b973d932ef708b14f7418f9eceb1d87667e61e3e758649cb083f01b133d37ab2f5afa96d6c84bcacf4efc3851ad308c1e7d9113624fce29fab460ab9d2a48d92cdb281103a5250ad44cb2ff6e67ac670c02fdafb3e0f1353953d6d7d5646ca1568dea55275a050ec501b7c6250444f7219f1ba7521ba3b93d089727ca5f3bbe0d6c1300b423377004954c5628fdb65770b18ced5c9b23a4a5a6d6ef25fe01b4ce278de0bcc4ed86e28a0a68818ffa40970128cf2c38740e80037984428c1bd5113f40ff47512ee6f4e4d8f9b8e8e1b3040d2928d003bd1c1329dc885302fbce9fa81c23b4dc49c7c82d29b52957847898676c89aa5d32b5b0e1c0d5a2b79a19d67562f407f19425687971a957375879d90c5f57c857136c17106c9ab1b99d80e69c8c954ed386493368884b55c939b8d64d26f643e800c56f90c01079d7c534e3b2b7ae352cefd3016da55f6a85eb803b85e2304915fd2001f77c74e28746293c46e4f5f0fd49cf988aafd0026b8e7a3bab2da5cdce1ea26c2e29ec03f4807fac432662b2d6c060be1c7be0e5489de69d0a6e03a4b9117f9244b34a0f1ecba89884f781c6320412413a00c4980287409a2a78c2cd7e65cecebbe4ec1c28cac4dd95f6998e78fc6f1392384331c9436aa10e10e2bf8ad2c4eafbcf276aa7bae64b74428911b3269c749338b0fc5075ad"),
  1890  			},
  1891  		},
  1892  		{
  1893  			"bigExpMod/nagydani-5-pow0x10001",
  1894  			"precompiledContractTest",
  1895  			[]interface{}{
  1896  				loopCnt,
  1897  				common.HexToAddress("0x05"),
  1898  				common.FromHex("000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000000030000000000000000000000000000000000000000000000000000000000000400c5a1611f8be90071a43db23cc2fe01871cc4c0e8ab5743f6378e4fef77f7f6db0095c0727e20225beb665645403453e325ad5f9aeb9ba99bf3c148f63f9c07cf4fe8847ad5242d6b7d4499f93bd47056ddab8f7dee878fc2314f344dbee2a7c41a5d3db91eff372c730c2fdd3a141a4b61999e36d549b9870cf2f4e632c4d5df5f024f81c028000073a0ed8847cfb0593d36a47142f578f05ccbe28c0c06aeb1b1da027794c48db880278f79ba78ae64eedfea3c07d10e0562668d839749dc95f40467d15cf65b9cfc52c7c4bcef1cda3596dd52631aac942f146c7cebd46065131699ce8385b0db1874336747ee020a5698a3d1a1082665721e769567f579830f9d259cec1a836845109c21cf6b25da572512bf3c42fd4b96e43895589042ab60dd41f497db96aec102087fe784165bb45f942859268fd2ff6c012d9d00c02ba83eace047cc5f7b2c392c2955c58a49f0338d6fc58749c9db2155522ac17914ec216ad87f12e0ee95574613942fa615898c4d9e8a3be68cd6afa4e7a003dedbdf8edfee31162b174f965b20ae752ad89c967b3068b6f722c16b354456ba8e280f987c08e0a52d40a2e8f3a59b94d590aeef01879eb7a90b3ee7d772c839c85519cbeaddc0c193ec4874a463b53fcaea3271d80ebfb39b33489365fc039ae549a17a9ff898eea2f4cb27b8dbee4c17b998438575b2b8d107e4a0d66ba7fca85b41a58a8d51f191a35c856dfbe8aef2b00048a694bbccff832d23c8ca7a7ff0b6c0b3011d00b97c86c0628444d267c951d9e4fb8f83e154b8f74fb51aa16535e498235c5597dac9606ed0be3173a3836baa4e7d756ffe1e2879b415d3846bccd538c05b847785699aefde3e305decb600cd8fb0e7d8de5efc26971a6ad4e6d7a2d91474f1023a0ac4b78dc937da0ce607a45974d2cac1c33a2631ff7fe6144a3b2e5cf98b531a9627dea92c1dc82204d09db0439b6a11dd64b484e1263aa45fd9539b6020b55e3baece3986a8bffc1003406348f5c61265099ed43a766ee4f93f5f9c5abbc32a0fd3ac2b35b87f9ec26037d88275bd7dd0a54474995ee34ed3727f3f97c48db544b1980193a4b76a8a3ddab3591ce527f16d91882e67f0103b5cda53f7da54d489fc4ac08b6ab358a5a04aa9daa16219d50bd672a7cb804ed769d218807544e5993f1c27427104b349906a0b654df0bf69328afd3013fbe430155339c39f236df5557bf92f1ded7ff609a8502f49064ec3d1dbfb6c15d3a4c11a4f8acd12278cbf68acd5709463d12e3338a6eddb8c112f199645e23154a8e60879d2a654e3ed9296aa28f134168619691cd2c6b9e2eba4438381676173fc63c2588a3c5910dc149cf3760f0aa9fa9c3f5faa9162b0bf1aac9dd32b706a60ef53cbdb394b6b40222b5bc80eea82ba8958386672564cae3794f977871ab62337cf010001e30049201ec12937e7ce79d0f55d9c810e20acf52212aca1d3888949e0e4830aad88d804161230eb89d4d329cc83570fe257217d2119134048dd2ed167646975fc7d77136919a049ea74cf08ddd2b896890bb24a0ba18094a22baa351bf29ad96c66bbb1a598f2ca391749620e62d61c3561a7d3653ccc8892c7b99baaf76bf836e2991cb06d6bc0514568ff0d1ec8bb4b3d6984f5eaefb17d3ea2893722375d3ddb8e389a8eef7d7d198f8e687d6a513983df906099f9a2d23f4f9dec6f8ef2f11fc0a21fac45353b94e00486f5e17d386af42502d09db33cf0cf28310e049c07e88682aeeb00cb833c5174266e62407a57583f1f88b304b7c6e0c84bbe1c0fd423072d37a5bd0aacf764229e5c7cd02473460ba3645cd8e8ae144065bf02d0dd238593d8e230354f67e0b2f23012c23274f80e3ee31e35e2606a4a3f31d94ab755e6d163cff52cbb36b6d0cc67ffc512aeed1dce4d7a0d70ce82f2baba12e8d514dc92a056f994adfb17b5b9712bd5186f27a2fda1f7039c5df2c8587fdc62f5627580c13234b55be4df3056050e2d1ef3218f0dd66cb05265fe1acfb0989d8213f2c19d1735a7cf3fa65d88dad5af52dc2bba22b7abf46c3bc77b5091baab9e8f0ddc4d5e581037de91a9f8dcbc69309be29cc815cf19a20a7585b8b3073edf51fc9baeb3e509b97fa4ecfd621e0fd57bd61cac1b895c03248ff12bdbc57509250df3517e8a3fe1d776836b34ab352b973d932ef708b14f7418f9eceb1d87667e61e3e758649cb083f01b133d37ab2f5afa96d6c84bcacf4efc3851ad308c1e7d9113624fce29fab460ab9d2a48d92cdb281103a5250ad44cb2ff6e67ac670c02fdafb3e0f1353953d6d7d5646ca1568dea55275a050ec501b7c6250444f7219f1ba7521ba3b93d089727ca5f3bbe0d6c1300b423377004954c5628fdb65770b18ced5c9b23a4a5a6d6ef25fe01b4ce278de0bcc4ed86e28a0a68818ffa40970128cf2c38740e80037984428c1bd5113f40ff47512ee6f4e4d8f9b8e8e1b3040d2928d003bd1c1329dc885302fbce9fa81c23b4dc49c7c82d29b52957847898676c89aa5d32b5b0e1c0d5a2b79a19d67562f407f19425687971a957375879d90c5f57c857136c17106c9ab1b99d80e69c8c954ed386493368884b55c939b8d64d26f643e800c56f90c01079d7c534e3b2b7ae352cefd3016da55f6a85eb803b85e2304915fd2001f77c74e28746293c46e4f5f0fd49cf988aafd0026b8e7a3bab2da5cdce1ea26c2e29ec03f4807fac432662b2d6c060be1c7be0e5489de69d0a6e03a4b9117f9244b34a0f1ecba89884f781c6320412413a00c4980287409a2a78c2cd7e65cecebbe4ec1c28cac4dd95f6998e78fc6f1392384331c9436aa10e10e2bf8ad2c4eafbcf276aa7bae64b74428911b3269c749338b0fc5075ad"),
  1899  			},
  1900  		},
  1901  
  1902  		// bn256Add
  1903  		{
  1904  			"bn256Add/chfast1",
  1905  			"precompiledContractTest",
  1906  			[]interface{}{
  1907  				loopCnt,
  1908  				common.HexToAddress("0x06"),
  1909  				common.FromHex("18b18acfb4c2c30276db5411368e7185b311dd124691610c5d3b74034e093dc9063c909c4720840cb5134cb9f59fa749755796819658d32efc0d288198f3726607c2b7f58a84bd6145f00c9c2bc0bb1a187f20ff2c92963a88019e7c6a014eed06614e20c147e940f2d70da3f74c9a17df361706a4485c742bd6788478fa17d7"),
  1910  			},
  1911  		},
  1912  		{
  1913  			"bn256Add/cdetrio3",
  1914  			"precompiledContractTest",
  1915  			[]interface{}{
  1916  				loopCnt,
  1917  				common.HexToAddress("0x06"),
  1918  				common.FromHex("0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"),
  1919  			},
  1920  		},
  1921  
  1922  		// bn256ScalarMul
  1923  		{
  1924  			"bn256ScalarMul/chfast1",
  1925  			"precompiledContractTest",
  1926  			[]interface{}{
  1927  				loopCnt,
  1928  				common.HexToAddress("0x07"),
  1929  				common.FromHex("2bd3e6d0f3b142924f5ca7b49ce5b9d54c4703d7ae5648e61d02268b1a0a9fb721611ce0a6af85915e2f1d70300909ce2e49dfad4a4619c8390cae66cefdb20400000000000000000000000000000000000000000000000011138ce750fa15c2"),
  1930  			},
  1931  		},
  1932  		{
  1933  			"bn256ScalarMul/cdetrio2",
  1934  			"precompiledContractTest",
  1935  			[]interface{}{
  1936  				loopCnt,
  1937  				common.HexToAddress("0x07"),
  1938  				common.FromHex("1a87b0584ce92f4593d161480614f2989035225609f08058ccfa3d0f940febe31a2f3c951f6dadcc7ee9007dff81504b0fcd6d7cf59996efdc33d92bf7f9f8f630644e72e131a029b85045b68181585d2833e84879b9709143e1f593f0000000"),
  1939  			},
  1940  		},
  1941  
  1942  		// bn256Paring
  1943  		{
  1944  			"bn256Paring/one_point",
  1945  			"precompiledContractTest",
  1946  			[]interface{}{
  1947  				loopCnt,
  1948  				common.HexToAddress("0x08"),
  1949  				common.FromHex("00000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000002198e9393920d483a7260bfb731fb5d25f1aa493335a9e71297e485b7aef312c21800deef121f1e76426a00665e5c4479674322d4f75edadd46debd5cd992f6ed090689d0585ff075ec9e99ad690c3395bc4b313370b38ef355acdadcd122975b12c85ea5db8c6deb4aab71808dcb408fe3d1e7690c43d37b4ce6cc0166fa7daa"),
  1950  			},
  1951  		},
  1952  		{
  1953  			"bn256Paring/two_point_match_2",
  1954  			"precompiledContractTest",
  1955  			[]interface{}{
  1956  				loopCnt,
  1957  				common.HexToAddress("0x08"),
  1958  				common.FromHex("00000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000002198e9393920d483a7260bfb731fb5d25f1aa493335a9e71297e485b7aef312c21800deef121f1e76426a00665e5c4479674322d4f75edadd46debd5cd992f6ed090689d0585ff075ec9e99ad690c3395bc4b313370b38ef355acdadcd122975b12c85ea5db8c6deb4aab71808dcb408fe3d1e7690c43d37b4ce6cc0166fa7daa00000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000002198e9393920d483a7260bfb731fb5d25f1aa493335a9e71297e485b7aef312c21800deef121f1e76426a00665e5c4479674322d4f75edadd46debd5cd992f6ed275dc4a288d1afb3cbb1ac09187524c7db36395df7be3b99e673b13a075a65ec1d9befcd05a5323e6da4d435f3b617cdb3af83285c2df711ef39c01571827f9d"),
  1959  			},
  1960  		},
  1961  		{
  1962  			"bn256Paring/two_point_match_3",
  1963  			"precompiledContractTest",
  1964  			[]interface{}{
  1965  				loopCnt,
  1966  				common.HexToAddress("0x08"),
  1967  				common.FromHex("00000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000002203e205db4f19b37b60121b83a7333706db86431c6d835849957ed8c3928ad7927dc7234fd11d3e8c36c59277c3e6f149d5cd3cfa9a62aee49f8130962b4b3b9195e8aa5b7827463722b8c153931579d3505566b4edf48d498e185f0509de15204bb53b8977e5f92a0bc372742c4830944a59b4fe6b1c0466e2a6dad122b5d2e030644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd31a76dae6d3272396d0cbe61fced2bc532edac647851e3ac53ce1cc9c7e645a83198e9393920d483a7260bfb731fb5d25f1aa493335a9e71297e485b7aef312c21800deef121f1e76426a00665e5c4479674322d4f75edadd46debd5cd992f6ed090689d0585ff075ec9e99ad690c3395bc4b313370b38ef355acdadcd122975b12c85ea5db8c6deb4aab71808dcb408fe3d1e7690c43d37b4ce6cc0166fa7daa"),
  1968  			},
  1969  		},
  1970  		{
  1971  			"bn256Paring/ten_point_match_1",
  1972  			"precompiledContractTest",
  1973  			[]interface{}{
  1974  				loopCnt,
  1975  				common.HexToAddress("0x08"),
  1976  				common.FromHex("00000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000002198e9393920d483a7260bfb731fb5d25f1aa493335a9e71297e485b7aef312c21800deef121f1e76426a00665e5c4479674322d4f75edadd46debd5cd992f6ed090689d0585ff075ec9e99ad690c3395bc4b313370b38ef355acdadcd122975b12c85ea5db8c6deb4aab71808dcb408fe3d1e7690c43d37b4ce6cc0166fa7daa00000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000002198e9393920d483a7260bfb731fb5d25f1aa493335a9e71297e485b7aef312c21800deef121f1e76426a00665e5c4479674322d4f75edadd46debd5cd992f6ed275dc4a288d1afb3cbb1ac09187524c7db36395df7be3b99e673b13a075a65ec1d9befcd05a5323e6da4d435f3b617cdb3af83285c2df711ef39c01571827f9d00000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000002198e9393920d483a7260bfb731fb5d25f1aa493335a9e71297e485b7aef312c21800deef121f1e76426a00665e5c4479674322d4f75edadd46debd5cd992f6ed090689d0585ff075ec9e99ad690c3395bc4b313370b38ef355acdadcd122975b12c85ea5db8c6deb4aab71808dcb408fe3d1e7690c43d37b4ce6cc0166fa7daa00000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000002198e9393920d483a7260bfb731fb5d25f1aa493335a9e71297e485b7aef312c21800deef121f1e76426a00665e5c4479674322d4f75edadd46debd5cd992f6ed275dc4a288d1afb3cbb1ac09187524c7db36395df7be3b99e673b13a075a65ec1d9befcd05a5323e6da4d435f3b617cdb3af83285c2df711ef39c01571827f9d00000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000002198e9393920d483a7260bfb731fb5d25f1aa493335a9e71297e485b7aef312c21800deef121f1e76426a00665e5c4479674322d4f75edadd46debd5cd992f6ed090689d0585ff075ec9e99ad690c3395bc4b313370b38ef355acdadcd122975b12c85ea5db8c6deb4aab71808dcb408fe3d1e7690c43d37b4ce6cc0166fa7daa00000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000002198e9393920d483a7260bfb731fb5d25f1aa493335a9e71297e485b7aef312c21800deef121f1e76426a00665e5c4479674322d4f75edadd46debd5cd992f6ed275dc4a288d1afb3cbb1ac09187524c7db36395df7be3b99e673b13a075a65ec1d9befcd05a5323e6da4d435f3b617cdb3af83285c2df711ef39c01571827f9d00000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000002198e9393920d483a7260bfb731fb5d25f1aa493335a9e71297e485b7aef312c21800deef121f1e76426a00665e5c4479674322d4f75edadd46debd5cd992f6ed090689d0585ff075ec9e99ad690c3395bc4b313370b38ef355acdadcd122975b12c85ea5db8c6deb4aab71808dcb408fe3d1e7690c43d37b4ce6cc0166fa7daa00000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000002198e9393920d483a7260bfb731fb5d25f1aa493335a9e71297e485b7aef312c21800deef121f1e76426a00665e5c4479674322d4f75edadd46debd5cd992f6ed275dc4a288d1afb3cbb1ac09187524c7db36395df7be3b99e673b13a075a65ec1d9befcd05a5323e6da4d435f3b617cdb3af83285c2df711ef39c01571827f9d00000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000002198e9393920d483a7260bfb731fb5d25f1aa493335a9e71297e485b7aef312c21800deef121f1e76426a00665e5c4479674322d4f75edadd46debd5cd992f6ed090689d0585ff075ec9e99ad690c3395bc4b313370b38ef355acdadcd122975b12c85ea5db8c6deb4aab71808dcb408fe3d1e7690c43d37b4ce6cc0166fa7daa00000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000002198e9393920d483a7260bfb731fb5d25f1aa493335a9e71297e485b7aef312c21800deef121f1e76426a00665e5c4479674322d4f75edadd46debd5cd992f6ed275dc4a288d1afb3cbb1ac09187524c7db36395df7be3b99e673b13a075a65ec1d9befcd05a5323e6da4d435f3b617cdb3af83285c2df711ef39c01571827f9d"),
  1977  			},
  1978  		},
  1979  		{
  1980  			"bn256Paring/ten_point_match_2",
  1981  			"precompiledContractTest",
  1982  			[]interface{}{
  1983  				loopCnt,
  1984  				common.HexToAddress("0x08"),
  1985  				common.FromHex("00000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000002203e205db4f19b37b60121b83a7333706db86431c6d835849957ed8c3928ad7927dc7234fd11d3e8c36c59277c3e6f149d5cd3cfa9a62aee49f8130962b4b3b9195e8aa5b7827463722b8c153931579d3505566b4edf48d498e185f0509de15204bb53b8977e5f92a0bc372742c4830944a59b4fe6b1c0466e2a6dad122b5d2e030644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd31a76dae6d3272396d0cbe61fced2bc532edac647851e3ac53ce1cc9c7e645a83198e9393920d483a7260bfb731fb5d25f1aa493335a9e71297e485b7aef312c21800deef121f1e76426a00665e5c4479674322d4f75edadd46debd5cd992f6ed090689d0585ff075ec9e99ad690c3395bc4b313370b38ef355acdadcd122975b12c85ea5db8c6deb4aab71808dcb408fe3d1e7690c43d37b4ce6cc0166fa7daa00000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000002203e205db4f19b37b60121b83a7333706db86431c6d835849957ed8c3928ad7927dc7234fd11d3e8c36c59277c3e6f149d5cd3cfa9a62aee49f8130962b4b3b9195e8aa5b7827463722b8c153931579d3505566b4edf48d498e185f0509de15204bb53b8977e5f92a0bc372742c4830944a59b4fe6b1c0466e2a6dad122b5d2e030644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd31a76dae6d3272396d0cbe61fced2bc532edac647851e3ac53ce1cc9c7e645a83198e9393920d483a7260bfb731fb5d25f1aa493335a9e71297e485b7aef312c21800deef121f1e76426a00665e5c4479674322d4f75edadd46debd5cd992f6ed090689d0585ff075ec9e99ad690c3395bc4b313370b38ef355acdadcd122975b12c85ea5db8c6deb4aab71808dcb408fe3d1e7690c43d37b4ce6cc0166fa7daa00000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000002203e205db4f19b37b60121b83a7333706db86431c6d835849957ed8c3928ad7927dc7234fd11d3e8c36c59277c3e6f149d5cd3cfa9a62aee49f8130962b4b3b9195e8aa5b7827463722b8c153931579d3505566b4edf48d498e185f0509de15204bb53b8977e5f92a0bc372742c4830944a59b4fe6b1c0466e2a6dad122b5d2e030644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd31a76dae6d3272396d0cbe61fced2bc532edac647851e3ac53ce1cc9c7e645a83198e9393920d483a7260bfb731fb5d25f1aa493335a9e71297e485b7aef312c21800deef121f1e76426a00665e5c4479674322d4f75edadd46debd5cd992f6ed090689d0585ff075ec9e99ad690c3395bc4b313370b38ef355acdadcd122975b12c85ea5db8c6deb4aab71808dcb408fe3d1e7690c43d37b4ce6cc0166fa7daa00000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000002203e205db4f19b37b60121b83a7333706db86431c6d835849957ed8c3928ad7927dc7234fd11d3e8c36c59277c3e6f149d5cd3cfa9a62aee49f8130962b4b3b9195e8aa5b7827463722b8c153931579d3505566b4edf48d498e185f0509de15204bb53b8977e5f92a0bc372742c4830944a59b4fe6b1c0466e2a6dad122b5d2e030644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd31a76dae6d3272396d0cbe61fced2bc532edac647851e3ac53ce1cc9c7e645a83198e9393920d483a7260bfb731fb5d25f1aa493335a9e71297e485b7aef312c21800deef121f1e76426a00665e5c4479674322d4f75edadd46debd5cd992f6ed090689d0585ff075ec9e99ad690c3395bc4b313370b38ef355acdadcd122975b12c85ea5db8c6deb4aab71808dcb408fe3d1e7690c43d37b4ce6cc0166fa7daa00000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000002203e205db4f19b37b60121b83a7333706db86431c6d835849957ed8c3928ad7927dc7234fd11d3e8c36c59277c3e6f149d5cd3cfa9a62aee49f8130962b4b3b9195e8aa5b7827463722b8c153931579d3505566b4edf48d498e185f0509de15204bb53b8977e5f92a0bc372742c4830944a59b4fe6b1c0466e2a6dad122b5d2e030644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd31a76dae6d3272396d0cbe61fced2bc532edac647851e3ac53ce1cc9c7e645a83198e9393920d483a7260bfb731fb5d25f1aa493335a9e71297e485b7aef312c21800deef121f1e76426a00665e5c4479674322d4f75edadd46debd5cd992f6ed090689d0585ff075ec9e99ad690c3395bc4b313370b38ef355acdadcd122975b12c85ea5db8c6deb4aab71808dcb408fe3d1e7690c43d37b4ce6cc0166fa7daa"),
  1986  			},
  1987  		},
  1988  		{
  1989  			"bn256Paring/ten_point_match_3",
  1990  			"precompiledContractTest",
  1991  			[]interface{}{
  1992  				loopCnt,
  1993  				common.HexToAddress("0x08"),
  1994  				common.FromHex("105456a333e6d636854f987ea7bb713dfd0ae8371a72aea313ae0c32c0bf10160cf031d41b41557f3e7e3ba0c51bebe5da8e6ecd855ec50fc87efcdeac168bcc0476be093a6d2b4bbf907172049874af11e1b6267606e00804d3ff0037ec57fd3010c68cb50161b7d1d96bb71edfec9880171954e56871abf3d93cc94d745fa114c059d74e5b6c4ec14ae5864ebe23a71781d86c29fb8fb6cce94f70d3de7a2101b33461f39d9e887dbb100f170a2345dde3c07e256d1dfa2b657ba5cd030427000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000021a2c3013d2ea92e13c800cde68ef56a294b883f6ac35d25f587c09b1b3c635f7290158a80cd3d66530f74dc94c94adb88f5cdb481acca997b6e60071f08a115f2f997f3dbd66a7afe07fe7862ce239edba9e05c5afff7f8a1259c9733b2dfbb929d1691530ca701b4a106054688728c9972c8512e9789e9567aae23e302ccd75"),
  1995  			},
  1996  		},
  1997  
  1998  		// VmLog
  1999  		{
  2000  			"vmLog/1",
  2001  			"precompiledContractTest",
  2002  			[]interface{}{
  2003  				loopCnt,
  2004  				common.HexToAddress("0x09"),
  2005  				common.FromHex("48"),
  2006  			},
  2007  		},
  2008  		{
  2009  			"vmLog/13",
  2010  			"precompiledContractTest",
  2011  			[]interface{}{
  2012  				loopCnt,
  2013  				common.HexToAddress("0x09"),
  2014  				common.FromHex("48656c6c6f204b6c6179746e21"),
  2015  			},
  2016  		},
  2017  		{
  2018  			"vmLog/40",
  2019  			"precompiledContractTest",
  2020  			[]interface{}{
  2021  				loopCnt,
  2022  				common.HexToAddress("0x09"),
  2023  				common.FromHex("48484848484848484848484848484848484848484848484848484848484848484848484848484848"),
  2024  			},
  2025  		},
  2026  		{
  2027  			"vmLog/64",
  2028  			"precompiledContractTest",
  2029  			[]interface{}{
  2030  				loopCnt,
  2031  				common.HexToAddress("0x09"),
  2032  				common.FromHex("01020304050607080910111213141516171819202122232425262728293031320102030405060708091011121314151617181920212223242526272829303132"),
  2033  			},
  2034  		},
  2035  		{
  2036  			"vmLog/128",
  2037  			"precompiledContractTest",
  2038  			[]interface{}{
  2039  				loopCnt,
  2040  				common.HexToAddress("0x09"),
  2041  				common.FromHex("0102030405060708091011121314151617181920212223242526272829303132010203040506070809101112131415161718192021222324252627282930313201020304050607080910111213141516171819202122232425262728293031320102030405060708091011121314151617181920212223242526272829303132"),
  2042  			},
  2043  		},
  2044  		{
  2045  			"vmLog/256",
  2046  			"precompiledContractTest",
  2047  			[]interface{}{
  2048  				loopCnt,
  2049  				common.HexToAddress("0x09"),
  2050  				common.FromHex("01020304050607080910111213141516171819202122232425262728293031320102030405060708091011121314151617181920212223242526272829303132010203040506070809101112131415161718192021222324252627282930313201020304050607080910111213141516171819202122232425262728293031320102030405060708091011121314151617181920212223242526272829303132010203040506070809101112131415161718192021222324252627282930313201020304050607080910111213141516171819202122232425262728293031320102030405060708091011121314151617181920212223242526272829303132"),
  2051  			},
  2052  		},
  2053  		{
  2054  			"vmLog/1024",
  2055  			"precompiledContractTest",
  2056  			[]interface{}{
  2057  				loopCnt,
  2058  				common.HexToAddress("0x09"),
  2059  				common.FromHex("0102030405060708091011121314151617181920212223242526272829303132010203040506070809101112131415161718192021222324252627282930313201020304050607080910111213141516171819202122232425262728293031320102030405060708091011121314151617181920212223242526272829303132010203040506070809101112131415161718192021222324252627282930313201020304050607080910111213141516171819202122232425262728293031320102030405060708091011121314151617181920212223242526272829303132010203040506070809101112131415161718192021222324252627282930313201020304050607080910111213141516171819202122232425262728293031320102030405060708091011121314151617181920212223242526272829303132010203040506070809101112131415161718192021222324252627282930313201020304050607080910111213141516171819202122232425262728293031320102030405060708091011121314151617181920212223242526272829303132010203040506070809101112131415161718192021222324252627282930313201020304050607080910111213141516171819202122232425262728293031320102030405060708091011121314151617181920212223242526272829303132"),
  2060  			},
  2061  		},
  2062  		{
  2063  			"vmLog/2048",
  2064  			"precompiledContractTest",
  2065  			[]interface{}{
  2066  				loopCnt,
  2067  				common.HexToAddress("0x09"),
  2068  				common.FromHex("01020304050607080910111213141516171819202122232425262728293031320102030405060708091011121314151617181920212223242526272829303132010203040506070809101112131415161718192021222324252627282930313201020304050607080910111213141516171819202122232425262728293031320102030405060708091011121314151617181920212223242526272829303132010203040506070809101112131415161718192021222324252627282930313201020304050607080910111213141516171819202122232425262728293031320102030405060708091011121314151617181920212223242526272829303132010203040506070809101112131415161718192021222324252627282930313201020304050607080910111213141516171819202122232425262728293031320102030405060708091011121314151617181920212223242526272829303132010203040506070809101112131415161718192021222324252627282930313201020304050607080910111213141516171819202122232425262728293031320102030405060708091011121314151617181920212223242526272829303132010203040506070809101112131415161718192021222324252627282930313201020304050607080910111213141516171819202122232425262728293031320102030405060708091011121314151617181920212223242526272829303132010203040506070809101112131415161718192021222324252627282930313201020304050607080910111213141516171819202122232425262728293031320102030405060708091011121314151617181920212223242526272829303132010203040506070809101112131415161718192021222324252627282930313201020304050607080910111213141516171819202122232425262728293031320102030405060708091011121314151617181920212223242526272829303132010203040506070809101112131415161718192021222324252627282930313201020304050607080910111213141516171819202122232425262728293031320102030405060708091011121314151617181920212223242526272829303132010203040506070809101112131415161718192021222324252627282930313201020304050607080910111213141516171819202122232425262728293031320102030405060708091011121314151617181920212223242526272829303132010203040506070809101112131415161718192021222324252627282930313201020304050607080910111213141516171819202122232425262728293031320102030405060708091011121314151617181920212223242526272829303132"),
  2069  			},
  2070  		},
  2071  
  2072  		// feePayer
  2073  		{
  2074  			"feePayer",
  2075  			"precompiledContractTest",
  2076  			[]interface{}{
  2077  				loopCnt,
  2078  				common.HexToAddress("0x0A"),
  2079  				common.FromHex(""),
  2080  			},
  2081  		},
  2082  
  2083  		// validateSender
  2084  		{
  2085  			"validateSender/1",
  2086  			"precompiledContractTest",
  2087  			[]interface{}{
  2088  				loopCnt,
  2089  				common.HexToAddress("0x0B"),
  2090  				validateSenderData1,
  2091  			},
  2092  		},
  2093  		{
  2094  			"validateSender/2",
  2095  			"precompiledContractTest",
  2096  			[]interface{}{
  2097  				loopCnt,
  2098  				common.HexToAddress("0x0B"),
  2099  				validateSenderMultisig10_2,
  2100  			},
  2101  		},
  2102  		{
  2103  			"validateSender/3",
  2104  			"precompiledContractTest",
  2105  			[]interface{}{
  2106  				loopCnt,
  2107  				common.HexToAddress("0x0B"),
  2108  				validateSenderMultisig10_3,
  2109  			},
  2110  		},
  2111  		{
  2112  			"validateSender/4",
  2113  			"precompiledContractTest",
  2114  			[]interface{}{
  2115  				loopCnt,
  2116  				common.HexToAddress("0x0B"),
  2117  				validateSenderMultisig10_4,
  2118  			},
  2119  		},
  2120  		{
  2121  			"validateSender/5",
  2122  			"precompiledContractTest",
  2123  			[]interface{}{
  2124  				loopCnt,
  2125  				common.HexToAddress("0x0B"),
  2126  				validateSenderMultisig10_5,
  2127  			},
  2128  		},
  2129  		{
  2130  			"validateSender/6",
  2131  			"precompiledContractTest",
  2132  			[]interface{}{
  2133  				loopCnt,
  2134  				common.HexToAddress("0x0B"),
  2135  				validateSenderMultisig10_6,
  2136  			},
  2137  		},
  2138  		{
  2139  			"validateSender/7",
  2140  			"precompiledContractTest",
  2141  			[]interface{}{
  2142  				loopCnt,
  2143  				common.HexToAddress("0x0B"),
  2144  				validateSenderMultisig10_7,
  2145  			},
  2146  		},
  2147  		{
  2148  			"validateSender/8",
  2149  			"precompiledContractTest",
  2150  			[]interface{}{
  2151  				loopCnt,
  2152  				common.HexToAddress("0x0B"),
  2153  				validateSenderMultisig10_8,
  2154  			},
  2155  		},
  2156  		{
  2157  			"validateSender/9",
  2158  			"precompiledContractTest",
  2159  			[]interface{}{
  2160  				loopCnt,
  2161  				common.HexToAddress("0x0B"),
  2162  				validateSenderMultisig10_9,
  2163  			},
  2164  		},
  2165  		{
  2166  			"validateSender/10",
  2167  			"precompiledContractTest",
  2168  			[]interface{}{
  2169  				loopCnt,
  2170  				common.HexToAddress("0x0B"),
  2171  				validateSenderMultisig10_10,
  2172  			},
  2173  		},
  2174  	}
  2175  
  2176  	abii, err := abi.JSON(strings.NewReader(string(abiStr)))
  2177  	assert.Equal(t, nil, err)
  2178  	amount := new(big.Int).SetUint64(0)
  2179  
  2180  	for _, tc := range testcases {
  2181  		t.Run(tc.testName, func(t *testing.B) {
  2182  			if testing.Verbose() {
  2183  				fmt.Printf("----------------------testing %s...\n", tc.testName)
  2184  			}
  2185  			input := tc.input
  2186  			if tc.funcName == "BlockHash" {
  2187  				input = append(input, new(big.Int).SetUint64(bcdata.bc.CurrentBlock().NumberU64()-2))
  2188  			}
  2189  
  2190  			// for i := 0; i < 1000; i++ {
  2191  			var txs types.Transactions
  2192  
  2193  			// tc.input[1] = big.NewInt(int64(i) * 10000)
  2194  
  2195  			data, err := abii.Pack(tc.funcName, input...)
  2196  			assert.Equal(t, nil, err)
  2197  
  2198  			values := map[types.TxValueKeyType]interface{}{
  2199  				types.TxValueKeyNonce:    reservoir.Nonce,
  2200  				types.TxValueKeyFrom:     reservoir.Addr,
  2201  				types.TxValueKeyTo:       contractAddrs["OpCodeBenchmarkContract"],
  2202  				types.TxValueKeyAmount:   amount,
  2203  				types.TxValueKeyGasLimit: gasLimit,
  2204  				types.TxValueKeyGasPrice: gasPrice,
  2205  				types.TxValueKeyData:     data,
  2206  			}
  2207  			tx, err := types.NewTransactionWithMap(types.TxTypeSmartContractExecution, values)
  2208  			assert.Equal(t, nil, err)
  2209  
  2210  			err = tx.SignWithKeys(signer, reservoir.Keys)
  2211  			assert.Equal(t, nil, err)
  2212  
  2213  			txs = append(txs, tx)
  2214  
  2215  			require.NoError(t, bcdata.GenABlockWithTransactions(accountMap, txs, prof))
  2216  			reservoir.Nonce += 1
  2217  			//}
  2218  		})
  2219  	}
  2220  
  2221  	if testing.Verbose() {
  2222  		prof.PrintProfileInfo()
  2223  	}
  2224  }