evm: EIP1559 & go-ethereum related updates (#469)
* updates * more changes * proto updates * tidy * v1beta1 * update buf * lint * comments * typo
This commit is contained in:
parent
f732774992
commit
1ad9b4c1a5
@ -41,6 +41,14 @@ Ref: https://keepachangelog.com/en/1.0.0/
|
|||||||
|
|
||||||
* (app) [tharsis#476](https://github.com/tharsis/ethermint/pull/476) Update Bech32 HRP to `ethm`.
|
* (app) [tharsis#476](https://github.com/tharsis/ethermint/pull/476) Update Bech32 HRP to `ethm`.
|
||||||
|
|
||||||
|
### API Breaking
|
||||||
|
|
||||||
|
* (evm) [tharsis#469](https://github.com/tharsis/ethermint/pull/469) Deprecate `YoloV3Block` and `EWASMBlock` from `ChainConfig`
|
||||||
|
|
||||||
|
### Features
|
||||||
|
|
||||||
|
* (evm) [tharsis#469](https://github.com/tharsis/ethermint/pull/469) Support [EIP-1559](https://eips.ethereum.org/EIPS/eip-1559)
|
||||||
|
|
||||||
### Bug Fixes
|
### Bug Fixes
|
||||||
|
|
||||||
* (encoding) [tharsis#478](https://github.com/tharsis/ethermint/pull/478) Register `Evidence` to amino codec.
|
* (encoding) [tharsis#478](https://github.com/tharsis/ethermint/pull/478) Register `Evidence` to amino codec.
|
||||||
|
4
Makefile
4
Makefile
@ -441,10 +441,10 @@ proto-format:
|
|||||||
find ./ -not -path "./third_party/*" -name *.proto -exec clang-format -i {} \;
|
find ./ -not -path "./third_party/*" -name *.proto -exec clang-format -i {} \;
|
||||||
|
|
||||||
proto-lint:
|
proto-lint:
|
||||||
@$(DOCKER_BUF) check lint --error-format=json
|
@$(DOCKER_BUF) lint --error-format=json
|
||||||
|
|
||||||
proto-check-breaking:
|
proto-check-breaking:
|
||||||
@$(DOCKER_BUF) check breaking --against-input $(HTTPS_GIT)#branch=main
|
@$(DOCKER_BUF) breaking --against $(HTTPS_GIT)#branch=main
|
||||||
|
|
||||||
|
|
||||||
TM_URL = https://raw.githubusercontent.com/tendermint/tendermint/v0.34.12/proto/tendermint
|
TM_URL = https://raw.githubusercontent.com/tendermint/tendermint/v0.34.12/proto/tendermint
|
||||||
|
4
buf.work.yaml
Normal file
4
buf.work.yaml
Normal file
@ -0,0 +1,4 @@
|
|||||||
|
version: v1
|
||||||
|
directories:
|
||||||
|
- proto
|
||||||
|
- third_party/proto
|
File diff suppressed because one or more lines are too long
@ -439,6 +439,210 @@ paths:
|
|||||||
type: string
|
type: string
|
||||||
tags:
|
tags:
|
||||||
- Query
|
- Query
|
||||||
|
/ethermint/evm/v1/base_fee:
|
||||||
|
get:
|
||||||
|
summary: BaseFee queries the base fee of the parent block of the current block.
|
||||||
|
operationId: BaseFee
|
||||||
|
responses:
|
||||||
|
'200':
|
||||||
|
description: A successful response.
|
||||||
|
schema:
|
||||||
|
type: object
|
||||||
|
properties:
|
||||||
|
base_fee:
|
||||||
|
type: string
|
||||||
|
description: BaseFeeResponse returns the EIP1559 base fee.
|
||||||
|
default:
|
||||||
|
description: An unexpected error response.
|
||||||
|
schema:
|
||||||
|
type: object
|
||||||
|
properties:
|
||||||
|
error:
|
||||||
|
type: string
|
||||||
|
code:
|
||||||
|
type: integer
|
||||||
|
format: int32
|
||||||
|
message:
|
||||||
|
type: string
|
||||||
|
details:
|
||||||
|
type: array
|
||||||
|
items:
|
||||||
|
type: object
|
||||||
|
properties:
|
||||||
|
type_url:
|
||||||
|
type: string
|
||||||
|
description: >-
|
||||||
|
A URL/resource name that uniquely identifies the type of
|
||||||
|
the serialized
|
||||||
|
|
||||||
|
protocol buffer message. This string must contain at
|
||||||
|
least
|
||||||
|
|
||||||
|
one "/" character. The last segment of the URL's path
|
||||||
|
must represent
|
||||||
|
|
||||||
|
the fully qualified name of the type (as in
|
||||||
|
|
||||||
|
`path/google.protobuf.Duration`). The name should be in
|
||||||
|
a canonical form
|
||||||
|
|
||||||
|
(e.g., leading "." is not accepted).
|
||||||
|
|
||||||
|
|
||||||
|
In practice, teams usually precompile into the binary
|
||||||
|
all types that they
|
||||||
|
|
||||||
|
expect it to use in the context of Any. However, for
|
||||||
|
URLs which use the
|
||||||
|
|
||||||
|
scheme `http`, `https`, or no scheme, one can optionally
|
||||||
|
set up a type
|
||||||
|
|
||||||
|
server that maps type URLs to message definitions as
|
||||||
|
follows:
|
||||||
|
|
||||||
|
|
||||||
|
* If no scheme is provided, `https` is assumed.
|
||||||
|
|
||||||
|
* An HTTP GET on the URL must yield a
|
||||||
|
[google.protobuf.Type][]
|
||||||
|
value in binary format, or produce an error.
|
||||||
|
* Applications are allowed to cache lookup results based
|
||||||
|
on the
|
||||||
|
URL, or have them precompiled into a binary to avoid any
|
||||||
|
lookup. Therefore, binary compatibility needs to be preserved
|
||||||
|
on changes to types. (Use versioned type names to manage
|
||||||
|
breaking changes.)
|
||||||
|
|
||||||
|
Note: this functionality is not currently available in
|
||||||
|
the official
|
||||||
|
|
||||||
|
protobuf release, and it is not used for type URLs
|
||||||
|
beginning with
|
||||||
|
|
||||||
|
type.googleapis.com.
|
||||||
|
|
||||||
|
|
||||||
|
Schemes other than `http`, `https` (or the empty scheme)
|
||||||
|
might be
|
||||||
|
|
||||||
|
used with implementation specific semantics.
|
||||||
|
value:
|
||||||
|
type: string
|
||||||
|
format: byte
|
||||||
|
description: >-
|
||||||
|
Must be a valid serialized protocol buffer of the above
|
||||||
|
specified type.
|
||||||
|
description: >-
|
||||||
|
`Any` contains an arbitrary serialized protocol buffer
|
||||||
|
message along with a
|
||||||
|
|
||||||
|
URL that describes the type of the serialized message.
|
||||||
|
|
||||||
|
|
||||||
|
Protobuf library provides support to pack/unpack Any values
|
||||||
|
in the form
|
||||||
|
|
||||||
|
of utility functions or additional generated methods of the
|
||||||
|
Any type.
|
||||||
|
|
||||||
|
|
||||||
|
Example 1: Pack and unpack a message in C++.
|
||||||
|
|
||||||
|
Foo foo = ...;
|
||||||
|
Any any;
|
||||||
|
any.PackFrom(foo);
|
||||||
|
...
|
||||||
|
if (any.UnpackTo(&foo)) {
|
||||||
|
...
|
||||||
|
}
|
||||||
|
|
||||||
|
Example 2: Pack and unpack a message in Java.
|
||||||
|
|
||||||
|
Foo foo = ...;
|
||||||
|
Any any = Any.pack(foo);
|
||||||
|
...
|
||||||
|
if (any.is(Foo.class)) {
|
||||||
|
foo = any.unpack(Foo.class);
|
||||||
|
}
|
||||||
|
|
||||||
|
Example 3: Pack and unpack a message in Python.
|
||||||
|
|
||||||
|
foo = Foo(...)
|
||||||
|
any = Any()
|
||||||
|
any.Pack(foo)
|
||||||
|
...
|
||||||
|
if any.Is(Foo.DESCRIPTOR):
|
||||||
|
any.Unpack(foo)
|
||||||
|
...
|
||||||
|
|
||||||
|
Example 4: Pack and unpack a message in Go
|
||||||
|
|
||||||
|
foo := &pb.Foo{...}
|
||||||
|
any, err := ptypes.MarshalAny(foo)
|
||||||
|
...
|
||||||
|
foo := &pb.Foo{}
|
||||||
|
if err := ptypes.UnmarshalAny(any, foo); err != nil {
|
||||||
|
...
|
||||||
|
}
|
||||||
|
|
||||||
|
The pack methods provided by protobuf library will by
|
||||||
|
default use
|
||||||
|
|
||||||
|
'type.googleapis.com/full.type.name' as the type URL and the
|
||||||
|
unpack
|
||||||
|
|
||||||
|
methods only use the fully qualified type name after the
|
||||||
|
last '/'
|
||||||
|
|
||||||
|
in the type URL, for example "foo.bar.com/x/y.z" will yield
|
||||||
|
type
|
||||||
|
|
||||||
|
name "y.z".
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
JSON
|
||||||
|
|
||||||
|
====
|
||||||
|
|
||||||
|
The JSON representation of an `Any` value uses the regular
|
||||||
|
|
||||||
|
representation of the deserialized, embedded message, with
|
||||||
|
an
|
||||||
|
|
||||||
|
additional field `@type` which contains the type URL.
|
||||||
|
Example:
|
||||||
|
|
||||||
|
package google.profile;
|
||||||
|
message Person {
|
||||||
|
string first_name = 1;
|
||||||
|
string last_name = 2;
|
||||||
|
}
|
||||||
|
|
||||||
|
{
|
||||||
|
"@type": "type.googleapis.com/google.profile.Person",
|
||||||
|
"firstName": <string>,
|
||||||
|
"lastName": <string>
|
||||||
|
}
|
||||||
|
|
||||||
|
If the embedded message type is well-known and has a custom
|
||||||
|
JSON
|
||||||
|
|
||||||
|
representation, that representation will be embedded adding
|
||||||
|
a field
|
||||||
|
|
||||||
|
`value` which holds the custom JSON in addition to the
|
||||||
|
`@type`
|
||||||
|
|
||||||
|
field. Example (for message [google.protobuf.Duration][]):
|
||||||
|
|
||||||
|
{
|
||||||
|
"@type": "type.googleapis.com/google.protobuf.Duration",
|
||||||
|
"value": "1.212s"
|
||||||
|
}
|
||||||
|
tags:
|
||||||
|
- Query
|
||||||
/ethermint/evm/v1/block_bloom:
|
/ethermint/evm/v1/block_bloom:
|
||||||
get:
|
get:
|
||||||
summary: BlockBloom queries the block bloom filter bytes at a given height.
|
summary: BlockBloom queries the block bloom filter bytes at a given height.
|
||||||
@ -2075,24 +2279,26 @@ paths:
|
|||||||
title: >-
|
title: >-
|
||||||
Berlin switch block (nil = no fork, 0 = already on
|
Berlin switch block (nil = no fork, 0 = already on
|
||||||
berlin)
|
berlin)
|
||||||
yolo_v3_block:
|
|
||||||
type: string
|
|
||||||
title: 'YOLO v3: Gas repricings'
|
|
||||||
ewasm_block:
|
|
||||||
type: string
|
|
||||||
title: >-
|
|
||||||
EWASM switch block (nil no fork, 0 = already
|
|
||||||
activated)
|
|
||||||
catalyst_block:
|
catalyst_block:
|
||||||
type: string
|
type: string
|
||||||
title: >-
|
title: >-
|
||||||
Catalyst switch block (nil = no fork, 0 = already on
|
Catalyst switch block (nil = no fork, 0 = already on
|
||||||
catalyst)
|
catalyst)
|
||||||
|
london_block:
|
||||||
|
type: string
|
||||||
|
title: >-
|
||||||
|
London switch block (nil = no fork, 0 = already on
|
||||||
|
london)
|
||||||
description: >-
|
description: >-
|
||||||
ChainConfig defines the Ethereum ChainConfig parameters
|
ChainConfig defines the Ethereum ChainConfig parameters
|
||||||
using *sdk.Int values
|
using *sdk.Int values
|
||||||
|
|
||||||
instead of *big.Int.
|
instead of *big.Int.
|
||||||
|
no_base_fee:
|
||||||
|
type: boolean
|
||||||
|
title: >-
|
||||||
|
no base fee forces the EIP-1559 base fee to 0 (needed for
|
||||||
|
0 price calls)
|
||||||
title: Params defines the EVM module parameters
|
title: Params defines the EVM module parameters
|
||||||
description: >-
|
description: >-
|
||||||
QueryParamsResponse defines the response type for querying x/evm
|
QueryParamsResponse defines the response type for querying x/evm
|
||||||
@ -2288,223 +2494,6 @@ paths:
|
|||||||
}
|
}
|
||||||
tags:
|
tags:
|
||||||
- Query
|
- Query
|
||||||
/ethermint/evm/v1/static_call:
|
|
||||||
get:
|
|
||||||
summary: StaticCall queries the static call value of x/evm module.
|
|
||||||
operationId: StaticCall
|
|
||||||
responses:
|
|
||||||
'200':
|
|
||||||
description: A successful response.
|
|
||||||
schema:
|
|
||||||
type: object
|
|
||||||
properties:
|
|
||||||
data:
|
|
||||||
type: string
|
|
||||||
format: byte
|
|
||||||
title: QueryStaticCallRequest defines static call response
|
|
||||||
default:
|
|
||||||
description: An unexpected error response.
|
|
||||||
schema:
|
|
||||||
type: object
|
|
||||||
properties:
|
|
||||||
error:
|
|
||||||
type: string
|
|
||||||
code:
|
|
||||||
type: integer
|
|
||||||
format: int32
|
|
||||||
message:
|
|
||||||
type: string
|
|
||||||
details:
|
|
||||||
type: array
|
|
||||||
items:
|
|
||||||
type: object
|
|
||||||
properties:
|
|
||||||
type_url:
|
|
||||||
type: string
|
|
||||||
description: >-
|
|
||||||
A URL/resource name that uniquely identifies the type of
|
|
||||||
the serialized
|
|
||||||
|
|
||||||
protocol buffer message. This string must contain at
|
|
||||||
least
|
|
||||||
|
|
||||||
one "/" character. The last segment of the URL's path
|
|
||||||
must represent
|
|
||||||
|
|
||||||
the fully qualified name of the type (as in
|
|
||||||
|
|
||||||
`path/google.protobuf.Duration`). The name should be in
|
|
||||||
a canonical form
|
|
||||||
|
|
||||||
(e.g., leading "." is not accepted).
|
|
||||||
|
|
||||||
|
|
||||||
In practice, teams usually precompile into the binary
|
|
||||||
all types that they
|
|
||||||
|
|
||||||
expect it to use in the context of Any. However, for
|
|
||||||
URLs which use the
|
|
||||||
|
|
||||||
scheme `http`, `https`, or no scheme, one can optionally
|
|
||||||
set up a type
|
|
||||||
|
|
||||||
server that maps type URLs to message definitions as
|
|
||||||
follows:
|
|
||||||
|
|
||||||
|
|
||||||
* If no scheme is provided, `https` is assumed.
|
|
||||||
|
|
||||||
* An HTTP GET on the URL must yield a
|
|
||||||
[google.protobuf.Type][]
|
|
||||||
value in binary format, or produce an error.
|
|
||||||
* Applications are allowed to cache lookup results based
|
|
||||||
on the
|
|
||||||
URL, or have them precompiled into a binary to avoid any
|
|
||||||
lookup. Therefore, binary compatibility needs to be preserved
|
|
||||||
on changes to types. (Use versioned type names to manage
|
|
||||||
breaking changes.)
|
|
||||||
|
|
||||||
Note: this functionality is not currently available in
|
|
||||||
the official
|
|
||||||
|
|
||||||
protobuf release, and it is not used for type URLs
|
|
||||||
beginning with
|
|
||||||
|
|
||||||
type.googleapis.com.
|
|
||||||
|
|
||||||
|
|
||||||
Schemes other than `http`, `https` (or the empty scheme)
|
|
||||||
might be
|
|
||||||
|
|
||||||
used with implementation specific semantics.
|
|
||||||
value:
|
|
||||||
type: string
|
|
||||||
format: byte
|
|
||||||
description: >-
|
|
||||||
Must be a valid serialized protocol buffer of the above
|
|
||||||
specified type.
|
|
||||||
description: >-
|
|
||||||
`Any` contains an arbitrary serialized protocol buffer
|
|
||||||
message along with a
|
|
||||||
|
|
||||||
URL that describes the type of the serialized message.
|
|
||||||
|
|
||||||
|
|
||||||
Protobuf library provides support to pack/unpack Any values
|
|
||||||
in the form
|
|
||||||
|
|
||||||
of utility functions or additional generated methods of the
|
|
||||||
Any type.
|
|
||||||
|
|
||||||
|
|
||||||
Example 1: Pack and unpack a message in C++.
|
|
||||||
|
|
||||||
Foo foo = ...;
|
|
||||||
Any any;
|
|
||||||
any.PackFrom(foo);
|
|
||||||
...
|
|
||||||
if (any.UnpackTo(&foo)) {
|
|
||||||
...
|
|
||||||
}
|
|
||||||
|
|
||||||
Example 2: Pack and unpack a message in Java.
|
|
||||||
|
|
||||||
Foo foo = ...;
|
|
||||||
Any any = Any.pack(foo);
|
|
||||||
...
|
|
||||||
if (any.is(Foo.class)) {
|
|
||||||
foo = any.unpack(Foo.class);
|
|
||||||
}
|
|
||||||
|
|
||||||
Example 3: Pack and unpack a message in Python.
|
|
||||||
|
|
||||||
foo = Foo(...)
|
|
||||||
any = Any()
|
|
||||||
any.Pack(foo)
|
|
||||||
...
|
|
||||||
if any.Is(Foo.DESCRIPTOR):
|
|
||||||
any.Unpack(foo)
|
|
||||||
...
|
|
||||||
|
|
||||||
Example 4: Pack and unpack a message in Go
|
|
||||||
|
|
||||||
foo := &pb.Foo{...}
|
|
||||||
any, err := ptypes.MarshalAny(foo)
|
|
||||||
...
|
|
||||||
foo := &pb.Foo{}
|
|
||||||
if err := ptypes.UnmarshalAny(any, foo); err != nil {
|
|
||||||
...
|
|
||||||
}
|
|
||||||
|
|
||||||
The pack methods provided by protobuf library will by
|
|
||||||
default use
|
|
||||||
|
|
||||||
'type.googleapis.com/full.type.name' as the type URL and the
|
|
||||||
unpack
|
|
||||||
|
|
||||||
methods only use the fully qualified type name after the
|
|
||||||
last '/'
|
|
||||||
|
|
||||||
in the type URL, for example "foo.bar.com/x/y.z" will yield
|
|
||||||
type
|
|
||||||
|
|
||||||
name "y.z".
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
JSON
|
|
||||||
|
|
||||||
====
|
|
||||||
|
|
||||||
The JSON representation of an `Any` value uses the regular
|
|
||||||
|
|
||||||
representation of the deserialized, embedded message, with
|
|
||||||
an
|
|
||||||
|
|
||||||
additional field `@type` which contains the type URL.
|
|
||||||
Example:
|
|
||||||
|
|
||||||
package google.profile;
|
|
||||||
message Person {
|
|
||||||
string first_name = 1;
|
|
||||||
string last_name = 2;
|
|
||||||
}
|
|
||||||
|
|
||||||
{
|
|
||||||
"@type": "type.googleapis.com/google.profile.Person",
|
|
||||||
"firstName": <string>,
|
|
||||||
"lastName": <string>
|
|
||||||
}
|
|
||||||
|
|
||||||
If the embedded message type is well-known and has a custom
|
|
||||||
JSON
|
|
||||||
|
|
||||||
representation, that representation will be embedded adding
|
|
||||||
a field
|
|
||||||
|
|
||||||
`value` which holds the custom JSON in addition to the
|
|
||||||
`@type`
|
|
||||||
|
|
||||||
field. Example (for message [google.protobuf.Duration][]):
|
|
||||||
|
|
||||||
{
|
|
||||||
"@type": "type.googleapis.com/google.protobuf.Duration",
|
|
||||||
"value": "1.212s"
|
|
||||||
}
|
|
||||||
parameters:
|
|
||||||
- name: address
|
|
||||||
description: address is the ethereum contract hex address to for static call.
|
|
||||||
in: query
|
|
||||||
required: false
|
|
||||||
type: string
|
|
||||||
- name: input
|
|
||||||
description: static call input generated from abi.
|
|
||||||
in: query
|
|
||||||
required: false
|
|
||||||
type: string
|
|
||||||
format: byte
|
|
||||||
tags:
|
|
||||||
- Query
|
|
||||||
'/ethermint/evm/v1/storage/{address}/{key}':
|
'/ethermint/evm/v1/storage/{address}/{key}':
|
||||||
get:
|
get:
|
||||||
summary: Storage queries the balance of all coins for a single account.
|
summary: Storage queries the balance of all coins for a single account.
|
||||||
@ -13495,15 +13484,12 @@ definitions:
|
|||||||
berlin_block:
|
berlin_block:
|
||||||
type: string
|
type: string
|
||||||
title: 'Berlin switch block (nil = no fork, 0 = already on berlin)'
|
title: 'Berlin switch block (nil = no fork, 0 = already on berlin)'
|
||||||
yolo_v3_block:
|
|
||||||
type: string
|
|
||||||
title: 'YOLO v3: Gas repricings'
|
|
||||||
ewasm_block:
|
|
||||||
type: string
|
|
||||||
title: 'EWASM switch block (nil no fork, 0 = already activated)'
|
|
||||||
catalyst_block:
|
catalyst_block:
|
||||||
type: string
|
type: string
|
||||||
title: 'Catalyst switch block (nil = no fork, 0 = already on catalyst)'
|
title: 'Catalyst switch block (nil = no fork, 0 = already on catalyst)'
|
||||||
|
london_block:
|
||||||
|
type: string
|
||||||
|
title: 'London switch block (nil = no fork, 0 = already on london)'
|
||||||
description: >-
|
description: >-
|
||||||
ChainConfig defines the Ethereum ChainConfig parameters using *sdk.Int
|
ChainConfig defines the Ethereum ChainConfig parameters using *sdk.Int
|
||||||
values
|
values
|
||||||
@ -13718,20 +13704,22 @@ definitions:
|
|||||||
berlin_block:
|
berlin_block:
|
||||||
type: string
|
type: string
|
||||||
title: 'Berlin switch block (nil = no fork, 0 = already on berlin)'
|
title: 'Berlin switch block (nil = no fork, 0 = already on berlin)'
|
||||||
yolo_v3_block:
|
|
||||||
type: string
|
|
||||||
title: 'YOLO v3: Gas repricings'
|
|
||||||
ewasm_block:
|
|
||||||
type: string
|
|
||||||
title: 'EWASM switch block (nil no fork, 0 = already activated)'
|
|
||||||
catalyst_block:
|
catalyst_block:
|
||||||
type: string
|
type: string
|
||||||
title: 'Catalyst switch block (nil = no fork, 0 = already on catalyst)'
|
title: 'Catalyst switch block (nil = no fork, 0 = already on catalyst)'
|
||||||
|
london_block:
|
||||||
|
type: string
|
||||||
|
title: 'London switch block (nil = no fork, 0 = already on london)'
|
||||||
description: >-
|
description: >-
|
||||||
ChainConfig defines the Ethereum ChainConfig parameters using *sdk.Int
|
ChainConfig defines the Ethereum ChainConfig parameters using *sdk.Int
|
||||||
values
|
values
|
||||||
|
|
||||||
instead of *big.Int.
|
instead of *big.Int.
|
||||||
|
no_base_fee:
|
||||||
|
type: boolean
|
||||||
|
title: >-
|
||||||
|
no base fee forces the EIP-1559 base fee to 0 (needed for 0 price
|
||||||
|
calls)
|
||||||
title: Params defines the EVM module parameters
|
title: Params defines the EVM module parameters
|
||||||
ethermint.evm.v1.QueryAccountResponse:
|
ethermint.evm.v1.QueryAccountResponse:
|
||||||
type: object
|
type: object
|
||||||
@ -13758,6 +13746,12 @@ definitions:
|
|||||||
description: >-
|
description: >-
|
||||||
QueryBalanceResponse is the response type for the Query/Balance RPC
|
QueryBalanceResponse is the response type for the Query/Balance RPC
|
||||||
method.
|
method.
|
||||||
|
ethermint.evm.v1.QueryBaseFeeResponse:
|
||||||
|
type: object
|
||||||
|
properties:
|
||||||
|
base_fee:
|
||||||
|
type: string
|
||||||
|
description: BaseFeeResponse returns the EIP1559 base fee.
|
||||||
ethermint.evm.v1.QueryBlockBloomResponse:
|
ethermint.evm.v1.QueryBlockBloomResponse:
|
||||||
type: object
|
type: object
|
||||||
properties:
|
properties:
|
||||||
@ -13971,31 +13965,26 @@ definitions:
|
|||||||
berlin_block:
|
berlin_block:
|
||||||
type: string
|
type: string
|
||||||
title: 'Berlin switch block (nil = no fork, 0 = already on berlin)'
|
title: 'Berlin switch block (nil = no fork, 0 = already on berlin)'
|
||||||
yolo_v3_block:
|
|
||||||
type: string
|
|
||||||
title: 'YOLO v3: Gas repricings'
|
|
||||||
ewasm_block:
|
|
||||||
type: string
|
|
||||||
title: 'EWASM switch block (nil no fork, 0 = already activated)'
|
|
||||||
catalyst_block:
|
catalyst_block:
|
||||||
type: string
|
type: string
|
||||||
title: 'Catalyst switch block (nil = no fork, 0 = already on catalyst)'
|
title: 'Catalyst switch block (nil = no fork, 0 = already on catalyst)'
|
||||||
|
london_block:
|
||||||
|
type: string
|
||||||
|
title: 'London switch block (nil = no fork, 0 = already on london)'
|
||||||
description: >-
|
description: >-
|
||||||
ChainConfig defines the Ethereum ChainConfig parameters using
|
ChainConfig defines the Ethereum ChainConfig parameters using
|
||||||
*sdk.Int values
|
*sdk.Int values
|
||||||
|
|
||||||
instead of *big.Int.
|
instead of *big.Int.
|
||||||
|
no_base_fee:
|
||||||
|
type: boolean
|
||||||
|
title: >-
|
||||||
|
no base fee forces the EIP-1559 base fee to 0 (needed for 0 price
|
||||||
|
calls)
|
||||||
title: Params defines the EVM module parameters
|
title: Params defines the EVM module parameters
|
||||||
description: >-
|
description: >-
|
||||||
QueryParamsResponse defines the response type for querying x/evm
|
QueryParamsResponse defines the response type for querying x/evm
|
||||||
parameters.
|
parameters.
|
||||||
ethermint.evm.v1.QueryStaticCallResponse:
|
|
||||||
type: object
|
|
||||||
properties:
|
|
||||||
data:
|
|
||||||
type: string
|
|
||||||
format: byte
|
|
||||||
title: QueryStaticCallRequest defines static call response
|
|
||||||
ethermint.evm.v1.QueryStorageResponse:
|
ethermint.evm.v1.QueryStorageResponse:
|
||||||
type: object
|
type: object
|
||||||
properties:
|
properties:
|
||||||
|
@ -38,6 +38,8 @@
|
|||||||
- [QueryAccountResponse](#ethermint.evm.v1.QueryAccountResponse)
|
- [QueryAccountResponse](#ethermint.evm.v1.QueryAccountResponse)
|
||||||
- [QueryBalanceRequest](#ethermint.evm.v1.QueryBalanceRequest)
|
- [QueryBalanceRequest](#ethermint.evm.v1.QueryBalanceRequest)
|
||||||
- [QueryBalanceResponse](#ethermint.evm.v1.QueryBalanceResponse)
|
- [QueryBalanceResponse](#ethermint.evm.v1.QueryBalanceResponse)
|
||||||
|
- [QueryBaseFeeRequest](#ethermint.evm.v1.QueryBaseFeeRequest)
|
||||||
|
- [QueryBaseFeeResponse](#ethermint.evm.v1.QueryBaseFeeResponse)
|
||||||
- [QueryBlockBloomRequest](#ethermint.evm.v1.QueryBlockBloomRequest)
|
- [QueryBlockBloomRequest](#ethermint.evm.v1.QueryBlockBloomRequest)
|
||||||
- [QueryBlockBloomResponse](#ethermint.evm.v1.QueryBlockBloomResponse)
|
- [QueryBlockBloomResponse](#ethermint.evm.v1.QueryBlockBloomResponse)
|
||||||
- [QueryBlockLogsRequest](#ethermint.evm.v1.QueryBlockLogsRequest)
|
- [QueryBlockLogsRequest](#ethermint.evm.v1.QueryBlockLogsRequest)
|
||||||
@ -48,7 +50,6 @@
|
|||||||
- [QueryCosmosAccountResponse](#ethermint.evm.v1.QueryCosmosAccountResponse)
|
- [QueryCosmosAccountResponse](#ethermint.evm.v1.QueryCosmosAccountResponse)
|
||||||
- [QueryParamsRequest](#ethermint.evm.v1.QueryParamsRequest)
|
- [QueryParamsRequest](#ethermint.evm.v1.QueryParamsRequest)
|
||||||
- [QueryParamsResponse](#ethermint.evm.v1.QueryParamsResponse)
|
- [QueryParamsResponse](#ethermint.evm.v1.QueryParamsResponse)
|
||||||
- [QueryStaticCallRequest](#ethermint.evm.v1.QueryStaticCallRequest)
|
|
||||||
- [QueryStaticCallResponse](#ethermint.evm.v1.QueryStaticCallResponse)
|
- [QueryStaticCallResponse](#ethermint.evm.v1.QueryStaticCallResponse)
|
||||||
- [QueryStorageRequest](#ethermint.evm.v1.QueryStorageRequest)
|
- [QueryStorageRequest](#ethermint.evm.v1.QueryStorageRequest)
|
||||||
- [QueryStorageResponse](#ethermint.evm.v1.QueryStorageResponse)
|
- [QueryStorageResponse](#ethermint.evm.v1.QueryStorageResponse)
|
||||||
@ -62,7 +63,7 @@
|
|||||||
- [ethermint/types/v1/account.proto](#ethermint/types/v1/account.proto)
|
- [ethermint/types/v1/account.proto](#ethermint/types/v1/account.proto)
|
||||||
- [EthAccount](#ethermint.types.v1.EthAccount)
|
- [EthAccount](#ethermint.types.v1.EthAccount)
|
||||||
|
|
||||||
- [ethermint/types/web3.proto](#ethermint/types/web3.proto)
|
- [ethermint/types/v1/web3.proto](#ethermint/types/v1/web3.proto)
|
||||||
- [ExtensionOptionsWeb3Tx](#ethermint.types.v1.ExtensionOptionsWeb3Tx)
|
- [ExtensionOptionsWeb3Tx](#ethermint.types.v1.ExtensionOptionsWeb3Tx)
|
||||||
|
|
||||||
- [Scalar Value Types](#scalar-value-types)
|
- [Scalar Value Types](#scalar-value-types)
|
||||||
@ -163,9 +164,8 @@ instead of *big.Int.
|
|||||||
| `istanbul_block` | [string](#string) | | Istanbul switch block (nil no fork, 0 = already on istanbul) |
|
| `istanbul_block` | [string](#string) | | Istanbul switch block (nil no fork, 0 = already on istanbul) |
|
||||||
| `muir_glacier_block` | [string](#string) | | Eip-2384 (bomb delay) switch block (nil no fork, 0 = already activated) |
|
| `muir_glacier_block` | [string](#string) | | Eip-2384 (bomb delay) switch block (nil no fork, 0 = already activated) |
|
||||||
| `berlin_block` | [string](#string) | | Berlin switch block (nil = no fork, 0 = already on berlin) |
|
| `berlin_block` | [string](#string) | | Berlin switch block (nil = no fork, 0 = already on berlin) |
|
||||||
| `yolo_v3_block` | [string](#string) | | YOLO v3: Gas repricings |
|
|
||||||
| `ewasm_block` | [string](#string) | | EWASM switch block (nil no fork, 0 = already activated) |
|
|
||||||
| `catalyst_block` | [string](#string) | | Catalyst switch block (nil = no fork, 0 = already on catalyst) |
|
| `catalyst_block` | [string](#string) | | Catalyst switch block (nil = no fork, 0 = already on catalyst) |
|
||||||
|
| `london_block` | [string](#string) | | London switch block (nil = no fork, 0 = already on london) |
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@ -210,6 +210,7 @@ Params defines the EVM module parameters
|
|||||||
| `enable_call` | [bool](#bool) | | enable call toggles state transitions that use the vm.Call function |
|
| `enable_call` | [bool](#bool) | | enable call toggles state transitions that use the vm.Call function |
|
||||||
| `extra_eips` | [int64](#int64) | repeated | extra eips defines the additional EIPs for the vm.Config |
|
| `extra_eips` | [int64](#int64) | repeated | extra eips defines the additional EIPs for the vm.Config |
|
||||||
| `chain_config` | [ChainConfig](#ethermint.evm.v1.ChainConfig) | | chain config defines the EVM chain configuration parameters |
|
| `chain_config` | [ChainConfig](#ethermint.evm.v1.ChainConfig) | | chain config defines the EVM chain configuration parameters |
|
||||||
|
| `no_base_fee` | [bool](#bool) | | no base fee forces the EIP-1559 base fee to 0 (needed for 0 price calls) |
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@ -580,6 +581,32 @@ QueryBalanceResponse is the response type for the Query/Balance RPC method.
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<a name="ethermint.evm.v1.QueryBaseFeeRequest"></a>
|
||||||
|
|
||||||
|
### QueryBaseFeeRequest
|
||||||
|
QueryBaseFeeRequest defines the request type for querying the EIP1559 base
|
||||||
|
fee.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<a name="ethermint.evm.v1.QueryBaseFeeResponse"></a>
|
||||||
|
|
||||||
|
### QueryBaseFeeResponse
|
||||||
|
BaseFeeResponse returns the EIP1559 base fee.
|
||||||
|
|
||||||
|
|
||||||
|
| Field | Type | Label | Description |
|
||||||
|
| ----- | ---- | ----- | ----------- |
|
||||||
|
| `base_fee` | [string](#string) | | |
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<a name="ethermint.evm.v1.QueryBlockBloomRequest"></a>
|
<a name="ethermint.evm.v1.QueryBlockBloomRequest"></a>
|
||||||
|
|
||||||
### QueryBlockBloomRequest
|
### QueryBlockBloomRequest
|
||||||
@ -734,22 +761,6 @@ QueryParamsResponse defines the response type for querying x/evm parameters.
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
<a name="ethermint.evm.v1.QueryStaticCallRequest"></a>
|
|
||||||
|
|
||||||
### QueryStaticCallRequest
|
|
||||||
QueryStaticCallRequest defines static call request
|
|
||||||
|
|
||||||
|
|
||||||
| Field | Type | Label | Description |
|
|
||||||
| ----- | ---- | ----- | ----------- |
|
|
||||||
| `address` | [string](#string) | | address is the ethereum contract hex address to for static call. |
|
|
||||||
| `input` | [bytes](#bytes) | | static call input generated from abi |
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<a name="ethermint.evm.v1.QueryStaticCallResponse"></a>
|
<a name="ethermint.evm.v1.QueryStaticCallResponse"></a>
|
||||||
|
|
||||||
### QueryStaticCallResponse
|
### QueryStaticCallResponse
|
||||||
@ -884,7 +895,7 @@ Query defines the gRPC querier service.
|
|||||||
| `BlockLogs` | [QueryBlockLogsRequest](#ethermint.evm.v1.QueryBlockLogsRequest) | [QueryBlockLogsResponse](#ethermint.evm.v1.QueryBlockLogsResponse) | BlockLogs queries all the ethereum logs for a given block hash. | GET|/ethermint/evm/v1/block_logs/{hash}|
|
| `BlockLogs` | [QueryBlockLogsRequest](#ethermint.evm.v1.QueryBlockLogsRequest) | [QueryBlockLogsResponse](#ethermint.evm.v1.QueryBlockLogsResponse) | BlockLogs queries all the ethereum logs for a given block hash. | GET|/ethermint/evm/v1/block_logs/{hash}|
|
||||||
| `BlockBloom` | [QueryBlockBloomRequest](#ethermint.evm.v1.QueryBlockBloomRequest) | [QueryBlockBloomResponse](#ethermint.evm.v1.QueryBlockBloomResponse) | BlockBloom queries the block bloom filter bytes at a given height. | GET|/ethermint/evm/v1/block_bloom|
|
| `BlockBloom` | [QueryBlockBloomRequest](#ethermint.evm.v1.QueryBlockBloomRequest) | [QueryBlockBloomResponse](#ethermint.evm.v1.QueryBlockBloomResponse) | BlockBloom queries the block bloom filter bytes at a given height. | GET|/ethermint/evm/v1/block_bloom|
|
||||||
| `Params` | [QueryParamsRequest](#ethermint.evm.v1.QueryParamsRequest) | [QueryParamsResponse](#ethermint.evm.v1.QueryParamsResponse) | Params queries the parameters of x/evm module. | GET|/ethermint/evm/v1/params|
|
| `Params` | [QueryParamsRequest](#ethermint.evm.v1.QueryParamsRequest) | [QueryParamsResponse](#ethermint.evm.v1.QueryParamsResponse) | Params queries the parameters of x/evm module. | GET|/ethermint/evm/v1/params|
|
||||||
| `StaticCall` | [QueryStaticCallRequest](#ethermint.evm.v1.QueryStaticCallRequest) | [QueryStaticCallResponse](#ethermint.evm.v1.QueryStaticCallResponse) | StaticCall queries the static call value of x/evm module. | GET|/ethermint/evm/v1/static_call|
|
| `BaseFee` | [QueryBaseFeeRequest](#ethermint.evm.v1.QueryBaseFeeRequest) | [QueryBaseFeeResponse](#ethermint.evm.v1.QueryBaseFeeResponse) | BaseFee queries the base fee of the parent block of the current block. | GET|/ethermint/evm/v1/base_fee|
|
||||||
| `EthCall` | [EthCallRequest](#ethermint.evm.v1.EthCallRequest) | [MsgEthereumTxResponse](#ethermint.evm.v1.MsgEthereumTxResponse) | EthCall implements the `eth_call` rpc api | GET|/ethermint/evm/v1/eth_call|
|
| `EthCall` | [EthCallRequest](#ethermint.evm.v1.EthCallRequest) | [MsgEthereumTxResponse](#ethermint.evm.v1.MsgEthereumTxResponse) | EthCall implements the `eth_call` rpc api | GET|/ethermint/evm/v1/eth_call|
|
||||||
| `EstimateGas` | [EthCallRequest](#ethermint.evm.v1.EthCallRequest) | [EstimateGasResponse](#ethermint.evm.v1.EstimateGasResponse) | EstimateGas implements the `eth_estimateGas` rpc api | GET|/ethermint/evm/v1/estimate_gas|
|
| `EstimateGas` | [EthCallRequest](#ethermint.evm.v1.EthCallRequest) | [EstimateGasResponse](#ethermint.evm.v1.EstimateGasResponse) | EstimateGas implements the `eth_estimateGas` rpc api | GET|/ethermint/evm/v1/estimate_gas|
|
||||||
|
|
||||||
@ -925,10 +936,10 @@ authtypes.BaseAccount type. It is compatible with the auth AccountKeeper.
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
<a name="ethermint/types/web3.proto"></a>
|
<a name="ethermint/types/v1/web3.proto"></a>
|
||||||
<p align="right"><a href="#top">Top</a></p>
|
<p align="right"><a href="#top">Top</a></p>
|
||||||
|
|
||||||
## ethermint/types/web3.proto
|
## ethermint/types/v1/web3.proto
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@ -940,9 +951,9 @@ authtypes.BaseAccount type. It is compatible with the auth AccountKeeper.
|
|||||||
|
|
||||||
| Field | Type | Label | Description |
|
| Field | Type | Label | Description |
|
||||||
| ----- | ---- | ----- | ----------- |
|
| ----- | ---- | ----- | ----------- |
|
||||||
| `typedDataChainID` | [uint64](#uint64) | | typedDataChainID used only in EIP712 Domain and should match Ethereum network ID in a Web3 provider (e.g. Metamask). |
|
| `typed_data_chain_id` | [uint64](#uint64) | | typed data chain id used only in EIP712 Domain and should match Ethereum network ID in a Web3 provider (e.g. Metamask). |
|
||||||
| `feePayer` | [string](#string) | | feePayer is an account address for the fee payer. It will be validated during EIP712 signature checking. |
|
| `fee_payer` | [string](#string) | | fee payer is an account address for the fee payer. It will be validated during EIP712 signature checking. |
|
||||||
| `feePayerSig` | [bytes](#bytes) | | feePayerSig is a signature data from the fee paying account, allows to perform fee delegation when using EIP712 Domain. |
|
| `fee_payer_sig` | [bytes](#bytes) | | fee payer sig is a signature data from the fee paying account, allows to perform fee delegation when using EIP712 Domain. |
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
4
go.mod
4
go.mod
@ -44,10 +44,10 @@ require (
|
|||||||
github.com/tendermint/tm-db v0.6.4
|
github.com/tendermint/tm-db v0.6.4
|
||||||
github.com/tyler-smith/go-bip39 v1.1.0
|
github.com/tyler-smith/go-bip39 v1.1.0
|
||||||
go.etcd.io/bbolt v1.3.6 // indirect
|
go.etcd.io/bbolt v1.3.6 // indirect
|
||||||
golang.org/x/crypto v0.0.0-20210813211128-0a44fdfbc16e // indirect
|
golang.org/x/crypto v0.0.0-20210817164053-32db794688a5 // indirect
|
||||||
golang.org/x/net v0.0.0-20210805182204-aaa1db679c0d // indirect
|
golang.org/x/net v0.0.0-20210805182204-aaa1db679c0d // indirect
|
||||||
golang.org/x/sys v0.0.0-20210817190340-bfb29a6856f2 // indirect
|
golang.org/x/sys v0.0.0-20210817190340-bfb29a6856f2 // indirect
|
||||||
google.golang.org/genproto v0.0.0-20210816143620-e15ff196659d
|
google.golang.org/genproto v0.0.0-20210824181836-a4879c3d0e89
|
||||||
google.golang.org/grpc v1.40.0
|
google.golang.org/grpc v1.40.0
|
||||||
gopkg.in/yaml.v2 v2.4.0
|
gopkg.in/yaml.v2 v2.4.0
|
||||||
nhooyr.io/websocket v1.8.7 // indirect
|
nhooyr.io/websocket v1.8.7 // indirect
|
||||||
|
8
go.sum
8
go.sum
@ -1044,8 +1044,8 @@ golang.org/x/crypto v0.0.0-20201117144127-c1f2f97bffc9/go.mod h1:jdWPYTVW3xRLrWP
|
|||||||
golang.org/x/crypto v0.0.0-20201221181555-eec23a3978ad/go.mod h1:jdWPYTVW3xRLrWPugEBEK3UY2ZEsg3UU495nc5E+M+I=
|
golang.org/x/crypto v0.0.0-20201221181555-eec23a3978ad/go.mod h1:jdWPYTVW3xRLrWPugEBEK3UY2ZEsg3UU495nc5E+M+I=
|
||||||
golang.org/x/crypto v0.0.0-20210220033148-5ea612d1eb83/go.mod h1:jdWPYTVW3xRLrWPugEBEK3UY2ZEsg3UU495nc5E+M+I=
|
golang.org/x/crypto v0.0.0-20210220033148-5ea612d1eb83/go.mod h1:jdWPYTVW3xRLrWPugEBEK3UY2ZEsg3UU495nc5E+M+I=
|
||||||
golang.org/x/crypto v0.0.0-20210322153248-0c34fe9e7dc2/go.mod h1:T9bdIzuCu7OtxOm1hfPfRQxPLYneinmdGuTeoZ9dtd4=
|
golang.org/x/crypto v0.0.0-20210322153248-0c34fe9e7dc2/go.mod h1:T9bdIzuCu7OtxOm1hfPfRQxPLYneinmdGuTeoZ9dtd4=
|
||||||
golang.org/x/crypto v0.0.0-20210813211128-0a44fdfbc16e h1:VvfwVmMH40bpMeizC9/K7ipM5Qjucuu16RWfneFPyhQ=
|
golang.org/x/crypto v0.0.0-20210817164053-32db794688a5 h1:HWj/xjIHfjYU5nVXpTM0s39J9CbLn7Cc5a7IC5rwsMQ=
|
||||||
golang.org/x/crypto v0.0.0-20210813211128-0a44fdfbc16e/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc=
|
golang.org/x/crypto v0.0.0-20210817164053-32db794688a5/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc=
|
||||||
golang.org/x/exp v0.0.0-20180321215751-8460e604b9de/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA=
|
golang.org/x/exp v0.0.0-20180321215751-8460e604b9de/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA=
|
||||||
golang.org/x/exp v0.0.0-20180807140117-3d87b88a115f/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA=
|
golang.org/x/exp v0.0.0-20180807140117-3d87b88a115f/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA=
|
||||||
golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA=
|
golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA=
|
||||||
@ -1420,8 +1420,8 @@ google.golang.org/genproto v0.0.0-20210310155132-4ce2db91004e/go.mod h1:FWY/as6D
|
|||||||
google.golang.org/genproto v0.0.0-20210319143718-93e7006c17a6/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no=
|
google.golang.org/genproto v0.0.0-20210319143718-93e7006c17a6/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no=
|
||||||
google.golang.org/genproto v0.0.0-20210402141018-6c239bbf2bb1/go.mod h1:9lPAdzaEmUacj36I+k7YKbEc5CXzPIeORRgDAUOu28A=
|
google.golang.org/genproto v0.0.0-20210402141018-6c239bbf2bb1/go.mod h1:9lPAdzaEmUacj36I+k7YKbEc5CXzPIeORRgDAUOu28A=
|
||||||
google.golang.org/genproto v0.0.0-20210602131652-f16073e35f0c/go.mod h1:UODoCrxHCcBojKKwX1terBiRUaqAsFqJiF615XL43r0=
|
google.golang.org/genproto v0.0.0-20210602131652-f16073e35f0c/go.mod h1:UODoCrxHCcBojKKwX1terBiRUaqAsFqJiF615XL43r0=
|
||||||
google.golang.org/genproto v0.0.0-20210816143620-e15ff196659d h1:fPtHPeysWvGVJwQFKu3B7H2DB2sOEsW7UTayKkWESKw=
|
google.golang.org/genproto v0.0.0-20210824181836-a4879c3d0e89 h1:x1dY+qZWu7fKPOOo4mM9kMcUfVVlDvHreE17KGDho00=
|
||||||
google.golang.org/genproto v0.0.0-20210816143620-e15ff196659d/go.mod h1:eFjDcFEctNawg4eG61bRv87N7iHBWyVhJu7u1kqDUXY=
|
google.golang.org/genproto v0.0.0-20210824181836-a4879c3d0e89/go.mod h1:eFjDcFEctNawg4eG61bRv87N7iHBWyVhJu7u1kqDUXY=
|
||||||
google.golang.org/grpc v1.33.2 h1:EQyQC3sa8M+p6Ulc8yy9SWSS2GVwyRc83gAbG8lrl4o=
|
google.golang.org/grpc v1.33.2 h1:EQyQC3sa8M+p6Ulc8yy9SWSS2GVwyRc83gAbG8lrl4o=
|
||||||
google.golang.org/grpc v1.33.2/go.mod h1:JMHMWHQWaTccqQQlmk3MJZS+GWXOdAesneDmEnv2fbc=
|
google.golang.org/grpc v1.33.2/go.mod h1:JMHMWHQWaTccqQQlmk3MJZS+GWXOdAesneDmEnv2fbc=
|
||||||
google.golang.org/grpc/cmd/protoc-gen-go-grpc v1.0.1/go.mod h1:6Kw0yEErY5E/yWrBtf03jp27GLLJujG4z/JK95pnjjw=
|
google.golang.org/grpc/cmd/protoc-gen-go-grpc v1.0.1/go.mod h1:6Kw0yEErY5E/yWrBtf03jp27GLLJujG4z/JK95pnjjw=
|
||||||
|
30
proto/buf.yaml
Normal file
30
proto/buf.yaml
Normal file
@ -0,0 +1,30 @@
|
|||||||
|
version: v1
|
||||||
|
lint:
|
||||||
|
use:
|
||||||
|
- DEFAULT
|
||||||
|
- COMMENTS
|
||||||
|
- FILE_LOWER_SNAKE_CASE
|
||||||
|
except:
|
||||||
|
- UNARY_RPC
|
||||||
|
- COMMENT_FIELD
|
||||||
|
- SERVICE_SUFFIX
|
||||||
|
- PACKAGE_VERSION_SUFFIX
|
||||||
|
- RPC_REQUEST_STANDARD_NAME
|
||||||
|
- RPC_REQUEST_RESPONSE_UNIQUE
|
||||||
|
- RPC_RESPONSE_STANDARD_NAME
|
||||||
|
- RPC_REQUEST_RESPONSE_UNIQUE
|
||||||
|
- COMMENT_MESSAGE
|
||||||
|
ignore:
|
||||||
|
- tendermint
|
||||||
|
- gogoproto
|
||||||
|
- cosmos_proto
|
||||||
|
- google
|
||||||
|
- confio
|
||||||
|
breaking:
|
||||||
|
use:
|
||||||
|
- FILE
|
||||||
|
ignore:
|
||||||
|
- tendermint
|
||||||
|
- gogoproto
|
||||||
|
- cosmos_proto
|
||||||
|
- google
|
@ -11,15 +11,23 @@ message Params {
|
|||||||
|
|
||||||
// evm denom represents the token denomination used to run the EVM state
|
// evm denom represents the token denomination used to run the EVM state
|
||||||
// transitions.
|
// transitions.
|
||||||
string evm_denom = 1 [(gogoproto.moretags) = "yaml:\"evm_denom\""];
|
string evm_denom = 1 [ (gogoproto.moretags) = "yaml:\"evm_denom\"" ];
|
||||||
// enable create toggles state transitions that use the vm.Create function
|
// enable create toggles state transitions that use the vm.Create function
|
||||||
bool enable_create = 2 [(gogoproto.moretags) = "yaml:\"enable_create\""];
|
bool enable_create = 2 [ (gogoproto.moretags) = "yaml:\"enable_create\"" ];
|
||||||
// enable call toggles state transitions that use the vm.Call function
|
// enable call toggles state transitions that use the vm.Call function
|
||||||
bool enable_call = 3 [(gogoproto.moretags) = "yaml:\"enable_call\""];
|
bool enable_call = 3 [ (gogoproto.moretags) = "yaml:\"enable_call\"" ];
|
||||||
// extra eips defines the additional EIPs for the vm.Config
|
// extra eips defines the additional EIPs for the vm.Config
|
||||||
repeated int64 extra_eips = 4 [(gogoproto.customname) = "ExtraEIPs", (gogoproto.moretags) = "yaml:\"extra_eips\""];
|
repeated int64 extra_eips = 4 [
|
||||||
|
(gogoproto.customname) = "ExtraEIPs",
|
||||||
|
(gogoproto.moretags) = "yaml:\"extra_eips\""
|
||||||
|
];
|
||||||
// chain config defines the EVM chain configuration parameters
|
// chain config defines the EVM chain configuration parameters
|
||||||
ChainConfig chain_config = 5 [(gogoproto.moretags) = "yaml:\"chain_config\"", (gogoproto.nullable) = false];
|
ChainConfig chain_config = 5 [
|
||||||
|
(gogoproto.moretags) = "yaml:\"chain_config\"",
|
||||||
|
(gogoproto.nullable) = false
|
||||||
|
];
|
||||||
|
// no base fee forces the EIP-1559 base fee to 0 (needed for 0 price calls)
|
||||||
|
bool no_base_fee = 6 [ (gogoproto.moretags) = "yaml:\"no_base_fee\"" ];
|
||||||
}
|
}
|
||||||
|
|
||||||
// ChainConfig defines the Ethereum ChainConfig parameters using *sdk.Int values
|
// ChainConfig defines the Ethereum ChainConfig parameters using *sdk.Int values
|
||||||
@ -37,8 +45,10 @@ message ChainConfig {
|
|||||||
(gogoproto.moretags) = "yaml:\"dao_fork_block\""
|
(gogoproto.moretags) = "yaml:\"dao_fork_block\""
|
||||||
];
|
];
|
||||||
// Whether the nodes supports or opposes the DAO hard-fork
|
// Whether the nodes supports or opposes the DAO hard-fork
|
||||||
bool dao_fork_support = 3
|
bool dao_fork_support = 3 [
|
||||||
[(gogoproto.customname) = "DAOForkSupport", (gogoproto.moretags) = "yaml:\"dao_fork_support\""];
|
(gogoproto.customname) = "DAOForkSupport",
|
||||||
|
(gogoproto.moretags) = "yaml:\"dao_fork_support\""
|
||||||
|
];
|
||||||
// EIP150 implements the Gas price changes
|
// EIP150 implements the Gas price changes
|
||||||
// (https://github.com/ethereum/EIPs/issues/150) EIP150 HF block (nil no fork)
|
// (https://github.com/ethereum/EIPs/issues/150) EIP150 HF block (nil no fork)
|
||||||
string eip150_block = 4 [
|
string eip150_block = 4 [
|
||||||
@ -47,7 +57,10 @@ message ChainConfig {
|
|||||||
(gogoproto.moretags) = "yaml:\"eip150_block\""
|
(gogoproto.moretags) = "yaml:\"eip150_block\""
|
||||||
];
|
];
|
||||||
// EIP150 HF hash (needed for header only clients as only gas pricing changed)
|
// EIP150 HF hash (needed for header only clients as only gas pricing changed)
|
||||||
string eip150_hash = 5 [(gogoproto.customname) = "EIP150Hash", (gogoproto.moretags) = "yaml:\"byzantium_block\""];
|
string eip150_hash = 5 [
|
||||||
|
(gogoproto.customname) = "EIP150Hash",
|
||||||
|
(gogoproto.moretags) = "yaml:\"byzantium_block\""
|
||||||
|
];
|
||||||
// EIP155Block HF block
|
// EIP155Block HF block
|
||||||
string eip155_block = 6 [
|
string eip155_block = 6 [
|
||||||
(gogoproto.customname) = "EIP155Block",
|
(gogoproto.customname) = "EIP155Block",
|
||||||
@ -90,22 +103,19 @@ message ChainConfig {
|
|||||||
(gogoproto.customtype) = "github.com/cosmos/cosmos-sdk/types.Int",
|
(gogoproto.customtype) = "github.com/cosmos/cosmos-sdk/types.Int",
|
||||||
(gogoproto.moretags) = "yaml:\"berlin_block\""
|
(gogoproto.moretags) = "yaml:\"berlin_block\""
|
||||||
];
|
];
|
||||||
// YOLO v3: Gas repricings
|
// DEPRECATED: EWASM and YOLOV3 block have been deprecated
|
||||||
string yolo_v3_block = 14 [
|
reserved 14, 15;
|
||||||
(gogoproto.customtype) = "github.com/cosmos/cosmos-sdk/types.Int",
|
reserved "yolo_v3_block", "ewasm_block";
|
||||||
(gogoproto.moretags) = "yaml:\"yolo_v3_block\""
|
|
||||||
];
|
|
||||||
// EWASM switch block (nil no fork, 0 = already activated)
|
|
||||||
string ewasm_block = 15 [
|
|
||||||
(gogoproto.customname) = "EWASMBlock",
|
|
||||||
(gogoproto.customtype) = "github.com/cosmos/cosmos-sdk/types.Int",
|
|
||||||
(gogoproto.moretags) = "yaml:\"ewasm_block\""
|
|
||||||
];
|
|
||||||
// Catalyst switch block (nil = no fork, 0 = already on catalyst)
|
// Catalyst switch block (nil = no fork, 0 = already on catalyst)
|
||||||
string catalyst_block = 16 [
|
string catalyst_block = 16 [
|
||||||
(gogoproto.customtype) = "github.com/cosmos/cosmos-sdk/types.Int",
|
(gogoproto.customtype) = "github.com/cosmos/cosmos-sdk/types.Int",
|
||||||
(gogoproto.moretags) = "yaml:\"catalyst_block\""
|
(gogoproto.moretags) = "yaml:\"catalyst_block\""
|
||||||
];
|
];
|
||||||
|
// London switch block (nil = no fork, 0 = already on london)
|
||||||
|
string london_block = 17 [
|
||||||
|
(gogoproto.customtype) = "github.com/cosmos/cosmos-sdk/types.Int",
|
||||||
|
(gogoproto.moretags) = "yaml:\"london_block\""
|
||||||
|
];
|
||||||
}
|
}
|
||||||
|
|
||||||
// State represents a single Storage key value pair item.
|
// State represents a single Storage key value pair item.
|
||||||
@ -139,15 +149,15 @@ message Log {
|
|||||||
// but not secured by consensus.
|
// but not secured by consensus.
|
||||||
|
|
||||||
// block in which the transaction was included
|
// block in which the transaction was included
|
||||||
uint64 block_number = 4 [(gogoproto.jsontag) = "blockNumber"];
|
uint64 block_number = 4 [ (gogoproto.jsontag) = "blockNumber" ];
|
||||||
// hash of the transaction
|
// hash of the transaction
|
||||||
string tx_hash = 5 [(gogoproto.jsontag) = "transactionHash"];
|
string tx_hash = 5 [ (gogoproto.jsontag) = "transactionHash" ];
|
||||||
// index of the transaction in the block
|
// index of the transaction in the block
|
||||||
uint64 tx_index = 6 [(gogoproto.jsontag) = "transactionIndex"];
|
uint64 tx_index = 6 [ (gogoproto.jsontag) = "transactionIndex" ];
|
||||||
// hash of the block in which the transaction was included
|
// hash of the block in which the transaction was included
|
||||||
string block_hash = 7 [(gogoproto.jsontag) = "blockHash"];
|
string block_hash = 7 [ (gogoproto.jsontag) = "blockHash" ];
|
||||||
// index of the log in the block
|
// index of the log in the block
|
||||||
uint64 index = 8 [(gogoproto.jsontag) = "logIndex"];
|
uint64 index = 8 [ (gogoproto.jsontag) = "logIndex" ];
|
||||||
|
|
||||||
// The Removed field is true if this log was reverted due to a chain
|
// The Removed field is true if this log was reverted due to a chain
|
||||||
// reorganisation. You must pay attention to this field if you receive logs
|
// reorganisation. You must pay attention to this field if you receive logs
|
||||||
@ -162,12 +172,16 @@ message TxResult {
|
|||||||
// contract_address contains the ethereum address of the created contract (if
|
// contract_address contains the ethereum address of the created contract (if
|
||||||
// any). If the state transition is an evm.Call, the contract address will be
|
// any). If the state transition is an evm.Call, the contract address will be
|
||||||
// empty.
|
// empty.
|
||||||
string contract_address = 1 [(gogoproto.moretags) = "yaml:\"contract_address\""];
|
string contract_address = 1
|
||||||
|
[ (gogoproto.moretags) = "yaml:\"contract_address\"" ];
|
||||||
// bloom represents the bloom filter bytes
|
// bloom represents the bloom filter bytes
|
||||||
bytes bloom = 2;
|
bytes bloom = 2;
|
||||||
// tx_logs contains the transaction hash and the proto-compatible ethereum
|
// tx_logs contains the transaction hash and the proto-compatible ethereum
|
||||||
// logs.
|
// logs.
|
||||||
TransactionLogs tx_logs = 3 [(gogoproto.moretags) = "yaml:\"tx_logs\"", (gogoproto.nullable) = false];
|
TransactionLogs tx_logs = 3 [
|
||||||
|
(gogoproto.moretags) = "yaml:\"tx_logs\"",
|
||||||
|
(gogoproto.nullable) = false
|
||||||
|
];
|
||||||
// ret defines the bytes from the execution.
|
// ret defines the bytes from the execution.
|
||||||
bytes ret = 4;
|
bytes ret = 4;
|
||||||
// reverted flag is set to true when the call has been reverted
|
// reverted flag is set to true when the call has been reverted
|
||||||
@ -183,5 +197,5 @@ message AccessTuple {
|
|||||||
// hex formatted ethereum address
|
// hex formatted ethereum address
|
||||||
string address = 1;
|
string address = 1;
|
||||||
// hex formatted hashes of the storage keys
|
// hex formatted hashes of the storage keys
|
||||||
repeated string storage_keys = 2 [(gogoproto.jsontag) = "storageKeys"];
|
repeated string storage_keys = 2 [ (gogoproto.jsontag) = "storageKeys" ];
|
||||||
}
|
}
|
@ -68,9 +68,9 @@ service Query {
|
|||||||
option (google.api.http).get = "/ethermint/evm/v1/params";
|
option (google.api.http).get = "/ethermint/evm/v1/params";
|
||||||
}
|
}
|
||||||
|
|
||||||
// StaticCall queries the static call value of x/evm module.
|
// BaseFee queries the base fee of the parent block of the current block.
|
||||||
rpc StaticCall(QueryStaticCallRequest) returns (QueryStaticCallResponse) {
|
rpc BaseFee(QueryBaseFeeRequest) returns (QueryBaseFeeResponse) {
|
||||||
option (google.api.http).get = "/ethermint/evm/v1/static_call";
|
option (google.api.http).get = "/ethermint/evm/v1/base_fee";
|
||||||
}
|
}
|
||||||
|
|
||||||
// EthCall implements the `eth_call` rpc api
|
// EthCall implements the `eth_call` rpc api
|
||||||
@ -255,12 +255,16 @@ message QueryParamsResponse {
|
|||||||
Params params = 1 [ (gogoproto.nullable) = false ];
|
Params params = 1 [ (gogoproto.nullable) = false ];
|
||||||
}
|
}
|
||||||
|
|
||||||
// QueryStaticCallRequest defines static call request
|
// QueryBaseFeeRequest defines the request type for querying the EIP1559 base
|
||||||
message QueryStaticCallRequest {
|
// fee.
|
||||||
// address is the ethereum contract hex address to for static call.
|
message QueryBaseFeeRequest {}
|
||||||
string address = 1;
|
|
||||||
// static call input generated from abi
|
// BaseFeeResponse returns the EIP1559 base fee.
|
||||||
bytes input = 2;
|
message QueryBaseFeeResponse {
|
||||||
|
string base_fee = 1 [
|
||||||
|
(gogoproto.customtype) = "github.com/cosmos/cosmos-sdk/types.Int",
|
||||||
|
(gogoproto.nullable) = false
|
||||||
|
];
|
||||||
}
|
}
|
||||||
|
|
||||||
// QueryStaticCallRequest defines static call response
|
// QueryStaticCallRequest defines static call response
|
||||||
|
25
proto/ethermint/types/v1/web3.proto
Normal file
25
proto/ethermint/types/v1/web3.proto
Normal file
@ -0,0 +1,25 @@
|
|||||||
|
syntax = "proto3";
|
||||||
|
package ethermint.types.v1;
|
||||||
|
|
||||||
|
import "gogoproto/gogo.proto";
|
||||||
|
|
||||||
|
option go_package = "github.com/tharsis/ethermint/types";
|
||||||
|
|
||||||
|
message ExtensionOptionsWeb3Tx {
|
||||||
|
option (gogoproto.goproto_getters) = false;
|
||||||
|
|
||||||
|
// typed data chain id used only in EIP712 Domain and should match
|
||||||
|
// Ethereum network ID in a Web3 provider (e.g. Metamask).
|
||||||
|
uint64 typed_data_chain_id = 1 [
|
||||||
|
(gogoproto.jsontag) = "typedDataChainID,omitempty",
|
||||||
|
(gogoproto.customname) = "TypedDataChainID"
|
||||||
|
];
|
||||||
|
|
||||||
|
// fee payer is an account address for the fee payer. It will be validated
|
||||||
|
// during EIP712 signature checking.
|
||||||
|
string fee_payer = 2 [(gogoproto.jsontag) = "feePayer,omitempty"];
|
||||||
|
|
||||||
|
// fee payer sig is a signature data from the fee paying account,
|
||||||
|
// allows to perform fee delegation when using EIP712 Domain.
|
||||||
|
bytes fee_payer_sig = 3 [(gogoproto.jsontag) = "feePayerSig,omitempty"];
|
||||||
|
}
|
@ -1,22 +0,0 @@
|
|||||||
syntax = "proto3";
|
|
||||||
package ethermint.types.v1;
|
|
||||||
|
|
||||||
import "gogoproto/gogo.proto";
|
|
||||||
|
|
||||||
option go_package = "github.com/tharsis/ethermint/types";
|
|
||||||
|
|
||||||
message ExtensionOptionsWeb3Tx {
|
|
||||||
option (gogoproto.goproto_getters) = false;
|
|
||||||
|
|
||||||
// typedDataChainID used only in EIP712 Domain and should match
|
|
||||||
// Ethereum network ID in a Web3 provider (e.g. Metamask).
|
|
||||||
uint64 typedDataChainID = 1;
|
|
||||||
|
|
||||||
// feePayer is an account address for the fee payer. It will be validated
|
|
||||||
// during EIP712 signature checking.
|
|
||||||
string feePayer = 2;
|
|
||||||
|
|
||||||
// feePayerSig is a signature data from the fee paying account,
|
|
||||||
// allows to perform fee delegation when using EIP712 Domain.
|
|
||||||
bytes feePayerSig = 3;
|
|
||||||
}
|
|
6
buf.yaml → third_party/proto/buf.yaml
vendored
6
buf.yaml → third_party/proto/buf.yaml
vendored
@ -1,9 +1,7 @@
|
|||||||
|
version: v1
|
||||||
build:
|
build:
|
||||||
roots:
|
|
||||||
- proto
|
|
||||||
- third_party/proto
|
|
||||||
excludes:
|
excludes:
|
||||||
- third_party/proto/google/protobuf
|
- google/protobuf
|
||||||
lint:
|
lint:
|
||||||
use:
|
use:
|
||||||
- DEFAULT
|
- DEFAULT
|
@ -3,9 +3,7 @@ package cosmos.authz.v1beta1;
|
|||||||
|
|
||||||
import "cosmos_proto/cosmos.proto";
|
import "cosmos_proto/cosmos.proto";
|
||||||
import "gogoproto/gogo.proto";
|
import "gogoproto/gogo.proto";
|
||||||
import "google/protobuf/timestamp.proto";
|
|
||||||
import "google/protobuf/any.proto";
|
import "google/protobuf/any.proto";
|
||||||
import "cosmos/base/abci/v1beta1/abci.proto";
|
|
||||||
import "cosmos/authz/v1beta1/authz.proto";
|
import "cosmos/authz/v1beta1/authz.proto";
|
||||||
|
|
||||||
option go_package = "github.com/cosmos/cosmos-sdk/x/authz";
|
option go_package = "github.com/cosmos/cosmos-sdk/x/authz";
|
||||||
|
@ -1,7 +1,6 @@
|
|||||||
syntax = "proto3";
|
syntax = "proto3";
|
||||||
package cosmos.feegrant.v1beta1;
|
package cosmos.feegrant.v1beta1;
|
||||||
|
|
||||||
import "gogoproto/gogo.proto";
|
|
||||||
import "google/protobuf/any.proto";
|
import "google/protobuf/any.proto";
|
||||||
import "cosmos_proto/cosmos.proto";
|
import "cosmos_proto/cosmos.proto";
|
||||||
|
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
// Code generated by protoc-gen-gogo. DO NOT EDIT.
|
// Code generated by protoc-gen-gogo. DO NOT EDIT.
|
||||||
// source: ethermint/types/web3.proto
|
// source: ethermint/types/v1/web3.proto
|
||||||
|
|
||||||
package types
|
package types
|
||||||
|
|
||||||
@ -24,22 +24,22 @@ var _ = math.Inf
|
|||||||
const _ = proto.GoGoProtoPackageIsVersion3 // please upgrade the proto package
|
const _ = proto.GoGoProtoPackageIsVersion3 // please upgrade the proto package
|
||||||
|
|
||||||
type ExtensionOptionsWeb3Tx struct {
|
type ExtensionOptionsWeb3Tx struct {
|
||||||
// typedDataChainID used only in EIP712 Domain and should match
|
// typed data chain id used only in EIP712 Domain and should match
|
||||||
// Ethereum network ID in a Web3 provider (e.g. Metamask).
|
// Ethereum network ID in a Web3 provider (e.g. Metamask).
|
||||||
TypedDataChainID uint64 `protobuf:"varint,1,opt,name=typedDataChainID,proto3" json:"typedDataChainID,omitempty"`
|
TypedDataChainID uint64 `protobuf:"varint,1,opt,name=typed_data_chain_id,json=typedDataChainId,proto3" json:"typedDataChainID,omitempty"`
|
||||||
// feePayer is an account address for the fee payer. It will be validated
|
// fee payer is an account address for the fee payer. It will be validated
|
||||||
// during EIP712 signature checking.
|
// during EIP712 signature checking.
|
||||||
FeePayer string `protobuf:"bytes,2,opt,name=feePayer,proto3" json:"feePayer,omitempty"`
|
FeePayer string `protobuf:"bytes,2,opt,name=fee_payer,json=feePayer,proto3" json:"feePayer,omitempty"`
|
||||||
// feePayerSig is a signature data from the fee paying account,
|
// fee payer sig is a signature data from the fee paying account,
|
||||||
// allows to perform fee delegation when using EIP712 Domain.
|
// allows to perform fee delegation when using EIP712 Domain.
|
||||||
FeePayerSig []byte `protobuf:"bytes,3,opt,name=feePayerSig,proto3" json:"feePayerSig,omitempty"`
|
FeePayerSig []byte `protobuf:"bytes,3,opt,name=fee_payer_sig,json=feePayerSig,proto3" json:"feePayerSig,omitempty"`
|
||||||
}
|
}
|
||||||
|
|
||||||
func (m *ExtensionOptionsWeb3Tx) Reset() { *m = ExtensionOptionsWeb3Tx{} }
|
func (m *ExtensionOptionsWeb3Tx) Reset() { *m = ExtensionOptionsWeb3Tx{} }
|
||||||
func (m *ExtensionOptionsWeb3Tx) String() string { return proto.CompactTextString(m) }
|
func (m *ExtensionOptionsWeb3Tx) String() string { return proto.CompactTextString(m) }
|
||||||
func (*ExtensionOptionsWeb3Tx) ProtoMessage() {}
|
func (*ExtensionOptionsWeb3Tx) ProtoMessage() {}
|
||||||
func (*ExtensionOptionsWeb3Tx) Descriptor() ([]byte, []int) {
|
func (*ExtensionOptionsWeb3Tx) Descriptor() ([]byte, []int) {
|
||||||
return fileDescriptor_ca05fcaf1424711f, []int{0}
|
return fileDescriptor_9eb7cd56e3c92bc3, []int{0}
|
||||||
}
|
}
|
||||||
func (m *ExtensionOptionsWeb3Tx) XXX_Unmarshal(b []byte) error {
|
func (m *ExtensionOptionsWeb3Tx) XXX_Unmarshal(b []byte) error {
|
||||||
return m.Unmarshal(b)
|
return m.Unmarshal(b)
|
||||||
@ -72,25 +72,29 @@ func init() {
|
|||||||
proto.RegisterType((*ExtensionOptionsWeb3Tx)(nil), "ethermint.types.v1.ExtensionOptionsWeb3Tx")
|
proto.RegisterType((*ExtensionOptionsWeb3Tx)(nil), "ethermint.types.v1.ExtensionOptionsWeb3Tx")
|
||||||
}
|
}
|
||||||
|
|
||||||
func init() { proto.RegisterFile("ethermint/types/web3.proto", fileDescriptor_ca05fcaf1424711f) }
|
func init() { proto.RegisterFile("ethermint/types/v1/web3.proto", fileDescriptor_9eb7cd56e3c92bc3) }
|
||||||
|
|
||||||
var fileDescriptor_ca05fcaf1424711f = []byte{
|
var fileDescriptor_9eb7cd56e3c92bc3 = []byte{
|
||||||
// 229 bytes of a gzipped FileDescriptorProto
|
// 303 bytes of a gzipped FileDescriptorProto
|
||||||
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xe2, 0x92, 0x4a, 0x2d, 0xc9, 0x48,
|
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xe2, 0x92, 0x4d, 0x2d, 0xc9, 0x48,
|
||||||
0x2d, 0xca, 0xcd, 0xcc, 0x2b, 0xd1, 0x2f, 0xa9, 0x2c, 0x48, 0x2d, 0xd6, 0x2f, 0x4f, 0x4d, 0x32,
|
0x2d, 0xca, 0xcd, 0xcc, 0x2b, 0xd1, 0x2f, 0xa9, 0x2c, 0x48, 0x2d, 0xd6, 0x2f, 0x33, 0xd4, 0x2f,
|
||||||
0xd6, 0x2b, 0x28, 0xca, 0x2f, 0xc9, 0x17, 0x12, 0x82, 0xcb, 0xe9, 0x81, 0xe5, 0xf4, 0xca, 0x0c,
|
0x4f, 0x4d, 0x32, 0xd6, 0x2b, 0x28, 0xca, 0x2f, 0xc9, 0x17, 0x12, 0x82, 0x4b, 0xeb, 0x81, 0xa5,
|
||||||
0xa5, 0x44, 0xd2, 0xf3, 0xd3, 0xf3, 0xc1, 0xd2, 0xfa, 0x20, 0x16, 0x44, 0xa5, 0x52, 0x07, 0x23,
|
0xf5, 0xca, 0x0c, 0xa5, 0x44, 0xd2, 0xf3, 0xd3, 0xf3, 0xc1, 0xd2, 0xfa, 0x20, 0x16, 0x44, 0xa5,
|
||||||
0x97, 0x98, 0x6b, 0x45, 0x49, 0x6a, 0x5e, 0x71, 0x66, 0x7e, 0x9e, 0x7f, 0x41, 0x49, 0x66, 0x7e,
|
0xd2, 0x57, 0x46, 0x2e, 0x31, 0xd7, 0x8a, 0x92, 0xd4, 0xbc, 0xe2, 0xcc, 0xfc, 0x3c, 0xff, 0x82,
|
||||||
0x5e, 0x71, 0x78, 0x6a, 0x92, 0x71, 0x48, 0x85, 0x90, 0x16, 0x97, 0x00, 0x48, 0x73, 0x8a, 0x4b,
|
0x92, 0xcc, 0xfc, 0xbc, 0xe2, 0xf0, 0xd4, 0x24, 0xe3, 0x90, 0x0a, 0xa1, 0x44, 0x2e, 0x61, 0x90,
|
||||||
0x62, 0x49, 0xa2, 0x73, 0x46, 0x62, 0x66, 0x9e, 0xa7, 0x8b, 0x04, 0xa3, 0x02, 0xa3, 0x06, 0x4b,
|
0xe6, 0x94, 0xf8, 0x94, 0xc4, 0x92, 0xc4, 0xf8, 0xe4, 0x8c, 0xc4, 0xcc, 0xbc, 0xf8, 0xcc, 0x14,
|
||||||
0x10, 0x86, 0xb8, 0x90, 0x14, 0x17, 0x47, 0x5a, 0x6a, 0x6a, 0x40, 0x62, 0x65, 0x6a, 0x91, 0x04,
|
0x09, 0x46, 0x05, 0x46, 0x0d, 0x16, 0x27, 0xa3, 0x47, 0xf7, 0xe4, 0x05, 0x42, 0x40, 0xd2, 0x2e,
|
||||||
0x93, 0x02, 0xa3, 0x06, 0x67, 0x10, 0x9c, 0x2f, 0xa4, 0xc0, 0xc5, 0x0d, 0x63, 0x07, 0x67, 0xa6,
|
0x89, 0x25, 0x89, 0xce, 0x20, 0x49, 0x4f, 0x97, 0x57, 0xf7, 0xe4, 0xa5, 0x4a, 0xd0, 0xc4, 0x74,
|
||||||
0x4b, 0x30, 0x2b, 0x30, 0x6a, 0xf0, 0x04, 0x21, 0x0b, 0x59, 0xb1, 0x74, 0x2c, 0x90, 0x67, 0x70,
|
0xf2, 0x73, 0x33, 0x4b, 0x52, 0x73, 0x0b, 0x4a, 0x2a, 0x83, 0x04, 0xd0, 0xe4, 0x52, 0x84, 0x8c,
|
||||||
0xb2, 0x39, 0xf1, 0x48, 0x8e, 0xf1, 0xc2, 0x23, 0x39, 0xc6, 0x07, 0x8f, 0xe4, 0x18, 0x27, 0x3c,
|
0xb9, 0x38, 0xd3, 0x52, 0x53, 0xe3, 0x0b, 0x12, 0x2b, 0x53, 0x8b, 0x24, 0x98, 0x14, 0x18, 0x35,
|
||||||
0x96, 0x63, 0xb8, 0xf0, 0x58, 0x8e, 0xe1, 0xc6, 0x63, 0x39, 0x86, 0x28, 0xa5, 0xf4, 0xcc, 0x92,
|
0x38, 0x9d, 0xc4, 0x5e, 0xdd, 0x93, 0x17, 0x4a, 0x4b, 0x4d, 0x0d, 0x00, 0x89, 0x21, 0x69, 0xe6,
|
||||||
0x8c, 0xd2, 0x24, 0xbd, 0xe4, 0xfc, 0x5c, 0xfd, 0x92, 0x8c, 0xc4, 0xa2, 0xe2, 0xcc, 0x62, 0x7d,
|
0x80, 0x89, 0x09, 0xd9, 0x72, 0xf1, 0xc2, 0x35, 0xc5, 0x17, 0x67, 0xa6, 0x4b, 0x30, 0x2b, 0x30,
|
||||||
0x34, 0xdf, 0x27, 0xb1, 0x81, 0xfd, 0x63, 0x0c, 0x08, 0x00, 0x00, 0xff, 0xff, 0x40, 0x32, 0x07,
|
0x6a, 0xf0, 0x38, 0x49, 0xbe, 0xba, 0x27, 0x2f, 0x0a, 0x53, 0x14, 0x9c, 0x99, 0x8e, 0xa4, 0x97,
|
||||||
0x33, 0x17, 0x01, 0x00, 0x00,
|
0x1b, 0x49, 0xd8, 0x8a, 0xa5, 0x63, 0x81, 0x3c, 0x83, 0x93, 0xcd, 0x89, 0x47, 0x72, 0x8c, 0x17,
|
||||||
|
0x1e, 0xc9, 0x31, 0x3e, 0x78, 0x24, 0xc7, 0x38, 0xe1, 0xb1, 0x1c, 0xc3, 0x85, 0xc7, 0x72, 0x0c,
|
||||||
|
0x37, 0x1e, 0xcb, 0x31, 0x44, 0x29, 0xa5, 0x67, 0x96, 0x64, 0x94, 0x26, 0xe9, 0x25, 0xe7, 0xe7,
|
||||||
|
0xea, 0x97, 0x64, 0x24, 0x16, 0x15, 0x67, 0x16, 0xeb, 0xa3, 0x85, 0x76, 0x12, 0x1b, 0x38, 0xf0,
|
||||||
|
0x8c, 0x01, 0x01, 0x00, 0x00, 0xff, 0xff, 0x0c, 0x12, 0x62, 0x22, 0x87, 0x01, 0x00, 0x00,
|
||||||
}
|
}
|
||||||
|
|
||||||
func (m *ExtensionOptionsWeb3Tx) Marshal() (dAtA []byte, err error) {
|
func (m *ExtensionOptionsWeb3Tx) Marshal() (dAtA []byte, err error) {
|
||||||
|
@ -1,6 +1,7 @@
|
|||||||
package keeper
|
package keeper
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"fmt"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
abci "github.com/tendermint/tendermint/abci/types"
|
abci "github.com/tendermint/tendermint/abci/types"
|
||||||
@ -29,7 +30,23 @@ func (k *Keeper) EndBlock(ctx sdk.Context, req abci.RequestEndBlock) []abci.Vali
|
|||||||
infCtx := ctx.WithGasMeter(sdk.NewInfiniteGasMeter())
|
infCtx := ctx.WithGasMeter(sdk.NewInfiniteGasMeter())
|
||||||
k.WithContext(infCtx)
|
k.WithContext(infCtx)
|
||||||
|
|
||||||
k.SetBlockBloom(infCtx, req.Height, ethtypes.BytesToBloom(k.GetBlockBloomTransient().Bytes()))
|
baseFee := k.CalculateBaseFee(ctx)
|
||||||
|
|
||||||
|
// only set base fee if the NoBaseFee param is false
|
||||||
|
if baseFee != nil {
|
||||||
|
k.SetBaseFee(ctx, baseFee)
|
||||||
|
k.SetBlockGasUsed(ctx)
|
||||||
|
|
||||||
|
k.Ctx().EventManager().EmitEvent(sdk.NewEvent(
|
||||||
|
"block_gas",
|
||||||
|
sdk.NewAttribute("height", fmt.Sprintf("%d", ctx.BlockHeight())),
|
||||||
|
sdk.NewAttribute("amount", fmt.Sprintf("%d", ctx.BlockGasMeter().GasConsumedToLimit())),
|
||||||
|
))
|
||||||
|
}
|
||||||
|
|
||||||
|
bloom := ethtypes.BytesToBloom(k.GetBlockBloomTransient().Bytes())
|
||||||
|
k.SetBlockBloom(infCtx, req.Height, bloom)
|
||||||
|
|
||||||
k.WithContext(ctx)
|
k.WithContext(ctx)
|
||||||
|
|
||||||
return []abci.ValidatorUpdate{}
|
return []abci.ValidatorUpdate{}
|
||||||
|
89
x/evm/keeper/eip1559.go
Normal file
89
x/evm/keeper/eip1559.go
Normal file
@ -0,0 +1,89 @@
|
|||||||
|
package keeper
|
||||||
|
|
||||||
|
import (
|
||||||
|
"math/big"
|
||||||
|
|
||||||
|
sdk "github.com/cosmos/cosmos-sdk/types"
|
||||||
|
|
||||||
|
"github.com/ethereum/go-ethereum/common"
|
||||||
|
"github.com/ethereum/go-ethereum/common/math"
|
||||||
|
|
||||||
|
// "github.com/ethereum/go-ethereum/params"
|
||||||
|
|
||||||
|
"github.com/tharsis/ethermint/x/evm/types"
|
||||||
|
)
|
||||||
|
|
||||||
|
// CalculateBaseFee calculates the base fee for the current block. This is only calculated once per
|
||||||
|
// block during EndBlock. If the NoBaseFee parameter is enabled, this function returns nil.
|
||||||
|
// NOTE: This code is inspired from the go-ethereum EIP1559 implementation and adapted to Cosmos SDK-based
|
||||||
|
// chains. For the canonical code refer to: https://github.com/ethereum/go-ethereum/blob/master/consensus/misc/eip1559.go
|
||||||
|
func (k Keeper) CalculateBaseFee(ctx sdk.Context) *big.Int {
|
||||||
|
consParams := ctx.ConsensusParams()
|
||||||
|
params := k.GetParams(ctx)
|
||||||
|
|
||||||
|
if params.NoBaseFee {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
chainConfig := params.ChainConfig
|
||||||
|
cfg := chainConfig.EthereumConfig(k.eip155ChainID)
|
||||||
|
|
||||||
|
// If the current block is the first EIP-1559 block, return the InitialBaseFee.
|
||||||
|
// if !chainConfig.EthereumConfig(k.eip155ChainID).IsLondon(big.NewInt(ctx.BlockHeight())) {
|
||||||
|
// return new(big.Int).SetUint64(types.InitialBaseFee)
|
||||||
|
// }
|
||||||
|
|
||||||
|
// FIXME: remove and uncomment line above
|
||||||
|
height := big.NewInt(ctx.BlockHeight())
|
||||||
|
|
||||||
|
rules := cfg.Rules(height)
|
||||||
|
if rules.IsBerlin || cfg.IsMuirGlacier(height) || rules.IsIstanbul || rules.IsByzantium || rules.IsConstantinople {
|
||||||
|
return new(big.Int).SetUint64(types.InitialBaseFee)
|
||||||
|
}
|
||||||
|
|
||||||
|
// get the block gas used and the base fee values for the parent block.
|
||||||
|
parentBaseFee := k.GetBaseFee(ctx)
|
||||||
|
parentGasUsed := k.GetBlockGasUsed(ctx)
|
||||||
|
|
||||||
|
gasLimit := new(big.Int).SetUint64(math.MaxUint64)
|
||||||
|
if consParams != nil && consParams.Block.MaxGas > -1 {
|
||||||
|
gasLimit = big.NewInt(consParams.Block.MaxGas)
|
||||||
|
}
|
||||||
|
|
||||||
|
parentGasTargetBig := new(big.Int).Div(gasLimit, big.NewInt(types.ElasticityMultiplier)) // TODO: update to geth
|
||||||
|
if !parentGasTargetBig.IsUint64() {
|
||||||
|
return new(big.Int).SetUint64(types.InitialBaseFee) // TODO: update to geth
|
||||||
|
}
|
||||||
|
|
||||||
|
parentGasTarget := parentGasTargetBig.Uint64()
|
||||||
|
baseFeeChangeDenominator := new(big.Int).SetUint64(types.BaseFeeChangeDenominator) // TODO: update to geth
|
||||||
|
|
||||||
|
// If the parent gasUsed is the same as the target, the baseFee remains unchanged.
|
||||||
|
if parentGasUsed == parentGasTarget {
|
||||||
|
return new(big.Int).Set(parentBaseFee)
|
||||||
|
}
|
||||||
|
|
||||||
|
if parentGasUsed > parentGasTarget {
|
||||||
|
// If the parent block used more gas than its target, the baseFee should increase.
|
||||||
|
gasUsedDelta := new(big.Int).SetUint64(parentGasUsed - parentGasTarget)
|
||||||
|
x := new(big.Int).Mul(parentBaseFee, gasUsedDelta)
|
||||||
|
y := x.Div(x, parentGasTargetBig)
|
||||||
|
baseFeeDelta := math.BigMax(
|
||||||
|
x.Div(y, baseFeeChangeDenominator),
|
||||||
|
common.Big1,
|
||||||
|
)
|
||||||
|
|
||||||
|
return x.Add(parentBaseFee, baseFeeDelta)
|
||||||
|
}
|
||||||
|
|
||||||
|
// Otherwise if the parent block used less gas than its target, the baseFee should decrease.
|
||||||
|
gasUsedDelta := new(big.Int).SetUint64(parentGasTarget - parentGasUsed)
|
||||||
|
x := new(big.Int).Mul(parentBaseFee, gasUsedDelta)
|
||||||
|
y := x.Div(x, parentGasTargetBig)
|
||||||
|
baseFeeDelta := x.Div(y, baseFeeChangeDenominator)
|
||||||
|
|
||||||
|
return math.BigMax(
|
||||||
|
x.Sub(parentBaseFee, baseFeeDelta),
|
||||||
|
common.Big0,
|
||||||
|
)
|
||||||
|
}
|
@ -292,69 +292,13 @@ func (k Keeper) Params(c context.Context, _ *types.QueryParamsRequest) (*types.Q
|
|||||||
}, nil
|
}, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
// StaticCall implements Query/StaticCall gRPCP method
|
// BaseFee implements the Query/BaseFee gRPC method
|
||||||
func (k Keeper) StaticCall(c context.Context, req *types.QueryStaticCallRequest) (*types.QueryStaticCallResponse, error) {
|
func (k Keeper) BaseFee(c context.Context, _ *types.QueryBaseFeeRequest) (*types.QueryBaseFeeResponse, error) {
|
||||||
if req == nil {
|
_ = sdk.UnwrapSDKContext(c)
|
||||||
return nil, status.Error(codes.InvalidArgument, "empty request")
|
|
||||||
}
|
|
||||||
|
|
||||||
// ctx := sdk.UnwrapSDKContext(c)
|
return &types.QueryBaseFeeResponse{
|
||||||
// k.WithContext(ctx)
|
BaseFee: sdk.OneInt(), // TODO: update
|
||||||
|
}, nil
|
||||||
// // parse the chainID from a string to a base-10 integer
|
|
||||||
// chainIDEpoch, err := ethermint.ParseChainID(ctx.ChainID())
|
|
||||||
// if err != nil {
|
|
||||||
// return nil, status.Error(codes.Internal, err.Error())
|
|
||||||
// }
|
|
||||||
|
|
||||||
// txHash := tmtypes.Tx(ctx.TxBytes()).Hash()
|
|
||||||
// ethHash := ethcmn.BytesToHash(txHash)
|
|
||||||
|
|
||||||
// var recipient *ethcmn.Address
|
|
||||||
// if len(req.Address) > 0 {
|
|
||||||
// addr := ethcmn.HexToAddress(req.Address)
|
|
||||||
// recipient = &addr
|
|
||||||
// }
|
|
||||||
|
|
||||||
// so := k.GetOrNewStateObject(*recipient)
|
|
||||||
// sender := ethcmn.HexToAddress("0xaDd00275E3d9d213654Ce5223f0FADE8b106b707")
|
|
||||||
|
|
||||||
// msg := types.NewTx(
|
|
||||||
// chainIDEpoch, so.Nonce(), recipient, big.NewInt(0), 100000000, big.NewInt(0), req.Input, nil,
|
|
||||||
// )
|
|
||||||
// msg.From = sender.Hex()
|
|
||||||
|
|
||||||
// if err := msg.ValidateBasic(); err != nil {
|
|
||||||
// return nil, status.Error(codes.Internal, err.Error())
|
|
||||||
// }
|
|
||||||
|
|
||||||
// ethMsg, err := msg.AsMessage()
|
|
||||||
// if err != nil {
|
|
||||||
// return nil, status.Error(codes.Internal, err.Error())
|
|
||||||
// }
|
|
||||||
|
|
||||||
// st := &types.StateTransition{
|
|
||||||
// Message: ethMsg,
|
|
||||||
// Csdb: k.WithContext(ctx),
|
|
||||||
// ChainID: chainIDEpoch,
|
|
||||||
// TxHash: ðHash,
|
|
||||||
// Simulate: ctx.IsCheckTx(),
|
|
||||||
// Debug: false,
|
|
||||||
// }
|
|
||||||
|
|
||||||
// config, found := k.GetChainConfig(ctx)
|
|
||||||
// if !found {
|
|
||||||
// return nil, status.Error(codes.Internal, types.ErrChainConfigNotFound.Error())
|
|
||||||
// }
|
|
||||||
|
|
||||||
// ret, err := st.StaticCall(ctx, config)
|
|
||||||
// if err != nil {
|
|
||||||
// return nil, status.Error(codes.Internal, err.Error())
|
|
||||||
// }
|
|
||||||
|
|
||||||
// return &types.QueryStaticCallResponse{Data: ret}, nil
|
|
||||||
|
|
||||||
return nil, nil
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// EthCall implements eth_call rpc api.
|
// EthCall implements eth_call rpc api.
|
||||||
|
@ -132,6 +132,58 @@ func (k Keeper) ChainID() *big.Int {
|
|||||||
return k.eip155ChainID
|
return k.eip155ChainID
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// ----------------------------------------------------------------------------
|
||||||
|
// Parent Block Gas Used
|
||||||
|
// Required by EIP1559 base fee calculation.
|
||||||
|
// ----------------------------------------------------------------------------
|
||||||
|
|
||||||
|
// GetBlockGasUsed returns the last block gas used value from the store.
|
||||||
|
func (k Keeper) GetBlockGasUsed(ctx sdk.Context) uint64 {
|
||||||
|
store := ctx.KVStore(k.storeKey)
|
||||||
|
bz := store.Get(types.KeyPrefixBlockGasUsed)
|
||||||
|
if len(bz) == 0 {
|
||||||
|
return 0
|
||||||
|
}
|
||||||
|
|
||||||
|
return sdk.BigEndianToUint64(bz)
|
||||||
|
}
|
||||||
|
|
||||||
|
// SetBlockGasUsed gets the current block gas consumed to the store.
|
||||||
|
// CONTRACT: this should be only called during EndBlock.
|
||||||
|
func (k Keeper) SetBlockGasUsed(ctx sdk.Context) {
|
||||||
|
if ctx.BlockGasMeter() == nil {
|
||||||
|
k.Logger(ctx).Error("block gas meter is nil when setting block gas used")
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
store := ctx.KVStore(k.storeKey)
|
||||||
|
gasBz := sdk.Uint64ToBigEndian(ctx.BlockGasMeter().GasConsumedToLimit())
|
||||||
|
store.Set(types.KeyPrefixBlockGasUsed, gasBz)
|
||||||
|
}
|
||||||
|
|
||||||
|
// ----------------------------------------------------------------------------
|
||||||
|
// Parent Base Fee
|
||||||
|
// Required by EIP1559 base fee calculation.
|
||||||
|
// ----------------------------------------------------------------------------
|
||||||
|
|
||||||
|
// GetBlockGasUsed returns the last block gas used value from the store.
|
||||||
|
func (k Keeper) GetBaseFee(ctx sdk.Context) *big.Int {
|
||||||
|
store := ctx.KVStore(k.storeKey)
|
||||||
|
bz := store.Get(types.KeyPrefixBaseFee)
|
||||||
|
if len(bz) == 0 {
|
||||||
|
return new(big.Int).SetUint64(types.InitialBaseFee) // TODO: use geth params
|
||||||
|
}
|
||||||
|
|
||||||
|
return new(big.Int).SetBytes(bz)
|
||||||
|
}
|
||||||
|
|
||||||
|
// SetBlockGasUsed gets the current block gas consumed to the store.
|
||||||
|
// CONTRACT: this should be only called during EndBlock.
|
||||||
|
func (k Keeper) SetBaseFee(ctx sdk.Context, baseFee *big.Int) {
|
||||||
|
store := ctx.KVStore(k.storeKey)
|
||||||
|
store.Set(types.KeyPrefixBaseFee, baseFee.Bytes())
|
||||||
|
}
|
||||||
|
|
||||||
// ----------------------------------------------------------------------------
|
// ----------------------------------------------------------------------------
|
||||||
// Block Bloom
|
// Block Bloom
|
||||||
// Required by Web3 API.
|
// Required by Web3 API.
|
||||||
|
@ -260,14 +260,17 @@ 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())
|
ret, leftoverGas, vmErr = evm.Call(sender, *msg.To(), msg.Data(), leftoverGas, msg.Value())
|
||||||
}
|
}
|
||||||
|
|
||||||
|
refundQuotient := uint64(2)
|
||||||
|
|
||||||
if query {
|
if query {
|
||||||
// gRPC query handlers don't go through the AnteHandler to deduct the gas fee from the sender or have access historical state.
|
// gRPC query handlers don't go through the AnteHandler to deduct the gas fee from the sender or have access historical state.
|
||||||
// We don't refund gas to the sender.
|
// We don't refund gas to the sender.
|
||||||
// For more info, see: https://github.com/tharsis/ethermint/issues/229 and https://github.com/cosmos/cosmos-sdk/issues/9636
|
// For more info, see: https://github.com/tharsis/ethermint/issues/229 and https://github.com/cosmos/cosmos-sdk/issues/9636
|
||||||
leftoverGas += k.GasToRefund(msg.Gas() - leftoverGas)
|
gasConsumed := msg.Gas() - leftoverGas
|
||||||
|
leftoverGas += k.GasToRefund(gasConsumed, refundQuotient)
|
||||||
} else {
|
} else {
|
||||||
// refund gas prior to handling the vm error in order to match the Ethereum gas consumption instead of the default SDK one.
|
// refund gas prior to handling the vm error in order to match the Ethereum gas consumption instead of the default SDK one.
|
||||||
leftoverGas, err = k.RefundGas(msg, leftoverGas)
|
leftoverGas, err = k.RefundGas(msg, leftoverGas, refundQuotient)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, stacktrace.Propagate(err, "failed to refund gas leftover gas to sender %s", msg.From())
|
return nil, stacktrace.Propagate(err, "failed to refund gas leftover gas to sender %s", msg.From())
|
||||||
}
|
}
|
||||||
@ -297,10 +300,10 @@ func (k *Keeper) GetEthIntrinsicGas(msg core.Message, cfg *params.ChainConfig, i
|
|||||||
}
|
}
|
||||||
|
|
||||||
// GasToRefund calculates the amount of gas the state machine should refund to the sender. It is
|
// GasToRefund calculates the amount of gas the state machine should refund to the sender. It is
|
||||||
// capped by half of the gas consumed.
|
// capped by the refund quotient value.
|
||||||
func (k *Keeper) GasToRefund(gasConsumed uint64) uint64 {
|
func (k *Keeper) GasToRefund(gasConsumed, refundQuotient uint64) uint64 {
|
||||||
// Apply refund counter, capped to half of the used gas.
|
// Apply refund counter
|
||||||
refund := gasConsumed / 2
|
refund := gasConsumed / refundQuotient
|
||||||
availableRefund := k.GetRefund()
|
availableRefund := k.GetRefund()
|
||||||
if refund > availableRefund {
|
if refund > availableRefund {
|
||||||
return availableRefund
|
return availableRefund
|
||||||
@ -312,7 +315,7 @@ func (k *Keeper) GasToRefund(gasConsumed uint64) uint64 {
|
|||||||
// consumed in the transaction. Additionally, the function sets the total gas consumed to the value
|
// consumed in the transaction. Additionally, the function sets the total gas consumed to the value
|
||||||
// returned by the EVM execution, thus ignoring the previous intrinsic gas consumed during in the
|
// returned by the EVM execution, thus ignoring the previous intrinsic gas consumed during in the
|
||||||
// AnteHandler.
|
// AnteHandler.
|
||||||
func (k *Keeper) RefundGas(msg core.Message, leftoverGas uint64) (uint64, error) {
|
func (k *Keeper) RefundGas(msg core.Message, leftoverGas, refundQuotient uint64) (uint64, error) {
|
||||||
// safety check: leftover gas after execution should never exceed the gas limit defined on the message
|
// safety check: leftover gas after execution should never exceed the gas limit defined on the message
|
||||||
if leftoverGas > msg.Gas() {
|
if leftoverGas > msg.Gas() {
|
||||||
return leftoverGas, stacktrace.Propagate(
|
return leftoverGas, stacktrace.Propagate(
|
||||||
@ -324,7 +327,7 @@ func (k *Keeper) RefundGas(msg core.Message, leftoverGas uint64) (uint64, error)
|
|||||||
gasConsumed := msg.Gas() - leftoverGas
|
gasConsumed := msg.Gas() - leftoverGas
|
||||||
|
|
||||||
// calculate available gas to refund and add it to the leftover gas amount
|
// calculate available gas to refund and add it to the leftover gas amount
|
||||||
refund := k.GasToRefund(gasConsumed)
|
refund := k.GasToRefund(gasConsumed, refundQuotient)
|
||||||
leftoverGas += refund
|
leftoverGas += refund
|
||||||
|
|
||||||
// safety check: leftover gas after refund should never exceed the gas limit defined on the message
|
// safety check: leftover gas after refund should never exceed the gas limit defined on the message
|
||||||
|
@ -29,8 +29,7 @@ func (cc ChainConfig) EthereumConfig(chainID *big.Int) *params.ChainConfig {
|
|||||||
IstanbulBlock: getBlockValue(cc.IstanbulBlock),
|
IstanbulBlock: getBlockValue(cc.IstanbulBlock),
|
||||||
MuirGlacierBlock: getBlockValue(cc.MuirGlacierBlock),
|
MuirGlacierBlock: getBlockValue(cc.MuirGlacierBlock),
|
||||||
BerlinBlock: getBlockValue(cc.BerlinBlock),
|
BerlinBlock: getBlockValue(cc.BerlinBlock),
|
||||||
YoloV3Block: getBlockValue(cc.YoloV3Block),
|
// LondonBlock: getBlockValue(cc.LondonBlock), // TODO: uncomment
|
||||||
EWASMBlock: getBlockValue(cc.EWASMBlock),
|
|
||||||
CatalystBlock: getBlockValue(cc.CatalystBlock),
|
CatalystBlock: getBlockValue(cc.CatalystBlock),
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -48,7 +47,7 @@ func DefaultChainConfig() ChainConfig {
|
|||||||
istanbulBlock := sdk.ZeroInt()
|
istanbulBlock := sdk.ZeroInt()
|
||||||
muirGlacierBlock := sdk.ZeroInt()
|
muirGlacierBlock := sdk.ZeroInt()
|
||||||
berlinBlock := sdk.ZeroInt()
|
berlinBlock := sdk.ZeroInt()
|
||||||
yoloV3Block := sdk.ZeroInt()
|
londonBlock := sdk.ZeroInt()
|
||||||
|
|
||||||
return ChainConfig{
|
return ChainConfig{
|
||||||
HomesteadBlock: &homesteadBlock,
|
HomesteadBlock: &homesteadBlock,
|
||||||
@ -64,8 +63,7 @@ func DefaultChainConfig() ChainConfig {
|
|||||||
IstanbulBlock: &istanbulBlock,
|
IstanbulBlock: &istanbulBlock,
|
||||||
MuirGlacierBlock: &muirGlacierBlock,
|
MuirGlacierBlock: &muirGlacierBlock,
|
||||||
BerlinBlock: &berlinBlock,
|
BerlinBlock: &berlinBlock,
|
||||||
YoloV3Block: &yoloV3Block,
|
LondonBlock: &londonBlock,
|
||||||
EWASMBlock: nil,
|
|
||||||
CatalystBlock: nil,
|
CatalystBlock: nil,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -117,16 +115,17 @@ func (cc ChainConfig) Validate() error {
|
|||||||
if err := validateBlock(cc.BerlinBlock); err != nil {
|
if err := validateBlock(cc.BerlinBlock); err != nil {
|
||||||
return sdkerrors.Wrap(err, "berlinBlock")
|
return sdkerrors.Wrap(err, "berlinBlock")
|
||||||
}
|
}
|
||||||
if err := validateBlock(cc.YoloV3Block); err != nil {
|
if err := validateBlock(cc.LondonBlock); err != nil {
|
||||||
return sdkerrors.Wrap(err, "yoloV3Block")
|
return sdkerrors.Wrap(err, "londonBlock")
|
||||||
}
|
|
||||||
if err := validateBlock(cc.EWASMBlock); err != nil {
|
|
||||||
return sdkerrors.Wrap(err, "eWASMBlock")
|
|
||||||
}
|
}
|
||||||
if err := validateBlock(cc.CatalystBlock); err != nil {
|
if err := validateBlock(cc.CatalystBlock); err != nil {
|
||||||
return sdkerrors.Wrap(err, "calalystBlock")
|
return sdkerrors.Wrap(err, "catalystBlock")
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// NOTE: chain ID is not needed to check config order
|
||||||
|
if err := cc.EthereumConfig(nil).CheckConfigForkOrder(); err != nil {
|
||||||
|
return sdkerrors.Wrap(err, "invalid config fork order")
|
||||||
|
}
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -152,13 +151,3 @@ func validateBlock(block *sdk.Int) error {
|
|||||||
|
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
// IsIstanbul returns whether the Istanbul version is enabled.
|
|
||||||
func (cc ChainConfig) IsIstanbul() bool {
|
|
||||||
return getBlockValue(cc.IstanbulBlock) != nil
|
|
||||||
}
|
|
||||||
|
|
||||||
// IsHomestead returns whether the Homestead version is enabled.
|
|
||||||
func (cc ChainConfig) IsHomestead() bool {
|
|
||||||
return getBlockValue(cc.HomesteadBlock) != nil
|
|
||||||
}
|
|
||||||
|
@ -39,8 +39,7 @@ func TestChainConfigValidate(t *testing.T) {
|
|||||||
IstanbulBlock: newIntPtr(0),
|
IstanbulBlock: newIntPtr(0),
|
||||||
MuirGlacierBlock: newIntPtr(0),
|
MuirGlacierBlock: newIntPtr(0),
|
||||||
BerlinBlock: newIntPtr(0),
|
BerlinBlock: newIntPtr(0),
|
||||||
YoloV3Block: newIntPtr(0),
|
LondonBlock: newIntPtr(0),
|
||||||
EWASMBlock: newIntPtr(0),
|
|
||||||
CatalystBlock: newIntPtr(0),
|
CatalystBlock: newIntPtr(0),
|
||||||
},
|
},
|
||||||
false,
|
false,
|
||||||
@ -60,8 +59,7 @@ func TestChainConfigValidate(t *testing.T) {
|
|||||||
IstanbulBlock: nil,
|
IstanbulBlock: nil,
|
||||||
MuirGlacierBlock: nil,
|
MuirGlacierBlock: nil,
|
||||||
BerlinBlock: nil,
|
BerlinBlock: nil,
|
||||||
YoloV3Block: nil,
|
LondonBlock: nil,
|
||||||
EWASMBlock: nil,
|
|
||||||
CatalystBlock: nil,
|
CatalystBlock: nil,
|
||||||
},
|
},
|
||||||
false,
|
false,
|
||||||
@ -222,7 +220,7 @@ func TestChainConfigValidate(t *testing.T) {
|
|||||||
true,
|
true,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"invalid YoloV3Block",
|
"invalid LondonBlock",
|
||||||
ChainConfig{
|
ChainConfig{
|
||||||
HomesteadBlock: newIntPtr(0),
|
HomesteadBlock: newIntPtr(0),
|
||||||
DAOForkBlock: newIntPtr(0),
|
DAOForkBlock: newIntPtr(0),
|
||||||
@ -236,30 +234,11 @@ func TestChainConfigValidate(t *testing.T) {
|
|||||||
IstanbulBlock: newIntPtr(0),
|
IstanbulBlock: newIntPtr(0),
|
||||||
MuirGlacierBlock: newIntPtr(0),
|
MuirGlacierBlock: newIntPtr(0),
|
||||||
BerlinBlock: newIntPtr(0),
|
BerlinBlock: newIntPtr(0),
|
||||||
YoloV3Block: newIntPtr(-1),
|
LondonBlock: newIntPtr(-1),
|
||||||
},
|
|
||||||
true,
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"invalid EWASMBlock",
|
|
||||||
ChainConfig{
|
|
||||||
HomesteadBlock: newIntPtr(0),
|
|
||||||
DAOForkBlock: newIntPtr(0),
|
|
||||||
EIP150Block: newIntPtr(0),
|
|
||||||
EIP150Hash: defaultEIP150Hash,
|
|
||||||
EIP155Block: newIntPtr(0),
|
|
||||||
EIP158Block: newIntPtr(0),
|
|
||||||
ByzantiumBlock: newIntPtr(0),
|
|
||||||
ConstantinopleBlock: newIntPtr(0),
|
|
||||||
PetersburgBlock: newIntPtr(0),
|
|
||||||
IstanbulBlock: newIntPtr(0),
|
|
||||||
MuirGlacierBlock: newIntPtr(0),
|
|
||||||
BerlinBlock: newIntPtr(0),
|
|
||||||
YoloV3Block: newIntPtr(0),
|
|
||||||
EWASMBlock: newIntPtr(-1),
|
|
||||||
},
|
},
|
||||||
true,
|
true,
|
||||||
},
|
},
|
||||||
|
|
||||||
{
|
{
|
||||||
"invalid CatalystBlock",
|
"invalid CatalystBlock",
|
||||||
ChainConfig{
|
ChainConfig{
|
||||||
@ -274,9 +253,7 @@ func TestChainConfigValidate(t *testing.T) {
|
|||||||
PetersburgBlock: newIntPtr(0),
|
PetersburgBlock: newIntPtr(0),
|
||||||
IstanbulBlock: newIntPtr(0),
|
IstanbulBlock: newIntPtr(0),
|
||||||
MuirGlacierBlock: newIntPtr(0),
|
MuirGlacierBlock: newIntPtr(0),
|
||||||
YoloV3Block: newIntPtr(0),
|
LondonBlock: newIntPtr(0),
|
||||||
|
|
||||||
EWASMBlock: newIntPtr(0),
|
|
||||||
CatalystBlock: newIntPtr(-1),
|
CatalystBlock: newIntPtr(-1),
|
||||||
},
|
},
|
||||||
true,
|
true,
|
||||||
|
@ -10,6 +10,13 @@ import (
|
|||||||
"github.com/tharsis/ethermint/types"
|
"github.com/tharsis/ethermint/types"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
// TODO: remove once migrated to latest go-ethereum
|
||||||
|
const (
|
||||||
|
BaseFeeChangeDenominator = 8 // Bounds the amount the base fee can change between blocks.
|
||||||
|
ElasticityMultiplier = 2 // Bounds the maximum gas limit an EIP-1559 block may have.
|
||||||
|
InitialBaseFee = 1000000000 // Initial base fee for EIP-1559 blocks.
|
||||||
|
)
|
||||||
|
|
||||||
// nolint: deadcode, unused
|
// nolint: deadcode, unused
|
||||||
func newDynamicFeeTx(tx *ethtypes.Transaction) *DynamicFeeTx {
|
func newDynamicFeeTx(tx *ethtypes.Transaction) *DynamicFeeTx {
|
||||||
txData := &DynamicFeeTx{
|
txData := &DynamicFeeTx{
|
||||||
|
@ -37,6 +37,8 @@ type Params struct {
|
|||||||
ExtraEIPs []int64 `protobuf:"varint,4,rep,packed,name=extra_eips,json=extraEips,proto3" json:"extra_eips,omitempty" yaml:"extra_eips"`
|
ExtraEIPs []int64 `protobuf:"varint,4,rep,packed,name=extra_eips,json=extraEips,proto3" json:"extra_eips,omitempty" yaml:"extra_eips"`
|
||||||
// chain config defines the EVM chain configuration parameters
|
// chain config defines the EVM chain configuration parameters
|
||||||
ChainConfig ChainConfig `protobuf:"bytes,5,opt,name=chain_config,json=chainConfig,proto3" json:"chain_config" yaml:"chain_config"`
|
ChainConfig ChainConfig `protobuf:"bytes,5,opt,name=chain_config,json=chainConfig,proto3" json:"chain_config" yaml:"chain_config"`
|
||||||
|
// no base fee forces the EIP-1559 base fee to 0 (needed for 0 price calls)
|
||||||
|
NoBaseFee bool `protobuf:"varint,6,opt,name=no_base_fee,json=noBaseFee,proto3" json:"no_base_fee,omitempty" yaml:"no_base_fee"`
|
||||||
}
|
}
|
||||||
|
|
||||||
func (m *Params) Reset() { *m = Params{} }
|
func (m *Params) Reset() { *m = Params{} }
|
||||||
@ -106,6 +108,13 @@ func (m *Params) GetChainConfig() ChainConfig {
|
|||||||
return ChainConfig{}
|
return ChainConfig{}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (m *Params) GetNoBaseFee() bool {
|
||||||
|
if m != nil {
|
||||||
|
return m.NoBaseFee
|
||||||
|
}
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
|
||||||
// ChainConfig defines the Ethereum ChainConfig parameters using *sdk.Int values
|
// ChainConfig defines the Ethereum ChainConfig parameters using *sdk.Int values
|
||||||
// instead of *big.Int.
|
// instead of *big.Int.
|
||||||
type ChainConfig struct {
|
type ChainConfig struct {
|
||||||
@ -136,12 +145,10 @@ type ChainConfig struct {
|
|||||||
MuirGlacierBlock *github_com_cosmos_cosmos_sdk_types.Int `protobuf:"bytes,12,opt,name=muir_glacier_block,json=muirGlacierBlock,proto3,customtype=github.com/cosmos/cosmos-sdk/types.Int" json:"muir_glacier_block,omitempty" yaml:"muir_glacier_block"`
|
MuirGlacierBlock *github_com_cosmos_cosmos_sdk_types.Int `protobuf:"bytes,12,opt,name=muir_glacier_block,json=muirGlacierBlock,proto3,customtype=github.com/cosmos/cosmos-sdk/types.Int" json:"muir_glacier_block,omitempty" yaml:"muir_glacier_block"`
|
||||||
// Berlin switch block (nil = no fork, 0 = already on berlin)
|
// Berlin switch block (nil = no fork, 0 = already on berlin)
|
||||||
BerlinBlock *github_com_cosmos_cosmos_sdk_types.Int `protobuf:"bytes,13,opt,name=berlin_block,json=berlinBlock,proto3,customtype=github.com/cosmos/cosmos-sdk/types.Int" json:"berlin_block,omitempty" yaml:"berlin_block"`
|
BerlinBlock *github_com_cosmos_cosmos_sdk_types.Int `protobuf:"bytes,13,opt,name=berlin_block,json=berlinBlock,proto3,customtype=github.com/cosmos/cosmos-sdk/types.Int" json:"berlin_block,omitempty" yaml:"berlin_block"`
|
||||||
// YOLO v3: Gas repricings
|
|
||||||
YoloV3Block *github_com_cosmos_cosmos_sdk_types.Int `protobuf:"bytes,14,opt,name=yolo_v3_block,json=yoloV3Block,proto3,customtype=github.com/cosmos/cosmos-sdk/types.Int" json:"yolo_v3_block,omitempty" yaml:"yolo_v3_block"`
|
|
||||||
// EWASM switch block (nil no fork, 0 = already activated)
|
|
||||||
EWASMBlock *github_com_cosmos_cosmos_sdk_types.Int `protobuf:"bytes,15,opt,name=ewasm_block,json=ewasmBlock,proto3,customtype=github.com/cosmos/cosmos-sdk/types.Int" json:"ewasm_block,omitempty" yaml:"ewasm_block"`
|
|
||||||
// Catalyst switch block (nil = no fork, 0 = already on catalyst)
|
// Catalyst switch block (nil = no fork, 0 = already on catalyst)
|
||||||
CatalystBlock *github_com_cosmos_cosmos_sdk_types.Int `protobuf:"bytes,16,opt,name=catalyst_block,json=catalystBlock,proto3,customtype=github.com/cosmos/cosmos-sdk/types.Int" json:"catalyst_block,omitempty" yaml:"catalyst_block"`
|
CatalystBlock *github_com_cosmos_cosmos_sdk_types.Int `protobuf:"bytes,16,opt,name=catalyst_block,json=catalystBlock,proto3,customtype=github.com/cosmos/cosmos-sdk/types.Int" json:"catalyst_block,omitempty" yaml:"catalyst_block"`
|
||||||
|
// London switch block (nil = no fork, 0 = already on london)
|
||||||
|
LondonBlock *github_com_cosmos_cosmos_sdk_types.Int `protobuf:"bytes,17,opt,name=london_block,json=londonBlock,proto3,customtype=github.com/cosmos/cosmos-sdk/types.Int" json:"london_block,omitempty" yaml:"london_block"`
|
||||||
}
|
}
|
||||||
|
|
||||||
func (m *ChainConfig) Reset() { *m = ChainConfig{} }
|
func (m *ChainConfig) Reset() { *m = ChainConfig{} }
|
||||||
@ -527,86 +534,87 @@ func init() {
|
|||||||
func init() { proto.RegisterFile("ethermint/evm/v1/evm.proto", fileDescriptor_d21ecc92c8c8583e) }
|
func init() { proto.RegisterFile("ethermint/evm/v1/evm.proto", fileDescriptor_d21ecc92c8c8583e) }
|
||||||
|
|
||||||
var fileDescriptor_d21ecc92c8c8583e = []byte{
|
var fileDescriptor_d21ecc92c8c8583e = []byte{
|
||||||
// 1264 bytes of a gzipped FileDescriptorProto
|
// 1277 bytes of a gzipped FileDescriptorProto
|
||||||
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x9c, 0x96, 0x4d, 0x6f, 0xdb, 0x36,
|
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x9c, 0x96, 0xcf, 0x6f, 0xdb, 0x36,
|
||||||
0x18, 0xc7, 0xe3, 0xd8, 0x49, 0x6c, 0x4a, 0x7e, 0x19, 0xeb, 0x66, 0x6e, 0x8b, 0x45, 0x19, 0x0f,
|
0x1b, 0xc7, 0xe3, 0xd8, 0x49, 0x6c, 0x4a, 0xb6, 0x55, 0xd6, 0xcd, 0xeb, 0xb6, 0x78, 0xa3, 0xbc,
|
||||||
0x83, 0x07, 0xb4, 0x71, 0x93, 0x22, 0x58, 0x51, 0x60, 0x87, 0x28, 0x4d, 0xbb, 0x60, 0x5d, 0x17,
|
0x3c, 0xbc, 0xf0, 0x80, 0x36, 0x6e, 0x52, 0x64, 0x2b, 0x0a, 0xec, 0x10, 0xa5, 0x69, 0x97, 0xae,
|
||||||
0x30, 0xdd, 0x0a, 0x0c, 0x18, 0x04, 0x5a, 0x62, 0x65, 0x2d, 0x92, 0x68, 0x88, 0xb4, 0x67, 0x0f,
|
0xd8, 0x02, 0xb6, 0xc3, 0x80, 0x01, 0x83, 0x40, 0x4b, 0xac, 0xac, 0x45, 0x12, 0x0d, 0x91, 0xf6,
|
||||||
0xfb, 0x00, 0x03, 0x76, 0xd9, 0x71, 0xc7, 0x7d, 0x9c, 0x62, 0xa7, 0x1e, 0x87, 0x0d, 0x10, 0x06,
|
0xec, 0x61, 0x7f, 0xc0, 0x80, 0x5d, 0x06, 0xec, 0xb2, 0xc3, 0x0e, 0xfb, 0x73, 0x8a, 0x9d, 0x7a,
|
||||||
0xf7, 0x30, 0x20, 0x47, 0x7f, 0x82, 0x41, 0x24, 0xfd, 0x9a, 0x62, 0x98, 0x73, 0x12, 0x9f, 0x87,
|
0x1c, 0x76, 0x10, 0x06, 0xf7, 0x96, 0xa3, 0xff, 0x82, 0x41, 0x24, 0xfd, 0x33, 0xc5, 0xb0, 0xe4,
|
||||||
0x0f, 0xff, 0x3f, 0xbe, 0x3c, 0xd4, 0x43, 0x70, 0x9b, 0x8a, 0x0e, 0x4d, 0xa2, 0x20, 0x16, 0x2d,
|
0x24, 0x3e, 0x0f, 0x1f, 0x7e, 0x3f, 0x7c, 0xc8, 0x47, 0x24, 0xc1, 0x1d, 0x2a, 0xba, 0x34, 0x8d,
|
||||||
0xda, 0x8f, 0x5a, 0xfd, 0xfd, 0xec, 0xb3, 0xd7, 0x4d, 0x98, 0x60, 0xb0, 0x36, 0xed, 0xdb, 0xcb,
|
0xc3, 0x44, 0xb4, 0xe9, 0x20, 0x6e, 0x0f, 0xf6, 0xf3, 0xcf, 0x5e, 0x2f, 0x65, 0x82, 0x41, 0x6b,
|
||||||
0x9c, 0xfd, 0xfd, 0xdb, 0x75, 0x9f, 0xf9, 0x4c, 0x76, 0xb6, 0xb2, 0x96, 0x8a, 0x43, 0x7f, 0xad,
|
0xd6, 0xb7, 0x97, 0x3b, 0x07, 0xfb, 0x77, 0x1a, 0x01, 0x0b, 0x98, 0xec, 0x6c, 0xe7, 0x2d, 0x15,
|
||||||
0x83, 0xcd, 0x33, 0x92, 0x90, 0x88, 0xc3, 0x7d, 0x50, 0xa2, 0xfd, 0xc8, 0xf1, 0x68, 0xcc, 0xa2,
|
0x87, 0x7e, 0x2e, 0x82, 0xcd, 0x33, 0x92, 0x92, 0x98, 0xc3, 0x7d, 0x50, 0xa1, 0x83, 0xd8, 0xf5,
|
||||||
0x46, 0x6e, 0x37, 0xd7, 0x2c, 0xd9, 0xf5, 0x71, 0x6a, 0xd5, 0x86, 0x24, 0x0a, 0x1f, 0xa1, 0x69,
|
0x69, 0xc2, 0xe2, 0x66, 0x61, 0xb7, 0xd0, 0xaa, 0x38, 0x8d, 0x49, 0x66, 0x5b, 0x23, 0x12, 0x47,
|
||||||
0x17, 0xc2, 0x45, 0xda, 0x8f, 0x1e, 0x67, 0x4d, 0xf8, 0x29, 0x28, 0xd3, 0x98, 0xb4, 0x43, 0xea,
|
0x8f, 0xd1, 0xac, 0x0b, 0xe1, 0x32, 0x1d, 0xc4, 0x4f, 0xf2, 0x26, 0xfc, 0x18, 0x54, 0x69, 0x42,
|
||||||
0xb8, 0x09, 0x25, 0x82, 0x36, 0xd6, 0x77, 0x73, 0xcd, 0xa2, 0xdd, 0x18, 0xa7, 0x56, 0x5d, 0x0f,
|
0x3a, 0x11, 0x75, 0xbd, 0x94, 0x12, 0x41, 0x9b, 0xeb, 0xbb, 0x85, 0x56, 0xd9, 0x69, 0x4e, 0x32,
|
||||||
0x9b, 0xef, 0x46, 0xd8, 0x54, 0xf6, 0xb1, 0x34, 0xe1, 0x27, 0xc0, 0x98, 0xf4, 0x93, 0x30, 0x6c,
|
0xbb, 0xa1, 0x87, 0x2d, 0x76, 0x23, 0x6c, 0x2a, 0xfb, 0x58, 0x9a, 0xf0, 0x23, 0x60, 0x4c, 0xfb,
|
||||||
0xe4, 0xe5, 0xe0, 0xed, 0x71, 0x6a, 0xc1, 0xc5, 0xc1, 0x24, 0x0c, 0x11, 0x06, 0x7a, 0x28, 0x09,
|
0x49, 0x14, 0x35, 0x8b, 0x72, 0xf0, 0xf6, 0x24, 0xb3, 0xe1, 0xf2, 0x60, 0x12, 0x45, 0x08, 0x03,
|
||||||
0x43, 0x78, 0x04, 0x00, 0x1d, 0x88, 0x84, 0x38, 0x34, 0xe8, 0xf2, 0x46, 0x61, 0x37, 0xdf, 0xcc,
|
0x3d, 0x94, 0x44, 0x11, 0x3c, 0x02, 0x80, 0x0e, 0x45, 0x4a, 0x5c, 0x1a, 0xf6, 0x78, 0xb3, 0xb4,
|
||||||
0xdb, 0x68, 0x94, 0x5a, 0xa5, 0x93, 0xcc, 0x7b, 0x72, 0x7a, 0xc6, 0xc7, 0xa9, 0xf5, 0x9e, 0x16,
|
0x5b, 0x6c, 0x15, 0x1d, 0x34, 0xce, 0xec, 0xca, 0x49, 0xee, 0x3d, 0x39, 0x3d, 0xe3, 0x93, 0xcc,
|
||||||
0x99, 0x06, 0x22, 0x5c, 0x92, 0xc6, 0x49, 0xd0, 0xe5, 0xf0, 0x5b, 0x60, 0xba, 0x1d, 0x12, 0xc4,
|
0xbe, 0xa1, 0x45, 0x66, 0x81, 0x08, 0x57, 0xa4, 0x71, 0x12, 0xf6, 0x38, 0xfc, 0x1a, 0x98, 0x5e,
|
||||||
0x8e, 0xcb, 0xe2, 0x57, 0x81, 0xdf, 0xd8, 0xd8, 0xcd, 0x35, 0x8d, 0x83, 0x0f, 0xf6, 0x96, 0xf7,
|
0x97, 0x84, 0x89, 0xeb, 0xb1, 0xe4, 0x75, 0x18, 0x34, 0x37, 0x76, 0x0b, 0x2d, 0xe3, 0xe0, 0xbf,
|
||||||
0x6d, 0xef, 0x38, 0x8b, 0x3a, 0x96, 0x41, 0xf6, 0x9d, 0xd7, 0xa9, 0xb5, 0x36, 0x4e, 0xad, 0x1b,
|
0x7b, 0xab, 0xeb, 0xb6, 0x77, 0x9c, 0x47, 0x1d, 0xcb, 0x20, 0xe7, 0xee, 0x9b, 0xcc, 0x5e, 0x9b,
|
||||||
0x4a, 0x7a, 0x5e, 0x00, 0x61, 0xc3, 0x9d, 0x45, 0x3e, 0x2a, 0xfc, 0xfa, 0x9b, 0xb5, 0x86, 0xfe,
|
0x64, 0xf6, 0x4d, 0x25, 0xbd, 0x28, 0x80, 0xb0, 0xe1, 0xcd, 0x23, 0xe1, 0x87, 0xc0, 0x48, 0x98,
|
||||||
0x29, 0x03, 0x63, 0x6e, 0x3c, 0x8c, 0x40, 0xb5, 0xc3, 0x22, 0xca, 0x05, 0x25, 0x9e, 0xd3, 0x0e,
|
0xdb, 0x21, 0x9c, 0xba, 0xaf, 0x29, 0x6d, 0x6e, 0xae, 0xa6, 0xb6, 0xd0, 0x89, 0x70, 0x25, 0x61,
|
||||||
0x99, 0x7b, 0xa1, 0x37, 0xfa, 0xf1, 0x9f, 0xa9, 0xf5, 0x91, 0x1f, 0x88, 0x4e, 0xaf, 0xbd, 0xe7,
|
0x0e, 0xe1, 0xf4, 0x29, 0xa5, 0x8f, 0x4b, 0xbf, 0xfc, 0x66, 0xaf, 0xa1, 0x5f, 0xab, 0xc0, 0x58,
|
||||||
0xb2, 0xa8, 0xe5, 0x32, 0x1e, 0x31, 0xae, 0x3f, 0xf7, 0xb8, 0x77, 0xd1, 0x12, 0xc3, 0x2e, 0xe5,
|
0xe0, 0xc2, 0x18, 0xd4, 0xbb, 0x2c, 0xa6, 0x5c, 0x50, 0xe2, 0xbb, 0x9d, 0x88, 0x79, 0xe7, 0x7a,
|
||||||
0x7b, 0xa7, 0xb1, 0x18, 0xa7, 0xd6, 0xb6, 0xc2, 0x2f, 0x49, 0x21, 0x5c, 0x99, 0x7a, 0xec, 0xcc,
|
0x83, 0x9e, 0xfc, 0x99, 0xd9, 0xff, 0x0f, 0x42, 0xd1, 0xed, 0x77, 0xf6, 0x3c, 0x16, 0xb7, 0x3d,
|
||||||
0x01, 0x87, 0xa0, 0xe2, 0x11, 0xe6, 0xbc, 0x62, 0xc9, 0x85, 0xa6, 0xad, 0x4b, 0xda, 0xf9, 0xff,
|
0xc6, 0x63, 0xc6, 0xf5, 0xe7, 0x3e, 0xf7, 0xcf, 0xdb, 0x62, 0xd4, 0xa3, 0x7c, 0xef, 0x34, 0x11,
|
||||||
0xa7, 0x8d, 0x52, 0xcb, 0x7c, 0x7c, 0xf4, 0xe5, 0x13, 0x96, 0x5c, 0x48, 0xcd, 0x71, 0x6a, 0xdd,
|
0x93, 0xcc, 0xde, 0x56, 0xec, 0x15, 0x29, 0x84, 0x6b, 0x33, 0x8f, 0x93, 0x3b, 0xe0, 0x08, 0xd4,
|
||||||
0x54, 0xf4, 0x45, 0x65, 0x84, 0x4d, 0x8f, 0xb0, 0x69, 0x18, 0x7c, 0x09, 0x6a, 0xd3, 0x00, 0xde,
|
0x7c, 0xc2, 0xdc, 0xd7, 0x2c, 0x3d, 0xd7, 0xb4, 0x75, 0x49, 0x7b, 0xf9, 0xef, 0x69, 0xe3, 0xcc,
|
||||||
0xeb, 0x76, 0x59, 0x22, 0xf4, 0xf9, 0xde, 0x1b, 0xa5, 0x56, 0x45, 0x4b, 0x9e, 0xab, 0x9e, 0x71,
|
0x36, 0x9f, 0x1c, 0x7d, 0xfe, 0x94, 0xa5, 0xe7, 0x52, 0x73, 0x92, 0xd9, 0xb7, 0x14, 0x7d, 0x59,
|
||||||
0x6a, 0xbd, 0xbf, 0x24, 0xaa, 0xc7, 0x20, 0x5c, 0xd1, 0xb2, 0x3a, 0x14, 0x72, 0x60, 0xd2, 0xa0,
|
0x19, 0x61, 0xd3, 0x27, 0x6c, 0x16, 0x06, 0xbf, 0x04, 0xd6, 0x2c, 0x80, 0xf7, 0x7b, 0x3d, 0x96,
|
||||||
0xbb, 0x7f, 0x78, 0x5f, 0xaf, 0xa8, 0x20, 0x57, 0x74, 0xb6, 0xd2, 0x8a, 0x8c, 0x93, 0xd3, 0xb3,
|
0x0a, 0x5d, 0x17, 0xf7, 0xc7, 0x99, 0x5d, 0xd3, 0x92, 0x2f, 0x55, 0xcf, 0x24, 0xb3, 0xff, 0xb3,
|
||||||
0xfd, 0xc3, 0xfb, 0x93, 0x05, 0xe9, 0xd3, 0x9c, 0x97, 0x45, 0xd8, 0x50, 0xa6, 0x5a, 0xcd, 0x29,
|
0x22, 0xaa, 0xc7, 0x20, 0x5c, 0xd3, 0xb2, 0x3a, 0x14, 0x72, 0x60, 0xd2, 0xb0, 0xb7, 0x7f, 0xf8,
|
||||||
0xd0, 0xa6, 0xd3, 0x21, 0xbc, 0x23, 0x73, 0xa5, 0x64, 0x37, 0x47, 0xa9, 0x05, 0x94, 0xd2, 0x67,
|
0x40, 0x67, 0x54, 0x92, 0x19, 0x9d, 0x5d, 0x29, 0x23, 0xe3, 0xe4, 0xf4, 0x6c, 0xff, 0xf0, 0xc1,
|
||||||
0x84, 0x77, 0x66, 0xe7, 0xd2, 0x1e, 0xfe, 0x40, 0x62, 0x11, 0xf4, 0xa2, 0x89, 0x16, 0x50, 0x83,
|
0x34, 0x21, 0x5d, 0x05, 0x8b, 0xb2, 0x08, 0x1b, 0xca, 0x54, 0xd9, 0x9c, 0x02, 0x6d, 0xba, 0x5d,
|
||||||
0xb3, 0xa8, 0xe9, 0xfc, 0x0f, 0xf5, 0xfc, 0x37, 0xaf, 0x3d, 0xff, 0xc3, 0x77, 0xcd, 0xff, 0x70,
|
0xc2, 0xbb, 0xb2, 0xc6, 0x2a, 0x4e, 0x6b, 0x9c, 0xd9, 0x40, 0x29, 0x7d, 0x42, 0x78, 0x77, 0xbe,
|
||||||
0x71, 0xfe, 0x2a, 0x66, 0x0a, 0x7d, 0xa8, 0xa1, 0x5b, 0xd7, 0x86, 0x3e, 0x7c, 0x17, 0xf4, 0xe1,
|
0x2f, 0x9d, 0xd1, 0x77, 0x24, 0x11, 0x61, 0x3f, 0x9e, 0x6a, 0x01, 0x35, 0x38, 0x8f, 0x9a, 0xcd,
|
||||||
0x22, 0x54, 0xc5, 0x64, 0xc9, 0xbe, 0xb4, 0x13, 0x8d, 0xe2, 0xf5, 0x93, 0xfd, 0xca, 0xa6, 0x56,
|
0xff, 0x50, 0xcf, 0x7f, 0xf3, 0xda, 0xf3, 0x3f, 0x7c, 0xdf, 0xfc, 0x0f, 0x97, 0xe7, 0xaf, 0x62,
|
||||||
0xa6, 0x1e, 0x85, 0xfb, 0x11, 0xd4, 0x5d, 0x16, 0x73, 0x91, 0xf9, 0x62, 0xd6, 0x0d, 0xa9, 0x66,
|
0x66, 0xd0, 0x47, 0x1a, 0xba, 0x75, 0x6d, 0xe8, 0xa3, 0xf7, 0x41, 0x1f, 0x2d, 0x43, 0x55, 0x4c,
|
||||||
0x96, 0x24, 0xf3, 0x74, 0x25, 0xe6, 0x1d, 0x7d, 0xbf, 0xdf, 0xa1, 0x87, 0xf0, 0x8d, 0x45, 0xb7,
|
0x5e, 0xec, 0x2b, 0x2b, 0xd1, 0x2c, 0x5f, 0xbf, 0xd8, 0x2f, 0x2d, 0x6a, 0x6d, 0xe6, 0x51, 0xb8,
|
||||||
0xa2, 0x77, 0x41, 0xad, 0x4b, 0x05, 0x4d, 0x78, 0xbb, 0x97, 0xf8, 0x9a, 0x0c, 0x24, 0xf9, 0x64,
|
0xef, 0x41, 0xc3, 0x63, 0x09, 0x17, 0xb9, 0x2f, 0x61, 0xbd, 0x88, 0x6a, 0x66, 0x45, 0x32, 0x4f,
|
||||||
0x25, 0xb2, 0xbe, 0x07, 0xcb, 0x5a, 0x08, 0x57, 0x67, 0x2e, 0x45, 0xfc, 0x0e, 0x54, 0x82, 0x6c,
|
0xaf, 0xc4, 0xbc, 0xab, 0xcf, 0x85, 0xf7, 0xe8, 0x21, 0x7c, 0x73, 0xd9, 0xad, 0xe8, 0x3d, 0x60,
|
||||||
0x1a, 0xed, 0x5e, 0xa8, 0x79, 0x86, 0xe4, 0x1d, 0xaf, 0xc4, 0xd3, 0x97, 0x79, 0x51, 0x09, 0xe1,
|
0xf5, 0xa8, 0xa0, 0x29, 0xef, 0xf4, 0xd3, 0x40, 0x93, 0x81, 0x24, 0x9f, 0x5c, 0x89, 0xac, 0xff,
|
||||||
0xf2, 0xc4, 0xa1, 0x58, 0x3d, 0x00, 0xa3, 0x5e, 0x90, 0x38, 0x7e, 0x48, 0xdc, 0x80, 0x26, 0x9a,
|
0x83, 0x55, 0x2d, 0x84, 0xeb, 0x73, 0x97, 0x22, 0x7e, 0x03, 0x6a, 0x61, 0x3e, 0x8d, 0x4e, 0x3f,
|
||||||
0x67, 0x4a, 0xde, 0xd3, 0x95, 0x78, 0xb7, 0x14, 0xef, 0xaa, 0x1a, 0xc2, 0xb5, 0xcc, 0xf9, 0x54,
|
0xd2, 0x3c, 0x43, 0xf2, 0x8e, 0xaf, 0xc4, 0xd3, 0x3f, 0xf3, 0xb2, 0x12, 0xc2, 0xd5, 0xa9, 0x43,
|
||||||
0xf9, 0x14, 0xd6, 0x03, 0x66, 0x9b, 0x26, 0x61, 0x10, 0x6b, 0x60, 0x59, 0x02, 0x8f, 0x56, 0x02,
|
0xb1, 0xfa, 0x00, 0xc6, 0xfd, 0x30, 0x75, 0x83, 0x88, 0x78, 0x21, 0x4d, 0x35, 0xcf, 0x94, 0xbc,
|
||||||
0xea, 0x3c, 0x9d, 0xd7, 0x41, 0xd8, 0x50, 0xa6, 0xa2, 0xbc, 0x02, 0xe5, 0x21, 0x0b, 0x99, 0xd3,
|
0x67, 0x57, 0xe2, 0xdd, 0x56, 0xbc, 0xcb, 0x6a, 0x08, 0x5b, 0xb9, 0xf3, 0x99, 0xf2, 0x29, 0xac,
|
||||||
0x7f, 0xa0, 0x31, 0x15, 0x89, 0xb1, 0x57, 0xc2, 0xe8, 0x72, 0xb7, 0x20, 0x84, 0xb0, 0x91, 0xd9,
|
0x0f, 0xcc, 0x0e, 0x4d, 0xa3, 0x30, 0xd1, 0xc0, 0xaa, 0x04, 0x1e, 0x5d, 0x09, 0xa8, 0xeb, 0x74,
|
||||||
0x5f, 0x3f, 0x50, 0x1c, 0x06, 0x0c, 0xfa, 0x3d, 0xe1, 0x93, 0xbb, 0x50, 0x95, 0x94, 0xe7, 0x2b,
|
0x51, 0x07, 0x61, 0x43, 0x99, 0xb3, 0x85, 0xf4, 0x88, 0x20, 0xd1, 0x88, 0x0b, 0xcd, 0xb1, 0xae,
|
||||||
0xdd, 0x41, 0x70, 0xf2, 0xf2, 0xe8, 0xfc, 0x8b, 0xc9, 0x15, 0x9c, 0x54, 0xc9, 0x99, 0x68, 0xf6,
|
0xbf, 0x90, 0xcb, 0x4a, 0x08, 0x57, 0xa7, 0x8e, 0x59, 0x46, 0x11, 0x4b, 0x7c, 0x36, 0xcd, 0xe8,
|
||||||
0xab, 0xc9, 0xac, 0x69, 0x86, 0xb8, 0x44, 0x90, 0x70, 0xc8, 0x85, 0x66, 0xd6, 0xae, 0x9f, 0x21,
|
0xc6, 0xf5, 0x33, 0x5a, 0xd4, 0x41, 0xd8, 0x50, 0xa6, 0xa4, 0x3c, 0x2f, 0x95, 0x6b, 0x56, 0xfd,
|
||||||
0x8b, 0x4a, 0x08, 0x97, 0x27, 0x0e, 0xc9, 0x42, 0x2d, 0xb0, 0x71, 0x2e, 0xb2, 0x9a, 0x5e, 0x03,
|
0x79, 0xa9, 0x5c, 0xb7, 0x2c, 0x5c, 0x1d, 0xb1, 0x88, 0xb9, 0x83, 0x87, 0x2a, 0x10, 0x1b, 0xf4,
|
||||||
0xf9, 0x0b, 0x3a, 0x54, 0x65, 0x0d, 0x67, 0x4d, 0x58, 0x07, 0x1b, 0x7d, 0x12, 0xf6, 0xd4, 0xe3,
|
0x5b, 0xc2, 0xa7, 0xff, 0x50, 0x1b, 0x6c, 0xbc, 0x14, 0xf9, 0x05, 0x6e, 0x81, 0xe2, 0x39, 0x1d,
|
||||||
0xa0, 0x84, 0x95, 0x81, 0xce, 0x40, 0xf5, 0x45, 0x42, 0x62, 0x4e, 0x5c, 0x11, 0xb0, 0xf8, 0x19,
|
0xa9, 0xbb, 0x08, 0xe7, 0x4d, 0xd8, 0x00, 0x1b, 0x03, 0x12, 0xf5, 0xd5, 0x4b, 0xa0, 0x82, 0x95,
|
||||||
0xf3, 0x39, 0x84, 0xa0, 0x20, 0x7f, 0xaf, 0x6a, 0xac, 0x6c, 0xc3, 0x8f, 0x41, 0x21, 0x64, 0x3e,
|
0x81, 0xce, 0x40, 0xfd, 0x55, 0x4a, 0x12, 0x4e, 0x3c, 0x11, 0xb2, 0xe4, 0x05, 0x0b, 0x38, 0x84,
|
||||||
0x6f, 0xac, 0xef, 0xe6, 0x9b, 0xc6, 0xc1, 0xcd, 0xab, 0xe5, 0xf9, 0x19, 0xf3, 0xb1, 0x0c, 0x41,
|
0xa0, 0x24, 0xcf, 0x44, 0x35, 0x56, 0xb6, 0xe1, 0x07, 0xa0, 0x14, 0xb1, 0x80, 0x37, 0xd7, 0x77,
|
||||||
0xbf, 0xaf, 0x83, 0xfc, 0x33, 0xe6, 0xc3, 0x06, 0xd8, 0x22, 0x9e, 0x97, 0x50, 0xce, 0xb5, 0xd2,
|
0x8b, 0x2d, 0xe3, 0xe0, 0xd6, 0xe5, 0xbb, 0xf8, 0x05, 0x0b, 0xb0, 0x0c, 0x41, 0xbf, 0xaf, 0x83,
|
||||||
0xc4, 0x84, 0xdb, 0x60, 0x53, 0xb0, 0x6e, 0xe0, 0x2a, 0xb9, 0x12, 0xd6, 0x56, 0x06, 0xf6, 0x88,
|
0xe2, 0x0b, 0x16, 0xc0, 0x26, 0xd8, 0x22, 0xbe, 0x9f, 0x52, 0xce, 0xb5, 0xd2, 0xd4, 0x84, 0xdb,
|
||||||
0x20, 0xb2, 0x40, 0x99, 0x58, 0xb6, 0xe1, 0x01, 0x30, 0xe5, 0x4a, 0x9d, 0xb8, 0x17, 0xb5, 0x69,
|
0x60, 0x53, 0xb0, 0x5e, 0xe8, 0x29, 0xb9, 0x0a, 0xd6, 0x56, 0x0e, 0xf6, 0x89, 0x20, 0xf2, 0x56,
|
||||||
0x22, 0xeb, 0x4c, 0xc1, 0xae, 0x5e, 0xa6, 0x96, 0x21, 0xfd, 0xcf, 0xa5, 0x1b, 0xcf, 0x1b, 0xf0,
|
0x31, 0xb1, 0x6c, 0xc3, 0x03, 0x60, 0xca, 0xcc, 0xdc, 0xa4, 0x1f, 0x77, 0x68, 0x2a, 0x2f, 0x87,
|
||||||
0x2e, 0xd8, 0x12, 0x83, 0xf9, 0x12, 0x71, 0xe3, 0x32, 0xb5, 0xaa, 0x62, 0xb6, 0xcc, 0xac, 0x02,
|
0x92, 0x53, 0xbf, 0xc8, 0x6c, 0x43, 0xfa, 0x3f, 0x93, 0x6e, 0xbc, 0x68, 0xc0, 0x7b, 0x60, 0x4b,
|
||||||
0xe0, 0x4d, 0x31, 0x90, 0x95, 0xa0, 0x05, 0x8a, 0x62, 0xe0, 0x04, 0xb1, 0x47, 0x07, 0xb2, 0x0a,
|
0x0c, 0x17, 0xcf, 0xf5, 0x9b, 0x17, 0x99, 0x5d, 0x17, 0xf3, 0x34, 0xf3, 0x63, 0x1b, 0x6f, 0x8a,
|
||||||
0x14, 0xec, 0xfa, 0x65, 0x6a, 0xd5, 0xe6, 0xc2, 0x4f, 0xb3, 0x3e, 0xbc, 0x25, 0x06, 0xb2, 0x01,
|
0xa1, 0x3c, 0xbe, 0xdb, 0xa0, 0x2c, 0x86, 0x6e, 0x98, 0xf8, 0x74, 0x28, 0x8f, 0xee, 0x92, 0xd3,
|
||||||
0xef, 0x02, 0xa0, 0xa6, 0x24, 0x09, 0xea, 0x1f, 0x5e, 0xbe, 0x4c, 0xad, 0x92, 0xf4, 0x4a, 0xed,
|
0xb8, 0xc8, 0x6c, 0x6b, 0x21, 0xfc, 0x34, 0xef, 0xc3, 0x5b, 0x62, 0x28, 0x1b, 0xf0, 0x1e, 0x00,
|
||||||
0x59, 0x13, 0x22, 0xb0, 0xa1, 0xb4, 0x8b, 0x52, 0xdb, 0xbc, 0x4c, 0xad, 0x62, 0xc8, 0x7c, 0xa5,
|
0x6a, 0x4a, 0x92, 0xa0, 0x0e, 0xde, 0xea, 0x45, 0x66, 0x57, 0xa4, 0x57, 0x6a, 0xcf, 0x9b, 0x10,
|
||||||
0xa9, 0xba, 0xb2, 0xad, 0x4a, 0x68, 0xc4, 0xfa, 0xd4, 0x93, 0xbf, 0xc9, 0x22, 0x9e, 0x98, 0xe8,
|
0x81, 0x0d, 0xa5, 0x5d, 0x96, 0xda, 0xe6, 0x45, 0x66, 0x97, 0x23, 0x16, 0x28, 0x4d, 0xd5, 0x95,
|
||||||
0xe7, 0x75, 0x50, 0x7c, 0x31, 0xc0, 0x94, 0xf7, 0x42, 0x01, 0x9f, 0x80, 0x9a, 0xcb, 0x62, 0x91,
|
0x2f, 0x55, 0x4a, 0x63, 0x36, 0xa0, 0xbe, 0x3c, 0xdb, 0xca, 0x78, 0x6a, 0xa2, 0x1f, 0xd7, 0x41,
|
||||||
0x10, 0x57, 0x38, 0x0b, 0x5b, 0x6b, 0xdf, 0x99, 0xfd, 0xb2, 0x96, 0x23, 0x10, 0xae, 0x4e, 0x5c,
|
0xf9, 0xd5, 0x10, 0x53, 0xde, 0x8f, 0x04, 0x7c, 0x0a, 0x2c, 0x8f, 0x25, 0x22, 0x25, 0x9e, 0x70,
|
||||||
0x47, 0x7a, 0xff, 0xeb, 0x60, 0xa3, 0x1d, 0x32, 0x16, 0xc9, 0x4c, 0x30, 0xb1, 0x32, 0x20, 0x96,
|
0x97, 0x96, 0xd6, 0xb9, 0x3b, 0x3f, 0x67, 0x56, 0x23, 0x10, 0xae, 0x4f, 0x5d, 0x47, 0x7a, 0xfd,
|
||||||
0xbb, 0x26, 0x4f, 0x39, 0x2f, 0x1f, 0x61, 0x1f, 0x5e, 0x3d, 0xe5, 0xa5, 0x54, 0xb1, 0xb7, 0xf5,
|
0x1b, 0x60, 0xa3, 0x13, 0x31, 0x16, 0xcb, 0x4a, 0x30, 0xb1, 0x32, 0x20, 0x96, 0xab, 0x26, 0x77,
|
||||||
0x43, 0xac, 0xa2, 0xd8, 0x7a, 0x3c, 0xca, 0xf6, 0x56, 0xa6, 0x52, 0x0d, 0xe4, 0x13, 0x2a, 0xe4,
|
0xb9, 0x28, 0x5f, 0x5c, 0xff, 0xbb, 0xbc, 0xcb, 0x2b, 0xa5, 0xe2, 0x6c, 0xeb, 0x57, 0x57, 0x4d,
|
||||||
0xa1, 0x99, 0x38, 0x6b, 0xc2, 0xdb, 0xa0, 0x98, 0xd0, 0x3e, 0x4d, 0x04, 0xf5, 0xe4, 0xe1, 0x14,
|
0xb1, 0xf5, 0x78, 0x94, 0xaf, 0xad, 0x2c, 0x25, 0x0b, 0x14, 0x53, 0x2a, 0xe4, 0xa6, 0x99, 0x38,
|
||||||
0xf1, 0xd4, 0x86, 0xb7, 0x40, 0xd1, 0x27, 0xdc, 0xe9, 0x71, 0xea, 0xa9, 0x93, 0xc0, 0x5b, 0x3e,
|
0x6f, 0xc2, 0x3b, 0xa0, 0x9c, 0xd2, 0x01, 0x4d, 0x05, 0xf5, 0xe5, 0xe6, 0x94, 0xf1, 0xcc, 0x86,
|
||||||
0xe1, 0x5f, 0x71, 0xea, 0x3d, 0x2a, 0xfc, 0x94, 0xbd, 0xe3, 0x08, 0x30, 0x8e, 0x5c, 0x97, 0x72,
|
0xb7, 0x41, 0x39, 0x20, 0xdc, 0xed, 0x73, 0xea, 0xab, 0x9d, 0xc0, 0x5b, 0x01, 0xe1, 0x5f, 0x70,
|
||||||
0xfe, 0xa2, 0xd7, 0x0d, 0xe9, 0x7f, 0x64, 0xd8, 0x01, 0x30, 0xb9, 0x60, 0x09, 0xf1, 0xa9, 0x73,
|
0xea, 0x3f, 0x2e, 0xfd, 0x90, 0x3f, 0xbe, 0x08, 0x30, 0x8e, 0x3c, 0x8f, 0x72, 0xfe, 0xaa, 0xdf,
|
||||||
0x41, 0x87, 0x3a, 0xcf, 0x54, 0xd6, 0x68, 0xff, 0xe7, 0x74, 0xc8, 0xf1, 0xbc, 0xa1, 0x10, 0xb6,
|
0x8b, 0xe8, 0x3f, 0x54, 0xd8, 0x01, 0x30, 0xb9, 0x60, 0x29, 0x09, 0xa8, 0x7b, 0x4e, 0x47, 0xba,
|
||||||
0xfd, 0x7a, 0xb4, 0x93, 0x7b, 0x33, 0xda, 0xc9, 0xfd, 0x3d, 0xda, 0xc9, 0xfd, 0xf2, 0x76, 0x67,
|
0xce, 0x54, 0xd5, 0x68, 0xff, 0xa7, 0x74, 0xc4, 0xf1, 0xa2, 0xa1, 0x10, 0x8e, 0xf3, 0x66, 0xbc,
|
||||||
0xed, 0xcd, 0xdb, 0x9d, 0xb5, 0x3f, 0xde, 0xee, 0xac, 0x7d, 0xd3, 0x9c, 0xbb, 0xaa, 0xa2, 0x43,
|
0x53, 0x78, 0x3b, 0xde, 0x29, 0xfc, 0x35, 0xde, 0x29, 0xfc, 0xf4, 0x6e, 0x67, 0xed, 0xed, 0xbb,
|
||||||
0x12, 0x1e, 0xf0, 0xd6, 0xec, 0xe5, 0x3f, 0x90, 0x6f, 0x7f, 0x79, 0x61, 0xdb, 0x9b, 0xf2, 0x4d,
|
0x9d, 0xb5, 0x3f, 0xde, 0xed, 0xac, 0x7d, 0xd5, 0x5a, 0xf8, 0x9d, 0x45, 0x97, 0xa4, 0x3c, 0xe4,
|
||||||
0xff, 0xe0, 0xdf, 0x00, 0x00, 0x00, 0xff, 0xff, 0x47, 0x4f, 0x91, 0x4d, 0x19, 0x0c, 0x00, 0x00,
|
0xed, 0xf9, 0x33, 0x7f, 0x28, 0x1f, 0xfa, 0xf2, 0xa7, 0xee, 0x6c, 0xca, 0x07, 0xfc, 0xc3, 0xbf,
|
||||||
|
0x03, 0x00, 0x00, 0xff, 0xff, 0xcd, 0xab, 0x31, 0x31, 0x06, 0x0c, 0x00, 0x00,
|
||||||
}
|
}
|
||||||
|
|
||||||
func (m *Params) Marshal() (dAtA []byte, err error) {
|
func (m *Params) Marshal() (dAtA []byte, err error) {
|
||||||
@ -629,6 +637,16 @@ func (m *Params) MarshalToSizedBuffer(dAtA []byte) (int, error) {
|
|||||||
_ = i
|
_ = i
|
||||||
var l int
|
var l int
|
||||||
_ = l
|
_ = l
|
||||||
|
if m.NoBaseFee {
|
||||||
|
i--
|
||||||
|
if m.NoBaseFee {
|
||||||
|
dAtA[i] = 1
|
||||||
|
} else {
|
||||||
|
dAtA[i] = 0
|
||||||
|
}
|
||||||
|
i--
|
||||||
|
dAtA[i] = 0x30
|
||||||
|
}
|
||||||
{
|
{
|
||||||
size, err := m.ChainConfig.MarshalToSizedBuffer(dAtA[:i])
|
size, err := m.ChainConfig.MarshalToSizedBuffer(dAtA[:i])
|
||||||
if err != nil {
|
if err != nil {
|
||||||
@ -708,6 +726,20 @@ func (m *ChainConfig) MarshalToSizedBuffer(dAtA []byte) (int, error) {
|
|||||||
_ = i
|
_ = i
|
||||||
var l int
|
var l int
|
||||||
_ = l
|
_ = l
|
||||||
|
if m.LondonBlock != nil {
|
||||||
|
{
|
||||||
|
size := m.LondonBlock.Size()
|
||||||
|
i -= size
|
||||||
|
if _, err := m.LondonBlock.MarshalTo(dAtA[i:]); err != nil {
|
||||||
|
return 0, err
|
||||||
|
}
|
||||||
|
i = encodeVarintEvm(dAtA, i, uint64(size))
|
||||||
|
}
|
||||||
|
i--
|
||||||
|
dAtA[i] = 0x1
|
||||||
|
i--
|
||||||
|
dAtA[i] = 0x8a
|
||||||
|
}
|
||||||
if m.CatalystBlock != nil {
|
if m.CatalystBlock != nil {
|
||||||
{
|
{
|
||||||
size := m.CatalystBlock.Size()
|
size := m.CatalystBlock.Size()
|
||||||
@ -722,30 +754,6 @@ func (m *ChainConfig) MarshalToSizedBuffer(dAtA []byte) (int, error) {
|
|||||||
i--
|
i--
|
||||||
dAtA[i] = 0x82
|
dAtA[i] = 0x82
|
||||||
}
|
}
|
||||||
if m.EWASMBlock != nil {
|
|
||||||
{
|
|
||||||
size := m.EWASMBlock.Size()
|
|
||||||
i -= size
|
|
||||||
if _, err := m.EWASMBlock.MarshalTo(dAtA[i:]); err != nil {
|
|
||||||
return 0, err
|
|
||||||
}
|
|
||||||
i = encodeVarintEvm(dAtA, i, uint64(size))
|
|
||||||
}
|
|
||||||
i--
|
|
||||||
dAtA[i] = 0x7a
|
|
||||||
}
|
|
||||||
if m.YoloV3Block != nil {
|
|
||||||
{
|
|
||||||
size := m.YoloV3Block.Size()
|
|
||||||
i -= size
|
|
||||||
if _, err := m.YoloV3Block.MarshalTo(dAtA[i:]); err != nil {
|
|
||||||
return 0, err
|
|
||||||
}
|
|
||||||
i = encodeVarintEvm(dAtA, i, uint64(size))
|
|
||||||
}
|
|
||||||
i--
|
|
||||||
dAtA[i] = 0x72
|
|
||||||
}
|
|
||||||
if m.BerlinBlock != nil {
|
if m.BerlinBlock != nil {
|
||||||
{
|
{
|
||||||
size := m.BerlinBlock.Size()
|
size := m.BerlinBlock.Size()
|
||||||
@ -1208,6 +1216,9 @@ func (m *Params) Size() (n int) {
|
|||||||
}
|
}
|
||||||
l = m.ChainConfig.Size()
|
l = m.ChainConfig.Size()
|
||||||
n += 1 + l + sovEvm(uint64(l))
|
n += 1 + l + sovEvm(uint64(l))
|
||||||
|
if m.NoBaseFee {
|
||||||
|
n += 2
|
||||||
|
}
|
||||||
return n
|
return n
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1268,18 +1279,14 @@ func (m *ChainConfig) Size() (n int) {
|
|||||||
l = m.BerlinBlock.Size()
|
l = m.BerlinBlock.Size()
|
||||||
n += 1 + l + sovEvm(uint64(l))
|
n += 1 + l + sovEvm(uint64(l))
|
||||||
}
|
}
|
||||||
if m.YoloV3Block != nil {
|
|
||||||
l = m.YoloV3Block.Size()
|
|
||||||
n += 1 + l + sovEvm(uint64(l))
|
|
||||||
}
|
|
||||||
if m.EWASMBlock != nil {
|
|
||||||
l = m.EWASMBlock.Size()
|
|
||||||
n += 1 + l + sovEvm(uint64(l))
|
|
||||||
}
|
|
||||||
if m.CatalystBlock != nil {
|
if m.CatalystBlock != nil {
|
||||||
l = m.CatalystBlock.Size()
|
l = m.CatalystBlock.Size()
|
||||||
n += 2 + l + sovEvm(uint64(l))
|
n += 2 + l + sovEvm(uint64(l))
|
||||||
}
|
}
|
||||||
|
if m.LondonBlock != nil {
|
||||||
|
l = m.LondonBlock.Size()
|
||||||
|
n += 2 + l + sovEvm(uint64(l))
|
||||||
|
}
|
||||||
return n
|
return n
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1626,6 +1633,26 @@ func (m *Params) Unmarshal(dAtA []byte) error {
|
|||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
iNdEx = postIndex
|
iNdEx = postIndex
|
||||||
|
case 6:
|
||||||
|
if wireType != 0 {
|
||||||
|
return fmt.Errorf("proto: wrong wireType = %d for field NoBaseFee", 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.NoBaseFee = bool(v != 0)
|
||||||
default:
|
default:
|
||||||
iNdEx = preIndex
|
iNdEx = preIndex
|
||||||
skippy, err := skipEvm(dAtA[iNdEx:])
|
skippy, err := skipEvm(dAtA[iNdEx:])
|
||||||
@ -2124,78 +2151,6 @@ func (m *ChainConfig) Unmarshal(dAtA []byte) error {
|
|||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
iNdEx = postIndex
|
iNdEx = postIndex
|
||||||
case 14:
|
|
||||||
if wireType != 2 {
|
|
||||||
return fmt.Errorf("proto: wrong wireType = %d for field YoloV3Block", wireType)
|
|
||||||
}
|
|
||||||
var stringLen uint64
|
|
||||||
for shift := uint(0); ; shift += 7 {
|
|
||||||
if shift >= 64 {
|
|
||||||
return ErrIntOverflowEvm
|
|
||||||
}
|
|
||||||
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 ErrInvalidLengthEvm
|
|
||||||
}
|
|
||||||
postIndex := iNdEx + intStringLen
|
|
||||||
if postIndex < 0 {
|
|
||||||
return ErrInvalidLengthEvm
|
|
||||||
}
|
|
||||||
if postIndex > l {
|
|
||||||
return io.ErrUnexpectedEOF
|
|
||||||
}
|
|
||||||
var v github_com_cosmos_cosmos_sdk_types.Int
|
|
||||||
m.YoloV3Block = &v
|
|
||||||
if err := m.YoloV3Block.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
|
|
||||||
return err
|
|
||||||
}
|
|
||||||
iNdEx = postIndex
|
|
||||||
case 15:
|
|
||||||
if wireType != 2 {
|
|
||||||
return fmt.Errorf("proto: wrong wireType = %d for field EWASMBlock", wireType)
|
|
||||||
}
|
|
||||||
var stringLen uint64
|
|
||||||
for shift := uint(0); ; shift += 7 {
|
|
||||||
if shift >= 64 {
|
|
||||||
return ErrIntOverflowEvm
|
|
||||||
}
|
|
||||||
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 ErrInvalidLengthEvm
|
|
||||||
}
|
|
||||||
postIndex := iNdEx + intStringLen
|
|
||||||
if postIndex < 0 {
|
|
||||||
return ErrInvalidLengthEvm
|
|
||||||
}
|
|
||||||
if postIndex > l {
|
|
||||||
return io.ErrUnexpectedEOF
|
|
||||||
}
|
|
||||||
var v github_com_cosmos_cosmos_sdk_types.Int
|
|
||||||
m.EWASMBlock = &v
|
|
||||||
if err := m.EWASMBlock.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
|
|
||||||
return err
|
|
||||||
}
|
|
||||||
iNdEx = postIndex
|
|
||||||
case 16:
|
case 16:
|
||||||
if wireType != 2 {
|
if wireType != 2 {
|
||||||
return fmt.Errorf("proto: wrong wireType = %d for field CatalystBlock", wireType)
|
return fmt.Errorf("proto: wrong wireType = %d for field CatalystBlock", wireType)
|
||||||
@ -2232,6 +2187,42 @@ func (m *ChainConfig) Unmarshal(dAtA []byte) error {
|
|||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
iNdEx = postIndex
|
iNdEx = postIndex
|
||||||
|
case 17:
|
||||||
|
if wireType != 2 {
|
||||||
|
return fmt.Errorf("proto: wrong wireType = %d for field LondonBlock", wireType)
|
||||||
|
}
|
||||||
|
var stringLen uint64
|
||||||
|
for shift := uint(0); ; shift += 7 {
|
||||||
|
if shift >= 64 {
|
||||||
|
return ErrIntOverflowEvm
|
||||||
|
}
|
||||||
|
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 ErrInvalidLengthEvm
|
||||||
|
}
|
||||||
|
postIndex := iNdEx + intStringLen
|
||||||
|
if postIndex < 0 {
|
||||||
|
return ErrInvalidLengthEvm
|
||||||
|
}
|
||||||
|
if postIndex > l {
|
||||||
|
return io.ErrUnexpectedEOF
|
||||||
|
}
|
||||||
|
var v github_com_cosmos_cosmos_sdk_types.Int
|
||||||
|
m.LondonBlock = &v
|
||||||
|
if err := m.LondonBlock.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
iNdEx = postIndex
|
||||||
default:
|
default:
|
||||||
iNdEx = preIndex
|
iNdEx = preIndex
|
||||||
skippy, err := skipEvm(dAtA[iNdEx:])
|
skippy, err := skipEvm(dAtA[iNdEx:])
|
||||||
|
@ -24,14 +24,18 @@ const (
|
|||||||
RouterKey = ModuleName
|
RouterKey = ModuleName
|
||||||
)
|
)
|
||||||
|
|
||||||
|
// prefix bytes for the EVM persistent store
|
||||||
const (
|
const (
|
||||||
prefixHeightToHeaderHash = iota + 1
|
prefixHeightToHeaderHash = iota + 1
|
||||||
prefixBloom
|
prefixBloom
|
||||||
prefixLogs
|
prefixLogs
|
||||||
prefixCode
|
prefixCode
|
||||||
prefixStorage
|
prefixStorage
|
||||||
|
prefixBlockGasUsed
|
||||||
|
prefixBaseFee
|
||||||
)
|
)
|
||||||
|
|
||||||
|
// prefix bytes for the EVM transient store
|
||||||
const (
|
const (
|
||||||
prefixTransientSuicided = iota + 1
|
prefixTransientSuicided = iota + 1
|
||||||
prefixTransientBloom
|
prefixTransientBloom
|
||||||
@ -50,8 +54,11 @@ var (
|
|||||||
KeyPrefixLogs = []byte{prefixLogs}
|
KeyPrefixLogs = []byte{prefixLogs}
|
||||||
KeyPrefixCode = []byte{prefixCode}
|
KeyPrefixCode = []byte{prefixCode}
|
||||||
KeyPrefixStorage = []byte{prefixStorage}
|
KeyPrefixStorage = []byte{prefixStorage}
|
||||||
|
KeyPrefixBlockGasUsed = []byte{prefixBlockGasUsed}
|
||||||
|
KeyPrefixBaseFee = []byte{prefixBaseFee}
|
||||||
)
|
)
|
||||||
|
|
||||||
|
// Transient Store key prefixes
|
||||||
var (
|
var (
|
||||||
KeyPrefixTransientSuicided = []byte{prefixTransientSuicided}
|
KeyPrefixTransientSuicided = []byte{prefixTransientSuicided}
|
||||||
KeyPrefixTransientBloom = []byte{prefixTransientBloom}
|
KeyPrefixTransientBloom = []byte{prefixTransientBloom}
|
||||||
|
@ -24,6 +24,7 @@ var (
|
|||||||
ParamStoreKeyEnableCall = []byte("EnableCall")
|
ParamStoreKeyEnableCall = []byte("EnableCall")
|
||||||
ParamStoreKeyExtraEIPs = []byte("EnableExtraEIPs")
|
ParamStoreKeyExtraEIPs = []byte("EnableExtraEIPs")
|
||||||
ParamStoreKeyChainConfig = []byte("ChainConfig")
|
ParamStoreKeyChainConfig = []byte("ChainConfig")
|
||||||
|
ParamStoreKeyNoBaseFee = []byte("NoBaseFee")
|
||||||
|
|
||||||
// AvailableExtraEIPs define the list of all EIPs that can be enabled by the EVM interpreter. These EIPs are applied in
|
// 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
|
// order and can override the instruction sets from the latest hard fork enabled by the ChainConfig. For more info
|
||||||
@ -37,13 +38,14 @@ func ParamKeyTable() paramtypes.KeyTable {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// NewParams creates a new Params instance
|
// NewParams creates a new Params instance
|
||||||
func NewParams(evmDenom string, enableCreate, enableCall bool, config ChainConfig, extraEIPs ...int64) Params {
|
func NewParams(evmDenom string, enableCreate, enableCall bool, config ChainConfig, noBaseFee bool, extraEIPs ...int64) Params {
|
||||||
return Params{
|
return Params{
|
||||||
EvmDenom: evmDenom,
|
EvmDenom: evmDenom,
|
||||||
EnableCreate: enableCreate,
|
EnableCreate: enableCreate,
|
||||||
EnableCall: enableCall,
|
EnableCall: enableCall,
|
||||||
ExtraEIPs: extraEIPs,
|
ExtraEIPs: extraEIPs,
|
||||||
ChainConfig: config,
|
ChainConfig: config,
|
||||||
|
NoBaseFee: noBaseFee,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -56,6 +58,7 @@ func DefaultParams() Params {
|
|||||||
EnableCall: true,
|
EnableCall: true,
|
||||||
ChainConfig: DefaultChainConfig(),
|
ChainConfig: DefaultChainConfig(),
|
||||||
ExtraEIPs: nil,
|
ExtraEIPs: nil,
|
||||||
|
NoBaseFee: true,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -73,6 +76,7 @@ func (p *Params) ParamSetPairs() paramtypes.ParamSetPairs {
|
|||||||
paramtypes.NewParamSetPair(ParamStoreKeyEnableCall, &p.EnableCall, validateBool),
|
paramtypes.NewParamSetPair(ParamStoreKeyEnableCall, &p.EnableCall, validateBool),
|
||||||
paramtypes.NewParamSetPair(ParamStoreKeyExtraEIPs, &p.ExtraEIPs, validateEIPs),
|
paramtypes.NewParamSetPair(ParamStoreKeyExtraEIPs, &p.ExtraEIPs, validateEIPs),
|
||||||
paramtypes.NewParamSetPair(ParamStoreKeyChainConfig, &p.ChainConfig, validateChainConfig),
|
paramtypes.NewParamSetPair(ParamStoreKeyChainConfig, &p.ChainConfig, validateChainConfig),
|
||||||
|
paramtypes.NewParamSetPair(ParamStoreKeyNoBaseFee, &p.NoBaseFee, validateBool),
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -15,7 +15,7 @@ func TestParamsValidate(t *testing.T) {
|
|||||||
{"default", DefaultParams(), false},
|
{"default", DefaultParams(), false},
|
||||||
{
|
{
|
||||||
"valid",
|
"valid",
|
||||||
NewParams("ara", true, true, DefaultChainConfig(), 2929, 1884, 1344),
|
NewParams("ara", true, true, DefaultChainConfig(), true, 2929, 1884, 1344),
|
||||||
false,
|
false,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@ -40,7 +40,7 @@ func TestParamsValidate(t *testing.T) {
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
"invalid chain config",
|
"invalid chain config",
|
||||||
NewParams("ara", true, true, ChainConfig{}, 2929, 1884, 1344),
|
NewParams("ara", true, true, ChainConfig{}, true, 2929, 1884, 1344),
|
||||||
false,
|
false,
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
@ -6,6 +6,7 @@ package types
|
|||||||
import (
|
import (
|
||||||
context "context"
|
context "context"
|
||||||
fmt "fmt"
|
fmt "fmt"
|
||||||
|
github_com_cosmos_cosmos_sdk_types "github.com/cosmos/cosmos-sdk/types"
|
||||||
query "github.com/cosmos/cosmos-sdk/types/query"
|
query "github.com/cosmos/cosmos-sdk/types/query"
|
||||||
_ "github.com/gogo/protobuf/gogoproto"
|
_ "github.com/gogo/protobuf/gogoproto"
|
||||||
grpc1 "github.com/gogo/protobuf/grpc"
|
grpc1 "github.com/gogo/protobuf/grpc"
|
||||||
@ -963,26 +964,23 @@ func (m *QueryParamsResponse) GetParams() Params {
|
|||||||
return Params{}
|
return Params{}
|
||||||
}
|
}
|
||||||
|
|
||||||
// QueryStaticCallRequest defines static call request
|
// QueryBaseFeeRequest defines the request type for querying the EIP1559 base
|
||||||
type QueryStaticCallRequest struct {
|
// fee.
|
||||||
// address is the ethereum contract hex address to for static call.
|
type QueryBaseFeeRequest struct {
|
||||||
Address string `protobuf:"bytes,1,opt,name=address,proto3" json:"address,omitempty"`
|
|
||||||
// static call input generated from abi
|
|
||||||
Input []byte `protobuf:"bytes,2,opt,name=input,proto3" json:"input,omitempty"`
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func (m *QueryStaticCallRequest) Reset() { *m = QueryStaticCallRequest{} }
|
func (m *QueryBaseFeeRequest) Reset() { *m = QueryBaseFeeRequest{} }
|
||||||
func (m *QueryStaticCallRequest) String() string { return proto.CompactTextString(m) }
|
func (m *QueryBaseFeeRequest) String() string { return proto.CompactTextString(m) }
|
||||||
func (*QueryStaticCallRequest) ProtoMessage() {}
|
func (*QueryBaseFeeRequest) ProtoMessage() {}
|
||||||
func (*QueryStaticCallRequest) Descriptor() ([]byte, []int) {
|
func (*QueryBaseFeeRequest) Descriptor() ([]byte, []int) {
|
||||||
return fileDescriptor_e15a877459347994, []int{20}
|
return fileDescriptor_e15a877459347994, []int{20}
|
||||||
}
|
}
|
||||||
func (m *QueryStaticCallRequest) XXX_Unmarshal(b []byte) error {
|
func (m *QueryBaseFeeRequest) XXX_Unmarshal(b []byte) error {
|
||||||
return m.Unmarshal(b)
|
return m.Unmarshal(b)
|
||||||
}
|
}
|
||||||
func (m *QueryStaticCallRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
|
func (m *QueryBaseFeeRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
|
||||||
if deterministic {
|
if deterministic {
|
||||||
return xxx_messageInfo_QueryStaticCallRequest.Marshal(b, m, deterministic)
|
return xxx_messageInfo_QueryBaseFeeRequest.Marshal(b, m, deterministic)
|
||||||
} else {
|
} else {
|
||||||
b = b[:cap(b)]
|
b = b[:cap(b)]
|
||||||
n, err := m.MarshalToSizedBuffer(b)
|
n, err := m.MarshalToSizedBuffer(b)
|
||||||
@ -992,31 +990,55 @@ func (m *QueryStaticCallRequest) XXX_Marshal(b []byte, deterministic bool) ([]by
|
|||||||
return b[:n], nil
|
return b[:n], nil
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
func (m *QueryStaticCallRequest) XXX_Merge(src proto.Message) {
|
func (m *QueryBaseFeeRequest) XXX_Merge(src proto.Message) {
|
||||||
xxx_messageInfo_QueryStaticCallRequest.Merge(m, src)
|
xxx_messageInfo_QueryBaseFeeRequest.Merge(m, src)
|
||||||
}
|
}
|
||||||
func (m *QueryStaticCallRequest) XXX_Size() int {
|
func (m *QueryBaseFeeRequest) XXX_Size() int {
|
||||||
return m.Size()
|
return m.Size()
|
||||||
}
|
}
|
||||||
func (m *QueryStaticCallRequest) XXX_DiscardUnknown() {
|
func (m *QueryBaseFeeRequest) XXX_DiscardUnknown() {
|
||||||
xxx_messageInfo_QueryStaticCallRequest.DiscardUnknown(m)
|
xxx_messageInfo_QueryBaseFeeRequest.DiscardUnknown(m)
|
||||||
}
|
}
|
||||||
|
|
||||||
var xxx_messageInfo_QueryStaticCallRequest proto.InternalMessageInfo
|
var xxx_messageInfo_QueryBaseFeeRequest proto.InternalMessageInfo
|
||||||
|
|
||||||
func (m *QueryStaticCallRequest) GetAddress() string {
|
// BaseFeeResponse returns the EIP1559 base fee.
|
||||||
if m != nil {
|
type QueryBaseFeeResponse struct {
|
||||||
return m.Address
|
BaseFee github_com_cosmos_cosmos_sdk_types.Int `protobuf:"bytes,1,opt,name=base_fee,json=baseFee,proto3,customtype=github.com/cosmos/cosmos-sdk/types.Int" json:"base_fee"`
|
||||||
|
}
|
||||||
|
|
||||||
|
func (m *QueryBaseFeeResponse) Reset() { *m = QueryBaseFeeResponse{} }
|
||||||
|
func (m *QueryBaseFeeResponse) String() string { return proto.CompactTextString(m) }
|
||||||
|
func (*QueryBaseFeeResponse) ProtoMessage() {}
|
||||||
|
func (*QueryBaseFeeResponse) Descriptor() ([]byte, []int) {
|
||||||
|
return fileDescriptor_e15a877459347994, []int{21}
|
||||||
|
}
|
||||||
|
func (m *QueryBaseFeeResponse) XXX_Unmarshal(b []byte) error {
|
||||||
|
return m.Unmarshal(b)
|
||||||
|
}
|
||||||
|
func (m *QueryBaseFeeResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
|
||||||
|
if deterministic {
|
||||||
|
return xxx_messageInfo_QueryBaseFeeResponse.Marshal(b, m, deterministic)
|
||||||
|
} else {
|
||||||
|
b = b[:cap(b)]
|
||||||
|
n, err := m.MarshalToSizedBuffer(b)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
}
|
}
|
||||||
return ""
|
return b[:n], nil
|
||||||
|
}
|
||||||
|
}
|
||||||
|
func (m *QueryBaseFeeResponse) XXX_Merge(src proto.Message) {
|
||||||
|
xxx_messageInfo_QueryBaseFeeResponse.Merge(m, src)
|
||||||
|
}
|
||||||
|
func (m *QueryBaseFeeResponse) XXX_Size() int {
|
||||||
|
return m.Size()
|
||||||
|
}
|
||||||
|
func (m *QueryBaseFeeResponse) XXX_DiscardUnknown() {
|
||||||
|
xxx_messageInfo_QueryBaseFeeResponse.DiscardUnknown(m)
|
||||||
}
|
}
|
||||||
|
|
||||||
func (m *QueryStaticCallRequest) GetInput() []byte {
|
var xxx_messageInfo_QueryBaseFeeResponse proto.InternalMessageInfo
|
||||||
if m != nil {
|
|
||||||
return m.Input
|
|
||||||
}
|
|
||||||
return nil
|
|
||||||
}
|
|
||||||
|
|
||||||
// QueryStaticCallRequest defines static call response
|
// QueryStaticCallRequest defines static call response
|
||||||
type QueryStaticCallResponse struct {
|
type QueryStaticCallResponse struct {
|
||||||
@ -1027,7 +1049,7 @@ func (m *QueryStaticCallResponse) Reset() { *m = QueryStaticCallResponse
|
|||||||
func (m *QueryStaticCallResponse) String() string { return proto.CompactTextString(m) }
|
func (m *QueryStaticCallResponse) String() string { return proto.CompactTextString(m) }
|
||||||
func (*QueryStaticCallResponse) ProtoMessage() {}
|
func (*QueryStaticCallResponse) ProtoMessage() {}
|
||||||
func (*QueryStaticCallResponse) Descriptor() ([]byte, []int) {
|
func (*QueryStaticCallResponse) Descriptor() ([]byte, []int) {
|
||||||
return fileDescriptor_e15a877459347994, []int{21}
|
return fileDescriptor_e15a877459347994, []int{22}
|
||||||
}
|
}
|
||||||
func (m *QueryStaticCallResponse) XXX_Unmarshal(b []byte) error {
|
func (m *QueryStaticCallResponse) XXX_Unmarshal(b []byte) error {
|
||||||
return m.Unmarshal(b)
|
return m.Unmarshal(b)
|
||||||
@ -1075,7 +1097,7 @@ func (m *EthCallRequest) Reset() { *m = EthCallRequest{} }
|
|||||||
func (m *EthCallRequest) String() string { return proto.CompactTextString(m) }
|
func (m *EthCallRequest) String() string { return proto.CompactTextString(m) }
|
||||||
func (*EthCallRequest) ProtoMessage() {}
|
func (*EthCallRequest) ProtoMessage() {}
|
||||||
func (*EthCallRequest) Descriptor() ([]byte, []int) {
|
func (*EthCallRequest) Descriptor() ([]byte, []int) {
|
||||||
return fileDescriptor_e15a877459347994, []int{22}
|
return fileDescriptor_e15a877459347994, []int{23}
|
||||||
}
|
}
|
||||||
func (m *EthCallRequest) XXX_Unmarshal(b []byte) error {
|
func (m *EthCallRequest) XXX_Unmarshal(b []byte) error {
|
||||||
return m.Unmarshal(b)
|
return m.Unmarshal(b)
|
||||||
@ -1128,7 +1150,7 @@ func (m *EstimateGasResponse) Reset() { *m = EstimateGasResponse{} }
|
|||||||
func (m *EstimateGasResponse) String() string { return proto.CompactTextString(m) }
|
func (m *EstimateGasResponse) String() string { return proto.CompactTextString(m) }
|
||||||
func (*EstimateGasResponse) ProtoMessage() {}
|
func (*EstimateGasResponse) ProtoMessage() {}
|
||||||
func (*EstimateGasResponse) Descriptor() ([]byte, []int) {
|
func (*EstimateGasResponse) Descriptor() ([]byte, []int) {
|
||||||
return fileDescriptor_e15a877459347994, []int{23}
|
return fileDescriptor_e15a877459347994, []int{24}
|
||||||
}
|
}
|
||||||
func (m *EstimateGasResponse) XXX_Unmarshal(b []byte) error {
|
func (m *EstimateGasResponse) XXX_Unmarshal(b []byte) error {
|
||||||
return m.Unmarshal(b)
|
return m.Unmarshal(b)
|
||||||
@ -1185,7 +1207,8 @@ func init() {
|
|||||||
proto.RegisterType((*QueryBlockBloomResponse)(nil), "ethermint.evm.v1.QueryBlockBloomResponse")
|
proto.RegisterType((*QueryBlockBloomResponse)(nil), "ethermint.evm.v1.QueryBlockBloomResponse")
|
||||||
proto.RegisterType((*QueryParamsRequest)(nil), "ethermint.evm.v1.QueryParamsRequest")
|
proto.RegisterType((*QueryParamsRequest)(nil), "ethermint.evm.v1.QueryParamsRequest")
|
||||||
proto.RegisterType((*QueryParamsResponse)(nil), "ethermint.evm.v1.QueryParamsResponse")
|
proto.RegisterType((*QueryParamsResponse)(nil), "ethermint.evm.v1.QueryParamsResponse")
|
||||||
proto.RegisterType((*QueryStaticCallRequest)(nil), "ethermint.evm.v1.QueryStaticCallRequest")
|
proto.RegisterType((*QueryBaseFeeRequest)(nil), "ethermint.evm.v1.QueryBaseFeeRequest")
|
||||||
|
proto.RegisterType((*QueryBaseFeeResponse)(nil), "ethermint.evm.v1.QueryBaseFeeResponse")
|
||||||
proto.RegisterType((*QueryStaticCallResponse)(nil), "ethermint.evm.v1.QueryStaticCallResponse")
|
proto.RegisterType((*QueryStaticCallResponse)(nil), "ethermint.evm.v1.QueryStaticCallResponse")
|
||||||
proto.RegisterType((*EthCallRequest)(nil), "ethermint.evm.v1.EthCallRequest")
|
proto.RegisterType((*EthCallRequest)(nil), "ethermint.evm.v1.EthCallRequest")
|
||||||
proto.RegisterType((*EstimateGasResponse)(nil), "ethermint.evm.v1.EstimateGasResponse")
|
proto.RegisterType((*EstimateGasResponse)(nil), "ethermint.evm.v1.EstimateGasResponse")
|
||||||
@ -1194,85 +1217,87 @@ func init() {
|
|||||||
func init() { proto.RegisterFile("ethermint/evm/v1/query.proto", fileDescriptor_e15a877459347994) }
|
func init() { proto.RegisterFile("ethermint/evm/v1/query.proto", fileDescriptor_e15a877459347994) }
|
||||||
|
|
||||||
var fileDescriptor_e15a877459347994 = []byte{
|
var fileDescriptor_e15a877459347994 = []byte{
|
||||||
// 1243 bytes of a gzipped FileDescriptorProto
|
// 1279 bytes of a gzipped FileDescriptorProto
|
||||||
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xac, 0x57, 0x5d, 0x6b, 0x1b, 0x47,
|
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xac, 0x57, 0x4f, 0x6f, 0x13, 0x47,
|
||||||
0x17, 0xd6, 0xc6, 0xb2, 0x14, 0x1f, 0x7f, 0xbc, 0x7e, 0x27, 0x4a, 0xe2, 0x6c, 0x1d, 0x59, 0x1e,
|
0x14, 0xf7, 0x12, 0x63, 0x87, 0x17, 0xa0, 0xe9, 0x10, 0x20, 0x6c, 0x83, 0x63, 0x06, 0x92, 0x38,
|
||||||
0xc7, 0xb6, 0x1c, 0xbb, 0xda, 0x58, 0x2d, 0x81, 0x06, 0x4a, 0x63, 0x1b, 0x37, 0x81, 0x24, 0x25,
|
0x10, 0x76, 0x89, 0x5b, 0x21, 0x15, 0xa9, 0x2a, 0x38, 0x0a, 0x14, 0x01, 0x15, 0x35, 0x51, 0x0f,
|
||||||
0x55, 0x4c, 0x2f, 0x7a, 0x23, 0x46, 0xab, 0x65, 0x25, 0x2c, 0xed, 0x28, 0x9a, 0x91, 0x2a, 0xd7,
|
0xbd, 0x58, 0xe3, 0xf5, 0x74, 0x6d, 0xc5, 0xde, 0x31, 0x9e, 0xb5, 0xeb, 0x34, 0x4d, 0x5b, 0x55,
|
||||||
0xb8, 0x85, 0x42, 0x43, 0x20, 0x14, 0x0a, 0xbd, 0x2f, 0x81, 0xfe, 0x80, 0xfe, 0x8d, 0x5c, 0x06,
|
0x2a, 0x42, 0xe2, 0x52, 0xa9, 0xf7, 0x0a, 0xa9, 0x1f, 0xa0, 0x5f, 0x83, 0x23, 0x52, 0x2f, 0x55,
|
||||||
0x7a, 0xd3, 0xab, 0x52, 0xec, 0x5e, 0xf4, 0x67, 0x94, 0xf9, 0x58, 0x69, 0x57, 0xab, 0xb5, 0x9c,
|
0x0f, 0xa8, 0x4a, 0x7a, 0xe8, 0xc7, 0xa8, 0xe6, 0xcf, 0xda, 0xbb, 0x5e, 0x6f, 0x1c, 0xaa, 0x9e,
|
||||||
0xd2, 0xbb, 0xf9, 0x38, 0xe7, 0x3c, 0xcf, 0xf9, 0xd8, 0x79, 0x24, 0x58, 0x74, 0x78, 0xcd, 0x69,
|
0xb2, 0x33, 0xf3, 0xde, 0xfb, 0xfd, 0xe6, 0xfd, 0x99, 0x5f, 0x0c, 0x0b, 0xd4, 0xaf, 0xd3, 0x4e,
|
||||||
0x37, 0xeb, 0x1e, 0xb7, 0x9c, 0x6e, 0xd3, 0xea, 0x6e, 0x5b, 0xcf, 0x3b, 0x4e, 0xfb, 0xa8, 0xd0,
|
0xab, 0xe1, 0xf9, 0x36, 0xed, 0xb5, 0xec, 0xde, 0xba, 0xfd, 0xb4, 0x4b, 0x3b, 0x3b, 0x56, 0xbb,
|
||||||
0x6a, 0x53, 0x4e, 0xd1, 0x7c, 0xff, 0xb6, 0xe0, 0x74, 0x9b, 0x85, 0xee, 0xb6, 0x99, 0x71, 0xa9,
|
0xc3, 0x7c, 0x86, 0x66, 0x07, 0xa7, 0x16, 0xed, 0xb5, 0xac, 0xde, 0xba, 0x39, 0xe7, 0x32, 0x97,
|
||||||
0x4b, 0xe5, 0xa5, 0x25, 0x56, 0xca, 0xce, 0xbc, 0x6d, 0x53, 0xd6, 0xa4, 0xcc, 0xaa, 0x10, 0xe6,
|
0xc9, 0x43, 0x5b, 0x7c, 0x29, 0x3b, 0xf3, 0xaa, 0xc3, 0x78, 0x8b, 0x71, 0xbb, 0x4a, 0x38, 0x55,
|
||||||
0xa8, 0x00, 0x56, 0x77, 0xbb, 0xe2, 0x70, 0xb2, 0x6d, 0xb5, 0x88, 0x5b, 0xf7, 0x08, 0xaf, 0x53,
|
0x01, 0xec, 0xde, 0x7a, 0x95, 0xfa, 0x64, 0xdd, 0x6e, 0x13, 0xb7, 0xe1, 0x11, 0xbf, 0xc1, 0x3c,
|
||||||
0x4f, 0xdb, 0x2e, 0xba, 0x94, 0xba, 0x0d, 0xc7, 0x22, 0xad, 0xba, 0x45, 0x3c, 0x8f, 0x72, 0x79,
|
0x6d, 0xbb, 0xe0, 0x32, 0xe6, 0x36, 0xa9, 0x4d, 0xda, 0x0d, 0x9b, 0x78, 0x1e, 0xf3, 0xe5, 0x21,
|
||||||
0xc9, 0xf4, 0xad, 0x19, 0xe1, 0x23, 0x80, 0xd5, 0xdd, 0x8d, 0xc8, 0x1d, 0xef, 0xa9, 0x2b, 0xfc,
|
0xd7, 0xa7, 0x66, 0x8c, 0x8f, 0x00, 0x56, 0x67, 0x17, 0x62, 0x67, 0x7e, 0x5f, 0x1d, 0xe1, 0x0f,
|
||||||
0x11, 0x5c, 0xf9, 0x5c, 0xc0, 0xee, 0xd8, 0x36, 0xed, 0x78, 0xbc, 0xe4, 0x3c, 0xef, 0x38, 0x8c,
|
0xe1, 0xcc, 0x67, 0x02, 0xf6, 0x8e, 0xe3, 0xb0, 0xae, 0xe7, 0x97, 0xe9, 0xd3, 0x2e, 0xe5, 0x3e,
|
||||||
0xa3, 0x05, 0x48, 0x93, 0x6a, 0xb5, 0xed, 0x30, 0xb6, 0x60, 0xe4, 0x8c, 0xfc, 0x54, 0xc9, 0xdf,
|
0x9a, 0x87, 0x2c, 0xa9, 0xd5, 0x3a, 0x94, 0xf3, 0x79, 0x23, 0x6f, 0x14, 0x4e, 0x94, 0x83, 0xe5,
|
||||||
0xde, 0xbb, 0xfc, 0xf2, 0xf5, 0x52, 0xe2, 0xef, 0xd7, 0x4b, 0x09, 0x6c, 0x43, 0x26, 0xec, 0xca,
|
0xad, 0xe9, 0xe7, 0x2f, 0x17, 0x53, 0xff, 0xbc, 0x5c, 0x4c, 0x61, 0x07, 0xe6, 0xa2, 0xae, 0xbc,
|
||||||
0x5a, 0xd4, 0x63, 0x8e, 0xf0, 0xad, 0x90, 0x06, 0xf1, 0x6c, 0xc7, 0xf7, 0xd5, 0x5b, 0xf4, 0x1e,
|
0xcd, 0x3c, 0x4e, 0x85, 0x6f, 0x95, 0x34, 0x89, 0xe7, 0xd0, 0xc0, 0x57, 0x2f, 0xd1, 0x7b, 0x70,
|
||||||
0x4c, 0xd9, 0xb4, 0xea, 0x94, 0x6b, 0x84, 0xd5, 0x16, 0x2e, 0xc9, 0xbb, 0xcb, 0xe2, 0xe0, 0x21,
|
0xc2, 0x61, 0x35, 0x5a, 0xa9, 0x13, 0x5e, 0x9f, 0x3f, 0x26, 0xcf, 0xa6, 0xc5, 0xc6, 0x27, 0x84,
|
||||||
0x61, 0x35, 0x94, 0x81, 0x49, 0x8f, 0x0a, 0xa7, 0x89, 0x9c, 0x91, 0x4f, 0x96, 0xd4, 0x06, 0x7f,
|
0xd7, 0xd1, 0x1c, 0x1c, 0xf7, 0x98, 0x70, 0x9a, 0xca, 0x1b, 0x85, 0x74, 0x59, 0x2d, 0xf0, 0xc7,
|
||||||
0x02, 0x37, 0x24, 0xc8, 0x9e, 0xac, 0xd3, 0xbf, 0x60, 0xf9, 0xc2, 0x00, 0x73, 0x54, 0x04, 0x4d,
|
0x70, 0x41, 0x82, 0x6c, 0xc8, 0x3c, 0xfd, 0x07, 0x96, 0xcf, 0x0c, 0x30, 0xc7, 0x45, 0xd0, 0x64,
|
||||||
0x76, 0x15, 0xe6, 0x54, 0x0b, 0xca, 0xe1, 0x48, 0xb3, 0xea, 0x74, 0x47, 0x1d, 0x22, 0x13, 0x2e,
|
0x97, 0xe0, 0xb4, 0x2a, 0x41, 0x25, 0x1a, 0xe9, 0x94, 0xda, 0xbd, 0xa3, 0x36, 0x91, 0x09, 0xd3,
|
||||||
0x33, 0x01, 0x2a, 0xf8, 0x5d, 0x92, 0xfc, 0xfa, 0x7b, 0x11, 0x82, 0xa8, 0xa8, 0x65, 0xaf, 0xd3,
|
0x5c, 0x80, 0x0a, 0x7e, 0xc7, 0x24, 0xbf, 0xc1, 0x5a, 0x84, 0x20, 0x2a, 0x6a, 0xc5, 0xeb, 0xb6,
|
||||||
0xac, 0x38, 0x6d, 0x9d, 0xc1, 0xac, 0x3e, 0xfd, 0x4c, 0x1e, 0xe2, 0x47, 0xb0, 0x28, 0x79, 0x7c,
|
0xaa, 0xb4, 0xa3, 0x6f, 0x70, 0x4a, 0xef, 0x7e, 0x2a, 0x37, 0xf1, 0x03, 0x58, 0x90, 0x3c, 0x3e,
|
||||||
0x41, 0x1a, 0xf5, 0x2a, 0xe1, 0xb4, 0x3d, 0x94, 0xcc, 0x32, 0xcc, 0xd8, 0xd4, 0x1b, 0xe6, 0x31,
|
0x27, 0xcd, 0x46, 0x8d, 0xf8, 0xac, 0x33, 0x72, 0x99, 0x4b, 0x70, 0xd2, 0x61, 0xde, 0x28, 0x8f,
|
||||||
0x2d, 0xce, 0x76, 0x22, 0x59, 0xbd, 0x32, 0xe0, 0x66, 0x4c, 0x34, 0x9d, 0xd8, 0x3a, 0xfc, 0xcf,
|
0x19, 0xb1, 0x77, 0x27, 0x76, 0xab, 0x17, 0x06, 0x5c, 0x4c, 0x88, 0xa6, 0x2f, 0xb6, 0x02, 0xef,
|
||||||
0x67, 0x15, 0x8e, 0xe8, 0x93, 0xfd, 0x0f, 0x53, 0xf3, 0x87, 0x68, 0x57, 0xf5, 0xf9, 0x5d, 0xda,
|
0x04, 0xac, 0xa2, 0x11, 0x03, 0xb2, 0xff, 0xe3, 0xd5, 0x82, 0x26, 0x2a, 0xa9, 0x3a, 0xbf, 0x4d,
|
||||||
0x73, 0x47, 0x0f, 0x51, 0xdf, 0x75, 0xdc, 0x10, 0xe1, 0x47, 0x1a, 0xec, 0x19, 0xa7, 0x6d, 0xe2,
|
0x79, 0x6e, 0xe8, 0x26, 0x1a, 0xb8, 0x4e, 0x6a, 0x22, 0xfc, 0x40, 0x83, 0x3d, 0xf1, 0x59, 0x87,
|
||||||
0x8e, 0x07, 0x43, 0xf3, 0x30, 0x71, 0xe8, 0x1c, 0xe9, 0x79, 0x13, 0xcb, 0x00, 0xfc, 0x96, 0x86,
|
0xb8, 0x93, 0xc1, 0xd0, 0x2c, 0x4c, 0x6d, 0xd3, 0x1d, 0xdd, 0x6f, 0xe2, 0x33, 0x04, 0xbf, 0xa6,
|
||||||
0xef, 0x07, 0xd3, 0xf0, 0x19, 0x98, 0xec, 0x92, 0x46, 0xc7, 0x07, 0x57, 0x1b, 0x7c, 0x17, 0xe6,
|
0xe1, 0x07, 0xc1, 0x34, 0xfc, 0x1c, 0x1c, 0xef, 0x91, 0x66, 0x37, 0x00, 0x57, 0x0b, 0x7c, 0x13,
|
||||||
0xf5, 0x28, 0x55, 0xdf, 0x29, 0xc9, 0x75, 0xf8, 0x7f, 0xc0, 0x4f, 0x43, 0x20, 0x48, 0x8a, 0xd9,
|
0x66, 0x75, 0x2b, 0xd5, 0xde, 0xea, 0x92, 0x2b, 0xf0, 0x6e, 0xc8, 0x4f, 0x43, 0x20, 0x48, 0x8b,
|
||||||
0x97, 0x5e, 0x33, 0x25, 0xb9, 0xc6, 0x45, 0x40, 0xd2, 0xf0, 0xa0, 0xf7, 0x98, 0xba, 0xcc, 0x87,
|
0xde, 0x97, 0x5e, 0x27, 0xcb, 0xf2, 0x1b, 0x17, 0x01, 0x49, 0xc3, 0xad, 0xfe, 0x43, 0xe6, 0xf2,
|
||||||
0x40, 0x90, 0x94, 0x5f, 0x8c, 0x8a, 0x2f, 0xd7, 0x81, 0xe0, 0xf7, 0x75, 0x3d, 0x7c, 0x1f, 0x1d,
|
0x00, 0x02, 0x41, 0x5a, 0x4e, 0x8c, 0x8a, 0x2f, 0xbf, 0x43, 0xc1, 0x6f, 0xeb, 0x7c, 0x04, 0x3e,
|
||||||
0x7e, 0x03, 0x92, 0x0d, 0xea, 0x0a, 0x52, 0x13, 0xf9, 0xe9, 0xe2, 0xd5, 0xc2, 0xf0, 0x83, 0x54,
|
0x3a, 0xfc, 0x2a, 0xa4, 0x9b, 0xcc, 0x15, 0xa4, 0xa6, 0x0a, 0x33, 0xc5, 0xb3, 0xd6, 0xe8, 0x83,
|
||||||
0x78, 0x4c, 0xdd, 0x92, 0x34, 0xc1, 0x27, 0x70, 0x55, 0xf5, 0xa0, 0x41, 0xed, 0xc3, 0x31, 0xc0,
|
0x64, 0x3d, 0x64, 0x6e, 0x59, 0x9a, 0xe0, 0x3d, 0x38, 0xab, 0x6a, 0xd0, 0x64, 0xce, 0xf6, 0x04,
|
||||||
0xe8, 0x53, 0x80, 0xc1, 0xcb, 0x24, 0x8b, 0x3a, 0x5d, 0x5c, 0x2b, 0xa8, 0xaf, 0xa5, 0x20, 0x9e,
|
0x60, 0x74, 0x17, 0x60, 0xf8, 0x32, 0xc9, 0xa4, 0xce, 0x14, 0x97, 0x2d, 0x35, 0x2d, 0x96, 0x78,
|
||||||
0xb1, 0x82, 0x7a, 0x07, 0xf5, 0x33, 0x56, 0x78, 0x3a, 0xe8, 0x51, 0x29, 0xe0, 0x19, 0x48, 0xe0,
|
0xc6, 0x2c, 0xf5, 0x0e, 0xea, 0x67, 0xcc, 0x7a, 0x3c, 0xac, 0x51, 0x39, 0xe4, 0x19, 0xba, 0xc0,
|
||||||
0x17, 0x03, 0xae, 0x0d, 0xe3, 0xeb, 0x24, 0xee, 0x43, 0x9a, 0xf7, 0xca, 0x81, 0x3c, 0x96, 0xa3,
|
0xaf, 0x06, 0x9c, 0x1b, 0xc5, 0xd7, 0x97, 0xb8, 0x0d, 0x59, 0xbf, 0x5f, 0x09, 0xdd, 0xe3, 0x52,
|
||||||
0x79, 0x1c, 0xb4, 0x89, 0xc7, 0x88, 0x2d, 0x82, 0x0a, 0xdf, 0xdd, 0xe4, 0x9b, 0x3f, 0x96, 0x12,
|
0xfc, 0x1e, 0x5b, 0x1d, 0xe2, 0x71, 0xe2, 0x88, 0xa0, 0xc2, 0xb7, 0x94, 0x7e, 0xf5, 0x66, 0x31,
|
||||||
0xa5, 0x14, 0x97, 0xe5, 0x40, 0x0f, 0x46, 0xd0, 0x5d, 0x1f, 0x4b, 0x57, 0xc1, 0x07, 0xf9, 0xe2,
|
0x55, 0xce, 0xf8, 0x32, 0x1d, 0xe8, 0xde, 0x18, 0xba, 0x2b, 0x13, 0xe9, 0x2a, 0xf8, 0x30, 0x5f,
|
||||||
0x3b, 0x41, 0x92, 0xbb, 0x0d, 0x4a, 0x9b, 0x7e, 0x95, 0xae, 0x41, 0xaa, 0xe6, 0xd4, 0xdd, 0x1a,
|
0x7c, 0x23, 0x4c, 0xb2, 0xd4, 0x64, 0xac, 0x15, 0x64, 0xe9, 0x1c, 0x64, 0xea, 0xb4, 0xe1, 0xd6,
|
||||||
0x97, 0x75, 0x9a, 0x28, 0xe9, 0x1d, 0xb6, 0xe0, 0x7a, 0xc4, 0x63, 0x30, 0x5e, 0x15, 0x71, 0xa0,
|
0x7d, 0x99, 0xa7, 0xa9, 0xb2, 0x5e, 0x61, 0x1b, 0xce, 0xc7, 0x3c, 0x86, 0xed, 0x55, 0x15, 0x1b,
|
||||||
0x9b, 0xaf, 0x36, 0x38, 0xa3, 0xbb, 0xff, 0x94, 0xb4, 0x49, 0xd3, 0x6f, 0x02, 0x7e, 0xa2, 0xfb,
|
0xba, 0xf8, 0x6a, 0x81, 0xe7, 0x74, 0xf5, 0x1f, 0x93, 0x0e, 0x69, 0x05, 0x45, 0xc0, 0x8f, 0x74,
|
||||||
0xeb, 0x9f, 0xea, 0x10, 0x77, 0x21, 0xd5, 0x92, 0x27, 0x32, 0xc6, 0x74, 0x71, 0x21, 0x5a, 0x19,
|
0x7d, 0x83, 0x5d, 0x1d, 0xe2, 0x26, 0x64, 0xda, 0x72, 0x47, 0xc6, 0x98, 0x29, 0xce, 0xc7, 0x33,
|
||||||
0xe5, 0xe1, 0x17, 0x44, 0x59, 0xe3, 0x87, 0x3a, 0x8f, 0x67, 0x42, 0x3e, 0xec, 0x3d, 0xd2, 0x68,
|
0xa3, 0x3c, 0x82, 0x84, 0x28, 0x6b, 0x7c, 0x76, 0x30, 0xab, 0x9c, 0xde, 0xa5, 0x41, 0x69, 0x30,
|
||||||
0x8c, 0xff, 0x82, 0x32, 0x30, 0x59, 0xf7, 0x5a, 0x1d, 0x2e, 0xeb, 0x37, 0x53, 0x52, 0x1b, 0xfc,
|
0x19, 0xcc, 0xa1, 0xde, 0xd6, 0x30, 0xf7, 0x61, 0x5a, 0x64, 0xa9, 0xf2, 0x25, 0xd5, 0xb3, 0x50,
|
||||||
0xbe, 0xce, 0x2f, 0x18, 0x69, 0x30, 0xdb, 0x55, 0xc2, 0x89, 0x3f, 0xdb, 0x62, 0x8d, 0x3f, 0x86,
|
0xb2, 0x44, 0xb8, 0x3f, 0xdf, 0x2c, 0x2e, 0xbb, 0x0d, 0xbf, 0xde, 0xad, 0x5a, 0x0e, 0x6b, 0xd9,
|
||||||
0xb9, 0x7d, 0x5e, 0x0b, 0x02, 0x22, 0x48, 0x92, 0xb6, 0xcb, 0x7c, 0x2b, 0xb1, 0x46, 0xd7, 0x21,
|
0x5a, 0xc5, 0xd4, 0x9f, 0xeb, 0xbc, 0xb6, 0x6d, 0xfb, 0x3b, 0x6d, 0xca, 0xad, 0xfb, 0x9e, 0x2f,
|
||||||
0xed, 0x12, 0x56, 0xb6, 0x49, 0x4b, 0x3f, 0x46, 0x29, 0x97, 0xb0, 0x3d, 0xd2, 0xc2, 0xeb, 0x70,
|
0x06, 0x57, 0x86, 0xc4, 0xd7, 0x75, 0x3e, 0x9e, 0x08, 0xe1, 0x72, 0x36, 0x48, 0xb3, 0x19, 0x9e,
|
||||||
0x65, 0x9f, 0xf1, 0x7a, 0x93, 0x70, 0xe7, 0x01, 0x19, 0x94, 0x61, 0x1e, 0x26, 0x5c, 0xa2, 0x42,
|
0x85, 0x1a, 0xf1, 0x49, 0x30, 0x0b, 0xe2, 0x1b, 0x7f, 0x04, 0xa7, 0x37, 0xfd, 0xba, 0x32, 0x1b,
|
||||||
0x24, 0x4b, 0x62, 0x59, 0xfc, 0x61, 0x0e, 0x26, 0x25, 0x2f, 0xf4, 0xbd, 0x01, 0x69, 0xfd, 0x2c,
|
0xb4, 0x23, 0xe9, 0xb8, 0x3c, 0xb0, 0x12, 0xdf, 0xe8, 0x3c, 0x64, 0x5d, 0xc2, 0x2b, 0x0e, 0x69,
|
||||||
0xa2, 0xd5, 0x68, 0x79, 0x46, 0xe8, 0x9e, 0xb9, 0x36, 0xce, 0x4c, 0xc1, 0xe2, 0xcd, 0xef, 0x7e,
|
0xeb, 0xc7, 0x2b, 0xe3, 0x12, 0xbe, 0x41, 0xda, 0x78, 0x05, 0xce, 0x6c, 0x72, 0xbf, 0xd1, 0x22,
|
||||||
0xfb, 0xeb, 0xa7, 0x4b, 0xab, 0x68, 0xc5, 0x8a, 0x48, 0xab, 0x7e, 0x1a, 0xad, 0x63, 0x5d, 0xbd,
|
0x3e, 0xbd, 0x47, 0x86, 0x69, 0x9b, 0x85, 0x29, 0x97, 0xa8, 0x10, 0xe9, 0xb2, 0xf8, 0x2c, 0x7e,
|
||||||
0x13, 0xf4, 0xb3, 0x01, 0xb3, 0x21, 0xf5, 0x41, 0x9b, 0x31, 0x30, 0xa3, 0x54, 0xce, 0xdc, 0xba,
|
0x7f, 0x1a, 0x8e, 0x4b, 0x5e, 0xe8, 0x47, 0x03, 0xb2, 0xfa, 0x19, 0x45, 0x4b, 0xf1, 0x74, 0x8e,
|
||||||
0x98, 0xb1, 0x66, 0x56, 0x94, 0xcc, 0xb6, 0xd0, 0xed, 0x28, 0x33, 0x5f, 0xe8, 0x22, 0x04, 0x7f,
|
0xd1, 0x49, 0x73, 0x79, 0x92, 0x99, 0x82, 0xc5, 0xd7, 0x7e, 0xf8, 0xfd, 0xef, 0x9f, 0x8f, 0x2d,
|
||||||
0x35, 0x60, 0x7e, 0x58, 0x48, 0x50, 0x21, 0x06, 0x36, 0x46, 0xbf, 0x4c, 0xeb, 0xc2, 0xf6, 0x9a,
|
0xa1, 0xcb, 0x76, 0x4c, 0x8a, 0xf5, 0x53, 0x6a, 0xef, 0xea, 0x77, 0x63, 0x0f, 0xfd, 0x62, 0xc0,
|
||||||
0xe9, 0x3d, 0xc9, 0xf4, 0x43, 0x54, 0x8c, 0x32, 0xed, 0xfa, 0x3e, 0x03, 0xb2, 0x41, 0x6d, 0x3c,
|
0xa9, 0x88, 0x5a, 0xa1, 0x6b, 0x09, 0x30, 0xe3, 0x54, 0xd1, 0x5c, 0x3b, 0x9a, 0xb1, 0x66, 0x56,
|
||||||
0x41, 0x2f, 0x0c, 0x48, 0x6b, 0xc9, 0x88, 0x6d, 0x6d, 0x58, 0x8d, 0x62, 0x5b, 0x3b, 0xa4, 0x3c,
|
0x94, 0xcc, 0xd6, 0xd0, 0xd5, 0x38, 0xb3, 0x40, 0x18, 0x63, 0x04, 0x7f, 0x33, 0x60, 0x76, 0x54,
|
||||||
0x78, 0x4b, 0xd2, 0x5a, 0x43, 0xb7, 0xa2, 0xb4, 0xb4, 0x04, 0xb1, 0x40, 0xe9, 0x5e, 0x19, 0x90,
|
0x78, 0x90, 0x95, 0x00, 0x9b, 0xa0, 0x77, 0xa6, 0x7d, 0x64, 0x7b, 0xcd, 0xf4, 0x96, 0x64, 0xfa,
|
||||||
0xd6, 0xe2, 0x11, 0x4b, 0x24, 0xac, 0x54, 0xb1, 0x44, 0x86, 0x34, 0x08, 0x6f, 0x4b, 0x22, 0x9b,
|
0x01, 0x2a, 0xc6, 0x99, 0xf6, 0x02, 0x9f, 0x21, 0xd9, 0xb0, 0x96, 0xee, 0xa1, 0x67, 0x06, 0x64,
|
||||||
0x68, 0x23, 0x4a, 0x84, 0x29, 0xd3, 0x01, 0x0f, 0xeb, 0xf8, 0xd0, 0x39, 0x3a, 0x41, 0x5f, 0x43,
|
0xb5, 0xc4, 0x24, 0x96, 0x36, 0xaa, 0x5e, 0x89, 0xa5, 0x1d, 0x51, 0x2a, 0xbc, 0x26, 0x69, 0x2d,
|
||||||
0x52, 0x68, 0x0c, 0xc2, 0xb1, 0x23, 0xd3, 0x17, 0x2e, 0x73, 0xe5, 0x5c, 0x1b, 0xcd, 0x61, 0x43,
|
0xa3, 0x2b, 0x71, 0x5a, 0x5a, 0xb2, 0x78, 0x28, 0x75, 0x2f, 0x0c, 0xc8, 0x6a, 0xb1, 0x49, 0x24,
|
||||||
0x72, 0x58, 0x41, 0xcb, 0xa3, 0xa6, 0xa9, 0x1a, 0xaa, 0xc4, 0xb7, 0x90, 0x52, 0x12, 0x84, 0x6e,
|
0x12, 0x55, 0xb6, 0x44, 0x22, 0x23, 0x9a, 0x85, 0xd7, 0x25, 0x91, 0x6b, 0x68, 0x35, 0x4e, 0x84,
|
||||||
0xc5, 0x44, 0x0e, 0xa9, 0x9a, 0xb9, 0x3a, 0xc6, 0x4a, 0x33, 0xc8, 0x4b, 0x06, 0x18, 0xe5, 0xac,
|
0x2b, 0xd3, 0x21, 0x0f, 0x7b, 0x77, 0x9b, 0xee, 0xec, 0xa1, 0xaf, 0x21, 0x2d, 0x34, 0x09, 0xe1,
|
||||||
0x11, 0x3f, 0x62, 0xa5, 0x34, 0x58, 0xc7, 0x42, 0x98, 0x64, 0x2b, 0xa6, 0xfa, 0x12, 0x82, 0xd6,
|
0xc4, 0x96, 0x19, 0x08, 0x9d, 0x79, 0xf9, 0x50, 0x1b, 0xcd, 0x61, 0x55, 0x72, 0xb8, 0x8c, 0x2e,
|
||||||
0xe3, 0xda, 0x3d, 0x24, 0x72, 0x66, 0x7e, 0xbc, 0xe1, 0xf8, 0x8f, 0xbe, 0x22, 0x8c, 0x43, 0x6c,
|
0x8d, 0xeb, 0xa6, 0x5a, 0x24, 0x13, 0xdf, 0x41, 0x46, 0x49, 0x16, 0xba, 0x92, 0x10, 0x39, 0xa2,
|
||||||
0x5e, 0x1a, 0x00, 0x83, 0x97, 0x1f, 0x9d, 0x8b, 0x12, 0x94, 0x13, 0x73, 0xe3, 0x02, 0x96, 0x9a,
|
0x82, 0xe6, 0xd2, 0x04, 0x2b, 0xcd, 0xa0, 0x20, 0x19, 0x60, 0x94, 0xb7, 0xc7, 0xfc, 0xd3, 0x2b,
|
||||||
0xd0, 0xaa, 0x24, 0xb4, 0x84, 0x6e, 0xc6, 0x11, 0x92, 0xba, 0x82, 0xbe, 0x82, 0x94, 0x92, 0x82,
|
0xa5, 0xc4, 0xde, 0x15, 0x42, 0x26, 0x4b, 0x71, 0x62, 0x20, 0x39, 0x68, 0x25, 0xa9, 0xdc, 0x23,
|
||||||
0xd8, 0xce, 0x84, 0x14, 0x27, 0xb6, 0x33, 0x61, 0x05, 0xc2, 0x39, 0x89, 0x6e, 0xa2, 0x85, 0x28,
|
0xa2, 0x68, 0x16, 0x26, 0x1b, 0x4e, 0x1e, 0xfa, 0xaa, 0x30, 0x8e, 0xb0, 0x79, 0x6e, 0x00, 0x0c,
|
||||||
0xba, 0xd2, 0x1a, 0x59, 0x83, 0x81, 0x3a, 0xc4, 0xd6, 0x20, 0x22, 0x45, 0xb1, 0x35, 0x88, 0x4a,
|
0x95, 0x02, 0x1d, 0x8a, 0x12, 0x96, 0x1f, 0x73, 0xf5, 0x08, 0x96, 0x9a, 0xd0, 0x92, 0x24, 0xb4,
|
||||||
0xcd, 0x79, 0x35, 0x60, 0xd2, 0xba, 0x6c, 0x0b, 0xec, 0x1e, 0xa4, 0xb5, 0xfa, 0xa0, 0x5c, 0x34,
|
0x88, 0x2e, 0x26, 0x11, 0x92, 0x3a, 0x84, 0xbe, 0x82, 0x8c, 0x92, 0x8e, 0xc4, 0xca, 0x44, 0x14,
|
||||||
0x78, 0x58, 0x98, 0xcc, 0x11, 0xb3, 0xf3, 0x84, 0xb9, 0xfb, 0xe2, 0xcc, 0xe9, 0x34, 0x0f, 0x7a,
|
0x2a, 0xb1, 0x32, 0x51, 0xc5, 0xc2, 0x79, 0x89, 0x6e, 0xa2, 0xf9, 0x38, 0xba, 0xd2, 0x26, 0xf4,
|
||||||
0x7d, 0x70, 0x2c, 0xc1, 0x17, 0x91, 0x19, 0x05, 0x77, 0x78, 0x4d, 0x21, 0x7f, 0x03, 0xd3, 0x01,
|
0x8d, 0x18, 0x52, 0x29, 0x16, 0x87, 0x0c, 0x69, 0x58, 0xb6, 0x0e, 0x19, 0xd2, 0x88, 0x8c, 0x61,
|
||||||
0xe1, 0xba, 0x00, 0xfa, 0x88, 0xf2, 0x8f, 0x50, 0x3e, 0xbc, 0x26, 0xb1, 0x73, 0x28, 0x3b, 0x02,
|
0x2c, 0xb1, 0x17, 0x90, 0x39, 0x6e, 0x48, 0x95, 0xbc, 0xa1, 0x3e, 0x64, 0xb5, 0xe0, 0xa0, 0x7c,
|
||||||
0x5b, 0x9b, 0x97, 0x5d, 0xc2, 0x76, 0x77, 0xdf, 0x9c, 0x66, 0x8d, 0xb7, 0xa7, 0x59, 0xe3, 0xcf,
|
0x3c, 0x6c, 0x54, 0x8b, 0xcc, 0x31, 0xed, 0xf2, 0x88, 0xbb, 0x9b, 0x62, 0x8f, 0x76, 0x5b, 0x5b,
|
||||||
0xd3, 0xac, 0xf1, 0xe3, 0x59, 0x36, 0xf1, 0xf6, 0x2c, 0x9b, 0xf8, 0xfd, 0x2c, 0x9b, 0xf8, 0x32,
|
0xfd, 0xa3, 0x20, 0x53, 0xbf, 0x5e, 0x71, 0x04, 0xdc, 0xb7, 0x30, 0x13, 0xd2, 0xaa, 0x23, 0xa0,
|
||||||
0xef, 0xd6, 0x79, 0xad, 0x53, 0x29, 0xd8, 0xb4, 0x69, 0xf1, 0x1a, 0x69, 0xb3, 0x3a, 0x0b, 0xc4,
|
0x8f, 0xc9, 0xce, 0x18, 0xb1, 0xc3, 0xcb, 0x12, 0x3b, 0x8f, 0x72, 0x63, 0xb0, 0xb5, 0x79, 0xc5,
|
||||||
0xea, 0xc9, 0x68, 0xfc, 0xa8, 0xe5, 0xb0, 0x4a, 0x4a, 0xfe, 0x59, 0xfc, 0xe0, 0x9f, 0x00, 0x00,
|
0x25, 0xbc, 0x54, 0x7a, 0xb5, 0x9f, 0x33, 0x5e, 0xef, 0xe7, 0x8c, 0xbf, 0xf6, 0x73, 0xc6, 0x4f,
|
||||||
0x00, 0xff, 0xff, 0x58, 0x45, 0xa9, 0x54, 0xf5, 0x0e, 0x00, 0x00,
|
0x07, 0xb9, 0xd4, 0xeb, 0x83, 0x5c, 0xea, 0x8f, 0x83, 0x5c, 0xea, 0x8b, 0x42, 0x48, 0xe4, 0xfd,
|
||||||
|
0x3a, 0xe9, 0xf0, 0x06, 0x0f, 0xc5, 0xea, 0xcb, 0x68, 0x52, 0xea, 0xab, 0x19, 0xf9, 0x7b, 0xf2,
|
||||||
|
0xfd, 0x7f, 0x03, 0x00, 0x00, 0xff, 0xff, 0x8b, 0x1a, 0xe1, 0x0e, 0x18, 0x0f, 0x00, 0x00,
|
||||||
}
|
}
|
||||||
|
|
||||||
// Reference imports to suppress errors if they are not otherwise used.
|
// Reference imports to suppress errors if they are not otherwise used.
|
||||||
@ -1309,8 +1334,8 @@ type QueryClient interface {
|
|||||||
BlockBloom(ctx context.Context, in *QueryBlockBloomRequest, opts ...grpc.CallOption) (*QueryBlockBloomResponse, error)
|
BlockBloom(ctx context.Context, in *QueryBlockBloomRequest, opts ...grpc.CallOption) (*QueryBlockBloomResponse, error)
|
||||||
// Params queries the parameters of x/evm module.
|
// Params queries the parameters of x/evm module.
|
||||||
Params(ctx context.Context, in *QueryParamsRequest, opts ...grpc.CallOption) (*QueryParamsResponse, error)
|
Params(ctx context.Context, in *QueryParamsRequest, opts ...grpc.CallOption) (*QueryParamsResponse, error)
|
||||||
// StaticCall queries the static call value of x/evm module.
|
// BaseFee queries the base fee of the parent block of the current block.
|
||||||
StaticCall(ctx context.Context, in *QueryStaticCallRequest, opts ...grpc.CallOption) (*QueryStaticCallResponse, error)
|
BaseFee(ctx context.Context, in *QueryBaseFeeRequest, opts ...grpc.CallOption) (*QueryBaseFeeResponse, error)
|
||||||
// EthCall implements the `eth_call` rpc api
|
// EthCall implements the `eth_call` rpc api
|
||||||
EthCall(ctx context.Context, in *EthCallRequest, opts ...grpc.CallOption) (*MsgEthereumTxResponse, error)
|
EthCall(ctx context.Context, in *EthCallRequest, opts ...grpc.CallOption) (*MsgEthereumTxResponse, error)
|
||||||
// EstimateGas implements the `eth_estimateGas` rpc api
|
// EstimateGas implements the `eth_estimateGas` rpc api
|
||||||
@ -1415,9 +1440,9 @@ func (c *queryClient) Params(ctx context.Context, in *QueryParamsRequest, opts .
|
|||||||
return out, nil
|
return out, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func (c *queryClient) StaticCall(ctx context.Context, in *QueryStaticCallRequest, opts ...grpc.CallOption) (*QueryStaticCallResponse, error) {
|
func (c *queryClient) BaseFee(ctx context.Context, in *QueryBaseFeeRequest, opts ...grpc.CallOption) (*QueryBaseFeeResponse, error) {
|
||||||
out := new(QueryStaticCallResponse)
|
out := new(QueryBaseFeeResponse)
|
||||||
err := c.cc.Invoke(ctx, "/ethermint.evm.v1.Query/StaticCall", in, out, opts...)
|
err := c.cc.Invoke(ctx, "/ethermint.evm.v1.Query/BaseFee", in, out, opts...)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
@ -1466,8 +1491,8 @@ type QueryServer interface {
|
|||||||
BlockBloom(context.Context, *QueryBlockBloomRequest) (*QueryBlockBloomResponse, error)
|
BlockBloom(context.Context, *QueryBlockBloomRequest) (*QueryBlockBloomResponse, error)
|
||||||
// Params queries the parameters of x/evm module.
|
// Params queries the parameters of x/evm module.
|
||||||
Params(context.Context, *QueryParamsRequest) (*QueryParamsResponse, error)
|
Params(context.Context, *QueryParamsRequest) (*QueryParamsResponse, error)
|
||||||
// StaticCall queries the static call value of x/evm module.
|
// BaseFee queries the base fee of the parent block of the current block.
|
||||||
StaticCall(context.Context, *QueryStaticCallRequest) (*QueryStaticCallResponse, error)
|
BaseFee(context.Context, *QueryBaseFeeRequest) (*QueryBaseFeeResponse, error)
|
||||||
// EthCall implements the `eth_call` rpc api
|
// EthCall implements the `eth_call` rpc api
|
||||||
EthCall(context.Context, *EthCallRequest) (*MsgEthereumTxResponse, error)
|
EthCall(context.Context, *EthCallRequest) (*MsgEthereumTxResponse, error)
|
||||||
// EstimateGas implements the `eth_estimateGas` rpc api
|
// EstimateGas implements the `eth_estimateGas` rpc api
|
||||||
@ -1508,8 +1533,8 @@ func (*UnimplementedQueryServer) BlockBloom(ctx context.Context, req *QueryBlock
|
|||||||
func (*UnimplementedQueryServer) Params(ctx context.Context, req *QueryParamsRequest) (*QueryParamsResponse, error) {
|
func (*UnimplementedQueryServer) Params(ctx context.Context, req *QueryParamsRequest) (*QueryParamsResponse, error) {
|
||||||
return nil, status.Errorf(codes.Unimplemented, "method Params not implemented")
|
return nil, status.Errorf(codes.Unimplemented, "method Params not implemented")
|
||||||
}
|
}
|
||||||
func (*UnimplementedQueryServer) StaticCall(ctx context.Context, req *QueryStaticCallRequest) (*QueryStaticCallResponse, error) {
|
func (*UnimplementedQueryServer) BaseFee(ctx context.Context, req *QueryBaseFeeRequest) (*QueryBaseFeeResponse, error) {
|
||||||
return nil, status.Errorf(codes.Unimplemented, "method StaticCall not implemented")
|
return nil, status.Errorf(codes.Unimplemented, "method BaseFee not implemented")
|
||||||
}
|
}
|
||||||
func (*UnimplementedQueryServer) EthCall(ctx context.Context, req *EthCallRequest) (*MsgEthereumTxResponse, error) {
|
func (*UnimplementedQueryServer) EthCall(ctx context.Context, req *EthCallRequest) (*MsgEthereumTxResponse, error) {
|
||||||
return nil, status.Errorf(codes.Unimplemented, "method EthCall not implemented")
|
return nil, status.Errorf(codes.Unimplemented, "method EthCall not implemented")
|
||||||
@ -1702,20 +1727,20 @@ func _Query_Params_Handler(srv interface{}, ctx context.Context, dec func(interf
|
|||||||
return interceptor(ctx, in, info, handler)
|
return interceptor(ctx, in, info, handler)
|
||||||
}
|
}
|
||||||
|
|
||||||
func _Query_StaticCall_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
|
func _Query_BaseFee_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
|
||||||
in := new(QueryStaticCallRequest)
|
in := new(QueryBaseFeeRequest)
|
||||||
if err := dec(in); err != nil {
|
if err := dec(in); err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
if interceptor == nil {
|
if interceptor == nil {
|
||||||
return srv.(QueryServer).StaticCall(ctx, in)
|
return srv.(QueryServer).BaseFee(ctx, in)
|
||||||
}
|
}
|
||||||
info := &grpc.UnaryServerInfo{
|
info := &grpc.UnaryServerInfo{
|
||||||
Server: srv,
|
Server: srv,
|
||||||
FullMethod: "/ethermint.evm.v1.Query/StaticCall",
|
FullMethod: "/ethermint.evm.v1.Query/BaseFee",
|
||||||
}
|
}
|
||||||
handler := func(ctx context.Context, req interface{}) (interface{}, error) {
|
handler := func(ctx context.Context, req interface{}) (interface{}, error) {
|
||||||
return srv.(QueryServer).StaticCall(ctx, req.(*QueryStaticCallRequest))
|
return srv.(QueryServer).BaseFee(ctx, req.(*QueryBaseFeeRequest))
|
||||||
}
|
}
|
||||||
return interceptor(ctx, in, info, handler)
|
return interceptor(ctx, in, info, handler)
|
||||||
}
|
}
|
||||||
@ -1801,8 +1826,8 @@ var _Query_serviceDesc = grpc.ServiceDesc{
|
|||||||
Handler: _Query_Params_Handler,
|
Handler: _Query_Params_Handler,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
MethodName: "StaticCall",
|
MethodName: "BaseFee",
|
||||||
Handler: _Query_StaticCall_Handler,
|
Handler: _Query_BaseFee_Handler,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
MethodName: "EthCall",
|
MethodName: "EthCall",
|
||||||
@ -2488,7 +2513,7 @@ func (m *QueryParamsResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) {
|
|||||||
return len(dAtA) - i, nil
|
return len(dAtA) - i, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func (m *QueryStaticCallRequest) Marshal() (dAtA []byte, err error) {
|
func (m *QueryBaseFeeRequest) Marshal() (dAtA []byte, err error) {
|
||||||
size := m.Size()
|
size := m.Size()
|
||||||
dAtA = make([]byte, size)
|
dAtA = make([]byte, size)
|
||||||
n, err := m.MarshalToSizedBuffer(dAtA[:size])
|
n, err := m.MarshalToSizedBuffer(dAtA[:size])
|
||||||
@ -2498,30 +2523,49 @@ func (m *QueryStaticCallRequest) Marshal() (dAtA []byte, err error) {
|
|||||||
return dAtA[:n], nil
|
return dAtA[:n], nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func (m *QueryStaticCallRequest) MarshalTo(dAtA []byte) (int, error) {
|
func (m *QueryBaseFeeRequest) MarshalTo(dAtA []byte) (int, error) {
|
||||||
size := m.Size()
|
size := m.Size()
|
||||||
return m.MarshalToSizedBuffer(dAtA[:size])
|
return m.MarshalToSizedBuffer(dAtA[:size])
|
||||||
}
|
}
|
||||||
|
|
||||||
func (m *QueryStaticCallRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) {
|
func (m *QueryBaseFeeRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) {
|
||||||
i := len(dAtA)
|
i := len(dAtA)
|
||||||
_ = i
|
_ = i
|
||||||
var l int
|
var l int
|
||||||
_ = l
|
_ = l
|
||||||
if len(m.Input) > 0 {
|
return len(dAtA) - i, nil
|
||||||
i -= len(m.Input)
|
}
|
||||||
copy(dAtA[i:], m.Input)
|
|
||||||
i = encodeVarintQuery(dAtA, i, uint64(len(m.Input)))
|
func (m *QueryBaseFeeResponse) Marshal() (dAtA []byte, err error) {
|
||||||
i--
|
size := m.Size()
|
||||||
dAtA[i] = 0x12
|
dAtA = make([]byte, size)
|
||||||
|
n, err := m.MarshalToSizedBuffer(dAtA[:size])
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
return dAtA[:n], nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func (m *QueryBaseFeeResponse) MarshalTo(dAtA []byte) (int, error) {
|
||||||
|
size := m.Size()
|
||||||
|
return m.MarshalToSizedBuffer(dAtA[:size])
|
||||||
|
}
|
||||||
|
|
||||||
|
func (m *QueryBaseFeeResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) {
|
||||||
|
i := len(dAtA)
|
||||||
|
_ = i
|
||||||
|
var l int
|
||||||
|
_ = l
|
||||||
|
{
|
||||||
|
size := m.BaseFee.Size()
|
||||||
|
i -= size
|
||||||
|
if _, err := m.BaseFee.MarshalTo(dAtA[i:]); err != nil {
|
||||||
|
return 0, err
|
||||||
|
}
|
||||||
|
i = encodeVarintQuery(dAtA, i, uint64(size))
|
||||||
}
|
}
|
||||||
if len(m.Address) > 0 {
|
|
||||||
i -= len(m.Address)
|
|
||||||
copy(dAtA[i:], m.Address)
|
|
||||||
i = encodeVarintQuery(dAtA, i, uint64(len(m.Address)))
|
|
||||||
i--
|
i--
|
||||||
dAtA[i] = 0xa
|
dAtA[i] = 0xa
|
||||||
}
|
|
||||||
return len(dAtA) - i, nil
|
return len(dAtA) - i, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -2917,20 +2961,23 @@ func (m *QueryParamsResponse) Size() (n int) {
|
|||||||
return n
|
return n
|
||||||
}
|
}
|
||||||
|
|
||||||
func (m *QueryStaticCallRequest) Size() (n int) {
|
func (m *QueryBaseFeeRequest) Size() (n int) {
|
||||||
if m == nil {
|
if m == nil {
|
||||||
return 0
|
return 0
|
||||||
}
|
}
|
||||||
var l int
|
var l int
|
||||||
_ = l
|
_ = l
|
||||||
l = len(m.Address)
|
return n
|
||||||
if l > 0 {
|
}
|
||||||
n += 1 + l + sovQuery(uint64(l))
|
|
||||||
|
func (m *QueryBaseFeeResponse) Size() (n int) {
|
||||||
|
if m == nil {
|
||||||
|
return 0
|
||||||
}
|
}
|
||||||
l = len(m.Input)
|
var l int
|
||||||
if l > 0 {
|
_ = l
|
||||||
|
l = m.BaseFee.Size()
|
||||||
n += 1 + l + sovQuery(uint64(l))
|
n += 1 + l + sovQuery(uint64(l))
|
||||||
}
|
|
||||||
return n
|
return n
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -4816,7 +4863,7 @@ func (m *QueryParamsResponse) Unmarshal(dAtA []byte) error {
|
|||||||
}
|
}
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
func (m *QueryStaticCallRequest) Unmarshal(dAtA []byte) error {
|
func (m *QueryBaseFeeRequest) Unmarshal(dAtA []byte) error {
|
||||||
l := len(dAtA)
|
l := len(dAtA)
|
||||||
iNdEx := 0
|
iNdEx := 0
|
||||||
for iNdEx < l {
|
for iNdEx < l {
|
||||||
@ -4839,15 +4886,65 @@ func (m *QueryStaticCallRequest) Unmarshal(dAtA []byte) error {
|
|||||||
fieldNum := int32(wire >> 3)
|
fieldNum := int32(wire >> 3)
|
||||||
wireType := int(wire & 0x7)
|
wireType := int(wire & 0x7)
|
||||||
if wireType == 4 {
|
if wireType == 4 {
|
||||||
return fmt.Errorf("proto: QueryStaticCallRequest: wiretype end group for non-group")
|
return fmt.Errorf("proto: QueryBaseFeeRequest: wiretype end group for non-group")
|
||||||
}
|
}
|
||||||
if fieldNum <= 0 {
|
if fieldNum <= 0 {
|
||||||
return fmt.Errorf("proto: QueryStaticCallRequest: illegal tag %d (wire type %d)", fieldNum, wire)
|
return fmt.Errorf("proto: QueryBaseFeeRequest: illegal tag %d (wire type %d)", fieldNum, wire)
|
||||||
|
}
|
||||||
|
switch fieldNum {
|
||||||
|
default:
|
||||||
|
iNdEx = preIndex
|
||||||
|
skippy, err := skipQuery(dAtA[iNdEx:])
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
if (skippy < 0) || (iNdEx+skippy) < 0 {
|
||||||
|
return ErrInvalidLengthQuery
|
||||||
|
}
|
||||||
|
if (iNdEx + skippy) > l {
|
||||||
|
return io.ErrUnexpectedEOF
|
||||||
|
}
|
||||||
|
iNdEx += skippy
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if iNdEx > l {
|
||||||
|
return io.ErrUnexpectedEOF
|
||||||
|
}
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
func (m *QueryBaseFeeResponse) Unmarshal(dAtA []byte) error {
|
||||||
|
l := len(dAtA)
|
||||||
|
iNdEx := 0
|
||||||
|
for iNdEx < l {
|
||||||
|
preIndex := iNdEx
|
||||||
|
var wire uint64
|
||||||
|
for shift := uint(0); ; shift += 7 {
|
||||||
|
if shift >= 64 {
|
||||||
|
return ErrIntOverflowQuery
|
||||||
|
}
|
||||||
|
if iNdEx >= l {
|
||||||
|
return io.ErrUnexpectedEOF
|
||||||
|
}
|
||||||
|
b := dAtA[iNdEx]
|
||||||
|
iNdEx++
|
||||||
|
wire |= uint64(b&0x7F) << shift
|
||||||
|
if b < 0x80 {
|
||||||
|
break
|
||||||
|
}
|
||||||
|
}
|
||||||
|
fieldNum := int32(wire >> 3)
|
||||||
|
wireType := int(wire & 0x7)
|
||||||
|
if wireType == 4 {
|
||||||
|
return fmt.Errorf("proto: QueryBaseFeeResponse: wiretype end group for non-group")
|
||||||
|
}
|
||||||
|
if fieldNum <= 0 {
|
||||||
|
return fmt.Errorf("proto: QueryBaseFeeResponse: illegal tag %d (wire type %d)", fieldNum, wire)
|
||||||
}
|
}
|
||||||
switch fieldNum {
|
switch fieldNum {
|
||||||
case 1:
|
case 1:
|
||||||
if wireType != 2 {
|
if wireType != 2 {
|
||||||
return fmt.Errorf("proto: wrong wireType = %d for field Address", wireType)
|
return fmt.Errorf("proto: wrong wireType = %d for field BaseFee", wireType)
|
||||||
}
|
}
|
||||||
var stringLen uint64
|
var stringLen uint64
|
||||||
for shift := uint(0); ; shift += 7 {
|
for shift := uint(0); ; shift += 7 {
|
||||||
@ -4875,40 +4972,8 @@ func (m *QueryStaticCallRequest) Unmarshal(dAtA []byte) error {
|
|||||||
if postIndex > l {
|
if postIndex > l {
|
||||||
return io.ErrUnexpectedEOF
|
return io.ErrUnexpectedEOF
|
||||||
}
|
}
|
||||||
m.Address = string(dAtA[iNdEx:postIndex])
|
if err := m.BaseFee.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
|
||||||
iNdEx = postIndex
|
return err
|
||||||
case 2:
|
|
||||||
if wireType != 2 {
|
|
||||||
return fmt.Errorf("proto: wrong wireType = %d for field Input", wireType)
|
|
||||||
}
|
|
||||||
var byteLen int
|
|
||||||
for shift := uint(0); ; shift += 7 {
|
|
||||||
if shift >= 64 {
|
|
||||||
return ErrIntOverflowQuery
|
|
||||||
}
|
|
||||||
if iNdEx >= l {
|
|
||||||
return io.ErrUnexpectedEOF
|
|
||||||
}
|
|
||||||
b := dAtA[iNdEx]
|
|
||||||
iNdEx++
|
|
||||||
byteLen |= int(b&0x7F) << shift
|
|
||||||
if b < 0x80 {
|
|
||||||
break
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if byteLen < 0 {
|
|
||||||
return ErrInvalidLengthQuery
|
|
||||||
}
|
|
||||||
postIndex := iNdEx + byteLen
|
|
||||||
if postIndex < 0 {
|
|
||||||
return ErrInvalidLengthQuery
|
|
||||||
}
|
|
||||||
if postIndex > l {
|
|
||||||
return io.ErrUnexpectedEOF
|
|
||||||
}
|
|
||||||
m.Input = append(m.Input[:0], dAtA[iNdEx:postIndex]...)
|
|
||||||
if m.Input == nil {
|
|
||||||
m.Input = []byte{}
|
|
||||||
}
|
}
|
||||||
iNdEx = postIndex
|
iNdEx = postIndex
|
||||||
default:
|
default:
|
||||||
|
@ -557,38 +557,20 @@ func local_request_Query_Params_0(ctx context.Context, marshaler runtime.Marshal
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
var (
|
func request_Query_BaseFee_0(ctx context.Context, marshaler runtime.Marshaler, client QueryClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
|
||||||
filter_Query_StaticCall_0 = &utilities.DoubleArray{Encoding: map[string]int{}, Base: []int(nil), Check: []int(nil)}
|
var protoReq QueryBaseFeeRequest
|
||||||
)
|
|
||||||
|
|
||||||
func request_Query_StaticCall_0(ctx context.Context, marshaler runtime.Marshaler, client QueryClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
|
|
||||||
var protoReq QueryStaticCallRequest
|
|
||||||
var metadata runtime.ServerMetadata
|
var metadata runtime.ServerMetadata
|
||||||
|
|
||||||
if err := req.ParseForm(); err != nil {
|
msg, err := client.BaseFee(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD))
|
||||||
return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
|
|
||||||
}
|
|
||||||
if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_Query_StaticCall_0); err != nil {
|
|
||||||
return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
|
|
||||||
}
|
|
||||||
|
|
||||||
msg, err := client.StaticCall(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD))
|
|
||||||
return msg, metadata, err
|
return msg, metadata, err
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func local_request_Query_StaticCall_0(ctx context.Context, marshaler runtime.Marshaler, server QueryServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
|
func local_request_Query_BaseFee_0(ctx context.Context, marshaler runtime.Marshaler, server QueryServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
|
||||||
var protoReq QueryStaticCallRequest
|
var protoReq QueryBaseFeeRequest
|
||||||
var metadata runtime.ServerMetadata
|
var metadata runtime.ServerMetadata
|
||||||
|
|
||||||
if err := req.ParseForm(); err != nil {
|
msg, err := server.BaseFee(ctx, &protoReq)
|
||||||
return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
|
|
||||||
}
|
|
||||||
if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_Query_StaticCall_0); err != nil {
|
|
||||||
return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
|
|
||||||
}
|
|
||||||
|
|
||||||
msg, err := server.StaticCall(ctx, &protoReq)
|
|
||||||
return msg, metadata, err
|
return msg, metadata, err
|
||||||
|
|
||||||
}
|
}
|
||||||
@ -871,7 +853,7 @@ func RegisterQueryHandlerServer(ctx context.Context, mux *runtime.ServeMux, serv
|
|||||||
|
|
||||||
})
|
})
|
||||||
|
|
||||||
mux.Handle("GET", pattern_Query_StaticCall_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
|
mux.Handle("GET", pattern_Query_BaseFee_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
|
||||||
ctx, cancel := context.WithCancel(req.Context())
|
ctx, cancel := context.WithCancel(req.Context())
|
||||||
defer cancel()
|
defer cancel()
|
||||||
inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
|
inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
|
||||||
@ -880,14 +862,14 @@ func RegisterQueryHandlerServer(ctx context.Context, mux *runtime.ServeMux, serv
|
|||||||
runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
|
runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
resp, md, err := local_request_Query_StaticCall_0(rctx, inboundMarshaler, server, req, pathParams)
|
resp, md, err := local_request_Query_BaseFee_0(rctx, inboundMarshaler, server, req, pathParams)
|
||||||
ctx = runtime.NewServerMetadataContext(ctx, md)
|
ctx = runtime.NewServerMetadataContext(ctx, md)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
|
runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
forward_Query_StaticCall_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
|
forward_Query_BaseFee_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
|
||||||
|
|
||||||
})
|
})
|
||||||
|
|
||||||
@ -1172,7 +1154,7 @@ func RegisterQueryHandlerClient(ctx context.Context, mux *runtime.ServeMux, clie
|
|||||||
|
|
||||||
})
|
})
|
||||||
|
|
||||||
mux.Handle("GET", pattern_Query_StaticCall_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
|
mux.Handle("GET", pattern_Query_BaseFee_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
|
||||||
ctx, cancel := context.WithCancel(req.Context())
|
ctx, cancel := context.WithCancel(req.Context())
|
||||||
defer cancel()
|
defer cancel()
|
||||||
inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
|
inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
|
||||||
@ -1181,14 +1163,14 @@ func RegisterQueryHandlerClient(ctx context.Context, mux *runtime.ServeMux, clie
|
|||||||
runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
|
runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
resp, md, err := request_Query_StaticCall_0(rctx, inboundMarshaler, client, req, pathParams)
|
resp, md, err := request_Query_BaseFee_0(rctx, inboundMarshaler, client, req, pathParams)
|
||||||
ctx = runtime.NewServerMetadataContext(ctx, md)
|
ctx = runtime.NewServerMetadataContext(ctx, md)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
|
runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
forward_Query_StaticCall_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
|
forward_Query_BaseFee_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
|
||||||
|
|
||||||
})
|
})
|
||||||
|
|
||||||
@ -1256,7 +1238,7 @@ var (
|
|||||||
|
|
||||||
pattern_Query_Params_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 2, 3}, []string{"ethermint", "evm", "v1", "params"}, "", runtime.AssumeColonVerbOpt(true)))
|
pattern_Query_Params_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 2, 3}, []string{"ethermint", "evm", "v1", "params"}, "", runtime.AssumeColonVerbOpt(true)))
|
||||||
|
|
||||||
pattern_Query_StaticCall_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 2, 3}, []string{"ethermint", "evm", "v1", "static_call"}, "", runtime.AssumeColonVerbOpt(true)))
|
pattern_Query_BaseFee_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 2, 3}, []string{"ethermint", "evm", "v1", "base_fee"}, "", runtime.AssumeColonVerbOpt(true)))
|
||||||
|
|
||||||
pattern_Query_EthCall_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 2, 3}, []string{"ethermint", "evm", "v1", "eth_call"}, "", runtime.AssumeColonVerbOpt(true)))
|
pattern_Query_EthCall_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 2, 3}, []string{"ethermint", "evm", "v1", "eth_call"}, "", runtime.AssumeColonVerbOpt(true)))
|
||||||
|
|
||||||
@ -1284,7 +1266,7 @@ var (
|
|||||||
|
|
||||||
forward_Query_Params_0 = runtime.ForwardResponseMessage
|
forward_Query_Params_0 = runtime.ForwardResponseMessage
|
||||||
|
|
||||||
forward_Query_StaticCall_0 = runtime.ForwardResponseMessage
|
forward_Query_BaseFee_0 = runtime.ForwardResponseMessage
|
||||||
|
|
||||||
forward_Query_EthCall_0 = runtime.ForwardResponseMessage
|
forward_Query_EthCall_0 = runtime.ForwardResponseMessage
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user