forked from cerc-io/laconicd-deprecated
all: bump go-ethereum to v1.10.9 (#231)
* all: bump go-ethereum to v1.10.4 * build * state transition and rpc * wip rpc changes * fix refund * fixes * no base fee param * ante handler * undo change * fix test * bump deps * calculate base fee * gRPC base fee query * update RPC * fix * update' * go.mod * fix build * fix panic * rm changes in third_party * json rpc changes * reserved fields * fixes fixes fixes * rm no stringer * fixes 2 * tests wip * bump geth version * update * grpc traceTx * rm fee market from ante * fix TransactionArgs * lint * update proto * update tx args * changelog
This commit is contained in:
@@ -65,7 +65,7 @@ func BenchmarkTokenTransfer(b *testing.B) {
|
||||
input, err := ContractABI.Pack("transfer", common.HexToAddress("0x378c50D9264C63F3F92B806d4ee56E9D86FfB3Ec"), big.NewInt(1000))
|
||||
require.NoError(b, err)
|
||||
nonce := suite.app.EvmKeeper.GetNonce(suite.address)
|
||||
return types.NewTx(suite.app.EvmKeeper.ChainID(), nonce, &contract, big.NewInt(0), 410000, big.NewInt(1), input, nil)
|
||||
return types.NewTx(suite.app.EvmKeeper.ChainID(), nonce, &contract, big.NewInt(0), 410000, big.NewInt(1), nil, nil, input, nil)
|
||||
})
|
||||
}
|
||||
|
||||
@@ -74,7 +74,7 @@ func BenchmarkEmitLogs(b *testing.B) {
|
||||
input, err := ContractABI.Pack("benchmarkLogs", big.NewInt(1000))
|
||||
require.NoError(b, err)
|
||||
nonce := suite.app.EvmKeeper.GetNonce(suite.address)
|
||||
return types.NewTx(suite.app.EvmKeeper.ChainID(), nonce, &contract, big.NewInt(0), 4100000, big.NewInt(1), input, nil)
|
||||
return types.NewTx(suite.app.EvmKeeper.ChainID(), nonce, &contract, big.NewInt(0), 4100000, big.NewInt(1), nil, nil, input, nil)
|
||||
})
|
||||
}
|
||||
|
||||
@@ -83,7 +83,7 @@ func BenchmarkTokenTransferFrom(b *testing.B) {
|
||||
input, err := ContractABI.Pack("transferFrom", suite.address, common.HexToAddress("0x378c50D9264C63F3F92B806d4ee56E9D86FfB3Ec"), big.NewInt(0))
|
||||
require.NoError(b, err)
|
||||
nonce := suite.app.EvmKeeper.GetNonce(suite.address)
|
||||
return types.NewTx(suite.app.EvmKeeper.ChainID(), nonce, &contract, big.NewInt(0), 410000, big.NewInt(1), input, nil)
|
||||
return types.NewTx(suite.app.EvmKeeper.ChainID(), nonce, &contract, big.NewInt(0), 410000, big.NewInt(1), nil, nil, input, nil)
|
||||
})
|
||||
}
|
||||
|
||||
@@ -92,6 +92,6 @@ func BenchmarkTokenMint(b *testing.B) {
|
||||
input, err := ContractABI.Pack("mint", common.HexToAddress("0x378c50D9264C63F3F92B806d4ee56E9D86FfB3Ec"), big.NewInt(1000))
|
||||
require.NoError(b, err)
|
||||
nonce := suite.app.EvmKeeper.GetNonce(suite.address)
|
||||
return types.NewTx(suite.app.EvmKeeper.ChainID(), nonce, &contract, big.NewInt(0), 410000, big.NewInt(1), input, nil)
|
||||
return types.NewTx(suite.app.EvmKeeper.ChainID(), nonce, &contract, big.NewInt(0), 410000, big.NewInt(1), nil, nil, input, nil)
|
||||
})
|
||||
}
|
||||
|
||||
+44
-14
@@ -215,13 +215,20 @@ func (k Keeper) EthCall(c context.Context, req *types.EthCallRequest) (*types.Ms
|
||||
ctx := sdk.UnwrapSDKContext(c)
|
||||
k.WithContext(ctx)
|
||||
|
||||
var args types.CallArgs
|
||||
var args types.TransactionArgs
|
||||
err := json.Unmarshal(req.Args, &args)
|
||||
if err != nil {
|
||||
return nil, status.Error(codes.InvalidArgument, err.Error())
|
||||
}
|
||||
|
||||
msg := args.ToMessage(req.GasCap)
|
||||
if req.BaseFee != nil && req.BaseFee.IsNegative() {
|
||||
return nil, status.Errorf(codes.InvalidArgument, "base fee cannot be negative %s", req.BaseFee)
|
||||
}
|
||||
|
||||
msg, err := args.ToMessage(req.GasCap, req.GetBaseFee())
|
||||
if err != nil {
|
||||
return nil, status.Error(codes.InvalidArgument, err.Error())
|
||||
}
|
||||
|
||||
params := k.GetParams(ctx)
|
||||
feemktParams := k.feeMarketKeeper.GetParams(ctx)
|
||||
@@ -266,7 +273,11 @@ func (k Keeper) EstimateGas(c context.Context, req *types.EthCallRequest) (*type
|
||||
return nil, status.Error(codes.InvalidArgument, "gas cap cannot be lower than 21,000")
|
||||
}
|
||||
|
||||
var args types.CallArgs
|
||||
if req.BaseFee != nil && req.BaseFee.IsNegative() {
|
||||
return nil, status.Errorf(codes.InvalidArgument, "base fee cannot be negative %s", req.BaseFee)
|
||||
}
|
||||
|
||||
var args types.TransactionArgs
|
||||
err := json.Unmarshal(req.Args, &args)
|
||||
if err != nil {
|
||||
return nil, status.Error(codes.InvalidArgument, err.Error())
|
||||
@@ -308,7 +319,7 @@ func (k Keeper) EstimateGas(c context.Context, req *types.EthCallRequest) (*type
|
||||
return nil, status.Error(codes.Internal, err.Error())
|
||||
}
|
||||
|
||||
baseFee := k.feeMarketKeeper.GetBaseFee(ctx)
|
||||
baseFee := req.GetBaseFee()
|
||||
|
||||
// Create a helper to check if a gas allowance results in an executable transaction
|
||||
executable := func(gas uint64) (vmerror bool, rsp *types.MsgEthereumTxResponse, err error) {
|
||||
@@ -317,7 +328,10 @@ func (k Keeper) EstimateGas(c context.Context, req *types.EthCallRequest) (*type
|
||||
// Reset to the initial context
|
||||
k.WithContext(ctx)
|
||||
|
||||
msg := args.ToMessage(req.GasCap)
|
||||
msg, err := args.ToMessage(req.GasCap, baseFee)
|
||||
if err != nil {
|
||||
return false, nil, err
|
||||
}
|
||||
|
||||
tracer := types.NewTracer(k.tracer, msg, ethCfg, k.Ctx().BlockHeight(), k.debug)
|
||||
|
||||
@@ -371,6 +385,10 @@ func (k Keeper) TraceTx(c context.Context, req *types.QueryTraceTxRequest) (*typ
|
||||
return nil, status.Error(codes.InvalidArgument, "empty request")
|
||||
}
|
||||
|
||||
if req.TraceConfig != nil && req.TraceConfig.Limit < 0 {
|
||||
return nil, status.Errorf(codes.InvalidArgument, "output limit cannot be negative, got %d", req.TraceConfig.Limit)
|
||||
}
|
||||
|
||||
ctx := sdk.UnwrapSDKContext(c)
|
||||
k.WithContext(ctx)
|
||||
|
||||
@@ -413,17 +431,22 @@ func (k *Keeper) traceTx(
|
||||
) (*interface{}, error) {
|
||||
// Assemble the structured logger or the JavaScript tracer
|
||||
var (
|
||||
tracer vm.Tracer
|
||||
err error
|
||||
tracer vm.Tracer
|
||||
overrides *ethparams.ChainConfig
|
||||
err error
|
||||
)
|
||||
|
||||
msg, err := tx.AsMessage(signer)
|
||||
msg, err := tx.AsMessage(signer, baseFee)
|
||||
if err != nil {
|
||||
return nil, status.Error(codes.Internal, err.Error())
|
||||
}
|
||||
|
||||
txHash := tx.Hash()
|
||||
|
||||
if traceConfig != nil && traceConfig.Overrides != nil {
|
||||
overrides = traceConfig.Overrides.EthereumConfig(ethCfg.ChainID)
|
||||
}
|
||||
|
||||
switch {
|
||||
case traceConfig != nil && traceConfig.Tracer != "":
|
||||
timeout := defaultTraceTimeout
|
||||
@@ -436,10 +459,14 @@ func (k *Keeper) traceTx(
|
||||
}
|
||||
}
|
||||
|
||||
txContext := core.NewEVMTxContext(msg)
|
||||
tCtx := &tracers.Context{
|
||||
BlockHash: k.GetHashFn()(uint64(ctx.BlockHeight())),
|
||||
TxIndex: int(txIndex),
|
||||
TxHash: txHash,
|
||||
}
|
||||
|
||||
// Construct the JavaScript tracer to execute with
|
||||
if tracer, err = tracers.New(traceConfig.Tracer, txContext); err != nil {
|
||||
if tracer, err = tracers.New(traceConfig.Tracer, tCtx); err != nil {
|
||||
return nil, status.Error(codes.Internal, err.Error())
|
||||
}
|
||||
|
||||
@@ -456,10 +483,13 @@ func (k *Keeper) traceTx(
|
||||
|
||||
case traceConfig != nil:
|
||||
logConfig := vm.LogConfig{
|
||||
DisableMemory: traceConfig.DisableMemory,
|
||||
Debug: traceConfig.Debug,
|
||||
DisableStorage: traceConfig.DisableStorage,
|
||||
DisableStack: traceConfig.DisableStack,
|
||||
EnableMemory: traceConfig.EnableMemory,
|
||||
DisableStorage: traceConfig.DisableStorage,
|
||||
DisableStack: traceConfig.DisableStack,
|
||||
EnableReturnData: traceConfig.EnableReturnData,
|
||||
Debug: traceConfig.Debug,
|
||||
Limit: int(traceConfig.Limit),
|
||||
Overrides: overrides,
|
||||
}
|
||||
tracer = vm.NewStructLogger(&logConfig)
|
||||
default:
|
||||
|
||||
@@ -481,7 +481,7 @@ func (suite *KeeperTestSuite) TestEstimateGas() {
|
||||
gasHelper := hexutil.Uint64(20000)
|
||||
|
||||
var (
|
||||
args types.CallArgs
|
||||
args types.TransactionArgs
|
||||
gasCap uint64
|
||||
)
|
||||
testCases := []struct {
|
||||
@@ -492,23 +492,23 @@ func (suite *KeeperTestSuite) TestEstimateGas() {
|
||||
}{
|
||||
// should success, because transfer value is zero
|
||||
{"default args", func() {
|
||||
args = types.CallArgs{To: &common.Address{}}
|
||||
args = types.TransactionArgs{To: &common.Address{}}
|
||||
}, true, 21000},
|
||||
// should fail, because the default From address(zero address) don't have fund
|
||||
{"not enough balance", func() {
|
||||
args = types.CallArgs{To: &common.Address{}, Value: (*hexutil.Big)(big.NewInt(100))}
|
||||
args = types.TransactionArgs{To: &common.Address{}, Value: (*hexutil.Big)(big.NewInt(100))}
|
||||
}, false, 0},
|
||||
// should success, enough balance now
|
||||
{"enough balance", func() {
|
||||
args = types.CallArgs{To: &common.Address{}, From: &suite.address, Value: (*hexutil.Big)(big.NewInt(100))}
|
||||
args = types.TransactionArgs{To: &common.Address{}, From: &suite.address, Value: (*hexutil.Big)(big.NewInt(100))}
|
||||
}, false, 0},
|
||||
// should success, because gas limit lower than 21000 is ignored
|
||||
{"gas exceed allowance", func() {
|
||||
args = types.CallArgs{To: &common.Address{}, Gas: &gasHelper}
|
||||
args = types.TransactionArgs{To: &common.Address{}, Gas: &gasHelper}
|
||||
}, true, 21000},
|
||||
// should fail, invalid gas cap
|
||||
{"gas exceed global allowance", func() {
|
||||
args = types.CallArgs{To: &common.Address{}}
|
||||
args = types.TransactionArgs{To: &common.Address{}}
|
||||
gasCap = 20000
|
||||
}, false, 0},
|
||||
// estimate gas of an erc20 contract deployment, the exact gas number is checked with geth
|
||||
@@ -516,7 +516,7 @@ func (suite *KeeperTestSuite) TestEstimateGas() {
|
||||
ctorArgs, err := ContractABI.Pack("", &suite.address, sdk.NewIntWithDecimal(1000, 18).BigInt())
|
||||
suite.Require().NoError(err)
|
||||
data := append(ContractBin, ctorArgs...)
|
||||
args = types.CallArgs{
|
||||
args = types.TransactionArgs{
|
||||
From: &suite.address,
|
||||
Data: (*hexutil.Bytes)(&data),
|
||||
}
|
||||
@@ -527,7 +527,7 @@ func (suite *KeeperTestSuite) TestEstimateGas() {
|
||||
suite.Commit()
|
||||
transferData, err := ContractABI.Pack("transfer", common.HexToAddress("0x378c50D9264C63F3F92B806d4ee56E9D86FfB3Ec"), big.NewInt(1000))
|
||||
suite.Require().NoError(err)
|
||||
args = types.CallArgs{To: &contractAddr, From: &suite.address, Data: (*hexutil.Bytes)(&transferData)}
|
||||
args = types.TransactionArgs{To: &contractAddr, From: &suite.address, Data: (*hexutil.Bytes)(&transferData)}
|
||||
}, true, 51880},
|
||||
}
|
||||
|
||||
|
||||
@@ -184,7 +184,7 @@ func (suite *KeeperTestSuite) DeployTestContract(t require.TestingT, owner commo
|
||||
require.NoError(t, err)
|
||||
|
||||
data := append(ContractBin, ctorArgs...)
|
||||
args, err := json.Marshal(&types.CallArgs{
|
||||
args, err := json.Marshal(&types.TransactionArgs{
|
||||
From: &suite.address,
|
||||
Data: (*hexutil.Bytes)(&data),
|
||||
})
|
||||
@@ -203,8 +203,9 @@ func (suite *KeeperTestSuite) DeployTestContract(t require.TestingT, owner commo
|
||||
nil, // amount
|
||||
res.Gas, // gasLimit
|
||||
nil, // gasPrice
|
||||
data, // input
|
||||
nil, // accesses
|
||||
nil, nil,
|
||||
data, // input
|
||||
nil, // accesses
|
||||
)
|
||||
erc20DeployTx.From = suite.address.Hex()
|
||||
err = erc20DeployTx.Sign(ethtypes.LatestSignerForChainID(chainID), suite.signer)
|
||||
@@ -221,7 +222,7 @@ func (suite *KeeperTestSuite) TransferERC20Token(t require.TestingT, contractAdd
|
||||
|
||||
transferData, err := ContractABI.Pack("transfer", to, amount)
|
||||
require.NoError(t, err)
|
||||
args, err := json.Marshal(&types.CallArgs{To: &contractAddr, From: &from, Data: (*hexutil.Bytes)(&transferData)})
|
||||
args, err := json.Marshal(&types.TransactionArgs{To: &contractAddr, From: &from, Data: (*hexutil.Bytes)(&transferData)})
|
||||
require.NoError(t, err)
|
||||
res, err := suite.queryClient.EstimateGas(ctx, &types.EthCallRequest{
|
||||
Args: args,
|
||||
@@ -237,6 +238,7 @@ func (suite *KeeperTestSuite) TransferERC20Token(t require.TestingT, contractAdd
|
||||
nil,
|
||||
res.Gas,
|
||||
nil,
|
||||
nil, nil,
|
||||
transferData,
|
||||
nil,
|
||||
)
|
||||
|
||||
@@ -42,7 +42,7 @@ func (k *Keeper) NewEVM(
|
||||
BlockNumber: big.NewInt(k.Ctx().BlockHeight()),
|
||||
Time: big.NewInt(k.Ctx().BlockHeader().Time.Unix()),
|
||||
Difficulty: big.NewInt(0), // unused. Only required in PoW context
|
||||
// BaseFee: baseFee,
|
||||
BaseFee: baseFee,
|
||||
}
|
||||
|
||||
txCtx := core.NewEVMTxContext(msg)
|
||||
@@ -54,14 +54,14 @@ func (k *Keeper) NewEVM(
|
||||
// VMConfig creates an EVM configuration from the debug setting and the extra EIPs enabled on the
|
||||
// module parameters. The config generated uses the default JumpTable from the EVM.
|
||||
func (k Keeper) VMConfig(msg core.Message, params types.Params, tracer vm.Tracer) vm.Config {
|
||||
// fmParams := k.feeMarketKeeper.GetParams(k.Ctx())
|
||||
fmParams := k.feeMarketKeeper.GetParams(k.Ctx())
|
||||
|
||||
return vm.Config{
|
||||
Debug: k.debug,
|
||||
Tracer: tracer,
|
||||
NoRecursion: false, // TODO: consider disabling recursion though params
|
||||
// NoBaseFee: fmParams.NoBaseFee,
|
||||
ExtraEips: params.EIPs(),
|
||||
NoBaseFee: fmParams.NoBaseFee,
|
||||
ExtraEips: params.EIPs(),
|
||||
}
|
||||
}
|
||||
|
||||
@@ -161,7 +161,7 @@ func (k *Keeper) ApplyTransaction(tx *ethtypes.Transaction) (*types.MsgEthereumT
|
||||
|
||||
baseFee := k.feeMarketKeeper.GetBaseFee(ctx)
|
||||
|
||||
msg, err := tx.AsMessage(signer)
|
||||
msg, err := tx.AsMessage(signer, baseFee)
|
||||
if err != nil {
|
||||
return nil, stacktrace.Propagate(err, "failed to return ethereum transaction as core message")
|
||||
}
|
||||
@@ -270,7 +270,7 @@ func (k *Keeper) ApplyMessage(evm *vm.EVM, msg core.Message, cfg *params.ChainCo
|
||||
|
||||
sender := vm.AccountRef(msg.From())
|
||||
contractCreation := msg.To() == nil
|
||||
// isLondon := cfg.IsLondon(evm.Context.BlockNumber)
|
||||
isLondon := cfg.IsLondon(evm.Context.BlockNumber)
|
||||
|
||||
intrinsicGas, err := k.GetEthIntrinsicGas(msg, cfg, contractCreation)
|
||||
if err != nil {
|
||||
@@ -296,14 +296,12 @@ func (k *Keeper) ApplyMessage(evm *vm.EVM, msg core.Message, cfg *params.ChainCo
|
||||
ret, leftoverGas, vmErr = evm.Call(sender, *msg.To(), msg.Data(), leftoverGas, msg.Value())
|
||||
}
|
||||
|
||||
refundQuotient := uint64(2)
|
||||
refundQuotient := params.RefundQuotient
|
||||
|
||||
// refundQuotient := params.RefundQuotient
|
||||
|
||||
// // After EIP-3529: refunds are capped to gasUsed / 5
|
||||
// if isLondon {
|
||||
// refundQuotient = params.RefundQuotientEIP3529
|
||||
// }
|
||||
// After EIP-3529: refunds are capped to gasUsed / 5
|
||||
if isLondon {
|
||||
refundQuotient = params.RefundQuotientEIP3529
|
||||
}
|
||||
|
||||
if query {
|
||||
// gRPC query handlers don't go through the AnteHandler to deduct the gas fee from the sender or have access historical state.
|
||||
|
||||
@@ -74,7 +74,10 @@ func newNativeMessage(
|
||||
) (core.Message, error) {
|
||||
msgSigner := ethtypes.MakeSigner(cfg, big.NewInt(blockHeight))
|
||||
|
||||
var ethTx *ethtypes.Transaction
|
||||
var (
|
||||
ethTx *ethtypes.Transaction
|
||||
baseFee *big.Int
|
||||
)
|
||||
if isLegacy {
|
||||
templateLegacyTx.Nonce = nonce
|
||||
ethTx = ethtypes.NewTx(templateLegacyTx)
|
||||
@@ -91,7 +94,7 @@ func newNativeMessage(
|
||||
return nil, err
|
||||
}
|
||||
|
||||
m, err := msg.AsMessage(msgSigner) // TODO: add DynamicFeeTx
|
||||
m, err := msg.AsMessage(msgSigner, baseFee) // TODO: add DynamicFeeTx
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
@@ -549,14 +549,14 @@ func (suite *KeeperTestSuite) CreateTestTx(msg *types.MsgEthereumTx, priv crypto
|
||||
|
||||
func (suite *KeeperTestSuite) TestAddLog() {
|
||||
addr, privKey := tests.NewAddrKey()
|
||||
msg := types.NewTx(big.NewInt(1), 0, &suite.address, big.NewInt(1), 100000, big.NewInt(1), []byte("test"), nil)
|
||||
msg := types.NewTx(big.NewInt(1), 0, &suite.address, big.NewInt(1), 100000, big.NewInt(1), nil, nil, []byte("test"), nil)
|
||||
msg.From = addr.Hex()
|
||||
|
||||
tx := suite.CreateTestTx(msg, privKey)
|
||||
msg, _ = tx.GetMsgs()[0].(*types.MsgEthereumTx)
|
||||
txHash := msg.AsTransaction().Hash()
|
||||
|
||||
msg2 := types.NewTx(big.NewInt(1), 1, &suite.address, big.NewInt(1), 100000, big.NewInt(1), []byte("test"), nil)
|
||||
msg2 := types.NewTx(big.NewInt(1), 1, &suite.address, big.NewInt(1), 100000, big.NewInt(1), nil, nil, []byte("test"), nil)
|
||||
msg2.From = addr.Hex()
|
||||
|
||||
tx2 := suite.CreateTestTx(msg2, privKey)
|
||||
|
||||
@@ -60,8 +60,7 @@ func (k Keeper) DeductTxCostsFromUserBalance(
|
||||
|
||||
feeMktParams := k.feeMarketKeeper.GetParams(ctx)
|
||||
|
||||
if london && !feeMktParams.NoBaseFee {
|
||||
// TODO: add to if statement above txData.TxType() == ethtypes.DynamicFeeTxType
|
||||
if london && !feeMktParams.NoBaseFee && txData.TxType() == ethtypes.DynamicFeeTxType {
|
||||
baseFee := k.feeMarketKeeper.GetBaseFee(ctx)
|
||||
effectiveTip = cmath.BigMin(txData.GetGasTipCap(), new(big.Int).Sub(txData.GetGasFeeCap(), baseFee))
|
||||
}
|
||||
|
||||
@@ -126,7 +126,7 @@ func (suite *KeeperTestSuite) TestCheckSenderBalance() {
|
||||
gasPrice = tc.gasPrice.BigInt()
|
||||
}
|
||||
|
||||
tx := evmtypes.NewTx(zeroInt.BigInt(), 1, &to, amount, tc.gasLimit, gasPrice, nil, tc.accessList)
|
||||
tx := evmtypes.NewTx(zeroInt.BigInt(), 1, &to, amount, tc.gasLimit, gasPrice, nil, nil, nil, tc.accessList)
|
||||
tx.From = tc.from
|
||||
|
||||
txData, _ := evmtypes.UnpackTxData(tx.Data)
|
||||
@@ -230,7 +230,7 @@ func (suite *KeeperTestSuite) TestDeductTxCostsFromUserBalance() {
|
||||
gasPrice = tc.gasPrice.BigInt()
|
||||
}
|
||||
|
||||
tx := evmtypes.NewTx(zeroInt.BigInt(), 1, &suite.address, amount, tc.gasLimit, gasPrice, nil, tc.accessList)
|
||||
tx := evmtypes.NewTx(zeroInt.BigInt(), 1, &suite.address, amount, tc.gasLimit, gasPrice, nil, nil, nil, tc.accessList)
|
||||
tx.From = suite.address.String()
|
||||
|
||||
txData, _ := evmtypes.UnpackTxData(tx.Data)
|
||||
|
||||
@@ -1,77 +0,0 @@
|
||||
package types
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"math"
|
||||
"math/big"
|
||||
|
||||
"github.com/ethereum/go-ethereum/common"
|
||||
"github.com/ethereum/go-ethereum/common/hexutil"
|
||||
ethtypes "github.com/ethereum/go-ethereum/core/types"
|
||||
)
|
||||
|
||||
// copied from: https://github.com/ethereum/go-ethereum/blob/v1.10.3/internal/ethapi/api.go#L754
|
||||
|
||||
// CallArgs represents the arguments for a call.
|
||||
type CallArgs struct {
|
||||
From *common.Address `json:"from"`
|
||||
To *common.Address `json:"to"`
|
||||
Gas *hexutil.Uint64 `json:"gas"`
|
||||
GasPrice *hexutil.Big `json:"gasPrice"`
|
||||
Value *hexutil.Big `json:"value"`
|
||||
Data *hexutil.Bytes `json:"data"`
|
||||
AccessList *ethtypes.AccessList `json:"accessList"`
|
||||
}
|
||||
|
||||
// ToMessage converts CallArgs to the Message type used by the core evm
|
||||
func (args *CallArgs) ToMessage(globalGasCap uint64) ethtypes.Message {
|
||||
// Set sender address or use zero address if none specified.
|
||||
var addr common.Address
|
||||
if args.From != nil {
|
||||
addr = *args.From
|
||||
}
|
||||
|
||||
// Set default gas & gas price if none were set
|
||||
gas := globalGasCap
|
||||
if gas == 0 {
|
||||
gas = uint64(math.MaxUint64 / 2)
|
||||
}
|
||||
if args.Gas != nil {
|
||||
gas = uint64(*args.Gas)
|
||||
}
|
||||
if globalGasCap != 0 && globalGasCap < gas {
|
||||
// log.Warn("Caller gas above allowance, capping", "requested", gas, "cap", globalGasCap)
|
||||
gas = globalGasCap
|
||||
}
|
||||
gasPrice := new(big.Int)
|
||||
if args.GasPrice != nil {
|
||||
gasPrice = args.GasPrice.ToInt()
|
||||
}
|
||||
value := new(big.Int)
|
||||
if args.Value != nil {
|
||||
value = args.Value.ToInt()
|
||||
}
|
||||
var data []byte
|
||||
if args.Data != nil {
|
||||
data = *args.Data
|
||||
}
|
||||
var accessList ethtypes.AccessList
|
||||
if args.AccessList != nil {
|
||||
accessList = *args.AccessList
|
||||
}
|
||||
|
||||
msg := ethtypes.NewMessage(addr, args.To, 0, value, gas, gasPrice, data, accessList, false)
|
||||
return msg
|
||||
}
|
||||
|
||||
// String return the struct in a string format
|
||||
func (args *CallArgs) String() string {
|
||||
// Todo: There is currently a bug with hexutil.Big when the value its nil, printing would trigger an exception
|
||||
return fmt.Sprintf("CallArgs{From:%v, To:%v, Gas:%v,"+
|
||||
" Data:%v, AccessList:%v}",
|
||||
args.From,
|
||||
args.To,
|
||||
args.Gas,
|
||||
args.Data,
|
||||
args.AccessList)
|
||||
}
|
||||
@@ -29,8 +29,8 @@ func (cc ChainConfig) EthereumConfig(chainID *big.Int) *params.ChainConfig {
|
||||
IstanbulBlock: getBlockValue(cc.IstanbulBlock),
|
||||
MuirGlacierBlock: getBlockValue(cc.MuirGlacierBlock),
|
||||
BerlinBlock: getBlockValue(cc.BerlinBlock),
|
||||
// LondonBlock: getBlockValue(cc.LondonBlock), // TODO: uncomment
|
||||
CatalystBlock: getBlockValue(cc.CatalystBlock),
|
||||
LondonBlock: getBlockValue(cc.LondonBlock),
|
||||
CatalystBlock: getBlockValue(cc.CatalystBlock),
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -10,7 +10,6 @@ import (
|
||||
"github.com/tharsis/ethermint/types"
|
||||
)
|
||||
|
||||
// nolint: deadcode, unused
|
||||
func newDynamicFeeTx(tx *ethtypes.Transaction) *DynamicFeeTx {
|
||||
txData := &DynamicFeeTx{
|
||||
Nonce: tx.Nonce(),
|
||||
@@ -27,17 +26,16 @@ func newDynamicFeeTx(tx *ethtypes.Transaction) *DynamicFeeTx {
|
||||
amountInt := sdk.NewIntFromBigInt(tx.Value())
|
||||
txData.Amount = &amountInt
|
||||
}
|
||||
// TODO:
|
||||
|
||||
// if tx.GasFeeCap() != nil {
|
||||
// gasFeeCapInt := sdk.NewIntFromBigInt(tx.GasFeeCap())
|
||||
// txData.GasFeeCap = &gasFeeCapInt
|
||||
// }
|
||||
if tx.GasFeeCap() != nil {
|
||||
gasFeeCapInt := sdk.NewIntFromBigInt(tx.GasFeeCap())
|
||||
txData.GasFeeCap = &gasFeeCapInt
|
||||
}
|
||||
|
||||
// if tx.GasTipCap() != nil {
|
||||
// gasTipCapInt := sdk.NewIntFromBigInt(tx.GasTipCap())
|
||||
// txData.GasTipCap = &gasTipCapInt
|
||||
// }
|
||||
if tx.GasTipCap() != nil {
|
||||
gasTipCapInt := sdk.NewIntFromBigInt(tx.GasTipCap())
|
||||
txData.GasTipCap = &gasTipCapInt
|
||||
}
|
||||
|
||||
if tx.AccessList() != nil {
|
||||
al := tx.AccessList()
|
||||
@@ -50,9 +48,7 @@ func newDynamicFeeTx(tx *ethtypes.Transaction) *DynamicFeeTx {
|
||||
|
||||
// TxType returns the tx type
|
||||
func (tx *DynamicFeeTx) TxType() uint8 {
|
||||
// TODO
|
||||
return 0
|
||||
// return ethtypes.DynamicFeeTxType
|
||||
return ethtypes.DynamicFeeTxType
|
||||
}
|
||||
|
||||
// Copy returns an instance with the same field values
|
||||
@@ -145,23 +141,21 @@ func (tx *DynamicFeeTx) GetTo() *common.Address {
|
||||
// AsEthereumData returns an DynamicFeeTx transaction tx from the proto-formatted
|
||||
// TxData defined on the Cosmos EVM.
|
||||
func (tx *DynamicFeeTx) AsEthereumData() ethtypes.TxData {
|
||||
return nil
|
||||
// TODO:
|
||||
// v, r, s := tx.GetRawSignatureValues()
|
||||
// return ðtypes.DynamicFeeTx{
|
||||
// ChainID: tx.GetChainID(),
|
||||
// Nonce: tx.GetNonce(),
|
||||
// GasTipCap: tx.GetGasTipCap(),
|
||||
// GasFeeCap: tx.GetGasFeeCap(),
|
||||
// Gas: tx.GetGas(),
|
||||
// To: tx.GetTo(),
|
||||
// Value: tx.GetValue(),
|
||||
// Data: tx.GetData(),
|
||||
// AccessList: tx.GetAccessList(),
|
||||
// V: v,
|
||||
// R: r,
|
||||
// S: s,
|
||||
// }
|
||||
v, r, s := tx.GetRawSignatureValues()
|
||||
return ðtypes.DynamicFeeTx{
|
||||
ChainID: tx.GetChainID(),
|
||||
Nonce: tx.GetNonce(),
|
||||
GasTipCap: tx.GetGasTipCap(),
|
||||
GasFeeCap: tx.GetGasFeeCap(),
|
||||
Gas: tx.GetGas(),
|
||||
To: tx.GetTo(),
|
||||
Value: tx.GetValue(),
|
||||
Data: tx.GetData(),
|
||||
AccessList: tx.GetAccessList(),
|
||||
V: v,
|
||||
R: r,
|
||||
S: s,
|
||||
}
|
||||
}
|
||||
|
||||
// GetRawSignatureValues returns the V, R, S signature values of the transaction.
|
||||
|
||||
Generated
+175
-174
@@ -521,20 +521,20 @@ type TraceConfig struct {
|
||||
Timeout string `protobuf:"bytes,2,opt,name=timeout,proto3" json:"timeout,omitempty"`
|
||||
// number of blocks the tracer is willing to go back
|
||||
Reexec uint64 `protobuf:"varint,3,opt,name=reexec,proto3" json:"reexec,omitempty"`
|
||||
// disable memory capture
|
||||
DisableMemory bool `protobuf:"varint,4,opt,name=disable_memory,json=disableMemory,proto3" json:"disableMemory"`
|
||||
// disable stack capture
|
||||
DisableStack bool `protobuf:"varint,5,opt,name=disable_stack,json=disableStack,proto3" json:"disableStack"`
|
||||
// disable storage capture
|
||||
DisableStorage bool `protobuf:"varint,6,opt,name=disable_storage,json=disableStorage,proto3" json:"disableStorage"`
|
||||
// disable return data capture
|
||||
DisableReturnData bool `protobuf:"varint,7,opt,name=disable_return_data,json=disableReturnData,proto3" json:"disableReturnData"`
|
||||
// print output during capture end
|
||||
Debug bool `protobuf:"varint,8,opt,name=debug,proto3" json:"debug,omitempty"`
|
||||
// maximum length of output, but zero means unlimited
|
||||
Limit int32 `protobuf:"varint,9,opt,name=limit,proto3" json:"limit,omitempty"`
|
||||
// Chain overrides, can be used to execute a trace using future fork rules
|
||||
Overrides *ChainConfig `protobuf:"bytes,10,opt,name=overrides,proto3" json:"overrides,omitempty"`
|
||||
// enable memory capture
|
||||
EnableMemory bool `protobuf:"varint,11,opt,name=enable_memory,json=enableMemory,proto3" json:"enableMemory"`
|
||||
// enable return data capture
|
||||
EnableReturnData bool `protobuf:"varint,12,opt,name=enable_return_data,json=enableReturnData,proto3" json:"enableReturnData"`
|
||||
}
|
||||
|
||||
func (m *TraceConfig) Reset() { *m = TraceConfig{} }
|
||||
@@ -591,13 +591,6 @@ func (m *TraceConfig) GetReexec() uint64 {
|
||||
return 0
|
||||
}
|
||||
|
||||
func (m *TraceConfig) GetDisableMemory() bool {
|
||||
if m != nil {
|
||||
return m.DisableMemory
|
||||
}
|
||||
return false
|
||||
}
|
||||
|
||||
func (m *TraceConfig) GetDisableStack() bool {
|
||||
if m != nil {
|
||||
return m.DisableStack
|
||||
@@ -612,13 +605,6 @@ func (m *TraceConfig) GetDisableStorage() bool {
|
||||
return false
|
||||
}
|
||||
|
||||
func (m *TraceConfig) GetDisableReturnData() bool {
|
||||
if m != nil {
|
||||
return m.DisableReturnData
|
||||
}
|
||||
return false
|
||||
}
|
||||
|
||||
func (m *TraceConfig) GetDebug() bool {
|
||||
if m != nil {
|
||||
return m.Debug
|
||||
@@ -640,6 +626,20 @@ func (m *TraceConfig) GetOverrides() *ChainConfig {
|
||||
return nil
|
||||
}
|
||||
|
||||
func (m *TraceConfig) GetEnableMemory() bool {
|
||||
if m != nil {
|
||||
return m.EnableMemory
|
||||
}
|
||||
return false
|
||||
}
|
||||
|
||||
func (m *TraceConfig) GetEnableReturnData() bool {
|
||||
if m != nil {
|
||||
return m.EnableReturnData
|
||||
}
|
||||
return false
|
||||
}
|
||||
|
||||
func init() {
|
||||
proto.RegisterType((*Params)(nil), "ethermint.evm.v1.Params")
|
||||
proto.RegisterType((*ChainConfig)(nil), "ethermint.evm.v1.ChainConfig")
|
||||
@@ -654,96 +654,97 @@ func init() {
|
||||
func init() { proto.RegisterFile("ethermint/evm/v1/evm.proto", fileDescriptor_d21ecc92c8c8583e) }
|
||||
|
||||
var fileDescriptor_d21ecc92c8c8583e = []byte{
|
||||
// 1421 bytes of a gzipped FileDescriptorProto
|
||||
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x9c, 0x57, 0x4d, 0x6f, 0xdb, 0xb6,
|
||||
0x1b, 0x4f, 0x62, 0x27, 0x91, 0xe9, 0xd7, 0x30, 0x69, 0xfe, 0x6e, 0x8b, 0x7f, 0x94, 0xe9, 0x30,
|
||||
0x64, 0x40, 0x1b, 0x37, 0x29, 0x82, 0x05, 0x2d, 0x76, 0x88, 0x92, 0xb4, 0x4b, 0xd7, 0x6d, 0x01,
|
||||
0x93, 0x61, 0xc0, 0x80, 0x41, 0xa0, 0x25, 0x56, 0xd6, 0x22, 0x89, 0x06, 0x49, 0x79, 0xf6, 0xb0,
|
||||
0x0f, 0x30, 0x60, 0x97, 0x7d, 0x80, 0x1d, 0xf6, 0x25, 0xf6, 0x1d, 0x8a, 0x9d, 0x7a, 0x19, 0x30,
|
||||
0xec, 0x20, 0x0c, 0xee, 0xcd, 0x47, 0x7f, 0x82, 0x41, 0x24, 0xfd, 0x9a, 0x62, 0x5b, 0x72, 0x32,
|
||||
0x7f, 0xcf, 0xcb, 0xef, 0x47, 0x3e, 0x7c, 0x48, 0xca, 0xe0, 0x1e, 0x11, 0x2d, 0xc2, 0xa2, 0x20,
|
||||
0x16, 0x0d, 0xd2, 0x89, 0x1a, 0x9d, 0xbd, 0xec, 0x67, 0xb7, 0xcd, 0xa8, 0xa0, 0xb0, 0x36, 0xf6,
|
||||
0xed, 0x66, 0xc6, 0xce, 0xde, 0xbd, 0x0d, 0x9f, 0xfa, 0x54, 0x3a, 0x1b, 0xd9, 0x48, 0xc5, 0x59,
|
||||
0xbf, 0x2f, 0x81, 0x95, 0x73, 0xcc, 0x70, 0xc4, 0xe1, 0x1e, 0x28, 0x90, 0x4e, 0xe4, 0x78, 0x24,
|
||||
0xa6, 0x51, 0x7d, 0x71, 0x7b, 0x71, 0xa7, 0x60, 0x6f, 0x0c, 0x53, 0xb3, 0xd6, 0xc3, 0x51, 0xf8,
|
||||
0xc4, 0x1a, 0xbb, 0x2c, 0x64, 0x90, 0x4e, 0x74, 0x92, 0x0d, 0xe1, 0x47, 0xa0, 0x4c, 0x62, 0xdc,
|
||||
0x0c, 0x89, 0xe3, 0x32, 0x82, 0x05, 0xa9, 0x2f, 0x6d, 0x2f, 0xee, 0x18, 0x76, 0x7d, 0x98, 0x9a,
|
||||
0x1b, 0x3a, 0x6d, 0xda, 0x6d, 0xa1, 0x92, 0xc2, 0xc7, 0x12, 0xc2, 0x0f, 0x41, 0x71, 0xe4, 0xc7,
|
||||
0x61, 0x58, 0xcf, 0xc9, 0xe4, 0xcd, 0x61, 0x6a, 0xc2, 0xd9, 0x64, 0x1c, 0x86, 0x16, 0x02, 0x3a,
|
||||
0x15, 0x87, 0x21, 0x3c, 0x02, 0x80, 0x74, 0x05, 0xc3, 0x0e, 0x09, 0xda, 0xbc, 0x9e, 0xdf, 0xce,
|
||||
0xed, 0xe4, 0x6c, 0xab, 0x9f, 0x9a, 0x85, 0xd3, 0xcc, 0x7a, 0x7a, 0x76, 0xce, 0x87, 0xa9, 0xb9,
|
||||
0xa6, 0x49, 0xc6, 0x81, 0x16, 0x2a, 0x48, 0x70, 0x1a, 0xb4, 0x39, 0xfc, 0x1a, 0x94, 0xdc, 0x16,
|
||||
0x0e, 0x62, 0xc7, 0xa5, 0xf1, 0xab, 0xc0, 0xaf, 0x2f, 0x6f, 0x2f, 0xee, 0x14, 0xf7, 0xff, 0xbf,
|
||||
0x3b, 0x5f, 0xb7, 0xdd, 0xe3, 0x2c, 0xea, 0x58, 0x06, 0xd9, 0xf7, 0x5f, 0xa7, 0xe6, 0xc2, 0x30,
|
||||
0x35, 0xd7, 0x15, 0xf5, 0x34, 0x81, 0x85, 0x8a, 0xee, 0x24, 0xd2, 0xfa, 0xb9, 0x0c, 0x8a, 0x53,
|
||||
0x99, 0x30, 0x02, 0xd5, 0x16, 0x8d, 0x08, 0x17, 0x04, 0x7b, 0x4e, 0x33, 0xa4, 0xee, 0x95, 0x2e,
|
||||
0xf1, 0xc9, 0x9f, 0xa9, 0xf9, 0xbe, 0x1f, 0x88, 0x56, 0xd2, 0xdc, 0x75, 0x69, 0xd4, 0x70, 0x29,
|
||||
0x8f, 0x28, 0xd7, 0x3f, 0x0f, 0xb9, 0x77, 0xd5, 0x10, 0xbd, 0x36, 0xe1, 0xbb, 0x67, 0xb1, 0x18,
|
||||
0xa6, 0xe6, 0xa6, 0x12, 0x9e, 0xa3, 0xb2, 0x50, 0x65, 0x6c, 0xb1, 0x33, 0x03, 0xec, 0x81, 0x8a,
|
||||
0x87, 0xa9, 0xf3, 0x8a, 0xb2, 0x2b, 0xad, 0xb6, 0x24, 0xd5, 0x2e, 0xfe, 0xbb, 0x5a, 0x3f, 0x35,
|
||||
0x4b, 0x27, 0x47, 0x9f, 0x3f, 0xa3, 0xec, 0x4a, 0x72, 0x0e, 0x53, 0xf3, 0x8e, 0x52, 0x9f, 0x65,
|
||||
0xb6, 0x50, 0xc9, 0xc3, 0x74, 0x1c, 0x06, 0xbf, 0x04, 0xb5, 0x71, 0x00, 0x4f, 0xda, 0x6d, 0xca,
|
||||
0x84, 0xde, 0xd9, 0x87, 0xfd, 0xd4, 0xac, 0x68, 0xca, 0x0b, 0xe5, 0x19, 0xa6, 0xe6, 0xff, 0xe6,
|
||||
0x48, 0x75, 0x8e, 0x85, 0x2a, 0x9a, 0x56, 0x87, 0x42, 0x0e, 0x4a, 0x24, 0x68, 0xef, 0x1d, 0x3c,
|
||||
0xd2, 0x2b, 0xca, 0xcb, 0x15, 0x9d, 0xdf, 0x68, 0x45, 0xc5, 0xd3, 0xb3, 0xf3, 0xbd, 0x83, 0x47,
|
||||
0xa3, 0x05, 0xe9, 0x7d, 0x9c, 0xa6, 0xb5, 0x50, 0x51, 0x41, 0xb5, 0x9a, 0x33, 0xa0, 0xa1, 0xd3,
|
||||
0xc2, 0xbc, 0x25, 0xbb, 0xa4, 0x60, 0xef, 0xf4, 0x53, 0x13, 0x28, 0xa6, 0x8f, 0x31, 0x6f, 0x4d,
|
||||
0xf6, 0xa5, 0xd9, 0xfb, 0x0e, 0xc7, 0x22, 0x48, 0xa2, 0x11, 0x17, 0x50, 0xc9, 0x59, 0xd4, 0x78,
|
||||
0xfe, 0x07, 0x7a, 0xfe, 0x2b, 0xb7, 0x9e, 0xff, 0xc1, 0xbb, 0xe6, 0x7f, 0x30, 0x3b, 0x7f, 0x15,
|
||||
0x33, 0x16, 0x3d, 0xd4, 0xa2, 0xab, 0xb7, 0x16, 0x3d, 0x7c, 0x97, 0xe8, 0xe1, 0xac, 0xa8, 0x8a,
|
||||
0xc9, 0x9a, 0x7d, 0xae, 0x12, 0x75, 0xe3, 0xf6, 0xcd, 0x7e, 0xad, 0xa8, 0x95, 0xb1, 0x45, 0xc9,
|
||||
0x7d, 0x0f, 0x36, 0x5c, 0x1a, 0x73, 0x91, 0xd9, 0x62, 0xda, 0x0e, 0x89, 0xd6, 0x2c, 0x48, 0xcd,
|
||||
0xb3, 0x1b, 0x69, 0xde, 0xd7, 0x27, 0xfb, 0x1d, 0x7c, 0x16, 0x5a, 0x9f, 0x35, 0x2b, 0xf5, 0x36,
|
||||
0xa8, 0xb5, 0x89, 0x20, 0x8c, 0x37, 0x13, 0xe6, 0x6b, 0x65, 0x20, 0x95, 0x4f, 0x6f, 0xa4, 0xac,
|
||||
0xcf, 0xc1, 0x3c, 0x97, 0x85, 0xaa, 0x13, 0x93, 0x52, 0xfc, 0x06, 0x54, 0x82, 0x6c, 0x1a, 0xcd,
|
||||
0x24, 0xd4, 0x7a, 0x45, 0xa9, 0x77, 0x7c, 0x23, 0x3d, 0x7d, 0x98, 0x67, 0x99, 0x2c, 0x54, 0x1e,
|
||||
0x19, 0x94, 0x56, 0x02, 0x60, 0x94, 0x04, 0xcc, 0xf1, 0x43, 0xec, 0x06, 0x84, 0x69, 0xbd, 0x92,
|
||||
0xd4, 0x7b, 0x7e, 0x23, 0xbd, 0xbb, 0x4a, 0xef, 0x3a, 0x9b, 0x85, 0x6a, 0x99, 0xf1, 0xb9, 0xb2,
|
||||
0x29, 0x59, 0x0f, 0x94, 0x9a, 0x84, 0x85, 0x41, 0xac, 0x05, 0xcb, 0x52, 0xf0, 0xe8, 0x46, 0x82,
|
||||
0xba, 0x4f, 0xa7, 0x79, 0x2c, 0x54, 0x54, 0x70, 0x5c, 0x48, 0x17, 0x0b, 0x1c, 0xf6, 0xb8, 0xd0,
|
||||
0x3a, 0xb5, 0xdb, 0x17, 0x72, 0x96, 0xc9, 0x42, 0xe5, 0x91, 0x61, 0xbc, 0xa2, 0x90, 0xc6, 0x1e,
|
||||
0x1d, 0xad, 0x68, 0xed, 0xf6, 0x2b, 0x9a, 0xe6, 0xb1, 0x50, 0x51, 0x41, 0xa9, 0xf2, 0x22, 0x6f,
|
||||
0x54, 0x6a, 0xd5, 0x17, 0x79, 0xa3, 0x5a, 0xab, 0xa1, 0x72, 0x8f, 0x86, 0xd4, 0xe9, 0x3c, 0x56,
|
||||
0x81, 0xa8, 0x48, 0xbe, 0xc5, 0x7c, 0x74, 0x86, 0x1a, 0x60, 0xf9, 0x42, 0x64, 0x4f, 0x70, 0x0d,
|
||||
0xe4, 0xae, 0x48, 0x4f, 0xbd, 0x45, 0x28, 0x1b, 0xc2, 0x0d, 0xb0, 0xdc, 0xc1, 0x61, 0xa2, 0xde,
|
||||
0xf2, 0x02, 0x52, 0xc0, 0x3a, 0x07, 0xd5, 0x4b, 0x86, 0x63, 0x8e, 0x5d, 0x11, 0xd0, 0xf8, 0x25,
|
||||
0xf5, 0x39, 0x84, 0x20, 0x2f, 0xef, 0x44, 0x95, 0x2b, 0xc7, 0xf0, 0x03, 0x90, 0x0f, 0xa9, 0xcf,
|
||||
0xeb, 0x4b, 0xdb, 0xb9, 0x9d, 0xe2, 0xfe, 0x9d, 0xeb, 0xaf, 0xe9, 0x4b, 0xea, 0x23, 0x19, 0x62,
|
||||
0xfd, 0xb6, 0x04, 0x72, 0x2f, 0xa9, 0x0f, 0xeb, 0x60, 0x15, 0x7b, 0x1e, 0x23, 0x9c, 0x6b, 0xa6,
|
||||
0x11, 0x84, 0x9b, 0x60, 0x45, 0xd0, 0x76, 0xe0, 0x2a, 0xba, 0x02, 0xd2, 0x28, 0x13, 0xf6, 0xb0,
|
||||
0xc0, 0xf2, 0x55, 0x29, 0x21, 0x39, 0x86, 0xfb, 0xa0, 0x24, 0x57, 0xe6, 0xc4, 0x49, 0xd4, 0x24,
|
||||
0x4c, 0x3e, 0x0e, 0x79, 0xbb, 0x3a, 0x48, 0xcd, 0xa2, 0xb4, 0x7f, 0x26, 0xcd, 0x68, 0x1a, 0xc0,
|
||||
0x07, 0x60, 0x55, 0x74, 0xa7, 0xef, 0xf5, 0xf5, 0x41, 0x6a, 0x56, 0xc5, 0x64, 0x99, 0xd9, 0xb5,
|
||||
0x8d, 0x56, 0x44, 0x57, 0x5e, 0xdf, 0x0d, 0x60, 0x88, 0xae, 0x13, 0xc4, 0x1e, 0xe9, 0xca, 0xab,
|
||||
0x3b, 0x6f, 0x6f, 0x0c, 0x52, 0xb3, 0x36, 0x15, 0x7e, 0x96, 0xf9, 0xd0, 0xaa, 0xe8, 0xca, 0x01,
|
||||
0x7c, 0x00, 0x80, 0x9a, 0x92, 0x54, 0x50, 0x17, 0x6f, 0x79, 0x90, 0x9a, 0x05, 0x69, 0x95, 0xdc,
|
||||
0x93, 0x21, 0xb4, 0xc0, 0xb2, 0xe2, 0x36, 0x24, 0x77, 0x69, 0x90, 0x9a, 0x46, 0x48, 0x7d, 0xc5,
|
||||
0xa9, 0x5c, 0x59, 0xa9, 0x18, 0x89, 0x68, 0x87, 0x78, 0xf2, 0x6e, 0x33, 0xd0, 0x08, 0x5a, 0x3f,
|
||||
0x2e, 0x01, 0xe3, 0xb2, 0x8b, 0x08, 0x4f, 0x42, 0x01, 0x9f, 0x81, 0x9a, 0x4b, 0x63, 0xc1, 0xb0,
|
||||
0x2b, 0x9c, 0x99, 0xd2, 0xda, 0xf7, 0x27, 0xf7, 0xcc, 0x7c, 0x84, 0x85, 0xaa, 0x23, 0xd3, 0x91,
|
||||
0xae, 0xff, 0x06, 0x58, 0x6e, 0x86, 0x94, 0x46, 0xb2, 0x13, 0x4a, 0x48, 0x01, 0x88, 0x64, 0xd5,
|
||||
0xe4, 0x2e, 0xe7, 0xe4, 0x37, 0xd3, 0x7b, 0xd7, 0x77, 0x79, 0xae, 0x55, 0xec, 0x4d, 0xfd, 0xdd,
|
||||
0x54, 0x51, 0xda, 0x3a, 0xdf, 0xca, 0x6a, 0x2b, 0x5b, 0xa9, 0x06, 0x72, 0x8c, 0x08, 0xb9, 0x69,
|
||||
0x25, 0x94, 0x0d, 0xe1, 0x3d, 0x60, 0x30, 0xd2, 0x21, 0x4c, 0x10, 0x4f, 0x6e, 0x8e, 0x81, 0xc6,
|
||||
0x18, 0xde, 0x05, 0x86, 0x8f, 0xb9, 0x93, 0x70, 0xe2, 0xa9, 0x9d, 0x40, 0xab, 0x3e, 0xe6, 0x5f,
|
||||
0x70, 0xe2, 0x3d, 0xc9, 0xff, 0xf0, 0x8b, 0xb9, 0x60, 0x61, 0x50, 0x3c, 0x72, 0x5d, 0xc2, 0xf9,
|
||||
0x65, 0xd2, 0x0e, 0xc9, 0x3f, 0x74, 0xd8, 0x3e, 0x28, 0x71, 0x41, 0x19, 0xf6, 0x89, 0x73, 0x45,
|
||||
0x7a, 0xba, 0xcf, 0x54, 0xd7, 0x68, 0xfb, 0x27, 0xa4, 0xc7, 0xd1, 0x34, 0xd0, 0x12, 0xbf, 0xe6,
|
||||
0x40, 0xf1, 0x92, 0x61, 0x97, 0xe8, 0xef, 0xbb, 0xac, 0x57, 0x33, 0xc8, 0xb4, 0x84, 0x46, 0x99,
|
||||
0xb6, 0x08, 0x22, 0x42, 0x13, 0xa1, 0xcf, 0xd3, 0x08, 0x66, 0x19, 0x8c, 0x90, 0x2e, 0x71, 0x65,
|
||||
0x19, 0xf3, 0x48, 0x23, 0x78, 0x08, 0x2a, 0x5e, 0xc0, 0xe5, 0x87, 0x6f, 0x44, 0x22, 0xca, 0x7a,
|
||||
0xb2, 0x2c, 0x86, 0xbd, 0x36, 0x48, 0xcd, 0xb2, 0xf6, 0x7c, 0x2a, 0x1d, 0x68, 0x16, 0xc2, 0x03,
|
||||
0x30, 0x32, 0x38, 0x5c, 0x60, 0xf7, 0x4a, 0x15, 0xce, 0xae, 0x0d, 0x52, 0xb3, 0xa4, 0x1d, 0x17,
|
||||
0x99, 0x1d, 0xcd, 0x20, 0xf8, 0x14, 0x54, 0x27, 0x69, 0x72, 0x9d, 0xb2, 0xaa, 0x86, 0x0d, 0x07,
|
||||
0xa9, 0x59, 0x19, 0x87, 0x4a, 0x0f, 0x9a, 0xc3, 0xf0, 0x14, 0xac, 0x8f, 0x92, 0x19, 0x11, 0x09,
|
||||
0x8b, 0x1d, 0x79, 0x34, 0x57, 0x25, 0xc1, 0x9d, 0x41, 0x6a, 0xae, 0x69, 0x37, 0x92, 0xde, 0x13,
|
||||
0x2c, 0x30, 0xba, 0x6e, 0xca, 0x5a, 0xcd, 0x23, 0xcd, 0xc4, 0x97, 0xdd, 0x6f, 0x20, 0x05, 0x32,
|
||||
0x6b, 0x18, 0x44, 0x81, 0x90, 0xdd, 0xbe, 0x8c, 0x14, 0x80, 0x4f, 0x41, 0x81, 0x76, 0x08, 0x63,
|
||||
0x81, 0x47, 0xb8, 0x7c, 0x69, 0xff, 0xed, 0xb3, 0x1d, 0x4d, 0xe2, 0x6d, 0xfb, 0x75, 0x7f, 0x6b,
|
||||
0xf1, 0x4d, 0x7f, 0x6b, 0xf1, 0xaf, 0xfe, 0xd6, 0xe2, 0x4f, 0x6f, 0xb7, 0x16, 0xde, 0xbc, 0xdd,
|
||||
0x5a, 0xf8, 0xe3, 0xed, 0xd6, 0xc2, 0x57, 0x3b, 0x53, 0xd7, 0xb0, 0x68, 0x61, 0xc6, 0x03, 0xde,
|
||||
0x98, 0xfc, 0xc1, 0xea, 0xca, 0xbf, 0x58, 0xf2, 0x32, 0x6e, 0xae, 0xc8, 0xbf, 0x4e, 0x8f, 0xff,
|
||||
0x0e, 0x00, 0x00, 0xff, 0xff, 0x7f, 0x84, 0x30, 0xb7, 0x80, 0x0d, 0x00, 0x00,
|
||||
// 1436 bytes of a gzipped FileDescriptorProto
|
||||
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x9c, 0x57, 0x4f, 0x6f, 0x1b, 0x37,
|
||||
0x16, 0xb7, 0x2d, 0xd9, 0x1e, 0x51, 0x23, 0x69, 0x42, 0x3b, 0x5e, 0x25, 0xc1, 0x7a, 0xbc, 0x73,
|
||||
0x58, 0x78, 0x81, 0xc4, 0x8a, 0x1d, 0x18, 0x1b, 0x24, 0xd8, 0x83, 0xc7, 0x76, 0xb2, 0xf6, 0x66,
|
||||
0x77, 0x0d, 0xda, 0x8b, 0x05, 0x0a, 0x14, 0x03, 0x6a, 0x86, 0x19, 0x4d, 0x3d, 0x33, 0x14, 0x48,
|
||||
0x8e, 0x2a, 0x15, 0xfd, 0x00, 0x05, 0x7a, 0xe9, 0x07, 0xe8, 0xa1, 0x1f, 0x27, 0xe8, 0x29, 0x97,
|
||||
0x02, 0x45, 0x0f, 0x83, 0xc0, 0xb9, 0xf9, 0xa8, 0x4f, 0x50, 0x0c, 0x49, 0xfd, 0x75, 0xd0, 0xd6,
|
||||
0x3e, 0x89, 0xbf, 0xc7, 0xf7, 0x7e, 0x3f, 0xbe, 0xc7, 0x47, 0x72, 0x04, 0x1e, 0x12, 0xd1, 0x21,
|
||||
0x2c, 0x89, 0x52, 0xd1, 0x22, 0xbd, 0xa4, 0xd5, 0xdb, 0x2d, 0x7e, 0x76, 0xba, 0x8c, 0x0a, 0x0a,
|
||||
0xad, 0xf1, 0xdc, 0x4e, 0x61, 0xec, 0xed, 0x3e, 0x5c, 0x0f, 0x69, 0x48, 0xe5, 0x64, 0xab, 0x18,
|
||||
0x29, 0x3f, 0xe7, 0xa7, 0x25, 0xb0, 0x72, 0x86, 0x19, 0x4e, 0x38, 0xdc, 0x05, 0x15, 0xd2, 0x4b,
|
||||
0xbc, 0x80, 0xa4, 0x34, 0x69, 0x2e, 0x6e, 0x2d, 0x6e, 0x57, 0xdc, 0xf5, 0x61, 0x6e, 0x5b, 0x03,
|
||||
0x9c, 0xc4, 0x2f, 0x9c, 0xf1, 0x94, 0x83, 0x0c, 0xd2, 0x4b, 0x8e, 0x8a, 0x21, 0xfc, 0x07, 0xa8,
|
||||
0x91, 0x14, 0xb7, 0x63, 0xe2, 0xf9, 0x8c, 0x60, 0x41, 0x9a, 0x4b, 0x5b, 0x8b, 0xdb, 0x86, 0xdb,
|
||||
0x1c, 0xe6, 0xf6, 0xba, 0x0e, 0x9b, 0x9e, 0x76, 0x90, 0xa9, 0xf0, 0xa1, 0x84, 0xf0, 0xef, 0xa0,
|
||||
0x3a, 0x9a, 0xc7, 0x71, 0xdc, 0x2c, 0xc9, 0xe0, 0x8d, 0x61, 0x6e, 0xc3, 0xd9, 0x60, 0x1c, 0xc7,
|
||||
0x0e, 0x02, 0x3a, 0x14, 0xc7, 0x31, 0x3c, 0x00, 0x80, 0xf4, 0x05, 0xc3, 0x1e, 0x89, 0xba, 0xbc,
|
||||
0x59, 0xde, 0x2a, 0x6d, 0x97, 0x5c, 0xe7, 0x2a, 0xb7, 0x2b, 0xc7, 0x85, 0xf5, 0xf8, 0xe4, 0x8c,
|
||||
0x0f, 0x73, 0xfb, 0x9e, 0x26, 0x19, 0x3b, 0x3a, 0xa8, 0x22, 0xc1, 0x71, 0xd4, 0xe5, 0xf0, 0x73,
|
||||
0x60, 0xfa, 0x1d, 0x1c, 0xa5, 0x9e, 0x4f, 0xd3, 0xb7, 0x51, 0xd8, 0x5c, 0xde, 0x5a, 0xdc, 0xae,
|
||||
0xee, 0xfd, 0x79, 0x67, 0xbe, 0x6e, 0x3b, 0x87, 0x85, 0xd7, 0xa1, 0x74, 0x72, 0x1f, 0xbd, 0xcb,
|
||||
0xed, 0x85, 0x61, 0x6e, 0xaf, 0x29, 0xea, 0x69, 0x02, 0x07, 0x55, 0xfd, 0x89, 0xa7, 0xf3, 0x7d,
|
||||
0x0d, 0x54, 0xa7, 0x22, 0x61, 0x02, 0x1a, 0x1d, 0x9a, 0x10, 0x2e, 0x08, 0x0e, 0xbc, 0x76, 0x4c,
|
||||
0xfd, 0x4b, 0x5d, 0xe2, 0xa3, 0x5f, 0x72, 0xfb, 0xaf, 0x61, 0x24, 0x3a, 0x59, 0x7b, 0xc7, 0xa7,
|
||||
0x49, 0xcb, 0xa7, 0x3c, 0xa1, 0x5c, 0xff, 0x3c, 0xe1, 0xc1, 0x65, 0x4b, 0x0c, 0xba, 0x84, 0xef,
|
||||
0x9c, 0xa4, 0x62, 0x98, 0xdb, 0x1b, 0x4a, 0x78, 0x8e, 0xca, 0x41, 0xf5, 0xb1, 0xc5, 0x2d, 0x0c,
|
||||
0x70, 0x00, 0xea, 0x01, 0xa6, 0xde, 0x5b, 0xca, 0x2e, 0xb5, 0xda, 0x92, 0x54, 0x3b, 0xff, 0xe3,
|
||||
0x6a, 0x57, 0xb9, 0x6d, 0x1e, 0x1d, 0xfc, 0xf7, 0x15, 0x65, 0x97, 0x92, 0x73, 0x98, 0xdb, 0xf7,
|
||||
0x95, 0xfa, 0x2c, 0xb3, 0x83, 0xcc, 0x00, 0xd3, 0xb1, 0x1b, 0xfc, 0x3f, 0xb0, 0xc6, 0x0e, 0x3c,
|
||||
0xeb, 0x76, 0x29, 0x13, 0x7a, 0x67, 0x9f, 0x5c, 0xe5, 0x76, 0x5d, 0x53, 0x9e, 0xab, 0x99, 0x61,
|
||||
0x6e, 0xff, 0x69, 0x8e, 0x54, 0xc7, 0x38, 0xa8, 0xae, 0x69, 0xb5, 0x2b, 0xe4, 0xc0, 0x24, 0x51,
|
||||
0x77, 0x77, 0xff, 0xa9, 0xce, 0xa8, 0x2c, 0x33, 0x3a, 0xbb, 0x55, 0x46, 0xd5, 0xe3, 0x93, 0xb3,
|
||||
0xdd, 0xfd, 0xa7, 0xa3, 0x84, 0xf4, 0x3e, 0x4e, 0xd3, 0x3a, 0xa8, 0xaa, 0xa0, 0xca, 0xe6, 0x04,
|
||||
0x68, 0xe8, 0x75, 0x30, 0xef, 0xc8, 0x2e, 0xa9, 0xb8, 0xdb, 0x57, 0xb9, 0x0d, 0x14, 0xd3, 0x3f,
|
||||
0x31, 0xef, 0x4c, 0xf6, 0xa5, 0x3d, 0xf8, 0x0a, 0xa7, 0x22, 0xca, 0x92, 0x11, 0x17, 0x50, 0xc1,
|
||||
0x85, 0xd7, 0x78, 0xfd, 0xfb, 0x7a, 0xfd, 0x2b, 0x77, 0x5e, 0xff, 0xfe, 0xa7, 0xd6, 0xbf, 0x3f,
|
||||
0xbb, 0x7e, 0xe5, 0x33, 0x16, 0x7d, 0xae, 0x45, 0x57, 0xef, 0x2c, 0xfa, 0xfc, 0x53, 0xa2, 0xcf,
|
||||
0x67, 0x45, 0x95, 0x4f, 0xd1, 0xec, 0x73, 0x95, 0x68, 0x1a, 0x77, 0x6f, 0xf6, 0x1b, 0x45, 0xad,
|
||||
0x8f, 0x2d, 0x4a, 0xee, 0x6b, 0xb0, 0xee, 0xd3, 0x94, 0x8b, 0xc2, 0x96, 0xd2, 0x6e, 0x4c, 0xb4,
|
||||
0x66, 0x45, 0x6a, 0x9e, 0xdc, 0x4a, 0xf3, 0x91, 0x3e, 0xd9, 0x9f, 0xe0, 0x73, 0xd0, 0xda, 0xac,
|
||||
0x59, 0xa9, 0x77, 0x81, 0xd5, 0x25, 0x82, 0x30, 0xde, 0xce, 0x58, 0xa8, 0x95, 0x81, 0x54, 0x3e,
|
||||
0xbe, 0x95, 0xb2, 0x3e, 0x07, 0xf3, 0x5c, 0x0e, 0x6a, 0x4c, 0x4c, 0x4a, 0xf1, 0x0b, 0x50, 0x8f,
|
||||
0x8a, 0x65, 0xb4, 0xb3, 0x58, 0xeb, 0x55, 0xa5, 0xde, 0xe1, 0xad, 0xf4, 0xf4, 0x61, 0x9e, 0x65,
|
||||
0x72, 0x50, 0x6d, 0x64, 0x50, 0x5a, 0x19, 0x80, 0x49, 0x16, 0x31, 0x2f, 0x8c, 0xb1, 0x1f, 0x11,
|
||||
0xa6, 0xf5, 0x4c, 0xa9, 0xf7, 0xfa, 0x56, 0x7a, 0x0f, 0x94, 0xde, 0x4d, 0x36, 0x07, 0x59, 0x85,
|
||||
0xf1, 0xb5, 0xb2, 0x29, 0xd9, 0x00, 0x98, 0x6d, 0xc2, 0xe2, 0x28, 0xd5, 0x82, 0x35, 0x29, 0x78,
|
||||
0x70, 0x2b, 0x41, 0xdd, 0xa7, 0xd3, 0x3c, 0x0e, 0xaa, 0x2a, 0x38, 0x2e, 0xa4, 0x8f, 0x05, 0x8e,
|
||||
0x07, 0x5c, 0x68, 0x1d, 0xeb, 0xee, 0x85, 0x9c, 0x65, 0x72, 0x50, 0x6d, 0x64, 0x18, 0x67, 0x14,
|
||||
0xd3, 0x34, 0xa0, 0xa3, 0x8c, 0xee, 0xdd, 0x3d, 0xa3, 0x69, 0x1e, 0x07, 0x55, 0x15, 0x94, 0x2a,
|
||||
0xa7, 0x65, 0xa3, 0x6e, 0x35, 0x4e, 0xcb, 0x46, 0xc3, 0xb2, 0x50, 0x6d, 0x40, 0x63, 0xea, 0xf5,
|
||||
0x9e, 0x29, 0x47, 0x54, 0x25, 0x5f, 0x62, 0x3e, 0x3a, 0x43, 0x2d, 0xb0, 0x7c, 0x2e, 0x8a, 0x27,
|
||||
0xd8, 0x02, 0xa5, 0x4b, 0x32, 0x50, 0x6f, 0x11, 0x2a, 0x86, 0x70, 0x1d, 0x2c, 0xf7, 0x70, 0x9c,
|
||||
0xa9, 0xb7, 0xbc, 0x82, 0x14, 0x70, 0xce, 0x40, 0xe3, 0x82, 0xe1, 0x94, 0x63, 0x5f, 0x44, 0x34,
|
||||
0x7d, 0x43, 0x43, 0x0e, 0x21, 0x28, 0xcb, 0x3b, 0x51, 0xc5, 0xca, 0x31, 0xfc, 0x1b, 0x28, 0xc7,
|
||||
0x34, 0xe4, 0xcd, 0xa5, 0xad, 0xd2, 0x76, 0x75, 0xef, 0xfe, 0xcd, 0xd7, 0xf4, 0x0d, 0x0d, 0x91,
|
||||
0x74, 0x71, 0x7e, 0x5c, 0x02, 0xa5, 0x37, 0x34, 0x84, 0x4d, 0xb0, 0x8a, 0x83, 0x80, 0x11, 0xce,
|
||||
0x35, 0xd3, 0x08, 0xc2, 0x0d, 0xb0, 0x22, 0x68, 0x37, 0xf2, 0x15, 0x5d, 0x05, 0x69, 0x54, 0x08,
|
||||
0x07, 0x58, 0x60, 0xf9, 0xaa, 0x98, 0x48, 0x8e, 0xe1, 0x1e, 0x30, 0x65, 0x66, 0x5e, 0x9a, 0x25,
|
||||
0x6d, 0xc2, 0xe4, 0xe3, 0x50, 0x76, 0x1b, 0xd7, 0xb9, 0x5d, 0x95, 0xf6, 0xff, 0x48, 0x33, 0x9a,
|
||||
0x06, 0xf0, 0x31, 0x58, 0x15, 0xfd, 0xe9, 0x7b, 0x7d, 0xed, 0x3a, 0xb7, 0x1b, 0x62, 0x92, 0x66,
|
||||
0x71, 0x6d, 0xa3, 0x15, 0xd1, 0x97, 0xd7, 0x77, 0x0b, 0x18, 0xa2, 0xef, 0x45, 0x69, 0x40, 0xfa,
|
||||
0xf2, 0xea, 0x2e, 0xbb, 0xeb, 0xd7, 0xb9, 0x6d, 0x4d, 0xb9, 0x9f, 0x14, 0x73, 0x68, 0x55, 0xf4,
|
||||
0xe5, 0x00, 0x3e, 0x06, 0x40, 0x2d, 0x49, 0x2a, 0xa8, 0x8b, 0xb7, 0x76, 0x9d, 0xdb, 0x15, 0x69,
|
||||
0x95, 0xdc, 0x93, 0x21, 0x74, 0xc0, 0xb2, 0xe2, 0x36, 0x24, 0xb7, 0x79, 0x9d, 0xdb, 0x46, 0x4c,
|
||||
0x43, 0xc5, 0xa9, 0xa6, 0x8a, 0x52, 0x31, 0x92, 0xd0, 0x1e, 0x09, 0xe4, 0xdd, 0x66, 0xa0, 0x11,
|
||||
0x74, 0xbe, 0x5d, 0x02, 0xc6, 0x45, 0x1f, 0x11, 0x9e, 0xc5, 0x02, 0xbe, 0x02, 0x96, 0x4f, 0x53,
|
||||
0xc1, 0xb0, 0x2f, 0xbc, 0x99, 0xd2, 0xba, 0x8f, 0x26, 0xf7, 0xcc, 0xbc, 0x87, 0x83, 0x1a, 0x23,
|
||||
0xd3, 0x81, 0xae, 0xff, 0x3a, 0x58, 0x6e, 0xc7, 0x94, 0x26, 0xb2, 0x13, 0x4c, 0xa4, 0x00, 0x44,
|
||||
0xb2, 0x6a, 0x72, 0x97, 0x4b, 0xf2, 0x9b, 0xe9, 0x2f, 0x37, 0x77, 0x79, 0xae, 0x55, 0xdc, 0x0d,
|
||||
0xfd, 0xdd, 0x54, 0x57, 0xda, 0x3a, 0xde, 0x29, 0x6a, 0x2b, 0x5b, 0xc9, 0x02, 0x25, 0x46, 0x84,
|
||||
0xdc, 0x34, 0x13, 0x15, 0x43, 0xf8, 0x10, 0x18, 0x8c, 0xf4, 0x08, 0x13, 0x24, 0x90, 0x9b, 0x63,
|
||||
0xa0, 0x31, 0x86, 0x0f, 0x80, 0x11, 0x62, 0xee, 0x65, 0x9c, 0x04, 0x6a, 0x27, 0xd0, 0x6a, 0x88,
|
||||
0xf9, 0xff, 0x38, 0x09, 0x5e, 0x94, 0xbf, 0xf9, 0xc1, 0x5e, 0x70, 0x30, 0xa8, 0x1e, 0xf8, 0x3e,
|
||||
0xe1, 0xfc, 0x22, 0xeb, 0xc6, 0xe4, 0x37, 0x3a, 0x6c, 0x0f, 0x98, 0x5c, 0x50, 0x86, 0x43, 0xe2,
|
||||
0x5d, 0x92, 0x81, 0xee, 0x33, 0xd5, 0x35, 0xda, 0xfe, 0x2f, 0x32, 0xe0, 0x68, 0x1a, 0x68, 0x89,
|
||||
0x0f, 0x25, 0x50, 0xbd, 0x60, 0xd8, 0x27, 0xfa, 0xfb, 0xae, 0xe8, 0xd5, 0x02, 0x32, 0x2d, 0xa1,
|
||||
0x51, 0xa1, 0x2d, 0xa2, 0x84, 0xd0, 0x4c, 0xe8, 0xf3, 0x34, 0x82, 0x45, 0x04, 0x23, 0xa4, 0x4f,
|
||||
0x7c, 0x59, 0xc6, 0x32, 0xd2, 0x08, 0xee, 0x83, 0x5a, 0x10, 0x71, 0xf9, 0xe1, 0xcb, 0x05, 0xf6,
|
||||
0x2f, 0x55, 0xfa, 0xae, 0x75, 0x9d, 0xdb, 0xa6, 0x9e, 0x38, 0x2f, 0xec, 0x68, 0x06, 0xc1, 0x97,
|
||||
0xa0, 0x31, 0x09, 0x93, 0xab, 0x95, 0xb5, 0x31, 0x5c, 0x78, 0x9d, 0xdb, 0xf5, 0xb1, 0xab, 0x9c,
|
||||
0x41, 0x73, 0xb8, 0xd8, 0xe9, 0x80, 0xb4, 0xb3, 0x50, 0x36, 0x9f, 0x81, 0x14, 0x28, 0xac, 0x71,
|
||||
0x94, 0x44, 0x42, 0x36, 0xdb, 0x32, 0x52, 0x00, 0xbe, 0x04, 0x15, 0xda, 0x23, 0x8c, 0x45, 0x01,
|
||||
0xe1, 0xf2, 0xa1, 0xfb, 0xbd, 0xaf, 0x66, 0x34, 0xf1, 0x2f, 0x92, 0xd3, 0x1f, 0xf5, 0x09, 0x49,
|
||||
0x28, 0x1b, 0xc8, 0x97, 0x4b, 0x27, 0xa7, 0x26, 0xfe, 0x2d, 0xed, 0x68, 0x06, 0x41, 0x17, 0x40,
|
||||
0x1d, 0xc6, 0x88, 0xc8, 0x58, 0xea, 0xc9, 0xf3, 0x6f, 0xca, 0x58, 0x79, 0x0a, 0xd5, 0x2c, 0x92,
|
||||
0x93, 0x47, 0x58, 0x60, 0x74, 0xc3, 0x72, 0x5a, 0x36, 0xca, 0xd6, 0xf2, 0x69, 0xd9, 0x58, 0xb5,
|
||||
0x8c, 0x71, 0xfe, 0x7a, 0x15, 0x68, 0x6d, 0x84, 0xa7, 0xe8, 0x5d, 0xf7, 0xdd, 0xd5, 0xe6, 0xe2,
|
||||
0xfb, 0xab, 0xcd, 0xc5, 0x0f, 0x57, 0x9b, 0x8b, 0xdf, 0x7d, 0xdc, 0x5c, 0x78, 0xff, 0x71, 0x73,
|
||||
0xe1, 0xe7, 0x8f, 0x9b, 0x0b, 0x9f, 0x6d, 0x4f, 0xdd, 0xd8, 0xa2, 0x83, 0x19, 0x8f, 0x78, 0x6b,
|
||||
0xf2, 0x5f, 0xac, 0x2f, 0xff, 0x8d, 0xc9, 0x7b, 0xbb, 0xbd, 0x22, 0xff, 0x65, 0x3d, 0xfb, 0x35,
|
||||
0x00, 0x00, 0xff, 0xff, 0x1a, 0x33, 0x43, 0x0b, 0xab, 0x0d, 0x00, 0x00,
|
||||
}
|
||||
|
||||
func (m *Params) Marshal() (dAtA []byte, err error) {
|
||||
@@ -1319,6 +1320,26 @@ func (m *TraceConfig) MarshalToSizedBuffer(dAtA []byte) (int, error) {
|
||||
_ = i
|
||||
var l int
|
||||
_ = l
|
||||
if m.EnableReturnData {
|
||||
i--
|
||||
if m.EnableReturnData {
|
||||
dAtA[i] = 1
|
||||
} else {
|
||||
dAtA[i] = 0
|
||||
}
|
||||
i--
|
||||
dAtA[i] = 0x60
|
||||
}
|
||||
if m.EnableMemory {
|
||||
i--
|
||||
if m.EnableMemory {
|
||||
dAtA[i] = 1
|
||||
} else {
|
||||
dAtA[i] = 0
|
||||
}
|
||||
i--
|
||||
dAtA[i] = 0x58
|
||||
}
|
||||
if m.Overrides != nil {
|
||||
{
|
||||
size, err := m.Overrides.MarshalToSizedBuffer(dAtA[:i])
|
||||
@@ -1346,16 +1367,6 @@ func (m *TraceConfig) MarshalToSizedBuffer(dAtA []byte) (int, error) {
|
||||
i--
|
||||
dAtA[i] = 0x40
|
||||
}
|
||||
if m.DisableReturnData {
|
||||
i--
|
||||
if m.DisableReturnData {
|
||||
dAtA[i] = 1
|
||||
} else {
|
||||
dAtA[i] = 0
|
||||
}
|
||||
i--
|
||||
dAtA[i] = 0x38
|
||||
}
|
||||
if m.DisableStorage {
|
||||
i--
|
||||
if m.DisableStorage {
|
||||
@@ -1376,16 +1387,6 @@ func (m *TraceConfig) MarshalToSizedBuffer(dAtA []byte) (int, error) {
|
||||
i--
|
||||
dAtA[i] = 0x28
|
||||
}
|
||||
if m.DisableMemory {
|
||||
i--
|
||||
if m.DisableMemory {
|
||||
dAtA[i] = 1
|
||||
} else {
|
||||
dAtA[i] = 0
|
||||
}
|
||||
i--
|
||||
dAtA[i] = 0x20
|
||||
}
|
||||
if m.Reexec != 0 {
|
||||
i = encodeVarintEvm(dAtA, i, uint64(m.Reexec))
|
||||
i--
|
||||
@@ -1659,18 +1660,12 @@ func (m *TraceConfig) Size() (n int) {
|
||||
if m.Reexec != 0 {
|
||||
n += 1 + sovEvm(uint64(m.Reexec))
|
||||
}
|
||||
if m.DisableMemory {
|
||||
n += 2
|
||||
}
|
||||
if m.DisableStack {
|
||||
n += 2
|
||||
}
|
||||
if m.DisableStorage {
|
||||
n += 2
|
||||
}
|
||||
if m.DisableReturnData {
|
||||
n += 2
|
||||
}
|
||||
if m.Debug {
|
||||
n += 2
|
||||
}
|
||||
@@ -1681,6 +1676,12 @@ func (m *TraceConfig) Size() (n int) {
|
||||
l = m.Overrides.Size()
|
||||
n += 1 + l + sovEvm(uint64(l))
|
||||
}
|
||||
if m.EnableMemory {
|
||||
n += 2
|
||||
}
|
||||
if m.EnableReturnData {
|
||||
n += 2
|
||||
}
|
||||
return n
|
||||
}
|
||||
|
||||
@@ -3458,26 +3459,6 @@ func (m *TraceConfig) Unmarshal(dAtA []byte) error {
|
||||
break
|
||||
}
|
||||
}
|
||||
case 4:
|
||||
if wireType != 0 {
|
||||
return fmt.Errorf("proto: wrong wireType = %d for field DisableMemory", wireType)
|
||||
}
|
||||
var v int
|
||||
for shift := uint(0); ; shift += 7 {
|
||||
if shift >= 64 {
|
||||
return ErrIntOverflowEvm
|
||||
}
|
||||
if iNdEx >= l {
|
||||
return io.ErrUnexpectedEOF
|
||||
}
|
||||
b := dAtA[iNdEx]
|
||||
iNdEx++
|
||||
v |= int(b&0x7F) << shift
|
||||
if b < 0x80 {
|
||||
break
|
||||
}
|
||||
}
|
||||
m.DisableMemory = bool(v != 0)
|
||||
case 5:
|
||||
if wireType != 0 {
|
||||
return fmt.Errorf("proto: wrong wireType = %d for field DisableStack", wireType)
|
||||
@@ -3518,26 +3499,6 @@ func (m *TraceConfig) Unmarshal(dAtA []byte) error {
|
||||
}
|
||||
}
|
||||
m.DisableStorage = bool(v != 0)
|
||||
case 7:
|
||||
if wireType != 0 {
|
||||
return fmt.Errorf("proto: wrong wireType = %d for field DisableReturnData", wireType)
|
||||
}
|
||||
var v int
|
||||
for shift := uint(0); ; shift += 7 {
|
||||
if shift >= 64 {
|
||||
return ErrIntOverflowEvm
|
||||
}
|
||||
if iNdEx >= l {
|
||||
return io.ErrUnexpectedEOF
|
||||
}
|
||||
b := dAtA[iNdEx]
|
||||
iNdEx++
|
||||
v |= int(b&0x7F) << shift
|
||||
if b < 0x80 {
|
||||
break
|
||||
}
|
||||
}
|
||||
m.DisableReturnData = bool(v != 0)
|
||||
case 8:
|
||||
if wireType != 0 {
|
||||
return fmt.Errorf("proto: wrong wireType = %d for field Debug", wireType)
|
||||
@@ -3613,6 +3574,46 @@ func (m *TraceConfig) Unmarshal(dAtA []byte) error {
|
||||
return err
|
||||
}
|
||||
iNdEx = postIndex
|
||||
case 11:
|
||||
if wireType != 0 {
|
||||
return fmt.Errorf("proto: wrong wireType = %d for field EnableMemory", wireType)
|
||||
}
|
||||
var v int
|
||||
for shift := uint(0); ; shift += 7 {
|
||||
if shift >= 64 {
|
||||
return ErrIntOverflowEvm
|
||||
}
|
||||
if iNdEx >= l {
|
||||
return io.ErrUnexpectedEOF
|
||||
}
|
||||
b := dAtA[iNdEx]
|
||||
iNdEx++
|
||||
v |= int(b&0x7F) << shift
|
||||
if b < 0x80 {
|
||||
break
|
||||
}
|
||||
}
|
||||
m.EnableMemory = bool(v != 0)
|
||||
case 12:
|
||||
if wireType != 0 {
|
||||
return fmt.Errorf("proto: wrong wireType = %d for field EnableReturnData", wireType)
|
||||
}
|
||||
var v int
|
||||
for shift := uint(0); ; shift += 7 {
|
||||
if shift >= 64 {
|
||||
return ErrIntOverflowEvm
|
||||
}
|
||||
if iNdEx >= l {
|
||||
return io.ErrUnexpectedEOF
|
||||
}
|
||||
b := dAtA[iNdEx]
|
||||
iNdEx++
|
||||
v |= int(b&0x7F) << shift
|
||||
if b < 0x80 {
|
||||
break
|
||||
}
|
||||
}
|
||||
m.EnableReturnData = bool(v != 0)
|
||||
default:
|
||||
iNdEx = preIndex
|
||||
skippy, err := skipEvm(dAtA[iNdEx:])
|
||||
|
||||
+26
-9
@@ -34,23 +34,23 @@ const (
|
||||
// NewTx returns a reference to a new Ethereum transaction message.
|
||||
func NewTx(
|
||||
chainID *big.Int, nonce uint64, to *common.Address, amount *big.Int,
|
||||
gasLimit uint64, gasPrice *big.Int, input []byte, accesses *ethtypes.AccessList,
|
||||
gasLimit uint64, gasPrice, gasFeeCap, gasTipCap *big.Int, input []byte, accesses *ethtypes.AccessList,
|
||||
) *MsgEthereumTx {
|
||||
return newMsgEthereumTx(chainID, nonce, to, amount, gasLimit, gasPrice, input, accesses)
|
||||
return newMsgEthereumTx(chainID, nonce, to, amount, gasLimit, gasPrice, gasFeeCap, gasTipCap, input, accesses)
|
||||
}
|
||||
|
||||
// NewTxContract returns a reference to a new Ethereum transaction
|
||||
// message designated for contract creation.
|
||||
func NewTxContract(
|
||||
chainID *big.Int, nonce uint64, amount *big.Int,
|
||||
gasLimit uint64, gasPrice *big.Int, input []byte, accesses *ethtypes.AccessList,
|
||||
gasLimit uint64, gasPrice, gasFeeCap, gasTipCap *big.Int, input []byte, accesses *ethtypes.AccessList,
|
||||
) *MsgEthereumTx {
|
||||
return newMsgEthereumTx(chainID, nonce, nil, amount, gasLimit, gasPrice, input, accesses)
|
||||
return newMsgEthereumTx(chainID, nonce, nil, amount, gasLimit, gasPrice, gasFeeCap, gasTipCap, input, accesses)
|
||||
}
|
||||
|
||||
func newMsgEthereumTx(
|
||||
chainID *big.Int, nonce uint64, to *common.Address, amount *big.Int,
|
||||
gasLimit uint64, gasPrice *big.Int, input []byte, accesses *ethtypes.AccessList,
|
||||
gasLimit uint64, gasPrice, gasFeeCap, gasTipCap *big.Int, input []byte, accesses *ethtypes.AccessList,
|
||||
) *MsgEthereumTx {
|
||||
var (
|
||||
cid, amt, gp *sdk.Int
|
||||
@@ -77,7 +77,8 @@ func newMsgEthereumTx(
|
||||
gp = &gasPriceInt
|
||||
}
|
||||
|
||||
if accesses == nil {
|
||||
switch {
|
||||
case accesses == nil:
|
||||
txData = &LegacyTx{
|
||||
Nonce: nonce,
|
||||
To: toAddr,
|
||||
@@ -86,7 +87,22 @@ func newMsgEthereumTx(
|
||||
GasPrice: gp,
|
||||
Data: input,
|
||||
}
|
||||
} else {
|
||||
case accesses != nil && gasFeeCap != nil && gasTipCap != nil:
|
||||
gtc := sdk.NewIntFromBigInt(gasTipCap)
|
||||
gfc := sdk.NewIntFromBigInt(gasTipCap)
|
||||
|
||||
txData = &DynamicFeeTx{
|
||||
ChainID: cid,
|
||||
Nonce: nonce,
|
||||
To: toAddr,
|
||||
Amount: amt,
|
||||
GasLimit: gasLimit,
|
||||
GasTipCap: >c,
|
||||
GasFeeCap: &gfc,
|
||||
Data: input,
|
||||
Accesses: NewAccessList(accesses),
|
||||
}
|
||||
case accesses != nil:
|
||||
txData = &AccessListTx{
|
||||
ChainID: cid,
|
||||
Nonce: nonce,
|
||||
@@ -97,6 +113,7 @@ func newMsgEthereumTx(
|
||||
Data: input,
|
||||
Accesses: NewAccessList(accesses),
|
||||
}
|
||||
default:
|
||||
}
|
||||
|
||||
dataAny, err := PackTxData(txData)
|
||||
@@ -237,8 +254,8 @@ func (msg MsgEthereumTx) AsTransaction() *ethtypes.Transaction {
|
||||
}
|
||||
|
||||
// AsMessage creates an Ethereum core.Message from the msg fields
|
||||
func (msg MsgEthereumTx) AsMessage(signer ethtypes.Signer) (core.Message, error) {
|
||||
return msg.AsTransaction().AsMessage(signer)
|
||||
func (msg MsgEthereumTx) AsMessage(signer ethtypes.Signer, baseFee *big.Int) (core.Message, error) {
|
||||
return msg.AsTransaction().AsMessage(signer, baseFee)
|
||||
}
|
||||
|
||||
// GetSender extracts the sender address from the signature values using the latest signer for the given chainID.
|
||||
|
||||
@@ -39,7 +39,7 @@ func (suite *MsgsTestSuite) SetupTest() {
|
||||
}
|
||||
|
||||
func (suite *MsgsTestSuite) TestMsgEthereumTx_Constructor() {
|
||||
msg := NewTx(nil, 0, &suite.to, nil, 100000, nil, []byte("test"), nil)
|
||||
msg := NewTx(nil, 0, &suite.to, nil, 100000, nil, nil, nil, []byte("test"), nil)
|
||||
|
||||
// suite.Require().Equal(msg.Data.To, suite.to.Hex())
|
||||
suite.Require().Equal(msg.Route(), RouterKey)
|
||||
@@ -49,7 +49,7 @@ func (suite *MsgsTestSuite) TestMsgEthereumTx_Constructor() {
|
||||
suite.Require().Panics(func() { msg.GetSigners() })
|
||||
suite.Require().Panics(func() { msg.GetSignBytes() })
|
||||
|
||||
msg = NewTxContract(nil, 0, nil, 100000, nil, []byte("test"), nil)
|
||||
msg = NewTxContract(nil, 0, nil, 100000, nil, nil, nil, []byte("test"), nil)
|
||||
suite.Require().NotNil(msg)
|
||||
// suite.Require().Empty(msg.Data.To)
|
||||
// suite.Require().Nil(msg.To())
|
||||
@@ -103,7 +103,7 @@ func (suite *MsgsTestSuite) TestMsgEthereumTx_ValidateBasic() {
|
||||
gasPrice = tc.gasPrice.BigInt()
|
||||
}
|
||||
|
||||
tx := NewTx(chainID, 1, &to, amount, 1000, gasPrice, nil, tc.accessList)
|
||||
tx := NewTx(chainID, 1, &to, amount, 1000, gasPrice, nil, nil, nil, tc.accessList)
|
||||
tx.From = tc.from
|
||||
|
||||
err := tx.ValidateBasic()
|
||||
@@ -126,42 +126,42 @@ func (suite *MsgsTestSuite) TestMsgEthereumTx_Sign() {
|
||||
}{
|
||||
{
|
||||
"pass - EIP2930 signer",
|
||||
NewTx(suite.chainID, 0, &suite.to, nil, 100000, nil, []byte("test"), &types.AccessList{}),
|
||||
NewTx(suite.chainID, 0, &suite.to, nil, 100000, nil, nil, nil, []byte("test"), &types.AccessList{}),
|
||||
types.NewEIP2930Signer(suite.chainID),
|
||||
func(tx *MsgEthereumTx) { tx.From = suite.from.Hex() },
|
||||
true,
|
||||
},
|
||||
{
|
||||
"pass - EIP155 signer",
|
||||
NewTx(suite.chainID, 0, &suite.to, nil, 100000, nil, []byte("test"), nil),
|
||||
NewTx(suite.chainID, 0, &suite.to, nil, 100000, nil, nil, nil, []byte("test"), nil),
|
||||
types.NewEIP155Signer(suite.chainID),
|
||||
func(tx *MsgEthereumTx) { tx.From = suite.from.Hex() },
|
||||
true,
|
||||
},
|
||||
{
|
||||
"pass - Homestead signer",
|
||||
NewTx(suite.chainID, 0, &suite.to, nil, 100000, nil, []byte("test"), nil),
|
||||
NewTx(suite.chainID, 0, &suite.to, nil, 100000, nil, nil, nil, []byte("test"), nil),
|
||||
types.HomesteadSigner{},
|
||||
func(tx *MsgEthereumTx) { tx.From = suite.from.Hex() },
|
||||
true,
|
||||
},
|
||||
{
|
||||
"pass - Frontier signer",
|
||||
NewTx(suite.chainID, 0, &suite.to, nil, 100000, nil, []byte("test"), nil),
|
||||
NewTx(suite.chainID, 0, &suite.to, nil, 100000, nil, nil, nil, []byte("test"), nil),
|
||||
types.FrontierSigner{},
|
||||
func(tx *MsgEthereumTx) { tx.From = suite.from.Hex() },
|
||||
true,
|
||||
},
|
||||
{
|
||||
"no from address ",
|
||||
NewTx(suite.chainID, 0, &suite.to, nil, 100000, nil, []byte("test"), &types.AccessList{}),
|
||||
NewTx(suite.chainID, 0, &suite.to, nil, 100000, nil, nil, nil, []byte("test"), &types.AccessList{}),
|
||||
types.NewEIP2930Signer(suite.chainID),
|
||||
func(tx *MsgEthereumTx) { tx.From = "" },
|
||||
false,
|
||||
},
|
||||
{
|
||||
"from address ≠ signer address",
|
||||
NewTx(suite.chainID, 0, &suite.to, nil, 100000, nil, []byte("test"), &types.AccessList{}),
|
||||
NewTx(suite.chainID, 0, &suite.to, nil, 100000, nil, nil, nil, []byte("test"), &types.AccessList{}),
|
||||
types.NewEIP2930Signer(suite.chainID),
|
||||
func(tx *MsgEthereumTx) { tx.From = suite.to.Hex() },
|
||||
false,
|
||||
|
||||
@@ -26,7 +26,7 @@ var (
|
||||
// AvailableExtraEIPs define the list of all EIPs that can be enabled by the EVM interpreter. These EIPs are applied in
|
||||
// order and can override the instruction sets from the latest hard fork enabled by the ChainConfig. For more info
|
||||
// check: https://github.com/ethereum/go-ethereum/blob/v1.10.4/core/vm/interpreter.go#L122
|
||||
AvailableExtraEIPs = []int64{1344, 1884, 2200, 2929}
|
||||
AvailableExtraEIPs = []int64{1344, 1884, 2200, 2929, 3198, 3529}
|
||||
)
|
||||
|
||||
// ParamKeyTable returns the parameter key table.
|
||||
|
||||
@@ -1,9 +1,19 @@
|
||||
package types
|
||||
|
||||
import (
|
||||
"math/big"
|
||||
|
||||
codectypes "github.com/cosmos/cosmos-sdk/codec/types"
|
||||
)
|
||||
|
||||
func (cr EthCallRequest) GetBaseFee() *big.Int {
|
||||
if cr.BaseFee == nil {
|
||||
return nil
|
||||
}
|
||||
|
||||
return cr.BaseFee.BigInt()
|
||||
}
|
||||
|
||||
// UnpackInterfaces implements UnpackInterfacesMesssage.UnpackInterfaces
|
||||
func (m QueryTraceTxRequest) UnpackInterfaces(unpacker codectypes.AnyUnpacker) error {
|
||||
return m.Msg.UnpackInterfaces(unpacker)
|
||||
|
||||
Generated
+129
-72
@@ -6,6 +6,7 @@ package types
|
||||
import (
|
||||
context "context"
|
||||
fmt "fmt"
|
||||
github_com_cosmos_cosmos_sdk_types "github.com/cosmos/cosmos-sdk/types"
|
||||
query "github.com/cosmos/cosmos-sdk/types/query"
|
||||
_ "github.com/gogo/protobuf/gogoproto"
|
||||
grpc1 "github.com/gogo/protobuf/grpc"
|
||||
@@ -787,6 +788,8 @@ type EthCallRequest struct {
|
||||
Args []byte `protobuf:"bytes,1,opt,name=args,proto3" json:"args,omitempty"`
|
||||
// the default gas cap to be used
|
||||
GasCap uint64 `protobuf:"varint,2,opt,name=gas_cap,json=gasCap,proto3" json:"gas_cap,omitempty"`
|
||||
// header base fee used to generate the transaction
|
||||
BaseFee *github_com_cosmos_cosmos_sdk_types.Int `protobuf:"bytes,3,opt,name=base_fee,json=baseFee,proto3,customtype=github.com/cosmos/cosmos-sdk/types.Int" json:"base_fee,omitempty"`
|
||||
}
|
||||
|
||||
func (m *EthCallRequest) Reset() { *m = EthCallRequest{} }
|
||||
@@ -1018,78 +1021,80 @@ func init() {
|
||||
func init() { proto.RegisterFile("ethermint/evm/v1/query.proto", fileDescriptor_e15a877459347994) }
|
||||
|
||||
var fileDescriptor_e15a877459347994 = []byte{
|
||||
// 1123 bytes of a gzipped FileDescriptorProto
|
||||
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xac, 0x96, 0x4d, 0x6f, 0x1b, 0x45,
|
||||
0x18, 0xc7, 0xbd, 0x89, 0x13, 0xa7, 0x8f, 0x93, 0x12, 0xa6, 0x41, 0x24, 0x4b, 0xea, 0xa4, 0x9b,
|
||||
0xe6, 0x3d, 0xda, 0xc5, 0x06, 0x55, 0xa2, 0x12, 0x82, 0x24, 0x0a, 0x05, 0xb5, 0x45, 0xc5, 0x44,
|
||||
0x1c, 0xb8, 0x58, 0xe3, 0xf5, 0xb0, 0xb6, 0x6a, 0xef, 0xb8, 0x3b, 0x63, 0xe3, 0xb4, 0x84, 0x03,
|
||||
0x12, 0x15, 0xa8, 0x17, 0x24, 0xee, 0xa8, 0x17, 0xce, 0x7c, 0x8d, 0x1e, 0x2b, 0x71, 0xe1, 0x84,
|
||||
0x50, 0x82, 0x10, 0x1f, 0x03, 0xcd, 0xcb, 0xda, 0xbb, 0x5e, 0x6f, 0x9d, 0xa2, 0xde, 0xe6, 0xe5,
|
||||
0x99, 0xe7, 0xff, 0x9b, 0x99, 0x67, 0xff, 0xb3, 0xb0, 0x4c, 0x78, 0x9d, 0x04, 0xad, 0x86, 0xcf,
|
||||
0x1d, 0xd2, 0x6d, 0x39, 0xdd, 0xa2, 0xf3, 0xa0, 0x43, 0x82, 0x13, 0xbb, 0x1d, 0x50, 0x4e, 0xd1,
|
||||
0x7c, 0x7f, 0xd6, 0x26, 0xdd, 0x96, 0xdd, 0x2d, 0x9a, 0x0b, 0x1e, 0xf5, 0xa8, 0x9c, 0x74, 0x44,
|
||||
0x4b, 0xc5, 0x99, 0x3b, 0x2e, 0x65, 0x2d, 0xca, 0x9c, 0x2a, 0x66, 0x44, 0x25, 0x70, 0xba, 0xc5,
|
||||
0x2a, 0xe1, 0xb8, 0xe8, 0xb4, 0xb1, 0xd7, 0xf0, 0x31, 0x6f, 0x50, 0x5f, 0xc7, 0x2e, 0x7b, 0x94,
|
||||
0x7a, 0x4d, 0xe2, 0xe0, 0x76, 0xc3, 0xc1, 0xbe, 0x4f, 0xb9, 0x9c, 0x64, 0x7a, 0xd6, 0x4c, 0xf0,
|
||||
0x08, 0x61, 0x35, 0xb7, 0x94, 0x98, 0xe3, 0x3d, 0x35, 0x65, 0xbd, 0x07, 0x57, 0x3e, 0x13, 0xb2,
|
||||
0xfb, 0xae, 0x4b, 0x3b, 0x3e, 0x2f, 0x93, 0x07, 0x1d, 0xc2, 0x38, 0x5a, 0x84, 0x1c, 0xae, 0xd5,
|
||||
0x02, 0xc2, 0xd8, 0xa2, 0xb1, 0x6a, 0x6c, 0x5d, 0x2a, 0x87, 0xdd, 0x9b, 0x33, 0x3f, 0x3c, 0x5d,
|
||||
0xc9, 0xfc, 0xfb, 0x74, 0x25, 0x63, 0xb9, 0xb0, 0x10, 0x5f, 0xca, 0xda, 0xd4, 0x67, 0x44, 0xac,
|
||||
0xad, 0xe2, 0x26, 0xf6, 0x5d, 0x12, 0xae, 0xd5, 0x5d, 0xf4, 0x16, 0x5c, 0x72, 0x69, 0x8d, 0x54,
|
||||
0xea, 0x98, 0xd5, 0x17, 0x27, 0xe4, 0xdc, 0x8c, 0x18, 0xf8, 0x18, 0xb3, 0x3a, 0x5a, 0x80, 0x29,
|
||||
0x9f, 0x8a, 0x45, 0x93, 0xab, 0xc6, 0x56, 0xb6, 0xac, 0x3a, 0xd6, 0x07, 0xb0, 0x24, 0x45, 0x0e,
|
||||
0xe5, 0x39, 0xfd, 0x0f, 0xca, 0xc7, 0x06, 0x98, 0xa3, 0x32, 0x68, 0xd8, 0x75, 0xb8, 0xac, 0xae,
|
||||
0xa0, 0x12, 0xcf, 0x34, 0xa7, 0x46, 0xf7, 0xd5, 0x20, 0x32, 0x61, 0x86, 0x09, 0x51, 0xc1, 0x37,
|
||||
0x21, 0xf9, 0xfa, 0x7d, 0x91, 0x02, 0xab, 0xac, 0x15, 0xbf, 0xd3, 0xaa, 0x92, 0x40, 0xef, 0x60,
|
||||
0x4e, 0x8f, 0x7e, 0x2a, 0x07, 0xad, 0xdb, 0xb0, 0x2c, 0x39, 0xbe, 0xc0, 0xcd, 0x46, 0x0d, 0x73,
|
||||
0x1a, 0x0c, 0x6d, 0xe6, 0x1a, 0xcc, 0xba, 0xd4, 0x1f, 0xe6, 0xc8, 0x8b, 0xb1, 0xfd, 0xc4, 0xae,
|
||||
0x9e, 0x18, 0x70, 0x35, 0x25, 0x9b, 0xde, 0xd8, 0x26, 0xbc, 0x16, 0x52, 0xc5, 0x33, 0x86, 0xb0,
|
||||
0xaf, 0x70, 0x6b, 0x61, 0x11, 0x1d, 0xa8, 0x7b, 0x7e, 0x99, 0xeb, 0x79, 0x5b, 0x17, 0x51, 0x7f,
|
||||
0xe9, 0xb8, 0x22, 0xb2, 0x6e, 0x6b, 0xb1, 0xcf, 0x39, 0x0d, 0xb0, 0x37, 0x5e, 0x0c, 0xcd, 0xc3,
|
||||
0xe4, 0x7d, 0x72, 0xa2, 0xeb, 0x4d, 0x34, 0x23, 0xf2, 0x7b, 0x5a, 0xbe, 0x9f, 0x4c, 0xcb, 0x2f,
|
||||
0xc0, 0x54, 0x17, 0x37, 0x3b, 0xa1, 0xb8, 0xea, 0x58, 0x37, 0x60, 0x5e, 0x97, 0x52, 0xed, 0xa5,
|
||||
0x36, 0xb9, 0x09, 0xaf, 0x47, 0xd6, 0x69, 0x09, 0x04, 0x59, 0x51, 0xfb, 0x72, 0xd5, 0x6c, 0x59,
|
||||
0xb6, 0xad, 0x87, 0x80, 0x64, 0xe0, 0x71, 0xef, 0x0e, 0xf5, 0x58, 0x28, 0x81, 0x20, 0x2b, 0xbf,
|
||||
0x18, 0x95, 0x5f, 0xb6, 0xd1, 0x47, 0x00, 0x03, 0x83, 0x90, 0x7b, 0xcb, 0x97, 0x36, 0x6c, 0x55,
|
||||
0xb4, 0xb6, 0x70, 0x13, 0x5b, 0xd9, 0x91, 0x76, 0x13, 0xfb, 0xde, 0xe0, 0xa8, 0xca, 0x91, 0x95,
|
||||
0x11, 0xc8, 0x1f, 0x0d, 0x7d, 0xb0, 0xa1, 0xb8, 0xe6, 0xdc, 0x86, 0x6c, 0x93, 0x7a, 0x62, 0x77,
|
||||
0x93, 0x5b, 0xf9, 0xd2, 0x1b, 0xf6, 0xb0, 0xb3, 0xd9, 0x77, 0xa8, 0x57, 0x96, 0x21, 0xe8, 0xd6,
|
||||
0x08, 0xa8, 0xcd, 0xb1, 0x50, 0x4a, 0x27, 0x4a, 0x65, 0x2d, 0xe8, 0x73, 0xb8, 0x87, 0x03, 0xdc,
|
||||
0x0a, 0xcf, 0xc1, 0xba, 0xab, 0x01, 0xc3, 0x51, 0x0d, 0x78, 0x03, 0xa6, 0xdb, 0x72, 0x44, 0x1e,
|
||||
0x50, 0xbe, 0xb4, 0x98, 0x44, 0x54, 0x2b, 0x0e, 0xb2, 0xcf, 0xfe, 0x5c, 0xc9, 0x94, 0x75, 0xb4,
|
||||
0xf5, 0x3e, 0x5c, 0x3e, 0xe2, 0xf5, 0x43, 0xdc, 0x6c, 0x46, 0x0e, 0x1a, 0x07, 0x1e, 0x0b, 0xaf,
|
||||
0x44, 0xb4, 0xd1, 0x9b, 0x90, 0xf3, 0x30, 0xab, 0xb8, 0xb8, 0xad, 0xbf, 0x8e, 0x69, 0x0f, 0xb3,
|
||||
0x43, 0xdc, 0xb6, 0x36, 0xe1, 0xca, 0x11, 0xe3, 0x8d, 0x16, 0xe6, 0xe4, 0x16, 0x1e, 0xd0, 0xcc,
|
||||
0xc3, 0xa4, 0x87, 0x55, 0x8a, 0x6c, 0x59, 0x34, 0xad, 0x5f, 0xfb, 0x07, 0x1b, 0x60, 0x97, 0x1c,
|
||||
0xf7, 0x42, 0xb5, 0x22, 0x4c, 0xb6, 0x98, 0xa7, 0xa1, 0x57, 0x92, 0xd0, 0x77, 0x99, 0x77, 0x24,
|
||||
0xc6, 0x48, 0xa7, 0x75, 0xdc, 0x2b, 0x8b, 0x58, 0xb4, 0x04, 0x33, 0xbc, 0x57, 0x69, 0xf8, 0x35,
|
||||
0xd2, 0xd3, 0x34, 0x39, 0xde, 0xfb, 0x44, 0x74, 0xd1, 0x87, 0x30, 0xcb, 0x45, 0xfe, 0x8a, 0x4b,
|
||||
0xfd, 0xaf, 0x1a, 0x9e, 0xfc, 0x50, 0xf3, 0xa5, 0xab, 0xc9, 0xb4, 0x92, 0xe2, 0x50, 0x06, 0x95,
|
||||
0xf3, 0x7c, 0xd0, 0xb1, 0x76, 0xf4, 0xb7, 0xd0, 0xc7, 0x1c, 0x14, 0x6a, 0x0d, 0x73, 0x1c, 0x9e,
|
||||
0x8a, 0x68, 0x97, 0xfe, 0x01, 0x98, 0x92, 0xc1, 0xe8, 0x7b, 0x03, 0x72, 0xda, 0x7b, 0xd0, 0x7a,
|
||||
0x52, 0x6d, 0xc4, 0xe3, 0x62, 0x6e, 0x8c, 0x0b, 0x53, 0xc2, 0xd6, 0xee, 0x77, 0xbf, 0xff, 0xfd,
|
||||
0xf3, 0xc4, 0x3a, 0x5a, 0x73, 0x12, 0xef, 0x97, 0xf6, 0x1f, 0xe7, 0x91, 0xfe, 0xd8, 0x4e, 0xd1,
|
||||
0x2f, 0x06, 0xcc, 0xc5, 0x2c, 0x1e, 0xed, 0xa6, 0xc8, 0x8c, 0x7a, 0x4a, 0xcc, 0xbd, 0x8b, 0x05,
|
||||
0x6b, 0xb2, 0x92, 0x24, 0xdb, 0x43, 0x3b, 0x49, 0xb2, 0xf0, 0x35, 0x49, 0x00, 0xfe, 0x66, 0xc0,
|
||||
0xfc, 0xb0, 0x5b, 0x23, 0x3b, 0x45, 0x36, 0xe5, 0x91, 0x30, 0x9d, 0x0b, 0xc7, 0x6b, 0xd2, 0x9b,
|
||||
0x92, 0xf4, 0x5d, 0x54, 0x4a, 0x92, 0x76, 0xc3, 0x35, 0x03, 0xd8, 0xe8, 0x03, 0x74, 0x8a, 0x1e,
|
||||
0x1b, 0x90, 0xd3, 0xbe, 0x9c, 0x7a, 0xb5, 0x71, 0xcb, 0x4f, 0xbd, 0xda, 0x21, 0x7b, 0xb7, 0xf6,
|
||||
0x24, 0xd6, 0x06, 0xba, 0x9e, 0xc4, 0xd2, 0x3e, 0xcf, 0x22, 0x47, 0xf7, 0xc4, 0x80, 0x9c, 0x76,
|
||||
0xe8, 0x54, 0x90, 0xf8, 0x73, 0x90, 0x0a, 0x32, 0x64, 0xf4, 0x56, 0x51, 0x82, 0xec, 0xa2, 0xed,
|
||||
0x24, 0x08, 0x53, 0xa1, 0x03, 0x0e, 0xe7, 0xd1, 0x7d, 0x72, 0x72, 0x8a, 0x1e, 0x42, 0x56, 0x18,
|
||||
0x39, 0xb2, 0x52, 0x4b, 0xa6, 0xff, 0x3a, 0x98, 0x6b, 0x2f, 0x8c, 0xd1, 0x0c, 0xdb, 0x92, 0x61,
|
||||
0x0d, 0x5d, 0x1b, 0x55, 0x4d, 0xb5, 0xd8, 0x49, 0x7c, 0x0d, 0xd3, 0xca, 0xcb, 0xd0, 0xf5, 0x94,
|
||||
0xcc, 0x31, 0xcb, 0x34, 0xd7, 0xc7, 0x44, 0x69, 0x82, 0x55, 0x49, 0x60, 0xa2, 0xc5, 0x24, 0x81,
|
||||
0x32, 0x4b, 0xd4, 0x83, 0x9c, 0x36, 0x4b, 0xb4, 0x9a, 0xcc, 0x19, 0xf7, 0x51, 0x73, 0x73, 0x9c,
|
||||
0x99, 0x85, 0xba, 0x96, 0xd4, 0x5d, 0x46, 0x66, 0x52, 0x97, 0xf0, 0x7a, 0xc5, 0x15, 0x72, 0xdf,
|
||||
0x42, 0x3e, 0xe2, 0xb3, 0x17, 0x50, 0x1f, 0xb1, 0xe7, 0x11, 0x46, 0x6d, 0x6d, 0x48, 0xed, 0x55,
|
||||
0x54, 0x18, 0xa1, 0xad, 0xc3, 0x2b, 0x1e, 0x66, 0xe8, 0x1b, 0xc8, 0x69, 0x47, 0x4c, 0xad, 0xbd,
|
||||
0xb8, 0xb1, 0xa7, 0xd6, 0xde, 0x90, 0xb1, 0xbe, 0x68, 0xf7, 0xca, 0xca, 0x79, 0xef, 0xe0, 0xe0,
|
||||
0xd9, 0x59, 0xc1, 0x78, 0x7e, 0x56, 0x30, 0xfe, 0x3a, 0x2b, 0x18, 0x3f, 0x9d, 0x17, 0x32, 0xcf,
|
||||
0xcf, 0x0b, 0x99, 0x3f, 0xce, 0x0b, 0x99, 0x2f, 0xb7, 0xbc, 0x06, 0xaf, 0x77, 0xaa, 0xb6, 0x4b,
|
||||
0x5b, 0x0e, 0xaf, 0xe3, 0x80, 0x35, 0x58, 0x24, 0x4f, 0x4f, 0x66, 0xe2, 0x27, 0x6d, 0xc2, 0xaa,
|
||||
0xd3, 0xf2, 0x57, 0xff, 0x9d, 0xff, 0x02, 0x00, 0x00, 0xff, 0xff, 0x55, 0x07, 0x68, 0x0c, 0xb3,
|
||||
0x0c, 0x00, 0x00,
|
||||
// 1167 bytes of a gzipped FileDescriptorProto
|
||||
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xac, 0x57, 0x4d, 0x6f, 0x1b, 0x55,
|
||||
0x17, 0xf6, 0x24, 0x4e, 0x9c, 0x1c, 0x27, 0x7d, 0xf3, 0xde, 0x06, 0x91, 0x0c, 0xa9, 0x93, 0x4e,
|
||||
0x9a, 0xef, 0x30, 0x83, 0x0d, 0xaa, 0x44, 0x37, 0x90, 0x44, 0x69, 0xa9, 0xda, 0xa2, 0x62, 0x22,
|
||||
0x16, 0x6c, 0xac, 0xeb, 0xf1, 0xed, 0xd8, 0x8a, 0x3d, 0xd7, 0x9d, 0x7b, 0x6d, 0x9c, 0x96, 0xb0,
|
||||
0x40, 0x50, 0x81, 0xba, 0x41, 0x62, 0x8f, 0xba, 0x61, 0xcd, 0xdf, 0xe8, 0xb2, 0x12, 0x1b, 0xc4,
|
||||
0xa2, 0x42, 0x09, 0x42, 0xfc, 0x0c, 0x74, 0x3f, 0xc6, 0x1e, 0x7b, 0x3c, 0x75, 0x8a, 0x58, 0xf9,
|
||||
0x7e, 0x9c, 0x73, 0x9e, 0xe7, 0x9c, 0x7b, 0xe6, 0x39, 0x32, 0x2c, 0x11, 0x5e, 0x25, 0x41, 0xa3,
|
||||
0xe6, 0x73, 0x87, 0xb4, 0x1b, 0x4e, 0x3b, 0xef, 0x3c, 0x6c, 0x91, 0xe0, 0xc4, 0x6e, 0x06, 0x94,
|
||||
0x53, 0x34, 0xd7, 0xbd, 0xb5, 0x49, 0xbb, 0x61, 0xb7, 0xf3, 0xe6, 0xbc, 0x47, 0x3d, 0x2a, 0x2f,
|
||||
0x1d, 0xb1, 0x52, 0x76, 0xe6, 0xb6, 0x4b, 0x59, 0x83, 0x32, 0xa7, 0x8c, 0x19, 0x51, 0x01, 0x9c,
|
||||
0x76, 0xbe, 0x4c, 0x38, 0xce, 0x3b, 0x4d, 0xec, 0xd5, 0x7c, 0xcc, 0x6b, 0xd4, 0xd7, 0xb6, 0x4b,
|
||||
0x1e, 0xa5, 0x5e, 0x9d, 0x38, 0xb8, 0x59, 0x73, 0xb0, 0xef, 0x53, 0x2e, 0x2f, 0x99, 0xbe, 0x35,
|
||||
0x63, 0x7c, 0x04, 0xb0, 0xba, 0x5b, 0x8c, 0xdd, 0xf1, 0x8e, 0xba, 0xb2, 0xde, 0x87, 0xcb, 0x9f,
|
||||
0x08, 0xd8, 0x3d, 0xd7, 0xa5, 0x2d, 0x9f, 0x17, 0xc9, 0xc3, 0x16, 0x61, 0x1c, 0x2d, 0x40, 0x06,
|
||||
0x57, 0x2a, 0x01, 0x61, 0x6c, 0xc1, 0x58, 0x31, 0x36, 0xa7, 0x8b, 0xe1, 0xf6, 0xc6, 0xd4, 0x77,
|
||||
0xcf, 0x96, 0x53, 0x7f, 0x3f, 0x5b, 0x4e, 0x59, 0x2e, 0xcc, 0xf7, 0xbb, 0xb2, 0x26, 0xf5, 0x19,
|
||||
0x11, 0xbe, 0x65, 0x5c, 0xc7, 0xbe, 0x4b, 0x42, 0x5f, 0xbd, 0x45, 0x6f, 0xc1, 0xb4, 0x4b, 0x2b,
|
||||
0xa4, 0x54, 0xc5, 0xac, 0xba, 0x30, 0x26, 0xef, 0xa6, 0xc4, 0xc1, 0x47, 0x98, 0x55, 0xd1, 0x3c,
|
||||
0x4c, 0xf8, 0x54, 0x38, 0x8d, 0xaf, 0x18, 0x9b, 0xe9, 0xa2, 0xda, 0x58, 0x1f, 0xc0, 0xa2, 0x04,
|
||||
0x39, 0x90, 0x75, 0xfa, 0x17, 0x2c, 0x9f, 0x18, 0x60, 0x0e, 0x8b, 0xa0, 0xc9, 0xae, 0xc1, 0x25,
|
||||
0xf5, 0x04, 0xa5, 0xfe, 0x48, 0xb3, 0xea, 0x74, 0x4f, 0x1d, 0x22, 0x13, 0xa6, 0x98, 0x00, 0x15,
|
||||
0xfc, 0xc6, 0x24, 0xbf, 0xee, 0x5e, 0x84, 0xc0, 0x2a, 0x6a, 0xc9, 0x6f, 0x35, 0xca, 0x24, 0xd0,
|
||||
0x19, 0xcc, 0xea, 0xd3, 0x8f, 0xe5, 0xa1, 0x75, 0x07, 0x96, 0x24, 0x8f, 0xcf, 0x70, 0xbd, 0x56,
|
||||
0xc1, 0x9c, 0x06, 0x03, 0xc9, 0x5c, 0x85, 0x19, 0x97, 0xfa, 0x83, 0x3c, 0xb2, 0xe2, 0x6c, 0x2f,
|
||||
0x96, 0xd5, 0x53, 0x03, 0xae, 0x24, 0x44, 0xd3, 0x89, 0x6d, 0xc0, 0xff, 0x42, 0x56, 0xfd, 0x11,
|
||||
0x43, 0xb2, 0xff, 0x61, 0x6a, 0x61, 0x13, 0xed, 0xab, 0x77, 0x7e, 0x9d, 0xe7, 0x79, 0x47, 0x37,
|
||||
0x51, 0xd7, 0x75, 0x54, 0x13, 0x59, 0x77, 0x34, 0xd8, 0xa7, 0x9c, 0x06, 0xd8, 0x1b, 0x0d, 0x86,
|
||||
0xe6, 0x60, 0xfc, 0x98, 0x9c, 0xe8, 0x7e, 0x13, 0xcb, 0x08, 0xfc, 0xae, 0x86, 0xef, 0x06, 0xd3,
|
||||
0xf0, 0xf3, 0x30, 0xd1, 0xc6, 0xf5, 0x56, 0x08, 0xae, 0x36, 0xd6, 0x75, 0x98, 0xd3, 0xad, 0x54,
|
||||
0x79, 0xad, 0x24, 0x37, 0xe0, 0xff, 0x11, 0x3f, 0x0d, 0x81, 0x20, 0x2d, 0x7a, 0x5f, 0x7a, 0xcd,
|
||||
0x14, 0xe5, 0xda, 0x7a, 0x04, 0x48, 0x1a, 0x1e, 0x75, 0xee, 0x52, 0x8f, 0x85, 0x10, 0x08, 0xd2,
|
||||
0xf2, 0x8b, 0x51, 0xf1, 0xe5, 0x1a, 0xdd, 0x04, 0xe8, 0x09, 0x84, 0xcc, 0x2d, 0x5b, 0x58, 0xb7,
|
||||
0x55, 0xd3, 0xda, 0x42, 0x4d, 0x6c, 0x25, 0x47, 0x5a, 0x4d, 0xec, 0xfb, 0xbd, 0x52, 0x15, 0x23,
|
||||
0x9e, 0x11, 0x92, 0xdf, 0x1b, 0xba, 0xb0, 0x21, 0xb8, 0xe6, 0xb9, 0x05, 0xe9, 0x3a, 0xf5, 0x44,
|
||||
0x76, 0xe3, 0x9b, 0xd9, 0xc2, 0x1b, 0xf6, 0xa0, 0xb2, 0xd9, 0x77, 0xa9, 0x57, 0x94, 0x26, 0xe8,
|
||||
0xd6, 0x10, 0x52, 0x1b, 0x23, 0x49, 0x29, 0x9c, 0x28, 0x2b, 0x6b, 0x5e, 0xd7, 0xe1, 0x3e, 0x0e,
|
||||
0x70, 0x23, 0xac, 0x83, 0x75, 0x4f, 0x13, 0x0c, 0x4f, 0x35, 0xc1, 0xeb, 0x30, 0xd9, 0x94, 0x27,
|
||||
0xb2, 0x40, 0xd9, 0xc2, 0x42, 0x9c, 0xa2, 0xf2, 0xd8, 0x4f, 0x3f, 0x7f, 0xb9, 0x9c, 0x2a, 0x6a,
|
||||
0x6b, 0xeb, 0x1b, 0x03, 0x2e, 0x1d, 0xf2, 0xea, 0x01, 0xae, 0xd7, 0x23, 0x95, 0xc6, 0x81, 0xc7,
|
||||
0xc2, 0x37, 0x11, 0x6b, 0xf4, 0x26, 0x64, 0x3c, 0xcc, 0x4a, 0x2e, 0x6e, 0xea, 0xcf, 0x63, 0xd2,
|
||||
0xc3, 0xec, 0x00, 0x37, 0xd1, 0x21, 0x4c, 0x89, 0x9c, 0x4a, 0x0f, 0x88, 0xd2, 0xac, 0xe9, 0xfd,
|
||||
0xed, 0xdf, 0x5f, 0x2e, 0xaf, 0x7b, 0x35, 0x5e, 0x6d, 0x95, 0x6d, 0x97, 0x36, 0x1c, 0x2d, 0xee,
|
||||
0xea, 0xe7, 0x6d, 0x56, 0x39, 0x76, 0xf8, 0x49, 0x93, 0x30, 0xfb, 0xb6, 0xcf, 0x45, 0x3f, 0x33,
|
||||
0x72, 0x93, 0x10, 0x6b, 0x03, 0x2e, 0x1f, 0x32, 0x5e, 0x6b, 0x60, 0x4e, 0x6e, 0xe1, 0x5e, 0x56,
|
||||
0x73, 0x30, 0xee, 0x61, 0xc5, 0x24, 0x5d, 0x14, 0x4b, 0xeb, 0xe7, 0xee, 0x03, 0x05, 0xd8, 0x25,
|
||||
0x47, 0x9d, 0x90, 0x74, 0x1e, 0xc6, 0x1b, 0xcc, 0xd3, 0xc9, 0x2f, 0xc7, 0x93, 0xbf, 0xc7, 0xbc,
|
||||
0x43, 0x71, 0x46, 0x5a, 0x8d, 0xa3, 0x4e, 0x51, 0xd8, 0xa2, 0x45, 0x98, 0xe2, 0x9d, 0x52, 0xcd,
|
||||
0xaf, 0x90, 0x8e, 0x4e, 0x2a, 0xc3, 0x3b, 0xb7, 0xc5, 0x16, 0x7d, 0x08, 0x33, 0x5c, 0xc4, 0x2f,
|
||||
0xb9, 0xd4, 0x7f, 0x50, 0xf3, 0x64, 0x66, 0xd9, 0xc2, 0x95, 0x78, 0x58, 0xc9, 0xe2, 0x40, 0x1a,
|
||||
0x15, 0xb3, 0xbc, 0xb7, 0xb1, 0xb6, 0xf5, 0x37, 0xd5, 0xa5, 0xd9, 0x6b, 0xf8, 0x0a, 0xe6, 0x38,
|
||||
0x2c, 0xae, 0x58, 0x17, 0xfe, 0x02, 0x98, 0x90, 0xc6, 0xe8, 0x5b, 0x03, 0x32, 0x5a, 0xc3, 0xd0,
|
||||
0x5a, 0x1c, 0x6d, 0xc8, 0x90, 0x32, 0xd7, 0x47, 0x99, 0x29, 0x60, 0x6b, 0xe7, 0xeb, 0x5f, 0xff,
|
||||
0xfc, 0x71, 0x6c, 0x0d, 0xad, 0x3a, 0xb1, 0x39, 0xa8, 0x75, 0xcc, 0x79, 0xac, 0x3f, 0xda, 0x53,
|
||||
0xf4, 0x93, 0x01, 0xb3, 0x7d, 0xa3, 0x02, 0xed, 0x24, 0xc0, 0x0c, 0x1b, 0x49, 0xe6, 0xee, 0xc5,
|
||||
0x8c, 0x35, 0xb3, 0x82, 0x64, 0xb6, 0x8b, 0xb6, 0xe3, 0xcc, 0xc2, 0xa9, 0x14, 0x23, 0xf8, 0x8b,
|
||||
0x01, 0x73, 0x83, 0xaa, 0x8f, 0xec, 0x04, 0xd8, 0x84, 0x61, 0x63, 0x3a, 0x17, 0xb6, 0xd7, 0x4c,
|
||||
0x6f, 0x48, 0xa6, 0xef, 0xa1, 0x42, 0x9c, 0x69, 0x3b, 0xf4, 0xe9, 0x91, 0x8d, 0x0e, 0xb2, 0x53,
|
||||
0xf4, 0xc4, 0x80, 0x8c, 0xd6, 0xf7, 0xc4, 0xa7, 0xed, 0x1f, 0x1d, 0x89, 0x4f, 0x3b, 0x30, 0x26,
|
||||
0xac, 0x5d, 0x49, 0x6b, 0x1d, 0x5d, 0x8b, 0xd3, 0xd2, 0xf3, 0x82, 0x45, 0x4a, 0xf7, 0xd4, 0x80,
|
||||
0x8c, 0x56, 0xfa, 0x44, 0x22, 0xfd, 0x63, 0x25, 0x91, 0xc8, 0xc0, 0xc0, 0xb0, 0xf2, 0x92, 0xc8,
|
||||
0x0e, 0xda, 0x8a, 0x13, 0x61, 0xca, 0xb4, 0xc7, 0xc3, 0x79, 0x7c, 0x4c, 0x4e, 0x4e, 0xd1, 0x23,
|
||||
0x48, 0x8b, 0x81, 0x80, 0xac, 0xc4, 0x96, 0xe9, 0x4e, 0x19, 0x73, 0xf5, 0x95, 0x36, 0x9a, 0xc3,
|
||||
0x96, 0xe4, 0xb0, 0x8a, 0xae, 0x0e, 0xeb, 0xa6, 0x4a, 0x5f, 0x25, 0xbe, 0x80, 0x49, 0xa5, 0x89,
|
||||
0xe8, 0x5a, 0x42, 0xe4, 0x3e, 0xe9, 0x35, 0xd7, 0x46, 0x58, 0x69, 0x06, 0x2b, 0x92, 0x81, 0x89,
|
||||
0x16, 0xe2, 0x0c, 0x94, 0xe8, 0xa2, 0x0e, 0x64, 0xb4, 0xe6, 0xa2, 0x95, 0x78, 0xcc, 0x7e, 0x39,
|
||||
0x36, 0x37, 0x46, 0x89, 0x59, 0x88, 0x6b, 0x49, 0xdc, 0x25, 0x64, 0xc6, 0x71, 0x09, 0xaf, 0x96,
|
||||
0x5c, 0x01, 0xf7, 0x15, 0x64, 0x23, 0x3a, 0x7b, 0x01, 0xf4, 0x21, 0x39, 0x0f, 0x11, 0x6a, 0x6b,
|
||||
0x5d, 0x62, 0xaf, 0xa0, 0xdc, 0x10, 0x6c, 0x6d, 0x5e, 0xf2, 0x30, 0x43, 0x5f, 0x42, 0x46, 0x2b,
|
||||
0x62, 0x62, 0xef, 0xf5, 0x0b, 0x7b, 0x62, 0xef, 0x0d, 0x08, 0xeb, 0xab, 0xb2, 0x57, 0x52, 0xce,
|
||||
0x3b, 0xfb, 0xfb, 0xcf, 0xcf, 0x72, 0xc6, 0x8b, 0xb3, 0x9c, 0xf1, 0xc7, 0x59, 0xce, 0xf8, 0xe1,
|
||||
0x3c, 0x97, 0x7a, 0x71, 0x9e, 0x4b, 0xfd, 0x76, 0x9e, 0x4b, 0x7d, 0xbe, 0x19, 0x19, 0x58, 0xbc,
|
||||
0x8a, 0x03, 0x56, 0x63, 0x91, 0x38, 0x1d, 0x19, 0x49, 0x8e, 0xad, 0xf2, 0xa4, 0xfc, 0xcb, 0xf0,
|
||||
0xee, 0x3f, 0x01, 0x00, 0x00, 0xff, 0xff, 0x73, 0x5e, 0xad, 0xda, 0xfb, 0x0c, 0x00, 0x00,
|
||||
}
|
||||
|
||||
// Reference imports to suppress errors if they are not otherwise used.
|
||||
@@ -2086,6 +2091,18 @@ func (m *EthCallRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) {
|
||||
_ = i
|
||||
var l int
|
||||
_ = l
|
||||
if m.BaseFee != nil {
|
||||
{
|
||||
size := m.BaseFee.Size()
|
||||
i -= size
|
||||
if _, err := m.BaseFee.MarshalTo(dAtA[i:]); err != nil {
|
||||
return 0, err
|
||||
}
|
||||
i = encodeVarintQuery(dAtA, i, uint64(size))
|
||||
}
|
||||
i--
|
||||
dAtA[i] = 0x1a
|
||||
}
|
||||
if m.GasCap != 0 {
|
||||
i = encodeVarintQuery(dAtA, i, uint64(m.GasCap))
|
||||
i--
|
||||
@@ -2470,6 +2487,10 @@ func (m *EthCallRequest) Size() (n int) {
|
||||
if m.GasCap != 0 {
|
||||
n += 1 + sovQuery(uint64(m.GasCap))
|
||||
}
|
||||
if m.BaseFee != nil {
|
||||
l = m.BaseFee.Size()
|
||||
n += 1 + l + sovQuery(uint64(l))
|
||||
}
|
||||
return n
|
||||
}
|
||||
|
||||
@@ -4122,6 +4143,42 @@ func (m *EthCallRequest) Unmarshal(dAtA []byte) error {
|
||||
break
|
||||
}
|
||||
}
|
||||
case 3:
|
||||
if wireType != 2 {
|
||||
return fmt.Errorf("proto: wrong wireType = %d for field BaseFee", wireType)
|
||||
}
|
||||
var stringLen uint64
|
||||
for shift := uint(0); ; shift += 7 {
|
||||
if shift >= 64 {
|
||||
return ErrIntOverflowQuery
|
||||
}
|
||||
if iNdEx >= l {
|
||||
return io.ErrUnexpectedEOF
|
||||
}
|
||||
b := dAtA[iNdEx]
|
||||
iNdEx++
|
||||
stringLen |= uint64(b&0x7F) << shift
|
||||
if b < 0x80 {
|
||||
break
|
||||
}
|
||||
}
|
||||
intStringLen := int(stringLen)
|
||||
if intStringLen < 0 {
|
||||
return ErrInvalidLengthQuery
|
||||
}
|
||||
postIndex := iNdEx + intStringLen
|
||||
if postIndex < 0 {
|
||||
return ErrInvalidLengthQuery
|
||||
}
|
||||
if postIndex > l {
|
||||
return io.ErrUnexpectedEOF
|
||||
}
|
||||
var v github_com_cosmos_cosmos_sdk_types.Int
|
||||
m.BaseFee = &v
|
||||
if err := m.BaseFee.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
|
||||
return err
|
||||
}
|
||||
iNdEx = postIndex
|
||||
default:
|
||||
iNdEx = preIndex
|
||||
skippy, err := skipQuery(dAtA[iNdEx:])
|
||||
|
||||
@@ -129,6 +129,13 @@ func NewNoOpTracer() *NoOpTracer {
|
||||
func (dt NoOpTracer) CaptureStart(env *vm.EVM, from, to common.Address, create bool, input []byte, gas uint64, value *big.Int) {
|
||||
}
|
||||
|
||||
// CaptureEnter implements vm.Tracer interface
|
||||
func (dt NoOpTracer) CaptureEnter(typ vm.OpCode, from common.Address, to common.Address, input []byte, gas uint64, value *big.Int) {
|
||||
}
|
||||
|
||||
// CaptureExit implements vm.Tracer interface
|
||||
func (dt NoOpTracer) CaptureExit(output []byte, gasUsed uint64, err error) {}
|
||||
|
||||
// CaptureState implements vm.Tracer interface
|
||||
func (dt NoOpTracer) CaptureState(env *vm.EVM, pc uint64, op vm.OpCode, gas, cost uint64, scope *vm.ScopeContext, rData []byte, depth int, err error) {
|
||||
}
|
||||
|
||||
+131
-60
@@ -3,11 +3,12 @@ package types
|
||||
import (
|
||||
"errors"
|
||||
"fmt"
|
||||
math "math"
|
||||
"math/big"
|
||||
|
||||
sdk "github.com/cosmos/cosmos-sdk/types"
|
||||
"github.com/ethereum/go-ethereum/common"
|
||||
"github.com/ethereum/go-ethereum/common/hexutil"
|
||||
"github.com/ethereum/go-ethereum/common/math"
|
||||
ethtypes "github.com/ethereum/go-ethereum/core/types"
|
||||
)
|
||||
|
||||
@@ -54,26 +55,14 @@ func (args *TransactionArgs) String() string {
|
||||
// This assumes that setTxDefaults has been called.
|
||||
func (args *TransactionArgs) ToTransaction() *MsgEthereumTx {
|
||||
var (
|
||||
input []byte
|
||||
chainID, value, gasPrice *big.Int
|
||||
// maxFeePerGas, maxPriorityFeePerGas *big.Int
|
||||
addr common.Address
|
||||
gas, nonce uint64
|
||||
chainID, value, gasPrice, maxFeePerGas, maxPriorityFeePerGas sdk.Int
|
||||
gas, nonce uint64
|
||||
from, to string
|
||||
)
|
||||
|
||||
// Set sender address or use zero address if none specified.
|
||||
if args.From != nil {
|
||||
addr = *args.From
|
||||
}
|
||||
|
||||
if args.Input != nil {
|
||||
input = *args.Input
|
||||
} else if args.Data != nil {
|
||||
input = *args.Data
|
||||
}
|
||||
|
||||
if args.ChainID != nil {
|
||||
chainID = args.ChainID.ToInt()
|
||||
chainID = sdk.NewIntFromBigInt(args.ChainID.ToInt())
|
||||
}
|
||||
|
||||
if args.Nonce != nil {
|
||||
@@ -85,54 +74,98 @@ func (args *TransactionArgs) ToTransaction() *MsgEthereumTx {
|
||||
}
|
||||
|
||||
if args.GasPrice != nil {
|
||||
gasPrice = args.GasPrice.ToInt()
|
||||
gasPrice = sdk.NewIntFromBigInt(args.GasPrice.ToInt())
|
||||
}
|
||||
|
||||
// if args.MaxFeePerGas != nil {
|
||||
// maxFeePerGas = args.MaxFeePerGas.ToInt()
|
||||
// }
|
||||
if args.MaxFeePerGas != nil {
|
||||
maxFeePerGas = sdk.NewIntFromBigInt(args.MaxFeePerGas.ToInt())
|
||||
}
|
||||
|
||||
// if args.MaxPriorityFeePerGas != nil {
|
||||
// maxPriorityFeePerGas = args.MaxPriorityFeePerGas.ToInt()
|
||||
// }
|
||||
if args.MaxPriorityFeePerGas != nil {
|
||||
maxPriorityFeePerGas = sdk.NewIntFromBigInt(args.MaxPriorityFeePerGas.ToInt())
|
||||
}
|
||||
|
||||
if args.GasPrice != nil {
|
||||
gasPrice = args.GasPrice.ToInt()
|
||||
gasPrice = sdk.NewIntFromBigInt(args.GasPrice.ToInt())
|
||||
}
|
||||
|
||||
if args.Value != nil {
|
||||
value = args.Value.ToInt()
|
||||
value = sdk.NewIntFromBigInt(args.Value.ToInt())
|
||||
}
|
||||
|
||||
tx := NewTx(chainID, nonce, args.To, value, gas, gasPrice, input, args.AccessList)
|
||||
tx.From = addr.Hex()
|
||||
if args.To != nil {
|
||||
to = args.To.Hex()
|
||||
}
|
||||
|
||||
return tx
|
||||
var data TxData
|
||||
switch {
|
||||
case args.MaxFeePerGas != nil:
|
||||
al := AccessList{}
|
||||
if args.AccessList != nil {
|
||||
al = NewAccessList(args.AccessList)
|
||||
}
|
||||
|
||||
data = &DynamicFeeTx{
|
||||
To: to,
|
||||
ChainID: &chainID,
|
||||
Nonce: nonce,
|
||||
GasLimit: gas,
|
||||
GasFeeCap: &maxFeePerGas,
|
||||
GasTipCap: &maxPriorityFeePerGas,
|
||||
Amount: &value,
|
||||
Data: args.data(),
|
||||
Accesses: al,
|
||||
}
|
||||
case args.AccessList != nil:
|
||||
data = &AccessListTx{
|
||||
To: to,
|
||||
ChainID: &chainID,
|
||||
Nonce: nonce,
|
||||
GasLimit: gas,
|
||||
GasPrice: &gasPrice,
|
||||
Amount: &value,
|
||||
Data: args.data(),
|
||||
Accesses: NewAccessList(args.AccessList),
|
||||
}
|
||||
default:
|
||||
data = &LegacyTx{
|
||||
To: to,
|
||||
Nonce: nonce,
|
||||
GasLimit: gas,
|
||||
GasPrice: &gasPrice,
|
||||
Amount: &value,
|
||||
Data: args.data(),
|
||||
}
|
||||
}
|
||||
|
||||
any, err := PackTxData(data)
|
||||
if err != nil {
|
||||
return nil
|
||||
}
|
||||
|
||||
if args.From != nil {
|
||||
from = args.From.Hex()
|
||||
}
|
||||
|
||||
return &MsgEthereumTx{
|
||||
Data: any,
|
||||
From: from,
|
||||
}
|
||||
}
|
||||
|
||||
// ToMessage converts the arguments to the Message type used by the core evm.
|
||||
// This assumes that setTxDefaults has been called.
|
||||
func (args *TransactionArgs) ToMessage(globalGasCap uint64) (ethtypes.Message, error) {
|
||||
var (
|
||||
input []byte
|
||||
value, gasPrice *big.Int
|
||||
// gasFeeCap, gasTipCap *big.Int
|
||||
addr common.Address
|
||||
gas, nonce uint64
|
||||
)
|
||||
|
||||
func (args *TransactionArgs) ToMessage(globalGasCap uint64, baseFee *big.Int) (ethtypes.Message, error) {
|
||||
// Reject invalid combinations of pre- and post-1559 fee styles
|
||||
if args.GasPrice != nil && (args.MaxFeePerGas != nil || args.MaxPriorityFeePerGas != nil) {
|
||||
return ethtypes.Message{}, errors.New("both gasPrice and (maxFeePerGas or maxPriorityFeePerGas) specified")
|
||||
}
|
||||
|
||||
// Set sender address or use zero address if none specified.
|
||||
if args.From != nil {
|
||||
addr = *args.From
|
||||
}
|
||||
addr := args.from()
|
||||
|
||||
// Set default gas & gas price if none were set
|
||||
gas = globalGasCap
|
||||
gas := globalGasCap
|
||||
if gas == 0 {
|
||||
gas = uint64(math.MaxUint64 / 2)
|
||||
}
|
||||
@@ -142,31 +175,69 @@ func (args *TransactionArgs) ToMessage(globalGasCap uint64) (ethtypes.Message, e
|
||||
if globalGasCap != 0 && globalGasCap < gas {
|
||||
gas = globalGasCap
|
||||
}
|
||||
|
||||
if args.GasPrice != nil {
|
||||
gasPrice = args.GasPrice.ToInt()
|
||||
var (
|
||||
gasPrice *big.Int
|
||||
gasFeeCap *big.Int
|
||||
gasTipCap *big.Int
|
||||
)
|
||||
if baseFee == nil {
|
||||
// If there's no basefee, then it must be a non-1559 execution
|
||||
gasPrice = new(big.Int)
|
||||
if args.GasPrice != nil {
|
||||
gasPrice = args.GasPrice.ToInt()
|
||||
}
|
||||
gasFeeCap, gasTipCap = gasPrice, gasPrice
|
||||
} else {
|
||||
// A basefee is provided, necessitating 1559-type execution
|
||||
if args.GasPrice != nil {
|
||||
// User specified the legacy gas field, convert to 1559 gas typing
|
||||
gasPrice = args.GasPrice.ToInt()
|
||||
gasFeeCap, gasTipCap = gasPrice, gasPrice
|
||||
} else {
|
||||
// User specified 1559 gas feilds (or none), use those
|
||||
gasFeeCap = new(big.Int)
|
||||
if args.MaxFeePerGas != nil {
|
||||
gasFeeCap = args.MaxFeePerGas.ToInt()
|
||||
}
|
||||
gasTipCap = new(big.Int)
|
||||
if args.MaxPriorityFeePerGas != nil {
|
||||
gasTipCap = args.MaxPriorityFeePerGas.ToInt()
|
||||
}
|
||||
// Backfill the legacy gasPrice for EVM execution, unless we're all zeroes
|
||||
gasPrice = new(big.Int)
|
||||
if gasFeeCap.BitLen() > 0 || gasTipCap.BitLen() > 0 {
|
||||
gasPrice = math.BigMin(new(big.Int).Add(gasTipCap, baseFee), gasFeeCap)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
value := new(big.Int)
|
||||
if args.Value != nil {
|
||||
value = args.Value.ToInt()
|
||||
}
|
||||
|
||||
// if args.MaxFeePerGas != nil {
|
||||
// gasFeeCap = args.MaxFeePerGas.ToInt()
|
||||
// }
|
||||
|
||||
// if args.MaxPriorityFeePerGas != nil {
|
||||
// gasTipCap = args.MaxPriorityFeePerGas.ToInt()
|
||||
// }
|
||||
|
||||
if args.Data != nil {
|
||||
input = *args.Data
|
||||
}
|
||||
data := args.data()
|
||||
var accessList ethtypes.AccessList
|
||||
if args.AccessList != nil {
|
||||
accessList = *args.AccessList
|
||||
}
|
||||
|
||||
msg := ethtypes.NewMessage(addr, args.To, nonce, value, gas, gasPrice, input, accessList, false)
|
||||
msg := ethtypes.NewMessage(addr, args.To, 0, value, gas, gasPrice, gasFeeCap, gasTipCap, data, accessList, true)
|
||||
return msg, nil
|
||||
}
|
||||
|
||||
// from retrieves the transaction sender address.
|
||||
func (args *TransactionArgs) from() common.Address {
|
||||
if args.From == nil {
|
||||
return common.Address{}
|
||||
}
|
||||
return *args.From
|
||||
}
|
||||
|
||||
// data retrieves the transaction calldata. Input field is preferred.
|
||||
func (args *TransactionArgs) data() []byte {
|
||||
if args.Input != nil {
|
||||
return *args.Input
|
||||
}
|
||||
if args.Data != nil {
|
||||
return *args.Data
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
@@ -43,8 +43,8 @@ type TxData interface {
|
||||
func NewTxDataFromTx(tx *ethtypes.Transaction) TxData {
|
||||
var txData TxData
|
||||
switch tx.Type() {
|
||||
// case ethtypes.DynamicFeeTxType:
|
||||
// txData = newDynamicFeeTx(tx)
|
||||
case ethtypes.DynamicFeeTxType:
|
||||
txData = newDynamicFeeTx(tx)
|
||||
case ethtypes.AccessListTxType:
|
||||
txData = newAccessListTx(tx)
|
||||
default:
|
||||
|
||||
@@ -59,7 +59,7 @@ func TestUnwrapEthererumMsg(t *testing.T) {
|
||||
_, err = evmtypes.UnwrapEthereumMsg(&tx)
|
||||
require.NotNil(t, err)
|
||||
|
||||
msg := evmtypes.NewTx(big.NewInt(1), 0, &common.Address{}, big.NewInt(0), 0, big.NewInt(0), []byte{}, nil)
|
||||
msg := evmtypes.NewTx(big.NewInt(1), 0, &common.Address{}, big.NewInt(0), 0, big.NewInt(0), nil, nil, []byte{}, nil)
|
||||
err = builder.SetMsgs(msg)
|
||||
|
||||
tx = builder.GetTx().(sdk.Tx)
|
||||
|
||||
Reference in New Issue
Block a user