From 44b6fbd8f251cef895f9c38e24a9c2371dc48ceb Mon Sep 17 00:00:00 2001 From: bytemaster Date: Sat, 5 Dec 2020 20:07:24 +0800 Subject: [PATCH 01/41] Bugfix StringToSymbol --- types.go | 8 ++++---- types_test.go | 4 +--- 2 files changed, 5 insertions(+), 7 deletions(-) diff --git a/types.go b/types.go index 4cdb7e74..5772d5c7 100644 --- a/types.go +++ b/types.go @@ -17,7 +17,7 @@ import ( "github.com/tidwall/gjson" ) -var symbolRegex = regexp.MustCompile("^[0-9],[A-Z]{1,7}$") +var symbolRegex = regexp.MustCompile("^[0-9]{1,2},[A-Z]{1,7}$") var symbolCodeRegex = regexp.MustCompile("^[A-Z]{1,7}$") // For reference: @@ -260,11 +260,11 @@ func StringToSymbol(str string) (Symbol, error) { if !symbolRegex.MatchString(str) { return symbol, fmt.Errorf("%s is not a valid symbol", str) } - - precision, _ := strconv.ParseUint(string(str[0]), 10, 8) + arrs := strings.Split(str, ",") + precision, _ := strconv.ParseUint(string(arrs[0]), 10, 8) symbol.Precision = uint8(precision) - symbol.Symbol = str[2:] + symbol.Symbol = arrs[1] return symbol, nil } diff --git a/types_test.go b/types_test.go index ae1fcc98..b4615cd6 100644 --- a/types_test.go +++ b/types_test.go @@ -527,11 +527,9 @@ func TestStringToSymbol(t *testing.T) { {"4,IQ", Symbol{Precision: 4, Symbol: "IQ"}, "........e54k4", nil}, {"4,EOS", Symbol{Precision: 4, Symbol: "EOS"}, "......2ndx2k4", nil}, {"9,EOSEOSA", Symbol{Precision: 9, Symbol: "EOSEOSA"}, "c5doylendx2kd", nil}, - + {"10,EOS", Symbol{Precision: 10, Symbol: "EOS"}, "......2ndx2ke", nil}, {"EOS", Symbol{}, "", errors.New("EOS is not a valid symbol")}, {",EOS", Symbol{}, "", errors.New(",EOS is not a valid symbol")}, - {"10,EOS", Symbol{}, "", errors.New("10,EOS is not a valid symbol")}, - {"10,EOS", Symbol{}, "", errors.New("10,EOS is not a valid symbol")}, {"1,EOSEOSEO", Symbol{}, "", errors.New("1,EOSEOSEO is not a valid symbol")}, } From 16e0fe3d7a6734b5fa1eabf5e405bbb35e6f274a Mon Sep 17 00:00:00 2001 From: Matthieu Vachon Date: Sat, 16 Oct 2021 09:02:37 -0400 Subject: [PATCH 02/41] Deprecated `AccountRAMDelta` which is not the right name used in EOSIO --- responses.go | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/responses.go b/responses.go index c5c349ee..541fcccc 100644 --- a/responses.go +++ b/responses.go @@ -117,6 +117,14 @@ type ActionTrace struct { InlineTraces []ActionTrace `json:"inline_traces,omitempty" eos:"-"` } +type AccountDelta struct { + Account AccountName `json:"account"` + Delta Int64 `json:"delta"` +} + +// AccountRAMDelta +// +// Deprecated: Use AccountDelta instead which is the struct name used in EOSIO type AccountRAMDelta struct { Account AccountName `json:"account"` Delta Int64 `json:"delta"` From 12388aa030180055657fa80c14432227f85a9e06 Mon Sep 17 00:00:00 2001 From: Matthieu Vachon Date: Sat, 16 Oct 2021 09:22:56 -0400 Subject: [PATCH 03/41] Prepare for 0.10 release --- CHANGELOG.md | 59 ++++++++++++++++--------------- README-cn.md | 69 +++++++++++++++++++++++-------------- README.md | 68 +++++++++++++++++++++--------------- blockslog/blockslog_test.go | 2 +- 4 files changed, 118 insertions(+), 80 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 093a73f9..688cee4b 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,33 +3,11 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). -## [Unreleased] +## [0.10] (October 16th, 2021) -### Added -- Greatly improved performance of `NameToString` (`~230%`) method. -- `TimePoint` will decode with `0` nanoseconds, when the `fitNodeos` flag is set on the ABI. -- Ability to decode a `int128` and `uint128` in decimal format when `fitNodeos` flag is set on the ABI -- Ability to decode nested `arrays` in ABI decoder. -- Added `BlockState.Header` field of type `SignedBlockHeader` that was previously missing from the struct definition. -- Added `BlockState.AdditionalSignatures` field of type `[]ecc.Signature` that was previously missing from the struct definition. -- Added `ActionTrace.ContextFree` field of type `bool` that was previously missing from the struct definition. - -### Fixed -- Optional encoding of primitive types. - - A struct with a non-pointer type tagged with `eos:"optional"` is now properly encoded at the binary level. **Important** that means that for non-pointer type, when the value of the type is the "emtpy" value according to Golang rules, it will be written as not-present at the binary level. If it's something that you do want want, use a pointer to a primitive type. It's actually a good habit to use a pointer type for "optional" element anyway, to increase awarness. - -- Fix json tags for delegatebw action data. -- Unpacking binary `Except` now correctly works. -- Unpacking binary `Action` and `ActionTrace` now correctly works. -- Unpacking binary `TransactionTrace` now correctly works. -- Unpacking binary `TransactionReceipt` type will now correctly set the inner `TransactionWithID.ID` field correctly. -- Unpacking binary `BlockState` now correctly works but is restricted to EOSIO 2.0.x version. - -### Deprecated -- Renamed `JSONFloat64` to `Float64`, to follow the same convention that was changed years ago with `Uint64`, etc. Type alias left for backwards compatibility. +### Breaking Changes +- **BREAKING**: We started adding an initial `context.Context` to all interruptible functions. All method performing an HTTP call have the new parameter as well as a bunch of other method. We cannot list all of them. If the caller already have a `context.Context` value, pass it to the function that now require one. Otherwise, simply pass `context.Background()`. -### Changed - **BREAKING**: Fixed binary unpacking of `BlockState`, `TransactionTrace`, `SignedTransaction`, `Action` (and some inner types). This required changing a few struct fields to better fit with EOSIO definition, here the full list: - `MerkleRoot.ActiveNodes` is now a `[]Checksum256`, was previously `[]string` - `MerkleRoot.NodeCount` is now a `uint64`, was previously `uint32` @@ -58,6 +36,33 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - **BREAKING**: The serialization for `ExtendedAsset` was aligned with the `eos` codebase. Beforehand, it would serialize the field name `"Contract"` with a capital `C`, and the `Asset` field as `"asset"` where it should have been `"quantity"`. -- **BREAKING**: We started adding an initial `context.Context` to all interruptible functions. All method performing an HTTP call have the new parameter as well as a bunch of other method. We cannot list all of them. If the caller already have a `context.Context` value, pass it to the function that now require one. Otherwise, simply pass `context.Background()`. +### Added +- Added architecture to support binary decoding/encoding Variant objects, see [] +- Greatly improved performance of `NameToString` (`~230%`) method. +- `TimePoint` will decode with `0` nanoseconds, when the `fitNodeos` flag is set on the ABI. +- Ability to decode a `int128` and `uint128` in decimal format when `fitNodeos` flag is set on the ABI +- Ability to decode nested `arrays` in ABI decoder. +- Added `BlockState.Header` field of type `SignedBlockHeader` that was previously missing from the struct definition. +- Added `BlockState.AdditionalSignatures` field of type `[]ecc.Signature` that was previously missing from the struct definition. +- Added `ActionTrace.ContextFree` field of type `bool` that was previously missing from the struct definition. +- Normalized all logging to use `streamingfast/logging` and its trace enabled support. + +### Changed -- All errors are wrapped using `fmt.Errorf("...: %w", ..., err)` which is standard now in Go. \ No newline at end of file +- All errors are wrapped using `fmt.Errorf("...: %w", ..., err)` which is standard now in Go. + +### Fixed +- Optional encoding of primitive types. + + A struct with a non-pointer type tagged with `eos:"optional"` is now properly encoded at the binary level. **Important** that means that for non-pointer type, when the value of the type is the "emtpy" value according to Golang rules, it will be written as not-present at the binary level. If it's something that you do want want, use a pointer to a primitive type. It's actually a good habit to use a pointer type for "optional" element anyway, to increase awarness. + +- Fix json tags for delegatebw action data. +- Unpacking binary `Except` now correctly works. +- Unpacking binary `Action` and `ActionTrace` now correctly works. +- Unpacking binary `TransactionTrace` now correctly works. +- Unpacking binary `TransactionReceipt` type will now correctly set the inner `TransactionWithID.ID` field correctly. +- Unpacking binary `BlockState` now correctly works but is restricted to EOSIO 2.0.x version. + +### Deprecated +- Renamed `AccountRAMDelta` to `AccountDelta` which is the correct name in EOSIO. +- Renamed `JSONFloat64` to `Float64`, to follow the same convention that was changed years ago with `Uint64`, etc. Type alias left for backwards compatibility. diff --git a/README-cn.md b/README-cn.md index 88bb465a..744f7e0a 100644 --- a/README-cn.md +++ b/README-cn.md @@ -1,11 +1,10 @@ -用 Go 语言与 EOS.IO 交互的 API 库 -========================= +## 用 Go 语言与 EOS.IO 交互的 API 库 [![GoDoc](https://godoc.org/github.com/eoscanada/eos-go?status.svg)](https://godoc.org/github.com/eoscanada/eos-go) 该库提供对数据架构(二进制打包和JSON接口)的简单访问, -以及对远程或本地运行的EOS.IO RPC服务器的API调用。 -它提供钱包功能(KeyBag),或者可以通过 `keosd` 钱包签署交易。 +以及对远程或本地运行的EOS.IO RPC服务器的API调用。 +它提供钱包功能(KeyBag),或者可以通过 `keosd` 钱包签署交易。 它还明白端口9876上的P2P协议。 截至6月的发布之前,这个库不断的在变化。 先不要期望稳定性, @@ -14,39 +13,59 @@ 该库主网启动编排工具是 `eosio` 的基础,网址: https://github.com/eoscanada/eos-bios - -基本用法 ------------ +### 基本用法 ```go -api := eos.New("http://testnet1.eos.io") +package main + +import ( + "context" + "encoding/json" + "fmt" + + eos "github.com/eoscanada/eos-go" + cli "github.com/streamingfast/cli" +) + +func main() { + api := eos.New("https://api.eosn.io") + ctx := context.Background() + + infoResp, err := api.GetInfo(ctx) + cli.NoError(err, "unable to get chain info") -infoResp, _ := api.GetInfo(ctx) -accountResp, _ := api.GetAccount(ctx, "initn") -fmt.Println("Permission for initn:", accountResp.Permissions[0].RequiredAuth.Keys) + fmt.Println("Chain Info", toJson(infoResp)) + + accountResp, _ := api.GetAccount(ctx, "eosio") + fmt.Println("Account Info", toJson(accountResp)) +} + +func toJson(v interface{}) string { + out, err := json.MarshalIndent(v, "", " ") + cli.NoError(err, "unable to marshal json") + + return string(out) +} ``` -`eosio.system` 和 `eosio.token` 的 _Actions_ 合约分别在: -* https://github.com/eoscanada/eos-go/tree/master/system ([godocs](https://godoc.org/github.com/eoscanada/eos-go/system)) -* https://github.com/eoscanada/eos-go/tree/master/token ([godocs](https://godoc.org/github.com/eoscanada/eos-go/token)) +### 例子 -范例 -------- +#### 参考 -看看库的用法的例子: + * API + * [获取链信息](./example_api_get_info_test.go) + * [转账代币](./example_api_transfer_eos_test.go) + * 解码/编码 + * [解码表行](./example_abi_decode_test.go) -* https://github.com/eoscanada/eos-bios/blob/master/bios/bios.go -* https://github.com/eoscanada/eos-bios/blob/master/bios/ops.go -* `cmd/` 下还有一些其他的 `main` 工具包。 +### 二进制文件 +`cmd/` 下的 `main` 包中有一些二进制文件,主要围绕 P2P 通信。 -召集开源贡献者 ------------- +### 召集开源贡献者 我们欢迎所有的开源贡献,直接用 GitHub-fu来提议、帮我们改进吧。 - -证书 -------- +### 证书 MIT diff --git a/README.md b/README.md index 947dad7e..5e8a83d4 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,4 @@ -EOS.IO API library for Go -========================= +## EOS.IO API library for Go [点击查看中文版](./README-cn.md) @@ -19,30 +18,44 @@ This library is the basis for the `eos-bios` launch orchestrator tool at https://github.com/eoscanada/eos-bios -Basic usage ------------ +### Basic usage ```go -api := eos.New("http://testnet1.eos.io") +package main -infoResp, _ := api.GetInfo(ctx) -accountResp, _ := api.GetAccount(ctx, "initn") -fmt.Println("Permission for initn:", accountResp.Permissions[0].RequiredAuth.Keys) -``` +import ( + "context" + "encoding/json" + "fmt" -`eosio.system` and `eosio.token` contract _Actions_ are respectively in: -* https://github.com/eoscanada/eos-go/tree/master/system ([godocs](https://godoc.org/github.com/eoscanada/eos-go/system)) -* https://github.com/eoscanada/eos-go/tree/master/token ([godocs](https://godoc.org/github.com/eoscanada/eos-go/token)) + eos "github.com/eoscanada/eos-go" + cli "github.com/streamingfast/cli" +) -Binaries --------- +func main() { + api := eos.New("https://api.eosn.io") + ctx := context.Background() -There is some binaries in `main` packages under `cmd/`, mainly around P2P communication. + infoResp, err := api.GetInfo(ctx) + cli.NoError(err, "unable to get chain info") -Example -------- + fmt.Println("Chain Info", toJson(infoResp)) + + accountResp, _ := api.GetAccount(ctx, "eosio") + fmt.Println("Account Info", toJson(accountResp)) +} -### Reference +func toJson(v interface{}) string { + out, err := json.MarshalIndent(v, "", " ") + cli.NoError(err, "unable to marshal json") + + return string(out) +} +``` + +### Examples + +#### Reference * API * [Get Chain Information](./example_api_get_info_test.go) @@ -50,7 +63,7 @@ Example * Decoding/Encoding * [Decode Table Row](./example_abi_decode_test.go) -### Running +#### Running The easiest way to see the actual output for a given example is to add a line `// Output: any` at the very end of the test, looks like this for @@ -84,20 +97,21 @@ requires having the authorizations and balance necessary to perform the transaction. It's quite possible to run them through a development environment however. -#### Environment Variables +### Binaries + +There is some binaries in `main` packages under `cmd/`, mainly around P2P communication. + +### Environment Variables -All examples uses by default the `https://mainnet.eos.dfuse.io` API endpoint for all -HTTP communication and `peering.mainnet.eoscanada.com` for P2P communication. +All examples uses by default the `https://api.eosn.io` API endpoint for all +HTTP communication and `peering.eosn.io` for P2P communication. They can respectively be overridden by specifying environment variable `EOS_GO_API_URL` and `EOS_GO_P2P_ENDPOINT` respectively. -Contributing ------------- +### Contributing Any contributions are welcome, use your standard GitHub-fu to pitch in and improve. - -License -------- +### License MIT diff --git a/blockslog/blockslog_test.go b/blockslog/blockslog_test.go index 933243e2..c585e9f6 100644 --- a/blockslog/blockslog_test.go +++ b/blockslog/blockslog_test.go @@ -9,5 +9,5 @@ import ( func TestMe(t *testing.T) { t.Skip("Update me so that it's not tied to a particular machine!") - require.NoError(t, Process("/home/abourget/dfuse/dfuse-eosio/proj/mainnet/mindreader/data/blocks/blocks.log")) + require.NoError(t, Process("/some/path/blocks.log")) } From 772b30b675c41f23892d8c7cb32d07e94ceda446 Mon Sep 17 00:00:00 2001 From: Matthieu Vachon Date: Sat, 16 Oct 2021 09:31:07 -0400 Subject: [PATCH 04/41] Added GitHub workflow --- .github/workflows/main.yml | 47 ++++++++++++++++++++++++++++++++++++++ .gitignore | 1 + 2 files changed, 48 insertions(+) create mode 100644 .github/workflows/main.yml diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml new file mode 100644 index 00000000..aedc46b8 --- /dev/null +++ b/.github/workflows/main.yml @@ -0,0 +1,47 @@ +name: Build and Test + +on: + push: + branches: + - develop + pull_request: + branches: + - "**" + +jobs: + test: + name: Test + runs-on: ${{ matrix.os }} + strategy: + matrix: + go-version: [1.15.x, 1.16.x, 1.17.x] + os: [ubuntu-latest, macos-latest] + steps: + - name: Set up Go + uses: actions/setup-go@v2 + with: + go-version: ${{ matrix.go-version }} + + - name: Check out code + uses: actions/checkout@v2 + + - name: Cache Go modules + uses: actions/cache@v2 + with: + # In order: + # * Module download cache + # * Build cache (Linux) + # * Build cache (Mac) + path: | + ~/go/pkg/mod + ~/.cache/go-build + ~/Library/Caches/go-build + key: ${{ runner.os }}-go-${{ hashFiles('**/go.sum') }} + restore-keys: | + ${{ runner.os }}-go- + + - name: Run Tests + run: go test ./... + + - name: Build + run: go build ./... diff --git a/.gitignore b/.gitignore index c494c3b7..06bc364a 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,4 @@ .envrc .idea .DS_Store +.vscode \ No newline at end of file From c61b3e5407b59bced3c0b38342cc8acab29dc551 Mon Sep 17 00:00:00 2001 From: Matthieu Vachon Date: Sat, 16 Oct 2021 09:52:43 -0400 Subject: [PATCH 05/41] Added release instructions --- .gitignore | 3 ++- .goreleaser.yml | 31 +++++++++++++++++++++++++++++++ README.md | 10 ++++++++++ 3 files changed, 43 insertions(+), 1 deletion(-) create mode 100644 .goreleaser.yml diff --git a/.gitignore b/.gitignore index 06bc364a..444f1eb1 100644 --- a/.gitignore +++ b/.gitignore @@ -1,4 +1,5 @@ .envrc .idea .DS_Store -.vscode \ No newline at end of file +.vscode +/dist \ No newline at end of file diff --git a/.goreleaser.yml b/.goreleaser.yml new file mode 100644 index 00000000..39e971aa --- /dev/null +++ b/.goreleaser.yml @@ -0,0 +1,31 @@ +project_name: eos-go + +env_files: + github_token: ~/.config/goreleaser/github_token + +release: + github: + owner: eoscanada + name: eos-go + draft: true + name_template: '{{.Tag}}' + extra_files: + - glob: ./release/**/* + +changelog: + sort: asc + filters: + exclude: + - '^docs:' + - '^test:' + +builds: +- skip: true + +archives: +- files: + - LICENSE + - README.md + +snapshot: + name_template: "{{ .Tag }}-next" diff --git a/README.md b/README.md index 5e8a83d4..212c26bf 100644 --- a/README.md +++ b/README.md @@ -108,6 +108,16 @@ HTTP communication and `peering.eosn.io` for P2P communication. They can respectively be overridden by specifying environment variable `EOS_GO_API_URL` and `EOS_GO_P2P_ENDPOINT` respectively. +### Release + +We are using [Goreleaser](https://goreleaser.com/) to perform releases. Install the `goreleaser` binary ([instructions](https://goreleaser.com/install/)) +and follow these steps: + +- Dry run release process first with `goreleaser release --skip-publish --skip-validate --rm-dist` +- Publish **draft** release with `goreleaser release --rm-dist` +- Open GitHub's release and check that the release messages are all good +- Once everything is good, publish release + ### Contributing Any contributions are welcome, use your standard GitHub-fu to pitch in and improve. From 0b4842e9fcedfb02f63655b3a59fbdca55d9e0b9 Mon Sep 17 00:00:00 2001 From: Matthieu Vachon Date: Sat, 16 Oct 2021 10:06:25 -0400 Subject: [PATCH 06/41] Prepare next release version --- CHANGELOG.md | 34 ++++++++++++++++++++++++++-------- README.md | 4 ++-- 2 files changed, 28 insertions(+), 10 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 688cee4b..d17fdb02 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,11 +1,23 @@ -# Change log +## Change log The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). -## [0.10] (October 16th, 2021) +### Unreleased -### Breaking Changes +#### Breaking Changes + +#### Added + +#### Changed + +#### Fixed + +#### Deprecated + +### [0.10] (October 16th, 2021) + +#### Breaking Changes - **BREAKING**: We started adding an initial `context.Context` to all interruptible functions. All method performing an HTTP call have the new parameter as well as a bunch of other method. We cannot list all of them. If the caller already have a `context.Context` value, pass it to the function that now require one. Otherwise, simply pass `context.Background()`. - **BREAKING**: Fixed binary unpacking of `BlockState`, `TransactionTrace`, `SignedTransaction`, `Action` (and some inner types). This required changing a few struct fields to better fit with EOSIO definition, here the full list: @@ -28,7 +40,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - `ExceptLogContext.Level` is now a `ExceptLogLevel`, was previously `string`. - `ExceptLogContext.Line` is now a `uint64`, was previously `int`. - **Note** While those are flagged as breaking change to augment the visibility, they are really bug fixes to fit with the behavior of `nodeos` directly. + **Note** While those are flagged as breaking change to augment the visibility, they are really bug fixes to fit with the behavior of `nodeos` directly. - **BREAKING**: The decoding for ABI `variant` was not returning the correct `json` representation. Now ABI `variant` is returned as a two elements array, the first element being the `variant` type name as a `string` and the second the actual value as JSON. For example, assuming a `variant` type defined as `game_type: ["string", "uint32"]`, and a `field` of type `game_type`, before, the JSON serialization would have looked like `{"field":"some_string"}` or `{"field":100}` while after the change, it will get serialized to the correct form `{"field":["string", "some_string"]}` or `{"field":["uint32", 100]}`. @@ -36,7 +48,13 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - **BREAKING**: The serialization for `ExtendedAsset` was aligned with the `eos` codebase. Beforehand, it would serialize the field name `"Contract"` with a capital `C`, and the `Asset` field as `"asset"` where it should have been `"quantity"`. -### Added +- **BREAKING**: Renamed `ConsoleLog` to `SafeString` for better re-usability in the codebase. + +#### Added + +- Proper handling for float precision in binary encoding/decoding. +- Added SHiP binary structures +- Added capabilities to read EOSIO Snapshot format (early implementation) - Added architecture to support binary decoding/encoding Variant objects, see [] - Greatly improved performance of `NameToString` (`~230%`) method. - `TimePoint` will decode with `0` nanoseconds, when the `fitNodeos` flag is set on the ABI. @@ -47,11 +65,11 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - Added `ActionTrace.ContextFree` field of type `bool` that was previously missing from the struct definition. - Normalized all logging to use `streamingfast/logging` and its trace enabled support. -### Changed +#### Changed - All errors are wrapped using `fmt.Errorf("...: %w", ..., err)` which is standard now in Go. -### Fixed +#### Fixed - Optional encoding of primitive types. A struct with a non-pointer type tagged with `eos:"optional"` is now properly encoded at the binary level. **Important** that means that for non-pointer type, when the value of the type is the "emtpy" value according to Golang rules, it will be written as not-present at the binary level. If it's something that you do want want, use a pointer to a primitive type. It's actually a good habit to use a pointer type for "optional" element anyway, to increase awarness. @@ -63,6 +81,6 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - Unpacking binary `TransactionReceipt` type will now correctly set the inner `TransactionWithID.ID` field correctly. - Unpacking binary `BlockState` now correctly works but is restricted to EOSIO 2.0.x version. -### Deprecated +#### Deprecated - Renamed `AccountRAMDelta` to `AccountDelta` which is the correct name in EOSIO. - Renamed `JSONFloat64` to `Float64`, to follow the same convention that was changed years ago with `Uint64`, etc. Type alias left for backwards compatibility. diff --git a/README.md b/README.md index 212c26bf..4ca47b66 100644 --- a/README.md +++ b/README.md @@ -115,8 +115,8 @@ and follow these steps: - Dry run release process first with `goreleaser release --skip-publish --skip-validate --rm-dist` - Publish **draft** release with `goreleaser release --rm-dist` -- Open GitHub's release and check that the release messages are all good -- Once everything is good, publish release +- Open GitHub's release and check that the release is all good +- Once everything is good, publish release, this will now also push the tag. ### Contributing From 6feeedced143c9c6dc542409cedc012644cd878c Mon Sep 17 00:00:00 2001 From: Matthieu Vachon Date: Sun, 17 Oct 2021 08:44:59 -0400 Subject: [PATCH 07/41] Fixed (hopefully) CI by setting specific timezone for tests (and added instructions) Right now the behavior is to render dates in the OS timezone. So for now, to avoid a behavior change, we continue with this and sets explicitely the timezone in the CI. --- .github/workflows/main.yml | 8 ++++++++ CHANGELOG.md | 4 +++- README.md | 12 ++++++++++++ types.go | 16 +++++++++++----- 4 files changed, 34 insertions(+), 6 deletions(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index aedc46b8..a22ac33c 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -40,6 +40,14 @@ jobs: restore-keys: | ${{ runner.os }}-go- + # Some of the parts in eos-go renders timezone specific dates and as such, + # some of our golden files contains them. + - name: Configure Timezone + uses: szenius/set-timezone@v1.0 + with: + timezoneLinux: "America/New_York" + timezoneMacos: "America/New_York" + - name: Run Tests run: go test ./... diff --git a/CHANGELOG.md b/CHANGELOG.md index d17fdb02..c3b0ebf7 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,6 +7,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 #### Breaking Changes +* Renamed [`BlockTimestampFormat`](https://github.com/eoscanada/eos-go/blob/a1623cc5a2223005a4dc7d4dec972d6119de42ff/types.go#L844) to `blockTimestampFormat` making it private. + #### Added #### Changed @@ -15,7 +17,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 #### Deprecated -### [0.10] (October 16th, 2021) +### [**0.10**](https://github.com/eoscanada/eos-go/releases/tag/v0.10.0) (October 16th, 2021) #### Breaking Changes - **BREAKING**: We started adding an initial `context.Context` to all interruptible functions. All method performing an HTTP call have the new parameter as well as a bunch of other method. We cannot list all of them. If the caller already have a `context.Context` value, pass it to the function that now require one. Otherwise, simply pass `context.Background()`. diff --git a/README.md b/README.md index 4ca47b66..e67fd38f 100644 --- a/README.md +++ b/README.md @@ -108,6 +108,18 @@ HTTP communication and `peering.eosn.io` for P2P communication. They can respectively be overridden by specifying environment variable `EOS_GO_API_URL` and `EOS_GO_P2P_ENDPOINT` respectively. +### Tests + +Some of our tests renders dates in the timezone of the OS. As such, if you have a bunch of +failures around dates and times, it's probably because your timezone is not aligned with +those in the tests. + +Run the tests with this to be in the same timezone as the expected one in golden files: + +```bash +TZ=UTC go test ./... +``` + ### Release We are using [Goreleaser](https://goreleaser.com/) to perform releases. Install the `goreleaser` binary ([instructions](https://goreleaser.com/install/)) diff --git a/types.go b/types.go index 304fe8b5..1252d522 100644 --- a/types.go +++ b/types.go @@ -841,14 +841,19 @@ type BlockTimestamp struct { time.Time } -const BlockTimestampFormat = "2006-01-02T15:04:05.999" +// blockTimestampFormat +// +// We deal with timezone in a conditional matter so we allowed for example the +// unmarshalling to accept with and without timezone specifier. +const blockTimestampFormat = "2006-01-02T15:04:05.999" func (t BlockTimestamp) MarshalJSON() ([]byte, error) { - strTime := t.Format(BlockTimestampFormat) + strTime := t.Format(blockTimestampFormat) if len(strTime) == len("2006-01-02T15:04:05.5") { strTime += "00" } - return []byte(fmt.Sprintf("%q", strTime)), nil + + return []byte(`"` + strTime + `"`), nil } func (t *BlockTimestamp) UnmarshalJSON(data []byte) (err error) { @@ -856,10 +861,11 @@ func (t *BlockTimestamp) UnmarshalJSON(data []byte) (err error) { return nil } - t.Time, err = time.Parse(`"`+BlockTimestampFormat+`"`, string(data)) + t.Time, err = time.Parse(`"`+blockTimestampFormat+`"`, string(data)) if err != nil { - t.Time, err = time.Parse(`"`+BlockTimestampFormat+`Z07:00"`, string(data)) + t.Time, err = time.Parse(`"`+blockTimestampFormat+`Z07:00"`, string(data)) } + return err } From fd5ad0b912af098ddc1cb3a7af2aa74311af1c1f Mon Sep 17 00:00:00 2001 From: xana Date: Mon, 8 Nov 2021 20:09:51 +0330 Subject: [PATCH 08/41] Add EOSIO Testnet symbol (#165) --- types.go | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/types.go b/types.go index 1252d522..cf64b157 100644 --- a/types.go +++ b/types.go @@ -429,6 +429,11 @@ var EOSSymbol = Symbol{Precision: 4, Symbol: "EOS"} // here just to speed up things. var REXSymbol = Symbol{Precision: 4, Symbol: "REX"} +// TNTSymbol represents the standard EOSIO Testnet symbol on the testnet chain. +// Temporary Network Token (TNT) is the native token of the EOSIO Testnet. +// It's here just to speed up things. +var TNTSymbol = Symbol{Precision: 4, Symbol: "TNT"} + func NewEOSAsset(amount int64) Asset { return Asset{Amount: Int64(amount), Symbol: EOSSymbol} } @@ -465,6 +470,10 @@ func NewREXAssetFromString(input string) (Asset, error) { return NewFixedSymbolAssetFromString(REXSymbol, input) } +func NewTNTAssetFromString(input string) (Asset, error) { + return NewFixedSymbolAssetFromString(TNTSymbol, input) +} + func NewFixedSymbolAssetFromString(symbol Symbol, input string) (out Asset, err error) { integralPart, decimalPart, symbolPart, err := splitAsset(input) if err != nil { From c56c2f318d421cbc9d49d9094ea3732ddb94969a Mon Sep 17 00:00:00 2001 From: xana Date: Wed, 12 Jan 2022 20:15:22 +0330 Subject: [PATCH 09/41] Update ActionResp (#166) * Add Irreversible filed to ActionResp --- responses.go | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/responses.go b/responses.go index 541fcccc..92c81282 100644 --- a/responses.go +++ b/responses.go @@ -467,11 +467,12 @@ type GetActionsRequest struct { Offset Int64 `json:"offset"` } type ActionResp struct { - GlobalSeq JSONInt64 `json:"global_action_seq"` - AccountSeq JSONInt64 `json:"account_action_seq"` - BlockNum uint32 `json:"block_num"` - BlockTime BlockTimestamp `json:"block_time"` - Trace ActionTrace `json:"action_trace"` + GlobalSeq JSONInt64 `json:"global_action_seq"` + AccountSeq JSONInt64 `json:"account_action_seq"` + BlockNum uint32 `json:"block_num"` + BlockTime BlockTimestamp `json:"block_time"` + Trace ActionTrace `json:"action_trace"` + Irreversible bool `json:"irreversible"` } type ActionsResp struct { Actions []ActionResp `json:"actions"` From 39fba816311fd41a31d188738e1d94b096410dbe Mon Sep 17 00:00:00 2001 From: Henrik Hautakoski Date: Wed, 12 Jan 2022 19:35:48 +0100 Subject: [PATCH 10/41] ship/types.go: (*SignedBlockBytes) UnmarshalBinary() cannot call eos.UnmarshalBinary() without cast. (#169) This will result in recursive parsing as you will need a SignedBlockBytes to parse a SignedBlockBytes struct. the correct way is to cast to SignedBlock as SignedBlockBytes is and alias to SignedBlock --- ship/types.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ship/types.go b/ship/types.go index 823b73ec..6339e076 100644 --- a/ship/types.go +++ b/ship/types.go @@ -158,7 +158,7 @@ func (s *SignedBlockBytes) UnmarshalBinary(decoder *eos.Decoder) error { if err != nil { return err } - return eos.UnmarshalBinary(data, s) + return eos.UnmarshalBinary(data, (*SignedBlock)(s)) } type Extension struct { From 36114bd775e11e20137b3f3c562e766bebefff5c Mon Sep 17 00:00:00 2001 From: Matthieu Vachon Date: Wed, 19 Jan 2022 10:42:04 -0500 Subject: [PATCH 11/41] Fixed built-in examples (pointing by default to EOS Nation API nodes) --- README.md | 14 +++++++------- example_api_test.go | 2 +- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/README.md b/README.md index e67fd38f..25b21f15 100644 --- a/README.md +++ b/README.md @@ -58,21 +58,21 @@ func toJson(v interface{}) string { #### Reference * API - * [Get Chain Information](./example_api_get_info_test.go) - * [Transfer Token](./example_api_transfer_eos_test.go) + * [Get Account](./example_api_get_account_test.go) + * [Get Chain Information](./example_api_get_info_test.go) + * [Transfer Token](./example_api_transfer_eos_test.go) * Decoding/Encoding - * [Decode Table Row](./example_abi_decode_test.go) + * [Decode Table Row](./example_abi_decode_test.go) + * [Transaction Unpack](./example_trx_unpack_test.go) #### Running The easiest way to see the actual output for a given example is to add a line `// Output: any` at the very end of the test, looks like this for -`ExampleAPI_GetInfo` file ([examples_api_get_info.go](./examples_api_get_info.go)): +`ExampleAPI_GetInfo` file ([examples_api_get_info.go](./example_api_get_info_test.go)): ``` - if err != nil { - panic(fmt.Errorf("json marshal response: %w", err)) - } + ... fmt.Println(string(bytes)) // Output: any diff --git a/example_api_test.go b/example_api_test.go index 6dee7c6c..18f20863 100644 --- a/example_api_test.go +++ b/example_api_test.go @@ -8,5 +8,5 @@ func getAPIURL() string { return apiURL } - return "https://mainnet.eoscanada.com" + return "https://api.eosn.io/" } From 25569fc708280b5237ebc11f74e28a970e7298c5 Mon Sep 17 00:00:00 2001 From: Matthieu Vachon Date: Wed, 19 Jan 2022 11:11:23 -0500 Subject: [PATCH 12/41] Added PVT_K1 test to ensure it works --- ecc/crypto_test.go | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/ecc/crypto_test.go b/ecc/crypto_test.go index 3d2adf81..d76ee13b 100644 --- a/ecc/crypto_test.go +++ b/ecc/crypto_test.go @@ -20,6 +20,17 @@ func TestK1PrivateToPublic(t *testing.T) { assert.Equal(t, PublicKeyPrefixCompat+"859gxfnXyUriMgUeThh1fWv3oqcpLFyHa3TfFYC4PK2HqhToVM", pubKeyString) } +func TestPrefixedK1PrivateToPublic(t *testing.T) { + wif := "PVT_K1_5KYZdUEo39z3FPrtuX2QbbwGnNP5zTd7yyr2SC1j299sBCnWjss" + privKey, err := NewPrivateKey(wif) + require.NoError(t, err) + + pubKey := privKey.PublicKey() + + pubKeyString := pubKey.String() + assert.Equal(t, PublicKeyPrefixCompat+"859gxfnXyUriMgUeThh1fWv3oqcpLFyHa3TfFYC4PK2HqhToVM", pubKeyString) +} + func TestR1PrivateToPublic(t *testing.T) { encodedPrivKey := "PVT_R1_2o5WfMRU4dTp23pbcbP2yn5MumQzSMy3ayNQ31qi5nUfa2jdWC" _, err := NewPrivateKey(encodedPrivKey) From 84a69f3c128123f3743aa86d01c691e9a4f91833 Mon Sep 17 00:00:00 2001 From: Emre Date: Wed, 19 Jan 2022 19:21:34 +0300 Subject: [PATCH 13/41] fix: varuint32, time_point_sec, time_point types (#156) --- abiencoder.go | 31 ++++++++++++++++++++++++++++--- 1 file changed, 28 insertions(+), 3 deletions(-) diff --git a/abiencoder.go b/abiencoder.go index 82df4c80..806b6ce8 100644 --- a/abiencoder.go +++ b/abiencoder.go @@ -212,18 +212,43 @@ func (a *ABI) writeField(binaryEncoder *Encoder, fieldName string, fieldType str return err } object = uint16(i) - case "int32", "varint32": + case "int32": i, err := valueToInt(fieldName, value, 32) if err != nil { return err } object = int32(i) - case "uint32", "varuint32": + case "varint32": + v, _ := strconv.ParseUint(value.Raw, 10, 32) + v = (v << 1) ^ (v >> 31) + for true { + if (v >> 7) > 0 { + binaryEncoder.writeByte(byte(0x80 | (v & 0x7f))) + v = v >> 7 + } else { + binaryEncoder.writeByte(byte(v)) + break + } + } + return nil + case "uint32": i, err := valueToUint(fieldName, value, 32) if err != nil { return err } object = uint32(i) + case "varuint32": + v, _ := strconv.ParseUint(value.Raw, 10, 32) + for true { + if (v >> 7) > 0 { + binaryEncoder.writeByte(byte(0x80 | (v & 0x7f))) + v = v >> 7 + } else { + binaryEncoder.writeByte(byte(v)) + break + } + } + return nil case "int64": var in Int64 if err := json.Unmarshal([]byte(value.Raw), &in); err != nil { @@ -273,7 +298,7 @@ func (a *ABI) writeField(binaryEncoder *Encoder, fieldName string, fieldType str if err != nil { return fmt.Errorf("writing field: time_point_sec: %w", err) } - object = TimePointSec(t.UTC().Second()) + object = TimePointSec(t.UTC().Unix()) case "time_point": t, err := time.Parse("2006-01-02T15:04:05.999", value.Str) if err != nil { From d910fac1b19f00e59786b0c0ea4be01ffd63f41b Mon Sep 17 00:00:00 2001 From: Matthieu Vachon Date: Wed, 19 Jan 2022 11:41:04 -0500 Subject: [PATCH 14/41] Fixed `get_producers` call. * Fixed [`Producer`](https://github.com/eoscanada/eos-go/blob/c56c2f318d421cbc9d49d9094ea3732ddb94969a/responses.go#L451) to use more standard `eos-go` types. * Fixed [ProducersResp](https://github.com/eoscanada/eos-go/blob/c56c2f318d421cbc9d49d9094ea3732ddb94969a/responses.go#L462) to fit with actual EOSIO API. --- CHANGELOG.md | 27 ++++++++++++++++++++++++ api.go | 2 +- example_api_get_producers_test.go | 34 +++++++++++++++++++++++++++++++ responses.go | 25 +++++++++++++++-------- 4 files changed, 78 insertions(+), 10 deletions(-) create mode 100644 example_api_get_producers_test.go diff --git a/CHANGELOG.md b/CHANGELOG.md index c3b0ebf7..2d18e613 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,14 +7,41 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 #### Breaking Changes +* Fixed [`Producer`](https://github.com/eoscanada/eos-go/blob/c56c2f318d421cbc9d49d9094ea3732ddb94969a/responses.go#L451) to use more standard `eos-go` types. +* Fixed [ProducersResp](https://github.com/eoscanada/eos-go/blob/c56c2f318d421cbc9d49d9094ea3732ddb94969a/responses.go#L462) to fit with actual EOSIO API. + +#### Added + +* Add EOSIO Testnet symbol (#165) +* Update ActionResp (#166) + +#### Changed + +#### Fixed + +* Bugfix StringToSymbol (44b6fbd) +* Fixed built-in examples (pointing by default to EOS Nation API nodes) (36114bd) + +#### Deprecated + +### [**0.10.1**](https://github.com/eoscanada/eos-go/releases/tag/v0.10.1) (January 19th, 2022) + +#### Breaking Changes + * Renamed [`BlockTimestampFormat`](https://github.com/eoscanada/eos-go/blob/a1623cc5a2223005a4dc7d4dec972d6119de42ff/types.go#L844) to `blockTimestampFormat` making it private. #### Added +* Add EOSIO Testnet symbol (#165) +* Update ActionResp (#166) + #### Changed #### Fixed +* Bugfix StringToSymbol (44b6fbd) +* Fixed built-in examples (pointing by default to EOS Nation API nodes) (36114bd) + #### Deprecated ### [**0.10**](https://github.com/eoscanada/eos-go/releases/tag/v0.10.0) (October 16th, 2021) diff --git a/api.go b/api.go index dd425eb5..1e3766d5 100644 --- a/api.go +++ b/api.go @@ -549,7 +549,7 @@ func (api *API) GetProducers(ctx context.Context) (out *ProducersResp, err error /* +FC_REFLECT( eosio::chain_apis::read_only::get_producers_params, (json)(lower_bound)(limit) ) +FC_REFLECT( eosio::chain_apis::read_only::get_producers_result, (rows)(total_producer_vote_weight)(more) ); */ - err = api.call(ctx, "chain", "get_producers", nil, &out) + err = api.call(ctx, "chain", "get_producers", M{"json": true}, &out) return } diff --git a/example_api_get_producers_test.go b/example_api_get_producers_test.go new file mode 100644 index 00000000..e82ef94e --- /dev/null +++ b/example_api_get_producers_test.go @@ -0,0 +1,34 @@ +package eos_test + +import ( + "context" + "fmt" + "sort" + + eos "github.com/eoscanada/eos-go" +) + +func ExampleAPI_GetProducers() { + api := eos.New(getAPIURL()) + + resp, err := api.GetProducers(context.Background()) + if err != nil { + panic(fmt.Errorf("get account: %w", err)) + } + + sort.Slice(resp.Producers, func(i, j int) bool { + if resp.Producers[i].IsActive && !resp.Producers[j].IsActive { + return true + } + + return resp.Producers[i].TotalVotes < resp.Producers[j].TotalVotes + }) + + for _, producer := range resp.Producers { + fmt.Printf("Producer %s (%s) with %.5f votes (last claimed %s)\n", producer.Owner, producer.URL, producer.TotalVotes, producer.LastClaimTime) + } + + fmt.Printf("Total Vote Weight: %.4f\n", resp.TotalProducerVoteWeight) + fmt.Printf("More: %s\n", resp.More) + // Output: any +} diff --git a/responses.go b/responses.go index 92c81282..27ae0a15 100644 --- a/responses.go +++ b/responses.go @@ -449,23 +449,28 @@ type Global struct { } type Producer struct { - Owner string `json:"owner"` - TotalVotes float64 `json:"total_votes,string"` - ProducerKey string `json:"producer_key"` - IsActive int `json:"is_active"` - URL string `json:"url"` - UnpaidBlocks int `json:"unpaid_blocks"` - LastClaimTime Float64 `json:"last_claim_time"` - Location int `json:"location"` + Owner Name `json:"owner"` + TotalVotes Float64 `json:"total_votes,string"` + ProducerKey ecc.PublicKey `json:"producer_key"` + IsActive Bool `json:"is_active"` + URL string `json:"url"` + UnpaidBlocks int `json:"unpaid_blocks"` + LastClaimTime JSONTime `json:"last_claim_time"` + Location int `json:"location"` } + type ProducersResp struct { - Producers []Producer `json:"producers"` + Producers []Producer `json:"rows"` + TotalProducerVoteWeight Float64 `json:"total_producer_vote_weight"` + More Name `json:"more"` } + type GetActionsRequest struct { AccountName AccountName `json:"account_name"` Pos Int64 `json:"pos"` Offset Int64 `json:"offset"` } + type ActionResp struct { GlobalSeq JSONInt64 `json:"global_action_seq"` AccountSeq JSONInt64 `json:"account_action_seq"` @@ -474,10 +479,12 @@ type ActionResp struct { Trace ActionTrace `json:"action_trace"` Irreversible bool `json:"irreversible"` } + type ActionsResp struct { Actions []ActionResp `json:"actions"` LastIrreversibleBlock uint32 `json:"last_irreversible_block"` } + type KeyAccountsResp struct { AccountNames []string `json:"account_names"` } From 1994aaed6a08321d32f44847a9989d94a8fa4481 Mon Sep 17 00:00:00 2001 From: Matthieu Vachon Date: Wed, 19 Jan 2022 11:41:53 -0500 Subject: [PATCH 15/41] Fixed changelog commit --- CHANGELOG.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 2d18e613..cde29c26 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,8 +7,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 #### Breaking Changes -* Fixed [`Producer`](https://github.com/eoscanada/eos-go/blob/c56c2f318d421cbc9d49d9094ea3732ddb94969a/responses.go#L451) to use more standard `eos-go` types. -* Fixed [ProducersResp](https://github.com/eoscanada/eos-go/blob/c56c2f318d421cbc9d49d9094ea3732ddb94969a/responses.go#L462) to fit with actual EOSIO API. +* Fixed [`Producer`](https://github.com/eoscanada/eos-go/blob/2a749436dd9f3e993fd9262fc5c1e28255625994/responses.go#L451) to use more standard `eos-go` types. +* Fixed [ProducersResp](https://github.com/eoscanada/eos-go/blob/2a749436dd9f3e993fd9262fc5c1e28255625994/responses.go#L462) to fit with actual EOSIO API. #### Added From f1da6bf6c98f4475b3d3f81382134ce66a6b737a Mon Sep 17 00:00:00 2001 From: Matthieu Vachon Date: Wed, 19 Jan 2022 11:42:37 -0500 Subject: [PATCH 16/41] Added `get_producers` example --- README.md | 1 + example_api_get_producers_test.go | 1 - 2 files changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 25b21f15..da3bef49 100644 --- a/README.md +++ b/README.md @@ -60,6 +60,7 @@ func toJson(v interface{}) string { * API * [Get Account](./example_api_get_account_test.go) * [Get Chain Information](./example_api_get_info_test.go) + * [Get Producers](./example_api_get_producers_test.go) * [Transfer Token](./example_api_transfer_eos_test.go) * Decoding/Encoding * [Decode Table Row](./example_abi_decode_test.go) diff --git a/example_api_get_producers_test.go b/example_api_get_producers_test.go index e82ef94e..a5e7ef71 100644 --- a/example_api_get_producers_test.go +++ b/example_api_get_producers_test.go @@ -30,5 +30,4 @@ func ExampleAPI_GetProducers() { fmt.Printf("Total Vote Weight: %.4f\n", resp.TotalProducerVoteWeight) fmt.Printf("More: %s\n", resp.More) - // Output: any } From 028f1e6ab0630b6121328195a52664e392b4a13f Mon Sep 17 00:00:00 2001 From: Matthieu Vachon Date: Wed, 19 Jan 2022 12:05:29 -0500 Subject: [PATCH 17/41] Fixed varuint32 and varint32 implementation --- abiencoder.go | 33 ++++++++++++--------------------- abiencoder_test.go | 4 ++-- encoder.go | 24 ++++++++++++++++++++++-- 3 files changed, 36 insertions(+), 25 deletions(-) diff --git a/abiencoder.go b/abiencoder.go index 806b6ce8..845a12cd 100644 --- a/abiencoder.go +++ b/abiencoder.go @@ -219,18 +219,13 @@ func (a *ABI) writeField(binaryEncoder *Encoder, fieldName string, fieldType str } object = int32(i) case "varint32": - v, _ := strconv.ParseUint(value.Raw, 10, 32) - v = (v << 1) ^ (v >> 31) - for true { - if (v >> 7) > 0 { - binaryEncoder.writeByte(byte(0x80 | (v & 0x7f))) - v = v >> 7 - } else { - binaryEncoder.writeByte(byte(v)) - break - } + v, err := strconv.ParseInt(value.Raw, 10, 32) + if err != nil { + return fmt.Errorf("invalid int32 value %q", value.Raw) } - return nil + + object = Varint32(v) + case "uint32": i, err := valueToUint(fieldName, value, 32) if err != nil { @@ -238,17 +233,13 @@ func (a *ABI) writeField(binaryEncoder *Encoder, fieldName string, fieldType str } object = uint32(i) case "varuint32": - v, _ := strconv.ParseUint(value.Raw, 10, 32) - for true { - if (v >> 7) > 0 { - binaryEncoder.writeByte(byte(0x80 | (v & 0x7f))) - v = v >> 7 - } else { - binaryEncoder.writeByte(byte(v)) - break - } + v, err := strconv.ParseUint(value.Raw, 10, 32) + if err != nil { + return fmt.Errorf("invalid uint32 value %q", value.Raw) } - return nil + + object = Varuint32(v) + case "int64": var in Int64 if err := json.Unmarshal([]byte(value.Raw), &in); err != nil { diff --git a/abiencoder_test.go b/abiencoder_test.go index 53f3f597..03aa5a90 100644 --- a/abiencoder_test.go +++ b/abiencoder_test.go @@ -252,8 +252,8 @@ func TestABI_Write(t *testing.T) { {"caseName": "out of range uint64 upper", "typeName": "uint64", "expectedValue": "", "json": "{\"testField\":18446744073709551616}", "expectedError": fmt.Errorf("encoding uint64: json: cannot unmarshal number 18446744073709551616 into Go value of type uint64")}, {"caseName": "int128", "typeName": "int128", "expectedValue": "01020000000000000200000000000000", "json": "{\"testField\":\"0x01020000000000000200000000000000\"}"}, {"caseName": "uint128", "typeName": "uint128", "expectedValue": "01000000000000000200000000000000", "json": "{\"testField\":\"0x01000000000000000200000000000000\"}"}, - {"caseName": "varint32", "typeName": "varint32", "expectedValue": "00000080", "json": "{\"testField\":-2147483648}", "expectedError": nil, "isOptional": false, "isArray": false, "fieldName": "testedField"}, - {"caseName": "varuint32", "typeName": "varuint32", "expectedValue": "ffffffff", "json": "{\"testField\":4294967295}", "expectedError": nil, "isOptional": false, "isArray": false, "fieldName": "testedField"}, //{"caseName": "min varuint32", "typeName": "varuint32", "expectedValue": "0", "json": Varuint32(0), "expectedError": nil, "isOptional": false, "isArray": false, "fieldName": "testedField"}, + {"caseName": "varint32", "typeName": "varint32", "expectedValue": "ffffffff0f", "json": "{\"testField\":-2147483648}", "expectedError": nil, "isOptional": false, "isArray": false, "fieldName": "testedField"}, + {"caseName": "varuint32", "typeName": "varuint32", "expectedValue": "ffffffff0f", "json": "{\"testField\":4294967295}", "expectedError": nil, "isOptional": false, "isArray": false, "fieldName": "testedField"}, //{"caseName": "min varuint32", "typeName": "varuint32", "expectedValue": "0", "json": Varuint32(0), "expectedError": nil, "isOptional": false, "isArray": false, "fieldName": "testedField"}, {"caseName": "min float32", "typeName": "float32", "expectedValue": "01000000", "json": "{\"testField\":0.000000000000000000000000000000000000000000001401298464324817}", "expectedError": nil}, {"caseName": "max float32", "typeName": "float32", "expectedValue": "ffff7f7f", "json": "{\"testField\":340282346638528860000000000000000000000}", "expectedError": nil}, {"caseName": "err float32", "typeName": "float32", "expectedValue": "ffff7f7f", "json": "{\"testField\":440282346638528860000000000000000000000}", "expectedError": fmt.Errorf("writing field: [test_field_name] type float32 : strconv.ParseFloat: parsing \"440282346638528860000000000000000000000\": value out of range")}, diff --git a/encoder.go b/encoder.go index ced329cc..38f3d840 100644 --- a/encoder.go +++ b/encoder.go @@ -115,7 +115,7 @@ func (e *Encoder) Encode(v interface{}) (err error) { case float64: return e.writeFloat64(cv) case Varint32: - return e.writeVarInt(int(cv)) + return e.writeVarInt32(int32(cv)) case Uint128: return e.writeUint128(cv) case Int128: @@ -123,7 +123,7 @@ func (e *Encoder) Encode(v interface{}) (err error) { case Float128: return e.writeUint128(Uint128(cv)) case Varuint32: - return e.writeUVarInt(int(cv)) + return e.writeUVarInt32(uint32(cv)) case bool: return e.writeBool(cv) case Bool: @@ -309,6 +309,16 @@ func (e *Encoder) writeUVarInt(v int) (err error) { return e.toWriter(buf[:l]) } +func (e *Encoder) writeUVarInt32(v uint32) (err error) { + if traceEnabled { + zlog.Debug("write varuint32", zap.Uint32("val", v)) + } + + buf := make([]byte, binary.MaxVarintLen32) + l := binary.PutUvarint(buf, uint64(v)) + return e.toWriter(buf[:l]) +} + func (e *Encoder) writeVarInt(v int) (err error) { if traceEnabled { zlog.Debug("write varint", zap.Int("val", v)) @@ -319,6 +329,16 @@ func (e *Encoder) writeVarInt(v int) (err error) { return e.toWriter(buf[:l]) } +func (e *Encoder) writeVarInt32(v int32) (err error) { + if traceEnabled { + zlog.Debug("write varint32", zap.Int32("val", v)) + } + + buf := make([]byte, binary.MaxVarintLen32) + l := binary.PutVarint(buf, int64(v)) + return e.toWriter(buf[:l]) +} + func (e *Encoder) writeByte(b byte) (err error) { if traceEnabled { zlog.Debug("write byte", zap.Uint8("val", b)) From 080670128f5d603265d9d7a5da3d1fe286d24eca Mon Sep 17 00:00:00 2001 From: Matthieu Vachon Date: Wed, 19 Jan 2022 12:07:47 -0500 Subject: [PATCH 18/41] Fixed changelog for next release --- CHANGELOG.md | 19 ++++++++++--------- 1 file changed, 10 insertions(+), 9 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index cde29c26..26d29bb8 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,23 +7,24 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 #### Breaking Changes -* Fixed [`Producer`](https://github.com/eoscanada/eos-go/blob/2a749436dd9f3e993fd9262fc5c1e28255625994/responses.go#L451) to use more standard `eos-go` types. -* Fixed [ProducersResp](https://github.com/eoscanada/eos-go/blob/2a749436dd9f3e993fd9262fc5c1e28255625994/responses.go#L462) to fit with actual EOSIO API. - #### Added -* Add EOSIO Testnet symbol (#165) -* Update ActionResp (#166) - #### Changed #### Fixed -* Bugfix StringToSymbol (44b6fbd) -* Fixed built-in examples (pointing by default to EOS Nation API nodes) (36114bd) - #### Deprecated +### [**0.10.2**](https://github.com/eoscanada/eos-go/releases/tag/v0.10.2) (January 19th, 2022) + +#### Changed + +* Changed ABI encoder `varuint32` to re-use existing encoder. + +#### Fixed + +* Fixed ABI encoder `varint32` types. + ### [**0.10.1**](https://github.com/eoscanada/eos-go/releases/tag/v0.10.1) (January 19th, 2022) #### Breaking Changes From 8b8ab766229200d580b83ecb5da64bbafa4f8671 Mon Sep 17 00:00:00 2001 From: Vladislav Vlastovskiy Date: Mon, 4 Apr 2022 21:24:39 +0300 Subject: [PATCH 19/41] Allow unmarshal symbol from JSON (#173) Many contract transfer symbol in JSON --- types.go | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/types.go b/types.go index cf64b157..221d0fec 100644 --- a/types.go +++ b/types.go @@ -368,6 +368,23 @@ func (s Symbol) String() string { return fmt.Sprintf("%d,%s", s.Precision, s.Symbol) } +func (s *Symbol) UnmarshalJSON(data []byte) error { + var str string + err := json.Unmarshal(data, &str) + if err != nil { + return err + } + + sym, err := StringToSymbol(str) + if err != nil { + return err + } + + *s = sym + + return nil +} + type SymbolCode uint64 func NameToSymbolCode(name Name) (SymbolCode, error) { From 2a5969c54669ed0219ec2bd3276698df419f4fe9 Mon Sep 17 00:00:00 2001 From: Maxim Fominykh Date: Mon, 20 Jun 2022 18:45:41 +0500 Subject: [PATCH 20/41] Fix NewPrivateKey correctly working with PVT_K1 keys (#177) * Fix NewPrivateKey correctly working with PVT_K1 keys. Added test for PVT_K1 NewPrivateKey. --- CHANGELOG.md | 2 ++ ecc/crypto_test.go | 8 ++++---- ecc/privkey.go | 8 +++++++- ecc/privkey_test.go | 30 ++++++++++++++++++++++++++++++ 4 files changed, 43 insertions(+), 5 deletions(-) create mode 100644 ecc/privkey_test.go diff --git a/CHANGELOG.md b/CHANGELOG.md index 26d29bb8..56623f37 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -13,6 +13,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 #### Fixed +Fix NewPrivateKey correctly working with PVT_K1 keys (#177) + #### Deprecated ### [**0.10.2**](https://github.com/eoscanada/eos-go/releases/tag/v0.10.2) (January 19th, 2022) diff --git a/ecc/crypto_test.go b/ecc/crypto_test.go index d76ee13b..187f17fc 100644 --- a/ecc/crypto_test.go +++ b/ecc/crypto_test.go @@ -21,14 +21,14 @@ func TestK1PrivateToPublic(t *testing.T) { } func TestPrefixedK1PrivateToPublic(t *testing.T) { - wif := "PVT_K1_5KYZdUEo39z3FPrtuX2QbbwGnNP5zTd7yyr2SC1j299sBCnWjss" + wif := "PVT_K1_9FN3K4JhzaMsw2Duzr1ijHzVecHtqg1QG4ZCX9udh69Z7QGTk" privKey, err := NewPrivateKey(wif) require.NoError(t, err) pubKey := privKey.PublicKey() pubKeyString := pubKey.String() - assert.Equal(t, PublicKeyPrefixCompat+"859gxfnXyUriMgUeThh1fWv3oqcpLFyHa3TfFYC4PK2HqhToVM", pubKeyString) + assert.Equal(t, PublicKeyPrefixCompat+"7LrH8N3f3BTCLRHQWeo9gVfuBB6XgEqtjksKoN9jhjFjbaGQES", pubKeyString) } func TestR1PrivateToPublic(t *testing.T) { @@ -39,8 +39,8 @@ func TestR1PrivateToPublic(t *testing.T) { // FIXME: Actual retrieval of publicKey from privateKey for R1 is not done yet, disable this check // pubKey := privKey.PublicKey() - //pubKeyString := pubKey.String() - //assert.Equal(t, "PUB_R1_0000000000000000000000000000000000000000000000", pubKeyString) + // pubKeyString := pubKey.String() + // assert.Equal(t, "PUB_R1_0000000000000000000000000000000000000000000000", pubKeyString) } func TestNewPublicKeyAndSerializeCompress(t *testing.T) { diff --git a/ecc/privkey.go b/ecc/privkey.go index 3e9dd30e..ad43bfb7 100644 --- a/ecc/privkey.go +++ b/ecc/privkey.go @@ -11,6 +11,7 @@ import ( "github.com/eoscanada/eos-go/btcsuite/btcd/btcec" "github.com/eoscanada/eos-go/btcsuite/btcutil" + "github.com/eoscanada/eos-go/btcsuite/btcutil/base58" ) const PrivateKeyPrefix = "PVT_" @@ -50,8 +51,13 @@ func NewPrivateKey(wif string) (*PrivateKey, error) { switch curvePrefix { case "K1_": + // See https://github.com/EOSIO/eosjs-ecc/blob/a806b93fbbccec8d38c0c02998d204ff2040a6ae/src/key_private.js#L50 + decoded := base58.Decode(privKeyMaterial) + key := append([]byte{128}, decoded[:len(decoded)-4]...) + checksum := btcutil.DoubleHashB(key) + wifKey := base58.Encode(append(key, checksum[0:4]...)) - wifObj, err := btcutil.DecodeWIF(privKeyMaterial) + wifObj, err := btcutil.DecodeWIF(wifKey) if err != nil { return nil, err } diff --git a/ecc/privkey_test.go b/ecc/privkey_test.go new file mode 100644 index 00000000..b054852c --- /dev/null +++ b/ecc/privkey_test.go @@ -0,0 +1,30 @@ +package ecc + +import ( + "testing" + + "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" +) + +func Test_NewPrivateKey(t *testing.T) { + cases := []struct { + name string + key string + expectedKey string + }{ + { + name: "K1", + key: "PVT_K1_9FN3K4JhzaMsw2Duzr1ijHzVecHtqg1QG4ZCX9udh69Z7QGTk", + expectedKey: "5HxXwim9PAZZctKJG7Sk6mURD6UXW2hkjDKqnNZu9WYjKD6fF5a", + }, + } + + for _, c := range cases { + t.Run(c.name, func(t *testing.T) { + key, err := NewPrivateKey(c.key) + require.NoError(t, err) + assert.Equal(t, c.expectedKey, key.String()) + }) + } +} From 9190d0a626967cabecc6e2fe64e1945b8882746d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Frederik=20Sch=C3=B6ll?= Date: Mon, 20 Jun 2022 15:46:48 +0200 Subject: [PATCH 21/41] add action_trace_v1 to ship types (#178) * add action_trace_v1 --- CHANGELOG.md | 2 ++ ship/types.go | 17 ++++++++++++++++- ship/variant_helpers.go | 1 + 3 files changed, 19 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 56623f37..6b85a50d 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,6 +5,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Unreleased +* Added `action_trace_v1` field + #### Breaking Changes #### Added diff --git a/ship/types.go b/ship/types.go index 6339e076..3a3147c4 100644 --- a/ship/types.go +++ b/ship/types.go @@ -65,11 +65,26 @@ type ActionTraceV0 struct { ContextFree bool Elapsed int64 Console eos.SafeString - AccountRamDeltas []*eos.AccountRAMDelta + AccountRamDeltas []*eos.AccountDelta Except string `eos:"optional"` ErrorCode uint64 `eos:"optional"` } +type ActionTraceV1 struct { + ActionOrdinal eos.Varuint32 + CreatorActionOrdinal eos.Varuint32 + Receipt *ActionReceipt `eos:"optional"` + Receiver eos.Name + Act *Action + ContextFree bool + Elapsed int64 + Console eos.SafeString + AccountRamDeltas []*eos.AccountDelta + Except string `eos:"optional"` + ErrorCode uint64 `eos:"optional"` + ReturnValue []byte +} + type Action struct { Account eos.AccountName Name eos.ActionName diff --git a/ship/variant_helpers.go b/ship/variant_helpers.go index bb558b0c..3f73627a 100644 --- a/ship/variant_helpers.go +++ b/ship/variant_helpers.go @@ -77,6 +77,7 @@ func (r *TransactionTrace) UnmarshalBinary(decoder *eos.Decoder) error { // ActionTrace var ActionTraceVariant = eos.NewVariantDefinition([]eos.VariantType{ {"action_trace_v0", (*ActionTraceV0)(nil)}, + {"action_trace_v1", (*ActionTraceV1)(nil)}, }) type ActionTrace struct { From 10b1d20dd3d8b776dfc3e85f885016cbfe94978e Mon Sep 17 00:00:00 2001 From: Matthieu Vachon Date: Thu, 30 Jun 2022 14:21:11 -0400 Subject: [PATCH 22/41] Added transaction packing and signing example Close #182 --- README.md | 2 + example_api_test.go | 23 +++++++++- example_trx_pack_test.go | 90 ++++++++++++++++++++++++++++++++++++++++ go.mod | 1 + go.sum | 2 + 5 files changed, 117 insertions(+), 1 deletion(-) create mode 100644 example_trx_pack_test.go diff --git a/README.md b/README.md index da3bef49..24fe78a8 100644 --- a/README.md +++ b/README.md @@ -64,6 +64,8 @@ func toJson(v interface{}) string { * [Transfer Token](./example_api_transfer_eos_test.go) * Decoding/Encoding * [Decode Table Row](./example_abi_decode_test.go) + * Transaction + * [Transaction Sign & Pack](./example_trx_pack_test.go) * [Transaction Unpack](./example_trx_unpack_test.go) #### Running diff --git a/example_api_test.go b/example_api_test.go index 18f20863..41dd0450 100644 --- a/example_api_test.go +++ b/example_api_test.go @@ -1,6 +1,10 @@ package eos_test -import "os" +import ( + "fmt" + "os" + "runtime" +) func getAPIURL() string { apiURL := os.Getenv("EOS_GO_API_URL") @@ -10,3 +14,20 @@ func getAPIURL() string { return "https://api.eosn.io/" } + +func Ensure(condition bool, message string, args ...interface{}) { + if !condition { + Quit(message, args...) + } +} + +func NoError(err error, message string, args ...interface{}) { + if err != nil { + Quit(message+": "+err.Error(), args...) + } +} + +func Quit(message string, args ...interface{}) { + fmt.Printf(message+"\n", args...) + runtime.Goexit() +} diff --git a/example_trx_pack_test.go b/example_trx_pack_test.go new file mode 100644 index 00000000..1a81c769 --- /dev/null +++ b/example_trx_pack_test.go @@ -0,0 +1,90 @@ +package eos_test + +import ( + "bytes" + "context" + "encoding/hex" + "fmt" + + eos "github.com/eoscanada/eos-go" +) + +func ExamplePackedTransaction_Pack() { + api := eos.New(getAPIURL()) + + // Fills in the transaction header information like ref block, delays and expiration is set to 30s + txOpts := &eos.TxOptions{} + err := txOpts.FillFromChain(context.Background(), api) + + // The actual account here instead of `eosio` must be the the account that has the public key + // associated with the private key below configure for 'active' level. + from := "eosio" + + // This is of course now a burnt key, never ever use it, it's for demo purpose and protecting your key is your responsibility + fromPrivateKey := "PVT_K1_2i6s2S8cxJw33zFuF3keAfUJjKSUJ53qVH7ac4veCuPVCpUSp" + + transferPermissionLevel, err := eos.NewPermissionLevel(from + "@active") + NoError(err, "parse permission level") + + transferQuantity, err := eos.NewAssetFromString("10.0000 EOS") + NoError(err, "parse asset") + + trx := eos.NewTransaction([]*eos.Action{ + { + Account: "eosio.token", + Name: "transfer", + Authorization: []eos.PermissionLevel{transferPermissionLevel}, + ActionData: eos.NewActionData(&eos.Transfer{ + From: eos.AccountName(from), + To: "eosio.token", + Quantity: transferQuantity, + Memo: "Example action", + }), + }, + }, txOpts) + + keyBag := eos.NewKeyBag() + err = keyBag.Add(fromPrivateKey) + NoError(err, "add key to bag") + + keyBagKeys, err := keyBag.AvailableKeys(context.Background()) + NoError(err, "key bag available keys") + Ensure(len(keyBagKeys) == 1, "expected a single available key") + + mainnetChainID := decodeChainID("aca376f206b8fc25a6ed44dbdc66547c36c6c33e3a119ffbeaef943642f0e906") + signerKey := keyBagKeys[0] + + signedTrx, err := keyBag.Sign(context.Background(), eos.NewSignedTransaction(trx), mainnetChainID, signerKey) + NoError(err, "sign transaction") + + packedTrx, err := signedTrx.Pack(eos.CompressionNone) + NoError(err, "pack transaction") + + trxID, err := packedTrx.ID() + NoError(err, "transaction id") + + fmt.Printf("Encode transaction: %s\n", encode(trx)) + fmt.Println() + + fmt.Printf("Encode signed transaction: %s\n", encode(signedTrx)) + fmt.Println() + + fmt.Printf("Encode packed and signed transaction ID %s: %s\n", trxID, encode(packedTrx)) + fmt.Println() +} + +func encode(v interface{}) string { + buffer := bytes.NewBuffer(nil) + err := eos.NewEncoder(buffer).Encode(v) + NoError(err, "encode %T", v) + + return hex.EncodeToString(buffer.Bytes()) +} + +func decodeChainID(in string) eos.Checksum256 { + data, err := hex.DecodeString(in) + NoError(err, "chain ID %q is not a valid checksum256 value", in) + Ensure(len(data) == 32, "invalid checksum256, must have 32 bytes got %d", len(data)) + + return data +} diff --git a/go.mod b/go.mod index 9952cd5c..2bc1d591 100644 --- a/go.mod +++ b/go.mod @@ -9,4 +9,5 @@ require ( github.com/tidwall/gjson v1.6.5 go.uber.org/zap v1.14.0 golang.org/x/crypto v0.0.0-20200406173513-056763e48d71 + golang.org/x/sys v0.0.0-20220627191245-f75cf1eec38b // indirect ) diff --git a/go.sum b/go.sum index 24e757f1..4c90eacf 100644 --- a/go.sum +++ b/go.sum @@ -134,6 +134,8 @@ golang.org/x/sys v0.0.0-20190606165138-5da285871e9c/go.mod h1:h1NjWce9XRLGQEsW7w golang.org/x/sys v0.0.0-20190624142023-c5567b49c5d0/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190804053845-51ab0e2deafa h1:KIDDMLT1O0Nr7TSxp8xM5tJcdn8tgyAONntO829og1M= golang.org/x/sys v0.0.0-20190804053845-51ab0e2deafa/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20220627191245-f75cf1eec38b h1:2n253B2r0pYSmEV+UNCQoPfU/FiaizQEK5Gu4Bq4JE8= +golang.org/x/sys v0.0.0-20220627191245-f75cf1eec38b/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.1-0.20180807135948-17ff2d5776d2/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk= From 8f2e8cd3a3790e597682d7f57c363d1042baefcd Mon Sep 17 00:00:00 2001 From: openventures <89419671+openventures@users.noreply.github.com> Date: Wed, 14 Sep 2022 17:15:19 +0200 Subject: [PATCH 23/41] Add AsTime() helpers to TimePoint and TimePointSec (#179) --- CHANGELOG.md | 1 + types.go | 11 ++++++++++ types_test.go | 58 +++++++++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 70 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 6b85a50d..db1d3aba 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -6,6 +6,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Unreleased * Added `action_trace_v1` field +* Added `AsTime` helper functions to convert `TimePoint` and `TimePointSec` to `time.Time` #### Breaking Changes diff --git a/types.go b/types.go index 221d0fec..8ec2dbbd 100644 --- a/types.go +++ b/types.go @@ -921,6 +921,12 @@ func (f *TimePoint) UnmarshalJSON(data []byte) error { return nil } +// AsTime returns the TimePoint as time.Time in UTC +func (f TimePoint) AsTime() time.Time { + // copied from time.UnixMicro, the latter was added in 1.17 + return time.Unix(int64(f)/1e6, (int64(f)%1e6)*1e3).UTC() +} + // TimePointSec represents the number of seconds since EPOCH (Jan 1st 1970) type TimePointSec uint32 @@ -947,6 +953,11 @@ func (f *TimePointSec) UnmarshalJSON(data []byte) error { return nil } +// AsTime returns the TimePointSec as time.Time in UTC +func (f TimePointSec) AsTime() time.Time { + return time.Unix(int64(f), 0).UTC() +} + type JSONFloat64 = Float64 type Float64 float64 diff --git a/types_test.go b/types_test.go index 8bb2bad5..8bcdbbcd 100644 --- a/types_test.go +++ b/types_test.go @@ -921,3 +921,61 @@ func TestBlob(t *testing.T) { assert.Empty(tt, data) }) } + +func TestTimePoint_AsTime(t *testing.T) { + tests := []struct { + name string + f string + tp TimePoint + want time.Time + }{ + { + name: "converts timestamp to the correct time", + f: "\"2022-06-30T09:46:14.500\"", + want: time.Date(2022, time.June, 30, 9, 46, 14, 500000000, time.UTC), + }, + { + name: "converts zero value to correct time", + want: time.Unix(0, 0).UTC(), + }, + } + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + if len(tt.f) > 0 { + err := tt.tp.UnmarshalJSON([]byte(tt.f)) + require.NoError(t, err) + } + + assert.Equalf(t, tt.want, tt.tp.AsTime(), "AsTime()") + }) + } +} + +func TestTimePointSec_AsTime(t *testing.T) { + tests := []struct { + name string + f string + tp TimePointSec + want time.Time + }{ + { + name: "converts timestamp to the correct time", + f: "\"2022-07-01T06:40:10\"", + want: time.Date(2022, time.July, 1, 6, 40, 10, 0, time.UTC), + }, + { + name: "converts zero value to correct time", + want: time.Unix(0, 0).UTC(), + }, + } + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + if len(tt.f) > 0 { + err := tt.tp.UnmarshalJSON([]byte(tt.f)) + require.NoError(t, err) + } + + assert.Equalf(t, tt.want, tt.tp.AsTime(), "AsTime()") + }) + } +} From 84cbd8eb764c409d8bb1110124d099b3e071311a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Frederik=20Sch=C3=B6ll?= Date: Wed, 5 Oct 2022 18:31:00 +0200 Subject: [PATCH 24/41] Added support for decoding action results (#186) * add suport for action results * add abidecoder tests for decoding action results * revert breaking ship type * add changelog entry * fix abi struct * add test for abi v1.2 serialization * fix field ordering * remove omitempty tags temporarily, comment out byte removal * add omitempty tags again, update test data * disable tests for eosio abi versions 1.0 and 1.1 --- CHANGELOG.md | 1 + abi.go | 15 ++++++++ abi_test.go | 43 +++++++++++++++++++++- abidecoder.go | 17 ++++++++- abidecoder_test.go | 92 ++++++++++++++++++++++++++++++++++++++++++++++ types.go | 14 ++++--- 6 files changed, 174 insertions(+), 8 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index db1d3aba..2ef0ea25 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,6 +7,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 * Added `action_trace_v1` field * Added `AsTime` helper functions to convert `TimePoint` and `TimePointSec` to `time.Time` +* Added support for decoding action results #### Breaking Changes diff --git a/abi.go b/abi.go index a3907376..382deef0 100644 --- a/abi.go +++ b/abi.go @@ -19,6 +19,7 @@ type ABI struct { ErrorMessages []ABIErrorMessage `json:"error_messages,omitempty"` Extensions []*Extension `json:"abi_extensions,omitempty"` Variants []VariantDef `json:"variants,omitempty" eos:"binary_extension"` + ActionResults []ActionResultDef `json:"action_results,omitempty" eos:"binary_extension"` } func NewABI(r io.Reader) (*ABI, error) { @@ -72,6 +73,15 @@ func (a *ABI) VariantForName(name string) *VariantDef { return nil } +func (a *ABI) ActionResultForName(name ActionName) *ActionResultDef { + for _, s := range a.ActionResults { + if s.Name == name { + return &s + } + } + return nil +} + func (a *ABI) TypeNameForNewTypeName(typeName string) (resolvedTypeName string, isAlias bool) { for _, t := range a.Types { if t.NewTypeName == typeName { @@ -128,3 +138,8 @@ type ABIErrorMessage struct { Code Uint64 `json:"error_code"` Message string `json:"error_msg"` } + +type ActionResultDef struct { + Name ActionName `json:"name"` + ResultType string `json:"result_type"` +} diff --git a/abi_test.go b/abi_test.go index 9f3a1667..9a863a90 100644 --- a/abi_test.go +++ b/abi_test.go @@ -10,13 +10,17 @@ import ( "github.com/stretchr/testify/require" ) +/* var systemABIGeneratedV1_0 = "0e656f73696f3a3a6162692f312e30050c6163636f756e745f6e616d65046e616d650f7065726d697373696f6e5f6e616d65046e616d650b616374696f6e5f6e616d65046e616d65137472616e73616374696f6e5f69645f747970650b636865636b73756d3235360b7765696768745f747970650675696e74313631107065726d697373696f6e5f6c6576656c0002056163746f720c6163636f756e745f6e616d650a7065726d697373696f6e0f7065726d697373696f6e5f6e616d650a6b65795f7765696768740002036b65790a7075626c69635f6b6579067765696768740b7765696768745f74797065076269646e616d650003066269646465720c6163636f756e745f6e616d65076e65776e616d650c6163636f756e745f6e616d650362696405617373657409626964726566756e640002066269646465720c6163636f756e745f6e616d65076e65776e616d650c6163636f756e745f6e616d65177065726d697373696f6e5f6c6576656c5f77656967687400020a7065726d697373696f6e107065726d697373696f6e5f6c6576656c067765696768740b7765696768745f747970650b776169745f776569676874000208776169745f7365630675696e743332067765696768740b7765696768745f7479706509617574686f726974790004097468726573686f6c640675696e743332046b6579730c6b65795f7765696768745b5d086163636f756e7473197065726d697373696f6e5f6c6576656c5f7765696768745b5d0577616974730d776169745f7765696768745b5d0a6e65776163636f756e7400040763726561746f720c6163636f756e745f6e616d65046e616d650c6163636f756e745f6e616d65056f776e657209617574686f726974790661637469766509617574686f7269747907736574636f64650004076163636f756e740c6163636f756e745f6e616d6506766d747970650575696e743809766d76657273696f6e0575696e743804636f6465056279746573067365746162690002076163636f756e740c6163636f756e745f6e616d65036162690562797465730a757064617465617574680004076163636f756e740c6163636f756e745f6e616d650a7065726d697373696f6e0f7065726d697373696f6e5f6e616d6506706172656e740f7065726d697373696f6e5f6e616d65046175746809617574686f726974790a64656c657465617574680002076163636f756e740c6163636f756e745f6e616d650a7065726d697373696f6e0f7065726d697373696f6e5f6e616d65086c696e6b617574680004076163636f756e740c6163636f756e745f6e616d6504636f64650c6163636f756e745f6e616d6504747970650b616374696f6e5f6e616d650b726571756972656d656e740f7065726d697373696f6e5f6e616d650a756e6c696e6b617574680003076163636f756e740c6163636f756e745f6e616d6504636f64650c6163636f756e745f6e616d6504747970650b616374696f6e5f6e616d650b63616e63656c64656c617900020e63616e63656c696e675f61757468107065726d697373696f6e5f6c6576656c067472785f6964137472616e73616374696f6e5f69645f74797065076f6e6572726f7200020973656e6465725f69640775696e743132380873656e745f7472780562797465730b62757972616d627974657300030570617965720c6163636f756e745f6e616d650872656365697665720c6163636f756e745f6e616d650562797465730675696e7433320773656c6c72616d0002076163636f756e740c6163636f756e745f6e616d650562797465730675696e7436340662757972616d00030570617965720c6163636f756e745f6e616d650872656365697665720c6163636f756e745f6e616d65057175616e740561737365740a64656c6567617465627700050466726f6d0c6163636f756e745f6e616d650872656365697665720c6163636f756e745f6e616d65127374616b655f6e65745f7175616e74697479056173736574127374616b655f6370755f7175616e74697479056173736574087472616e7366657204626f6f6c0c756e64656c6567617465627700040466726f6d0c6163636f756e745f6e616d650872656365697665720c6163636f756e745f6e616d6514756e7374616b655f6e65745f7175616e7469747905617373657414756e7374616b655f6370755f7175616e7469747905617373657406726566756e640001056f776e65720c6163636f756e745f6e616d651364656c6567617465645f62616e64776964746800040466726f6d0c6163636f756e745f6e616d6502746f0c6163636f756e745f6e616d650a6e65745f7765696768740561737365740a6370755f7765696768740561737365740e757365725f7265736f75726365730004056f776e65720c6163636f756e745f6e616d650a6e65745f7765696768740561737365740a6370755f7765696768740561737365740972616d5f62797465730675696e7436340f746f74616c5f7265736f75726365730004056f776e65720c6163636f756e745f6e616d650a6e65745f7765696768740561737365740a6370755f7765696768740561737365740972616d5f62797465730675696e7436340e726566756e645f726571756573740004056f776e65720c6163636f756e745f6e616d650c726571756573745f74696d650e74696d655f706f696e745f7365630a6e65745f616d6f756e740561737365740a6370755f616d6f756e7405617373657415626c6f636b636861696e5f706172616d65746572730011136d61785f626c6f636b5f6e65745f75736167650675696e7436341a7461726765745f626c6f636b5f6e65745f75736167655f7063740675696e743332196d61785f7472616e73616374696f6e5f6e65745f75736167650675696e7433321e626173655f7065725f7472616e73616374696f6e5f6e65745f75736167650675696e743332106e65745f75736167655f6c65657761790675696e74333223636f6e746578745f667265655f646973636f756e745f6e65745f75736167655f6e756d0675696e74333223636f6e746578745f667265655f646973636f756e745f6e65745f75736167655f64656e0675696e743332136d61785f626c6f636b5f6370755f75736167650675696e7433321a7461726765745f626c6f636b5f6370755f75736167655f7063740675696e743332196d61785f7472616e73616374696f6e5f6370755f75736167650675696e743332196d696e5f7472616e73616374696f6e5f6370755f75736167650675696e743332186d61785f7472616e73616374696f6e5f6c69666574696d650675696e7433321e64656665727265645f7472785f65787069726174696f6e5f77696e646f770675696e743332156d61785f7472616e73616374696f6e5f64656c61790675696e743332166d61785f696e6c696e655f616374696f6e5f73697a650675696e743332176d61785f696e6c696e655f616374696f6e5f64657074680675696e743136136d61785f617574686f726974795f64657074680675696e74313613656f73696f5f676c6f62616c5f7374617465320005116e65775f72616d5f7065725f626c6f636b0675696e743136116c6173745f72616d5f696e63726561736514626c6f636b5f74696d657374616d705f747970650e6c6173745f626c6f636b5f6e756d14626c6f636b5f74696d657374616d705f7479706508726573657276656407666c6f61743634087265766973696f6e0575696e743812656f73696f5f676c6f62616c5f737461746515626c6f636b636861696e5f706172616d65746572730d0c6d61785f72616d5f73697a650675696e74363418746f74616c5f72616d5f62797465735f72657365727665640675696e7436340f746f74616c5f72616d5f7374616b6505696e7436341d6c6173745f70726f64756365725f7363686564756c655f75706461746514626c6f636b5f74696d657374616d705f74797065186c6173745f706572766f74655f6275636b65745f66696c6c0675696e7436340e706572766f74655f6275636b657405696e7436340f706572626c6f636b5f6275636b657405696e74363413746f74616c5f756e706169645f626c6f636b730675696e74333215746f74616c5f6163746976617465645f7374616b6505696e7436341b7468726573685f6163746976617465645f7374616b655f74696d650675696e7436341b6c6173745f70726f64756365725f7363686564756c655f73697a650675696e7431361a746f74616c5f70726f64756365725f766f74655f77656967687407666c6f617436340f6c6173745f6e616d655f636c6f736514626c6f636b5f74696d657374616d705f747970650d70726f64756365725f696e666f0008056f776e65720c6163636f756e745f6e616d650b746f74616c5f766f74657307666c6f617436340c70726f64756365725f6b65790a7075626c69635f6b65790969735f61637469766504626f6f6c0375726c06737472696e670d756e706169645f626c6f636b730675696e7433320f6c6173745f636c61696d5f74696d650675696e743634086c6f636174696f6e0675696e7431360b72656770726f647563657200040870726f64756365720c6163636f756e745f6e616d650c70726f64756365725f6b65790a7075626c69635f6b65790375726c06737472696e67086c6f636174696f6e0675696e74313609756e72656770726f6400010870726f64756365720c6163636f756e745f6e616d650673657472616d00010c6d61785f72616d5f73697a650675696e7436340a73657472616d7261746500010f62797465735f7065725f626c6f636b0675696e7431360872656770726f787900020570726f78790c6163636f756e745f6e616d6507697370726f787904626f6f6c0c766f746570726f6475636572000305766f7465720c6163636f756e745f6e616d650570726f78790c6163636f756e745f6e616d650970726f6475636572730e6163636f756e745f6e616d655b5d0a766f7465725f696e666f0007056f776e65720c6163636f756e745f6e616d650570726f78790c6163636f756e745f6e616d650970726f6475636572730e6163636f756e745f6e616d655b5d067374616b656405696e743634106c6173745f766f74655f77656967687407666c6f617436341370726f786965645f766f74655f77656967687407666c6f617436340869735f70726f787904626f6f6c0c636c61696d726577617264730001056f776e65720c6163636f756e745f6e616d6507736574707269760002076163636f756e740c6163636f756e745f6e616d650769735f7072697604696e74380b726d7670726f647563657200010870726f64756365720c6163636f756e745f6e616d65127365745f6163636f756e745f6c696d6974730004076163636f756e740c6163636f756e745f6e616d650972616d5f627974657305696e7436340a6e65745f77656967687405696e7436340a6370755f77656967687405696e743634117365745f676c6f62616c5f6c696d6974730001136370755f757365635f7065725f706572696f6405696e7436340c70726f64756365725f6b657900020d70726f64756365725f6e616d650c6163636f756e745f6e616d6511626c6f636b5f7369676e696e675f6b65790a7075626c69635f6b65790d7365745f70726f6475636572730001087363686564756c650e70726f64756365725f6b65795b5d0c726571756972655f6175746800010466726f6d0c6163636f756e745f6e616d6509736574706172616d73000106706172616d7315626c6f636b636861696e5f706172616d657465727309636f6e6e6563746f7200020762616c616e63650561737365740677656967687407666c6f617436340e65786368616e67655f7374617465000306737570706c79056173736574046261736509636f6e6e6563746f720571756f746509636f6e6e6563746f720c6e616d656269645f696e666f0004076e65776e616d650c6163636f756e745f6e616d650b686967685f6269646465720c6163636f756e745f6e616d6508686967685f62696405696e7436340d6c6173745f6269645f74696d650675696e7436341f00409e9a2264b89a0a6e65776163636f756e740000000040258ab2c207736574636f64650000000000b863b2c206736574616269000040cbdaa86c52d50a75706461746561757468000040cbdaa8aca24a0a64656c65746561757468000000002d6b03a78b086c696e6b61757468000040cbdac0e9e2d40a756e6c696e6b617574680000bc892a4585a6410b63616e63656c64656c617900000000e0d27bd5a4076f6e6572726f720000b0cafe4873bd3e0b62757972616d627974657300000000004873bd3e0662757972616d00000000409a1ba3c20773656c6c72616d0000003f2a1ba6a24a0a64656c6567617465627700c08fca86a9a8d2d40c756e64656c656761746562770000000000a4a997ba06726566756e640000ae423ad15b99ba0b72656770726f647563657200000000004873b3c20673657472616d000080cae64a73b3c20a73657472616d72617465615365747320746865206e756d626572206f66206e6577206279746573206f662072616d20746f206372656174652070657220626c6f636b20616e6420726573796e63732062616e636f72206261736520636f6e6e6563746f722062616c616e6365000000404933933b076269646e616d6500000048532f75933b09626964726566756e6400000048f456a6eed409756e72656770726f6400000000bed35b99ba0872656770726f7879007015d289deaa32dd0c766f746570726f64756365720080d3355c5de94c440c636c61696d726577617264730000000060bb5bb3c207736574707269760000ae423ad15bb7bc0b726d7670726f6475636572000000ce4eba68b2c2127365745f6163636f756e745f6c696d697473000000ce4ebac8b2c2117365745f676c6f62616c5f6c696d6974730000000038d15bb3c20d7365745f70726f64756365727300000000a0656dacba0c726571756972655f61757468000000c0d25c53b3c209736574706172616d7300090000c057219de8ad0369363401056f776e6572010675696e7436340d70726f64756365725f696e666f000000004473686403693634000012656f73696f5f676c6f62616c5f7374617465000000404473686403693634000013656f73696f5f676c6f62616c5f73746174653200000000e0ab32dd0369363401056f776e6572010c6163636f756e745f6e616d650a766f7465725f696e666f00000000ab7b15d60369363401056f776e6572010675696e7436340e757365725f7265736f7572636573000000204d73a24a036936340102746f010675696e7436341364656c6567617465645f62616e6477696474680000c80a5e23a5b9036936340106737570706c79010675696e7436340e65786368616e67655f737461746500000000a7a997ba0369363401056f776e6572010675696e7436340e726566756e645f7265717565737400000038b9a3a4990369363401076e65776e616d65010c6163636f756e745f6e616d650c6e616d656269645f696e666f010c636f6e737469747574696f6e9a295468697320436f6e737469747574696f6e2069732061206d756c74692d706172747920636f6e747261637420656e746572656420696e746f20627920746865204d656d6265727320627920766972747565206f6620746865697220757365206f66207468697320626c6f636b636861696e2e0a0a232041727469636c652049202d204e6f20496e6974696174696f6e206f662056696f6c656e63650a4d656d62657273207368616c6c206e6f7420696e6974696174652076696f6c656e6365206f722074686520746872656174206f662076696f6c656e636520616761696e737420616e6f74686572204d656d6265722e204c617766756c2070726f7365637574696f6e206f66206372696d657320776974682074686520676f616c206f662070726573657276696e67206c6966652c206c69626572747920616e642070726f706572747920646f6573206e6f7420636f6e7374697475746520696e6974696174696f6e206f662076696f6c656e63652e0a0a232041727469636c65204949202d204e6f205065726a7572790a4d656d62657273207368616c6c206265206c6961626c6520666f72206c6f73736573206361757365642062792066616c7365206f72206d69736c656164696e67206174746573746174696f6e7320616e64207368616c6c20666f726665697420616e792070726f666974206761696e656420746865726562792e0a0a232041727469636c6520494949202d205269676874730a546865204d656d62657273206772616e7420746865207269676874206f6620636f6e747261637420616e64206f6620707269766174652070726f706572747920746f2065616368206f746865722c207468657265666f7265206e6f2070726f7065727479207368616c6c206368616e67652068616e64732065786365707420776974682074686520636f6e73656e74206f6620746865206f776e65722c20627920612076616c69642041726269747261746f72753230313973206f726465722c206f722076696120636f6d6d756e697479207265666572656e64756d2e205468697320436f6e737469747574696f6e2063726561746573206e6f20706f7369746976652072696768747320666f72206f72206265747765656e20616e79204d656d626572732e0a0a232041727469636c65204956202d204e6f20566f746520427579696e670a4e6f204d656d626572207368616c6c206f66666572206e6f722061636365707420616e797468696e67206f662076616c756520696e2065786368616e676520666f72206120766f7465206f6620616e7920747970652c206e6f72207368616c6c20616e79204d656d62657220756e64756c7920696e666c75656e63652074686520766f7465206f6620616e6f746865722e0a0a232041727469636c652056202d204e6f204669647563696172790a4e6f204d656d626572206e6f7220454f5320746f6b656e20686f6c646572207368616c6c20686176652066696475636961727920726573706f6e736962696c69747920746f20737570706f7274207468652076616c7565206f662074686520454f5320746f6b656e2e20546865204d656d6265727320646f206e6f7420617574686f72697a6520616e796f6e6520746f20686f6c64206173736574732c20626f72726f772c206e6f7220636f6e7472616374206f6e20626568616c66206f6620454f5320746f6b656e20686f6c6465727320636f6c6c6563746976656c792e205468697320626c6f636b636861696e20686173206e6f206f776e6572732c206d616e6167657273206f722066696475636961726965733b207468657265666f72652c206e6f204d656d626572207368616c6c20686176652062656e6566696369616c20696e74657265737420696e206d6f7265207468616e20313025206f662074686520454f5320746f6b656e20737570706c792e0a0a232041727469636c65205649202d205265737469747574696f6e0a45616368204d656d6265722061677265657320746861742070656e616c7469657320666f7220627265616368206f6620636f6e7472616374206d617920696e636c7564652c2062757420617265206e6f74206c696d6974656420746f2c2066696e65732c206c6f7373206f66206163636f756e742c20616e64206f74686572207265737469747574696f6e2e0a0a232041727469636c6520564949202d204f70656e20536f757263650a45616368204d656d6265722077686f206d616b657320617661696c61626c65206120736d61727420636f6e7472616374206f6e207468697320626c6f636b636861696e207368616c6c206265206120446576656c6f7065722e204561636820446576656c6f706572207368616c6c206f6666657220746865697220736d61727420636f6e747261637473207669612061206672656520616e64206f70656e20736f75726365206c6963656e73652c20616e64206561636820736d61727420636f6e7472616374207368616c6c20626520646f63756d656e746564207769746820612052696361726469616e20436f6e74726163742073746174696e672074686520696e74656e74206f6620616c6c207061727469657320616e64206e616d696e6720746865204172626974726174696f6e20466f72756d20746861742077696c6c207265736f6c76652064697370757465732061726973696e672066726f6d207468617420636f6e74726163742e0a0a232041727469636c652056494949202d204c616e67756167650a4d756c74692d6c696e6775616c20636f6e747261637473206d7573742073706563696679206f6e65207072657661696c696e67206c616e677561676520696e2063617365206f66206469737075746520616e642074686520617574686f72206f6620616e79207472616e736c6174696f6e207368616c6c206265206c6961626c6520666f72206c6f737365732064756520746f2074686569722066616c73652c206d69736c656164696e672c206f7220616d626967756f7573206174746573746564207472616e736c6174696f6e732e0a0a232041727469636c65204958202d2044697370757465205265736f6c7574696f6e0a416c6c2064697370757465732061726973696e67206f7574206f66206f7220696e20636f6e6e656374696f6e2077697468207468697320436f6e737469747574696f6e207368616c6c2062652066696e616c6c7920736574746c656420756e646572207468652052756c6573206f662044697370757465205265736f6c7574696f6e206f662074686520454f5320436f7265204172626974726174696f6e20466f72756d206279206f6e65206f72206d6f72652061726269747261746f7273206170706f696e74656420696e206163636f7264616e636520776974682074686520736169642052756c65732e0a0a232041727469636c652058202d2043686f696365206f66204c61770a43686f696365206f66206c617720666f72206469737075746573207368616c6c2062652c20696e206f72646572206f6620707265636564656e63652c207468697320436f6e737469747574696f6e20616e6420746865204d6178696d73206f66204571756974792e0a0a232041727469636c65205849202d20416d656e64696e670a5468697320436f6e737469747574696f6e20616e6420697473207375626f7264696e61746520646f63756d656e7473207368616c6c206e6f7420626520616d656e64656420657863657074206279206120766f7465206f662074686520746f6b656e20686f6c646572732077697468206e6f206c657373207468616e2031352520766f74652070617274696369706174696f6e20616d6f6e6720746f6b656e7320616e64206e6f206665776572207468616e20313025206d6f726520596573207468616e204e6f20766f7465732c207375737461696e656420666f7220333020636f6e74696e756f757320646179732077697468696e2061203132302064617920706572696f642e0a0a232041727469636c6520584949202d205075626c697368696e670a4d656d62657273206d6179206f6e6c79207075626c69736820696e666f726d6174696f6e20746f2074686520426c6f636b636861696e20746861742069732077697468696e20746865697220726967687420746f207075626c6973682e20467572746865726d6f72652c204d656d6265727320766f6c756e746172696c7920636f6e73656e7420666f7220616c6c204d656d6265727320746f207065726d616e656e746c7920616e642069727265766f6361626c792072657461696e206120636f70792c20616e616c797a652c20616e64206469737472696275746520616c6c2062726f616463617374207472616e73616374696f6e7320616e64206465726976617469766520696e666f726d6174696f6e2e0a0a232041727469636c652058494949202d20496e666f726d656420436f6e73656e740a416c6c20736572766963652070726f7669646572732077686f2070726f6475636520746f6f6c7320746f20666163696c69746174652074686520636f6e737472756374696f6e20616e64207369676e696e67206f66207472616e73616374696f6e73206f6e20626568616c66206f66206f74686572204d656d62657273207368616c6c2070726573656e7420746f2073616964206f74686572204d656d62657273207468652066756c6c2052696361726469616e20636f6e7472616374207465726d73206f66207468697320436f6e737469747574696f6e20616e64206f74686572207265666572656e63656420636f6e7472616374732e20536572766963652070726f766964657273207368616c6c206265206c6961626c6520666f72206c6f7373657320726573756c74696e672066726f6d206661696c75726520746f20646973636c6f7365207468652066756c6c2052696361726469616e20636f6e7472616374207465726d7320746f2075736572732e0a0a232041727469636c6520584956202d2053657665726162696c6974790a496620616e792070617274206f66207468697320436f6e737469747574696f6e206973206465636c6172656420756e656e666f72636561626c65206f7220696e76616c69642c207468652072656d61696e6465722077696c6c20636f6e74696e756520746f2062652076616c696420616e6420656e666f72636561626c652e0a0a232041727469636c65205856202d205465726d696e6174696f6e206f662041677265656d656e740a41204d656d626572206973206175746f6d61746963616c6c792072656c65617365642066726f6d20616c6c207265766f6361626c65206f626c69676174696f6e7320756e646572207468697320436f6e737469747574696f6e203320796561727320616674657220746865206c617374207472616e73616374696f6e207369676e65642062792074686174204d656d62657220697320696e636f72706f726174656420696e746f2074686520626c6f636b636861696e2e2041667465722033207965617273206f6620696e616374697669747920616e206163636f756e74206d61792062652070757420757020666f722061756374696f6e20616e64207468652070726f636565647320646973747269627574656420746f20616c6c204d656d62657273206163636f7264696e6720746f207468652073797374656d20636f6e74726163742070726f766973696f6e73207468656e20696e2065666665637420666f722073756368207265646973747269627574696f6e2e0a0a232041727469636c6520585649202d20446576656c6f706572204c696162696c6974790a4d656d6265727320616772656520746f20686f6c6420736f66747761726520646576656c6f70657273206861726d6c65737320666f7220756e696e74656e74696f6e616c206d697374616b6573206d61646520696e207468652065787072657373696f6e206f6620636f6e747261637475616c20696e74656e742c2077686574686572206f72206e6f742073616964206d697374616b657320776572652064756520746f2061637475616c206f7220706572636569766564206e65676c6967656e63652e0a0a232041727469636c652058564949202d20436f6e73696465726174696f6e0a416c6c2072696768747320616e64206f626c69676174696f6e7320756e646572207468697320436f6e737469747574696f6e20617265206d757475616c20616e64207265636970726f63616c20616e64206f6620657175616c6c79207369676e69666963616e742076616c756520616e6420636f737420746f20616c6c20706172746965732e0a0a232041727469636c65205856494949202d20416363657074616e63650a4120636f6e7472616374206973206465656d6564206163636570746564207768656e2061206d656d626572207369676e732061207472616e73616374696f6e20776869636820696e636f72706f72617465732061205441504f532070726f6f66206f66206120626c6f636b2077686f736520696d706c69656420737461746520696e636f72706f726174657320616e20414249206f66207361696420636f6e747261637420616e642073616964207472616e73616374696f6e20697320696e636f72706f726174656420696e746f2074686520626c6f636b636861696e2e0a0a232041727469636c6520584958202d20436f756e74657270617274730a5468697320436f6e737469747574696f6e206d617920626520657865637574656420696e20616e79206e756d626572206f6620636f756e74657270617274732c2065616368206f66207768696368207768656e20657865637574656420616e642064656c697665726564207368616c6c20636f6e737469747574652061206475706c6963617465206f726967696e616c2c2062757420616c6c20636f756e746572706172747320746f676574686572207368616c6c20636f6e7374697475746520612073696e676c652061677265656d656e742e0a0a232041727469636c65205858202d20496e746572696d20436f6e737469747574696f6e0a5468697320636f6e737469747574696f6e20697320696e746572696d20616e6420697320696e74656e64656420746f2072656d61696e20696e2065666665637420756e74696c2061207065726d616e656e7420636f6e737469747574696f6e206973207772697474656e20616e6420726174696669656420696e2061207265666572656e64756d2e0a000000" var systemABIGeneratedV1_1 = "0e656f73696f3a3a6162692f312e31050c6163636f756e745f6e616d65046e616d650f7065726d697373696f6e5f6e616d65046e616d650b616374696f6e5f6e616d65046e616d65137472616e73616374696f6e5f69645f747970650b636865636b73756d3235360b7765696768745f747970650675696e74313631107065726d697373696f6e5f6c6576656c0002056163746f720c6163636f756e745f6e616d650a7065726d697373696f6e0f7065726d697373696f6e5f6e616d650a6b65795f7765696768740002036b65790a7075626c69635f6b6579067765696768740b7765696768745f74797065076269646e616d650003066269646465720c6163636f756e745f6e616d65076e65776e616d650c6163636f756e745f6e616d650362696405617373657409626964726566756e640002066269646465720c6163636f756e745f6e616d65076e65776e616d650c6163636f756e745f6e616d65177065726d697373696f6e5f6c6576656c5f77656967687400020a7065726d697373696f6e107065726d697373696f6e5f6c6576656c067765696768740b7765696768745f747970650b776169745f776569676874000208776169745f7365630675696e743332067765696768740b7765696768745f7479706509617574686f726974790004097468726573686f6c640675696e743332046b6579730c6b65795f7765696768745b5d086163636f756e7473197065726d697373696f6e5f6c6576656c5f7765696768745b5d0577616974730d776169745f7765696768745b5d0a6e65776163636f756e7400040763726561746f720c6163636f756e745f6e616d65046e616d650c6163636f756e745f6e616d65056f776e657209617574686f726974790661637469766509617574686f7269747907736574636f64650004076163636f756e740c6163636f756e745f6e616d6506766d747970650575696e743809766d76657273696f6e0575696e743804636f6465056279746573067365746162690002076163636f756e740c6163636f756e745f6e616d65036162690562797465730a757064617465617574680004076163636f756e740c6163636f756e745f6e616d650a7065726d697373696f6e0f7065726d697373696f6e5f6e616d6506706172656e740f7065726d697373696f6e5f6e616d65046175746809617574686f726974790a64656c657465617574680002076163636f756e740c6163636f756e745f6e616d650a7065726d697373696f6e0f7065726d697373696f6e5f6e616d65086c696e6b617574680004076163636f756e740c6163636f756e745f6e616d6504636f64650c6163636f756e745f6e616d6504747970650b616374696f6e5f6e616d650b726571756972656d656e740f7065726d697373696f6e5f6e616d650a756e6c696e6b617574680003076163636f756e740c6163636f756e745f6e616d6504636f64650c6163636f756e745f6e616d6504747970650b616374696f6e5f6e616d650b63616e63656c64656c617900020e63616e63656c696e675f61757468107065726d697373696f6e5f6c6576656c067472785f6964137472616e73616374696f6e5f69645f74797065076f6e6572726f7200020973656e6465725f69640775696e743132380873656e745f7472780562797465730b62757972616d627974657300030570617965720c6163636f756e745f6e616d650872656365697665720c6163636f756e745f6e616d650562797465730675696e7433320773656c6c72616d0002076163636f756e740c6163636f756e745f6e616d650562797465730675696e7436340662757972616d00030570617965720c6163636f756e745f6e616d650872656365697665720c6163636f756e745f6e616d65057175616e740561737365740a64656c6567617465627700050466726f6d0c6163636f756e745f6e616d650872656365697665720c6163636f756e745f6e616d65127374616b655f6e65745f7175616e74697479056173736574127374616b655f6370755f7175616e74697479056173736574087472616e7366657204626f6f6c0c756e64656c6567617465627700040466726f6d0c6163636f756e745f6e616d650872656365697665720c6163636f756e745f6e616d6514756e7374616b655f6e65745f7175616e7469747905617373657414756e7374616b655f6370755f7175616e7469747905617373657406726566756e640001056f776e65720c6163636f756e745f6e616d651364656c6567617465645f62616e64776964746800040466726f6d0c6163636f756e745f6e616d6502746f0c6163636f756e745f6e616d650a6e65745f7765696768740561737365740a6370755f7765696768740561737365740e757365725f7265736f75726365730004056f776e65720c6163636f756e745f6e616d650a6e65745f7765696768740561737365740a6370755f7765696768740561737365740972616d5f62797465730675696e7436340f746f74616c5f7265736f75726365730004056f776e65720c6163636f756e745f6e616d650a6e65745f7765696768740561737365740a6370755f7765696768740561737365740972616d5f62797465730675696e7436340e726566756e645f726571756573740004056f776e65720c6163636f756e745f6e616d650c726571756573745f74696d650e74696d655f706f696e745f7365630a6e65745f616d6f756e740561737365740a6370755f616d6f756e7405617373657415626c6f636b636861696e5f706172616d65746572730011136d61785f626c6f636b5f6e65745f75736167650675696e7436341a7461726765745f626c6f636b5f6e65745f75736167655f7063740675696e743332196d61785f7472616e73616374696f6e5f6e65745f75736167650675696e7433321e626173655f7065725f7472616e73616374696f6e5f6e65745f75736167650675696e743332106e65745f75736167655f6c65657761790675696e74333223636f6e746578745f667265655f646973636f756e745f6e65745f75736167655f6e756d0675696e74333223636f6e746578745f667265655f646973636f756e745f6e65745f75736167655f64656e0675696e743332136d61785f626c6f636b5f6370755f75736167650675696e7433321a7461726765745f626c6f636b5f6370755f75736167655f7063740675696e743332196d61785f7472616e73616374696f6e5f6370755f75736167650675696e743332196d696e5f7472616e73616374696f6e5f6370755f75736167650675696e743332186d61785f7472616e73616374696f6e5f6c69666574696d650675696e7433321e64656665727265645f7472785f65787069726174696f6e5f77696e646f770675696e743332156d61785f7472616e73616374696f6e5f64656c61790675696e743332166d61785f696e6c696e655f616374696f6e5f73697a650675696e743332176d61785f696e6c696e655f616374696f6e5f64657074680675696e743136136d61785f617574686f726974795f64657074680675696e74313613656f73696f5f676c6f62616c5f7374617465320005116e65775f72616d5f7065725f626c6f636b0675696e743136116c6173745f72616d5f696e63726561736514626c6f636b5f74696d657374616d705f747970650e6c6173745f626c6f636b5f6e756d14626c6f636b5f74696d657374616d705f7479706508726573657276656407666c6f61743634087265766973696f6e0575696e743812656f73696f5f676c6f62616c5f737461746515626c6f636b636861696e5f706172616d65746572730d0c6d61785f72616d5f73697a650675696e74363418746f74616c5f72616d5f62797465735f72657365727665640675696e7436340f746f74616c5f72616d5f7374616b6505696e7436341d6c6173745f70726f64756365725f7363686564756c655f75706461746514626c6f636b5f74696d657374616d705f74797065186c6173745f706572766f74655f6275636b65745f66696c6c0675696e7436340e706572766f74655f6275636b657405696e7436340f706572626c6f636b5f6275636b657405696e74363413746f74616c5f756e706169645f626c6f636b730675696e74333215746f74616c5f6163746976617465645f7374616b6505696e7436341b7468726573685f6163746976617465645f7374616b655f74696d650675696e7436341b6c6173745f70726f64756365725f7363686564756c655f73697a650675696e7431361a746f74616c5f70726f64756365725f766f74655f77656967687407666c6f617436340f6c6173745f6e616d655f636c6f736514626c6f636b5f74696d657374616d705f747970650d70726f64756365725f696e666f0008056f776e65720c6163636f756e745f6e616d650b746f74616c5f766f74657307666c6f617436340c70726f64756365725f6b65790a7075626c69635f6b65790969735f61637469766504626f6f6c0375726c06737472696e670d756e706169645f626c6f636b730675696e7433320f6c6173745f636c61696d5f74696d650675696e743634086c6f636174696f6e0675696e7431360b72656770726f647563657200040870726f64756365720c6163636f756e745f6e616d650c70726f64756365725f6b65790a7075626c69635f6b65790375726c06737472696e67086c6f636174696f6e0675696e74313609756e72656770726f6400010870726f64756365720c6163636f756e745f6e616d650673657472616d00010c6d61785f72616d5f73697a650675696e7436340a73657472616d7261746500010f62797465735f7065725f626c6f636b0675696e7431360872656770726f787900020570726f78790c6163636f756e745f6e616d6507697370726f787904626f6f6c0c766f746570726f6475636572000305766f7465720c6163636f756e745f6e616d650570726f78790c6163636f756e745f6e616d650970726f6475636572730e6163636f756e745f6e616d655b5d0a766f7465725f696e666f0007056f776e65720c6163636f756e745f6e616d650570726f78790c6163636f756e745f6e616d650970726f6475636572730e6163636f756e745f6e616d655b5d067374616b656405696e743634106c6173745f766f74655f77656967687407666c6f617436341370726f786965645f766f74655f77656967687407666c6f617436340869735f70726f787904626f6f6c0c636c61696d726577617264730001056f776e65720c6163636f756e745f6e616d6507736574707269760002076163636f756e740c6163636f756e745f6e616d650769735f7072697604696e74380b726d7670726f647563657200010870726f64756365720c6163636f756e745f6e616d65127365745f6163636f756e745f6c696d6974730004076163636f756e740c6163636f756e745f6e616d650972616d5f627974657305696e7436340a6e65745f77656967687405696e7436340a6370755f77656967687405696e743634117365745f676c6f62616c5f6c696d6974730001136370755f757365635f7065725f706572696f6405696e7436340c70726f64756365725f6b657900020d70726f64756365725f6e616d650c6163636f756e745f6e616d6511626c6f636b5f7369676e696e675f6b65790a7075626c69635f6b65790d7365745f70726f6475636572730001087363686564756c650e70726f64756365725f6b65795b5d0c726571756972655f6175746800010466726f6d0c6163636f756e745f6e616d6509736574706172616d73000106706172616d7315626c6f636b636861696e5f706172616d657465727309636f6e6e6563746f7200020762616c616e63650561737365740677656967687407666c6f617436340e65786368616e67655f7374617465000306737570706c79056173736574046261736509636f6e6e6563746f720571756f746509636f6e6e6563746f720c6e616d656269645f696e666f0004076e65776e616d650c6163636f756e745f6e616d650b686967685f6269646465720c6163636f756e745f6e616d6508686967685f62696405696e7436340d6c6173745f6269645f74696d650675696e7436341f00409e9a2264b89a0a6e65776163636f756e740000000040258ab2c207736574636f64650000000000b863b2c206736574616269000040cbdaa86c52d50a75706461746561757468000040cbdaa8aca24a0a64656c65746561757468000000002d6b03a78b086c696e6b61757468000040cbdac0e9e2d40a756e6c696e6b617574680000bc892a4585a6410b63616e63656c64656c617900000000e0d27bd5a4076f6e6572726f720000b0cafe4873bd3e0b62757972616d627974657300000000004873bd3e0662757972616d00000000409a1ba3c20773656c6c72616d0000003f2a1ba6a24a0a64656c6567617465627700c08fca86a9a8d2d40c756e64656c656761746562770000000000a4a997ba06726566756e640000ae423ad15b99ba0b72656770726f647563657200000000004873b3c20673657472616d000080cae64a73b3c20a73657472616d72617465615365747320746865206e756d626572206f66206e6577206279746573206f662072616d20746f206372656174652070657220626c6f636b20616e6420726573796e63732062616e636f72206261736520636f6e6e6563746f722062616c616e6365000000404933933b076269646e616d6500000048532f75933b09626964726566756e6400000048f456a6eed409756e72656770726f6400000000bed35b99ba0872656770726f7879007015d289deaa32dd0c766f746570726f64756365720080d3355c5de94c440c636c61696d726577617264730000000060bb5bb3c207736574707269760000ae423ad15bb7bc0b726d7670726f6475636572000000ce4eba68b2c2127365745f6163636f756e745f6c696d697473000000ce4ebac8b2c2117365745f676c6f62616c5f6c696d6974730000000038d15bb3c20d7365745f70726f64756365727300000000a0656dacba0c726571756972655f61757468000000c0d25c53b3c209736574706172616d7300090000c057219de8ad0369363401056f776e6572010675696e7436340d70726f64756365725f696e666f000000004473686403693634000012656f73696f5f676c6f62616c5f7374617465000000404473686403693634000013656f73696f5f676c6f62616c5f73746174653200000000e0ab32dd0369363401056f776e6572010c6163636f756e745f6e616d650a766f7465725f696e666f00000000ab7b15d60369363401056f776e6572010675696e7436340e757365725f7265736f7572636573000000204d73a24a036936340102746f010675696e7436341364656c6567617465645f62616e6477696474680000c80a5e23a5b9036936340106737570706c79010675696e7436340e65786368616e67655f737461746500000000a7a997ba0369363401056f776e6572010675696e7436340e726566756e645f7265717565737400000038b9a3a4990369363401076e65776e616d65010c6163636f756e745f6e616d650c6e616d656269645f696e666f010c636f6e737469747574696f6e9a295468697320436f6e737469747574696f6e2069732061206d756c74692d706172747920636f6e747261637420656e746572656420696e746f20627920746865204d656d6265727320627920766972747565206f6620746865697220757365206f66207468697320626c6f636b636861696e2e0a0a232041727469636c652049202d204e6f20496e6974696174696f6e206f662056696f6c656e63650a4d656d62657273207368616c6c206e6f7420696e6974696174652076696f6c656e6365206f722074686520746872656174206f662076696f6c656e636520616761696e737420616e6f74686572204d656d6265722e204c617766756c2070726f7365637574696f6e206f66206372696d657320776974682074686520676f616c206f662070726573657276696e67206c6966652c206c69626572747920616e642070726f706572747920646f6573206e6f7420636f6e7374697475746520696e6974696174696f6e206f662076696f6c656e63652e0a0a232041727469636c65204949202d204e6f205065726a7572790a4d656d62657273207368616c6c206265206c6961626c6520666f72206c6f73736573206361757365642062792066616c7365206f72206d69736c656164696e67206174746573746174696f6e7320616e64207368616c6c20666f726665697420616e792070726f666974206761696e656420746865726562792e0a0a232041727469636c6520494949202d205269676874730a546865204d656d62657273206772616e7420746865207269676874206f6620636f6e747261637420616e64206f6620707269766174652070726f706572747920746f2065616368206f746865722c207468657265666f7265206e6f2070726f7065727479207368616c6c206368616e67652068616e64732065786365707420776974682074686520636f6e73656e74206f6620746865206f776e65722c20627920612076616c69642041726269747261746f72753230313973206f726465722c206f722076696120636f6d6d756e697479207265666572656e64756d2e205468697320436f6e737469747574696f6e2063726561746573206e6f20706f7369746976652072696768747320666f72206f72206265747765656e20616e79204d656d626572732e0a0a232041727469636c65204956202d204e6f20566f746520427579696e670a4e6f204d656d626572207368616c6c206f66666572206e6f722061636365707420616e797468696e67206f662076616c756520696e2065786368616e676520666f72206120766f7465206f6620616e7920747970652c206e6f72207368616c6c20616e79204d656d62657220756e64756c7920696e666c75656e63652074686520766f7465206f6620616e6f746865722e0a0a232041727469636c652056202d204e6f204669647563696172790a4e6f204d656d626572206e6f7220454f5320746f6b656e20686f6c646572207368616c6c20686176652066696475636961727920726573706f6e736962696c69747920746f20737570706f7274207468652076616c7565206f662074686520454f5320746f6b656e2e20546865204d656d6265727320646f206e6f7420617574686f72697a6520616e796f6e6520746f20686f6c64206173736574732c20626f72726f772c206e6f7220636f6e7472616374206f6e20626568616c66206f6620454f5320746f6b656e20686f6c6465727320636f6c6c6563746976656c792e205468697320626c6f636b636861696e20686173206e6f206f776e6572732c206d616e6167657273206f722066696475636961726965733b207468657265666f72652c206e6f204d656d626572207368616c6c20686176652062656e6566696369616c20696e74657265737420696e206d6f7265207468616e20313025206f662074686520454f5320746f6b656e20737570706c792e0a0a232041727469636c65205649202d205265737469747574696f6e0a45616368204d656d6265722061677265657320746861742070656e616c7469657320666f7220627265616368206f6620636f6e7472616374206d617920696e636c7564652c2062757420617265206e6f74206c696d6974656420746f2c2066696e65732c206c6f7373206f66206163636f756e742c20616e64206f74686572207265737469747574696f6e2e0a0a232041727469636c6520564949202d204f70656e20536f757263650a45616368204d656d6265722077686f206d616b657320617661696c61626c65206120736d61727420636f6e7472616374206f6e207468697320626c6f636b636861696e207368616c6c206265206120446576656c6f7065722e204561636820446576656c6f706572207368616c6c206f6666657220746865697220736d61727420636f6e747261637473207669612061206672656520616e64206f70656e20736f75726365206c6963656e73652c20616e64206561636820736d61727420636f6e7472616374207368616c6c20626520646f63756d656e746564207769746820612052696361726469616e20436f6e74726163742073746174696e672074686520696e74656e74206f6620616c6c207061727469657320616e64206e616d696e6720746865204172626974726174696f6e20466f72756d20746861742077696c6c207265736f6c76652064697370757465732061726973696e672066726f6d207468617420636f6e74726163742e0a0a232041727469636c652056494949202d204c616e67756167650a4d756c74692d6c696e6775616c20636f6e747261637473206d7573742073706563696679206f6e65207072657661696c696e67206c616e677561676520696e2063617365206f66206469737075746520616e642074686520617574686f72206f6620616e79207472616e736c6174696f6e207368616c6c206265206c6961626c6520666f72206c6f737365732064756520746f2074686569722066616c73652c206d69736c656164696e672c206f7220616d626967756f7573206174746573746564207472616e736c6174696f6e732e0a0a232041727469636c65204958202d2044697370757465205265736f6c7574696f6e0a416c6c2064697370757465732061726973696e67206f7574206f66206f7220696e20636f6e6e656374696f6e2077697468207468697320436f6e737469747574696f6e207368616c6c2062652066696e616c6c7920736574746c656420756e646572207468652052756c6573206f662044697370757465205265736f6c7574696f6e206f662074686520454f5320436f7265204172626974726174696f6e20466f72756d206279206f6e65206f72206d6f72652061726269747261746f7273206170706f696e74656420696e206163636f7264616e636520776974682074686520736169642052756c65732e0a0a232041727469636c652058202d2043686f696365206f66204c61770a43686f696365206f66206c617720666f72206469737075746573207368616c6c2062652c20696e206f72646572206f6620707265636564656e63652c207468697320436f6e737469747574696f6e20616e6420746865204d6178696d73206f66204571756974792e0a0a232041727469636c65205849202d20416d656e64696e670a5468697320436f6e737469747574696f6e20616e6420697473207375626f7264696e61746520646f63756d656e7473207368616c6c206e6f7420626520616d656e64656420657863657074206279206120766f7465206f662074686520746f6b656e20686f6c646572732077697468206e6f206c657373207468616e2031352520766f74652070617274696369706174696f6e20616d6f6e6720746f6b656e7320616e64206e6f206665776572207468616e20313025206d6f726520596573207468616e204e6f20766f7465732c207375737461696e656420666f7220333020636f6e74696e756f757320646179732077697468696e2061203132302064617920706572696f642e0a0a232041727469636c6520584949202d205075626c697368696e670a4d656d62657273206d6179206f6e6c79207075626c69736820696e666f726d6174696f6e20746f2074686520426c6f636b636861696e20746861742069732077697468696e20746865697220726967687420746f207075626c6973682e20467572746865726d6f72652c204d656d6265727320766f6c756e746172696c7920636f6e73656e7420666f7220616c6c204d656d6265727320746f207065726d616e656e746c7920616e642069727265766f6361626c792072657461696e206120636f70792c20616e616c797a652c20616e64206469737472696275746520616c6c2062726f616463617374207472616e73616374696f6e7320616e64206465726976617469766520696e666f726d6174696f6e2e0a0a232041727469636c652058494949202d20496e666f726d656420436f6e73656e740a416c6c20736572766963652070726f7669646572732077686f2070726f6475636520746f6f6c7320746f20666163696c69746174652074686520636f6e737472756374696f6e20616e64207369676e696e67206f66207472616e73616374696f6e73206f6e20626568616c66206f66206f74686572204d656d62657273207368616c6c2070726573656e7420746f2073616964206f74686572204d656d62657273207468652066756c6c2052696361726469616e20636f6e7472616374207465726d73206f66207468697320436f6e737469747574696f6e20616e64206f74686572207265666572656e63656420636f6e7472616374732e20536572766963652070726f766964657273207368616c6c206265206c6961626c6520666f72206c6f7373657320726573756c74696e672066726f6d206661696c75726520746f20646973636c6f7365207468652066756c6c2052696361726469616e20636f6e7472616374207465726d7320746f2075736572732e0a0a232041727469636c6520584956202d2053657665726162696c6974790a496620616e792070617274206f66207468697320436f6e737469747574696f6e206973206465636c6172656420756e656e666f72636561626c65206f7220696e76616c69642c207468652072656d61696e6465722077696c6c20636f6e74696e756520746f2062652076616c696420616e6420656e666f72636561626c652e0a0a232041727469636c65205856202d205465726d696e6174696f6e206f662041677265656d656e740a41204d656d626572206973206175746f6d61746963616c6c792072656c65617365642066726f6d20616c6c207265766f6361626c65206f626c69676174696f6e7320756e646572207468697320436f6e737469747574696f6e203320796561727320616674657220746865206c617374207472616e73616374696f6e207369676e65642062792074686174204d656d62657220697320696e636f72706f726174656420696e746f2074686520626c6f636b636861696e2e2041667465722033207965617273206f6620696e616374697669747920616e206163636f756e74206d61792062652070757420757020666f722061756374696f6e20616e64207468652070726f636565647320646973747269627574656420746f20616c6c204d656d62657273206163636f7264696e6720746f207468652073797374656d20636f6e74726163742070726f766973696f6e73207468656e20696e2065666665637420666f722073756368207265646973747269627574696f6e2e0a0a232041727469636c6520585649202d20446576656c6f706572204c696162696c6974790a4d656d6265727320616772656520746f20686f6c6420736f66747761726520646576656c6f70657273206861726d6c65737320666f7220756e696e74656e74696f6e616c206d697374616b6573206d61646520696e207468652065787072657373696f6e206f6620636f6e747261637475616c20696e74656e742c2077686574686572206f72206e6f742073616964206d697374616b657320776572652064756520746f2061637475616c206f7220706572636569766564206e65676c6967656e63652e0a0a232041727469636c652058564949202d20436f6e73696465726174696f6e0a416c6c2072696768747320616e64206f626c69676174696f6e7320756e646572207468697320436f6e737469747574696f6e20617265206d757475616c20616e64207265636970726f63616c20616e64206f6620657175616c6c79207369676e69666963616e742076616c756520616e6420636f737420746f20616c6c20706172746965732e0a0a232041727469636c65205856494949202d20416363657074616e63650a4120636f6e7472616374206973206465656d6564206163636570746564207768656e2061206d656d626572207369676e732061207472616e73616374696f6e20776869636820696e636f72706f72617465732061205441504f532070726f6f66206f66206120626c6f636b2077686f736520696d706c69656420737461746520696e636f72706f726174657320616e20414249206f66207361696420636f6e747261637420616e642073616964207472616e73616374696f6e20697320696e636f72706f726174656420696e746f2074686520626c6f636b636861696e2e0a0a232041727469636c6520584958202d20436f756e74657270617274730a5468697320436f6e737469747574696f6e206d617920626520657865637574656420696e20616e79206e756d626572206f6620636f756e74657270617274732c2065616368206f66207768696368207768656e20657865637574656420616e642064656c697665726564207368616c6c20636f6e737469747574652061206475706c6963617465206f726967696e616c2c2062757420616c6c20636f756e746572706172747320746f676574686572207368616c6c20636f6e7374697475746520612073696e676c652061677265656d656e742e0a0a232041727469636c65205858202d20496e746572696d20436f6e737469747574696f6e0a5468697320636f6e737469747574696f6e20697320696e746572696d20616e6420697320696e74656e64656420746f2072656d61696e20696e2065666665637420756e74696c2061207065726d616e656e7420636f6e737469747574696f6e206973207772697474656e20616e6420726174696669656420696e2061207265666572656e64756d2e0a000000" +*/ +var systemABIGeneratedV1_2 = "0e656f73696f3a3a6162692f312e32050c6163636f756e745f6e616d65046e616d650f7065726d697373696f6e5f6e616d65046e616d650b616374696f6e5f6e616d65046e616d65137472616e73616374696f6e5f69645f747970650b636865636b73756d3235360b7765696768745f747970650675696e74313631107065726d697373696f6e5f6c6576656c0002056163746f720c6163636f756e745f6e616d650a7065726d697373696f6e0f7065726d697373696f6e5f6e616d650a6b65795f7765696768740002036b65790a7075626c69635f6b6579067765696768740b7765696768745f74797065076269646e616d650003066269646465720c6163636f756e745f6e616d65076e65776e616d650c6163636f756e745f6e616d650362696405617373657409626964726566756e640002066269646465720c6163636f756e745f6e616d65076e65776e616d650c6163636f756e745f6e616d65177065726d697373696f6e5f6c6576656c5f77656967687400020a7065726d697373696f6e107065726d697373696f6e5f6c6576656c067765696768740b7765696768745f747970650b776169745f776569676874000208776169745f7365630675696e743332067765696768740b7765696768745f7479706509617574686f726974790004097468726573686f6c640675696e743332046b6579730c6b65795f7765696768745b5d086163636f756e7473197065726d697373696f6e5f6c6576656c5f7765696768745b5d0577616974730d776169745f7765696768745b5d0a6e65776163636f756e7400040763726561746f720c6163636f756e745f6e616d65046e616d650c6163636f756e745f6e616d65056f776e657209617574686f726974790661637469766509617574686f7269747907736574636f64650004076163636f756e740c6163636f756e745f6e616d6506766d747970650575696e743809766d76657273696f6e0575696e743804636f6465056279746573067365746162690002076163636f756e740c6163636f756e745f6e616d65036162690562797465730a757064617465617574680004076163636f756e740c6163636f756e745f6e616d650a7065726d697373696f6e0f7065726d697373696f6e5f6e616d6506706172656e740f7065726d697373696f6e5f6e616d65046175746809617574686f726974790a64656c657465617574680002076163636f756e740c6163636f756e745f6e616d650a7065726d697373696f6e0f7065726d697373696f6e5f6e616d65086c696e6b617574680004076163636f756e740c6163636f756e745f6e616d6504636f64650c6163636f756e745f6e616d6504747970650b616374696f6e5f6e616d650b726571756972656d656e740f7065726d697373696f6e5f6e616d650a756e6c696e6b617574680003076163636f756e740c6163636f756e745f6e616d6504636f64650c6163636f756e745f6e616d6504747970650b616374696f6e5f6e616d650b63616e63656c64656c617900020e63616e63656c696e675f61757468107065726d697373696f6e5f6c6576656c067472785f6964137472616e73616374696f6e5f69645f74797065076f6e6572726f7200020973656e6465725f69640775696e743132380873656e745f7472780562797465730b62757972616d627974657300030570617965720c6163636f756e745f6e616d650872656365697665720c6163636f756e745f6e616d650562797465730675696e7433320773656c6c72616d0002076163636f756e740c6163636f756e745f6e616d650562797465730675696e7436340662757972616d00030570617965720c6163636f756e745f6e616d650872656365697665720c6163636f756e745f6e616d65057175616e740561737365740a64656c6567617465627700050466726f6d0c6163636f756e745f6e616d650872656365697665720c6163636f756e745f6e616d65127374616b655f6e65745f7175616e74697479056173736574127374616b655f6370755f7175616e74697479056173736574087472616e7366657204626f6f6c0c756e64656c6567617465627700040466726f6d0c6163636f756e745f6e616d650872656365697665720c6163636f756e745f6e616d6514756e7374616b655f6e65745f7175616e7469747905617373657414756e7374616b655f6370755f7175616e7469747905617373657406726566756e640001056f776e65720c6163636f756e745f6e616d651364656c6567617465645f62616e64776964746800040466726f6d0c6163636f756e745f6e616d6502746f0c6163636f756e745f6e616d650a6e65745f7765696768740561737365740a6370755f7765696768740561737365740e757365725f7265736f75726365730004056f776e65720c6163636f756e745f6e616d650a6e65745f7765696768740561737365740a6370755f7765696768740561737365740972616d5f62797465730675696e7436340f746f74616c5f7265736f75726365730004056f776e65720c6163636f756e745f6e616d650a6e65745f7765696768740561737365740a6370755f7765696768740561737365740972616d5f62797465730675696e7436340e726566756e645f726571756573740004056f776e65720c6163636f756e745f6e616d650c726571756573745f74696d650e74696d655f706f696e745f7365630a6e65745f616d6f756e740561737365740a6370755f616d6f756e7405617373657415626c6f636b636861696e5f706172616d65746572730011136d61785f626c6f636b5f6e65745f75736167650675696e7436341a7461726765745f626c6f636b5f6e65745f75736167655f7063740675696e743332196d61785f7472616e73616374696f6e5f6e65745f75736167650675696e7433321e626173655f7065725f7472616e73616374696f6e5f6e65745f75736167650675696e743332106e65745f75736167655f6c65657761790675696e74333223636f6e746578745f667265655f646973636f756e745f6e65745f75736167655f6e756d0675696e74333223636f6e746578745f667265655f646973636f756e745f6e65745f75736167655f64656e0675696e743332136d61785f626c6f636b5f6370755f75736167650675696e7433321a7461726765745f626c6f636b5f6370755f75736167655f7063740675696e743332196d61785f7472616e73616374696f6e5f6370755f75736167650675696e743332196d696e5f7472616e73616374696f6e5f6370755f75736167650675696e743332186d61785f7472616e73616374696f6e5f6c69666574696d650675696e7433321e64656665727265645f7472785f65787069726174696f6e5f77696e646f770675696e743332156d61785f7472616e73616374696f6e5f64656c61790675696e743332166d61785f696e6c696e655f616374696f6e5f73697a650675696e743332176d61785f696e6c696e655f616374696f6e5f64657074680675696e743136136d61785f617574686f726974795f64657074680675696e74313613656f73696f5f676c6f62616c5f7374617465320005116e65775f72616d5f7065725f626c6f636b0675696e743136116c6173745f72616d5f696e63726561736514626c6f636b5f74696d657374616d705f747970650e6c6173745f626c6f636b5f6e756d14626c6f636b5f74696d657374616d705f7479706508726573657276656407666c6f61743634087265766973696f6e0575696e743812656f73696f5f676c6f62616c5f737461746515626c6f636b636861696e5f706172616d65746572730d0c6d61785f72616d5f73697a650675696e74363418746f74616c5f72616d5f62797465735f72657365727665640675696e7436340f746f74616c5f72616d5f7374616b6505696e7436341d6c6173745f70726f64756365725f7363686564756c655f75706461746514626c6f636b5f74696d657374616d705f74797065186c6173745f706572766f74655f6275636b65745f66696c6c0675696e7436340e706572766f74655f6275636b657405696e7436340f706572626c6f636b5f6275636b657405696e74363413746f74616c5f756e706169645f626c6f636b730675696e74333215746f74616c5f6163746976617465645f7374616b6505696e7436341b7468726573685f6163746976617465645f7374616b655f74696d650675696e7436341b6c6173745f70726f64756365725f7363686564756c655f73697a650675696e7431361a746f74616c5f70726f64756365725f766f74655f77656967687407666c6f617436340f6c6173745f6e616d655f636c6f736514626c6f636b5f74696d657374616d705f747970650d70726f64756365725f696e666f0008056f776e65720c6163636f756e745f6e616d650b746f74616c5f766f74657307666c6f617436340c70726f64756365725f6b65790a7075626c69635f6b65790969735f61637469766504626f6f6c0375726c06737472696e670d756e706169645f626c6f636b730675696e7433320f6c6173745f636c61696d5f74696d650675696e743634086c6f636174696f6e0675696e7431360b72656770726f647563657200040870726f64756365720c6163636f756e745f6e616d650c70726f64756365725f6b65790a7075626c69635f6b65790375726c06737472696e67086c6f636174696f6e0675696e74313609756e72656770726f6400010870726f64756365720c6163636f756e745f6e616d650673657472616d00010c6d61785f72616d5f73697a650675696e7436340a73657472616d7261746500010f62797465735f7065725f626c6f636b0675696e7431360872656770726f787900020570726f78790c6163636f756e745f6e616d6507697370726f787904626f6f6c0c766f746570726f6475636572000305766f7465720c6163636f756e745f6e616d650570726f78790c6163636f756e745f6e616d650970726f6475636572730e6163636f756e745f6e616d655b5d0a766f7465725f696e666f0007056f776e65720c6163636f756e745f6e616d650570726f78790c6163636f756e745f6e616d650970726f6475636572730e6163636f756e745f6e616d655b5d067374616b656405696e743634106c6173745f766f74655f77656967687407666c6f617436341370726f786965645f766f74655f77656967687407666c6f617436340869735f70726f787904626f6f6c0c636c61696d726577617264730001056f776e65720c6163636f756e745f6e616d6507736574707269760002076163636f756e740c6163636f756e745f6e616d650769735f7072697604696e74380b726d7670726f647563657200010870726f64756365720c6163636f756e745f6e616d65127365745f6163636f756e745f6c696d6974730004076163636f756e740c6163636f756e745f6e616d650972616d5f627974657305696e7436340a6e65745f77656967687405696e7436340a6370755f77656967687405696e743634117365745f676c6f62616c5f6c696d6974730001136370755f757365635f7065725f706572696f6405696e7436340c70726f64756365725f6b657900020d70726f64756365725f6e616d650c6163636f756e745f6e616d6511626c6f636b5f7369676e696e675f6b65790a7075626c69635f6b65790d7365745f70726f6475636572730001087363686564756c650e70726f64756365725f6b65795b5d0c726571756972655f6175746800010466726f6d0c6163636f756e745f6e616d6509736574706172616d73000106706172616d7315626c6f636b636861696e5f706172616d657465727309636f6e6e6563746f7200020762616c616e63650561737365740677656967687407666c6f617436340e65786368616e67655f7374617465000306737570706c79056173736574046261736509636f6e6e6563746f720571756f746509636f6e6e6563746f720c6e616d656269645f696e666f0004076e65776e616d650c6163636f756e745f6e616d650b686967685f6269646465720c6163636f756e745f6e616d6508686967685f62696405696e7436340d6c6173745f6269645f74696d650675696e7436341f00409e9a2264b89a0a6e65776163636f756e740000000040258ab2c207736574636f64650000000000b863b2c206736574616269000040cbdaa86c52d50a75706461746561757468000040cbdaa8aca24a0a64656c65746561757468000000002d6b03a78b086c696e6b61757468000040cbdac0e9e2d40a756e6c696e6b617574680000bc892a4585a6410b63616e63656c64656c617900000000e0d27bd5a4076f6e6572726f720000b0cafe4873bd3e0b62757972616d627974657300000000004873bd3e0662757972616d00000000409a1ba3c20773656c6c72616d0000003f2a1ba6a24a0a64656c6567617465627700c08fca86a9a8d2d40c756e64656c656761746562770000000000a4a997ba06726566756e640000ae423ad15b99ba0b72656770726f647563657200000000004873b3c20673657472616d000080cae64a73b3c20a73657472616d72617465615365747320746865206e756d626572206f66206e6577206279746573206f662072616d20746f206372656174652070657220626c6f636b20616e6420726573796e63732062616e636f72206261736520636f6e6e6563746f722062616c616e6365000000404933933b076269646e616d6500000048532f75933b09626964726566756e6400000048f456a6eed409756e72656770726f6400000000bed35b99ba0872656770726f7879007015d289deaa32dd0c766f746570726f64756365720080d3355c5de94c440c636c61696d726577617264730000000060bb5bb3c207736574707269760000ae423ad15bb7bc0b726d7670726f6475636572000000ce4eba68b2c2127365745f6163636f756e745f6c696d697473000000ce4ebac8b2c2117365745f676c6f62616c5f6c696d6974730000000038d15bb3c20d7365745f70726f64756365727300000000a0656dacba0c726571756972655f61757468000000c0d25c53b3c209736574706172616d7300090000c057219de8ad0369363401056f776e6572010675696e7436340d70726f64756365725f696e666f000000004473686403693634000012656f73696f5f676c6f62616c5f7374617465000000404473686403693634000013656f73696f5f676c6f62616c5f73746174653200000000e0ab32dd0369363401056f776e6572010c6163636f756e745f6e616d650a766f7465725f696e666f00000000ab7b15d60369363401056f776e6572010675696e7436340e757365725f7265736f7572636573000000204d73a24a036936340102746f010675696e7436341364656c6567617465645f62616e6477696474680000c80a5e23a5b9036936340106737570706c79010675696e7436340e65786368616e67655f737461746500000000a7a997ba0369363401056f776e6572010675696e7436340e726566756e645f7265717565737400000038b9a3a4990369363401076e65776e616d65010c6163636f756e745f6e616d650c6e616d656269645f696e666f010c636f6e737469747574696f6e9a295468697320436f6e737469747574696f6e2069732061206d756c74692d706172747920636f6e747261637420656e746572656420696e746f20627920746865204d656d6265727320627920766972747565206f6620746865697220757365206f66207468697320626c6f636b636861696e2e0a0a232041727469636c652049202d204e6f20496e6974696174696f6e206f662056696f6c656e63650a4d656d62657273207368616c6c206e6f7420696e6974696174652076696f6c656e6365206f722074686520746872656174206f662076696f6c656e636520616761696e737420616e6f74686572204d656d6265722e204c617766756c2070726f7365637574696f6e206f66206372696d657320776974682074686520676f616c206f662070726573657276696e67206c6966652c206c69626572747920616e642070726f706572747920646f6573206e6f7420636f6e7374697475746520696e6974696174696f6e206f662076696f6c656e63652e0a0a232041727469636c65204949202d204e6f205065726a7572790a4d656d62657273207368616c6c206265206c6961626c6520666f72206c6f73736573206361757365642062792066616c7365206f72206d69736c656164696e67206174746573746174696f6e7320616e64207368616c6c20666f726665697420616e792070726f666974206761696e656420746865726562792e0a0a232041727469636c6520494949202d205269676874730a546865204d656d62657273206772616e7420746865207269676874206f6620636f6e747261637420616e64206f6620707269766174652070726f706572747920746f2065616368206f746865722c207468657265666f7265206e6f2070726f7065727479207368616c6c206368616e67652068616e64732065786365707420776974682074686520636f6e73656e74206f6620746865206f776e65722c20627920612076616c69642041726269747261746f72753230313973206f726465722c206f722076696120636f6d6d756e697479207265666572656e64756d2e205468697320436f6e737469747574696f6e2063726561746573206e6f20706f7369746976652072696768747320666f72206f72206265747765656e20616e79204d656d626572732e0a0a232041727469636c65204956202d204e6f20566f746520427579696e670a4e6f204d656d626572207368616c6c206f66666572206e6f722061636365707420616e797468696e67206f662076616c756520696e2065786368616e676520666f72206120766f7465206f6620616e7920747970652c206e6f72207368616c6c20616e79204d656d62657220756e64756c7920696e666c75656e63652074686520766f7465206f6620616e6f746865722e0a0a232041727469636c652056202d204e6f204669647563696172790a4e6f204d656d626572206e6f7220454f5320746f6b656e20686f6c646572207368616c6c20686176652066696475636961727920726573706f6e736962696c69747920746f20737570706f7274207468652076616c7565206f662074686520454f5320746f6b656e2e20546865204d656d6265727320646f206e6f7420617574686f72697a6520616e796f6e6520746f20686f6c64206173736574732c20626f72726f772c206e6f7220636f6e7472616374206f6e20626568616c66206f6620454f5320746f6b656e20686f6c6465727320636f6c6c6563746976656c792e205468697320626c6f636b636861696e20686173206e6f206f776e6572732c206d616e6167657273206f722066696475636961726965733b207468657265666f72652c206e6f204d656d626572207368616c6c20686176652062656e6566696369616c20696e74657265737420696e206d6f7265207468616e20313025206f662074686520454f5320746f6b656e20737570706c792e0a0a232041727469636c65205649202d205265737469747574696f6e0a45616368204d656d6265722061677265657320746861742070656e616c7469657320666f7220627265616368206f6620636f6e7472616374206d617920696e636c7564652c2062757420617265206e6f74206c696d6974656420746f2c2066696e65732c206c6f7373206f66206163636f756e742c20616e64206f74686572207265737469747574696f6e2e0a0a232041727469636c6520564949202d204f70656e20536f757263650a45616368204d656d6265722077686f206d616b657320617661696c61626c65206120736d61727420636f6e7472616374206f6e207468697320626c6f636b636861696e207368616c6c206265206120446576656c6f7065722e204561636820446576656c6f706572207368616c6c206f6666657220746865697220736d61727420636f6e747261637473207669612061206672656520616e64206f70656e20736f75726365206c6963656e73652c20616e64206561636820736d61727420636f6e7472616374207368616c6c20626520646f63756d656e746564207769746820612052696361726469616e20436f6e74726163742073746174696e672074686520696e74656e74206f6620616c6c207061727469657320616e64206e616d696e6720746865204172626974726174696f6e20466f72756d20746861742077696c6c207265736f6c76652064697370757465732061726973696e672066726f6d207468617420636f6e74726163742e0a0a232041727469636c652056494949202d204c616e67756167650a4d756c74692d6c696e6775616c20636f6e747261637473206d7573742073706563696679206f6e65207072657661696c696e67206c616e677561676520696e2063617365206f66206469737075746520616e642074686520617574686f72206f6620616e79207472616e736c6174696f6e207368616c6c206265206c6961626c6520666f72206c6f737365732064756520746f2074686569722066616c73652c206d69736c656164696e672c206f7220616d626967756f7573206174746573746564207472616e736c6174696f6e732e0a0a232041727469636c65204958202d2044697370757465205265736f6c7574696f6e0a416c6c2064697370757465732061726973696e67206f7574206f66206f7220696e20636f6e6e656374696f6e2077697468207468697320436f6e737469747574696f6e207368616c6c2062652066696e616c6c7920736574746c656420756e646572207468652052756c6573206f662044697370757465205265736f6c7574696f6e206f662074686520454f5320436f7265204172626974726174696f6e20466f72756d206279206f6e65206f72206d6f72652061726269747261746f7273206170706f696e74656420696e206163636f7264616e636520776974682074686520736169642052756c65732e0a0a232041727469636c652058202d2043686f696365206f66204c61770a43686f696365206f66206c617720666f72206469737075746573207368616c6c2062652c20696e206f72646572206f6620707265636564656e63652c207468697320436f6e737469747574696f6e20616e6420746865204d6178696d73206f66204571756974792e0a0a232041727469636c65205849202d20416d656e64696e670a5468697320436f6e737469747574696f6e20616e6420697473207375626f7264696e61746520646f63756d656e7473207368616c6c206e6f7420626520616d656e64656420657863657074206279206120766f7465206f662074686520746f6b656e20686f6c646572732077697468206e6f206c657373207468616e2031352520766f74652070617274696369706174696f6e20616d6f6e6720746f6b656e7320616e64206e6f206665776572207468616e20313025206d6f726520596573207468616e204e6f20766f7465732c207375737461696e656420666f7220333020636f6e74696e756f757320646179732077697468696e2061203132302064617920706572696f642e0a0a232041727469636c6520584949202d205075626c697368696e670a4d656d62657273206d6179206f6e6c79207075626c69736820696e666f726d6174696f6e20746f2074686520426c6f636b636861696e20746861742069732077697468696e20746865697220726967687420746f207075626c6973682e20467572746865726d6f72652c204d656d6265727320766f6c756e746172696c7920636f6e73656e7420666f7220616c6c204d656d6265727320746f207065726d616e656e746c7920616e642069727265766f6361626c792072657461696e206120636f70792c20616e616c797a652c20616e64206469737472696275746520616c6c2062726f616463617374207472616e73616374696f6e7320616e64206465726976617469766520696e666f726d6174696f6e2e0a0a232041727469636c652058494949202d20496e666f726d656420436f6e73656e740a416c6c20736572766963652070726f7669646572732077686f2070726f6475636520746f6f6c7320746f20666163696c69746174652074686520636f6e737472756374696f6e20616e64207369676e696e67206f66207472616e73616374696f6e73206f6e20626568616c66206f66206f74686572204d656d62657273207368616c6c2070726573656e7420746f2073616964206f74686572204d656d62657273207468652066756c6c2052696361726469616e20636f6e7472616374207465726d73206f66207468697320436f6e737469747574696f6e20616e64206f74686572207265666572656e63656420636f6e7472616374732e20536572766963652070726f766964657273207368616c6c206265206c6961626c6520666f72206c6f7373657320726573756c74696e672066726f6d206661696c75726520746f20646973636c6f7365207468652066756c6c2052696361726469616e20636f6e7472616374207465726d7320746f2075736572732e0a0a232041727469636c6520584956202d2053657665726162696c6974790a496620616e792070617274206f66207468697320436f6e737469747574696f6e206973206465636c6172656420756e656e666f72636561626c65206f7220696e76616c69642c207468652072656d61696e6465722077696c6c20636f6e74696e756520746f2062652076616c696420616e6420656e666f72636561626c652e0a0a232041727469636c65205856202d205465726d696e6174696f6e206f662041677265656d656e740a41204d656d626572206973206175746f6d61746963616c6c792072656c65617365642066726f6d20616c6c207265766f6361626c65206f626c69676174696f6e7320756e646572207468697320436f6e737469747574696f6e203320796561727320616674657220746865206c617374207472616e73616374696f6e207369676e65642062792074686174204d656d62657220697320696e636f72706f726174656420696e746f2074686520626c6f636b636861696e2e2041667465722033207965617273206f6620696e616374697669747920616e206163636f756e74206d61792062652070757420757020666f722061756374696f6e20616e64207468652070726f636565647320646973747269627574656420746f20616c6c204d656d62657273206163636f7264696e6720746f207468652073797374656d20636f6e74726163742070726f766973696f6e73207468656e20696e2065666665637420666f722073756368207265646973747269627574696f6e2e0a0a232041727469636c6520585649202d20446576656c6f706572204c696162696c6974790a4d656d6265727320616772656520746f20686f6c6420736f66747761726520646576656c6f70657273206861726d6c65737320666f7220756e696e74656e74696f6e616c206d697374616b6573206d61646520696e207468652065787072657373696f6e206f6620636f6e747261637475616c20696e74656e742c2077686574686572206f72206e6f742073616964206d697374616b657320776572652064756520746f2061637475616c206f7220706572636569766564206e65676c6967656e63652e0a0a232041727469636c652058564949202d20436f6e73696465726174696f6e0a416c6c2072696768747320616e64206f626c69676174696f6e7320756e646572207468697320436f6e737469747574696f6e20617265206d757475616c20616e64207265636970726f63616c20616e64206f6620657175616c6c79207369676e69666963616e742076616c756520616e6420636f737420746f20616c6c20706172746965732e0a0a232041727469636c65205856494949202d20416363657074616e63650a4120636f6e7472616374206973206465656d6564206163636570746564207768656e2061206d656d626572207369676e732061207472616e73616374696f6e20776869636820696e636f72706f72617465732061205441504f532070726f6f66206f66206120626c6f636b2077686f736520696d706c69656420737461746520696e636f72706f726174657320616e20414249206f66207361696420636f6e747261637420616e642073616964207472616e73616374696f6e20697320696e636f72706f726174656420696e746f2074686520626c6f636b636861696e2e0a0a232041727469636c6520584958202d20436f756e74657270617274730a5468697320436f6e737469747574696f6e206d617920626520657865637574656420696e20616e79206e756d626572206f6620636f756e74657270617274732c2065616368206f66207768696368207768656e20657865637574656420616e642064656c697665726564207368616c6c20636f6e737469747574652061206475706c6963617465206f726967696e616c2c2062757420616c6c20636f756e746572706172747320746f676574686572207368616c6c20636f6e7374697475746520612073696e676c652061677265656d656e742e0a0a232041727469636c65205858202d20496e746572696d20436f6e737469747574696f6e0a5468697320636f6e737469747574696f6e20697320696e746572696d20616e6420697320696e74656e64656420746f2072656d61696e20696e2065666665637420756e74696c2061207065726d616e656e7420636f6e737469747574696f6e206973207772697474656e20616e6420726174696669656420696e2061207265666572656e64756d2e0a0000000200ae423ad15b99ba0b72656770726f647563657200000038d15bb3c208737472696e675b5d" -func TestABISerialization_V1_0(t *testing.T) { +/*func TestABISerialization_V1_0(t *testing.T) { systemABIV1_0 := strings.Replace(testSystemABIRaw, "__VERSION__", "eosio::abi/1.0", -1) systemABIV1_0 = strings.Replace(systemABIV1_0, "__VARIANTS__", "", -1) + systemABIV1_0 = strings.Replace(systemABIV1_0, "__ACTION_RESULTS__", "", -1) var abiDef ABI require.NoError(t, json.Unmarshal([]byte(systemABIV1_0), &abiDef)) @@ -31,6 +35,7 @@ func TestABISerialization_V1_0(t *testing.T) { func TestABI_ReadPacked_V1_0(t *testing.T) { systemABIV1_0 := strings.Replace(testSystemABIRaw, "__VERSION__", "eosio::abi/1.0", -1) systemABIV1_0 = strings.Replace(systemABIV1_0, "__VARIANTS__", "", -1) + systemABIV1_0 = strings.Replace(systemABIV1_0, "__ACTION_RESULTS__", "", -1) // Here we remove the last byte (in hex so 2 characeters) since variants are always serialized, but we want a test where they are not there buffer, err := hex.DecodeString(systemABIGeneratedV1_0[0 : len(systemABIGeneratedV1_0)-2]) @@ -49,6 +54,7 @@ func TestABI_ReadPacked_V1_0(t *testing.T) { func TestABISerialization_V1_1(t *testing.T) { systemABIV1_1 := strings.Replace(testSystemABIRaw, "__VERSION__", "eosio::abi/1.1", -1) systemABIV1_1 = strings.Replace(systemABIV1_1, "__VARIANTS__", `,"variants":[]`, -1) + systemABIV1_1 = strings.Replace(systemABIV1_1, "__ACTION_RESULTS__", `,"action_results":[]`, -1) var abiDef ABI require.NoError(t, json.Unmarshal([]byte(systemABIV1_1), &abiDef)) @@ -63,6 +69,7 @@ func TestABISerialization_V1_1(t *testing.T) { func TestABI_ReadPacked_V1_1(t *testing.T) { systemABIV1_1 := strings.Replace(testSystemABIRaw, "__VERSION__", "eosio::abi/1.1", -1) systemABIV1_1 = strings.Replace(systemABIV1_1, "__VARIANTS__", `,"variants":[{"name":"variant","types":["name","uint32"]}]`, -1) + systemABIV1_1 = strings.Replace(systemABIV1_1, "__ACTION_RESULTS__", "", -1) // Here we remove the last byte (in hex so 2 characeters) since we will replace with our own variant hex binary hexData := systemABIGeneratedV1_1[0 : len(systemABIGeneratedV1_0)-2] @@ -79,6 +86,39 @@ func TestABI_ReadPacked_V1_1(t *testing.T) { require.NoError(t, err) assert.JSONEq(t, systemABIV1_1, string(actualJSON)) +}*/ + +func TestABISerialization_V1_2(t *testing.T) { + systemABIV1_2 := strings.Replace(testSystemABIRaw, "__VERSION__", "eosio::abi/1.2", -1) + systemABIV1_2 = strings.Replace(systemABIV1_2, "__VARIANTS__", "", -1) + systemABIV1_2 = strings.Replace(systemABIV1_2, "__ACTION_RESULTS__", `,"action_results":[{"name":"regproducer","result_type":"regproducer"},{"name":"setprods","result_type":"string[]"}]`, -1) + + var abiDef ABI + require.NoError(t, json.Unmarshal([]byte(systemABIV1_2), &abiDef)) + _, err := json.MarshalIndent(abiDef, "", " ") + require.NoError(t, err) + + bin, err := MarshalBinary(abiDef) + require.NoError(t, err) + assert.Equal(t, systemABIGeneratedV1_2, hex.EncodeToString(bin)) +} + +func TestABI_ReadPacked_V1_2(t *testing.T) { + systemABIV1_2 := strings.Replace(testSystemABIRaw, "__VERSION__", "eosio::abi/1.2", -1) + systemABIV1_2 = strings.Replace(systemABIV1_2, "__VARIANTS__", "", -1) + systemABIV1_2 = strings.Replace(systemABIV1_2, "__ACTION_RESULTS__", `,"action_results":[{"name":"regproducer","result_type":"regproducer"},{"name":"setprods","result_type":"string[]"}]`, -1) + + buffer, err := hex.DecodeString(systemABIGeneratedV1_2) + require.NoError(t, err) + + var abiDef ABI + err = UnmarshalBinary(buffer, &abiDef) + require.NoError(t, err) + + actualJSON, err := json.Marshal(abiDef) + require.NoError(t, err) + + assert.JSONEq(t, systemABIV1_2, string(actualJSON)) } var testSystemABIRaw = `{ @@ -1048,6 +1088,7 @@ var testSystemABIRaw = `{ } ] __VARIANTS__ + __ACTION_RESULTS__ }` /* diff --git a/abidecoder.go b/abidecoder.go index c528027b..40fa17e4 100644 --- a/abidecoder.go +++ b/abidecoder.go @@ -13,6 +13,7 @@ import ( ) func (a *ABI) DecodeAction(data []byte, actionName ActionName) ([]byte, error) { + binaryDecoder := NewDecoder(data) action := a.ActionForName(actionName) if action == nil { @@ -24,7 +25,22 @@ func (a *ABI) DecodeAction(data []byte, actionName ActionName) ([]byte, error) { return nil, err } return json.Marshal(builtStruct) +} + +func (a *ABI) DecodeActionResult(data []byte, actionName ActionName) ([]byte, error) { + + binaryDecoder := NewDecoder(data) + actionResult := a.ActionResultForName(actionName) + if actionResult == nil { + return nil, fmt.Errorf("action_result %s not found in abi", actionName) + } + res, err := a.resolveField(binaryDecoder, actionResult.ResultType) + if err != nil { + return nil, err + } + + return json.Marshal(res) } func (a *ABI) DecodeTableRow(tableName TableName, data []byte) ([]byte, error) { @@ -49,7 +65,6 @@ func (a *ABI) DecodeTableRowTyped(tableType string, data []byte) ([]byte, error) return nil, err } return json.Marshal(builtStruct) - } func (a *ABI) Decode(binaryDecoder *Decoder, structName string) ([]byte, error) { diff --git a/abidecoder_test.go b/abidecoder_test.go index c5cebc7a..99b664b5 100644 --- a/abidecoder_test.go +++ b/abidecoder_test.go @@ -1154,6 +1154,98 @@ func TestABI_Read(t *testing.T) { } } +func TestABI_decodeActionResultNumber(t *testing.T) { + + abi := &ABI{ + Structs: []StructDef{ + {Name: "numbervalue", Fields: []FieldDef{{Name: "number", Type: "uint64"}}}, + }, + Actions: []ActionDef{ + {Name: "numbervalue", Type: "numbervalue"}, + }, + ActionResults: []ActionResultDef{ + {Name: "numbervalue", ResultType: "uint64"}, + }, + } + + buffer, err := hex.DecodeString("7b00000000000000") + require.NoError(t, err) + + res, err := abi.DecodeActionResult(buffer, "numbervalue") + require.NoError(t, err) + + assert.Equal(t, "123", string(res)) +} + +func TestABI_decodeActionResultCustom(t *testing.T) { + + abi := &ABI{ + Structs: []StructDef{ + {Name: "custom", Fields: []FieldDef{ + {Name: "message", Type: "name"}, + {Name: "extra", Type: "string"}, + {Name: "number", Type: "uint64"}, + }}, + {Name: "customvalue", Fields: []FieldDef{ + {Name: "message", Type: "name"}, + {Name: "extra", Type: "string"}, + {Name: "number", Type: "uint64"}, + }}, + }, + Actions: []ActionDef{ + {Name: "customvalue", Type: "customvalue"}, + }, + ActionResults: []ActionResultDef{ + {Name: "customvalue", ResultType: "custom"}, + }, + } + + buffer, err := hex.DecodeString("00000000001aa36a05776f726c647b00000000000000") + require.NoError(t, err) + + res, err := abi.DecodeActionResult(buffer, "customvalue") + require.NoError(t, err) + + assert.JSONEq(t, `{"extra":"world","message":"hello","number":123}`, string(res)) +} + +func TestABI_decodeActionResultVector(t *testing.T) { + + abi := &ABI{ + Structs: []StructDef{ + {Name: "vectorvalue", Fields: []FieldDef{ + {Name: "message", Type: "string[]"}, + }}, + }, + Actions: []ActionDef{ + {Name: "vectorvalue", Type: "vectorvalue"}, + }, + ActionResults: []ActionResultDef{ + {Name: "vectorvalue", ResultType: "string[]"}, + }, + } + + buffer, err := hex.DecodeString("03036f6e650374776f057468726565") + require.NoError(t, err) + + res, err := abi.DecodeActionResult(buffer, "vectorvalue") + require.NoError(t, err) + + assert.JSONEq(t, `["one", "two", "three"]`, string(res)) +} + +func TestABI_decodeActionResultErr(t *testing.T) { + + abi := &ABI{ + Structs: []StructDef{}, + Actions: []ActionDef{}, + ActionResults: []ActionResultDef{}, + } + + _, err := abi.DecodeActionResult([]byte{}, "invalid") + assert.Equal(t, fmt.Errorf("action_result invalid not found in abi").Error(), err.Error()) +} + func TestABI_Read_Symbol(t *testing.T) { abi := ABI{} data, err := hex.DecodeString("04454f5300000000") diff --git a/types.go b/types.go index 8ec2dbbd..20ff7558 100644 --- a/types.go +++ b/types.go @@ -374,14 +374,14 @@ func (s *Symbol) UnmarshalJSON(data []byte) error { if err != nil { return err } - + sym, err := StringToSymbol(str) if err != nil { return err } - + *s = sym - + return nil } @@ -1527,8 +1527,9 @@ func (t fcVariantType) String() string { } // FIXME: Ideally, we would re-use `BaseVariant` but that requires some -// re-thinking of the decoder to make it efficient to read FCVariant types. For now, -// let's re-code it a bit to make it as efficient as possible. +// +// re-thinking of the decoder to make it efficient to read FCVariant types. For now, +// let's re-code it a bit to make it as efficient as possible. type fcVariant struct { TypeID fcVariantType Impl interface{} @@ -1542,7 +1543,8 @@ func (a fcVariant) IsNil() bool { // and object, turning everything along the way in Go primitives types. // // **Note** For `Int64` and `Uint64`, we return `eos.Int64` and `eos.Uint64` types -// so that JSON marshalling is done correctly for large numbers +// +// so that JSON marshalling is done correctly for large numbers func (a fcVariant) ToNative() interface{} { if a.TypeID == fcVariantNullType || a.TypeID == fcVariantDoubleType || From d0053a36b0ef0586d351b14dbbe2b5b2de050d21 Mon Sep 17 00:00:00 2001 From: yjwxfq <112159687+yjwxfq@users.noreply.github.com> Date: Thu, 17 Nov 2022 18:44:02 +0800 Subject: [PATCH 25/41] The field of BlockNum returned is wrong when push_transaction, we need to move field BlockNum from struct PushTransactionFullResp to TransactionProcessed. (#187) Signed-off-by: yjwxfq Signed-off-by: yjwxfq --- responses.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/responses.go b/responses.go index 27ae0a15..48d616ea 100644 --- a/responses.go +++ b/responses.go @@ -355,12 +355,12 @@ type PushTransactionFullResp struct { TransactionID string `json:"transaction_id"` Processed TransactionProcessed `json:"processed"` // WARN: is an `fc::variant` in server.. BlockID string `json:"block_id"` - BlockNum uint32 `json:"block_num"` } type TransactionProcessed struct { Status string `json:"status"` ID Checksum256 `json:"id"` + BlockNum uint32 `json:"block_num"` ActionTraces []Trace `json:"action_traces"` DeferredTransactions []string `json:"deferred_transactions"` // that's not right... dig to find what's there.. } From 75389169478550899011359f36837ed20abdfdb2 Mon Sep 17 00:00:00 2001 From: Henrik Hautakoski Date: Thu, 17 Nov 2022 11:44:53 +0100 Subject: [PATCH 26/41] Encoding ship types (#192) * ship/variant_helpers.go: Adding binary marshaller for TransactionTraceArray * ship/variant_helpers.go: Adding binary marshaller for TableDeltaArray --- ship/variant_helpers.go | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/ship/variant_helpers.go b/ship/variant_helpers.go index 3f73627a..29d784cf 100644 --- a/ship/variant_helpers.go +++ b/ship/variant_helpers.go @@ -62,6 +62,14 @@ func (t *TransactionTraceArray) AsTransactionTracesV0() (out []*TransactionTrace return out } +func (r TransactionTraceArray) MarshalBinary(enc *eos.Encoder) error { + data, err := eos.MarshalBinary(r.Elem) + if err != nil { + return err + } + return enc.Encode(data) +} + func (r *TransactionTraceArray) UnmarshalBinary(decoder *eos.Decoder) error { data, err := decoder.ReadByteArray() if err != nil { @@ -118,6 +126,14 @@ type TableDeltaArray struct { Elem []*TableDelta } +func (d TableDeltaArray) MarshalBinary(enc *eos.Encoder) error { + data, err := eos.MarshalBinary(d.Elem) + if err != nil { + return err + } + return enc.Encode(data) +} + func (d *TableDeltaArray) UnmarshalBinary(decoder *eos.Decoder) error { data, err := decoder.ReadByteArray() if err != nil { From 64cafd714c60907398419f9b43f55c4c6a225853 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 17 Nov 2022 05:45:14 -0500 Subject: [PATCH 27/41] Bump github.com/tidwall/gjson from 1.6.5 to 1.9.3 (#176) Bumps [github.com/tidwall/gjson](https://github.com/tidwall/gjson) from 1.6.5 to 1.9.3. - [Release notes](https://github.com/tidwall/gjson/releases) - [Commits](https://github.com/tidwall/gjson/compare/v1.6.5...v1.9.3) --- updated-dependencies: - dependency-name: github.com/tidwall/gjson dependency-type: direct:production ... Signed-off-by: dependabot[bot] Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- go.mod | 2 +- go.sum | 13 ++++++------- 2 files changed, 7 insertions(+), 8 deletions(-) diff --git a/go.mod b/go.mod index 2bc1d591..2e64a3da 100644 --- a/go.mod +++ b/go.mod @@ -6,7 +6,7 @@ require ( github.com/pkg/errors v0.9.1 github.com/streamingfast/logging v0.0.0-20210811175431-f3b44b61606a github.com/stretchr/testify v1.5.1 - github.com/tidwall/gjson v1.6.5 + github.com/tidwall/gjson v1.9.3 go.uber.org/zap v1.14.0 golang.org/x/crypto v0.0.0-20200406173513-056763e48d71 golang.org/x/sys v0.0.0-20220627191245-f75cf1eec38b // indirect diff --git a/go.sum b/go.sum index 4c90eacf..2a04eb7a 100644 --- a/go.sum +++ b/go.sum @@ -67,12 +67,12 @@ github.com/teris-io/shortid v0.0.0-20171029131806-771a37caa5cf h1:Z2X3Os7oRzpdJ7 github.com/teris-io/shortid v0.0.0-20171029131806-771a37caa5cf/go.mod h1:M8agBzgqHIhgj7wEn9/0hJUZcrvt9VY+Ln+S1I5Mha0= github.com/test-go/testify v1.1.4 h1:Tf9lntrKUMHiXQ07qBScBTSA0dhYQlu83hswqelv1iE= github.com/test-go/testify v1.1.4/go.mod h1:rH7cfJo/47vWGdi4GPj16x3/t1xGOj2YxzmNQzk2ghU= -github.com/tidwall/gjson v1.6.5 h1:P/K9r+1pt9AK54uap7HcoIp6T3a7AoMg3v18tUis+Cg= -github.com/tidwall/gjson v1.6.5/go.mod h1:zeFuBCIqD4sN/gmqBzZ4j7Jd6UcA2Fc56x7QFsv+8fI= -github.com/tidwall/match v1.0.3 h1:FQUVvBImDutD8wJLN6c5eMzWtjgONK9MwIBCOrUJKeE= -github.com/tidwall/match v1.0.3/go.mod h1:eRSPERbgtNPcGhD8UCthc6PmLEQXEWd3PRB5JTxsfmM= -github.com/tidwall/pretty v1.0.2 h1:Z7S3cePv9Jwm1KwS0513MRaoUe3S01WPbLNV40pwWZU= -github.com/tidwall/pretty v1.0.2/go.mod h1:XNkn88O1ChpSDQmQeStsy+sBenx6DDtFZJxhVysOjyk= +github.com/tidwall/gjson v1.9.3 h1:hqzS9wAHMO+KVBBkLxYdkEeeFHuqr95GfClRLKlgK0E= +github.com/tidwall/gjson v1.9.3/go.mod h1:/wbyibRr2FHMks5tjHJ5F8dMZh3AcwJEMf5vlfC0lxk= +github.com/tidwall/match v1.1.1 h1:+Ho715JplO36QYgwN9PGYNhgZvoUSc9X2c80KVTi+GA= +github.com/tidwall/match v1.1.1/go.mod h1:eRSPERbgtNPcGhD8UCthc6PmLEQXEWd3PRB5JTxsfmM= +github.com/tidwall/pretty v1.2.0 h1:RWIZEg2iJ8/g6fDDYzMpobmaoGh5OLl4AXtGUGPcqCs= +github.com/tidwall/pretty v1.2.0/go.mod h1:ITEVvHYasfjBbM0u2Pg8T2nJnzm8xPwvNhhsoaGGjNU= go.opencensus.io v0.21.0/go.mod h1:mSImk1erAIZhrmZN+AvHh14ztQfjbGwt4TtuofqLduU= go.opencensus.io v0.22.0/go.mod h1:+kGneAE2xo2IficOXnaByMWTGM9T73dGwxeWcUqIpI8= go.opencensus.io v0.22.1 h1:8dP3SGL7MPB94crU3bEPplMPe83FI4EouesJUeFHv50= @@ -132,7 +132,6 @@ golang.org/x/sys v0.0.0-20190502145724-3ef323f4f1fd/go.mod h1:h1NjWce9XRLGQEsW7w golang.org/x/sys v0.0.0-20190507160741-ecd444e8653b/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190606165138-5da285871e9c/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190624142023-c5567b49c5d0/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190804053845-51ab0e2deafa h1:KIDDMLT1O0Nr7TSxp8xM5tJcdn8tgyAONntO829og1M= golang.org/x/sys v0.0.0-20190804053845-51ab0e2deafa/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20220627191245-f75cf1eec38b h1:2n253B2r0pYSmEV+UNCQoPfU/FiaizQEK5Gu4Bq4JE8= golang.org/x/sys v0.0.0-20220627191245-f75cf1eec38b/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= From 35cf24df329e8eaa8a8482fc9636075ade0298b3 Mon Sep 17 00:00:00 2001 From: psy2848048 Date: Tue, 22 Nov 2022 06:01:12 +0900 Subject: [PATCH 28/41] Response aligning of get_info & get_account (#191) * test: added api mock test & get_info * fix: revised response type of get_info * fix: aligning the response of get_account --- .github/pull_request_template.md | 17 + .github/workflows/main.yml | 2 +- .travis.yml | 5 - api_test.go | 62 + go.mod | 25 +- go.sum | 4 + responses.go | 75 +- testdata/mock_server/chain_get_abi.json | 248 + testdata/mock_server/chain_get_account.json | 251 + testdata/mock_server/chain_get_block.json | 5817 +++++++++++++++++ .../chain_get_block_header_state.json | 738 +++ .../mock_server/chain_get_block_info.json | 14 + .../chain_get_currency_balance.json | 3 + .../mock_server/chain_get_currency_stats.json | 7 + testdata/mock_server/chain_get_info.json | 22 + testdata/mock_server/chain_get_producers.json | 814 +++ .../chain_get_raw_code_and_abi.json | 5 + .../mock_server/chain_get_required_keys.json | 5 + .../mock_server/chain_get_table_by_scope.json | 47 + testdata/mock_server/server.go | 91 + types.go | 51 +- 21 files changed, 8265 insertions(+), 38 deletions(-) create mode 100644 .github/pull_request_template.md delete mode 100644 .travis.yml create mode 100644 api_test.go create mode 100644 testdata/mock_server/chain_get_abi.json create mode 100644 testdata/mock_server/chain_get_account.json create mode 100644 testdata/mock_server/chain_get_block.json create mode 100644 testdata/mock_server/chain_get_block_header_state.json create mode 100644 testdata/mock_server/chain_get_block_info.json create mode 100644 testdata/mock_server/chain_get_currency_balance.json create mode 100644 testdata/mock_server/chain_get_currency_stats.json create mode 100644 testdata/mock_server/chain_get_info.json create mode 100644 testdata/mock_server/chain_get_producers.json create mode 100644 testdata/mock_server/chain_get_raw_code_and_abi.json create mode 100644 testdata/mock_server/chain_get_required_keys.json create mode 100644 testdata/mock_server/chain_get_table_by_scope.json create mode 100644 testdata/mock_server/server.go diff --git a/.github/pull_request_template.md b/.github/pull_request_template.md new file mode 100644 index 00000000..aa14b967 --- /dev/null +++ b/.github/pull_request_template.md @@ -0,0 +1,17 @@ + +## Background + + + +## Summary + + + +## Note + + +## Checklist + +- [ ] Backward compatible? +- [ ] Test enough in your local environment? +- [ ] Add related test cases? diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index a22ac33c..e36b0bff 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -14,7 +14,7 @@ jobs: runs-on: ${{ matrix.os }} strategy: matrix: - go-version: [1.15.x, 1.16.x, 1.17.x] + go-version: [1.17.x, 1.18.x, 1.19.x] os: [ubuntu-latest, macos-latest] steps: - name: Set up Go diff --git a/.travis.yml b/.travis.yml deleted file mode 100644 index 1e409370..00000000 --- a/.travis.yml +++ /dev/null @@ -1,5 +0,0 @@ -language: go - -go: - - "1.x" - - "1.10.x" \ No newline at end of file diff --git a/api_test.go b/api_test.go new file mode 100644 index 00000000..6418af1c --- /dev/null +++ b/api_test.go @@ -0,0 +1,62 @@ +package eos + +import ( + "context" + "encoding/json" + "net/http" + "os" + "testing" + + mockserver "github.com/eoscanada/eos-go/testdata/mock_server" + "github.com/stretchr/testify/assert" +) + +var api *API + +func TestAPIGetAccount(t *testing.T) { + name := AccountName("teamgreymass") + acc, err := api.GetAccount(context.Background(), name) + assert.NoError(t, err) + + actualJSON, err := json.Marshal(acc) + assert.NoError(t, err) + + expectedJSON := mockserver.OpenFile(".", "chain_get_account.json") + + assert.JSONEq(t, expectedJSON, string(actualJSON)) +} + +func TestAPIGetInfo(t *testing.T) { + info, err := api.GetInfo(context.Background()) + assert.NoError(t, err) + + actualJSON, err := json.Marshal(info) + assert.NoError(t, err) + + expectedJSON := mockserver.OpenFile(".", "chain_get_info.json") + + assert.JSONEq(t, expectedJSON, string(actualJSON)) +} + +func TestMain(m *testing.M) { + setUp() + code := m.Run() + tearDown() + + os.Exit(code) +} + +func setUp() { + SetFloat64MarshalingTypeIntoString() + + mockserver.CreateAndActivateRestMockServer(".") + + api = New("http://localhost") + + // for working httpmock + api.HttpClient = &http.Client{} +} + +func tearDown() { + mockserver.DeactivateMockServer() +} diff --git a/go.mod b/go.mod index 2e64a3da..599eb90b 100644 --- a/go.mod +++ b/go.mod @@ -1,13 +1,36 @@ module github.com/eoscanada/eos-go -go 1.13 +go 1.17 require ( + github.com/jarcoal/httpmock v1.2.0 github.com/pkg/errors v0.9.1 github.com/streamingfast/logging v0.0.0-20210811175431-f3b44b61606a github.com/stretchr/testify v1.5.1 github.com/tidwall/gjson v1.9.3 go.uber.org/zap v1.14.0 golang.org/x/crypto v0.0.0-20200406173513-056763e48d71 +) + +require ( + contrib.go.opencensus.io/exporter/stackdriver v0.12.6 // indirect + github.com/BurntSushi/toml v0.3.1 // indirect + github.com/blendle/zapdriver v1.3.1 // indirect + github.com/davecgh/go-spew v1.1.1 // indirect + github.com/golang/groupcache v0.0.0-20190702054246-869f871628b6 // indirect + github.com/logrusorgru/aurora v2.0.3+incompatible // indirect + github.com/mitchellh/go-testing-interface v1.14.1 // indirect + github.com/pmezard/go-difflib v1.0.0 // indirect + github.com/teris-io/shortid v0.0.0-20171029131806-771a37caa5cf // indirect + github.com/tidwall/match v1.1.1 // indirect + github.com/tidwall/pretty v1.2.0 // indirect + go.opencensus.io v0.22.1 // indirect + go.uber.org/atomic v1.5.0 // indirect + go.uber.org/multierr v1.3.0 // indirect + go.uber.org/tools v0.0.0-20190618225709-2cfd321de3ee // indirect + golang.org/x/lint v0.0.0-20190930215403-16217165b5de // indirect golang.org/x/sys v0.0.0-20220627191245-f75cf1eec38b // indirect + golang.org/x/tools v0.0.0-20191029190741-b9c20aec41a5 // indirect + gopkg.in/yaml.v2 v2.2.2 // indirect + honnef.co/go/tools v0.0.1-2019.2.3 // indirect ) diff --git a/go.sum b/go.sum index 2a04eb7a..19760374 100644 --- a/go.sum +++ b/go.sum @@ -38,6 +38,8 @@ github.com/googleapis/gax-go/v2 v2.0.5/go.mod h1:DWXyrwAJ9X0FpwwEdw+IPEYBICEFu5m github.com/hashicorp/golang-lru v0.5.0/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8= github.com/hashicorp/golang-lru v0.5.1/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8= github.com/hashicorp/golang-lru v0.5.3/go.mod h1:iADmTwqILo4mZ8BN3D2Q6+9jd8WM5uGBxy+E8yxSoD4= +github.com/jarcoal/httpmock v1.2.0 h1:gSvTxxFR/MEMfsGrvRbdfpRUMBStovlSRLw0Ep1bwwc= +github.com/jarcoal/httpmock v1.2.0/go.mod h1:oCoTsnAz4+UoOUIf5lJOWV2QQIW5UoeUI6aM2YnWAZk= github.com/jmespath/go-jmespath v0.0.0-20180206201540-c2b33e8439af/go.mod h1:Nht3zPeWKUH0NzdCt2Blrr5ys8VGpn0CEB0cQHVjt7k= github.com/jstemmer/go-junit-report v0.0.0-20190106144839-af01ea7f8024/go.mod h1:6v2b51hI/fHJwM22ozAgKL4VKDeJcHhJFhtBdhmNjmU= github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck= @@ -48,6 +50,8 @@ github.com/kr/text v0.1.0 h1:45sCR5RtlFHMR4UwH9sdQ5TC8v0qDQCHnXt+kaKSTVE= github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI= github.com/logrusorgru/aurora v2.0.3+incompatible h1:tOpm7WcpBTn4fjmVfgpQq0EfczGlG91VSDkswnjF5A8= github.com/logrusorgru/aurora v2.0.3+incompatible/go.mod h1:7rIyQOR62GCctdiQpZ/zOJlFyk6y+94wXzv6RNZgaR4= +github.com/maxatome/go-testdeep v1.11.0 h1:Tgh5efyCYyJFGUYiT0qxBSIDeXw0F5zSoatlou685kk= +github.com/maxatome/go-testdeep v1.11.0/go.mod h1:011SgQ6efzZYAen6fDn4BqQ+lUR72ysdyKe7Dyogw70= github.com/mitchellh/go-testing-interface v1.14.1 h1:jrgshOhYAUVNMAJiKbEu7EqAwgJJ2JqpQmpLJOu07cU= github.com/mitchellh/go-testing-interface v1.14.1/go.mod h1:gfgS7OtZj6MA4U1UrDRp04twqAjfvlZyCfX3sDjEym8= github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= diff --git a/responses.go b/responses.go index 48d616ea..c7852321 100644 --- a/responses.go +++ b/responses.go @@ -12,36 +12,52 @@ import ( /* { - "server_version": "f537bc50", - "head_block_num": 9, - "last_irreversible_block_num": 8, - "last_irreversible_block_id": "00000008f98f0580d7efe7abc60abaaf8a865c9428a4267df30ff7d1937a1084", - "head_block_id": "00000009ecd0e9fb5719431f4b86f5c9ca1887f6b6f73e5a301aaff740fd6bd3", - "head_block_time": "2018-05-19T07:47:31", - "head_block_producer": "eosio", - "virtual_block_cpu_limit": 100800, - "virtual_block_net_limit": 1056996, - "block_cpu_limit": 99900, - "block_net_limit": 1048576 + "server_version": "3c9661e6", + "chain_id": "aca376f206b8fc25a6ed44dbdc66547c36c6c33e3a119ffbeaef943642f0e906", + "head_block_num": 272466135, + "last_irreversible_block_num": 272465804, + "last_irreversible_block_id": "103d7f8c633f49f92e7758a41dbe59ea3cb0aca556794b9eb4aeeb9b9d0855ce", + "head_block_id": "103d80d744fe357bbb3263289bc85a326d16909d4473a3639b576c035b4bfa5b", + "head_block_time": "2022-10-10T13:34:03.500", + "head_block_producer": "aus1genereos", + "virtual_block_cpu_limit": 200000, + "virtual_block_net_limit": 1048576000, + "block_cpu_limit": 199001, + "block_net_limit": 1048328, + "server_version_string": "v3.1.0", + "fork_db_head_block_num": 272466135, + "fork_db_head_block_id": "103d80d744fe357bbb3263289bc85a326d16909d4473a3639b576c035b4bfa5b", + "server_full_version_string": "v3.1.0-3c9661e67e5f66234871f967f28d1662bf1905b6", + "total_cpu_weight": "383788472311608", + "total_net_weight": "96298870176056", + "earliest_available_block_num": 264601643, + "last_irreversible_block_time": "2022-10-10T13:31:17.500" } */ type InfoResp struct { - ServerVersion string `json:"server_version"` // "2cc40a4e" - ChainID Checksum256 `json:"chain_id"` - HeadBlockNum uint32 `json:"head_block_num"` // 2465669, - LastIrreversibleBlockNum uint32 `json:"last_irreversible_block_num"` // 2465655 - LastIrreversibleBlockID Checksum256 `json:"last_irreversible_block_id"` // "00000008f98f0580d7efe7abc60abaaf8a865c9428a4267df30ff7d1937a1084" - HeadBlockID Checksum256 `json:"head_block_id"` // "00259f856bfa142d1d60aff77e70f0c4f3eab30789e9539d2684f9f8758f1b88", - HeadBlockTime BlockTimestamp `json:"head_block_time"` // "2018-02-02T04:19:32" - HeadBlockProducer AccountName `json:"head_block_producer"` // "inita" - - VirtualBlockCPULimit Int64 `json:"virtual_block_cpu_limit"` - VirtualBlockNetLimit Int64 `json:"virtual_block_net_limit"` - BlockCPULimit Int64 `json:"block_cpu_limit"` - BlockNetLimit Int64 `json:"block_net_limit"` - ServerVersionString string `json:"server_version_string"` + ServerVersion string `json:"server_version"` // "2cc40a4e" + ChainID Checksum256 `json:"chain_id"` + HeadBlockNum uint32 `json:"head_block_num"` // 2465669, + LastIrreversibleBlockNum uint32 `json:"last_irreversible_block_num"` // 2465655 + LastIrreversibleBlockID Checksum256 `json:"last_irreversible_block_id"` // "00000008f98f0580d7efe7abc60abaaf8a865c9428a4267df30ff7d1937a1084" + HeadBlockID Checksum256 `json:"head_block_id"` // "00259f856bfa142d1d60aff77e70f0c4f3eab30789e9539d2684f9f8758f1b88", + HeadBlockTime BlockTimestamp `json:"head_block_time"` // "2018-02-02T04:19:32" + HeadBlockProducer AccountName `json:"head_block_producer"` // "inita" + EarliestAvailableBlockNum uint64 `json:"earliest_available_block_num"` // added since EOSIO/Leap v2.0 + ForkDbHeadBlockNum uint64 `json:"fork_db_head_block_num"` // added since EOSIO/Leap v2.0 + ForkDbHeadBlockId string `json:"fork_db_head_block_id"` // added since EOSIO/Leap v2.0 + LastIrreversibleBlockTime BlockTimestamp `json:"last_irreversible_block_time"` // added since EOSIO/Leap v2.0 + + VirtualBlockCPULimit Int64 `json:"virtual_block_cpu_limit"` + VirtualBlockNetLimit Int64 `json:"virtual_block_net_limit"` + BlockCPULimit Int64 `json:"block_cpu_limit"` + BlockNetLimit Int64 `json:"block_net_limit"` + TotalCpuWeight Int64 `json:"total_cpu_weight"` // added since EOSIO/Leap v2.0 + TotalNetWeight Int64 `json:"total_net_weight"` // added since EOSIO/Leap v2.0 + ServerVersionString string `json:"server_version_string"` + ServerFullVersionString string `json:"server_full_version_string"` // added since EOSIO/Leap v2.0 } type BlockResp struct { @@ -211,8 +227,8 @@ type ProducerChange struct { type AccountResp struct { AccountName AccountName `json:"account_name"` Privileged bool `json:"privileged"` - LastCodeUpdate JSONTime `json:"last_code_update"` - Created JSONTime `json:"created"` + LastCodeUpdate BlockTimestamp `json:"last_code_update"` // modified since EOSIO/Leap v2.0 YYYY-MM-DDTHH:MM:SS -> YYYY-MM-DDTHH:MM:SS.sss + Created BlockTimestamp `json:"created"` // modified since EOSIO/Leap v2.0 YYYY-MM-DDTHH:MM:SS -> YYYY-MM-DDTHH:MM:SS.sss CoreLiquidBalance Asset `json:"core_liquid_balance"` RAMQuota Int64 `json:"ram_quota"` RAMUsage Int64 `json:"ram_usage"` @@ -225,6 +241,11 @@ type AccountResp struct { SelfDelegatedBandwidth DelegatedBandwidth `json:"self_delegated_bandwidth"` RefundRequest *RefundRequest `json:"refund_request"` VoterInfo VoterInfo `json:"voter_info"` + HeadBlockNum uint64 `json:"head_block_num"` // added since EOSIO/Leap v2.0 + HeadBlockTime BlockTimestamp `json:"head_block_time"` // added since EOSIO/Leap v2.0 + RexInfo *RexInfo `json:"rex_info,omitempty"` // added since EOSIO/Leap v2.0 + SubjectiveSpuBillLimit AccountResourceLimit `json:"subjective_cpu_bill_limit"` // added since EOSIO/Leap v2.0 + EosioAnyLinkedActions []LinkedAction `json:"eosio_any_linked_actions"` // added since EOSIO/Leap v2.0 } type CurrencyBalanceResp struct { diff --git a/testdata/mock_server/chain_get_abi.json b/testdata/mock_server/chain_get_abi.json new file mode 100644 index 00000000..50fb53e8 --- /dev/null +++ b/testdata/mock_server/chain_get_abi.json @@ -0,0 +1,248 @@ +{ + "account_name": "tippedtipped", + "abi": { + "version": "eosio::abi/1.1", + "types": [], + "structs": [ + { + "name": "account", + "base": "", + "fields": [ + { + "name": "owner", + "type": "uint64" + }, + { + "name": "balances", + "type": "pair_extended_symbol_int64[]" + } + ] + }, + { + "name": "clrone", + "base": "", + "fields": [ + { + "name": "id", + "type": "uint64" + } + ] + }, + { + "name": "clronesym", + "base": "", + "fields": [ + { + "name": "id", + "type": "uint64" + }, + { + "name": "sym", + "type": "symbol" + }, + { + "name": "con", + "type": "name" + } + ] + }, + { + "name": "extended_symbol", + "base": "", + "fields": [ + { + "name": "symbol", + "type": "symbol" + }, + { + "name": "contract", + "type": "name" + } + ] + }, + { + "name": "pair_extended_symbol_int64", + "base": "", + "fields": [ + { + "name": "key", + "type": "extended_symbol" + }, + { + "name": "value", + "type": "int64" + } + ] + }, + { + "name": "payforcpu", + "base": "", + "fields": [ + { + "name": "user", + "type": "name" + } + ] + }, + { + "name": "rex", + "base": "", + "fields": [ + { + "name": "type", + "type": "string" + }, + { + "name": "from", + "type": "uint64" + }, + { + "name": "to", + "type": "name" + }, + { + "name": "quantity", + "type": "asset" + } + ] + }, + { + "name": "tip", + "base": "", + "fields": [ + { + "name": "contract", + "type": "name" + }, + { + "name": "from", + "type": "uint64" + }, + { + "name": "to", + "type": "uint64" + }, + { + "name": "from_username", + "type": "string" + }, + { + "name": "to_username", + "type": "string" + }, + { + "name": "quantity", + "type": "asset" + }, + { + "name": "memo", + "type": "string" + } + ] + }, + { + "name": "transfer", + "base": "", + "fields": [ + { + "name": "from", + "type": "name" + }, + { + "name": "to", + "type": "name" + }, + { + "name": "quantity", + "type": "asset" + }, + { + "name": "memo", + "type": "string" + } + ] + }, + { + "name": "withdraw", + "base": "", + "fields": [ + { + "name": "contract", + "type": "name" + }, + { + "name": "from", + "type": "uint64" + }, + { + "name": "from_username", + "type": "string" + }, + { + "name": "to", + "type": "name" + }, + { + "name": "quantity", + "type": "asset" + }, + { + "name": "memo", + "type": "string" + } + ] + } + ], + "actions": [ + { + "name": "clrone", + "type": "clrone", + "ricardian_contract": "" + }, + { + "name": "clronesym", + "type": "clronesym", + "ricardian_contract": "" + }, + { + "name": "payforcpu", + "type": "payforcpu", + "ricardian_contract": "" + }, + { + "name": "rex", + "type": "rex", + "ricardian_contract": "" + }, + { + "name": "tip", + "type": "tip", + "ricardian_contract": "" + }, + { + "name": "transfer", + "type": "transfer", + "ricardian_contract": "" + }, + { + "name": "withdraw", + "type": "withdraw", + "ricardian_contract": "" + } + ], + "tables": [ + { + "name": "accounts", + "index_type": "i64", + "key_names": [], + "key_types": [], + "type": "account" + } + ], + "ricardian_clauses": [], + "error_messages": [], + "abi_extensions": [], + "variants": [], + "action_results": [] + } +} \ No newline at end of file diff --git a/testdata/mock_server/chain_get_account.json b/testdata/mock_server/chain_get_account.json new file mode 100644 index 00000000..dc4b9e88 --- /dev/null +++ b/testdata/mock_server/chain_get_account.json @@ -0,0 +1,251 @@ +{ + "account_name": "teamgreymass", + "head_block_num": 273269383, + "head_block_time": "2022-10-15T05:14:23.500", + "privileged": false, + "last_code_update": "1970-01-01T00:00:00", + "created": "2018-06-10T13:04:15", + "core_liquid_balance": "7255.0883 EOS", + "ram_quota": 67988, + "net_weight": 4503251, + "cpu_weight": "13483146060", + "net_limit": { + "used": 245263, + "available": 8227837, + "max": 8473100 + }, + "cpu_limit": { + "used": 958474, + "available": 255675, + "max": 1214149 + }, + "ram_usage": 17086, + "permissions": [ + { + "perm_name": "active", + "parent": "owner", + "required_auth": { + "threshold": 1, + "keys": [ + { + "key": "EOS6gqJ7sdPgjHLFLtks9cRPs5qYHa9U3CwK4P2JasTLWKQ9kXZK1", + "weight": 1 + } + ] + }, + "linked_actions": [] + }, + { + "perm_name": "claim", + "parent": "active", + "required_auth": { + "threshold": 1, + "keys": [ + { + "key": "EOS6DLD9HxMcwn73U41jjdGsNe9vDFRKB26um6qTAqrtYcJFtED4C", + "weight": 1 + } + ] + }, + "linked_actions": [ + { + "account": "eosio", + "action": "claimrewards" + } + ] + }, + { + "perm_name": "decentium", + "parent": "active", + "required_auth": { + "threshold": 1, + "keys": [ + { + "key": "EOS7knG7M5TUEdRv1bkVjTPddVoDQnwS7oEZXAgFk3A4hhocA3eJf", + "weight": 1 + } + ] + }, + "linked_actions": [ + { + "account": "decentiumorg" + } + ] + }, + { + "perm_name": "killswitch", + "parent": "active", + "required_auth": { + "threshold": 1, + "keys": [ + { + "key": "EOS7CjC7GL71msPzAuAzd2WwiBEAzTcPL47ACrjSuiNmnnGGufYSn", + "weight": 1 + } + ] + }, + "linked_actions": [ + { + "account": "eosio", + "action": "unregprod" + } + ] + }, + { + "perm_name": "oracle", + "parent": "active", + "required_auth": { + "threshold": 1, + "keys": [ + { + "key": "EOS88VqmDmJJ9S23eNqdeWYf2zySxv3ckQrWBKy7EvVRCUuhSU4f3", + "weight": 1 + } + ] + }, + "linked_actions": [ + { + "account": "delphioracle", + "action": "write" + } + ] + }, + { + "perm_name": "owner", + "parent": "", + "required_auth": { + "threshold": 1, + "keys": [ + { + "key": "EOS8QzGtCea2thiqcTVeXGdyRZpdKYptQznbcWSMj73FD5RgwKN82", + "weight": 1 + } + ] + }, + "linked_actions": [] + }, + { + "perm_name": "producerjson", + "parent": "active", + "required_auth": { + "threshold": 1, + "keys": [ + { + "key": "EOS5JCEciUdfXnQmTyj85T98bXTAZZ1g7Nmajseu7ZWB8DrDa6Etp", + "weight": 1 + } + ] + }, + "linked_actions": [ + { + "account": "producerjson", + "action": "set" + } + ] + }, + { + "perm_name": "transfer", + "parent": "active", + "required_auth": { + "threshold": 1, + "keys": [ + { + "key": "EOS6AkZZ5YZ6G5eCQGJBAPbkmouEaiSKFkdM289wEMKcf2rnx7mrb", + "weight": 1 + }, + { + "key": "EOS6RWZ1CmDL4B6LdixuertnzxcRuUDac3NQspJEvMnebGcUwhvfX", + "weight": 1 + } + ] + }, + "linked_actions": [ + { + "account": "eosio.token", + "action": "transfer" + } + ] + }, + { + "perm_name": "vote", + "parent": "active", + "required_auth": { + "threshold": 1, + "keys": [ + { + "key": "EOS65NrHPVXaV4voxepQREmYCmnMJm4tAWdxPaK46CbUN1rrVmRzg", + "weight": 1 + } + ] + }, + "linked_actions": [ + { + "account": "eosio", + "action": "voteproducer" + } + ] + }, + { + "perm_name": "voting", + "parent": "active", + "required_auth": { + "threshold": 1, + "keys": [ + { + "key": "EOS7pn6P5FftyNAKRfx9VcUzBFMvC4UitNbnoKbfxNe8SShELo2it", + "weight": 1 + } + ] + }, + "linked_actions": [ + { + "account": "eosio.forum", + "action": "vote" + }, + { + "account": "eosio.forum", + "action": "unvote" + } + ] + } + ], + "total_resources": { + "owner": "teamgreymass", + "net_weight": "450.3251 EOS", + "cpu_weight": "1348314.6060 EOS", + "ram_bytes": 66588 + }, + "self_delegated_bandwidth": { + "cpu_weight": "20.1500 EOS", + "from": "teamgreymass", + "net_weight": "2.0500 EOS", + "to": "teamgreymass" + }, + "refund_request": null, + "voter_info": { + "owner": "teamgreymass", + "proxy": "greymassvote", + "producers": [], + "staked": 100202, + "last_vote_weight": "697460718699.945435", + "proxied_vote_weight": "0.000000", + "is_proxy": 0, + "flags1": 0, + "reserved2": 0, + "reserved3": "0.0000 EOS" + }, + "rex_info": { + "version": 0, + "owner": "teamgreymass", + "vote_stake": "0.0000 EOS", + "rex_balance": "0.1768 REX", + "matured_rex": 1768, + "rex_maturities": null + }, + "subjective_cpu_bill_limit": { + "used": 0, + "available": 0, + "max": 0 + }, + "eosio_any_linked_actions": null +} diff --git a/testdata/mock_server/chain_get_block.json b/testdata/mock_server/chain_get_block.json new file mode 100644 index 00000000..1e0057a7 --- /dev/null +++ b/testdata/mock_server/chain_get_block.json @@ -0,0 +1,5817 @@ +{ + "timestamp": "2022-10-15T07:13:42.000", + "producer": "eosiosg11111", + "confirmed": 240, + "previous": "1049fa737265f6c2d46428c2ee89cd5be29dc2b9a0615afc6af4c8df6ffa7845", + "transaction_mroot": "f7cadbcc33efad01eacc153d2013ce9e50fe4f0d664df657a354a3d06ac569ab", + "action_mroot": "0378d11e50e8ee4c8673a06ece81933d672ff0578aec743aad4f6962309dca58", + "schedule_version": 2043, + "new_producers": null, + "producer_signature": "SIG_K1_KbbKB47LguWUfhYfqcZPNTR6Nd8hgLV4CfF1GSxLf7TBqwaFDbbXdMvDDQKhp5186HSWz1MgmNt2qPHVWdY6KAkZaDbEab", + "transactions": [ + { + "status": "executed", + "cpu_usage_us": 129, + "net_usage_words": 15, + "trx": { + "id": "7a7a30e29098bd44efae9d3f7dbc0d870d479e65ef084c8b1ffe7c24a8bcae7a", + "signatures": [ + "SIG_K1_K8r5on6KEV6qbFhzZY7Lk64BQUG8rj9B1fr1jPRvaSTgyhdoWRBTqf7jEjMiZjfKQBqMmB7nmms3xKhphoHMgC6M8mycE7" + ], + "compression": "none", + "packed_context_free_data": "", + "context_free_data": [], + "packed_trx": "345e4a6320fa1a7d096a0000000001a09899fe369cbe6a0000000000a0a6930180b19a512f852e5d00000000a8ed32321880b19a512f852e5dc5da030000000000491f06000000000000", + "transaction": { + "expiration": "2022-10-15T07:16:04", + "ref_block_num": 64032, + "ref_block_prefix": 1779006746, + "max_net_usage_words": 0, + "max_cpu_usage_ms": 0, + "delay_sec": 0, + "context_free_actions": [], + "actions": [ + { + "account": "hezdshrynage", + "name": "mine", + "authorization": [ + { + "actor": "forcefulness", + "permission": "active" + } + ], + "data": { + "miner": "forcefulness", + "nonce": 252613, + "entry": 401225 + }, + "hex_data": "80b19a512f852e5dc5da030000000000491f060000000000" + } + ] + } + } + }, + { + "status": "executed", + "cpu_usage_us": 493, + "net_usage_words": 14, + "trx": { + "id": "768fc6482ee088096338d61aec1185b7266ee6a87d5f92d45604110601bdf0c5", + "signatures": [ + "SIG_K1_KZY6o5zZVwYNv1cCk5t8ycbVEebeZhP4sdiEdHZpNNt7SHkkmW1egSmweQwx4gCVY1ZpZ8x6ZRQu2FGwZxM3BdN7hqpPuQ" + ], + "compression": "none", + "packed_context_free_data": "", + "context_free_data": [], + "packed_trx": "ae5d4a6331fa7afdaf160000000001000000a063d0b0ae0000000000a0a6930160249d46ea69a49b00000000a8ed32321060249d46ea69a49bc12500000000000000", + "transaction": { + "expiration": "2022-10-15T07:13:50", + "ref_block_num": 64049, + "ref_block_prefix": 380632442, + "max_net_usage_words": 0, + "max_cpu_usage_ms": 0, + "delay_sec": 0, + "context_free_actions": [], + "actions": [ + { + "account": "push.sx", + "name": "mine", + "authorization": [ + { + "actor": "nimanumanoma", + "permission": "active" + } + ], + "data": { + "executor": "nimanumanoma", + "nonce": 9665 + }, + "hex_data": "60249d46ea69a49bc125000000000000" + } + ] + } + } + }, + { + "status": "executed", + "cpu_usage_us": 550, + "net_usage_words": 31, + "trx": { + "id": "0e3ef292c2a9a1d7ea44bf8a4cf5ab6f2810071c754867bd42f55b1c90bdebe9", + "signatures": [ + "SIG_K1_K7LvXvRgNj3uFSa9kdWZTkDvKKJLg6mYLsQUYutaW6RPaPvpZiLQXRjEyUSmvmXRhQ4T5YvoNpESfioajrSheawUB3d2mv", + "SIG_K1_KbXHGbbyd2UQqju6Vv6hf62ZK7U5LArPKX7UE5uWqXgUMQant4GUZhrBdGnZLv52AMGK1GoJpNyiAYjcyUwC36bki1FekM" + ], + "compression": "none", + "packed_context_free_data": "", + "context_free_data": [], + "packed_trx": "cf5d4a634efa1aa530850000000002a0649a2656ed4dac0000d0155dbabca901a0649a2656ed4dac0000d0155dbabca90890366a749791e489a0649a2656ed4dac000000000000c2980190366a749791e48900000000a46962d56190366a749791e4890b634d1bebd54700001d4d1b7fc64700005c4d1b07d6470000564d1bfcd5470000cd571b15c2470000cd571b10c24700005c4d1becd5470000534d1bfcd54700002d4d1b05d2470000294d1bfed1470000644d1bb6d147000000", + "transaction": { + "expiration": "2022-10-15T07:14:23", + "ref_block_num": 64078, + "ref_block_prefix": 2234557722, + "max_net_usage_words": 0, + "max_cpu_usage_ms": 0, + "delay_sec": 0, + "context_free_actions": [], + "actions": [ + { + "account": "playuplandme", + "name": "payforcpu", + "authorization": [ + { + "actor": "playuplandme", + "permission": "payforcpu" + } + ], + "data": { + "user_name": "lbmd35vohcvd" + }, + "hex_data": "90366a749791e489" + }, + { + "account": "playuplandme", + "name": "n31", + "authorization": [ + { + "actor": "lbmd35vohcvd", + "permission": "upland" + } + ], + "data": { + "a54": "lbmd35vohcvd", + "p55": [ + "78984098041187", + "78917861592349", + "78984567803228", + "78984383253846", + "78898903341005", + "78898819454925", + "78984114818396", + "78984383253843", + "78967354379565", + "78967236939049", + "78966028979556" + ] + }, + "hex_data": "90366a749791e4890b634d1bebd54700001d4d1b7fc64700005c4d1b07d6470000564d1bfcd5470000cd571b15c2470000cd571b10c24700005c4d1becd5470000534d1bfcd54700002d4d1b05d2470000294d1bfed1470000644d1bb6d1470000" + } + ] + } + } + }, + { + "status": "executed", + "cpu_usage_us": 120, + "net_usage_words": 15, + "trx": { + "id": "188765364a7d637c56455a1114c041250d655dc04a7cf4f03563c53623d31a7d", + "signatures": [ + "SIG_K1_K2DwnnaR9oHnMFP3zbJ5FRaE65x5d18gr5hnXE6kwuSt5DQm4smhapSn3rJFS6y2wFM9MhpmM4X37SEajSnAg8FWKEgChJ" + ], + "compression": "none", + "packed_context_free_data": "", + "context_free_data": [], + "packed_trx": "b85d4a6317f94cac290f00000000019091b97952a412d6201472b7aa6c52d50190d14449a9a512d600000000a8ed3232159091b97952a412d603454f53602700009a5d4a630000", + "transaction": { + "expiration": "2022-10-15T07:14:00", + "ref_block_num": 63767, + "ref_block_prefix": 254389324, + "max_net_usage_words": 0, + "max_cpu_usage_ms": 0, + "delay_sec": 0, + "context_free_actions": [], + "actions": [ + { + "account": "usdecontract", + "name": "updateprice2", + "authorization": [ + { + "actor": "usdefeedcnct", + "permission": "active" + } + ], + "data": { + "contract": "usdecontract", + "sym": "EOS", + "price": 10080, + "time": 1665818010, + "vid": [] + }, + "hex_data": "9091b97952a412d603454f53602700009a5d4a6300" + } + ] + } + } + }, + { + "status": "executed", + "cpu_usage_us": 311, + "net_usage_words": 33, + "trx": { + "id": "7d2a6715d9f1094ea7681a0538b670498197ea595450515b33650f055dbdbbc6", + "signatures": [ + "SIG_K1_Jz9JREXXf67gYohC8v3pvShPbzYevrmPeSY6oYYhdX2psoQSQon4r6G6SKjWGXi7UjY5tM2gJkpSB8rUkMizWFhp7G8kCp", + "SIG_K1_K6ftA7KniJqAZCxxFBuSoHTZMgYjFpt6QhM9fUQakYGW8AiuTBr9rvFd1C8Cfsax6PbvqQLuYF3duhFXYUvEDJtHgpdb9d", + "SIG_K1_K458TRhSXfR2MnNdGpp1MGb3CWXhXsBKtYRnq6KDUDnbDo35hFA8grC8rkBUPTdGAMZJdK21rU4pzSJe4H1Fvr1jnDNJ7y" + ], + "compression": "none", + "packed_context_free_data": "", + "context_free_data": [], + "packed_trx": "776b4a63f6f9c726d6870000000003a0649a2656ed4dac0000d0155dbabca901a0649a2656ed4dac0000d0155dbabca90820bee556237e5ded90113253419a7bd5000000572d3ccdcd0120bee556237e5ded00000000a46962d52120bee556237e5deda0649a2656ed4daca00f000000000000025550580000000000a0649a2656ed4dac000000000000029901a0649a2656ed4dac000000c067175dd62020bee556237e5dedcca22a816e470000a00f000000000000025550580000000000", + "transaction": { + "expiration": "2022-10-15T08:12:39", + "ref_block_num": 63990, + "ref_block_prefix": 2278958791, + "max_net_usage_words": 0, + "max_cpu_usage_ms": 0, + "delay_sec": 0, + "context_free_actions": [], + "actions": [ + { + "account": "playuplandme", + "name": "payforcpu", + "authorization": [ + { + "actor": "playuplandme", + "permission": "payforcpu" + } + ], + "data": { + "user_name": "xpirwcuqwqz2" + }, + "hex_data": "20bee556237e5ded" + }, + { + "account": "upxtokenacct", + "name": "transfer", + "authorization": [ + { + "actor": "xpirwcuqwqz2", + "permission": "upland" + } + ], + "data": { + "from": "xpirwcuqwqz2", + "to": "playuplandme", + "quantity": "40.00 UPX", + "memo": "" + }, + "hex_data": "20bee556237e5deda0649a2656ed4daca00f000000000000025550580000000000" + }, + { + "account": "playuplandme", + "name": "n41", + "authorization": [ + { + "actor": "playuplandme", + "permission": "utility" + } + ], + "data": { + "p51": "xpirwcuqwqz2", + "a45": "78539939029708", + "p54": "40.00 UPX" + }, + "hex_data": "20bee556237e5dedcca22a816e470000a00f0000000000000255505800000000" + } + ] + } + } + }, + { + "status": "executed", + "cpu_usage_us": 965, + "net_usage_words": 183, + "trx": { + "id": "83136704640235b96d19bb3aa805800754218f2ef242a6f2f52b1ada24b84219", + "signatures": [ + "SIG_K1_KZc2twcuoJirnLbgAfrC16toARp57ZfsPso1Sk2qMkW6F87Cnn48Vb4bvWMLgfzG7hPUVv189pBqAVjNhqXycDDqTGczmj", + "SIG_K1_KmBNjXR49DbzZEGS2WJyEK3okB9CHSk3vgp7yFw4eDYQzeUnmH6jejddkL5vzw4bYT95wLkPTon3AwQfYrEAwrRzwBjqFc" + ], + "compression": "none", + "packed_context_free_data": "", + "context_free_data": [], + "packed_trx": "b75d4a6359fa3c3f5b54000000001500dc5209a888cca500000000a86c52d5020000006ea904744500000000a8ed32327055ce4e1e8d315500000000a8ed3232107055ce4e1e8d3155010000000000000000dc5209a888cca500000000a86c52d5020000006ea904744500000000a8ed32327055ce4e1e8d315500000000a8ed3232107055ce4e1e8d3155020000000000000000dc5209a888cca500000000a86c52d5020000006ea904744500000000a8ed32327055ce4e1e8d315500000000a8ed3232107055ce4e1e8d3155030000000000000000dc5209a888cca500000000a86c52d5020000006ea904744500000000a8ed32327055ce4e1e8d315500000000a8ed3232107055ce4e1e8d3155040000000000000000dc5209a888cca500000000a86c52d5020000006ea904744500000000a8ed32327055ce4e1e8d315500000000a8ed3232107055ce4e1e8d3155050000000000000000dc5209a888cca500000000a86c52d5020000006ea904744500000000a8ed32327055ce4e1e8d315500000000a8ed3232107055ce4e1e8d3155060000000000000000dc5209a888cca500000000a86c52d5020000006ea904744500000000a8ed32327055ce4e1e8d315500000000a8ed3232107055ce4e1e8d3155070000000000000000dc5209a888cca500000000a86c52d5020000006ea904744500000000a8ed32327055ce4e1e8d315500000000a8ed3232107055ce4e1e8d3155080000000000000000dc5209a888cca500000000a86c52d5020000006ea904744500000000a8ed32327055ce4e1e8d315500000000a8ed3232107055ce4e1e8d3155090000000000000000dc5209a888cca500000000a86c52d5020000006ea904744500000000a8ed32327055ce4e1e8d315500000000a8ed3232107055ce4e1e8d31550a0000000000000000dc5209a888cca500000000a86c52d5020000006ea904744500000000a8ed32327055ce4e1e8d315500000000a8ed3232107055ce4e1e8d31550b0000000000000000dc5209a888cca500000000a86c52d5020000006ea904744500000000a8ed32327055ce4e1e8d315500000000a8ed3232107055ce4e1e8d31550c0000000000000000dc5209a888cca500000000a86c52d5020000006ea904744500000000a8ed32327055ce4e1e8d315500000000a8ed3232107055ce4e1e8d31550d0000000000000000dc5209a888cca500000000a86c52d5020000006ea904744500000000a8ed32327055ce4e1e8d315500000000a8ed3232107055ce4e1e8d31550e0000000000000000dc5209a888cca500000000a86c52d5020000006ea904744500000000a8ed32327055ce4e1e8d315500000000a8ed3232107055ce4e1e8d31550f0000000000000000dc5209a888cca500000000a86c52d5020000006ea904744500000000a8ed32327055ce4e1e8d315500000000a8ed3232107055ce4e1e8d3155100000000000000000dc5209a888cca500000000a86c52d5020000006ea904744500000000a8ed32327055ce4e1e8d315500000000a8ed3232107055ce4e1e8d3155110000000000000000dc5209a888cca500000000a86c52d5020000006ea904744500000000a8ed32327055ce4e1e8d315500000000a8ed3232107055ce4e1e8d3155120000000000000000dc5209a888cca500000000a86c52d5020000006ea904744500000000a8ed32327055ce4e1e8d315500000000a8ed3232107055ce4e1e8d3155130000000000000000dc5209a888cca500000000a86c52d5020000006ea904744500000000a8ed32327055ce4e1e8d315500000000a8ed3232107055ce4e1e8d3155140000000000000000dc5209a888cca500000000a86c52d5020000006ea904744500000000a8ed32327055ce4e1e8d315500000000a8ed3232107055ce4e1e8d3155150000000000000000", + "transaction": { + "expiration": "2022-10-15T07:13:59", + "ref_block_num": 64089, + "ref_block_prefix": 1415266108, + "max_net_usage_words": 0, + "max_cpu_usage_ms": 0, + "delay_sec": 0, + "context_free_actions": [], + "actions": [ + { + "account": "oracle.defi", + "name": "update", + "authorization": [ + { + "actor": "cpu.defi", + "permission": "active" + }, + { + "actor": "eossubmitter", + "permission": "active" + } + ], + "data": { + "submitter": "eossubmitter", + "price_id": 1 + }, + "hex_data": "7055ce4e1e8d31550100000000000000" + }, + { + "account": "oracle.defi", + "name": "update", + "authorization": [ + { + "actor": "cpu.defi", + "permission": "active" + }, + { + "actor": "eossubmitter", + "permission": "active" + } + ], + "data": { + "submitter": "eossubmitter", + "price_id": 2 + }, + "hex_data": "7055ce4e1e8d31550200000000000000" + }, + { + "account": "oracle.defi", + "name": "update", + "authorization": [ + { + "actor": "cpu.defi", + "permission": "active" + }, + { + "actor": "eossubmitter", + "permission": "active" + } + ], + "data": { + "submitter": "eossubmitter", + "price_id": 3 + }, + "hex_data": "7055ce4e1e8d31550300000000000000" + }, + { + "account": "oracle.defi", + "name": "update", + "authorization": [ + { + "actor": "cpu.defi", + "permission": "active" + }, + { + "actor": "eossubmitter", + "permission": "active" + } + ], + "data": { + "submitter": "eossubmitter", + "price_id": 4 + }, + "hex_data": "7055ce4e1e8d31550400000000000000" + }, + { + "account": "oracle.defi", + "name": "update", + "authorization": [ + { + "actor": "cpu.defi", + "permission": "active" + }, + { + "actor": "eossubmitter", + "permission": "active" + } + ], + "data": { + "submitter": "eossubmitter", + "price_id": 5 + }, + "hex_data": "7055ce4e1e8d31550500000000000000" + }, + { + "account": "oracle.defi", + "name": "update", + "authorization": [ + { + "actor": "cpu.defi", + "permission": "active" + }, + { + "actor": "eossubmitter", + "permission": "active" + } + ], + "data": { + "submitter": "eossubmitter", + "price_id": 6 + }, + "hex_data": "7055ce4e1e8d31550600000000000000" + }, + { + "account": "oracle.defi", + "name": "update", + "authorization": [ + { + "actor": "cpu.defi", + "permission": "active" + }, + { + "actor": "eossubmitter", + "permission": "active" + } + ], + "data": { + "submitter": "eossubmitter", + "price_id": 7 + }, + "hex_data": "7055ce4e1e8d31550700000000000000" + }, + { + "account": "oracle.defi", + "name": "update", + "authorization": [ + { + "actor": "cpu.defi", + "permission": "active" + }, + { + "actor": "eossubmitter", + "permission": "active" + } + ], + "data": { + "submitter": "eossubmitter", + "price_id": 8 + }, + "hex_data": "7055ce4e1e8d31550800000000000000" + }, + { + "account": "oracle.defi", + "name": "update", + "authorization": [ + { + "actor": "cpu.defi", + "permission": "active" + }, + { + "actor": "eossubmitter", + "permission": "active" + } + ], + "data": { + "submitter": "eossubmitter", + "price_id": 9 + }, + "hex_data": "7055ce4e1e8d31550900000000000000" + }, + { + "account": "oracle.defi", + "name": "update", + "authorization": [ + { + "actor": "cpu.defi", + "permission": "active" + }, + { + "actor": "eossubmitter", + "permission": "active" + } + ], + "data": { + "submitter": "eossubmitter", + "price_id": 10 + }, + "hex_data": "7055ce4e1e8d31550a00000000000000" + }, + { + "account": "oracle.defi", + "name": "update", + "authorization": [ + { + "actor": "cpu.defi", + "permission": "active" + }, + { + "actor": "eossubmitter", + "permission": "active" + } + ], + "data": { + "submitter": "eossubmitter", + "price_id": 11 + }, + "hex_data": "7055ce4e1e8d31550b00000000000000" + }, + { + "account": "oracle.defi", + "name": "update", + "authorization": [ + { + "actor": "cpu.defi", + "permission": "active" + }, + { + "actor": "eossubmitter", + "permission": "active" + } + ], + "data": { + "submitter": "eossubmitter", + "price_id": 12 + }, + "hex_data": "7055ce4e1e8d31550c00000000000000" + }, + { + "account": "oracle.defi", + "name": "update", + "authorization": [ + { + "actor": "cpu.defi", + "permission": "active" + }, + { + "actor": "eossubmitter", + "permission": "active" + } + ], + "data": { + "submitter": "eossubmitter", + "price_id": 13 + }, + "hex_data": "7055ce4e1e8d31550d00000000000000" + }, + { + "account": "oracle.defi", + "name": "update", + "authorization": [ + { + "actor": "cpu.defi", + "permission": "active" + }, + { + "actor": "eossubmitter", + "permission": "active" + } + ], + "data": { + "submitter": "eossubmitter", + "price_id": 14 + }, + "hex_data": "7055ce4e1e8d31550e00000000000000" + }, + { + "account": "oracle.defi", + "name": "update", + "authorization": [ + { + "actor": "cpu.defi", + "permission": "active" + }, + { + "actor": "eossubmitter", + "permission": "active" + } + ], + "data": { + "submitter": "eossubmitter", + "price_id": 15 + }, + "hex_data": "7055ce4e1e8d31550f00000000000000" + }, + { + "account": "oracle.defi", + "name": "update", + "authorization": [ + { + "actor": "cpu.defi", + "permission": "active" + }, + { + "actor": "eossubmitter", + "permission": "active" + } + ], + "data": { + "submitter": "eossubmitter", + "price_id": 16 + }, + "hex_data": "7055ce4e1e8d31551000000000000000" + }, + { + "account": "oracle.defi", + "name": "update", + "authorization": [ + { + "actor": "cpu.defi", + "permission": "active" + }, + { + "actor": "eossubmitter", + "permission": "active" + } + ], + "data": { + "submitter": "eossubmitter", + "price_id": 17 + }, + "hex_data": "7055ce4e1e8d31551100000000000000" + }, + { + "account": "oracle.defi", + "name": "update", + "authorization": [ + { + "actor": "cpu.defi", + "permission": "active" + }, + { + "actor": "eossubmitter", + "permission": "active" + } + ], + "data": { + "submitter": "eossubmitter", + "price_id": 18 + }, + "hex_data": "7055ce4e1e8d31551200000000000000" + }, + { + "account": "oracle.defi", + "name": "update", + "authorization": [ + { + "actor": "cpu.defi", + "permission": "active" + }, + { + "actor": "eossubmitter", + "permission": "active" + } + ], + "data": { + "submitter": "eossubmitter", + "price_id": 19 + }, + "hex_data": "7055ce4e1e8d31551300000000000000" + }, + { + "account": "oracle.defi", + "name": "update", + "authorization": [ + { + "actor": "cpu.defi", + "permission": "active" + }, + { + "actor": "eossubmitter", + "permission": "active" + } + ], + "data": { + "submitter": "eossubmitter", + "price_id": 20 + }, + "hex_data": "7055ce4e1e8d31551400000000000000" + }, + { + "account": "oracle.defi", + "name": "update", + "authorization": [ + { + "actor": "cpu.defi", + "permission": "active" + }, + { + "actor": "eossubmitter", + "permission": "active" + } + ], + "data": { + "submitter": "eossubmitter", + "price_id": 21 + }, + "hex_data": "7055ce4e1e8d31551500000000000000" + } + ] + } + } + }, + { + "status": "executed", + "cpu_usage_us": 123, + "net_usage_words": 17, + "trx": { + "id": "31bc138a4615a392239d3cd79c36a536c6ad4d93db48a01f6785a82c8d57661f", + "signatures": [ + "SIG_K1_JwDcVmyohWczr7gucTFYqJ9tHhzD7A8L8Nt4TtPeqRi5ew9qrNHmMkDDekD7nSA9CfYio2YPjojoPSGZN3FhDfxcCdwYNi" + ], + "compression": "none", + "packed_context_free_data": "", + "context_free_data": [], + "packed_trx": "6f6b4a63e6f9646b161c000000000100a6823403ea3055000000572d3ccdcd0180a9c2d3dc2c294200000000a8ed32322b80a9c2d3dc2c294280a9ca344d4791863cc904000000000004454f53000000000a3138383634353930303600", + "transaction": { + "expiration": "2022-10-15T08:12:31", + "ref_block_num": 63974, + "ref_block_prefix": 471231332, + "max_net_usage_words": 0, + "max_cpu_usage_ms": 0, + "delay_sec": 0, + "context_free_actions": [], + "actions": [ + { + "account": "eosio.token", + "name": "transfer", + "authorization": [ + { + "actor": "ccomtranseos", + "permission": "active" + } + ], + "data": { + "from": "ccomtranseos", + "to": "kucoindoteos", + "quantity": "31.3660 EOS", + "memo": "1886459006" + }, + "hex_data": "80a9c2d3dc2c294280a9ca344d4791863cc904000000000004454f53000000000a31383836343539303036" + } + ] + } + } + }, + { + "status": "executed", + "cpu_usage_us": 198, + "net_usage_words": 21, + "trx": { + "id": "7ac2feaec689510e363da2086c1177ed0da05e7da0c9599fdfee771bcca1e760", + "signatures": [ + "SIG_K1_K4e5yBcGgU72oT41oy8NJe935psRKPfEQWv2gTvCJoCChuLBCZdzTDPidwpnMKt2p2Kzd74QDX4J6KKEPFuUfVySfFbUdk", + "SIG_K1_K3neqocQ3Wy2Ye58BJoVnU3Drj6Qs9eP967cybkBtiUJDHhh96SxXFXWThV3vS75ndRXcmNJpqBs4d8hZBGbBSdAdsXYtj" + ], + "compression": "none", + "packed_context_free_data": "", + "context_free_data": [], + "packed_trx": "d15d4a6351fa79a704780000000002a0649a2656ed4dac0000d0155dbabca901a0649a2656ed4dac0000d0155dbabca908c0213b0952e7c84ca0649a2656ed4dac000000000000c29801c0213b0952e7c84c00000000a46962d511c0213b0952e7c84c015c822d7b034a000000", + "transaction": { + "expiration": "2022-10-15T07:14:25", + "ref_block_num": 64081, + "ref_block_prefix": 2013570937, + "max_net_usage_words": 0, + "max_cpu_usage_ms": 0, + "delay_sec": 0, + "context_free_actions": [], + "actions": [ + { + "account": "playuplandme", + "name": "payforcpu", + "authorization": [ + { + "actor": "playuplandme", + "permission": "payforcpu" + } + ], + "data": { + "user_name": "dn4iiokdbgkw" + }, + "hex_data": "c0213b0952e7c84c" + }, + { + "account": "playuplandme", + "name": "n31", + "authorization": [ + { + "actor": "dn4iiokdbgkw", + "permission": "upland" + } + ], + "data": { + "a54": "dn4iiokdbgkw", + "p55": [ + "81378811937372" + ] + }, + "hex_data": "c0213b0952e7c84c015c822d7b034a0000" + } + ] + } + } + }, + { + "status": "executed", + "cpu_usage_us": 177, + "net_usage_words": 16, + "trx": { + "id": "f1b9d33b8b01c1a79cd6a1e940847d26fac8e4e782f5fd379095370573206755", + "signatures": [ + "SIG_K1_Kh4aEmQkFtzhJAq7kSXv34ZQV9GHS9uiRXYza4mizXdmdy7DerNLxikgXoPXSp4ggUXaiSynP9sbrguJ3pgFndTJ5Keqdb" + ], + "compression": "none", + "packed_context_free_data": "", + "context_free_data": [], + "packed_trx": "b45d4a6353fa6accc7160000000001704ca44865338d54000000000080545701704ca44865338d54000000000080545720709011763b9dd4c190316d4c65338d541d10000000000000044d4e580000000000", + "transaction": { + "expiration": "2022-10-15T07:13:56", + "ref_block_num": 64083, + "ref_block_prefix": 382192746, + "max_net_usage_words": 0, + "max_cpu_usage_ms": 0, + "delay_sec": 0, + "context_free_actions": [], + "actions": [ + { + "account": "emanatecolab", + "name": "exec", + "authorization": [ + { + "actor": "emanatecolab", + "permission": "exec" + } + ], + "data": { + "proposal_name": "sbeduivq2acb", + "owner": "emanateghost", + "value": "0.4125 MNX" + }, + "hex_data": "709011763b9dd4c190316d4c65338d541d10000000000000044d4e5800000000" + } + ] + } + } + }, + { + "status": "executed", + "cpu_usage_us": 574, + "net_usage_words": 137, + "trx": { + "id": "10c85113b050a47846a59c81ac140aaa784693c521cb21c9f20cf552b2cdcc6f", + "signatures": [ + "SIG_K1_K8vHDXWxKBLWYN7fopAbUCAKqhpfACednZDVLHegUoGvzz9HZjbvxebV81meSxSQTKYGtieK4B6bCwmfUh6EnVLJyy2Kjk", + "SIG_K1_Kih1hdKP6CaEoqbCU2YyNEA69imZ7KVXzBGwoq9JXyHaGXUf9DrYnPfWn8eFgQCKCKpZ8Rkw9qEDUEntn9mVugnavzHsZq" + ], + "compression": "none", + "packed_context_free_data": "", + "context_free_data": [], + "packed_trx": "c55e4a635afaec55ba3a00000000010000009d51a02e4590b18b2a9beba24a020040cd204677320e00000000a8ed32320000009d51a02e4500000000a8ed3232c907084948540000000078cfc4060000000000d0c4060000000000d1c4060000000000d2c4060000000000d3c4060000000000d4c4060000000000d5c4060000000000d6c4060000000000d7c4060000000000d8c4060000000000d9c4060000000000dac4060000000000dbc4060000000000dcc4060000000000ddc4060000000000dec4060000000000dfc4060000000000e0c4060000000000e1c4060000000000e2c4060000000000e3c4060000000000e4c4060000000000e5c4060000000000e6c4060000000000e7c4060000000000e8c4060000000000e9c4060000000000eac4060000000000ebc4060000000000ecc4060000000000edc4060000000000eec4060000000000efc4060000000000f0c4060000000000f1c4060000000000f2c4060000000000f3c4060000000000f4c4060000000000f5c4060000000000f6c4060000000000f7c4060000000000f8c4060000000000f9c4060000000000fac4060000000000fbc4060000000000fcc4060000000000fdc4060000000000fec4060000000000ffc406000000000000c506000000000001c506000000000002c506000000000003c506000000000004c506000000000005c506000000000006c506000000000007c506000000000008c506000000000009c50600000000000ac50600000000000bc50600000000000cc50600000000000dc50600000000000ec50600000000000fc506000000000010c506000000000011c506000000000012c506000000000013c506000000000014c506000000000015c506000000000016c506000000000017c506000000000018c506000000000019c50600000000001ac50600000000001bc50600000000001cc50600000000001dc50600000000001ec50600000000001fc506000000000020c506000000000021c506000000000022c506000000000023c506000000000024c506000000000025c506000000000026c506000000000027c506000000000028c506000000000029c50600000000002ac50600000000002bc50600000000002cc50600000000002dc50600000000002ec50600000000002fc506000000000030c506000000000031c506000000000032c506000000000033c506000000000034c506000000000035c506000000000036c506000000000037c506000000000038c506000000000039c50600000000003ac50600000000003bc50600000000003cc50600000000003dc50600000000003ec50600000000003fc506000000000040c506000000000041c506000000000042c506000000000043c506000000000044c506000000000045c506000000000046c506000000000000", + "transaction": { + "expiration": "2022-10-15T07:18:29", + "ref_block_num": 64090, + "ref_block_prefix": 985290220, + "max_net_usage_words": 0, + "max_cpu_usage_ms": 0, + "delay_sec": 0, + "context_free_actions": [], + "actions": [ + { + "account": "core.ogx", + "name": "deliratelist", + "authorization": [ + { + "actor": "1stbill.tp", + "permission": "active" + }, + { + "actor": "core.ogx", + "permission": "active" + } + ], + "data": { + "sym": "8,IHT", + "round_list": [ + 443599, + 443600, + 443601, + 443602, + 443603, + 443604, + 443605, + 443606, + 443607, + 443608, + 443609, + 443610, + 443611, + 443612, + 443613, + 443614, + 443615, + 443616, + 443617, + 443618, + 443619, + 443620, + 443621, + 443622, + 443623, + 443624, + 443625, + 443626, + 443627, + 443628, + 443629, + 443630, + 443631, + 443632, + 443633, + 443634, + 443635, + 443636, + 443637, + 443638, + 443639, + 443640, + 443641, + 443642, + 443643, + 443644, + 443645, + 443646, + 443647, + 443648, + 443649, + 443650, + 443651, + 443652, + 443653, + 443654, + 443655, + 443656, + 443657, + 443658, + 443659, + 443660, + 443661, + 443662, + 443663, + 443664, + 443665, + 443666, + 443667, + 443668, + 443669, + 443670, + 443671, + 443672, + 443673, + 443674, + 443675, + 443676, + 443677, + 443678, + 443679, + 443680, + 443681, + 443682, + 443683, + 443684, + 443685, + 443686, + 443687, + 443688, + 443689, + 443690, + 443691, + 443692, + 443693, + 443694, + 443695, + 443696, + 443697, + 443698, + 443699, + 443700, + 443701, + 443702, + 443703, + 443704, + 443705, + 443706, + 443707, + 443708, + 443709, + 443710, + 443711, + 443712, + 443713, + 443714, + 443715, + 443716, + 443717, + 443718 + ] + }, + "hex_data": "084948540000000078cfc4060000000000d0c4060000000000d1c4060000000000d2c4060000000000d3c4060000000000d4c4060000000000d5c4060000000000d6c4060000000000d7c4060000000000d8c4060000000000d9c4060000000000dac4060000000000dbc4060000000000dcc4060000000000ddc4060000000000dec4060000000000dfc4060000000000e0c4060000000000e1c4060000000000e2c4060000000000e3c4060000000000e4c4060000000000e5c4060000000000e6c4060000000000e7c4060000000000e8c4060000000000e9c4060000000000eac4060000000000ebc4060000000000ecc4060000000000edc4060000000000eec4060000000000efc4060000000000f0c4060000000000f1c4060000000000f2c4060000000000f3c4060000000000f4c4060000000000f5c4060000000000f6c4060000000000f7c4060000000000f8c4060000000000f9c4060000000000fac4060000000000fbc4060000000000fcc4060000000000fdc4060000000000fec4060000000000ffc406000000000000c506000000000001c506000000000002c506000000000003c506000000000004c506000000000005c506000000000006c506000000000007c506000000000008c506000000000009c50600000000000ac50600000000000bc50600000000000cc50600000000000dc50600000000000ec50600000000000fc506000000000010c506000000000011c506000000000012c506000000000013c506000000000014c506000000000015c506000000000016c506000000000017c506000000000018c506000000000019c50600000000001ac50600000000001bc50600000000001cc50600000000001dc50600000000001ec50600000000001fc506000000000020c506000000000021c506000000000022c506000000000023c506000000000024c506000000000025c506000000000026c506000000000027c506000000000028c506000000000029c50600000000002ac50600000000002bc50600000000002cc50600000000002dc50600000000002ec50600000000002fc506000000000030c506000000000031c506000000000032c506000000000033c506000000000034c506000000000035c506000000000036c506000000000037c506000000000038c506000000000039c50600000000003ac50600000000003bc50600000000003cc50600000000003dc50600000000003ec50600000000003fc506000000000040c506000000000041c506000000000042c506000000000043c506000000000044c506000000000045c506000000000046c5060000000000" + } + ] + } + } + }, + { + "status": "executed", + "cpu_usage_us": 1135, + "net_usage_words": 33, + "trx": { + "id": "f538dedc58cb5e96b5e3b68986a4881c03aa826161dba39645b8475d0c13d64e", + "signatures": [ + "SIG_K1_KffoZpaqkKTHdY6DdsJZwemcpLzL1ze8W6narqGhVzUw36gZh15Lvm5jXNxRq5MHfsxpDNqNPvZRR2D6mBjVPrebhegfjE" + ], + "compression": "none", + "packed_context_free_data": "", + "context_free_data": [], + "packed_trx": "d65d4a6317f94cac290f0000000001a0223297ba56a34a000000000095dde50190e8add36497315500000000a888cca5a90190e8add3649731550aa51400000000000000000000a07c305592270000000000000000000024ac3155c89c6c0b000000000000000024ac513e0c4868520000000000000000f889503e280a00000000000000000000643d3155760f0000000000000000000024acb39e35000000000000000000000064a9305534020100000000000000000060aa98db7b2b0000000000000000009732b7315588270000000000000000002027ac315500", + "transaction": { + "expiration": "2022-10-15T07:14:30", + "ref_block_num": 63767, + "ref_block_prefix": 254389324, + "max_net_usage_words": 0, + "max_cpu_usage_ms": 0, + "delay_sec": 0, + "context_free_actions": [], + "actions": [ + { + "account": "delphioracle", + "name": "write", + "authorization": [ + { + "actor": "eostitanprod", + "permission": "oracle" + } + ], + "data": { + "owner": "eostitanprod", + "quotes": [ + { + "value": 5285, + "pair": "eosbtc" + }, + { + "value": 10130, + "pair": "eosusd" + }, + { + "value": 191667400, + "pair": "btcusd" + }, + { + "value": 1382565900, + "pair": "btccny" + }, + { + "value": 2600, + "pair": "eosnut" + }, + { + "value": 3958, + "pair": "nutusd" + }, + { + "value": 53, + "pair": "eosemt" + }, + { + "value": 66100, + "pair": "vigeos" + }, + { + "value": 11131, + "pair": "eosvigor" + }, + { + "value": 10120, + "pair": "eosusdt" + } + ] + }, + "hex_data": "90e8add3649731550aa51400000000000000000000a07c305592270000000000000000000024ac3155c89c6c0b000000000000000024ac513e0c4868520000000000000000f889503e280a00000000000000000000643d3155760f0000000000000000000024acb39e35000000000000000000000064a9305534020100000000000000000060aa98db7b2b0000000000000000009732b7315588270000000000000000002027ac3155" + } + ] + } + } + }, + { + "status": "executed", + "cpu_usage_us": 389, + "net_usage_words": 33, + "trx": { + "id": "3b842c3b6eb260028a51bc9c4b1cf9587b393a0607b45dafd7c5279c200c3e24", + "signatures": [ + "SIG_K1_KjUMXRq5vgxs9xenpjCR1PBP5vNQNndVD5HyXRtqjrQL4h7NRaS6iVhRXtdst6J4fYxnhbbfnbJsXoWiPugoVU8DZBoG2o", + "SIG_K1_JyqVntuutnbKRQBNo5pmpYCbLqR5iEtoZ49VRTJJ5DH1DLVcMRnkWd5qG95BxgpWqV3nnFTKKyymP1BV4UNtxCU5Pydhh2" + ], + "compression": "none", + "packed_context_free_data": "", + "context_free_data": [], + "packed_trx": "ba5d4a6360fae072f0530000000001a026a59a4d8331550080cae6aa4addd402a02bd21551cda6c100000000a8ed3232e07ba59a4d83315500000000a8ed3232880140aeda34d25cfd450000c8d7645cbb920000000000000000896f0000001f2819b684a6cff1e72d17a0e050a3349797dea09cbaef132f241790f2c73d49b9633cb6a595b7cd16378ded6323dbc131456cdd7ced6b287ad93a24bc1945771a10000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "transaction": { + "expiration": "2022-10-15T07:14:02", + "ref_block_num": 64096, + "ref_block_prefix": 1408266976, + "max_net_usage_words": 0, + "max_cpu_usage_ms": 0, + "delay_sec": 0, + "context_free_actions": [], + "actions": [ + { + "account": "eossanguoone", + "name": "unioperate", + "authorization": [ + { + "actor": "sanguocpucpu", + "permission": "active" + }, + { + "actor": "eossanguopxy", + "permission": "active" + } + ], + "data": { + "from": "cryptolover4", + "action": "mexpstart", + "block": 0, + "checksum": 0, + "nonce": 28553, + "psig": "SIG_K1_JzW4U8BsfM38WT9eWKGJCmZ5GqFRyNbujVWv4TsPotHHQBdRfaGUr3CrpR8NxJk8kFr5BNmrWaMocRopVcFCizeghizvsa", + "u1": 16, + "u2": 0, + "u3": 0, + "u4": 0, + "s": "", + "a": "0 ", + "n": "", + "v": [] + }, + "hex_data": "40aeda34d25cfd450000c8d7645cbb920000000000000000896f0000001f2819b684a6cff1e72d17a0e050a3349797dea09cbaef132f241790f2c73d49b9633cb6a595b7cd16378ded6323dbc131456cdd7ced6b287ad93a24bc1945771a100000000000000000000000000000000000000000000000000000000000000000000000000000000000" + } + ] + } + } + }, + { + "status": "executed", + "cpu_usage_us": 141, + "net_usage_words": 15, + "trx": { + "id": "66f8eb865488ee85c54af89808d8abcf7b94e5b8118bf8488844174f19d36f6c", + "signatures": [ + "SIG_K1_K1hFGYNraptrUpxs56EJXinwV4n5tJojPFDDprDGQiyYfcoFekwPU6r1YFoTARRcebZ8BJNw4N4eP2zc8grugTN5CVs8Xx" + ], + "compression": "none", + "packed_context_free_data": "", + "context_free_data": [], + "packed_trx": "c35f4a63fdf9f81769850000000001a0649a2656ed4dac000000000000089901a0649a2656ed4dac000000c067175dd61bb0661bb979a9af79e880000000000000025550580000000002626e00", + "transaction": { + "expiration": "2022-10-15T07:22:43", + "ref_block_num": 63997, + "ref_block_prefix": 2238257144, + "max_net_usage_words": 0, + "max_cpu_usage_ms": 0, + "delay_sec": 0, + "context_free_actions": [], + "actions": [ + { + "account": "playuplandme", + "name": "n44", + "authorization": [ + { + "actor": "playuplandme", + "permission": "utility" + } + ], + "data": { + "p51": "jarumyht3hnf", + "p45": "330.00 UPX", + "memo": "bn" + }, + "hex_data": "b0661bb979a9af79e880000000000000025550580000000002626e" + } + ] + } + } + }, + { + "status": "executed", + "cpu_usage_us": 300, + "net_usage_words": 34, + "trx": { + "id": "bfb246a10d5db654072a108d73041ebc019e1ce18519a2b553cc6b191f508f5d", + "signatures": [ + "SIG_K1_KfpLsbDWMXfDQD5u2LeskScqrfQ6vptpK9i8QGogQXfvMsVdeB6p2EpF6zT13M4mnxsMetd3V4wazzkakQYfUHPtcvLTun", + "SIG_K1_K6om9uXTjTSGMQ7jVehZMA2idpjggdNuBszDMZ2j9maLAhng5uZs6ZnJD2kG6giTtFNbuPZMXds21MGmWKnkFcYby3w6qj" + ], + "compression": "none", + "packed_context_free_data": "", + "context_free_data": [], + "packed_trx": "ba5d4a6361fac2c2d41c0000000001a026a59a4d8331550080cae6aa4addd402a02bd21551cda6c100000000a8ed3232e07ba59a4d83315500000000a8ed3232940140c8184284c0a6920000c846aaaca24a5efa4910e694bcb3a3230000001f4d5bbe4bafa8774395aa47b31bb854cd895ddc23cae94f30d4a57618b7d22d1c70b8eefcea01e70878928d22acff0e4a432dee602bfe4f6809a6b8b0613d911b0000000000000000000000000000000000000000000000000000000000000000000000000000000000035d5300005e5300005f53000000", + "transaction": { + "expiration": "2022-10-15T07:14:02", + "ref_block_num": 64097, + "ref_block_prefix": 483705538, + "max_net_usage_words": 0, + "max_cpu_usage_ms": 0, + "delay_sec": 0, + "context_free_actions": [], + "actions": [ + { + "account": "eossanguoone", + "name": "unioperate", + "authorization": [ + { + "actor": "sanguocpucpu", + "permission": "active" + }, + { + "actor": "eossanguopxy", + "permission": "active" + } + ], + "data": { + "from": "meng11223344", + "action": "deletemat", + "block": 273283678, + "checksum": 3015480550, + "nonce": 9123, + "psig": "SIG_K1_K5NmwhrWZxtuHQzc5wgLzE5kiGVTkSTj9dZ5mgtgkQ6AGuCbb5dkgC2ktQHgKKehZA9zvsymzRKEf7eRk3R1TyqfrhWbWY", + "u1": 0, + "u2": 0, + "u3": 0, + "u4": 0, + "s": "", + "a": "0 ", + "n": "", + "v": [ + 21341, + 21342, + 21343 + ] + }, + "hex_data": "40c8184284c0a6920000c846aaaca24a5efa4910e694bcb3a3230000001f4d5bbe4bafa8774395aa47b31bb854cd895ddc23cae94f30d4a57618b7d22d1c70b8eefcea01e70878928d22acff0e4a432dee602bfe4f6809a6b8b0613d911b0000000000000000000000000000000000000000000000000000000000000000000000000000000000035d5300005e5300005f530000" + } + ] + } + } + }, + { + "status": "executed", + "cpu_usage_us": 182, + "net_usage_words": 18, + "trx": { + "id": "da923cace51c8b13a33373c58d0da4fd966afd392348535f9117f17bd8c665ac", + "signatures": [ + "SIG_K1_K1tA6jho63gUkDhDjm5sY6VycsWcbrQnqLEnnEDZ4h5UtMEDkmwVQdgZZ7EFntj2VRKjQCbo3Gi9j42nhKayb7h6LAXdPm", + "SIG_K1_Kgwa5ydd8nwjAM38WKs4dchezGW3q7cAZHXCk8HEMhxCmt2tZYkzS3LmLFQizBgqd2CkM25XCbQBo5nU9ouGQqYskkCASi" + ], + "compression": "none", + "packed_context_free_data": "", + "context_free_data": [], + "packed_trx": "c55d4a633afa380ffcf3000000000180f0a519a98ae9ad00000057c14bf9960270f0a519a98ae9ad00000000a8ed32320000e07981e0a44b00000000a8ed32321023e7010000000000ffffffffffffffff00", + "transaction": { + "expiration": "2022-10-15T07:14:13", + "ref_block_num": 64058, + "ref_block_prefix": 4093382456, + "max_net_usage_words": 0, + "max_cpu_usage_ms": 0, + "delay_sec": 0, + "context_free_actions": [], + "actions": [ + { + "account": "prospectorsc", + "name": "mvworker", + "authorization": [ + { + "actor": "prospectorsb", + "permission": "active" + }, + { + "actor": "dimi1.ftw", + "permission": "active" + } + ], + "data": { + "worker_id": 124707, + "x": -1, + "y": -1 + }, + "hex_data": "23e7010000000000ffffffffffffffff" + } + ] + } + } + }, + { + "status": "executed", + "cpu_usage_us": 161, + "net_usage_words": 18, + "trx": { + "id": "3daf3d75748b60d61b236dd8f47bfe63691548d705b67ab0cc83b50aed514bbe", + "signatures": [ + "SIG_K1_Kkth6yu6xhvhMA9tfDamWcj4Z5LFuBjiJv3k7NAoX4U55xenLS43LifcRHZz2K6YVjDXwqHzRQpPnobxEEDZK5t3115ieM", + "SIG_K1_K7VuH4HXpsiTkAJpjzHcBKZ4w6HzRvzsoBzZEpLme6Z2P3PWB6SikbnDNamWUqw9rMox8JSPCVd7MgA39ahUH4ENACFnRy" + ], + "compression": "none", + "packed_context_free_data": "", + "context_free_data": [], + "packed_trx": "d75d4a635dfa1f0bca95000000000180f0a519a98ae9ad00000000a8e9244d0270f0a519a98ae9ad00000000a8ed32322002be6a3a49ef3200000000a8ed3232161000140000000000d23c00000000000006002c01000000", + "transaction": { + "expiration": "2022-10-15T07:14:31", + "ref_block_num": 64093, + "ref_block_prefix": 2513046303, + "max_net_usage_words": 0, + "max_cpu_usage_ms": 0, + "delay_sec": 0, + "context_free_actions": [], + "actions": [ + { + "account": "prospectorsc", + "name": "domine", + "authorization": [ + { + "actor": "prospectorsb", + "permission": "active" + }, + { + "actor": "afrominers12", + "permission": "active" + } + ], + "data": { + "loc_id": 1310736, + "worker_id": 15570, + "type_id": 6, + "duration": 300 + }, + "hex_data": "1000140000000000d23c00000000000006002c010000" + } + ] + } + } + }, + { + "status": "executed", + "cpu_usage_us": 132, + "net_usage_words": 20, + "trx": { + "id": "a553c19720e034290e8ef27e1742de5b8c5661c2596b0fc7f1baf6409a4f3180", + "signatures": [ + "SIG_K1_Kd8kVyYrtCMt2srdoR2YZrgJQQUJfUqigcHNpjmSqTUjr4jcFg8SQ4rkmsaxB3tvih1c8A28g1Si4VCCXGh2kezhWicTVf" + ], + "compression": "none", + "packed_context_free_data": "", + "context_free_data": [], + "packed_trx": "d85d4a635ffa18b244260000000001305dc52a671535bd0000000000305dc501305dc52a671535bd00000000a8ed323215dc970600000000001c60fa4910000000009c5d4a6300", + "transaction": { + "expiration": "2022-10-15T07:14:32", + "ref_block_num": 64095, + "ref_block_prefix": 642036248, + "max_net_usage_words": 0, + "max_cpu_usage_ms": 0, + "delay_sec": 0, + "context_free_actions": [], + "actions": [ + { + "account": "roulettespin", + "name": "spin", + "authorization": [ + { + "actor": "roulettespin", + "permission": "active" + } + ], + "data": { + "gameid": 432092, + "num": 28, + "block": 273283680, + "blocktime": 1665818012 + }, + "hex_data": "dc970600000000001c60fa4910000000009c5d4a63" + } + ] + } + } + }, + { + "status": "executed", + "cpu_usage_us": 1384, + "net_usage_words": 41, + "trx": { + "id": "498a9469d332c6d5a4dac15ce6b6b8728cefbd515f8e12248faa294f4094bbc3", + "signatures": [ + "SIG_K1_Kf3fYRni9yQLKbUDEKpPc6FoJqt8PWJDx511Wim7xESsVrkdszjwHKFJ2jJo6EPQSxfaDUy2CJUhmpzL3we5GraB3XACGz", + "SIG_K1_Kd4afkYNbJrdgGH1KnevDL1Ln2GTGR2qvSJYJhBdxW7bwvxWwyn8Biuzjc6c7tH3P6U5RTX4AZ16tNBfyXYM9wpoQ3zEL5" + ], + "compression": "none", + "packed_context_free_data": "", + "context_free_data": [], + "packed_trx": "d95d4a6317f94cac290f0000000001a0223297ba56a34a000000000095dde50220945e982ad368340000000000e59ae190e8ad982ad36834000000269a6aa2a9c90190e8ad982ad368340c760f0000000000000000000024acb39ebc5fc500000000000000000024ac5b56280a00000000000000000000643d315592270000000000000000000024ac3155a51400000000000000000000a07c305584b86c0b000000000000000024ac513e90a527520000000000000000f889503e5d000000000000000000000064a93055a3270000000000000000002027ac3155d2270000000000000000009732b731554b010100000000000000000060aa98dbe81000000000000000000000004c957500", + "transaction": { + "expiration": "2022-10-15T07:14:33", + "ref_block_num": 63767, + "ref_block_prefix": 254389324, + "max_net_usage_words": 0, + "max_cpu_usage_ms": 0, + "delay_sec": 0, + "context_free_actions": [], + "actions": [ + { + "account": "delphioracle", + "name": "write", + "authorization": [ + { + "actor": "alohaeosfue2", + "permission": "wahie" + }, + { + "actor": "alohaeosprod", + "permission": "palapala" + } + ], + "data": { + "owner": "alohaeosprod", + "quotes": [ + { + "value": 3958, + "pair": "nutusd" + }, + { + "value": 12935100, + "pair": "ethusd" + }, + { + "value": 2600, + "pair": "eosnut" + }, + { + "value": 10130, + "pair": "eosusd" + }, + { + "value": 5285, + "pair": "eosbtc" + }, + { + "value": 191674500, + "pair": "btcusd" + }, + { + "value": 1378330000, + "pair": "btccny" + }, + { + "value": 93, + "pair": "eosemt" + }, + { + "value": 10147, + "pair": "eosusdt" + }, + { + "value": 10194, + "pair": "eosvigor" + }, + { + "value": 65867, + "pair": "vigeos" + }, + { + "value": 4328, + "pair": "iqeos" + } + ] + }, + "hex_data": "90e8ad982ad368340c760f0000000000000000000024acb39ebc5fc500000000000000000024ac5b56280a00000000000000000000643d315592270000000000000000000024ac3155a51400000000000000000000a07c305584b86c0b000000000000000024ac513e90a527520000000000000000f889503e5d000000000000000000000064a93055a3270000000000000000002027ac3155d2270000000000000000009732b731554b010100000000000000000060aa98dbe81000000000000000000000004c9575" + } + ] + } + } + }, + { + "status": "executed", + "cpu_usage_us": 168, + "net_usage_words": 15, + "trx": { + "id": "a77a170b14a777b6fa404adcac28a4c7492351b072453d63143991693660981c", + "signatures": [ + "SIG_K1_JwKFf54mdJZ9pmvjuyYErDrWJ3vwPuNp4pRVs5tqhXSeggnCPGK1KbfQ86ioM1VzXZJrMEoQEusSSVAV2qHhXop2oz6GK3" + ], + "compression": "none", + "packed_context_free_data": "", + "context_free_data": [], + "packed_trx": "c45f4a6300fa1b819b570000000001a0649a2656ed4dac000000000000089901a0649a2656ed4dac000000c067175dd61ba0c5e87c6018a8de8813000000000000025550580000000002626e00", + "transaction": { + "expiration": "2022-10-15T07:22:44", + "ref_block_num": 64000, + "ref_block_prefix": 1469808923, + "max_net_usage_words": 0, + "max_cpu_usage_ms": 0, + "delay_sec": 0, + "context_free_actions": [], + "actions": [ + { + "account": "playuplandme", + "name": "n44", + "authorization": [ + { + "actor": "playuplandme", + "permission": "utility" + } + ], + "data": { + "p51": "vuo1ks3wx32u", + "p45": "50.00 UPX", + "memo": "bn" + }, + "hex_data": "a0c5e87c6018a8de8813000000000000025550580000000002626e" + } + ] + } + } + }, + { + "status": "executed", + "cpu_usage_us": 248, + "net_usage_words": 15, + "trx": { + "id": "e11514838db099d77320d0df84dba485d65f94e95e612379cc3eb8817d088281", + "signatures": [ + "SIG_K1_KAdBjmFLhAVLM4LJNJbYKdLUtnfZ48hb5EcFxqiNxkPmiW2f96fdxjtvHKy7Xwght6yVxXSv5XmVBUyvk2WAQHuNethVU7" + ], + "compression": "none", + "packed_context_free_data": "", + "context_free_data": [], + "packed_trx": "bc5d4a6317f94cac290f0000000100408c7a02ea3055000000000085269d00082d28fd7a0deb05000180919ba62125315500000000000074450180919ba621253155000080d7c886a63a0000", + "transaction": { + "expiration": "2022-10-15T07:14:04", + "ref_block_num": 63767, + "ref_block_prefix": 254389324, + "max_net_usage_words": 0, + "max_cpu_usage_ms": 0, + "delay_sec": 0, + "context_free_actions": [ + { + "account": "eosio.null", + "name": "nonce", + "authorization": [], + "data": "2d28fd7a0deb0500" + } + ], + "actions": [ + { + "account": "eosmechanics", + "name": "cpu", + "authorization": [ + { + "actor": "eosmechanics", + "permission": "benchmark" + } + ], + "data": "" + } + ] + } + } + }, + { + "status": "executed", + "cpu_usage_us": 269, + "net_usage_words": 24, + "trx": { + "id": "5bb6b276af547742f3ceb33254276b2ee1cafdbf237b2b2e261e3c6a24b2d90f", + "signatures": [ + "SIG_K1_JxYvvymHctTG8Yy2QCB9DeDZow8s6B173gGN7SZuyJdj83NZJguT4BdgmZsrRP1ydYPVaCYfe96sFnyemVKeWPMxFk6wUV", + "SIG_K1_KXHK5mSSNaLAdL3KDoJP3BRBeRtfDxRVxGhyZfEqyqVbprVHXkqDSieCaa2GRUDjAhgxjgp1igEELsMntcgJe2jXF2X52q" + ], + "compression": "none", + "packed_context_free_data": "", + "context_free_data": [], + "packed_trx": "d55d4a6359fa3c3f5b540000000002a0649a2656ed4dac0000d0155dbabca901a0649a2656ed4dac0000d0155dbabca9086012d1c4e4db89aaa0649a2656ed4dac000000000000c298016012d1c4e4db89aa00000000a46962d5296012d1c4e4db89aa0401ca1c775546000085ca1c6a55460000a8ca1c7155460000a6fd1cd33346000000", + "transaction": { + "expiration": "2022-10-15T07:14:29", + "ref_block_num": 64089, + "ref_block_prefix": 1415266108, + "max_net_usage_words": 0, + "max_cpu_usage_ms": 0, + "delay_sec": 0, + "context_free_actions": [], + "actions": [ + { + "account": "playuplandme", + "name": "payforcpu", + "authorization": [ + { + "actor": "playuplandme", + "permission": "payforcpu" + } + ], + "data": { + "user_name": "pe4xrta4u4da" + }, + "hex_data": "6012d1c4e4db89aa" + }, + { + "account": "playuplandme", + "name": "n31", + "authorization": [ + { + "actor": "pe4xrta4u4da", + "permission": "upland" + } + ], + "data": { + "a54": "pe4xrta4u4da", + "p55": [ + "77332884539905", + "77332666436229", + "77332783876776", + "77188399168934" + ] + }, + "hex_data": "6012d1c4e4db89aa0401ca1c775546000085ca1c6a55460000a8ca1c7155460000a6fd1cd333460000" + } + ] + } + } + }, + { + "status": "executed", + "cpu_usage_us": 540, + "net_usage_words": 137, + "trx": { + "id": "9bfbe8aeb5d679737b85f8c0a99c4d72712bf45fd63b1536c8a5862f8f951897", + "signatures": [ + "SIG_K1_JzRMeT8Ye892quwLEbdWo6PyzwQ61NbzP27XLHQAWWsdwU8oRM466bD8SR1MY39r4okiWtDUfdRjdyddRuRyz99CpYrXV6", + "SIG_K1_K6pWnNF99MhTTo8JzmYwn9MBM47yW4Cd64jdF9tUeva5x5m3yKNHrw3Ejb2gj9rkyck7HTyH4w86fshBzbRSudjD8BAXaG" + ], + "compression": "none", + "packed_context_free_data": "", + "context_free_data": [], + "packed_trx": "c95e4a6361fac2c2d41c00000000010000009d51a02e4590b18b2a9beba24a020040cd204677320e00000000a8ed32320000009d51a02e4500000000a8ed3232c9070849485400000000783fc906000000000040c906000000000041c906000000000042c906000000000043c906000000000044c906000000000045c906000000000046c906000000000047c906000000000048c906000000000049c90600000000004ac90600000000004bc90600000000004cc90600000000004dc90600000000004ec90600000000004fc906000000000050c906000000000051c906000000000052c906000000000053c906000000000054c906000000000055c906000000000056c906000000000057c906000000000058c906000000000059c90600000000005ac90600000000005bc90600000000005cc90600000000005dc90600000000005ec90600000000005fc906000000000060c906000000000061c906000000000062c906000000000063c906000000000064c906000000000065c906000000000066c906000000000067c906000000000068c906000000000069c90600000000006ac90600000000006bc90600000000006cc90600000000006dc90600000000006ec90600000000006fc906000000000070c906000000000071c906000000000072c906000000000073c906000000000074c906000000000075c906000000000076c906000000000077c906000000000078c906000000000079c90600000000007ac90600000000007bc90600000000007cc90600000000007dc90600000000007ec90600000000007fc906000000000080c906000000000081c906000000000082c906000000000083c906000000000084c906000000000085c906000000000086c906000000000087c906000000000088c906000000000089c90600000000008ac90600000000008bc90600000000008cc90600000000008dc90600000000008ec90600000000008fc906000000000090c906000000000091c906000000000092c906000000000093c906000000000094c906000000000095c906000000000096c906000000000097c906000000000098c906000000000099c90600000000009ac90600000000009bc90600000000009cc90600000000009dc90600000000009ec90600000000009fc9060000000000a0c9060000000000a1c9060000000000a2c9060000000000a3c9060000000000a4c9060000000000a5c9060000000000a6c9060000000000a7c9060000000000a8c9060000000000a9c9060000000000aac9060000000000abc9060000000000acc9060000000000adc9060000000000aec9060000000000afc9060000000000b0c9060000000000b1c9060000000000b2c9060000000000b3c9060000000000b4c9060000000000b5c9060000000000b6c906000000000000", + "transaction": { + "expiration": "2022-10-15T07:18:33", + "ref_block_num": 64097, + "ref_block_prefix": 483705538, + "max_net_usage_words": 0, + "max_cpu_usage_ms": 0, + "delay_sec": 0, + "context_free_actions": [], + "actions": [ + { + "account": "core.ogx", + "name": "deliratelist", + "authorization": [ + { + "actor": "1stbill.tp", + "permission": "active" + }, + { + "actor": "core.ogx", + "permission": "active" + } + ], + "data": { + "sym": "8,IHT", + "round_list": [ + 444735, + 444736, + 444737, + 444738, + 444739, + 444740, + 444741, + 444742, + 444743, + 444744, + 444745, + 444746, + 444747, + 444748, + 444749, + 444750, + 444751, + 444752, + 444753, + 444754, + 444755, + 444756, + 444757, + 444758, + 444759, + 444760, + 444761, + 444762, + 444763, + 444764, + 444765, + 444766, + 444767, + 444768, + 444769, + 444770, + 444771, + 444772, + 444773, + 444774, + 444775, + 444776, + 444777, + 444778, + 444779, + 444780, + 444781, + 444782, + 444783, + 444784, + 444785, + 444786, + 444787, + 444788, + 444789, + 444790, + 444791, + 444792, + 444793, + 444794, + 444795, + 444796, + 444797, + 444798, + 444799, + 444800, + 444801, + 444802, + 444803, + 444804, + 444805, + 444806, + 444807, + 444808, + 444809, + 444810, + 444811, + 444812, + 444813, + 444814, + 444815, + 444816, + 444817, + 444818, + 444819, + 444820, + 444821, + 444822, + 444823, + 444824, + 444825, + 444826, + 444827, + 444828, + 444829, + 444830, + 444831, + 444832, + 444833, + 444834, + 444835, + 444836, + 444837, + 444838, + 444839, + 444840, + 444841, + 444842, + 444843, + 444844, + 444845, + 444846, + 444847, + 444848, + 444849, + 444850, + 444851, + 444852, + 444853, + 444854 + ] + }, + "hex_data": "0849485400000000783fc906000000000040c906000000000041c906000000000042c906000000000043c906000000000044c906000000000045c906000000000046c906000000000047c906000000000048c906000000000049c90600000000004ac90600000000004bc90600000000004cc90600000000004dc90600000000004ec90600000000004fc906000000000050c906000000000051c906000000000052c906000000000053c906000000000054c906000000000055c906000000000056c906000000000057c906000000000058c906000000000059c90600000000005ac90600000000005bc90600000000005cc90600000000005dc90600000000005ec90600000000005fc906000000000060c906000000000061c906000000000062c906000000000063c906000000000064c906000000000065c906000000000066c906000000000067c906000000000068c906000000000069c90600000000006ac90600000000006bc90600000000006cc90600000000006dc90600000000006ec90600000000006fc906000000000070c906000000000071c906000000000072c906000000000073c906000000000074c906000000000075c906000000000076c906000000000077c906000000000078c906000000000079c90600000000007ac90600000000007bc90600000000007cc90600000000007dc90600000000007ec90600000000007fc906000000000080c906000000000081c906000000000082c906000000000083c906000000000084c906000000000085c906000000000086c906000000000087c906000000000088c906000000000089c90600000000008ac90600000000008bc90600000000008cc90600000000008dc90600000000008ec90600000000008fc906000000000090c906000000000091c906000000000092c906000000000093c906000000000094c906000000000095c906000000000096c906000000000097c906000000000098c906000000000099c90600000000009ac90600000000009bc90600000000009cc90600000000009dc90600000000009ec90600000000009fc9060000000000a0c9060000000000a1c9060000000000a2c9060000000000a3c9060000000000a4c9060000000000a5c9060000000000a6c9060000000000a7c9060000000000a8c9060000000000a9c9060000000000aac9060000000000abc9060000000000acc9060000000000adc9060000000000aec9060000000000afc9060000000000b0c9060000000000b1c9060000000000b2c9060000000000b3c9060000000000b4c9060000000000b5c9060000000000b6c9060000000000" + } + ] + } + } + }, + { + "status": "executed", + "cpu_usage_us": 127, + "net_usage_words": 12, + "trx": { + "id": "8365cf3d506b838e3b6199f47c76aa3db05b8d0af7dcd914cbe58f6a0a414db1", + "signatures": [ + "SIG_K1_K8W5hmhEtjeQ54gB7xXK6Bc8oTQ5VjywMP6WYW7yZqt8DDWyCNmTEck9NoRdmCWcAeRnCuVm877GRh384MGPJQugQFH6x3" + ], + "compression": "none", + "packed_context_free_data": "", + "context_free_data": [], + "packed_trx": "bc5d4a6317f94cac290f0000000001c06802693a79d5a600000000a86c52d5010000008c26a0746400000000a8ed32320302343700", + "transaction": { + "expiration": "2022-10-15T07:14:04", + "ref_block_num": 63767, + "ref_block_prefix": 254389324, + "max_net_usage_words": 0, + "max_cpu_usage_ms": 0, + "delay_sec": 0, + "context_free_actions": [], + "actions": [ + { + "account": "overmind.dog", + "name": "update", + "authorization": [ + { + "actor": "glue.dog", + "permission": "active" + } + ], + "data": { + "agent": "47" + }, + "hex_data": "023437" + } + ] + } + } + }, + { + "status": "executed", + "cpu_usage_us": 150, + "net_usage_words": 15, + "trx": { + "id": "b994c662eaf00cd354d7664a97ed1b5de3519297b5e5529cc0b639bdca12baa5", + "signatures": [ + "SIG_K1_JwraMgXmt5CNd6TpbSTYxi5N5pwBJSk8AcMj68D7Rb34Cn3r4CYjFLvSo5VwZbcowmCa3Y5hRRhJ4Af3tZPoMUcE9xa9Ex" + ], + "compression": "none", + "packed_context_free_data": "", + "context_free_data": [], + "packed_trx": "c75f4a6306fafefd77c40000000001a0649a2656ed4dac000000000000089901a0649a2656ed4dac000000c067175dd61ba03e7c56ebba94f0e02e000000000000025550580000000002626e00", + "transaction": { + "expiration": "2022-10-15T07:22:47", + "ref_block_num": 64006, + "ref_block_prefix": 3296198142, + "max_net_usage_words": 0, + "max_cpu_usage_ms": 0, + "delay_sec": 0, + "context_free_actions": [], + "actions": [ + { + "account": "playuplandme", + "name": "n44", + "authorization": [ + { + "actor": "playuplandme", + "permission": "utility" + } + ], + "data": { + "p51": "y2efpuuqjkze", + "p45": "120.00 UPX", + "memo": "bn" + }, + "hex_data": "a03e7c56ebba94f0e02e000000000000025550580000000002626e" + } + ] + } + } + }, + { + "status": "executed", + "cpu_usage_us": 747, + "net_usage_words": 38, + "trx": { + "id": "a05f8e74be4e2fcfd19626fc5eae4670ba90a4326298844a13d6d722c0e9864f", + "signatures": [ + "SIG_K1_K45FNWUe9kNPGsyCsmLNXd2RiVdG5GFGCg2g8TQQ89e9rcPrqoGN9VsDX8waTRxaheftqRxdg63eF2Ww4T86DxCPozRP6g", + "SIG_K1_KhsAc5FkDXMbdBJpWh2Saff2stSb6XR6JHxj9cPV7xDC9z4UYkEsp5EvtKGd8sfkXbfTh8iQmGF88oZ2SrFsk5UudPzuCK" + ], + "compression": "none", + "packed_context_free_data": "", + "context_free_data": [], + "packed_trx": "d85d4a635ffa18b244260000000002a0649a2656ed4dac0000d0155dbabca901a0649a2656ed4dac0000d0155dbabca90850f7f5638dd0d987a0649a2656ed4dac000000000000c2980150f7f5638dd0d98700000000a46962d5990150f7f5638dd0d98712e27c2d0d0d4a0000e9802d36094a0000859d2dcaff490000009c2d04004a0000009b2d85ff4900003a9b2dd4004a0000d58128f0f04a000045992d8afd490000f49b2dfaff490000ec9b2df5ff4900006c9a2dbcfe490000429c2d60fe490000f6932870f24a000032902d22034a0000d99b2de6ff4900004e882832fc4a0000ff9928eff44a0000d58c2857f74a000000", + "transaction": { + "expiration": "2022-10-15T07:14:32", + "ref_block_num": 64095, + "ref_block_prefix": 642036248, + "max_net_usage_words": 0, + "max_cpu_usage_ms": 0, + "delay_sec": 0, + "context_free_actions": [], + "actions": [ + { + "account": "playuplandme", + "name": "payforcpu", + "authorization": [ + { + "actor": "playuplandme", + "permission": "payforcpu" + } + ], + "data": { + "user_name": "kzgx13f3yrvp" + }, + "hex_data": "50f7f5638dd0d987" + }, + { + "account": "playuplandme", + "name": "n31", + "authorization": [ + { + "actor": "kzgx13f3yrvp", + "permission": "upland" + } + ], + "data": { + "a54": "kzgx13f3yrvp", + "p55": [ + "81419916115170", + "81403424112873", + "81362957475205", + "81363930553344", + "81361799846656", + "81367420214074", + "82398681792981", + "81353293797701", + "81363762781172", + "81363678895084", + "81358427626092", + "81356884122690", + "82405124248566", + "81377318768690", + "81363427236825", + "82447033731150", + "82415844891135", + "82426179652821" + ] + }, + "hex_data": "50f7f5638dd0d98712e27c2d0d0d4a0000e9802d36094a0000859d2dcaff490000009c2d04004a0000009b2d85ff4900003a9b2dd4004a0000d58128f0f04a000045992d8afd490000f49b2dfaff490000ec9b2df5ff4900006c9a2dbcfe490000429c2d60fe490000f6932870f24a000032902d22034a0000d99b2de6ff4900004e882832fc4a0000ff9928eff44a0000d58c2857f74a0000" + } + ] + } + } + }, + { + "status": "executed", + "cpu_usage_us": 107, + "net_usage_words": 15, + "trx": { + "id": "fe2f9e6514719a552447237191e417736a0bb6f6e39a713338d4353bf595f346", + "signatures": [ + "SIG_K1_JzREUCL47EgcXGkaEAUc3mNeTnr8YQLTAozWNcPQXNdjhDyQLgTSQ3q3dUb2uggFDu51i3Rb6qszvmVGgu2MqzQSp1593D" + ], + "compression": "none", + "packed_context_free_data": "", + "context_free_data": [], + "packed_trx": "c85f4a6307faf2d749b50000000001a0649a2656ed4dac000000000000089901a0649a2656ed4dac000000c067175dd61be0c355687de9c2a4d8b8050000000000025550580000000002626e00", + "transaction": { + "expiration": "2022-10-15T07:22:48", + "ref_block_num": 64007, + "ref_block_prefix": 3041515506, + "max_net_usage_words": 0, + "max_cpu_usage_ms": 0, + "delay_sec": 0, + "context_free_actions": [], + "actions": [ + { + "account": "playuplandme", + "name": "n44", + "authorization": [ + { + "actor": "playuplandme", + "permission": "utility" + } + ], + "data": { + "p51": "on1imzfcer1y", + "p45": "3750.00 UPX", + "memo": "bn" + }, + "hex_data": "e0c355687de9c2a4d8b8050000000000025550580000000002626e" + } + ] + } + } + }, + { + "status": "executed", + "cpu_usage_us": 452, + "net_usage_words": 25, + "trx": { + "id": "7beb1e92e6d3458b5ee45e675b66bc10864c55a2bc9b50ea98c227c7f4dd5cb2", + "signatures": [ + "SIG_K1_K48FhqqTyABvAW4anrNvgzgAmQCiQbpVLbJzE6ZCWbM1cgv5HA8P2zYzDr1xkRPfuFXkjSGZLHRuMfxs9m7H4i9cF8jTx2", + "SIG_K1_K6pJ57on8Dsh9ziTSxQ7aSofKPpyTnYywqnb5AEsXHdddHXKmYqo8mWCnzD5NYkKMDkUmDnJxCDkTeeSHb2FQLN7ZyjyUx" + ], + "compression": "none", + "packed_context_free_data": "", + "context_free_data": [], + "packed_trx": "da5d4a6364fa50c4f5cb000000000100a6823403ea3055000000572d3ccdcd02c08e31c618638c3100000000a8ed32322042c2864deab58b00000000a8ed32324b2042c2864deab58b4073a6b161d33055204e00000000000004454f53000000002a646f6e676a69616e776c6c792d2d2d5b5d2d5b5d2d5b5d2d5b5d2d5b34395d2d3136363538313830313500", + "transaction": { + "expiration": "2022-10-15T07:14:34", + "ref_block_num": 64100, + "ref_block_prefix": 3421881424, + "max_net_usage_words": 0, + "max_cpu_usage_ms": 0, + "delay_sec": 0, + "context_free_actions": [], + "actions": [ + { + "account": "eosio.token", + "name": "transfer", + "authorization": [ + { + "actor": "aaaaaaaaaabg", + "permission": "active" + }, + { + "actor": "liuyongasd12", + "permission": "active" + } + ], + "data": { + "from": "liuyongasd12", + "to": "eoshashlotto", + "quantity": "2.0000 EOS", + "memo": "dongjianwlly---[]-[]-[]-[]-[49]-1665818015" + }, + "hex_data": "2042c2864deab58b4073a6b161d33055204e00000000000004454f53000000002a646f6e676a69616e776c6c792d2d2d5b5d2d5b5d2d5b5d2d5b5d2d5b34395d2d31363635383138303135" + } + ] + } + } + }, + { + "status": "executed", + "cpu_usage_us": 273, + "net_usage_words": 33, + "trx": { + "id": "f9524a36a14d7cd6872b99ae9df726bb1c5cea475ed8a015e2636302d82710dd", + "signatures": [ + "SIG_K1_K5qwgbrjPQpGE7EMBpZrL6zNTeXAREemaP6eoxLz28UYoNJKYLSsbPU1Voa2G55CmF3fd88FZCnQT3GdRqkNMrUAs7VZzS", + "SIG_K1_Jzyg9m4W265GNrJMEaJdrCJ4hEFGAvCCCR4xSTjcxWKJE3gzpcsSL6p1uATAuWqzWtLCV8jemc8LPnyqQKNjuKky5m8HQL", + "SIG_K1_Km9Mv7Vq47L1ovkdXQhApMYNMjQzZdJKGmDLapoxLKqF9gwvig4Bu7WRWhny3ttwVgz8goEAF7T52617QBta8in4ohxtXw" + ], + "compression": "none", + "packed_context_free_data": "", + "context_free_data": [], + "packed_trx": "7f6b4a6306fafefd77c40000000003a0649a2656ed4dac0000d0155dbabca901a0649a2656ed4dac0000d0155dbabca90880a6c8c669ec499890113253419a7bd5000000572d3ccdcd0180a6c8c669ec499800000000a46962d52180a6c8c669ec4998a0649a2656ed4dacac0d000000000000025550580000000000a0649a2656ed4dac000000000000029901a0649a2656ed4dac000000c067175dd62080a6c8c669ec4998c6c51c1255460000ac0d000000000000025550580000000000", + "transaction": { + "expiration": "2022-10-15T08:12:47", + "ref_block_num": 64006, + "ref_block_prefix": 3296198142, + "max_net_usage_words": 0, + "max_cpu_usage_ms": 0, + "delay_sec": 0, + "context_free_actions": [], + "actions": [ + { + "account": "playuplandme", + "name": "payforcpu", + "authorization": [ + { + "actor": "playuplandme", + "permission": "payforcpu" + } + ], + "data": { + "user_name": "n14ysuiat2nc" + }, + "hex_data": "80a6c8c669ec4998" + }, + { + "account": "upxtokenacct", + "name": "transfer", + "authorization": [ + { + "actor": "n14ysuiat2nc", + "permission": "upland" + } + ], + "data": { + "from": "n14ysuiat2nc", + "to": "playuplandme", + "quantity": "35.00 UPX", + "memo": "" + }, + "hex_data": "80a6c8c669ec4998a0649a2656ed4dacac0d000000000000025550580000000000" + }, + { + "account": "playuplandme", + "name": "n41", + "authorization": [ + { + "actor": "playuplandme", + "permission": "utility" + } + ], + "data": { + "p51": "n14ysuiat2nc", + "a45": "77331190040006", + "p54": "35.00 UPX" + }, + "hex_data": "80a6c8c669ec4998c6c51c1255460000ac0d0000000000000255505800000000" + } + ] + } + } + }, + { + "status": "executed", + "cpu_usage_us": 697, + "net_usage_words": 183, + "trx": { + "id": "a3d537488aac86d5f10370d00e934703c1243a3b92731a44c23720ffc0d65456", + "signatures": [ + "SIG_K1_K5Mk1un5SQoBaMxhaXmaSSPjKa2Anv35VnDu57bhi62gTFysfvdxYfvRECC5psV9BszuL6SyGoxi1LmE94CFztnVLexSR7", + "SIG_K1_K4txmE2Fmv1i628oHx8Jkbm5SHYmBSMkiQXQNkNUMEW9b5wj2ufdhyg5tURKmM9bx8k8FhFGTCB5eHWwJQg7jqoYV2w3iD" + ], + "compression": "none", + "packed_context_free_data": "", + "context_free_data": [], + "packed_trx": "be5d4a6368fae262650700000000150000704b2590945a000000000090945a020000006ea904744500000000a8ed323200805b2a81e9643200000000a8ed32321001000000000000001b280000000000000000704b2590945a000000000090945a020000006ea904744500000000a8ed323200805b2a81e9643200000000a8ed3232100200000000000000cf411d00000000000000704b2590945a000000000090945a020000006ea904744500000000a8ed323200805b2a81e9643200000000a8ed32321003000000000000006efb0100000000000000704b2590945a000000000090945a020000006ea904744500000000a8ed323200805b2a81e9643200000000a8ed3232100400000000000000ea200000000000000000704b2590945a000000000090945a020000006ea904744500000000a8ed323200805b2a81e9643200000000a8ed32321005000000000000000c270000000000000000704b2590945a000000000090945a020000006ea904744500000000a8ed323200805b2a81e9643200000000a8ed323210060000000000000007290000000000000000704b2590945a000000000090945a020000006ea904744500000000a8ed323200805b2a81e9643200000000a8ed3232100700000000000000e8270100000000000000704b2590945a000000000090945a020000006ea904744500000000a8ed323200805b2a81e9643200000000a8ed323210080000000000000063380000000000000000704b2590945a000000000090945a020000006ea904744500000000a8ed323200805b2a81e9643200000000a8ed323210090000000000000024810000000000000000704b2590945a000000000090945a020000006ea904744500000000a8ed323200805b2a81e9643200000000a8ed3232100a00000000000000120b0000000000000000704b2590945a000000000090945a020000006ea904744500000000a8ed323200805b2a81e9643200000000a8ed3232100b00000000000000db090000000000000000704b2590945a000000000090945a020000006ea904744500000000a8ed323200805b2a81e9643200000000a8ed3232100c000000000000003e090000000000000000704b2590945a000000000090945a020000006ea904744500000000a8ed323200805b2a81e9643200000000a8ed3232100d0000000000000014090000000000000000704b2590945a000000000090945a020000006ea904744500000000a8ed323200805b2a81e9643200000000a8ed3232100e000000000000003f590000000000000000704b2590945a000000000090945a020000006ea904744500000000a8ed323200805b2a81e9643200000000a8ed3232100f000000000000001c0e0000000000000000704b2590945a000000000090945a020000006ea904744500000000a8ed323200805b2a81e9643200000000a8ed3232101000000000000000d0410a00000000000000704b2590945a000000000090945a020000006ea904744500000000a8ed323200805b2a81e9643200000000a8ed3232101100000000000000a4270000000000000000704b2590945a000000000090945a020000006ea904744500000000a8ed323200805b2a81e9643200000000a8ed32321012000000000000002f080000000000000000704b2590945a000000000090945a020000006ea904744500000000a8ed323200805b2a81e9643200000000a8ed3232101300000000000000ffb11000000000000000704b2590945a000000000090945a020000006ea904744500000000a8ed323200805b2a81e9643200000000a8ed32321014000000000000008da70d00000000000000704b2590945a000000000090945a020000006ea904744500000000a8ed323200805b2a81e9643200000000a8ed32321015000000000000004bb9f9050000000000", + "transaction": { + "expiration": "2022-10-15T07:14:06", + "ref_block_num": 64104, + "ref_block_prefix": 124084962, + "max_net_usage_words": 0, + "max_cpu_usage_ms": 0, + "delay_sec": 0, + "context_free_actions": [], + "actions": [ + { + "account": "feed.defi", + "name": "feed", + "authorization": [ + { + "actor": "cpu.defi", + "permission": "active" + }, + { + "actor": "admin.defi", + "permission": "active" + } + ], + "data": { + "price_id": 1, + "price": 10267 + }, + "hex_data": "01000000000000001b28000000000000" + }, + { + "account": "feed.defi", + "name": "feed", + "authorization": [ + { + "actor": "cpu.defi", + "permission": "active" + }, + { + "actor": "admin.defi", + "permission": "active" + } + ], + "data": { + "price_id": 2, + "price": 1917391 + }, + "hex_data": "0200000000000000cf411d0000000000" + }, + { + "account": "feed.defi", + "name": "feed", + "authorization": [ + { + "actor": "cpu.defi", + "permission": "active" + }, + { + "actor": "admin.defi", + "permission": "active" + } + ], + "data": { + "price_id": 3, + "price": 129902 + }, + "hex_data": "03000000000000006efb010000000000" + }, + { + "account": "feed.defi", + "name": "feed", + "authorization": [ + { + "actor": "cpu.defi", + "permission": "active" + }, + { + "actor": "admin.defi", + "permission": "active" + } + ], + "data": { + "price_id": 4, + "price": 8426 + }, + "hex_data": "0400000000000000ea20000000000000" + }, + { + "account": "feed.defi", + "name": "feed", + "authorization": [ + { + "actor": "cpu.defi", + "permission": "active" + }, + { + "actor": "admin.defi", + "permission": "active" + } + ], + "data": { + "price_id": 5, + "price": 9996 + }, + "hex_data": "05000000000000000c27000000000000" + }, + { + "account": "feed.defi", + "name": "feed", + "authorization": [ + { + "actor": "cpu.defi", + "permission": "active" + }, + { + "actor": "admin.defi", + "permission": "active" + } + ], + "data": { + "price_id": 6, + "price": 10503 + }, + "hex_data": "06000000000000000729000000000000" + }, + { + "account": "feed.defi", + "name": "feed", + "authorization": [ + { + "actor": "cpu.defi", + "permission": "active" + }, + { + "actor": "admin.defi", + "permission": "active" + } + ], + "data": { + "price_id": 7, + "price": 75752 + }, + "hex_data": "0700000000000000e827010000000000" + }, + { + "account": "feed.defi", + "name": "feed", + "authorization": [ + { + "actor": "cpu.defi", + "permission": "active" + }, + { + "actor": "admin.defi", + "permission": "active" + } + ], + "data": { + "price_id": 8, + "price": 14435 + }, + "hex_data": "08000000000000006338000000000000" + }, + { + "account": "feed.defi", + "name": "feed", + "authorization": [ + { + "actor": "cpu.defi", + "permission": "active" + }, + { + "actor": "admin.defi", + "permission": "active" + } + ], + "data": { + "price_id": 9, + "price": 33060 + }, + "hex_data": "09000000000000002481000000000000" + }, + { + "account": "feed.defi", + "name": "feed", + "authorization": [ + { + "actor": "cpu.defi", + "permission": "active" + }, + { + "actor": "admin.defi", + "permission": "active" + } + ], + "data": { + "price_id": 10, + "price": 2834 + }, + "hex_data": "0a00000000000000120b000000000000" + }, + { + "account": "feed.defi", + "name": "feed", + "authorization": [ + { + "actor": "cpu.defi", + "permission": "active" + }, + { + "actor": "admin.defi", + "permission": "active" + } + ], + "data": { + "price_id": 11, + "price": 2523 + }, + "hex_data": "0b00000000000000db09000000000000" + }, + { + "account": "feed.defi", + "name": "feed", + "authorization": [ + { + "actor": "cpu.defi", + "permission": "active" + }, + { + "actor": "admin.defi", + "permission": "active" + } + ], + "data": { + "price_id": 12, + "price": 2366 + }, + "hex_data": "0c000000000000003e09000000000000" + }, + { + "account": "feed.defi", + "name": "feed", + "authorization": [ + { + "actor": "cpu.defi", + "permission": "active" + }, + { + "actor": "admin.defi", + "permission": "active" + } + ], + "data": { + "price_id": 13, + "price": 2324 + }, + "hex_data": "0d000000000000001409000000000000" + }, + { + "account": "feed.defi", + "name": "feed", + "authorization": [ + { + "actor": "cpu.defi", + "permission": "active" + }, + { + "actor": "admin.defi", + "permission": "active" + } + ], + "data": { + "price_id": 14, + "price": 22847 + }, + "hex_data": "0e000000000000003f59000000000000" + }, + { + "account": "feed.defi", + "name": "feed", + "authorization": [ + { + "actor": "cpu.defi", + "permission": "active" + }, + { + "actor": "admin.defi", + "permission": "active" + } + ], + "data": { + "price_id": 15, + "price": 3612 + }, + "hex_data": "0f000000000000001c0e000000000000" + }, + { + "account": "feed.defi", + "name": "feed", + "authorization": [ + { + "actor": "cpu.defi", + "permission": "active" + }, + { + "actor": "admin.defi", + "permission": "active" + } + ], + "data": { + "price_id": 16, + "price": 672208 + }, + "hex_data": "1000000000000000d0410a0000000000" + }, + { + "account": "feed.defi", + "name": "feed", + "authorization": [ + { + "actor": "cpu.defi", + "permission": "active" + }, + { + "actor": "admin.defi", + "permission": "active" + } + ], + "data": { + "price_id": 17, + "price": 10148 + }, + "hex_data": "1100000000000000a427000000000000" + }, + { + "account": "feed.defi", + "name": "feed", + "authorization": [ + { + "actor": "cpu.defi", + "permission": "active" + }, + { + "actor": "admin.defi", + "permission": "active" + } + ], + "data": { + "price_id": 18, + "price": 2095 + }, + "hex_data": "12000000000000002f08000000000000" + }, + { + "account": "feed.defi", + "name": "feed", + "authorization": [ + { + "actor": "cpu.defi", + "permission": "active" + }, + { + "actor": "admin.defi", + "permission": "active" + } + ], + "data": { + "price_id": 19, + "price": 1094143 + }, + "hex_data": "1300000000000000ffb1100000000000" + }, + { + "account": "feed.defi", + "name": "feed", + "authorization": [ + { + "actor": "cpu.defi", + "permission": "active" + }, + { + "actor": "admin.defi", + "permission": "active" + } + ], + "data": { + "price_id": 20, + "price": 894861 + }, + "hex_data": "14000000000000008da70d0000000000" + }, + { + "account": "feed.defi", + "name": "feed", + "authorization": [ + { + "actor": "cpu.defi", + "permission": "active" + }, + { + "actor": "admin.defi", + "permission": "active" + } + ], + "data": { + "price_id": 21, + "price": 100251979 + }, + "hex_data": "15000000000000004bb9f90500000000" + } + ] + } + } + }, + { + "status": "executed", + "cpu_usage_us": 290, + "net_usage_words": 33, + "trx": { + "id": "a55ccd974d54df77e606ec599cc73c9be84a6396580f193f8e6794ee5883b560", + "signatures": [ + "SIG_K1_K18wTJMMy4h4Gok1KvWZtAJKKYXRTcZdtwDGT8yHxGFTfr8w3okoKsZvY2BBvjLHCxt9Wbxw8wy4Fe5srjbux5sJsBBh8f", + "SIG_K1_JyTfYKd1yRaFb8y5juAMmQ3VuixJreXygAV8QCQbS5de9LbDoDrKo7paPTi2tADYn6rXtz7W9Atoip1Rr57oHNds6ArKsm", + "SIG_K1_KAd89K77ZwNAZTeu1Z3gsWkbgmgAC7QkcUvzXHQMwcid3iG32JSkgbocRmoNSxf62vmQhWFmYXoGBGsJVdWyjJLbQ2y7rw" + ], + "compression": "none", + "packed_context_free_data": "", + "context_free_data": [], + "packed_trx": "7f6b4a6306fafefd77c40000000003a0649a2656ed4dac0000d0155dbabca901a0649a2656ed4dac0000d0155dbabca90820dfacb75098bdb490113253419a7bd5000000572d3ccdcd0120dfacb75098bdb400000000a46962d52120dfacb75098bdb4a0649a2656ed4daca00f000000000000025550580000000000a0649a2656ed4dac000000000000029901a0649a2656ed4dac000000c067175dd62020dfacb75098bdb4b7772dd6034a0000a00f000000000000025550580000000000", + "transaction": { + "expiration": "2022-10-15T08:12:47", + "ref_block_num": 64006, + "ref_block_prefix": 3296198142, + "max_net_usage_words": 0, + "max_cpu_usage_ms": 0, + "delay_sec": 0, + "context_free_actions": [], + "actions": [ + { + "account": "playuplandme", + "name": "payforcpu", + "authorization": [ + { + "actor": "playuplandme", + "permission": "payforcpu" + } + ], + "data": { + "user_name": "qmytko5rpnjm" + }, + "hex_data": "20dfacb75098bdb4" + }, + { + "account": "upxtokenacct", + "name": "transfer", + "authorization": [ + { + "actor": "qmytko5rpnjm", + "permission": "upland" + } + ], + "data": { + "from": "qmytko5rpnjm", + "to": "playuplandme", + "quantity": "40.00 UPX", + "memo": "" + }, + "hex_data": "20dfacb75098bdb4a0649a2656ed4daca00f000000000000025550580000000000" + }, + { + "account": "playuplandme", + "name": "n41", + "authorization": [ + { + "actor": "playuplandme", + "permission": "utility" + } + ], + "data": { + "p51": "qmytko5rpnjm", + "a45": "81380338661303", + "p54": "40.00 UPX" + }, + "hex_data": "20dfacb75098bdb4b7772dd6034a0000a00f0000000000000255505800000000" + } + ] + } + } + }, + { + "status": "executed", + "cpu_usage_us": 24502, + "net_usage_words": 1046, + "trx": { + "id": "cf95cd14f744ee55e5cc957216f530c8146c87869c40ed6d7587c52c9a54fc1f", + "signatures": [ + "SIG_K1_Kj3NXqFue9ufC45sGQMG2LuUttKRqWb5xJNAayydTtux7nDrKyndN2xYqGWWziSL9SkvcUTEuDmVjy6gwVLGoRmGcDytLD" + ], + "compression": "none", + "packed_context_free_data": "", + "context_free_data": [], + "packed_trx": "bb5d4a6361fac2c2d41c000000006400a6823403ea3055000000572d3ccdcd021042e8d13c77754500000000a8ed3232305d8fe6b98b315500000000a8ed323221305d8fe6b98b3155301d459c56ea3055010000000000000004454f53000000000000a6823403ea3055000000572d3ccdcd021042e8d13c77754500000000a8ed3232305d8fe6b98b315500000000a8ed323221305d8fe6b98b3155301d459c56ea3055020000000000000004454f53000000000000a6823403ea3055000000572d3ccdcd021042e8d13c77754500000000a8ed3232305d8fe6b98b315500000000a8ed323221305d8fe6b98b3155301d459c56ea3055020000000000000004454f53000000000000a6823403ea3055000000572d3ccdcd021042e8d13c77754500000000a8ed3232305d8fe6b98b315500000000a8ed323221305d8fe6b98b3155301d459c56ea3055020000000000000004454f53000000000000a6823403ea3055000000572d3ccdcd021042e8d13c77754500000000a8ed3232305d8fe6b98b315500000000a8ed323221305d8fe6b98b3155301d459c56ea3055020000000000000004454f53000000000000a6823403ea3055000000572d3ccdcd021042e8d13c77754500000000a8ed3232305d8fe6b98b315500000000a8ed323221305d8fe6b98b3155301d459c56ea3055020000000000000004454f53000000000000a6823403ea3055000000572d3ccdcd021042e8d13c77754500000000a8ed3232305d8fe6b98b315500000000a8ed323221305d8fe6b98b3155301d459c56ea3055020000000000000004454f53000000000000a6823403ea3055000000572d3ccdcd021042e8d13c77754500000000a8ed3232305d8fe6b98b315500000000a8ed323221305d8fe6b98b3155301d459c56ea3055020000000000000004454f53000000000000a6823403ea3055000000572d3ccdcd021042e8d13c77754500000000a8ed3232305d8fe6b98b315500000000a8ed323221305d8fe6b98b3155301d459c56ea3055020000000000000004454f53000000000000a6823403ea3055000000572d3ccdcd021042e8d13c77754500000000a8ed3232305d8fe6b98b315500000000a8ed323221305d8fe6b98b3155301d459c56ea3055020000000000000004454f53000000000000a6823403ea3055000000572d3ccdcd021042e8d13c77754500000000a8ed3232305d8fe6b98b315500000000a8ed323221305d8fe6b98b3155301d459c56ea3055020000000000000004454f53000000000000a6823403ea3055000000572d3ccdcd021042e8d13c77754500000000a8ed3232305d8fe6b98b315500000000a8ed323221305d8fe6b98b3155301d459c56ea3055020000000000000004454f53000000000000a6823403ea3055000000572d3ccdcd021042e8d13c77754500000000a8ed3232305d8fe6b98b315500000000a8ed323221305d8fe6b98b3155301d459c56ea3055020000000000000004454f53000000000000a6823403ea3055000000572d3ccdcd021042e8d13c77754500000000a8ed3232305d8fe6b98b315500000000a8ed323221305d8fe6b98b3155301d459c56ea3055020000000000000004454f53000000000000a6823403ea3055000000572d3ccdcd021042e8d13c77754500000000a8ed3232305d8fe6b98b315500000000a8ed323221305d8fe6b98b3155301d459c56ea3055020000000000000004454f53000000000000a6823403ea3055000000572d3ccdcd021042e8d13c77754500000000a8ed3232305d8fe6b98b315500000000a8ed323221305d8fe6b98b3155301d459c56ea3055020000000000000004454f53000000000000a6823403ea3055000000572d3ccdcd021042e8d13c77754500000000a8ed3232305d8fe6b98b315500000000a8ed323221305d8fe6b98b3155301d459c56ea3055020000000000000004454f53000000000000a6823403ea3055000000572d3ccdcd021042e8d13c77754500000000a8ed3232305d8fe6b98b315500000000a8ed323221305d8fe6b98b3155301d459c56ea3055020000000000000004454f53000000000000a6823403ea3055000000572d3ccdcd021042e8d13c77754500000000a8ed3232305d8fe6b98b315500000000a8ed323221305d8fe6b98b3155301d459c56ea3055020000000000000004454f53000000000000a6823403ea3055000000572d3ccdcd021042e8d13c77754500000000a8ed3232305d8fe6b98b315500000000a8ed323221305d8fe6b98b3155301d459c56ea3055020000000000000004454f53000000000000a6823403ea3055000000572d3ccdcd021042e8d13c77754500000000a8ed3232305d8fe6b98b315500000000a8ed323221305d8fe6b98b3155301d459c56ea3055020000000000000004454f53000000000000a6823403ea3055000000572d3ccdcd021042e8d13c77754500000000a8ed3232305d8fe6b98b315500000000a8ed323221305d8fe6b98b3155301d459c56ea3055020000000000000004454f53000000000000a6823403ea3055000000572d3ccdcd021042e8d13c77754500000000a8ed3232305d8fe6b98b315500000000a8ed323221305d8fe6b98b3155301d459c56ea3055020000000000000004454f53000000000000a6823403ea3055000000572d3ccdcd021042e8d13c77754500000000a8ed3232305d8fe6b98b315500000000a8ed323221305d8fe6b98b3155301d459c56ea3055020000000000000004454f53000000000000a6823403ea3055000000572d3ccdcd021042e8d13c77754500000000a8ed3232305d8fe6b98b315500000000a8ed323221305d8fe6b98b3155301d459c56ea3055020000000000000004454f53000000000000a6823403ea3055000000572d3ccdcd021042e8d13c77754500000000a8ed3232305d8fe6b98b315500000000a8ed323221305d8fe6b98b3155301d459c56ea3055020000000000000004454f53000000000000a6823403ea3055000000572d3ccdcd021042e8d13c77754500000000a8ed3232305d8fe6b98b315500000000a8ed323221305d8fe6b98b3155301d459c56ea3055020000000000000004454f53000000000000a6823403ea3055000000572d3ccdcd021042e8d13c77754500000000a8ed3232305d8fe6b98b315500000000a8ed323221305d8fe6b98b3155301d459c56ea3055020000000000000004454f53000000000000a6823403ea3055000000572d3ccdcd021042e8d13c77754500000000a8ed3232305d8fe6b98b315500000000a8ed323221305d8fe6b98b3155301d459c56ea3055020000000000000004454f53000000000000a6823403ea3055000000572d3ccdcd021042e8d13c77754500000000a8ed3232305d8fe6b98b315500000000a8ed323221305d8fe6b98b3155301d459c56ea3055020000000000000004454f53000000000000a6823403ea3055000000572d3ccdcd021042e8d13c77754500000000a8ed3232305d8fe6b98b315500000000a8ed323221305d8fe6b98b3155301d459c56ea3055020000000000000004454f53000000000000a6823403ea3055000000572d3ccdcd021042e8d13c77754500000000a8ed3232305d8fe6b98b315500000000a8ed323221305d8fe6b98b3155301d459c56ea3055020000000000000004454f53000000000000a6823403ea3055000000572d3ccdcd021042e8d13c77754500000000a8ed3232305d8fe6b98b315500000000a8ed323221305d8fe6b98b3155301d459c56ea3055020000000000000004454f53000000000000a6823403ea3055000000572d3ccdcd021042e8d13c77754500000000a8ed3232305d8fe6b98b315500000000a8ed323221305d8fe6b98b3155301d459c56ea3055020000000000000004454f53000000000000a6823403ea3055000000572d3ccdcd021042e8d13c77754500000000a8ed3232305d8fe6b98b315500000000a8ed323221305d8fe6b98b3155301d459c56ea3055020000000000000004454f53000000000000a6823403ea3055000000572d3ccdcd021042e8d13c77754500000000a8ed3232305d8fe6b98b315500000000a8ed323221305d8fe6b98b3155301d459c56ea3055020000000000000004454f53000000000000a6823403ea3055000000572d3ccdcd021042e8d13c77754500000000a8ed3232305d8fe6b98b315500000000a8ed323221305d8fe6b98b3155301d459c56ea3055020000000000000004454f53000000000000a6823403ea3055000000572d3ccdcd021042e8d13c77754500000000a8ed3232305d8fe6b98b315500000000a8ed323221305d8fe6b98b3155301d459c56ea3055020000000000000004454f53000000000000a6823403ea3055000000572d3ccdcd021042e8d13c77754500000000a8ed3232305d8fe6b98b315500000000a8ed323221305d8fe6b98b3155301d459c56ea3055020000000000000004454f53000000000000a6823403ea3055000000572d3ccdcd021042e8d13c77754500000000a8ed3232305d8fe6b98b315500000000a8ed323221305d8fe6b98b3155301d459c56ea3055020000000000000004454f53000000000000a6823403ea3055000000572d3ccdcd021042e8d13c77754500000000a8ed3232305d8fe6b98b315500000000a8ed323221305d8fe6b98b3155301d459c56ea3055020000000000000004454f53000000000000a6823403ea3055000000572d3ccdcd021042e8d13c77754500000000a8ed3232305d8fe6b98b315500000000a8ed323221305d8fe6b98b3155301d459c56ea3055020000000000000004454f53000000000000a6823403ea3055000000572d3ccdcd021042e8d13c77754500000000a8ed3232305d8fe6b98b315500000000a8ed323221305d8fe6b98b3155301d459c56ea3055020000000000000004454f53000000000000a6823403ea3055000000572d3ccdcd021042e8d13c77754500000000a8ed3232305d8fe6b98b315500000000a8ed323221305d8fe6b98b3155301d459c56ea3055020000000000000004454f53000000000000a6823403ea3055000000572d3ccdcd021042e8d13c77754500000000a8ed3232305d8fe6b98b315500000000a8ed323221305d8fe6b98b3155301d459c56ea3055020000000000000004454f53000000000000a6823403ea3055000000572d3ccdcd021042e8d13c77754500000000a8ed3232305d8fe6b98b315500000000a8ed323221305d8fe6b98b3155301d459c56ea3055020000000000000004454f53000000000000a6823403ea3055000000572d3ccdcd021042e8d13c77754500000000a8ed3232305d8fe6b98b315500000000a8ed323221305d8fe6b98b3155301d459c56ea3055020000000000000004454f53000000000000a6823403ea3055000000572d3ccdcd021042e8d13c77754500000000a8ed3232305d8fe6b98b315500000000a8ed323221305d8fe6b98b3155301d459c56ea3055020000000000000004454f53000000000000a6823403ea3055000000572d3ccdcd021042e8d13c77754500000000a8ed3232305d8fe6b98b315500000000a8ed323221305d8fe6b98b3155301d459c56ea3055020000000000000004454f53000000000000a6823403ea3055000000572d3ccdcd021042e8d13c77754500000000a8ed3232305d8fe6b98b315500000000a8ed323221305d8fe6b98b3155301d459c56ea3055020000000000000004454f53000000000000a6823403ea3055000000572d3ccdcd021042e8d13c77754500000000a8ed3232305d8fe6b98b315500000000a8ed323221305d8fe6b98b3155301d459c56ea3055020000000000000004454f53000000000000a6823403ea3055000000572d3ccdcd021042e8d13c77754500000000a8ed3232305d8fe6b98b315500000000a8ed323221305d8fe6b98b3155301d459c56ea3055020000000000000004454f53000000000000a6823403ea3055000000572d3ccdcd021042e8d13c77754500000000a8ed3232305d8fe6b98b315500000000a8ed323221305d8fe6b98b3155301d459c56ea3055020000000000000004454f53000000000000a6823403ea3055000000572d3ccdcd021042e8d13c77754500000000a8ed3232305d8fe6b98b315500000000a8ed323221305d8fe6b98b3155301d459c56ea3055020000000000000004454f53000000000000a6823403ea3055000000572d3ccdcd021042e8d13c77754500000000a8ed3232305d8fe6b98b315500000000a8ed323221305d8fe6b98b3155301d459c56ea3055020000000000000004454f53000000000000a6823403ea3055000000572d3ccdcd021042e8d13c77754500000000a8ed3232305d8fe6b98b315500000000a8ed323221305d8fe6b98b3155301d459c56ea3055020000000000000004454f53000000000000a6823403ea3055000000572d3ccdcd021042e8d13c77754500000000a8ed3232305d8fe6b98b315500000000a8ed323221305d8fe6b98b3155301d459c56ea3055020000000000000004454f53000000000000a6823403ea3055000000572d3ccdcd021042e8d13c77754500000000a8ed3232305d8fe6b98b315500000000a8ed323221305d8fe6b98b3155301d459c56ea3055020000000000000004454f53000000000000a6823403ea3055000000572d3ccdcd021042e8d13c77754500000000a8ed3232305d8fe6b98b315500000000a8ed323221305d8fe6b98b3155301d459c56ea3055020000000000000004454f53000000000000a6823403ea3055000000572d3ccdcd021042e8d13c77754500000000a8ed3232305d8fe6b98b315500000000a8ed323221305d8fe6b98b3155301d459c56ea3055020000000000000004454f53000000000000a6823403ea3055000000572d3ccdcd021042e8d13c77754500000000a8ed3232305d8fe6b98b315500000000a8ed323221305d8fe6b98b3155301d459c56ea3055020000000000000004454f53000000000000a6823403ea3055000000572d3ccdcd021042e8d13c77754500000000a8ed3232305d8fe6b98b315500000000a8ed323221305d8fe6b98b3155301d459c56ea3055020000000000000004454f53000000000000a6823403ea3055000000572d3ccdcd021042e8d13c77754500000000a8ed3232305d8fe6b98b315500000000a8ed323221305d8fe6b98b3155301d459c56ea3055020000000000000004454f53000000000000a6823403ea3055000000572d3ccdcd021042e8d13c77754500000000a8ed3232305d8fe6b98b315500000000a8ed323221305d8fe6b98b3155301d459c56ea3055020000000000000004454f53000000000000a6823403ea3055000000572d3ccdcd021042e8d13c77754500000000a8ed3232305d8fe6b98b315500000000a8ed323221305d8fe6b98b3155301d459c56ea3055020000000000000004454f53000000000000a6823403ea3055000000572d3ccdcd021042e8d13c77754500000000a8ed3232305d8fe6b98b315500000000a8ed323221305d8fe6b98b3155301d459c56ea3055020000000000000004454f53000000000000a6823403ea3055000000572d3ccdcd021042e8d13c77754500000000a8ed3232305d8fe6b98b315500000000a8ed323221305d8fe6b98b3155301d459c56ea3055020000000000000004454f53000000000000a6823403ea3055000000572d3ccdcd021042e8d13c77754500000000a8ed3232305d8fe6b98b315500000000a8ed323221305d8fe6b98b3155301d459c56ea3055020000000000000004454f53000000000000a6823403ea3055000000572d3ccdcd021042e8d13c77754500000000a8ed3232305d8fe6b98b315500000000a8ed323221305d8fe6b98b3155301d459c56ea3055020000000000000004454f53000000000000a6823403ea3055000000572d3ccdcd021042e8d13c77754500000000a8ed3232305d8fe6b98b315500000000a8ed323221305d8fe6b98b3155301d459c56ea3055020000000000000004454f53000000000000a6823403ea3055000000572d3ccdcd021042e8d13c77754500000000a8ed3232305d8fe6b98b315500000000a8ed323221305d8fe6b98b3155301d459c56ea3055020000000000000004454f53000000000000a6823403ea3055000000572d3ccdcd021042e8d13c77754500000000a8ed3232305d8fe6b98b315500000000a8ed323221305d8fe6b98b3155301d459c56ea3055020000000000000004454f53000000000000a6823403ea3055000000572d3ccdcd021042e8d13c77754500000000a8ed3232305d8fe6b98b315500000000a8ed323221305d8fe6b98b3155301d459c56ea3055020000000000000004454f53000000000000a6823403ea3055000000572d3ccdcd021042e8d13c77754500000000a8ed3232305d8fe6b98b315500000000a8ed323221305d8fe6b98b3155301d459c56ea3055020000000000000004454f53000000000000a6823403ea3055000000572d3ccdcd021042e8d13c77754500000000a8ed3232305d8fe6b98b315500000000a8ed323221305d8fe6b98b3155301d459c56ea3055010000000000000004454f53000000000000a6823403ea3055000000572d3ccdcd021042e8d13c77754500000000a8ed3232305d8fe6b98b315500000000a8ed323221305d8fe6b98b3155301d459c56ea3055010000000000000004454f53000000000000a6823403ea3055000000572d3ccdcd021042e8d13c77754500000000a8ed3232305d8fe6b98b315500000000a8ed323221305d8fe6b98b3155301d459c56ea3055010000000000000004454f53000000000000a6823403ea3055000000572d3ccdcd021042e8d13c77754500000000a8ed3232305d8fe6b98b315500000000a8ed323221305d8fe6b98b3155301d459c56ea3055010000000000000004454f53000000000000a6823403ea3055000000572d3ccdcd021042e8d13c77754500000000a8ed3232305d8fe6b98b315500000000a8ed323221305d8fe6b98b3155301d459c56ea3055010000000000000004454f53000000000000a6823403ea3055000000572d3ccdcd021042e8d13c77754500000000a8ed3232305d8fe6b98b315500000000a8ed323221305d8fe6b98b3155301d459c56ea3055010000000000000004454f53000000000000a6823403ea3055000000572d3ccdcd021042e8d13c77754500000000a8ed3232305d8fe6b98b315500000000a8ed323221305d8fe6b98b3155301d459c56ea3055010000000000000004454f53000000000000a6823403ea3055000000572d3ccdcd021042e8d13c77754500000000a8ed3232305d8fe6b98b315500000000a8ed323221305d8fe6b98b3155301d459c56ea3055020000000000000004454f53000000000000a6823403ea3055000000572d3ccdcd021042e8d13c77754500000000a8ed3232305d8fe6b98b315500000000a8ed323221305d8fe6b98b3155301d459c56ea3055020000000000000004454f53000000000000a6823403ea3055000000572d3ccdcd021042e8d13c77754500000000a8ed3232305d8fe6b98b315500000000a8ed323221305d8fe6b98b3155301d459c56ea3055020000000000000004454f53000000000000a6823403ea3055000000572d3ccdcd021042e8d13c77754500000000a8ed3232305d8fe6b98b315500000000a8ed323221305d8fe6b98b3155301d459c56ea3055020000000000000004454f53000000000000a6823403ea3055000000572d3ccdcd021042e8d13c77754500000000a8ed3232305d8fe6b98b315500000000a8ed323221305d8fe6b98b3155301d459c56ea3055020000000000000004454f53000000000000a6823403ea3055000000572d3ccdcd021042e8d13c77754500000000a8ed3232305d8fe6b98b315500000000a8ed323221305d8fe6b98b3155301d459c56ea3055020000000000000004454f53000000000000a6823403ea3055000000572d3ccdcd021042e8d13c77754500000000a8ed3232305d8fe6b98b315500000000a8ed323221305d8fe6b98b3155301d459c56ea3055020000000000000004454f53000000000000a6823403ea3055000000572d3ccdcd021042e8d13c77754500000000a8ed3232305d8fe6b98b315500000000a8ed323221305d8fe6b98b3155301d459c56ea3055020000000000000004454f53000000000000a6823403ea3055000000572d3ccdcd021042e8d13c77754500000000a8ed3232305d8fe6b98b315500000000a8ed323221305d8fe6b98b3155301d459c56ea3055020000000000000004454f53000000000000a6823403ea3055000000572d3ccdcd021042e8d13c77754500000000a8ed3232305d8fe6b98b315500000000a8ed323221305d8fe6b98b3155301d459c56ea3055010000000000000004454f53000000000000a6823403ea3055000000572d3ccdcd021042e8d13c77754500000000a8ed3232305d8fe6b98b315500000000a8ed323221305d8fe6b98b3155301d459c56ea3055020000000000000004454f53000000000000a6823403ea3055000000572d3ccdcd021042e8d13c77754500000000a8ed3232305d8fe6b98b315500000000a8ed323221305d8fe6b98b3155301d459c56ea3055020000000000000004454f53000000000000a6823403ea3055000000572d3ccdcd021042e8d13c77754500000000a8ed3232305d8fe6b98b315500000000a8ed323221305d8fe6b98b3155301d459c56ea3055020000000000000004454f53000000000000a6823403ea3055000000572d3ccdcd021042e8d13c77754500000000a8ed3232305d8fe6b98b315500000000a8ed323221305d8fe6b98b3155301d459c56ea3055020000000000000004454f53000000000000a6823403ea3055000000572d3ccdcd021042e8d13c77754500000000a8ed3232305d8fe6b98b315500000000a8ed323221305d8fe6b98b3155301d459c56ea3055020000000000000004454f53000000000000a6823403ea3055000000572d3ccdcd021042e8d13c77754500000000a8ed3232305d8fe6b98b315500000000a8ed323221305d8fe6b98b3155301d459c56ea3055020000000000000004454f53000000000000a6823403ea3055000000572d3ccdcd021042e8d13c77754500000000a8ed3232305d8fe6b98b315500000000a8ed323221305d8fe6b98b3155301d459c56ea3055020000000000000004454f53000000000000a6823403ea3055000000572d3ccdcd021042e8d13c77754500000000a8ed3232305d8fe6b98b315500000000a8ed323221305d8fe6b98b3155301d459c56ea3055020000000000000004454f530000000000301d459c56ea3055000000572d3ccdcd021042e8d13c77754500000000a8ed3232305d8fe6b98b315500000000a8ed32322b305d8fe6b98b31550000704b25500dc780b2e60e0000000008504f57000000000a737761702c302c31323800", + "transaction": { + "expiration": "2022-10-15T07:14:03", + "ref_block_num": 64097, + "ref_block_prefix": 483705538, + "max_net_usage_words": 0, + "max_cpu_usage_ms": 0, + "delay_sec": 0, + "context_free_actions": [], + "actions": [ + { + "account": "eosio.token", + "name": "transfer", + "authorization": [ + { + "actor": "cpurijalx111", + "permission": "active" + }, + { + "actor": "eossrijalxin", + "permission": "active" + } + ], + "data": { + "from": "eossrijalxin", + "to": "eosiopowcoin", + "quantity": "0.0001 EOS", + "memo": "" + }, + "hex_data": "305d8fe6b98b3155301d459c56ea3055010000000000000004454f530000000000" + }, + { + "account": "eosio.token", + "name": "transfer", + "authorization": [ + { + "actor": "cpurijalx111", + "permission": "active" + }, + { + "actor": "eossrijalxin", + "permission": "active" + } + ], + "data": { + "from": "eossrijalxin", + "to": "eosiopowcoin", + "quantity": "0.0002 EOS", + "memo": "" + }, + "hex_data": "305d8fe6b98b3155301d459c56ea3055020000000000000004454f530000000000" + }, + { + "account": "eosio.token", + "name": "transfer", + "authorization": [ + { + "actor": "cpurijalx111", + "permission": "active" + }, + { + "actor": "eossrijalxin", + "permission": "active" + } + ], + "data": { + "from": "eossrijalxin", + "to": "eosiopowcoin", + "quantity": "0.0002 EOS", + "memo": "" + }, + "hex_data": "305d8fe6b98b3155301d459c56ea3055020000000000000004454f530000000000" + }, + { + "account": "eosio.token", + "name": "transfer", + "authorization": [ + { + "actor": "cpurijalx111", + "permission": "active" + }, + { + "actor": "eossrijalxin", + "permission": "active" + } + ], + "data": { + "from": "eossrijalxin", + "to": "eosiopowcoin", + "quantity": "0.0002 EOS", + "memo": "" + }, + "hex_data": "305d8fe6b98b3155301d459c56ea3055020000000000000004454f530000000000" + }, + { + "account": "eosio.token", + "name": "transfer", + "authorization": [ + { + "actor": "cpurijalx111", + "permission": "active" + }, + { + "actor": "eossrijalxin", + "permission": "active" + } + ], + "data": { + "from": "eossrijalxin", + "to": "eosiopowcoin", + "quantity": "0.0002 EOS", + "memo": "" + }, + "hex_data": "305d8fe6b98b3155301d459c56ea3055020000000000000004454f530000000000" + }, + { + "account": "eosio.token", + "name": "transfer", + "authorization": [ + { + "actor": "cpurijalx111", + "permission": "active" + }, + { + "actor": "eossrijalxin", + "permission": "active" + } + ], + "data": { + "from": "eossrijalxin", + "to": "eosiopowcoin", + "quantity": "0.0002 EOS", + "memo": "" + }, + "hex_data": "305d8fe6b98b3155301d459c56ea3055020000000000000004454f530000000000" + }, + { + "account": "eosio.token", + "name": "transfer", + "authorization": [ + { + "actor": "cpurijalx111", + "permission": "active" + }, + { + "actor": "eossrijalxin", + "permission": "active" + } + ], + "data": { + "from": "eossrijalxin", + "to": "eosiopowcoin", + "quantity": "0.0002 EOS", + "memo": "" + }, + "hex_data": "305d8fe6b98b3155301d459c56ea3055020000000000000004454f530000000000" + }, + { + "account": "eosio.token", + "name": "transfer", + "authorization": [ + { + "actor": "cpurijalx111", + "permission": "active" + }, + { + "actor": "eossrijalxin", + "permission": "active" + } + ], + "data": { + "from": "eossrijalxin", + "to": "eosiopowcoin", + "quantity": "0.0002 EOS", + "memo": "" + }, + "hex_data": "305d8fe6b98b3155301d459c56ea3055020000000000000004454f530000000000" + }, + { + "account": "eosio.token", + "name": "transfer", + "authorization": [ + { + "actor": "cpurijalx111", + "permission": "active" + }, + { + "actor": "eossrijalxin", + "permission": "active" + } + ], + "data": { + "from": "eossrijalxin", + "to": "eosiopowcoin", + "quantity": "0.0002 EOS", + "memo": "" + }, + "hex_data": "305d8fe6b98b3155301d459c56ea3055020000000000000004454f530000000000" + }, + { + "account": "eosio.token", + "name": "transfer", + "authorization": [ + { + "actor": "cpurijalx111", + "permission": "active" + }, + { + "actor": "eossrijalxin", + "permission": "active" + } + ], + "data": { + "from": "eossrijalxin", + "to": "eosiopowcoin", + "quantity": "0.0002 EOS", + "memo": "" + }, + "hex_data": "305d8fe6b98b3155301d459c56ea3055020000000000000004454f530000000000" + }, + { + "account": "eosio.token", + "name": "transfer", + "authorization": [ + { + "actor": "cpurijalx111", + "permission": "active" + }, + { + "actor": "eossrijalxin", + "permission": "active" + } + ], + "data": { + "from": "eossrijalxin", + "to": "eosiopowcoin", + "quantity": "0.0002 EOS", + "memo": "" + }, + "hex_data": "305d8fe6b98b3155301d459c56ea3055020000000000000004454f530000000000" + }, + { + "account": "eosio.token", + "name": "transfer", + "authorization": [ + { + "actor": "cpurijalx111", + "permission": "active" + }, + { + "actor": "eossrijalxin", + "permission": "active" + } + ], + "data": { + "from": "eossrijalxin", + "to": "eosiopowcoin", + "quantity": "0.0002 EOS", + "memo": "" + }, + "hex_data": "305d8fe6b98b3155301d459c56ea3055020000000000000004454f530000000000" + }, + { + "account": "eosio.token", + "name": "transfer", + "authorization": [ + { + "actor": "cpurijalx111", + "permission": "active" + }, + { + "actor": "eossrijalxin", + "permission": "active" + } + ], + "data": { + "from": "eossrijalxin", + "to": "eosiopowcoin", + "quantity": "0.0002 EOS", + "memo": "" + }, + "hex_data": "305d8fe6b98b3155301d459c56ea3055020000000000000004454f530000000000" + }, + { + "account": "eosio.token", + "name": "transfer", + "authorization": [ + { + "actor": "cpurijalx111", + "permission": "active" + }, + { + "actor": "eossrijalxin", + "permission": "active" + } + ], + "data": { + "from": "eossrijalxin", + "to": "eosiopowcoin", + "quantity": "0.0002 EOS", + "memo": "" + }, + "hex_data": "305d8fe6b98b3155301d459c56ea3055020000000000000004454f530000000000" + }, + { + "account": "eosio.token", + "name": "transfer", + "authorization": [ + { + "actor": "cpurijalx111", + "permission": "active" + }, + { + "actor": "eossrijalxin", + "permission": "active" + } + ], + "data": { + "from": "eossrijalxin", + "to": "eosiopowcoin", + "quantity": "0.0002 EOS", + "memo": "" + }, + "hex_data": "305d8fe6b98b3155301d459c56ea3055020000000000000004454f530000000000" + }, + { + "account": "eosio.token", + "name": "transfer", + "authorization": [ + { + "actor": "cpurijalx111", + "permission": "active" + }, + { + "actor": "eossrijalxin", + "permission": "active" + } + ], + "data": { + "from": "eossrijalxin", + "to": "eosiopowcoin", + "quantity": "0.0002 EOS", + "memo": "" + }, + "hex_data": "305d8fe6b98b3155301d459c56ea3055020000000000000004454f530000000000" + }, + { + "account": "eosio.token", + "name": "transfer", + "authorization": [ + { + "actor": "cpurijalx111", + "permission": "active" + }, + { + "actor": "eossrijalxin", + "permission": "active" + } + ], + "data": { + "from": "eossrijalxin", + "to": "eosiopowcoin", + "quantity": "0.0002 EOS", + "memo": "" + }, + "hex_data": "305d8fe6b98b3155301d459c56ea3055020000000000000004454f530000000000" + }, + { + "account": "eosio.token", + "name": "transfer", + "authorization": [ + { + "actor": "cpurijalx111", + "permission": "active" + }, + { + "actor": "eossrijalxin", + "permission": "active" + } + ], + "data": { + "from": "eossrijalxin", + "to": "eosiopowcoin", + "quantity": "0.0002 EOS", + "memo": "" + }, + "hex_data": "305d8fe6b98b3155301d459c56ea3055020000000000000004454f530000000000" + }, + { + "account": "eosio.token", + "name": "transfer", + "authorization": [ + { + "actor": "cpurijalx111", + "permission": "active" + }, + { + "actor": "eossrijalxin", + "permission": "active" + } + ], + "data": { + "from": "eossrijalxin", + "to": "eosiopowcoin", + "quantity": "0.0002 EOS", + "memo": "" + }, + "hex_data": "305d8fe6b98b3155301d459c56ea3055020000000000000004454f530000000000" + }, + { + "account": "eosio.token", + "name": "transfer", + "authorization": [ + { + "actor": "cpurijalx111", + "permission": "active" + }, + { + "actor": "eossrijalxin", + "permission": "active" + } + ], + "data": { + "from": "eossrijalxin", + "to": "eosiopowcoin", + "quantity": "0.0002 EOS", + "memo": "" + }, + "hex_data": "305d8fe6b98b3155301d459c56ea3055020000000000000004454f530000000000" + }, + { + "account": "eosio.token", + "name": "transfer", + "authorization": [ + { + "actor": "cpurijalx111", + "permission": "active" + }, + { + "actor": "eossrijalxin", + "permission": "active" + } + ], + "data": { + "from": "eossrijalxin", + "to": "eosiopowcoin", + "quantity": "0.0002 EOS", + "memo": "" + }, + "hex_data": "305d8fe6b98b3155301d459c56ea3055020000000000000004454f530000000000" + }, + { + "account": "eosio.token", + "name": "transfer", + "authorization": [ + { + "actor": "cpurijalx111", + "permission": "active" + }, + { + "actor": "eossrijalxin", + "permission": "active" + } + ], + "data": { + "from": "eossrijalxin", + "to": "eosiopowcoin", + "quantity": "0.0002 EOS", + "memo": "" + }, + "hex_data": "305d8fe6b98b3155301d459c56ea3055020000000000000004454f530000000000" + }, + { + "account": "eosio.token", + "name": "transfer", + "authorization": [ + { + "actor": "cpurijalx111", + "permission": "active" + }, + { + "actor": "eossrijalxin", + "permission": "active" + } + ], + "data": { + "from": "eossrijalxin", + "to": "eosiopowcoin", + "quantity": "0.0002 EOS", + "memo": "" + }, + "hex_data": "305d8fe6b98b3155301d459c56ea3055020000000000000004454f530000000000" + }, + { + "account": "eosio.token", + "name": "transfer", + "authorization": [ + { + "actor": "cpurijalx111", + "permission": "active" + }, + { + "actor": "eossrijalxin", + "permission": "active" + } + ], + "data": { + "from": "eossrijalxin", + "to": "eosiopowcoin", + "quantity": "0.0002 EOS", + "memo": "" + }, + "hex_data": "305d8fe6b98b3155301d459c56ea3055020000000000000004454f530000000000" + }, + { + "account": "eosio.token", + "name": "transfer", + "authorization": [ + { + "actor": "cpurijalx111", + "permission": "active" + }, + { + "actor": "eossrijalxin", + "permission": "active" + } + ], + "data": { + "from": "eossrijalxin", + "to": "eosiopowcoin", + "quantity": "0.0002 EOS", + "memo": "" + }, + "hex_data": "305d8fe6b98b3155301d459c56ea3055020000000000000004454f530000000000" + }, + { + "account": "eosio.token", + "name": "transfer", + "authorization": [ + { + "actor": "cpurijalx111", + "permission": "active" + }, + { + "actor": "eossrijalxin", + "permission": "active" + } + ], + "data": { + "from": "eossrijalxin", + "to": "eosiopowcoin", + "quantity": "0.0002 EOS", + "memo": "" + }, + "hex_data": "305d8fe6b98b3155301d459c56ea3055020000000000000004454f530000000000" + }, + { + "account": "eosio.token", + "name": "transfer", + "authorization": [ + { + "actor": "cpurijalx111", + "permission": "active" + }, + { + "actor": "eossrijalxin", + "permission": "active" + } + ], + "data": { + "from": "eossrijalxin", + "to": "eosiopowcoin", + "quantity": "0.0002 EOS", + "memo": "" + }, + "hex_data": "305d8fe6b98b3155301d459c56ea3055020000000000000004454f530000000000" + }, + { + "account": "eosio.token", + "name": "transfer", + "authorization": [ + { + "actor": "cpurijalx111", + "permission": "active" + }, + { + "actor": "eossrijalxin", + "permission": "active" + } + ], + "data": { + "from": "eossrijalxin", + "to": "eosiopowcoin", + "quantity": "0.0002 EOS", + "memo": "" + }, + "hex_data": "305d8fe6b98b3155301d459c56ea3055020000000000000004454f530000000000" + }, + { + "account": "eosio.token", + "name": "transfer", + "authorization": [ + { + "actor": "cpurijalx111", + "permission": "active" + }, + { + "actor": "eossrijalxin", + "permission": "active" + } + ], + "data": { + "from": "eossrijalxin", + "to": "eosiopowcoin", + "quantity": "0.0002 EOS", + "memo": "" + }, + "hex_data": "305d8fe6b98b3155301d459c56ea3055020000000000000004454f530000000000" + }, + { + "account": "eosio.token", + "name": "transfer", + "authorization": [ + { + "actor": "cpurijalx111", + "permission": "active" + }, + { + "actor": "eossrijalxin", + "permission": "active" + } + ], + "data": { + "from": "eossrijalxin", + "to": "eosiopowcoin", + "quantity": "0.0002 EOS", + "memo": "" + }, + "hex_data": "305d8fe6b98b3155301d459c56ea3055020000000000000004454f530000000000" + }, + { + "account": "eosio.token", + "name": "transfer", + "authorization": [ + { + "actor": "cpurijalx111", + "permission": "active" + }, + { + "actor": "eossrijalxin", + "permission": "active" + } + ], + "data": { + "from": "eossrijalxin", + "to": "eosiopowcoin", + "quantity": "0.0002 EOS", + "memo": "" + }, + "hex_data": "305d8fe6b98b3155301d459c56ea3055020000000000000004454f530000000000" + }, + { + "account": "eosio.token", + "name": "transfer", + "authorization": [ + { + "actor": "cpurijalx111", + "permission": "active" + }, + { + "actor": "eossrijalxin", + "permission": "active" + } + ], + "data": { + "from": "eossrijalxin", + "to": "eosiopowcoin", + "quantity": "0.0002 EOS", + "memo": "" + }, + "hex_data": "305d8fe6b98b3155301d459c56ea3055020000000000000004454f530000000000" + }, + { + "account": "eosio.token", + "name": "transfer", + "authorization": [ + { + "actor": "cpurijalx111", + "permission": "active" + }, + { + "actor": "eossrijalxin", + "permission": "active" + } + ], + "data": { + "from": "eossrijalxin", + "to": "eosiopowcoin", + "quantity": "0.0002 EOS", + "memo": "" + }, + "hex_data": "305d8fe6b98b3155301d459c56ea3055020000000000000004454f530000000000" + }, + { + "account": "eosio.token", + "name": "transfer", + "authorization": [ + { + "actor": "cpurijalx111", + "permission": "active" + }, + { + "actor": "eossrijalxin", + "permission": "active" + } + ], + "data": { + "from": "eossrijalxin", + "to": "eosiopowcoin", + "quantity": "0.0002 EOS", + "memo": "" + }, + "hex_data": "305d8fe6b98b3155301d459c56ea3055020000000000000004454f530000000000" + }, + { + "account": "eosio.token", + "name": "transfer", + "authorization": [ + { + "actor": "cpurijalx111", + "permission": "active" + }, + { + "actor": "eossrijalxin", + "permission": "active" + } + ], + "data": { + "from": "eossrijalxin", + "to": "eosiopowcoin", + "quantity": "0.0002 EOS", + "memo": "" + }, + "hex_data": "305d8fe6b98b3155301d459c56ea3055020000000000000004454f530000000000" + }, + { + "account": "eosio.token", + "name": "transfer", + "authorization": [ + { + "actor": "cpurijalx111", + "permission": "active" + }, + { + "actor": "eossrijalxin", + "permission": "active" + } + ], + "data": { + "from": "eossrijalxin", + "to": "eosiopowcoin", + "quantity": "0.0002 EOS", + "memo": "" + }, + "hex_data": "305d8fe6b98b3155301d459c56ea3055020000000000000004454f530000000000" + }, + { + "account": "eosio.token", + "name": "transfer", + "authorization": [ + { + "actor": "cpurijalx111", + "permission": "active" + }, + { + "actor": "eossrijalxin", + "permission": "active" + } + ], + "data": { + "from": "eossrijalxin", + "to": "eosiopowcoin", + "quantity": "0.0002 EOS", + "memo": "" + }, + "hex_data": "305d8fe6b98b3155301d459c56ea3055020000000000000004454f530000000000" + }, + { + "account": "eosio.token", + "name": "transfer", + "authorization": [ + { + "actor": "cpurijalx111", + "permission": "active" + }, + { + "actor": "eossrijalxin", + "permission": "active" + } + ], + "data": { + "from": "eossrijalxin", + "to": "eosiopowcoin", + "quantity": "0.0002 EOS", + "memo": "" + }, + "hex_data": "305d8fe6b98b3155301d459c56ea3055020000000000000004454f530000000000" + }, + { + "account": "eosio.token", + "name": "transfer", + "authorization": [ + { + "actor": "cpurijalx111", + "permission": "active" + }, + { + "actor": "eossrijalxin", + "permission": "active" + } + ], + "data": { + "from": "eossrijalxin", + "to": "eosiopowcoin", + "quantity": "0.0002 EOS", + "memo": "" + }, + "hex_data": "305d8fe6b98b3155301d459c56ea3055020000000000000004454f530000000000" + }, + { + "account": "eosio.token", + "name": "transfer", + "authorization": [ + { + "actor": "cpurijalx111", + "permission": "active" + }, + { + "actor": "eossrijalxin", + "permission": "active" + } + ], + "data": { + "from": "eossrijalxin", + "to": "eosiopowcoin", + "quantity": "0.0002 EOS", + "memo": "" + }, + "hex_data": "305d8fe6b98b3155301d459c56ea3055020000000000000004454f530000000000" + }, + { + "account": "eosio.token", + "name": "transfer", + "authorization": [ + { + "actor": "cpurijalx111", + "permission": "active" + }, + { + "actor": "eossrijalxin", + "permission": "active" + } + ], + "data": { + "from": "eossrijalxin", + "to": "eosiopowcoin", + "quantity": "0.0002 EOS", + "memo": "" + }, + "hex_data": "305d8fe6b98b3155301d459c56ea3055020000000000000004454f530000000000" + }, + { + "account": "eosio.token", + "name": "transfer", + "authorization": [ + { + "actor": "cpurijalx111", + "permission": "active" + }, + { + "actor": "eossrijalxin", + "permission": "active" + } + ], + "data": { + "from": "eossrijalxin", + "to": "eosiopowcoin", + "quantity": "0.0002 EOS", + "memo": "" + }, + "hex_data": "305d8fe6b98b3155301d459c56ea3055020000000000000004454f530000000000" + }, + { + "account": "eosio.token", + "name": "transfer", + "authorization": [ + { + "actor": "cpurijalx111", + "permission": "active" + }, + { + "actor": "eossrijalxin", + "permission": "active" + } + ], + "data": { + "from": "eossrijalxin", + "to": "eosiopowcoin", + "quantity": "0.0002 EOS", + "memo": "" + }, + "hex_data": "305d8fe6b98b3155301d459c56ea3055020000000000000004454f530000000000" + }, + { + "account": "eosio.token", + "name": "transfer", + "authorization": [ + { + "actor": "cpurijalx111", + "permission": "active" + }, + { + "actor": "eossrijalxin", + "permission": "active" + } + ], + "data": { + "from": "eossrijalxin", + "to": "eosiopowcoin", + "quantity": "0.0002 EOS", + "memo": "" + }, + "hex_data": "305d8fe6b98b3155301d459c56ea3055020000000000000004454f530000000000" + }, + { + "account": "eosio.token", + "name": "transfer", + "authorization": [ + { + "actor": "cpurijalx111", + "permission": "active" + }, + { + "actor": "eossrijalxin", + "permission": "active" + } + ], + "data": { + "from": "eossrijalxin", + "to": "eosiopowcoin", + "quantity": "0.0002 EOS", + "memo": "" + }, + "hex_data": "305d8fe6b98b3155301d459c56ea3055020000000000000004454f530000000000" + }, + { + "account": "eosio.token", + "name": "transfer", + "authorization": [ + { + "actor": "cpurijalx111", + "permission": "active" + }, + { + "actor": "eossrijalxin", + "permission": "active" + } + ], + "data": { + "from": "eossrijalxin", + "to": "eosiopowcoin", + "quantity": "0.0002 EOS", + "memo": "" + }, + "hex_data": "305d8fe6b98b3155301d459c56ea3055020000000000000004454f530000000000" + }, + { + "account": "eosio.token", + "name": "transfer", + "authorization": [ + { + "actor": "cpurijalx111", + "permission": "active" + }, + { + "actor": "eossrijalxin", + "permission": "active" + } + ], + "data": { + "from": "eossrijalxin", + "to": "eosiopowcoin", + "quantity": "0.0002 EOS", + "memo": "" + }, + "hex_data": "305d8fe6b98b3155301d459c56ea3055020000000000000004454f530000000000" + }, + { + "account": "eosio.token", + "name": "transfer", + "authorization": [ + { + "actor": "cpurijalx111", + "permission": "active" + }, + { + "actor": "eossrijalxin", + "permission": "active" + } + ], + "data": { + "from": "eossrijalxin", + "to": "eosiopowcoin", + "quantity": "0.0002 EOS", + "memo": "" + }, + "hex_data": "305d8fe6b98b3155301d459c56ea3055020000000000000004454f530000000000" + }, + { + "account": "eosio.token", + "name": "transfer", + "authorization": [ + { + "actor": "cpurijalx111", + "permission": "active" + }, + { + "actor": "eossrijalxin", + "permission": "active" + } + ], + "data": { + "from": "eossrijalxin", + "to": "eosiopowcoin", + "quantity": "0.0002 EOS", + "memo": "" + }, + "hex_data": "305d8fe6b98b3155301d459c56ea3055020000000000000004454f530000000000" + }, + { + "account": "eosio.token", + "name": "transfer", + "authorization": [ + { + "actor": "cpurijalx111", + "permission": "active" + }, + { + "actor": "eossrijalxin", + "permission": "active" + } + ], + "data": { + "from": "eossrijalxin", + "to": "eosiopowcoin", + "quantity": "0.0002 EOS", + "memo": "" + }, + "hex_data": "305d8fe6b98b3155301d459c56ea3055020000000000000004454f530000000000" + }, + { + "account": "eosio.token", + "name": "transfer", + "authorization": [ + { + "actor": "cpurijalx111", + "permission": "active" + }, + { + "actor": "eossrijalxin", + "permission": "active" + } + ], + "data": { + "from": "eossrijalxin", + "to": "eosiopowcoin", + "quantity": "0.0002 EOS", + "memo": "" + }, + "hex_data": "305d8fe6b98b3155301d459c56ea3055020000000000000004454f530000000000" + }, + { + "account": "eosio.token", + "name": "transfer", + "authorization": [ + { + "actor": "cpurijalx111", + "permission": "active" + }, + { + "actor": "eossrijalxin", + "permission": "active" + } + ], + "data": { + "from": "eossrijalxin", + "to": "eosiopowcoin", + "quantity": "0.0002 EOS", + "memo": "" + }, + "hex_data": "305d8fe6b98b3155301d459c56ea3055020000000000000004454f530000000000" + }, + { + "account": "eosio.token", + "name": "transfer", + "authorization": [ + { + "actor": "cpurijalx111", + "permission": "active" + }, + { + "actor": "eossrijalxin", + "permission": "active" + } + ], + "data": { + "from": "eossrijalxin", + "to": "eosiopowcoin", + "quantity": "0.0002 EOS", + "memo": "" + }, + "hex_data": "305d8fe6b98b3155301d459c56ea3055020000000000000004454f530000000000" + }, + { + "account": "eosio.token", + "name": "transfer", + "authorization": [ + { + "actor": "cpurijalx111", + "permission": "active" + }, + { + "actor": "eossrijalxin", + "permission": "active" + } + ], + "data": { + "from": "eossrijalxin", + "to": "eosiopowcoin", + "quantity": "0.0002 EOS", + "memo": "" + }, + "hex_data": "305d8fe6b98b3155301d459c56ea3055020000000000000004454f530000000000" + }, + { + "account": "eosio.token", + "name": "transfer", + "authorization": [ + { + "actor": "cpurijalx111", + "permission": "active" + }, + { + "actor": "eossrijalxin", + "permission": "active" + } + ], + "data": { + "from": "eossrijalxin", + "to": "eosiopowcoin", + "quantity": "0.0002 EOS", + "memo": "" + }, + "hex_data": "305d8fe6b98b3155301d459c56ea3055020000000000000004454f530000000000" + }, + { + "account": "eosio.token", + "name": "transfer", + "authorization": [ + { + "actor": "cpurijalx111", + "permission": "active" + }, + { + "actor": "eossrijalxin", + "permission": "active" + } + ], + "data": { + "from": "eossrijalxin", + "to": "eosiopowcoin", + "quantity": "0.0002 EOS", + "memo": "" + }, + "hex_data": "305d8fe6b98b3155301d459c56ea3055020000000000000004454f530000000000" + }, + { + "account": "eosio.token", + "name": "transfer", + "authorization": [ + { + "actor": "cpurijalx111", + "permission": "active" + }, + { + "actor": "eossrijalxin", + "permission": "active" + } + ], + "data": { + "from": "eossrijalxin", + "to": "eosiopowcoin", + "quantity": "0.0002 EOS", + "memo": "" + }, + "hex_data": "305d8fe6b98b3155301d459c56ea3055020000000000000004454f530000000000" + }, + { + "account": "eosio.token", + "name": "transfer", + "authorization": [ + { + "actor": "cpurijalx111", + "permission": "active" + }, + { + "actor": "eossrijalxin", + "permission": "active" + } + ], + "data": { + "from": "eossrijalxin", + "to": "eosiopowcoin", + "quantity": "0.0002 EOS", + "memo": "" + }, + "hex_data": "305d8fe6b98b3155301d459c56ea3055020000000000000004454f530000000000" + }, + { + "account": "eosio.token", + "name": "transfer", + "authorization": [ + { + "actor": "cpurijalx111", + "permission": "active" + }, + { + "actor": "eossrijalxin", + "permission": "active" + } + ], + "data": { + "from": "eossrijalxin", + "to": "eosiopowcoin", + "quantity": "0.0002 EOS", + "memo": "" + }, + "hex_data": "305d8fe6b98b3155301d459c56ea3055020000000000000004454f530000000000" + }, + { + "account": "eosio.token", + "name": "transfer", + "authorization": [ + { + "actor": "cpurijalx111", + "permission": "active" + }, + { + "actor": "eossrijalxin", + "permission": "active" + } + ], + "data": { + "from": "eossrijalxin", + "to": "eosiopowcoin", + "quantity": "0.0002 EOS", + "memo": "" + }, + "hex_data": "305d8fe6b98b3155301d459c56ea3055020000000000000004454f530000000000" + }, + { + "account": "eosio.token", + "name": "transfer", + "authorization": [ + { + "actor": "cpurijalx111", + "permission": "active" + }, + { + "actor": "eossrijalxin", + "permission": "active" + } + ], + "data": { + "from": "eossrijalxin", + "to": "eosiopowcoin", + "quantity": "0.0002 EOS", + "memo": "" + }, + "hex_data": "305d8fe6b98b3155301d459c56ea3055020000000000000004454f530000000000" + }, + { + "account": "eosio.token", + "name": "transfer", + "authorization": [ + { + "actor": "cpurijalx111", + "permission": "active" + }, + { + "actor": "eossrijalxin", + "permission": "active" + } + ], + "data": { + "from": "eossrijalxin", + "to": "eosiopowcoin", + "quantity": "0.0002 EOS", + "memo": "" + }, + "hex_data": "305d8fe6b98b3155301d459c56ea3055020000000000000004454f530000000000" + }, + { + "account": "eosio.token", + "name": "transfer", + "authorization": [ + { + "actor": "cpurijalx111", + "permission": "active" + }, + { + "actor": "eossrijalxin", + "permission": "active" + } + ], + "data": { + "from": "eossrijalxin", + "to": "eosiopowcoin", + "quantity": "0.0002 EOS", + "memo": "" + }, + "hex_data": "305d8fe6b98b3155301d459c56ea3055020000000000000004454f530000000000" + }, + { + "account": "eosio.token", + "name": "transfer", + "authorization": [ + { + "actor": "cpurijalx111", + "permission": "active" + }, + { + "actor": "eossrijalxin", + "permission": "active" + } + ], + "data": { + "from": "eossrijalxin", + "to": "eosiopowcoin", + "quantity": "0.0002 EOS", + "memo": "" + }, + "hex_data": "305d8fe6b98b3155301d459c56ea3055020000000000000004454f530000000000" + }, + { + "account": "eosio.token", + "name": "transfer", + "authorization": [ + { + "actor": "cpurijalx111", + "permission": "active" + }, + { + "actor": "eossrijalxin", + "permission": "active" + } + ], + "data": { + "from": "eossrijalxin", + "to": "eosiopowcoin", + "quantity": "0.0002 EOS", + "memo": "" + }, + "hex_data": "305d8fe6b98b3155301d459c56ea3055020000000000000004454f530000000000" + }, + { + "account": "eosio.token", + "name": "transfer", + "authorization": [ + { + "actor": "cpurijalx111", + "permission": "active" + }, + { + "actor": "eossrijalxin", + "permission": "active" + } + ], + "data": { + "from": "eossrijalxin", + "to": "eosiopowcoin", + "quantity": "0.0002 EOS", + "memo": "" + }, + "hex_data": "305d8fe6b98b3155301d459c56ea3055020000000000000004454f530000000000" + }, + { + "account": "eosio.token", + "name": "transfer", + "authorization": [ + { + "actor": "cpurijalx111", + "permission": "active" + }, + { + "actor": "eossrijalxin", + "permission": "active" + } + ], + "data": { + "from": "eossrijalxin", + "to": "eosiopowcoin", + "quantity": "0.0002 EOS", + "memo": "" + }, + "hex_data": "305d8fe6b98b3155301d459c56ea3055020000000000000004454f530000000000" + }, + { + "account": "eosio.token", + "name": "transfer", + "authorization": [ + { + "actor": "cpurijalx111", + "permission": "active" + }, + { + "actor": "eossrijalxin", + "permission": "active" + } + ], + "data": { + "from": "eossrijalxin", + "to": "eosiopowcoin", + "quantity": "0.0002 EOS", + "memo": "" + }, + "hex_data": "305d8fe6b98b3155301d459c56ea3055020000000000000004454f530000000000" + }, + { + "account": "eosio.token", + "name": "transfer", + "authorization": [ + { + "actor": "cpurijalx111", + "permission": "active" + }, + { + "actor": "eossrijalxin", + "permission": "active" + } + ], + "data": { + "from": "eossrijalxin", + "to": "eosiopowcoin", + "quantity": "0.0002 EOS", + "memo": "" + }, + "hex_data": "305d8fe6b98b3155301d459c56ea3055020000000000000004454f530000000000" + }, + { + "account": "eosio.token", + "name": "transfer", + "authorization": [ + { + "actor": "cpurijalx111", + "permission": "active" + }, + { + "actor": "eossrijalxin", + "permission": "active" + } + ], + "data": { + "from": "eossrijalxin", + "to": "eosiopowcoin", + "quantity": "0.0002 EOS", + "memo": "" + }, + "hex_data": "305d8fe6b98b3155301d459c56ea3055020000000000000004454f530000000000" + }, + { + "account": "eosio.token", + "name": "transfer", + "authorization": [ + { + "actor": "cpurijalx111", + "permission": "active" + }, + { + "actor": "eossrijalxin", + "permission": "active" + } + ], + "data": { + "from": "eossrijalxin", + "to": "eosiopowcoin", + "quantity": "0.0002 EOS", + "memo": "" + }, + "hex_data": "305d8fe6b98b3155301d459c56ea3055020000000000000004454f530000000000" + }, + { + "account": "eosio.token", + "name": "transfer", + "authorization": [ + { + "actor": "cpurijalx111", + "permission": "active" + }, + { + "actor": "eossrijalxin", + "permission": "active" + } + ], + "data": { + "from": "eossrijalxin", + "to": "eosiopowcoin", + "quantity": "0.0002 EOS", + "memo": "" + }, + "hex_data": "305d8fe6b98b3155301d459c56ea3055020000000000000004454f530000000000" + }, + { + "account": "eosio.token", + "name": "transfer", + "authorization": [ + { + "actor": "cpurijalx111", + "permission": "active" + }, + { + "actor": "eossrijalxin", + "permission": "active" + } + ], + "data": { + "from": "eossrijalxin", + "to": "eosiopowcoin", + "quantity": "0.0002 EOS", + "memo": "" + }, + "hex_data": "305d8fe6b98b3155301d459c56ea3055020000000000000004454f530000000000" + }, + { + "account": "eosio.token", + "name": "transfer", + "authorization": [ + { + "actor": "cpurijalx111", + "permission": "active" + }, + { + "actor": "eossrijalxin", + "permission": "active" + } + ], + "data": { + "from": "eossrijalxin", + "to": "eosiopowcoin", + "quantity": "0.0002 EOS", + "memo": "" + }, + "hex_data": "305d8fe6b98b3155301d459c56ea3055020000000000000004454f530000000000" + }, + { + "account": "eosio.token", + "name": "transfer", + "authorization": [ + { + "actor": "cpurijalx111", + "permission": "active" + }, + { + "actor": "eossrijalxin", + "permission": "active" + } + ], + "data": { + "from": "eossrijalxin", + "to": "eosiopowcoin", + "quantity": "0.0001 EOS", + "memo": "" + }, + "hex_data": "305d8fe6b98b3155301d459c56ea3055010000000000000004454f530000000000" + }, + { + "account": "eosio.token", + "name": "transfer", + "authorization": [ + { + "actor": "cpurijalx111", + "permission": "active" + }, + { + "actor": "eossrijalxin", + "permission": "active" + } + ], + "data": { + "from": "eossrijalxin", + "to": "eosiopowcoin", + "quantity": "0.0001 EOS", + "memo": "" + }, + "hex_data": "305d8fe6b98b3155301d459c56ea3055010000000000000004454f530000000000" + }, + { + "account": "eosio.token", + "name": "transfer", + "authorization": [ + { + "actor": "cpurijalx111", + "permission": "active" + }, + { + "actor": "eossrijalxin", + "permission": "active" + } + ], + "data": { + "from": "eossrijalxin", + "to": "eosiopowcoin", + "quantity": "0.0001 EOS", + "memo": "" + }, + "hex_data": "305d8fe6b98b3155301d459c56ea3055010000000000000004454f530000000000" + }, + { + "account": "eosio.token", + "name": "transfer", + "authorization": [ + { + "actor": "cpurijalx111", + "permission": "active" + }, + { + "actor": "eossrijalxin", + "permission": "active" + } + ], + "data": { + "from": "eossrijalxin", + "to": "eosiopowcoin", + "quantity": "0.0001 EOS", + "memo": "" + }, + "hex_data": "305d8fe6b98b3155301d459c56ea3055010000000000000004454f530000000000" + }, + { + "account": "eosio.token", + "name": "transfer", + "authorization": [ + { + "actor": "cpurijalx111", + "permission": "active" + }, + { + "actor": "eossrijalxin", + "permission": "active" + } + ], + "data": { + "from": "eossrijalxin", + "to": "eosiopowcoin", + "quantity": "0.0001 EOS", + "memo": "" + }, + "hex_data": "305d8fe6b98b3155301d459c56ea3055010000000000000004454f530000000000" + }, + { + "account": "eosio.token", + "name": "transfer", + "authorization": [ + { + "actor": "cpurijalx111", + "permission": "active" + }, + { + "actor": "eossrijalxin", + "permission": "active" + } + ], + "data": { + "from": "eossrijalxin", + "to": "eosiopowcoin", + "quantity": "0.0001 EOS", + "memo": "" + }, + "hex_data": "305d8fe6b98b3155301d459c56ea3055010000000000000004454f530000000000" + }, + { + "account": "eosio.token", + "name": "transfer", + "authorization": [ + { + "actor": "cpurijalx111", + "permission": "active" + }, + { + "actor": "eossrijalxin", + "permission": "active" + } + ], + "data": { + "from": "eossrijalxin", + "to": "eosiopowcoin", + "quantity": "0.0001 EOS", + "memo": "" + }, + "hex_data": "305d8fe6b98b3155301d459c56ea3055010000000000000004454f530000000000" + }, + { + "account": "eosio.token", + "name": "transfer", + "authorization": [ + { + "actor": "cpurijalx111", + "permission": "active" + }, + { + "actor": "eossrijalxin", + "permission": "active" + } + ], + "data": { + "from": "eossrijalxin", + "to": "eosiopowcoin", + "quantity": "0.0002 EOS", + "memo": "" + }, + "hex_data": "305d8fe6b98b3155301d459c56ea3055020000000000000004454f530000000000" + }, + { + "account": "eosio.token", + "name": "transfer", + "authorization": [ + { + "actor": "cpurijalx111", + "permission": "active" + }, + { + "actor": "eossrijalxin", + "permission": "active" + } + ], + "data": { + "from": "eossrijalxin", + "to": "eosiopowcoin", + "quantity": "0.0002 EOS", + "memo": "" + }, + "hex_data": "305d8fe6b98b3155301d459c56ea3055020000000000000004454f530000000000" + }, + { + "account": "eosio.token", + "name": "transfer", + "authorization": [ + { + "actor": "cpurijalx111", + "permission": "active" + }, + { + "actor": "eossrijalxin", + "permission": "active" + } + ], + "data": { + "from": "eossrijalxin", + "to": "eosiopowcoin", + "quantity": "0.0002 EOS", + "memo": "" + }, + "hex_data": "305d8fe6b98b3155301d459c56ea3055020000000000000004454f530000000000" + }, + { + "account": "eosio.token", + "name": "transfer", + "authorization": [ + { + "actor": "cpurijalx111", + "permission": "active" + }, + { + "actor": "eossrijalxin", + "permission": "active" + } + ], + "data": { + "from": "eossrijalxin", + "to": "eosiopowcoin", + "quantity": "0.0002 EOS", + "memo": "" + }, + "hex_data": "305d8fe6b98b3155301d459c56ea3055020000000000000004454f530000000000" + }, + { + "account": "eosio.token", + "name": "transfer", + "authorization": [ + { + "actor": "cpurijalx111", + "permission": "active" + }, + { + "actor": "eossrijalxin", + "permission": "active" + } + ], + "data": { + "from": "eossrijalxin", + "to": "eosiopowcoin", + "quantity": "0.0002 EOS", + "memo": "" + }, + "hex_data": "305d8fe6b98b3155301d459c56ea3055020000000000000004454f530000000000" + }, + { + "account": "eosio.token", + "name": "transfer", + "authorization": [ + { + "actor": "cpurijalx111", + "permission": "active" + }, + { + "actor": "eossrijalxin", + "permission": "active" + } + ], + "data": { + "from": "eossrijalxin", + "to": "eosiopowcoin", + "quantity": "0.0002 EOS", + "memo": "" + }, + "hex_data": "305d8fe6b98b3155301d459c56ea3055020000000000000004454f530000000000" + }, + { + "account": "eosio.token", + "name": "transfer", + "authorization": [ + { + "actor": "cpurijalx111", + "permission": "active" + }, + { + "actor": "eossrijalxin", + "permission": "active" + } + ], + "data": { + "from": "eossrijalxin", + "to": "eosiopowcoin", + "quantity": "0.0002 EOS", + "memo": "" + }, + "hex_data": "305d8fe6b98b3155301d459c56ea3055020000000000000004454f530000000000" + }, + { + "account": "eosio.token", + "name": "transfer", + "authorization": [ + { + "actor": "cpurijalx111", + "permission": "active" + }, + { + "actor": "eossrijalxin", + "permission": "active" + } + ], + "data": { + "from": "eossrijalxin", + "to": "eosiopowcoin", + "quantity": "0.0002 EOS", + "memo": "" + }, + "hex_data": "305d8fe6b98b3155301d459c56ea3055020000000000000004454f530000000000" + }, + { + "account": "eosio.token", + "name": "transfer", + "authorization": [ + { + "actor": "cpurijalx111", + "permission": "active" + }, + { + "actor": "eossrijalxin", + "permission": "active" + } + ], + "data": { + "from": "eossrijalxin", + "to": "eosiopowcoin", + "quantity": "0.0002 EOS", + "memo": "" + }, + "hex_data": "305d8fe6b98b3155301d459c56ea3055020000000000000004454f530000000000" + }, + { + "account": "eosio.token", + "name": "transfer", + "authorization": [ + { + "actor": "cpurijalx111", + "permission": "active" + }, + { + "actor": "eossrijalxin", + "permission": "active" + } + ], + "data": { + "from": "eossrijalxin", + "to": "eosiopowcoin", + "quantity": "0.0001 EOS", + "memo": "" + }, + "hex_data": "305d8fe6b98b3155301d459c56ea3055010000000000000004454f530000000000" + }, + { + "account": "eosio.token", + "name": "transfer", + "authorization": [ + { + "actor": "cpurijalx111", + "permission": "active" + }, + { + "actor": "eossrijalxin", + "permission": "active" + } + ], + "data": { + "from": "eossrijalxin", + "to": "eosiopowcoin", + "quantity": "0.0002 EOS", + "memo": "" + }, + "hex_data": "305d8fe6b98b3155301d459c56ea3055020000000000000004454f530000000000" + }, + { + "account": "eosio.token", + "name": "transfer", + "authorization": [ + { + "actor": "cpurijalx111", + "permission": "active" + }, + { + "actor": "eossrijalxin", + "permission": "active" + } + ], + "data": { + "from": "eossrijalxin", + "to": "eosiopowcoin", + "quantity": "0.0002 EOS", + "memo": "" + }, + "hex_data": "305d8fe6b98b3155301d459c56ea3055020000000000000004454f530000000000" + }, + { + "account": "eosio.token", + "name": "transfer", + "authorization": [ + { + "actor": "cpurijalx111", + "permission": "active" + }, + { + "actor": "eossrijalxin", + "permission": "active" + } + ], + "data": { + "from": "eossrijalxin", + "to": "eosiopowcoin", + "quantity": "0.0002 EOS", + "memo": "" + }, + "hex_data": "305d8fe6b98b3155301d459c56ea3055020000000000000004454f530000000000" + }, + { + "account": "eosio.token", + "name": "transfer", + "authorization": [ + { + "actor": "cpurijalx111", + "permission": "active" + }, + { + "actor": "eossrijalxin", + "permission": "active" + } + ], + "data": { + "from": "eossrijalxin", + "to": "eosiopowcoin", + "quantity": "0.0002 EOS", + "memo": "" + }, + "hex_data": "305d8fe6b98b3155301d459c56ea3055020000000000000004454f530000000000" + }, + { + "account": "eosio.token", + "name": "transfer", + "authorization": [ + { + "actor": "cpurijalx111", + "permission": "active" + }, + { + "actor": "eossrijalxin", + "permission": "active" + } + ], + "data": { + "from": "eossrijalxin", + "to": "eosiopowcoin", + "quantity": "0.0002 EOS", + "memo": "" + }, + "hex_data": "305d8fe6b98b3155301d459c56ea3055020000000000000004454f530000000000" + }, + { + "account": "eosio.token", + "name": "transfer", + "authorization": [ + { + "actor": "cpurijalx111", + "permission": "active" + }, + { + "actor": "eossrijalxin", + "permission": "active" + } + ], + "data": { + "from": "eossrijalxin", + "to": "eosiopowcoin", + "quantity": "0.0002 EOS", + "memo": "" + }, + "hex_data": "305d8fe6b98b3155301d459c56ea3055020000000000000004454f530000000000" + }, + { + "account": "eosio.token", + "name": "transfer", + "authorization": [ + { + "actor": "cpurijalx111", + "permission": "active" + }, + { + "actor": "eossrijalxin", + "permission": "active" + } + ], + "data": { + "from": "eossrijalxin", + "to": "eosiopowcoin", + "quantity": "0.0002 EOS", + "memo": "" + }, + "hex_data": "305d8fe6b98b3155301d459c56ea3055020000000000000004454f530000000000" + }, + { + "account": "eosio.token", + "name": "transfer", + "authorization": [ + { + "actor": "cpurijalx111", + "permission": "active" + }, + { + "actor": "eossrijalxin", + "permission": "active" + } + ], + "data": { + "from": "eossrijalxin", + "to": "eosiopowcoin", + "quantity": "0.0002 EOS", + "memo": "" + }, + "hex_data": "305d8fe6b98b3155301d459c56ea3055020000000000000004454f530000000000" + }, + { + "account": "eosiopowcoin", + "name": "transfer", + "authorization": [ + { + "actor": "cpurijalx111", + "permission": "active" + }, + { + "actor": "eossrijalxin", + "permission": "active" + } + ], + "data": { + "from": "eossrijalxin", + "to": "swap.defi", + "quantity": "2.50000000 POW", + "memo": "swap,0,128" + }, + "hex_data": "305d8fe6b98b31550000704b25500dc780b2e60e0000000008504f57000000000a737761702c302c313238" + } + ] + } + } + }, + { + "status": "executed", + "cpu_usage_us": 291, + "net_usage_words": 32, + "trx": { + "id": "a233f3c2584f133c1a49ae2d643c59caf348a2a1e48ac77aec295e536923cac8", + "signatures": [ + "SIG_K1_K7jy8ne5vns5LBFuGtg2uPsEoXprR53KufwKZyRwJSpsgq7mNjKhGuLedoiwiLqseHdtZgm8V96xvdzZMdZHpx3ynKexZJ", + "SIG_K1_K2YkbLnwFYPm5dh4weRpw8G5zTquTKQHpCVFNdu6UAZJ56Et9bVd77zUR86pqVa4wot9st5oUmGH7T8EHSyqM1cut3DCVA", + "SIG_K1_Jxmpfm5XexDg5EK7PxpaDvACZ4PzFBPSr35gYfCN4hqHtbLdUDJudH3WGuPUc9uutAEeqbh1oGoWdmHv4sXGeJ452pXAqJ" + ], + "compression": "none", + "packed_context_free_data": "", + "context_free_data": [], + "packed_trx": "7f6b4a6306fafefd77c40000000003a0649a2656ed4dac0000d0155dbabca901a0649a2656ed4dac0000d0155dbabca90850efca028ec2493c90113253419a7bd5000000572d3ccdcd0150efca028ec2493c00000000a46962d52150efca028ec2493ca0649a2656ed4dac8813000000000000025550580000000000a0649a2656ed4dac000000000000069901a0649a2656ed4dac000000c067175dd61850efca028ec2493c8813000000000000025550580000000000", + "transaction": { + "expiration": "2022-10-15T08:12:47", + "ref_block_num": 64006, + "ref_block_prefix": 3296198142, + "max_net_usage_words": 0, + "max_cpu_usage_ms": 0, + "delay_sec": 0, + "context_free_actions": [], + "actions": [ + { + "account": "playuplandme", + "name": "payforcpu", + "authorization": [ + { + "actor": "playuplandme", + "permission": "payforcpu" + } + ], + "data": { + "user_name": "bl4w53k2tfrp" + }, + "hex_data": "50efca028ec2493c" + }, + { + "account": "upxtokenacct", + "name": "transfer", + "authorization": [ + { + "actor": "bl4w53k2tfrp", + "permission": "upland" + } + ], + "data": { + "from": "bl4w53k2tfrp", + "to": "playuplandme", + "quantity": "50.00 UPX", + "memo": "" + }, + "hex_data": "50efca028ec2493ca0649a2656ed4dac8813000000000000025550580000000000" + }, + { + "account": "playuplandme", + "name": "n43", + "authorization": [ + { + "actor": "playuplandme", + "permission": "utility" + } + ], + "data": { + "p51": "bl4w53k2tfrp", + "p12": "50.00 UPX" + }, + "hex_data": "50efca028ec2493c88130000000000000255505800000000" + } + ] + } + } + }, + { + "status": "executed", + "cpu_usage_us": 182, + "net_usage_words": 21, + "trx": { + "id": "5e26cf1784733bfbd98c1b955187f76b522e010394b5f80310789c9448f2ffcd", + "signatures": [ + "SIG_K1_K9vZtCypzM12XQjrEgak2Toptbb9799C3gQtf5vc69WxGVTZ66aMFX5zpFmMS4o5S3JBhJb4oTMJwJb7xVeDLhz2kccShZ", + "SIG_K1_Ka5RakBN6m8pyjJrE8SYBzUJPW8AHdo5rhTdyHXE2ZRy9rbZAvS646NAGhuNuza8fZtp4iJwczPKmo1zapEdMGHo8aDHmB" + ], + "compression": "none", + "packed_context_free_data": "", + "context_free_data": [], + "packed_trx": "da5d4a6363fa49cea4960000000002a0649a2656ed4dac0000d0155dbabca901a0649a2656ed4dac0000d0155dbabca90830e31c696176693ca0649a2656ed4dac000000000000c2980130e31c696176693c00000000a46962d51130e31c696176693c0194cf191d6248000000", + "transaction": { + "expiration": "2022-10-15T07:14:34", + "ref_block_num": 64099, + "ref_block_prefix": 2527383113, + "max_net_usage_words": 0, + "max_cpu_usage_ms": 0, + "delay_sec": 0, + "context_free_actions": [], + "actions": [ + { + "account": "playuplandme", + "name": "payforcpu", + "authorization": [ + { + "actor": "playuplandme", + "permission": "payforcpu" + } + ], + "data": { + "user_name": "blorgsfd3nln" + }, + "hex_data": "30e31c696176693c" + }, + { + "account": "playuplandme", + "name": "n31", + "authorization": [ + { + "actor": "blorgsfd3nln", + "permission": "upland" + } + ], + "data": { + "a54": "blorgsfd3nln", + "p55": [ + "79586232225684" + ] + }, + "hex_data": "30e31c696176693c0194cf191d62480000" + } + ] + } + } + }, + { + "status": "executed", + "cpu_usage_us": 725, + "net_usage_words": 25, + "trx": { + "id": "c86f254024d2e254f7e1d53a4d25f53f8443cb013a37724b1a8ac9d0ff879365", + "signatures": [ + "SIG_K1_JzhssZ6MA92H2HmKPmhYL5CrpSUBp3iJN8SBV7X1oo25Sr8QxpE2D9nkKbCPg6B4xijyYUZp9NYuwKffiCs334sAResAzi" + ], + "compression": "none", + "packed_context_free_data": "", + "context_free_data": [], + "packed_trx": "bf5d4a636afa12056c4c0000000001a0223297ba56a34a000000000095dde50180b1915e5d268dca00000000a888cca56980b1915e5d268dca06cd270000000000000000000024ac3155431800000000000000000000a07c30558452f608000000000000000024ac513e35000000000000000000000064a9305534020100000000000000000060aa98db56bb32520000000000000000f889503e00", + "transaction": { + "expiration": "2022-10-15T07:14:07", + "ref_block_num": 64106, + "ref_block_prefix": 1282147602, + "max_net_usage_words": 0, + "max_cpu_usage_ms": 0, + "delay_sec": 0, + "context_free_actions": [], + "actions": [ + { + "account": "delphioracle", + "name": "write", + "authorization": [ + { + "actor": "teamgreymass", + "permission": "oracle" + } + ], + "data": { + "owner": "teamgreymass", + "quotes": [ + { + "value": 10189, + "pair": "eosusd" + }, + { + "value": 6211, + "pair": "eosbtc" + }, + { + "value": 150360708, + "pair": "btcusd" + }, + { + "value": 53, + "pair": "eosemt" + }, + { + "value": 66100, + "pair": "vigeos" + }, + { + "value": 1379056470, + "pair": "btccny" + } + ] + }, + "hex_data": "80b1915e5d268dca06cd270000000000000000000024ac3155431800000000000000000000a07c30558452f608000000000000000024ac513e35000000000000000000000064a9305534020100000000000000000060aa98db56bb32520000000000000000f889503e" + } + ] + } + } + }, + { + "status": "executed", + "cpu_usage_us": 217, + "net_usage_words": 23, + "trx": { + "id": "f9b044946ce2f145acbcd28047782a076b1cd65cbcce3cb98ad671a288652e8e", + "signatures": [ + "SIG_K1_Kk1pWgC4536ny8S3ceCpi4JaB82A7h1vFsr2agmdVYyYRFFoLn9baweuoxgfppq7c3FgqQdJjSSt9RxFD6vPDihC6KT2of" + ], + "compression": "none", + "packed_context_free_data": "", + "context_free_data": [], + "packed_trx": "be5d4a6368fae26265070000000001408242533984b351000000572d3ccdcd0110c20c613a8ab25100000000a8ed32325610c20c613a8ab2511042192360aab251980800000000000004454154434f494e3527596f75722063757272656e742073636f7265206174206561747363686f6f6c732e636f6d2f6f6e6c696e6520697320372e34312700", + "transaction": { + "expiration": "2022-10-15T07:14:06", + "ref_block_num": 64104, + "ref_block_prefix": 124084962, + "max_net_usage_words": 0, + "max_cpu_usage_ms": 0, + "delay_sec": 0, + "context_free_actions": [], + "actions": [ + { + "account": "eatscience14", + "name": "transfer", + "authorization": [ + { + "actor": "eatcoin11n11", + "permission": "active" + } + ], + "data": { + "from": "eatcoin11n11", + "to": "eateos133511", + "quantity": "0.2200 EATCOIN", + "memo": "'Your current score at eatschools.com/online is 7.41'" + }, + "hex_data": "10c20c613a8ab2511042192360aab251980800000000000004454154434f494e3527596f75722063757272656e742073636f7265206174206561747363686f6f6c732e636f6d2f6f6e6c696e6520697320372e343127" + } + ] + } + } + }, + { + "status": "executed", + "cpu_usage_us": 188, + "net_usage_words": 18, + "trx": { + "id": "a9c6327a1aa6c87ea9805ba1d35cbf0d9e4459b13374c7e08e054c1493d41b24", + "signatures": [ + "SIG_K1_K6E77YorKgsZVsLVDczfAC4QxWqT4qA2P3GobDjCNx2Quc21ppHHbzHNuyhD8uENuKyaNgMSdsiQGdd3cmK7rzu2a1WDrN", + "SIG_K1_KmLqQJBSgjK1oJJ2WQCGBQ3zkE1ywB8vkBucmrFttAkYyRWb9A2Y6zZGuYG6uXZ1TjT4jXrvx34AWYeuqqkgUZuaRo4zKq" + ], + "compression": "none", + "packed_context_free_data": "", + "context_free_data": [], + "packed_trx": "dc5d4a6367fa2565ef35000000000180f0a519a98ae9ad00000057c14bf9960270f0a519a98ae9ad00000000a8ed32320000e07981e0a44b00000000a8ed32321024e7010000000000ffffffffffffffff00", + "transaction": { + "expiration": "2022-10-15T07:14:36", + "ref_block_num": 64103, + "ref_block_prefix": 904881445, + "max_net_usage_words": 0, + "max_cpu_usage_ms": 0, + "delay_sec": 0, + "context_free_actions": [], + "actions": [ + { + "account": "prospectorsc", + "name": "mvworker", + "authorization": [ + { + "actor": "prospectorsb", + "permission": "active" + }, + { + "actor": "dimi1.ftw", + "permission": "active" + } + ], + "data": { + "worker_id": 124708, + "x": -1, + "y": -1 + }, + "hex_data": "24e7010000000000ffffffffffffffff" + } + ] + } + } + }, + { + "status": "executed", + "cpu_usage_us": 228, + "net_usage_words": 22, + "trx": { + "id": "8ad61770cfb9be36aea28f5d46f92f34fdc19f679ff2c374300ac9cb452fadc8", + "signatures": [ + "SIG_K1_K1tAJ5umcMPcPgutXg8cQSaGW6PSbS6ZAH1y4GGEerhc8BaPqWZJeNXP4gig1r92JMXvw1YP5sUrQ8M7rVhodnSQEpFaqT", + "SIG_K1_KcRwVmsNV4g5VPasJvj9HijnNveYEMfmBaLsBv72Ri9NQF8sWY3jiuYfSyT5nLQbhv5Q6YuF1tMzhSKsY9mb7SMa6Y8U4x" + ], + "compression": "none", + "packed_context_free_data": "", + "context_free_data": [], + "packed_trx": "da5d4a6364fa50c4f5cb0000000002a0649a2656ed4dac0000d0155dbabca901a0649a2656ed4dac0000d0155dbabca908e021ab4f709e699da0649a2656ed4dac000000000000c29801e021ab4f709e699d00000000a46962d519e021ab4f709e699d02cc91280ced4a00004e792833f84a000000", + "transaction": { + "expiration": "2022-10-15T07:14:34", + "ref_block_num": 64100, + "ref_block_prefix": 3421881424, + "max_net_usage_words": 0, + "max_cpu_usage_ms": 0, + "delay_sec": 0, + "context_free_actions": [], + "actions": [ + { + "account": "playuplandme", + "name": "payforcpu", + "authorization": [ + { + "actor": "playuplandme", + "permission": "payforcpu" + } + ], + "data": { + "user_name": "npotww2jpgky" + }, + "hex_data": "e021ab4f709e699d" + }, + { + "account": "playuplandme", + "name": "n31", + "authorization": [ + { + "actor": "npotww2jpgky", + "permission": "upland" + } + ], + "data": { + "a54": "npotww2jpgky", + "p55": [ + "82381971689932", + "82429870635342" + ] + }, + "hex_data": "e021ab4f709e699d02cc91280ced4a00004e792833f84a0000" + } + ] + } + } + }, + { + "status": "executed", + "cpu_usage_us": 1212, + "net_usage_words": 183, + "trx": { + "id": "044a91f86f71492f7283456fdc9d29f855d5db56d8eafe4eba96ddf7bcf31a8b", + "signatures": [ + "SIG_K1_KVisVSXo2dgPGifn31KPp564pnqmzSoTmA2VZuRHaJSt1fPYvmGmTff9R2VCGfmsthCHh4D5HQMuNxE69VUUz66t9FDGVb", + "SIG_K1_KbkYx4xw5y25GPsMWvgDG5VDpxWcbyZNYeUMiPHmEEspT4nuzcGuXH4PZngYbkxfKsPnz84XxQkqSfnzLTuJ43rR2AygoJ" + ], + "compression": "none", + "packed_context_free_data": "", + "context_free_data": [], + "packed_trx": "c15d4a636dfaa5a0d8b7000000001500dc5209a888cca500000000a86c52d5020000006ea904744500000000a8ed32327055ce4e1e8d315500000000a8ed3232107055ce4e1e8d3155010000000000000000dc5209a888cca500000000a86c52d5020000006ea904744500000000a8ed32327055ce4e1e8d315500000000a8ed3232107055ce4e1e8d3155020000000000000000dc5209a888cca500000000a86c52d5020000006ea904744500000000a8ed32327055ce4e1e8d315500000000a8ed3232107055ce4e1e8d3155030000000000000000dc5209a888cca500000000a86c52d5020000006ea904744500000000a8ed32327055ce4e1e8d315500000000a8ed3232107055ce4e1e8d3155040000000000000000dc5209a888cca500000000a86c52d5020000006ea904744500000000a8ed32327055ce4e1e8d315500000000a8ed3232107055ce4e1e8d3155050000000000000000dc5209a888cca500000000a86c52d5020000006ea904744500000000a8ed32327055ce4e1e8d315500000000a8ed3232107055ce4e1e8d3155060000000000000000dc5209a888cca500000000a86c52d5020000006ea904744500000000a8ed32327055ce4e1e8d315500000000a8ed3232107055ce4e1e8d3155070000000000000000dc5209a888cca500000000a86c52d5020000006ea904744500000000a8ed32327055ce4e1e8d315500000000a8ed3232107055ce4e1e8d3155080000000000000000dc5209a888cca500000000a86c52d5020000006ea904744500000000a8ed32327055ce4e1e8d315500000000a8ed3232107055ce4e1e8d3155090000000000000000dc5209a888cca500000000a86c52d5020000006ea904744500000000a8ed32327055ce4e1e8d315500000000a8ed3232107055ce4e1e8d31550a0000000000000000dc5209a888cca500000000a86c52d5020000006ea904744500000000a8ed32327055ce4e1e8d315500000000a8ed3232107055ce4e1e8d31550b0000000000000000dc5209a888cca500000000a86c52d5020000006ea904744500000000a8ed32327055ce4e1e8d315500000000a8ed3232107055ce4e1e8d31550c0000000000000000dc5209a888cca500000000a86c52d5020000006ea904744500000000a8ed32327055ce4e1e8d315500000000a8ed3232107055ce4e1e8d31550d0000000000000000dc5209a888cca500000000a86c52d5020000006ea904744500000000a8ed32327055ce4e1e8d315500000000a8ed3232107055ce4e1e8d31550e0000000000000000dc5209a888cca500000000a86c52d5020000006ea904744500000000a8ed32327055ce4e1e8d315500000000a8ed3232107055ce4e1e8d31550f0000000000000000dc5209a888cca500000000a86c52d5020000006ea904744500000000a8ed32327055ce4e1e8d315500000000a8ed3232107055ce4e1e8d3155100000000000000000dc5209a888cca500000000a86c52d5020000006ea904744500000000a8ed32327055ce4e1e8d315500000000a8ed3232107055ce4e1e8d3155110000000000000000dc5209a888cca500000000a86c52d5020000006ea904744500000000a8ed32327055ce4e1e8d315500000000a8ed3232107055ce4e1e8d3155120000000000000000dc5209a888cca500000000a86c52d5020000006ea904744500000000a8ed32327055ce4e1e8d315500000000a8ed3232107055ce4e1e8d3155130000000000000000dc5209a888cca500000000a86c52d5020000006ea904744500000000a8ed32327055ce4e1e8d315500000000a8ed3232107055ce4e1e8d3155140000000000000000dc5209a888cca500000000a86c52d5020000006ea904744500000000a8ed32327055ce4e1e8d315500000000a8ed3232107055ce4e1e8d3155150000000000000000", + "transaction": { + "expiration": "2022-10-15T07:14:09", + "ref_block_num": 64109, + "ref_block_prefix": 3084427429, + "max_net_usage_words": 0, + "max_cpu_usage_ms": 0, + "delay_sec": 0, + "context_free_actions": [], + "actions": [ + { + "account": "oracle.defi", + "name": "update", + "authorization": [ + { + "actor": "cpu.defi", + "permission": "active" + }, + { + "actor": "eossubmitter", + "permission": "active" + } + ], + "data": { + "submitter": "eossubmitter", + "price_id": 1 + }, + "hex_data": "7055ce4e1e8d31550100000000000000" + }, + { + "account": "oracle.defi", + "name": "update", + "authorization": [ + { + "actor": "cpu.defi", + "permission": "active" + }, + { + "actor": "eossubmitter", + "permission": "active" + } + ], + "data": { + "submitter": "eossubmitter", + "price_id": 2 + }, + "hex_data": "7055ce4e1e8d31550200000000000000" + }, + { + "account": "oracle.defi", + "name": "update", + "authorization": [ + { + "actor": "cpu.defi", + "permission": "active" + }, + { + "actor": "eossubmitter", + "permission": "active" + } + ], + "data": { + "submitter": "eossubmitter", + "price_id": 3 + }, + "hex_data": "7055ce4e1e8d31550300000000000000" + }, + { + "account": "oracle.defi", + "name": "update", + "authorization": [ + { + "actor": "cpu.defi", + "permission": "active" + }, + { + "actor": "eossubmitter", + "permission": "active" + } + ], + "data": { + "submitter": "eossubmitter", + "price_id": 4 + }, + "hex_data": "7055ce4e1e8d31550400000000000000" + }, + { + "account": "oracle.defi", + "name": "update", + "authorization": [ + { + "actor": "cpu.defi", + "permission": "active" + }, + { + "actor": "eossubmitter", + "permission": "active" + } + ], + "data": { + "submitter": "eossubmitter", + "price_id": 5 + }, + "hex_data": "7055ce4e1e8d31550500000000000000" + }, + { + "account": "oracle.defi", + "name": "update", + "authorization": [ + { + "actor": "cpu.defi", + "permission": "active" + }, + { + "actor": "eossubmitter", + "permission": "active" + } + ], + "data": { + "submitter": "eossubmitter", + "price_id": 6 + }, + "hex_data": "7055ce4e1e8d31550600000000000000" + }, + { + "account": "oracle.defi", + "name": "update", + "authorization": [ + { + "actor": "cpu.defi", + "permission": "active" + }, + { + "actor": "eossubmitter", + "permission": "active" + } + ], + "data": { + "submitter": "eossubmitter", + "price_id": 7 + }, + "hex_data": "7055ce4e1e8d31550700000000000000" + }, + { + "account": "oracle.defi", + "name": "update", + "authorization": [ + { + "actor": "cpu.defi", + "permission": "active" + }, + { + "actor": "eossubmitter", + "permission": "active" + } + ], + "data": { + "submitter": "eossubmitter", + "price_id": 8 + }, + "hex_data": "7055ce4e1e8d31550800000000000000" + }, + { + "account": "oracle.defi", + "name": "update", + "authorization": [ + { + "actor": "cpu.defi", + "permission": "active" + }, + { + "actor": "eossubmitter", + "permission": "active" + } + ], + "data": { + "submitter": "eossubmitter", + "price_id": 9 + }, + "hex_data": "7055ce4e1e8d31550900000000000000" + }, + { + "account": "oracle.defi", + "name": "update", + "authorization": [ + { + "actor": "cpu.defi", + "permission": "active" + }, + { + "actor": "eossubmitter", + "permission": "active" + } + ], + "data": { + "submitter": "eossubmitter", + "price_id": 10 + }, + "hex_data": "7055ce4e1e8d31550a00000000000000" + }, + { + "account": "oracle.defi", + "name": "update", + "authorization": [ + { + "actor": "cpu.defi", + "permission": "active" + }, + { + "actor": "eossubmitter", + "permission": "active" + } + ], + "data": { + "submitter": "eossubmitter", + "price_id": 11 + }, + "hex_data": "7055ce4e1e8d31550b00000000000000" + }, + { + "account": "oracle.defi", + "name": "update", + "authorization": [ + { + "actor": "cpu.defi", + "permission": "active" + }, + { + "actor": "eossubmitter", + "permission": "active" + } + ], + "data": { + "submitter": "eossubmitter", + "price_id": 12 + }, + "hex_data": "7055ce4e1e8d31550c00000000000000" + }, + { + "account": "oracle.defi", + "name": "update", + "authorization": [ + { + "actor": "cpu.defi", + "permission": "active" + }, + { + "actor": "eossubmitter", + "permission": "active" + } + ], + "data": { + "submitter": "eossubmitter", + "price_id": 13 + }, + "hex_data": "7055ce4e1e8d31550d00000000000000" + }, + { + "account": "oracle.defi", + "name": "update", + "authorization": [ + { + "actor": "cpu.defi", + "permission": "active" + }, + { + "actor": "eossubmitter", + "permission": "active" + } + ], + "data": { + "submitter": "eossubmitter", + "price_id": 14 + }, + "hex_data": "7055ce4e1e8d31550e00000000000000" + }, + { + "account": "oracle.defi", + "name": "update", + "authorization": [ + { + "actor": "cpu.defi", + "permission": "active" + }, + { + "actor": "eossubmitter", + "permission": "active" + } + ], + "data": { + "submitter": "eossubmitter", + "price_id": 15 + }, + "hex_data": "7055ce4e1e8d31550f00000000000000" + }, + { + "account": "oracle.defi", + "name": "update", + "authorization": [ + { + "actor": "cpu.defi", + "permission": "active" + }, + { + "actor": "eossubmitter", + "permission": "active" + } + ], + "data": { + "submitter": "eossubmitter", + "price_id": 16 + }, + "hex_data": "7055ce4e1e8d31551000000000000000" + }, + { + "account": "oracle.defi", + "name": "update", + "authorization": [ + { + "actor": "cpu.defi", + "permission": "active" + }, + { + "actor": "eossubmitter", + "permission": "active" + } + ], + "data": { + "submitter": "eossubmitter", + "price_id": 17 + }, + "hex_data": "7055ce4e1e8d31551100000000000000" + }, + { + "account": "oracle.defi", + "name": "update", + "authorization": [ + { + "actor": "cpu.defi", + "permission": "active" + }, + { + "actor": "eossubmitter", + "permission": "active" + } + ], + "data": { + "submitter": "eossubmitter", + "price_id": 18 + }, + "hex_data": "7055ce4e1e8d31551200000000000000" + }, + { + "account": "oracle.defi", + "name": "update", + "authorization": [ + { + "actor": "cpu.defi", + "permission": "active" + }, + { + "actor": "eossubmitter", + "permission": "active" + } + ], + "data": { + "submitter": "eossubmitter", + "price_id": 19 + }, + "hex_data": "7055ce4e1e8d31551300000000000000" + }, + { + "account": "oracle.defi", + "name": "update", + "authorization": [ + { + "actor": "cpu.defi", + "permission": "active" + }, + { + "actor": "eossubmitter", + "permission": "active" + } + ], + "data": { + "submitter": "eossubmitter", + "price_id": 20 + }, + "hex_data": "7055ce4e1e8d31551400000000000000" + }, + { + "account": "oracle.defi", + "name": "update", + "authorization": [ + { + "actor": "cpu.defi", + "permission": "active" + }, + { + "actor": "eossubmitter", + "permission": "active" + } + ], + "data": { + "submitter": "eossubmitter", + "price_id": 21 + }, + "hex_data": "7055ce4e1e8d31551500000000000000" + } + ] + } + } + }, + { + "status": "executed", + "cpu_usage_us": 857, + "net_usage_words": 32, + "trx": { + "id": "b77eac6c2cf604792f92b6b893afca0e1a80fdd099b71c2fcd21026d7b98ad2d", + "signatures": [ + "SIG_K1_KhpK18cPxHYrM7JH6xefWvofWKmD1e1pGJo5hT9drqCoA3rhnnh8ScuoJRQzG1fxirdDDMEJPNemnsX6Dowbd3ETxcrKFc", + "SIG_K1_JxsW2LZMYanEAp4gVeKC83chHV5ngvurjRrDWDR9Yf1GVeV2mpUAorZNbTj8x7DRcCnHtwQrG5brYechWbjyuSTirZB8uY" + ], + "compression": "none", + "packed_context_free_data": "", + "context_free_data": [], + "packed_trx": "1a5e4a6323f987c31ff6000000000390cd919447e3a662000000000050299d017099c4ea667324e5000000004ce63045009015bc4622276936a0a2c10a4d4de73401c0f3029766f3bff900000000a8ed323231c0f3029766f3bff9014ecc040000020000f30100000000000004454f530000000004454f5300000000000000000000000080b3c2d82027693600ae5a8baa6cd44501c0f3029766f3bff900000000a8ed32321fc0f3029766f3bff99015bc4622276936014ecc040000020000000473616c6500", + "transaction": { + "expiration": "2022-10-15T07:15:38", + "ref_block_num": 63779, + "ref_block_prefix": 4129276807, + "max_net_usage_words": 0, + "max_cpu_usage_ms": 0, + "delay_sec": 0, + "context_free_actions": [], + "actions": [ + { + "account": "genialwombat", + "name": "noop", + "authorization": [ + { + "actor": "wombatresmgr", + "permission": "cosign" + } + ], + "data": "" + }, + { + "account": "atomicmarket", + "name": "announcesale", + "authorization": [ + { + "actor": "zazzator.ftw", + "permission": "active" + } + ], + "data": { + "seller": "zazzator.ftw", + "asset_ids": [ + "2199023569998" + ], + "listing_price": "0.0499 EOS", + "settlement_symbol": "4,EOS", + "maker_marketplace": "" + }, + "hex_data": "c0f3029766f3bff9014ecc040000020000f30100000000000004454f530000000004454f53000000000000000000000000" + }, + { + "account": "atomicassets", + "name": "createoffer", + "authorization": [ + { + "actor": "zazzator.ftw", + "permission": "active" + } + ], + "data": { + "sender": "zazzator.ftw", + "recipient": "atomicmarket", + "sender_asset_ids": [ + "2199023569998" + ], + "recipient_asset_ids": [], + "memo": "sale" + }, + "hex_data": "c0f3029766f3bff99015bc4622276936014ecc040000020000000473616c65" + } + ] + } + } + }, + { + "status": "executed", + "cpu_usage_us": 979, + "net_usage_words": 33, + "trx": { + "id": "9732b991c1fea7a4df63c5cf51a0d6f3cf66e724032fa1dbb39fed45be521cd5", + "signatures": [ + "SIG_K1_K9RVAHUB9FeUUeTkZ6VGHqxFPCHUNmC79fdBAKY12Fe2kPPZ9dii3fu4SzsmxShdoWdnZAeT2Qh8j4J8xQaChDWrznKJvJ", + "SIG_K1_K7mkwHpm8qX5a3crr2w1H7BUieCXVsoPz6qXRnxzvEPHJ3G5Mqu1rcYvxuEoEah53AhZfPLSzZMoLEq71bGuFCrcAfR46d" + ], + "compression": "none", + "packed_context_free_data": "", + "context_free_data": [], + "packed_trx": "da5d4a6317f94cac290f00000000031082ae48a9bbf04a0000004057a4d45d0110c2a5d94d2ad1f200000000a8ed323208000000003093412980a5ca4e5eb3f04a000000572d3ccdcd01000000003093412900000000a8ed3232280000000030934129a0f055db6425f14a409c0000000000000443484b464f4f44076465706f736974a0f055db6425f14a00000042219de8ad01000000003093412900000000a8ed3232280000000030934129080000000000000007090000000000000400000000000000010000000000000000", + "transaction": { + "expiration": "2022-10-15T07:14:34", + "ref_block_num": 63767, + "ref_block_prefix": 254389324, + "max_net_usage_words": 0, + "max_cpu_usage_ms": 0, + "delay_sec": 0, + "context_free_actions": [], + "actions": [ + { + "account": "dfsfreecpu11", + "name": "freecpu", + "authorization": [ + { + "actor": "yfcmonitor11", + "permission": "active" + } + ], + "data": { + "user": "55.tag" + }, + "hex_data": "0000000030934129" + }, + { + "account": "dfsfarmitems", + "name": "transfer", + "authorization": [ + { + "actor": "55.tag", + "permission": "active" + } + ], + "data": { + "from": "55.tag", + "to": "dfsmetaverse", + "quantity": "4.0000 CHKFOOD", + "memo": "deposit" + }, + "hex_data": "0000000030934129a0f055db6425f14a409c0000000000000443484b464f4f44076465706f736974" + }, + { + "account": "dfsmetaverse", + "name": "produce2", + "authorization": [ + { + "actor": "55.tag", + "permission": "active" + } + ], + "data": { + "user": "55.tag", + "workid": 8, + "assetid": 2311, + "multiple": 4, + "round": 1 + }, + "hex_data": "00000000309341290800000000000000070900000000000004000000000000000100000000000000" + } + ] + } + } + }, + { + "status": "executed", + "cpu_usage_us": 502, + "net_usage_words": 33, + "trx": { + "id": "a1364653971696b098e60fb9d61825ae1f0fcd5f1998662e2d2608d2c4682938", + "signatures": [ + "SIG_K1_KdBxr7svwSMye1RSFpcexwd1iFcRxywkiRR5QBguXRoXhXFCFyM2FBdz6SWs2EBk9xtN2fNLjtFPAV9LoWCtBxmHiUERXt", + "SIG_K1_K2G5ZouMdoEmyvVThrZe2wwMLKeoLPUQVVFPxxoeJBX4HukKAc3NcSCn3DU4jZcqxEt28a69DLTQiiSKbKmNEGgDBUUaa9" + ], + "compression": "none", + "packed_context_free_data": "", + "context_free_data": [], + "packed_trx": "da5d4a6317f94cac290f00000000031082ae48a9bbf04a0000004057a4d45d0110c2a5d94d2ad1f200000000a8ed323208000000003093412980a5ca4e5eb3f04a000000572d3ccdcd01000000003093412900000000a8ed3232280000000030934129a0f055db6425f14a50c30000000000000443484b464f4f44076465706f736974a0f055db6425f14a00000042219de8ad01000000003093412900000000a8ed323228000000003093412908000000000000000c090000000000000500000000000000010000000000000000", + "transaction": { + "expiration": "2022-10-15T07:14:34", + "ref_block_num": 63767, + "ref_block_prefix": 254389324, + "max_net_usage_words": 0, + "max_cpu_usage_ms": 0, + "delay_sec": 0, + "context_free_actions": [], + "actions": [ + { + "account": "dfsfreecpu11", + "name": "freecpu", + "authorization": [ + { + "actor": "yfcmonitor11", + "permission": "active" + } + ], + "data": { + "user": "55.tag" + }, + "hex_data": "0000000030934129" + }, + { + "account": "dfsfarmitems", + "name": "transfer", + "authorization": [ + { + "actor": "55.tag", + "permission": "active" + } + ], + "data": { + "from": "55.tag", + "to": "dfsmetaverse", + "quantity": "5.0000 CHKFOOD", + "memo": "deposit" + }, + "hex_data": "0000000030934129a0f055db6425f14a50c30000000000000443484b464f4f44076465706f736974" + }, + { + "account": "dfsmetaverse", + "name": "produce2", + "authorization": [ + { + "actor": "55.tag", + "permission": "active" + } + ], + "data": { + "user": "55.tag", + "workid": 8, + "assetid": 2316, + "multiple": 5, + "round": 1 + }, + "hex_data": "000000003093412908000000000000000c0900000000000005000000000000000100000000000000" + } + ] + } + } + }, + { + "status": "executed", + "cpu_usage_us": 237, + "net_usage_words": 19, + "trx": { + "id": "ec9a7120f1e04c0c6663dbd1de77441b082f7132a480269ce64453ba8e31d27e", + "signatures": [ + "SIG_K1_KgAnZ53B19HG6ihxnPHbTF5fQY4BP4wc8AxsvRVNyXUTDh16oLiiyNAmgmx9bgahhm8uatZ2sVwSTPvaiEDkXVrFdTptPb", + "SIG_K1_Kf2F47L513ZEcov5KNYSkqKCXrCW2Ze9ZtkREjJVbhn6RdGp1BuPW8ncdyBacFrsDbWUjDpssa8Z7brXNcgtcFUu3Ds954" + ], + "compression": "none", + "packed_context_free_data": "", + "context_free_data": [], + "packed_trx": "da5d4a6317f94cac290f000000000290cd919447e3a662000000000050299d017099c4ea667324e5000000004ce630450000000080990c304e0000000000e94c440100785e6045e396b900000000a8ed32320800785e6045e396b900", + "transaction": { + "expiration": "2022-10-15T07:14:34", + "ref_block_num": 63767, + "ref_block_prefix": 254389324, + "max_net_usage_words": 0, + "max_cpu_usage_ms": 0, + "delay_sec": 0, + "context_free_actions": [], + "actions": [ + { + "account": "genialwombat", + "name": "noop", + "authorization": [ + { + "actor": "wombatresmgr", + "permission": "cosign" + } + ], + "data": "" + }, + { + "account": "dss.tag", + "name": "claim", + "authorization": [ + { + "actor": "rafialf.ftw", + "permission": "active" + } + ], + "data": { + "user": "rafialf.ftw" + }, + "hex_data": "00785e6045e396b9" + } + ] + } + } + } + ], + "id": "1049fa74670c8d45c83cfd6b54683edb186b5205bf84c66141afe55765499f7c", + "block_num": 273283700, + "ref_block_prefix": 1811758280 +} diff --git a/testdata/mock_server/chain_get_block_header_state.json b/testdata/mock_server/chain_get_block_header_state.json new file mode 100644 index 00000000..fea7169b --- /dev/null +++ b/testdata/mock_server/chain_get_block_header_state.json @@ -0,0 +1,738 @@ +{ + "block_num": 273457972, + "dpos_proposed_irreversible_blocknum": 273457811, + "dpos_irreversible_blocknum": 273457643, + "active_schedule": { + "version": 2043, + "producers": [ + { + "producer_name": "atticlabeosb", + "authority": [ + 0, + { + "threshold": 1, + "keys": [ + { + "key": "EOS7PfA3A4UdfMu2wKbuXdbHn8EWAxbMnFoFWui4X2zsr2oPwdQJP", + "weight": 1 + } + ] + } + ] + }, + { + "producer_name": "aus1genereos", + "authority": [ + 0, + { + "threshold": 1, + "keys": [ + { + "key": "EOS7rJvrhEAs9zqXewR9iyhsFNsarbu3EoDJRkYTHz2b87icsxhuA", + "weight": 1 + } + ] + } + ] + }, + { + "producer_name": "big.one", + "authority": [ + 0, + { + "threshold": 1, + "keys": [ + { + "key": "EOS8MpYyXwn3DLqk9Y9XTHYcd6wGGijNqJefFoQEwEoXTq1awZ42w", + "weight": 1 + } + ] + } + ] + }, + { + "producer_name": "binancestake", + "authority": [ + 0, + { + "threshold": 1, + "keys": [ + { + "key": "EOS7unwwVJfmKonrT6Gj46LDiNUPpFhpPALpTe2eofmFeoG74bKKn", + "weight": 1 + } + ] + } + ] + }, + { + "producer_name": "bitfinexeos1", + "authority": [ + 0, + { + "threshold": 1, + "keys": [ + { + "key": "EOS4tkw7LgtURT3dvG3kQ4D1sg3aAtPDymmoatpuFkQMc7wzZdKxc", + "weight": 1 + } + ] + } + ] + }, + { + "producer_name": "blockpooleos", + "authority": [ + 0, + { + "threshold": 1, + "keys": [ + { + "key": "EOS61FDJz3GC42GhaPSsmKh7SxuesyZhjm7hBwBKqN52v1HukEqBu", + "weight": 1 + } + ] + } + ] + }, + { + "producer_name": "eosasia11111", + "authority": [ + 0, + { + "threshold": 1, + "keys": [ + { + "key": "EOS76gG6ATpqfVf5KrVjh3f4JAa4EKzAwWabTucNQ4Xv2TmVAj9bN", + "weight": 1 + } + ] + } + ] + }, + { + "producer_name": "eoscannonchn", + "authority": [ + 0, + { + "threshold": 1, + "keys": [ + { + "key": "EOS73cTi9V7PNg4ujW5QzoTfRSdhH44MPiUJkUV6m3oGwj7RX7kML", + "weight": 1 + } + ] + } + ] + }, + { + "producer_name": "eoseouldotio", + "authority": [ + 0, + { + "threshold": 1, + "keys": [ + { + "key": "EOS6SSA4gYCSZ3q9NWpxGsYDv5MWjSwKseyq25RRZexwj8EM6YHDa", + "weight": 1 + } + ] + } + ] + }, + { + "producer_name": "eosflytomars", + "authority": [ + 0, + { + "threshold": 1, + "keys": [ + { + "key": "EOS6Agpfp38bTyRjJDmB4Qb1EpQSq7wnEAsALXgXE7KFSzKjokkFD", + "weight": 1 + } + ] + } + ] + }, + { + "producer_name": "eosinfstones", + "authority": [ + 0, + { + "threshold": 1, + "keys": [ + { + "key": "EOS6CSvGzNhNxVYbcnWSuheNcfzjGeGBY9trR4YAJ4Yvakq4oCh6y", + "weight": 1 + } + ] + } + ] + }, + { + "producer_name": "eosiosg11111", + "authority": [ + 0, + { + "threshold": 1, + "keys": [ + { + "key": "EOS7zVBQMhV7dZ5zRQwBgDmmbFCHA6YcmwW6Dq5CePGpqLR1ZsVAc", + "weight": 1 + } + ] + } + ] + }, + { + "producer_name": "eoslaomaocom", + "authority": [ + 0, + { + "threshold": 1, + "keys": [ + { + "key": "EOS8QgURqo875qu3a8vgZ58qBeu2cTehe9zAWRfpdCXAQipicu1Fi", + "weight": 1 + } + ] + } + ] + }, + { + "producer_name": "eosnationftw", + "authority": [ + 0, + { + "threshold": 1, + "keys": [ + { + "key": "EOS8L12yBrtx7mpewHmjwgJeNb2aLaeQdoDgMW82dzDSu17ec2XNL", + "weight": 1 + } + ] + } + ] + }, + { + "producer_name": "hashfineosio", + "authority": [ + 0, + { + "threshold": 1, + "keys": [ + { + "key": "EOS7jSfvStvbKDmGvQdtrQsCyNkWczXfvh6CHmBVmeypJyHsUrMqj", + "weight": 1 + } + ] + } + ] + }, + { + "producer_name": "ivote4eosusa", + "authority": [ + 0, + { + "threshold": 1, + "keys": [ + { + "key": "EOS6KzD4YVbuXV5uBH5d4Ay4sTzuQk88ivmnWfJPLoo6SFrX6iyqj", + "weight": 1 + } + ] + } + ] + }, + { + "producer_name": "newdex.bp", + "authority": [ + 0, + { + "threshold": 1, + "keys": [ + { + "key": "EOS688SnH8tQ7NiyhamiCzWXAGPDLF9S7K8ga79UBHKFgjS1MhqhB", + "weight": 1 + } + ] + } + ] + }, + { + "producer_name": "okcapitalbp1", + "authority": [ + 0, + { + "threshold": 1, + "keys": [ + { + "key": "EOS6NqWZ1i9KSNoeBiby6Nmf1seAbEfhvrDoCbwSi1hV4cuqqnYRP", + "weight": 1 + } + ] + } + ] + }, + { + "producer_name": "starteosiobp", + "authority": [ + 0, + { + "threshold": 1, + "keys": [ + { + "key": "EOS4wZZXm994byKANLuwHD6tV3R3Mu3ktc41aSVXCBaGnXJZJ4pwF", + "weight": 1 + } + ] + } + ] + }, + { + "producer_name": "teamgreymass", + "authority": [ + 0, + { + "threshold": 1, + "keys": [ + { + "key": "EOS5ktvwSdLEdusdRn7NmdV2Xu89xiXjir7EhJuZ4DUa8WMNuojbx", + "weight": 1 + } + ] + } + ] + }, + { + "producer_name": "whaleex.com", + "authority": [ + 0, + { + "threshold": 1, + "keys": [ + { + "key": "EOS88EGcFghfQJER1mDaEe4kDJ7MGDoPmXQfA7q2QMTLLqiYP1UQR", + "weight": 1 + } + ] + } + ] + } + ] + }, + "blockroot_merkle": { + "_active_nodes": [ + "104ca333801362d9fbb610ac047045379175b49b0ce2cf16b9cb8329f64e45e8", + "1e590c49f42116d6091dc786d580c8ef13b57646416e44e7e950b510eb13bfc5", + "f0412fe6f908179ca4a4ab2b0549eb3eed00a82dde4c8e77f595f24f89e9d725", + "2a3b779e3cdecbe166ddeb8b4b86d1b086109c87933ca168f1e1a697e06cebbd", + "ff15f13400b5847ebe729bee2209dc5176ba2473dd18a9de50042064a2f9a3c6", + "3d4398ba2fa4a2d29724e9f5008f7d8d501307e964613486e755fee546125506", + "3b1fde1478fa619391fe77f5bdcb4eb46f30450e026a091be45874e97462ab70", + "dacdb6b0e7c882d88a04229133c613f7bf40018b7d8fa8fbbb9afa498baf7c8c", + "87bf5ea5aff073af123d4adfb2749c8941cf7eff68a6dc0df2b487399ec4ba84", + "bfc3ccb3ab0a92c9eac2b8af23d7fd7e49cc4d95effa28a1ef54d62c9d813572", + "e43e5cbdf6b490f257123a04982a431fcaa9d0b5666d792c62f57c65fcd5c9f0", + "5a4c2d8587c853d2d433d75dbebba03275bcea54c7ed0bec018e47909dbd4624", + "475c8fe51d6c06dc7def382ce6c8232663da9c1e2efdddce9e565da4ee04cdc5" + ], + "_node_count": 273457971 + }, + "producer_to_last_produced": [ + [ + "atticlabeosb", + 273457871 + ], + [ + "aus1genereos", + 273457883 + ], + [ + "big.one", + 273457895 + ], + [ + "binancestake", + 273457907 + ], + [ + "bitfinexeos1", + 273457919 + ], + [ + "blockpooleos", + 273457931 + ], + [ + "eosasia11111", + 273457943 + ], + [ + "eoscannonchn", + 273457955 + ], + [ + "eoseouldotio", + 273457967 + ], + [ + "eosflytomars", + 273457972 + ], + [ + "eosinfstones", + 273457739 + ], + [ + "eosiosg11111", + 273457751 + ], + [ + "eoslaomaocom", + 273457763 + ], + [ + "eosnationftw", + 273457775 + ], + [ + "eosphereiobp", + 272612820 + ], + [ + "hashfineosio", + 273457787 + ], + [ + "ivote4eosusa", + 273457799 + ], + [ + "newdex.bp", + 273457811 + ], + [ + "okcapitalbp1", + 273457823 + ], + [ + "starteosiobp", + 273457835 + ], + [ + "teamgreymass", + 273457847 + ], + [ + "whaleex.com", + 273457859 + ] + ], + "producer_to_last_implied_irb": [ + [ + "atticlabeosb", + 273457703 + ], + [ + "aus1genereos", + 273457715 + ], + [ + "big.one", + 273457727 + ], + [ + "binancestake", + 273457739 + ], + [ + "bitfinexeos1", + 273457751 + ], + [ + "blockpooleos", + 273457763 + ], + [ + "eosasia11111", + 273457775 + ], + [ + "eoscannonchn", + 273457787 + ], + [ + "eoseouldotio", + 273457799 + ], + [ + "eosflytomars", + 273457811 + ], + [ + "eosinfstones", + 273457571 + ], + [ + "eosiosg11111", + 273457583 + ], + [ + "eoslaomaocom", + 273457595 + ], + [ + "eosnationftw", + 273457607 + ], + [ + "hashfineosio", + 273457619 + ], + [ + "ivote4eosusa", + 273457631 + ], + [ + "newdex.bp", + 273457643 + ], + [ + "okcapitalbp1", + 273457655 + ], + [ + "starteosiobp", + 273457667 + ], + [ + "teamgreymass", + 273457679 + ], + [ + "whaleex.com", + 273457691 + ] + ], + "valid_block_signing_authority": [ + 0, + { + "threshold": 1, + "keys": [ + { + "key": "EOS6Agpfp38bTyRjJDmB4Qb1EpQSq7wnEAsALXgXE7KFSzKjokkFD", + "weight": 1 + } + ] + } + ], + "confirm_count": [ + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 3, + 3, + 3, + 3, + 3, + 3, + 3, + 3, + 3, + 3, + 3, + 3, + 4, + 4, + 4, + 4, + 4, + 4, + 4, + 4, + 4, + 4, + 4, + 4, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 6, + 6, + 6, + 6, + 6, + 6, + 6, + 6, + 6, + 6, + 6, + 6, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 11, + 11, + 11, + 11, + 11, + 11, + 11, + 11, + 11, + 11, + 11, + 11, + 12, + 12, + 12, + 12, + 12, + 12, + 12, + 12, + 12, + 12, + 12, + 12, + 13, + 13, + 13, + 13, + 13, + 13, + 13, + 13, + 13, + 13, + 13, + 13, + 14, + 14, + 14, + 14, + 14 + ], + "id": "104ca334666c2fa4ab101da99ba24b79c1e2dcd764f77bfb15a0f2fc50ba3637", + "header": { + "timestamp": "2022-10-16T07:26:44.000", + "producer": "eosflytomars", + "confirmed": 0, + "previous": "104ca333801362d9fbb610ac047045379175b49b0ce2cf16b9cb8329f64e45e8", + "transaction_mroot": "e09d7481eb90bb1811d4ba7a92a39eda9d7ddc51b827384697bb1c00103a902a", + "action_mroot": "c0628ee617d00ff905d9630e053beb4360f7f411d56dc8eb18394b69a69c6c6b", + "schedule_version": 2043, + "header_extensions": [], + "producer_signature": "SIG_K1_K59324v2UeksXsRd6wnAcfLdvmvJMNuf1XomZCBWyLFGMPjB6LxVTDK9dXWVSefMw8cNYfcsYoaJMRZAmC35zthsYmCE7s" + }, + "pending_schedule": { + "schedule_lib_num": 272612484, + "schedule_hash": "216367f3f467c826df47cada571db194f7a5a4a1a34cad429a33b24eee753600", + "schedule": { + "version": 2043, + "producers": [] + } + }, + "activated_protocol_features": { + "protocol_features": [ + "0ec7e080177b2c02b278d5088611686b49d739925a92d9bfcacd7fc6b74053bd", + "1a99a59d87e06e09ec5b028a9cbb7749b4a5ad8819004365d02dc4379a8b7241", + "2652f5f96006294109b3dd0bbde63693f55324af452b799ee137a81a905eed25", + "299dcb6af692324b899b39f16d5a530a33062804e41f09dc97e9f156b4476707", + "35c2186cc36f7bb4aeaf4487b36e57039ccf45a9136aa856a5d569ecca55ef2b", + "4a90c00d55454dc5b059055ca213579c6ea856967712a56017487886a4d4cc0f", + "4e7bf348da00a945489b2a681749eb56f5de00b900014e137ddae39f48f69d67", + "4fca8bd82bbd181e714e283f83e1b45d95ca5af40fb89ad3977b653c448f78c2", + "5443fcf88330c586bc0e5f3dee10e7f63c76c00249c87fe4fbf7f38c082006b4", + "68dcaa34c0517d19666e6b33add67351d8c5f69e999ca1e37931bc410a297428", + "6bcb40a24e49c26d0a60513b6aeb8551d264e4717f306b81a37a5afb3b47cedc", + "8ba52fe7a3956c5cd3a656a3174b931d3bb2abb45578befc59f283ecd816a405", + "ad9e3d8f650687709fd68f4b90b41f7d825a365b02c23a636cef88ac2ac00c43", + "bcd2a26394b36614fd4894241d3c451ab0f6fd110958c3423073621a70826e99", + "c3a6138c5061cf291310887c0b5c71fcaffeab90d5deb50d3b9e687cead45071", + "d528b9f6e9693f45ed277af93474fd473ce7d831dae2180cca35d907bd10cb40", + "e0fb64b1085cc5538970158d05a009c24e276fb94e1a0bf6a528b48fbc4ff526", + "ef43112c6543b88db2283a2e077278c315ae2c84719a8b25f25cc88565fbea99", + "f0af56d2c5a48d60a4a5b5c903edfb7db3a736a94ed589d0b797df33ff9d3e1d" + ] + }, + "additional_signatures": [] +} \ No newline at end of file diff --git a/testdata/mock_server/chain_get_block_info.json b/testdata/mock_server/chain_get_block_info.json new file mode 100644 index 00000000..30480b50 --- /dev/null +++ b/testdata/mock_server/chain_get_block_info.json @@ -0,0 +1,14 @@ +{ + "block_num": 273283700, + "ref_block_num": 64116, + "id": "1049fa74670c8d45c83cfd6b54683edb186b5205bf84c66141afe55765499f7c", + "timestamp": "2022-10-15T07:13:42.000", + "producer": "eosiosg11111", + "confirmed": 240, + "previous": "1049fa737265f6c2d46428c2ee89cd5be29dc2b9a0615afc6af4c8df6ffa7845", + "transaction_mroot": "f7cadbcc33efad01eacc153d2013ce9e50fe4f0d664df657a354a3d06ac569ab", + "action_mroot": "0378d11e50e8ee4c8673a06ece81933d672ff0578aec743aad4f6962309dca58", + "schedule_version": 2043, + "producer_signature": "SIG_K1_KbbKB47LguWUfhYfqcZPNTR6Nd8hgLV4CfF1GSxLf7TBqwaFDbbXdMvDDQKhp5186HSWz1MgmNt2qPHVWdY6KAkZaDbEab", + "ref_block_prefix": 1811758280 +} \ No newline at end of file diff --git a/testdata/mock_server/chain_get_currency_balance.json b/testdata/mock_server/chain_get_currency_balance.json new file mode 100644 index 00000000..aff21e29 --- /dev/null +++ b/testdata/mock_server/chain_get_currency_balance.json @@ -0,0 +1,3 @@ +[ + "61.7863 CET" +] \ No newline at end of file diff --git a/testdata/mock_server/chain_get_currency_stats.json b/testdata/mock_server/chain_get_currency_stats.json new file mode 100644 index 00000000..0f6bb9d5 --- /dev/null +++ b/testdata/mock_server/chain_get_currency_stats.json @@ -0,0 +1,7 @@ +{ + "CET": { + "supply": "2000000000.0000 CET", + "max_supply": "2000000000.0000 CET", + "issuer": "eosiochaince" + } +} \ No newline at end of file diff --git a/testdata/mock_server/chain_get_info.json b/testdata/mock_server/chain_get_info.json new file mode 100644 index 00000000..903d7998 --- /dev/null +++ b/testdata/mock_server/chain_get_info.json @@ -0,0 +1,22 @@ +{ + "server_version": "3c9661e6", + "chain_id": "aca376f206b8fc25a6ed44dbdc66547c36c6c33e3a119ffbeaef943642f0e906", + "head_block_num": 272466135, + "last_irreversible_block_num": 272465804, + "last_irreversible_block_id": "103d7f8c633f49f92e7758a41dbe59ea3cb0aca556794b9eb4aeeb9b9d0855ce", + "head_block_id": "103d80d744fe357bbb3263289bc85a326d16909d4473a3639b576c035b4bfa5b", + "head_block_time": "2022-10-10T13:34:03.500", + "head_block_producer": "aus1genereos", + "virtual_block_cpu_limit": 200000, + "virtual_block_net_limit": 1048576000, + "block_cpu_limit": 199001, + "block_net_limit": 1048328, + "server_version_string": "v3.1.0", + "fork_db_head_block_num": 272466135, + "fork_db_head_block_id": "103d80d744fe357bbb3263289bc85a326d16909d4473a3639b576c035b4bfa5b", + "server_full_version_string": "v3.1.0-3c9661e67e5f66234871f967f28d1662bf1905b6", + "total_cpu_weight": "383788472311608", + "total_net_weight": "96298870176056", + "earliest_available_block_num": 264601643, + "last_irreversible_block_time": "2022-10-10T13:31:17.500" +} \ No newline at end of file diff --git a/testdata/mock_server/chain_get_producers.json b/testdata/mock_server/chain_get_producers.json new file mode 100644 index 00000000..45950678 --- /dev/null +++ b/testdata/mock_server/chain_get_producers.json @@ -0,0 +1,814 @@ +{ + "rows": [ + { + "owner": "eosflytomars", + "total_votes": "12364922069802956800.00000000000000000", + "producer_key": "EOS6Agpfp38bTyRjJDmB4Qb1EpQSq7wnEAsALXgXE7KFSzKjokkFD", + "is_active": 1, + "url": "https://www.bitmars.one", + "unpaid_blocks": 2523, + "last_claim_time": "2022-10-09T01:22:54.000", + "location": 156 + }, + { + "owner": "binancestake", + "total_votes": "12352903870702721024.00000000000000000", + "producer_key": "EOS7unwwVJfmKonrT6Gj46LDiNUPpFhpPALpTe2eofmFeoG74bKKn", + "is_active": 1, + "url": "https://binance-eos.com", + "unpaid_blocks": 4308, + "last_claim_time": "2022-10-08T20:11:00.000", + "location": 136 + }, + { + "owner": "newdex.bp", + "total_votes": "12347824646442350592.00000000000000000", + "producer_key": "EOS688SnH8tQ7NiyhamiCzWXAGPDLF9S7K8ga79UBHKFgjS1MhqhB", + "is_active": 1, + "url": "https://newpool.io", + "unpaid_blocks": 2988, + "last_claim_time": "2022-10-09T00:02:55.500", + "location": 392 + }, + { + "owner": "eosnationftw", + "total_votes": "12272880139535597568.00000000000000000", + "producer_key": "EOS8L12yBrtx7mpewHmjwgJeNb2aLaeQdoDgMW82dzDSu17ec2XNL", + "is_active": 1, + "url": "https://eosnation.io", + "unpaid_blocks": 2138, + "last_claim_time": "2022-10-09T02:30:32.000", + "location": 124 + }, + { + "owner": "eosinfstones", + "total_votes": "12208759554479728640.00000000000000000", + "producer_key": "EOS6CSvGzNhNxVYbcnWSuheNcfzjGeGBY9trR4YAJ4Yvakq4oCh6y", + "is_active": 1, + "url": "http://infinitystones.io", + "unpaid_blocks": 7526, + "last_claim_time": "2022-10-08T10:46:00.000", + "location": 1 + }, + { + "owner": "eoscannonchn", + "total_votes": "11937099305900587008.00000000000000000", + "producer_key": "EOS73cTi9V7PNg4ujW5QzoTfRSdhH44MPiUJkUV6m3oGwj7RX7kML", + "is_active": 1, + "url": "https://eoscannon.io", + "unpaid_blocks": 1956, + "last_claim_time": "2022-10-09T03:02:10.500", + "location": 136, + "producer_authority": [ + "block_signing_authority_v0", + { + "threshold": 1, + "keys": [ + { + "key": "EOS73cTi9V7PNg4ujW5QzoTfRSdhH44MPiUJkUV6m3oGwj7RX7kML", + "weight": 1 + } + ] + } + ] + }, + { + "owner": "aus1genereos", + "total_votes": "11659262796010577920.00000000000000000", + "producer_key": "EOS7rJvrhEAs9zqXewR9iyhsFNsarbu3EoDJRkYTHz2b87icsxhuA", + "is_active": 1, + "url": "https://genereos.io", + "unpaid_blocks": 2986, + "last_claim_time": "2022-10-08T23:59:36.000", + "location": 36, + "producer_authority": [ + "block_signing_authority_v0", + { + "threshold": 1, + "keys": [ + { + "key": "EOS7rJvrhEAs9zqXewR9iyhsFNsarbu3EoDJRkYTHz2b87icsxhuA", + "weight": 1 + } + ] + } + ] + }, + { + "owner": "hashfineosio", + "total_votes": "11622602410212988928.00000000000000000", + "producer_key": "EOS7jSfvStvbKDmGvQdtrQsCyNkWczXfvh6CHmBVmeypJyHsUrMqj", + "is_active": 1, + "url": "https://www.hashfin.com", + "unpaid_blocks": 1644, + "last_claim_time": "2022-10-09T03:59:18.000", + "location": 0, + "producer_authority": [ + "block_signing_authority_v0", + { + "threshold": 1, + "keys": [ + { + "key": "EOS7jSfvStvbKDmGvQdtrQsCyNkWczXfvh6CHmBVmeypJyHsUrMqj", + "weight": 1 + } + ] + } + ] + }, + { + "owner": "big.one", + "total_votes": "11538600873294366720.00000000000000000", + "producer_key": "EOS8MpYyXwn3DLqk9Y9XTHYcd6wGGijNqJefFoQEwEoXTq1awZ42w", + "is_active": 1, + "url": "https://eos.big.one", + "unpaid_blocks": 1044, + "last_claim_time": "2022-10-09T05:41:39.500", + "location": 392 + }, + { + "owner": "okcapitalbp1", + "total_votes": "11038934828171313152.00000000000000000", + "producer_key": "EOS6NqWZ1i9KSNoeBiby6Nmf1seAbEfhvrDoCbwSi1hV4cuqqnYRP", + "is_active": 1, + "url": "https://www.okex.com/eosbp/", + "unpaid_blocks": 7184, + "last_claim_time": "2022-10-08T11:46:09.500", + "location": 0 + }, + { + "owner": "starteosiobp", + "total_votes": "10884584491019692032.00000000000000000", + "producer_key": "EOS4wZZXm994byKANLuwHD6tV3R3Mu3ktc41aSVXCBaGnXJZJ4pwF", + "is_active": 1, + "url": "https://www.starteos.io", + "unpaid_blocks": 2835, + "last_claim_time": "2022-10-09T00:26:54.000", + "location": 156 + }, + { + "owner": "atticlabeosb", + "total_votes": "10844864432195651584.00000000000000000", + "producer_key": "EOS7PfA3A4UdfMu2wKbuXdbHn8EWAxbMnFoFWui4X2zsr2oPwdQJP", + "is_active": 1, + "url": "https://atticlab.net", + "unpaid_blocks": 5253, + "last_claim_time": "2022-10-08T17:24:06.000", + "location": 804 + }, + { + "owner": "eoslaomaocom", + "total_votes": "10440648946091925504.00000000000000000", + "producer_key": "EOS8QgURqo875qu3a8vgZ58qBeu2cTehe9zAWRfpdCXAQipicu1Fi", + "is_active": 1, + "url": "https://eoslaomao.com", + "unpaid_blocks": 10512, + "last_claim_time": "2022-10-08T02:05:49.500", + "location": 392, + "producer_authority": [ + "block_signing_authority_v0", + { + "threshold": 1, + "keys": [ + { + "key": "EOS8QgURqo875qu3a8vgZ58qBeu2cTehe9zAWRfpdCXAQipicu1Fi", + "weight": 1 + } + ] + } + ] + }, + { + "owner": "blockpooleos", + "total_votes": "10090362309438683136.00000000000000000", + "producer_key": "EOS61FDJz3GC42GhaPSsmKh7SxuesyZhjm7hBwBKqN52v1HukEqBu", + "is_active": 1, + "url": "https://www.blockpool.com", + "unpaid_blocks": 1248, + "last_claim_time": "2022-10-09T05:05:42.000", + "location": 0 + }, + { + "owner": "eosiosg11111", + "total_votes": "10072919871277869056.00000000000000000", + "producer_key": "EOS7zVBQMhV7dZ5zRQwBgDmmbFCHA6YcmwW6Dq5CePGpqLR1ZsVAc", + "is_active": 1, + "url": "https://eosio.sg", + "unpaid_blocks": 5844, + "last_claim_time": "2022-10-08T15:43:36.000", + "location": 702 + }, + { + "owner": "bitfinexeos1", + "total_votes": "10063513417383008256.00000000000000000", + "producer_key": "EOS4tkw7LgtURT3dvG3kQ4D1sg3aAtPDymmoatpuFkQMc7wzZdKxc", + "is_active": 1, + "url": "https://www.bitfinex.com", + "unpaid_blocks": 2040, + "last_claim_time": "2022-10-09T02:48:20.000", + "location": 0 + }, + { + "owner": "teamgreymass", + "total_votes": "9950096137996158976.00000000000000000", + "producer_key": "EOS5ktvwSdLEdusdRn7NmdV2Xu89xiXjir7EhJuZ4DUa8WMNuojbx", + "is_active": 1, + "url": "https://greymass.com", + "unpaid_blocks": 6215, + "last_claim_time": "2022-10-08T14:38:02.500", + "location": 124, + "producer_authority": [ + "block_signing_authority_v0", + { + "threshold": 1, + "keys": [ + { + "key": "EOS5ktvwSdLEdusdRn7NmdV2Xu89xiXjir7EhJuZ4DUa8WMNuojbx", + "weight": 1 + } + ] + } + ] + }, + { + "owner": "whaleex.com", + "total_votes": "9933500342574950400.00000000000000000", + "producer_key": "EOS88EGcFghfQJER1mDaEe4kDJ7MGDoPmXQfA7q2QMTLLqiYP1UQR", + "is_active": 1, + "url": "https://www.whaleex.com", + "unpaid_blocks": 6148, + "last_claim_time": "2022-10-08T14:48:16.000", + "location": 410 + }, + { + "owner": "eosasia11111", + "total_votes": "9922242178808612864.00000000000000000", + "producer_key": "EOS76gG6ATpqfVf5KrVjh3f4JAa4EKzAwWabTucNQ4Xv2TmVAj9bN", + "is_active": 1, + "url": "https://www.eosasia.one/", + "unpaid_blocks": 6396, + "last_claim_time": "2022-10-08T14:06:09.500", + "location": 9 + }, + { + "owner": "ivote4eosusa", + "total_votes": "9906453402474604544.00000000000000000", + "producer_key": "EOS6KzD4YVbuXV5uBH5d4Ay4sTzuQk88ivmnWfJPLoo6SFrX6iyqj", + "is_active": 1, + "url": "https://eosusa.io/bp/eos/", + "unpaid_blocks": 2268, + "last_claim_time": "2022-10-09T02:10:06.000", + "location": 840, + "producer_authority": [ + "block_signing_authority_v0", + { + "threshold": 1, + "keys": [ + { + "key": "EOS6KzD4YVbuXV5uBH5d4Ay4sTzuQk88ivmnWfJPLoo6SFrX6iyqj", + "weight": 1 + } + ] + } + ] + }, + { + "owner": "eosrapidprod", + "total_votes": "9197784592100426752.00000000000000000", + "producer_key": "EOS8QEFsgUWj7BscQNkiremtpSoRkzwDqmCPpKKCHYXGNaqxXFQ4h", + "is_active": 1, + "url": "https://eosrapid.com", + "unpaid_blocks": 0, + "last_claim_time": "2022-10-08T19:12:00.000", + "location": 840 + }, + { + "owner": "eoslambdacom", + "total_votes": "8384089495966818304.00000000000000000", + "producer_key": "EOS66Guagdf4FSN9diXivjeW5tV8yPqBrQFFusTaN7rLTWD5LsnSN", + "is_active": 1, + "url": "https://bridgepool.lambda.im", + "unpaid_blocks": 0, + "last_claim_time": "2022-10-09T06:17:07.000", + "location": 0, + "producer_authority": [ + "block_signing_authority_v0", + { + "threshold": 1, + "keys": [ + { + "key": "EOS66Guagdf4FSN9diXivjeW5tV8yPqBrQFFusTaN7rLTWD5LsnSN", + "weight": 1 + } + ] + } + ] + }, + { + "owner": "eosphereiobp", + "total_votes": "8156807138283275264.00000000000000000", + "producer_key": "EOS5FYRrG3ThNU56d3uZ8d4bo4MsN5Fig9WPY3xYSpH3RqPhpoH3A", + "is_active": 1, + "url": "https://www.eosphere.io", + "unpaid_blocks": 0, + "last_claim_time": "2022-10-08T15:43:03.000", + "location": 36 + }, + { + "owner": "truststaking", + "total_votes": "8042369827713352704.00000000000000000", + "producer_key": "EOS5jZgX1gZvYat588FKsMyAybVo8tWaAX4bHdBrW9Z4C5iMshUKf", + "is_active": 1, + "url": "https://www.binance.com", + "unpaid_blocks": 0, + "last_claim_time": "2022-10-08T20:11:07.000", + "location": 392 + }, + { + "owner": "eosdotwikibp", + "total_votes": "6796798574209761280.00000000000000000", + "producer_key": "EOS7RsdDs8k8GDAdZrETnTjoGwiqAwwdNyxeH8q6fmHgpHjPPnyco", + "is_active": 1, + "url": "https://eos.wiki", + "unpaid_blocks": 0, + "last_claim_time": "2022-10-09T07:33:12.000", + "location": 276, + "producer_authority": [ + "block_signing_authority_v0", + { + "threshold": 1, + "keys": [ + { + "key": "EOS7RsdDs8k8GDAdZrETnTjoGwiqAwwdNyxeH8q6fmHgpHjPPnyco", + "weight": 1 + } + ] + } + ] + }, + { + "owner": "eosx.game", + "total_votes": "6136821275287072768.00000000000000000", + "producer_key": "EOS727yFoVQYBsXZ9qxtZJPJu3rm4befuoVwBk7iqgBWjmEGAMUax", + "is_active": 1, + "url": "https://chaingame.club", + "unpaid_blocks": 0, + "last_claim_time": "2022-10-09T03:02:00.500", + "location": 156 + }, + { + "owner": "moreisfuture", + "total_votes": "5622908315041492992.00000000000000000", + "producer_key": "EOS671RDSn2embqDJhFHKWZqqCfVgNAmi2p3vQZfQBX77GypcGoF2", + "is_active": 1, + "url": "https://more.top", + "unpaid_blocks": 0, + "last_claim_time": "2022-10-09T04:56:48.000", + "location": 156 + }, + { + "owner": "slowmistiobp", + "total_votes": "5533449115910307840.00000000000000000", + "producer_key": "EOS62hJuwYdARgXDWLepwTP4Xc749Gi3RVXZp1qJ8NjfbEwi79uZN", + "is_active": 1, + "url": "https://slowmist.io", + "unpaid_blocks": 0, + "last_claim_time": "2022-10-09T08:20:13.000", + "location": 0 + }, + { + "owner": "bp.defi", + "total_votes": "5266186696687296512.00000000000000000", + "producer_key": "EOS5BoXgRJwL7JFvKnV64Q3Ha3ux6x2cP8nnhU9NVrRkyrhPC3m5b", + "is_active": 1, + "url": "https://defibox.io", + "unpaid_blocks": 0, + "last_claim_time": "2022-10-08T09:29:02.500", + "location": 392, + "producer_authority": [ + "block_signing_authority_v0", + { + "threshold": 1, + "keys": [ + { + "key": "EOS5BoXgRJwL7JFvKnV64Q3Ha3ux6x2cP8nnhU9NVrRkyrhPC3m5b", + "weight": 1 + } + ] + } + ] + }, + { + "owner": "eosauthority", + "total_votes": "4976294023303766016.00000000000000000", + "producer_key": "EOS4va3CTmAcAAXsT26T3EBWqYHgQLshyxsozYRgxWm9tjmy17pVV", + "is_active": 1, + "url": "https://eosauthority.com", + "unpaid_blocks": 0, + "last_claim_time": "2022-10-09T04:05:51.500", + "location": 826 + }, + { + "owner": "zbeosbp11111", + "total_votes": "4824425275959604224.00000000000000000", + "producer_key": "EOS7rhgVPWWyfMqjSbNdndtCK8Gkza3xnDbUupsPLMZ6gjfQ4nX81", + "is_active": 1, + "url": "https://www.zbeos.com", + "unpaid_blocks": 0, + "last_claim_time": "2022-08-18T05:01:48.000", + "location": 156 + }, + { + "owner": "eos42freedom", + "total_votes": "4692402051407156224.00000000000000000", + "producer_key": "EOS4tw7vH62TcVtMgm2tjXzn9hTuHEBbGPUK2eos42ssY7ip4LTzu", + "is_active": 1, + "url": "https://eos42.io", + "unpaid_blocks": 0, + "last_claim_time": "2022-10-08T16:30:12.000", + "location": 276, + "producer_authority": [ + "block_signing_authority_v0", + { + "threshold": 1, + "keys": [ + { + "key": "EOS4tw7vH62TcVtMgm2tjXzn9hTuHEBbGPUK2eos42ssY7ip4LTzu", + "weight": 1 + } + ] + } + ] + }, + { + "owner": "helloeoscnbp", + "total_votes": "4526907321072028160.00000000000000000", + "producer_key": "EOS79cHpaEittzgJWgj79tdRhgzLEWy8wXmmQ3fL7kkDjmYYiGNet", + "is_active": 1, + "url": "https://www.helloeos.com.cn", + "unpaid_blocks": 0, + "last_claim_time": "2022-10-08T10:31:12.000", + "location": 156 + }, + { + "owner": "eosrainbowbp", + "total_votes": "4512420268146845184.00000000000000000", + "producer_key": "EOS62q4Q4mg6GkACM7V5mrC46oZiSmV7roJDFA2N11JBdMLhYjRtt", + "is_active": 1, + "url": "eosrainbow.xyz", + "unpaid_blocks": 0, + "last_claim_time": "2022-10-08T09:11:49.500", + "location": 0 + }, + { + "owner": "dexeosbpnode", + "total_votes": "4494450990952401920.00000000000000000", + "producer_key": "EOS5qraVVdEwHaouJEqpFWJfZuxQViDxP3WZ826wGwt2bxnfuEGRF", + "is_active": 1, + "url": "https://dexeos.io", + "unpaid_blocks": 0, + "last_claim_time": "2022-10-09T07:24:48.000", + "location": 0 + }, + { + "owner": "bp.pizza", + "total_votes": "4377532358591153664.00000000000000000", + "producer_key": "EOS8AZhG9bKGPYmoXGvBioZEJYqVj5xMfujivYnHhwJ3SB9oUWty2", + "is_active": 1, + "url": "https://pizza.finance", + "unpaid_blocks": 0, + "last_claim_time": "2022-10-09T03:00:36.000", + "location": 156 + }, + { + "owner": "validatoreos", + "total_votes": "4261372144849701888.00000000000000000", + "producer_key": "EOS8h87g5rpLg77ZCJy1J2JPJaCtEeNTAbhGmEsQoz5ngGt3cRaHX", + "is_active": 1, + "url": "http://validatoreos.xyz", + "unpaid_blocks": 0, + "last_claim_time": "2022-10-08T13:41:51.000", + "location": 0 + }, + { + "owner": "eostitanprod", + "total_votes": "4258536806845999616.00000000000000000", + "producer_key": "EOS5z4JJRLvNasG4VRWYLRNC5TeLquNM8k5oBWWpRhpf9mgJH9e9K", + "is_active": 1, + "url": "https://eostitan.com", + "unpaid_blocks": 0, + "last_claim_time": "2022-10-08T14:34:44.000", + "location": 0 + }, + { + "owner": "ecoboost1111", + "total_votes": "4230239510400140800.00000000000000000", + "producer_key": "EOS5g9D7uJuEwNzby2uAu1qVxLishXJm1T2odBPxdU3UzP7xYwVA5", + "is_active": 1, + "url": "https://ecoboost.app/", + "unpaid_blocks": 0, + "last_claim_time": "2022-10-08T09:21:18.000", + "location": 0 + }, + { + "owner": "hexlantttttt", + "total_votes": "4184478077341647872.00000000000000000", + "producer_key": "EOS83xBpEBigshibgFNjbX3jqHZNDzcnJJrGZaq2ioYTjpGEfckXf", + "is_active": 1, + "url": "https://hexbp.com", + "unpaid_blocks": 0, + "last_claim_time": "2022-10-09T02:40:24.000", + "location": 410 + }, + { + "owner": "alohaeosprod", + "total_votes": "4158986265906736128.00000000000000000", + "producer_key": "EOS53pfXfxZ4tH3EGccdnGvBZVJsrcSf2nbCKiLLMphgaii9XxxhM", + "is_active": 1, + "url": "https://www.alohaeos.com", + "unpaid_blocks": 0, + "last_claim_time": "2022-10-09T03:12:32.500", + "location": 840 + }, + { + "owner": "cochainworld", + "total_votes": "4065629301285115904.00000000000000000", + "producer_key": "EOS5QDSQyh96SmktA28dteEchc1QCVdqKYG4YVDHGGATMYxqy33wi", + "is_active": 1, + "url": "https://eoscochain.io", + "unpaid_blocks": 0, + "last_claim_time": "2022-10-09T03:39:12.000", + "location": 156 + }, + { + "owner": "argentinaeos", + "total_votes": "4045112710775138304.00000000000000000", + "producer_key": "EOS7jq4FHrFrtCXxpRQ39dBeDMa5AjM4VaRbqBECkSa5aZnizJzrx", + "is_active": 1, + "url": "https://www.eosargentina.io", + "unpaid_blocks": 0, + "last_claim_time": "2022-10-08T15:05:11.500", + "location": 32 + }, + { + "owner": "geosoneforbp", + "total_votes": "4037676176202859520.00000000000000000", + "producer_key": "EOS7CjPeMYUj2Ydmw667JJNsQA5mige9YE4FVxMCT81Jst3SRVbX3", + "is_active": 1, + "url": "https://www.geos.one", + "unpaid_blocks": 0, + "last_claim_time": "2022-10-09T03:28:29.000", + "location": 0 + }, + { + "owner": "eoshenzhenio", + "total_votes": "4032463633357993984.00000000000000000", + "producer_key": "EOS8EJrMphgHJx5EkHQ4ryodbvnocZEC1xp5T1FnRsT7XtzYA1FE7", + "is_active": 1, + "url": "https://info.eoshenzhen.io:1443", + "unpaid_blocks": 0, + "last_claim_time": "2022-10-08T16:42:54.000", + "location": 156 + }, + { + "owner": "kikifinance1", + "total_votes": "4016967047516044288.00000000000000000", + "producer_key": "EOS7CioAtoABvsAbmruLAQdDdPNqSKXka8cp1S1zvWBAk8qvX2AN3", + "is_active": 1, + "url": "https://kiki.finance", + "unpaid_blocks": 0, + "last_claim_time": "2022-10-09T04:47:18.000", + "location": 0, + "producer_authority": [ + "block_signing_authority_v0", + { + "threshold": 1, + "keys": [ + { + "key": "EOS7CioAtoABvsAbmruLAQdDdPNqSKXka8cp1S1zvWBAk8qvX2AN3", + "weight": 1 + } + ] + } + ] + }, + { + "owner": "eosflareiobp", + "total_votes": "3925556091134896128.00000000000000000", + "producer_key": "EOS6FLARENUBrQSqSRWk4BZG6oyUcepnTb1T6j3LgrExpJaL4gk89", + "is_active": 1, + "url": "https://eosflare.io", + "unpaid_blocks": 0, + "last_claim_time": "2022-10-09T05:10:30.000", + "location": 840 + }, + { + "owner": "cryptolions1", + "total_votes": "3863421668723772416.00000000000000000", + "producer_key": "EOS5yHaUBwhpwFftNjADdVwBpCVybLPg5P3z7HpTbDGjUfpqwWSSf", + "is_active": 1, + "url": "https://cryptolions.io", + "unpaid_blocks": 0, + "last_claim_time": "2022-10-08T23:52:05.000", + "location": 804 + }, + { + "owner": "itokenpocket", + "total_votes": "3852896259427981824.00000000000000000", + "producer_key": "EOS8BYCigFER1XBbMqD3GjVVF5B3BmB1E1nkjJJTxPX4tmdS3YwMR", + "is_active": 1, + "url": "https://www.tokenpocket.pro", + "unpaid_blocks": 0, + "last_claim_time": "2022-10-09T08:23:42.000", + "location": 800 + }, + { + "owner": "eospaceioeos", + "total_votes": "3753549309894725632.00000000000000000", + "producer_key": "EOS7dZPHgFJXwHz84JWf5QgybxLpp95cxYE5c4yngsrSqgVFczaPs", + "is_active": 1, + "url": "https://eospacex.com", + "unpaid_blocks": 0, + "last_claim_time": "2022-10-09T06:57:30.000", + "location": 156 + }, + { + "owner": "eosriobrazil", + "total_votes": "3658126321891840000.00000000000000000", + "producer_key": "EOS62VTMkGDMWpK3ECNegVLt92UYQQMXC3uzcx5zjW64hrMCaL1rx", + "is_active": 1, + "url": "https://eosrio.io", + "unpaid_blocks": 0, + "last_claim_time": "2022-10-09T06:31:22.000", + "location": 76 + }, + { + "owner": "eosamsterdam", + "total_votes": "3627550843465688064.00000000000000000", + "producer_key": "EOS6jd8kF7KxAv87Q9cAmjcyxuJSTKu47jpbJjFebJhYMMXJoqGU1", + "is_active": 1, + "url": "https://eosamsterdam.net", + "unpaid_blocks": 0, + "last_claim_time": "2022-10-08T10:43:12.000", + "location": 1, + "producer_authority": [ + "block_signing_authority_v0", + { + "threshold": 1, + "keys": [ + { + "key": "EOS6jd8kF7KxAv87Q9cAmjcyxuJSTKu47jpbJjFebJhYMMXJoqGU1", + "weight": 1 + } + ] + } + ] + }, + { + "owner": "eosiodetroit", + "total_votes": "3545132940723919872.00000000000000000", + "producer_key": "EOS8XCTx97A3ZBM5KgAZkZMb2k2feYK1ukJzMuEX7pUXW1TMG8spt", + "is_active": 1, + "url": "https://detroitledger.tech", + "unpaid_blocks": 0, + "last_claim_time": "2022-10-09T00:45:06.000", + "location": 840, + "producer_authority": [ + "block_signing_authority_v0", + { + "threshold": 1, + "keys": [ + { + "key": "EOS8XCTx97A3ZBM5KgAZkZMb2k2feYK1ukJzMuEX7pUXW1TMG8spt", + "weight": 1 + } + ] + } + ] + }, + { + "owner": "bp.dfs", + "total_votes": "3513937325349957632.00000000000000000", + "producer_key": "EOS7u2ARuKEDN2ybqSNY5S2cuoLZ6jFBT3BjU5g8SdHsU8kyEESso", + "is_active": 1, + "url": "https://defis.network", + "unpaid_blocks": 0, + "last_claim_time": "2022-10-08T22:54:30.000", + "location": 702 + }, + { + "owner": "eossv12eossv", + "total_votes": "3342150493125626880.00000000000000000", + "producer_key": "EOS7fv6nadePJBdCiWyR2Ldz5YWyzJGMBkEo47zUSWFttduQhHHaa", + "is_active": 1, + "url": "https://eossiliconvalley.io", + "unpaid_blocks": 0, + "last_claim_time": "2022-10-08T23:21:48.500", + "location": 840 + }, + { + "owner": "eosathenabp1", + "total_votes": "3268538743732166656.00000000000000000", + "producer_key": "EOS6NVNPZDdmBvqMYdifQ4QueT8fr7wDHyxNMgFEKLx9z1Dt5eFE1", + "is_active": 1, + "url": "http://athenbp.club", + "unpaid_blocks": 0, + "last_claim_time": "2022-10-08T17:09:45.500", + "location": 0 + }, + { + "owner": "eosbeijingbp", + "total_votes": "2942059209233420288.00000000000000000", + "producer_key": "EOS5dGpcEhwB4VEhhXEcqtZs9EQj5HeetuXDnsAGVHMXHAFdMjbdj", + "is_active": 1, + "url": "https://www.eosbeijing.one", + "unpaid_blocks": 0, + "last_claim_time": "2022-10-09T08:00:30.000", + "location": 392 + }, + { + "owner": "eossnzpoolbp", + "total_votes": "2688186882652805120.00000000000000000", + "producer_key": "EOS6gQeftj3V2yuGdxAJcNfNAw2PpsjftYK4PrmW6uob6xgYcQHKw", + "is_active": 1, + "url": "http://snzholding.com/", + "unpaid_blocks": 0, + "last_claim_time": "2022-10-08T10:43:26.500", + "location": 1 + }, + { + "owner": "eosbixinboot", + "total_votes": "2673487531063319552.00000000000000000", + "producer_key": "EOS7QC1XfAtkYeLjbHQjcDWVqUsxuSJ3YRhNyG93VAv2u3uHopGVp", + "is_active": 1, + "url": "https://www.eosbixin.com", + "unpaid_blocks": 0, + "last_claim_time": "2022-10-09T06:59:14.500", + "location": 7 + }, + { + "owner": "eosnodeonebp", + "total_votes": "2628745688246179840.00000000000000000", + "producer_key": "EOS6hRwZ76vaDVwqEd9oiD2TPtr5HypxiXmiP34pkuicyFDFd6SLN", + "is_active": 1, + "url": "https://www.nodeone.io", + "unpaid_blocks": 0, + "last_claim_time": "2022-10-08T21:49:24.000", + "location": 410, + "producer_authority": [ + "block_signing_authority_v0", + { + "threshold": 1, + "keys": [ + { + "key": "EOS6hRwZ76vaDVwqEd9oiD2TPtr5HypxiXmiP34pkuicyFDFd6SLN", + "weight": 1 + } + ] + } + ] + }, + { + "owner": "certikeosorg", + "total_votes": "2526714049166454784.00000000000000000", + "producer_key": "EOS57kRcpx1QT4Wn4uA6agwYdJNGew4cfrzKnzrvQZiVE85huUBAB", + "is_active": 1, + "url": "https://certik.org", + "unpaid_blocks": 0, + "last_claim_time": "2022-10-08T11:11:49.000", + "location": 840 + }, + { + "owner": "hoo.com", + "total_votes": "2407348698478720512.00000000000000000", + "producer_key": "EOS7Ef2ReXFWYmp1SB1ZzhnhDMfY8NnMZnvo4c51ZxiDf2UE7nCNR", + "is_active": 1, + "url": "https://hoo.com", + "unpaid_blocks": 0, + "last_claim_time": "2022-07-29T15:59:24.500", + "location": 0 + }, + { + "owner": "eosvenezuela", + "total_votes": "2360673180157740544.00000000000000000", + "producer_key": "EOS7pUMws312EjWwCcyMvV8hJiN5DFePdxsCknTJsrthp1an2AZXu", + "is_active": 1, + "url": "https://eosvenezuela.io", + "unpaid_blocks": 0, + "last_claim_time": "2022-10-08T10:00:04.500", + "location": 862 + }, + { + "owner": "eosswedenorg", + "total_votes": "1949848286880204032.00000000000000000", + "producer_key": "EOS7SGSBsWhSob6TEric6u3TGodcc1uXFcqSrquJ3Etuqcbb3VnNY", + "is_active": 1, + "url": "https://eossweden.org", + "unpaid_blocks": 0, + "last_claim_time": "2022-10-09T06:40:42.000", + "location": 752 + } + ], + "total_producer_vote_weight": "440324019838359830528.00000000000000000", + "more": "eoscafeblock" +} \ No newline at end of file diff --git a/testdata/mock_server/chain_get_raw_code_and_abi.json b/testdata/mock_server/chain_get_raw_code_and_abi.json new file mode 100644 index 00000000..9319e403 --- /dev/null +++ b/testdata/mock_server/chain_get_raw_code_and_abi.json @@ -0,0 +1,5 @@ +{ + "account_name": "tippedtipped", + "wasm": "AGFzbQEAAAAB3gEiYAAAYAN/f38Bf2ABfgBgBH5+fn4Bf2ACf38AYAJ/fwF/YAJ/fQBgBX9+fn5+AGACf3wAYAJ+fgF8YAJ+fgF9YAJ+fgF/YAF/AGAAAX5gAX4Bf2AAAX9gAn9+AGAEf35/fwBgBn5+fn5/fwF/YAN+fn4AYAF/AX9gBH9/f34BfmADf39/AX5gCH9/f39/f39/AGAFf39/f38Bf2ADf39/AGAEf35+fgBgBH9+f34AYAR/f39/AGAHf35+f35/fwBgBn9/f39/fwBgBX9/fn5/AGAFf39/f38AYAJ+fgACtgUoA2VudgxyZXF1aXJlX2F1dGgAAgNlbnYLZGJfZmluZF9pNjQAAwNlbnYMZW9zaW9fYXNzZXJ0AAQDZW52C2RiX25leHRfaTY0AAUDZW52BWFib3J0AAADZW52Bm1lbXNldAABA2VudhFyZXF1aXJlX3JlY2lwaWVudAACA2VudgZtZW1jcHkAAQNlbnYHbWVtbW92ZQABA2Vudg1fX2V4dGVuZHNmdGYyAAYDZW52C19fZmxvYXRzaXRmAAQDZW52CF9fbXVsdGYzAAcDZW52DV9fZmxvYXR1bnNpdGYABANlbnYIX19kaXZ0ZjMABwNlbnYIX19hZGR0ZjMABwNlbnYNX19leHRlbmRkZnRmMgAIA2VudgdfX2VxdGYyAAMDZW52B19fbGV0ZjIAAwNlbnYHX19uZXRmMgADA2VudghfX3N1YnRmMwAHA2VudgxfX3RydW5jdGZkZjIACQNlbnYHX19nZXRmMgADA2VudgxfX3RydW5jdGZzZjIACgNlbnYIcHJpbnRzX2wABANlbnYKX191bm9yZHRmMgADA2VudgxfX2ZpeHVuc3Rmc2kACwNlbnYJX19maXh0ZnNpAAsDZW52BnByaW50cwAMA2VudgZwcmludG4AAgNlbnYQY3VycmVudF9yZWNlaXZlcgANA2Vudgppc19hY2NvdW50AA4DZW52B3ByaW50dWkAAgNlbnYQYWN0aW9uX2RhdGFfc2l6ZQAPA2VudhByZWFkX2FjdGlvbl9kYXRhAAUDZW52EWVvc2lvX2Fzc2VydF9jb2RlABADZW52CmRiX2dldF9pNjQAAQNlbnYNZGJfcmVtb3ZlX2k2NAAMA2Vudg1kYl91cGRhdGVfaTY0ABEDZW52C3Nl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AzcDWAJAEB0gBCkDCFENAEEAQZLJABACCyAEIAQ2AkQgBCAEQQhqNgJAIAQgBEHYAGo2AkhBIBAwIgBCADcCDCAAIABBDGo2AgggACAEQQhqNgIUIARBwABqIAAQVSAEIAA2AlAgBCAAKQMAIgU3A0AgBCAAKAIYIgY2AjwCQAJAIARBJGoiBygCACICIARBCGpBIGooAgBPDQAgAiAFNwMIIAIgBjYCECAEQQA2AlAgAiAANgIAIAcgAkEYajYCACAEKAJQIQAgBEEANgJQIAANAQwCCyAEQSBqIARB0ABqIARBwABqIARBPGoQViAEKAJQIQAgBEEANgJQIABFDQELIABBCGogAEEMaigCABBQIAAQMgsgBCgCICIGRQ0BCwJAAkAgBEEkaiIHKAIAIgAgBkYNAANAIABBaGoiACgCACECIABBADYCAAJAIAJFDQAgAkEIaiACQQxqKAIAEFAgAhAyCyAGIABHDQALIARBIGooAgAhAAwBCyAGIQALIAcgBjYCACAAEDILIARB4ABqJAALuAsHAn8BfgF/A34CfwF+BH8jAEEQayIDIQQgAyQAAkAgASgCFCAARg0AQQBB8McAEAILAkAQHSAAKQMAUQ0AQQBBnsgAEAILIAEpAwAhBSACKAIAIgYpAxAhByAGKQMIIQggBikDACEJAkACQAJAAkAgAUEMaiIKKAIAIgZFDQAgAUEMaiELIAggBikDECIMVA0BDAILIAohBiAKIQtBAiEODAILQSQhDgwBC0EjIQ4LA0ACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQCAODiYCBAcMJA4PEBESExQVGRocHR8gIyEiHhsWFxglDQkKCwUGAAEDCAgLIAYhCyAIIA0iBikDECIMVA0lQSMhDgxFCyAMIAhUDSdBACEODEQLIAcgBkEYaikDACIMWg0lQSQhDgxDCyAGKAIAIg0NQQxACyAMIAdaDSZBICEODEELIAZBBGohCyAGKAIEIg1FDSRBISEODEALIAshBgwgCyABQQhqIQ8gCygCACIN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AmtBB0sNAEEAQfbGABACIANB8AFqQQhqKAIAIQUgAygC9AEhAgsgA0HgAWogAkEIEAcaIAMgAkEIaiICNgL0AQJAIAUgAmtBB0sNAEEAQfbGABACIAMoAvQBIQILIANB2AFqIAJBCBAHGiADIAJBCGo2AvQBIANBADYC0AEgA0IANwPIASADQfABaiADQcgBahBiGiADQQA2AsABIANCADcDuAEgA0HwAWogA0G4AWoQYhogA0IANwOwASADQgA3A6gBAkAgA0HwAWpBCGoiBCgCACADKAL0ASICa0EHSw0AQQBB9sYAEAIgAygC9AEhAgsgA0GoAWogAkEIEAcaIAMgAygC9AFBCGoiAjYC9AEgA0IANwN4AkAgBCgCACACa0EHSw0AQQBB9sYAEAIgAygC9AEhAgsgA0H4AGogAkEIEAcaIANBqAFqQQhqIgIgAykDeDcDACADIAMoAvQBQQhqNgL0ASADQQA2AqABIANCADcDmAEgA0HwAWogA0GYAWoQYhogA0HoAGpBCGoiBCADQfABakEIaigCADYCACADIAMpA/ABNwNoIANBgAJqQQhqIAQoAgAiBDYCACADQZACakEIaiIFIAQ2AgAgAyADKQNoIgY3A5ACIAMgBjcDgAIgA0GoAmpBCGogBSgCACIENgIAIANBkAFqIAQ2AgAgAyAANwN4IAMgATcDgAEgAyADKQOQAiIBNwOIASADIAE3A6gCIAMpA9gBIQcgAykD4AEhCCADKQPoASEBIANB2ABqIANByAFqEEEhBCADQcgAaiADQbgBahBBIQUgAikDACEGIAMpA6gBIQkgA0E4aiADQZgBahBBIQIgABAAIANBIGpBCGogBjcDACADQSBqQRBqIAE3AwAgAyAGNwOwAiADIAE3A7gCIANCACAJfSIKNwMgIAMgCjcDqAIgA0H4AGogCCADQSBqIAAQUyADQQhqQQhqIAY3AwAgA0EIakEQaiABNwMAIAMgBjcDmAIgAyABNwOgAiADIAk3AwggAyAJNwOQAiADQfgAaiAHIANBCGogABBTQbXEABAbIAgQHEGvxAAQGyAHEBwCQAJAAkACQAJAAkACQAJAAkACQAJAIAItAABBAXENACAFLQAAQQFxDQEMAgsgAigCCBAyIAUtAABBAXFFDQELIAUoAggQMkEBIQIgBC0AAEEBcUUNAQwCC0EBIQIgBC0AAEEBcQ0BCyADLQCYASACcQ0BDAILIAQoAggQMiADLQCYASACcUUNAQsgA0GgAWooAgAQMkEBIQIgAy0AuAFBAXFFDQEMAgtBASECIAMtALgBQQFxDQELIAMtAMgBIAJxDQEMAgsgA0HAAWooAgAQMiADLQDIASACcUUNAQsgA0HQAWooAgAQMiADQcACaiQADwsgA0HAAmokAAudAwEGfyMAQSBrIgIkACACQQA2AhggAkIANwMQIAAgAkEQahBjGgJAAkACQAJAAkACQAJAAkAgAigCFCACKAIQIgNrIgRFDQAgAkEIakEANgIAIAJCADcDACAEQXBPDQUgBEEKSw0BIAIgBEEBdDoAACACQQFyIQUMAgsgAS0AAEEBcQ0CIAFBADsBACABQQhqIQMMAwsgBEEQakFwcSIGEDAhBSACIAZBAXI2AgAgAiAFNgIIIAIgBDYCBAsgBCEHIAUhBgNAIAYgAy0AADoAACAGQQFqIQYgA0EBaiEDIAdBf2oiBw0ACyAFIARqQQA6AAACQAJAIAEtAABBAXENACABQQA7AQAMAQsgASgCCEEAOgAAIAFBADYCBAsgAUEAEEMgAUEIaiACQQhqKAIANgIAIAEgAikDADcCACACKAIQIgNFDQQMAwsgASgCCEEAOgAAIAFBADYCBCABQQhqIQMLIAFBABBDIANBADYCACABQgA3AgAgAigCECIDDQEMAgsgAhBAAAsgAiADNgIUIAMQMgsgAkEgaiQAIAALoQIDAX8BfgV/IAAoAgQhAkIAIQMgAEEIaiEEIABBBGohBUEAIQYDQAJAIAIgBCgCAEkNAEEAQfLGABACIAUoAgAhAgsgAi0AACEHIAUgAkEBaiIINgIAIAMgB0H/AHEgBkH/AXEiAnSthCEDIAJBB2ohBiAIIQIgB0GAAXENAAsCQAJAIAEoAgQiByABKAIAIgJrIgUgA6ciBk8NACABIAYgBWsQcCAAQQRqKAIAIQggAUEEaigCACEHIAEoAgAhAgwBCyAFIAZNDQAgAUEEaiACIAZqIgc2AgALAkAgAEEIaigCACAIayAHIAJrIgdPDQBBAEH2xgAQAiAAQQRqKAIAIQgLIAIgCCAHEAcaIABBBGoiAiACKAIAIAdqNgIAIAALqwcCBH8BfiMAQfABayICIQMgAiQAAkACQAJAAkAQICIERQ0AIARBgARJDQEgBBAqIQIMAgtBACECDAILIAIgBEEPakFwcWsiAiQACyACIAQQIRoLIAMgAjYCtAEgAyACNgKwASADIAIgBGoiBTYCuAEgA0IANwOoAQJAIARBB0sNAEEAQfbGABACIANBuAFqKAIAIQUgAygCtAEhAgsgA0GoAWogAkEIEAcaIAMgAkEIaiICNgK0AQJAIAUgAmtBB0sNAEEAQfbGABACIAMoArQBIQILIANBoAFqIAJBCBAHGiADIAJBCGo2ArQBIANBADYCmAEgA0IANwOQASADQbABaiADQZABahBiGiADQgA3A4gBAkAgA0GwAWpBCGooAgAgAygCtAEiAmtBB0sNAEEAQfbGABACIAMoArQBIQILIANBiAFqIAJBCBAHGiADIAMoArQBQQhqIgI2ArQBIANCADcDgAEgA0IANwN4AkAgA0GwAWpBCGoiBCgCACACa0EHSw0AQQBB9sYAEAIgAygCtAEhAgsgA0H4AGogAkEIEAcaIAMgAygCtAFBCGoiAjYCtAEgA0IANwNIAkAgBCgCACACa0EHSw0AQQBB9sYAEAIgAygCtAEhAgsgA0HIAGogAkEIEAcaIANB+ABqQQhqIgQgAykDSDcDACADIAMoArQBQQhqNgK0ASADQQA2AnAgA0IANwNoIANBsAFqIANB6ABqEGIaIANBOGpBCGoiAiADQbABakEIaigCADYCACADIAMpA7ABNwM4IANBwAFqQQhqIAIoAgAiAjYCACADQdABakEIaiIFIAI2AgAgAyADKQM4IgY3A9ABIAMgBjcDwAEgA0HgAWpBCGogBSgCACICNgIAIANB4ABqIAI2AgAgAyAANwNIIAMgATcDUCADIAMpA9ABIgA3A1ggAyAANwPgASADKQOgASEAIAMpA6gBIQEgA0EoaiADQZABahBBIQIgA0EYakEIaiAEKQMAIgY3AwAgA0EIakEIaiAGNwMAIAMgAykDeCIGNwMYIAMgBjcDCCADQcgAaiABIAAgAyADKQOIASADQQhqIANB6ABqEFcCQAJAAkACQAJAIAItAABBAXENACADLQBoQQFxDQEMAgsgAigCCBAyIAMtAGhBAXFFDQELIANB8ABqKAIAEDIgAy0AkAFBAXFFDQEMAgsgAy0AkAFBAXENAQsgA0HwAWokAA8LIANBmAFqKAIAEDIgA0HwAWokAAuVAQEEfyMAQRBrIgIhAyACJAACQAJAAkACQAJAECAiBEUNACAEQYAESQ0BIAQQKiECDAILIANCADcDCEEAIQIgA0EIaiEFDAILIAIgBEEPakFwcWsiAiQACyACIAQQIRogA0IANwMIIANBCGohBSAEQQdLDQELQQBB9sYAEAILIAUgAkEIEAcaIAMpAwgQBiADQRBqJAALwwEBBX8jAEEwayICIQMgAiQAAkACQAJAAkACQBAgIgRFDQAgBEGABEkNASAEECohAgwCC0EAIQIgA0EoaiEFIAQhBgwCCyACIARBD2pBcHFrIgIkAAsgAiAEECEaIAIgBGohBiADQShqIQUgBEEHSw0BC0EAQfbGABACCyAFIAJBCBAHGiADQRxqIAJBCGo2AgAgA0EgaiAGNgIAIAMgATcDECADIAA3AwggAyACNgIYIANBCGogAykDKBBNIANBMGokAAuqAgIFfwF+IwBBMGsiAiEDIAIkAAJAAkACQAJAAkAQICIERQ0AIARBgARJDQEgBBAqIQIMAgtBACECIANBKGohBSAEIQYMAgsgAiAEQQ9qQXBxayICJAALIAIgBBAhGiACIARqIQYgA0EoaiEFIARBB0sNAQtBAEH2xgAQAgsgBSACQQgQBxogA0IANwMAIAJBCGohBQJAIARBeHEiBEEIRw0AQQBB9sYAEAILIAMgBUEIEAcaIAMpAwAhByADQgA3AyAgAkEQaiEFAkAgBEEQRw0AQQBB9sYAEAILIANBIGogBUEIEAcaIANBGGogBjYCACADIAI2AhAgA0EUaiACQRhqNgIAIAMgATcDCCADIAA3AwAgAyADKQMoIAcgAykDIBBRIANBMGokAAv/BQIEfwF+IwBB0AFrIgIhAyACJABBACEEAkAQICIFRQ0AAkACQCAFQYAESQ0AIAUQKiEEDAELIAIgBUEPakFwcWsiBCQACyAEIAUQIRoLIAMgBDYClAEgAyAENgKQASADIAQgBWo2ApgBIANBADYCiAEgA0IANwOAASADQZABaiADQYABahBiGgJAIAMoApgBIAMoApQBIgRrQQdLDQBBAEH2xgAQAiADKAKUASEECyADQfgAaiAEQQgQBxogAyADKAKUAUEIaiIENgKUASADQgA3A3ACQCADQZABakEIaiIFKAIAIARrQQdLDQBBAEH2xgAQAiADKAKUASEECyADQfAAaiAEQQgQBxogAyADKAKUAUEIaiIENgKUASADQgA3A2ggA0IANwNgAkAgBSgCACAEa0EHSw0AQQBB9sYAEAIgAygClAEhBAsgA0HgAGogBEEIEAcaIAMgAygClAFBCGoiBDYClAEgA0IANwNAAkAgA0GQAWpBCGoiBSgCACAEa0EHSw0AQQBB9sYAEAIgAygClAEhBAsgA0HAAGogBEEIEAcaIANB4ABqQQhqIgIgAykDQDcDACADIAMoApQBQQhqNgKUASADQTBqQQhqIgQgBSgCADYCACADIAMpA5ABNwMwIANBoAFqQQhqIAQoAgAiBDYCACADQbABakEIaiIFIAQ2AgAgAyADKQMwIgY3A7ABIAMgBjcDoAEgA0HAAWpBCGogBSgCACIENgIAIANB2ABqIAQ2AgAgAyAANwNAIAMgATcDSCADIAMpA7ABIgA3A1AgAyAANwPAASADQSBqIANBgAFqEEEhBCADQRBqQQhqIAIpAwAiADcDACADQQhqIAA3AwAgAyADKQNgIgA3AxAgAyAANwMAIANBwABqIAQgAykDeCADKQNwIAMQXAJAAkACQCAELQAAQQFxDQAgAy0AgAFBAXENAQwCCyAEKAIIEDIgAy0AgAFBAXFFDQELIANBiAFqKAIAEDIgA0HQAWokAA8LIANB0AFqJAALxgMBBH8jAEHAAGsiAiEDIAIkAAJAAkACQAJAECAiBEUNACAEQYAESQ0BIAQQKiECDAILQQAhAgwCCyACIARBD2pBcHFrIgIkAAsgAiAEECEaCyADIAI2AjQgAyACNgIwIAMgAiAEaiIFNgI4IANCADcDKAJAIARBB0sNAEEAQfbGABACIANBOGooAgAhBSADKAI0IQILIANBKGogAkEIEAcaIAMgAkEIaiICNgI0IANCADcDIAJAIAUgAmtBB0sNAEEAQfbGABACIANBMGpBCGooAgAhBSADKAI0IQILIANBIGogAkEIEAcaIAMgAkEIaiICNgI0IANCADcDGCADQgA3AxACQCAFIAJrQQdLDQBBAEH2xgAQAiADQThqKAIAIQUgAygCNCECCyADQRBqIAJBCBAHGiADIAJBCGoiAjYCNCADQgA3AwACQCAFIAJrQQdLDQBBAEH2xgAQAiADKAI0IQILIAMgAkEIEAcaIANBEGpBCGogAykDADcDACADIAJBCGo2AjQgA0EANgIIIANCADcDACADQTBqIAMQYhogAykDIBAGAkAgAy0AAEEBcUUNACADQQhqKAIAEDILIANBwABqJAALwAcCBH8CfiMAQeABayICIQMgAiQAAkACQAJAAkAQICIERQ0AIARBgARJDQEgBBAqIQIMAgtBACECDAILIAIgBEEPakFwcWsiAiQACyACIAQQIRoLIAMgAjYCjAEgAyACNgKIASADIAIgBGoiBTYCkAEgA0IANwOAAQJAIARBB0sNAEEAQfbGABACIANBkAFqKAIAIQUgAygCjAEhAgsgA0GAAWogAkEIEAcaIAMgAkEIaiICNgKMASADQgA3A3gCQCAFIAJrQQdLDQBBAEH2xgAQAiADQYgBakEIaigCACEFIAMoAowBIQILIANB+ABqIAJBCBAHGiADIAJBCGoiAjYCjAEgA0IANwNwIANCADcDaAJAIAUgAmtBB0sNAEEAQfbGABACIANBkAFqKAIAIQUgAygCjAEhAgsgA0HoAGogAkEIEAcaIAMgAkEIaiICNgKMASADQgA3AzgCQCAFIAJrQQdLDQBBAEH2xgAQAiADKAKMASECCyADQThqIAJBCBAHGiADQegAakEIaiIFIAMpAzg3AwAgAyACQQhqNgKMASADQQA2AmAgA0IANwNYIANBiAFqIANB2ABqEGIaIANBKGpBCGoiAiADQYgBakEIaigCADYCACADIAMpA4gBNwMoIANBwAFqQQhqIAIoAgAiAjYCACADQdABakEIaiIEIAI2AgAgAyADKQMoIgY3A9ABIAMgBjcDwAEgA0GoAWpBCGogBCgCACICNgIAIANB0ABqIAI2AgAgAyAANwM4IAMgATcDQCADIAMpA9ABIgY3A0ggAyAGNwOoASADQRhqQQhqIgIgBSkDADcDACADIAMpA2g3AxggAykDeCEHIAMpA4ABIQYgA0GYAWpBCGogAikDADcDACADIAMpAxg3A5gBAkAgBkKAgICAgMC6mNUAUQ0AIAZCgIDAtK7AupjVAFENACAGQoCo0MmxwLqY1QBRDQAgByAAUg0AIANBwAFqQQhqIgIgA0GYAWpBCGopAwA3AwAgAyADKQOYATcDwAEgA0GoAWpBCGoiBSACKQMAIgY3AwAgA0HQAWpBCGoiAiAGNwMAIAMgAykDwAEi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KAIEIgBrQQdKDQBBAEGMyQAQAiABQQRqKAIAIQALIAAgBUEIEAcaIAFBBGoiACAAKAIAQQhqIgU2AgAgAiAEQShqKQMANwMIAkAgAUEIaigCACAFa0EHSg0AQQBBjMkAEAIgACgCACEFCyAFIAJBCGpBCBAHGiAAIAAoAgBBCGo2AgAgAkEQaiQAC80CAQR/IwBBEGsiAiQAIAAoAgAhAwJAIAEoAgAiBCgCCCAEKAIEIgVrQQdKDQBBAEGMyQAQAiAEQQRqKAIAIQULIAUgA0EIEAcaIARBBGoiBCAEKAIAQQhqNgIAIAAoAgAiBUEIaiEDAkAgASgCACIEKAIIIAQoAgQiAGtBB0oNAEEAQYzJABACIARBBGooAgAhAAsgACADQQgQBxogBEEEaiIEIAQoAgBBCGo2AgAgBUEQaiEAAkAgASgCACIBKAIIIAEoAgQiBGtBB0oNAEEAQYzJABACIAFBBGooAgAhBAsgBCAAQQgQBxogAUEEaiIEIAQoAgBBCGoiADYCACACIAVBGGopAwA3AwgCQCABQQhqKAIAIABrQQdKDQBBAEGMyQAQAiAEKAIAIQALIAAgAkEIakEIEAcaIAQgBCgCAEEIajYCACACQRBqJAALC94LIwBBnMAACy1mYWlsZWQgdG8gYWxsb2NhdGUgcGFnZXMAAAECBAcDBgUAaW52YWxpZCBJRAAAQdDAAAuBAv////////////////////////////////////////////////////////////////8AAQIDBAUGBwgJ/////////woLDA0ODxAREhMUFRYXGBkaGxwdHh8gISIj////////CgsMDQ4PEBESExQVFhcYGRobHB0eHyAhIiP/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////AEHRwgALGHN0b3VsbABXaXRoZHJhd24gZnJvbTogAABB6cIACz06IG5vIGNvbnZlcnNpb24Ab2JqZWN0IHBhc3NlZCB0byBlcmFzZSBpcyBub3QgaW4gbXVsdGlfaW5kZXgAAEGmwwALQTogb3V0IG9mIHJhbmdlAGNhbm5vdCBlcmFzZSBvYmplY3RzIGluIHRhYmxlIG9mIGFub3RoZXIgY29udHJhY3QAAEHnwwALDG5vIGJhbGFuY2VzAABB88MACxVEZXBvc2l0IGNvbXBsZXRlIHRvOgAAQYjEAAsadG8gYWNjb3VudCBkb2VzIG5vdCBleGlzdAAAQaLEAAsNc292bWludG9mZW9zAABBr8QACwYgVG86IAAAQbXEAAsTVHJhbnNmZXJyZWQgZnJvbTogAABByMQACwRjcHUAAEHMxAALBG5ldAAAQdDEAAsEcmFtAABB1MQACxhNdXN0IGJlIENQVSwgTkVUIG9yIFJBTQAAQezEAAsLUkVYIGZyb206IAAAQffEAAsmc3RyaW5nIGlzIHRvbyBsb25nIHRvIGJlIGEgdmFsaWQgbmFtZQAAQZ3FAAtDdGhpcnRlZW50aCBjaGFyYWN0ZXIgaW4gbmFtZSBjYW5ub3QgYmUgYSBsZXR0ZXIgdGhhdCBjb21lcyBhZnRlciBqAABB4MUACzRjaGFyYWN0ZXIgaXMgbm90IGluIGFsbG93ZWQgY2hhcmFjdGVyIHNldCBmb3IgbmFtZXMAAEGUxgALFGludmFsaWQgc3ltYm9sIG5hbWUAAEGoxgALM29iamVjdCBwYXNzZWQgdG8gaXRlcmF0b3JfdG8gaXMgbm90IGluIG11bHRpX2luZGV4AABB28YACxdlcnJvciByZWFkaW5nIGl0ZXJhdG9yAABB8sYACwRnZXQAAEH2xgALBXJlYWQAAEH7xgALImNhbm5vdCBwYXNzIGVuZCBpdGVyYXRvciB0byBlcmFzZQAAQZ3HAAseY2Fubm90IGluY3JlbWVudCBlbmQgaXRlcmF0b3IAAEG7xwALNWF0dGVtcHQgdG8gcmVtb3ZlIG9iamVjdCB0aGF0IHdhcyBub3QgaW4gbXVsdGlfaW5kZXgAAEHwxwALLm9iamVjdCBwYXNzZWQgdG8gbW9kaWZ5IGlzIG5vdCBpbiBtdWx0aV9pbmRleAAAQZ7IAAszY2Fubm90IG1vZGlmeSBvYmplY3RzIGluIHRhYmxlIG9mIGFub3RoZXIgY29udHJhY3QAAEHRyAALO3VwZGF0ZXIgY2Fubm90IGNoYW5nZSBwcmltYXJ5IGtleSB3aGVuIG1vZGlmeWluZyBhbiBvYmplY3QAAEGMyQALBndyaXRlAABBkskACzNjYW5ub3QgY3JlYXRlIG9iamVjdHMgaW4gdGFibGUgb2YgYW5vdGhlciBjb250cmFjdAAAQcXJAAsfb3ZlcmRyYXduIGJhbGFuY2UgZm9yIG5ldyB1c2VyAABB5MkACyRvdmVyZHJhd24gYmFsYW5jZSBmb3IgZXhpc3RpbmcgdXNlcgAAQQALBAglAAA==", + "abi": "DmVvc2lvOjphYmkvMS4xAAoHYWNjb3VudAACBW93bmVyBnVpbnQ2NAhiYWxhbmNlcxxwYWlyX2V4dGVuZGVkX3N5bWJvbF9pbnQ2NFtdBmNscm9uZQABAmlkBnVpbnQ2NAljbHJvbmVzeW0AAwJpZAZ1aW50NjQDc3ltBnN5bWJvbANjb24EbmFtZQ9leHRlbmRlZF9zeW1ib2wAAgZzeW1ib2wGc3ltYm9sCGNvbnRyYWN0BG5hbWUacGFpcl9leHRlbmRlZF9zeW1ib2xfaW50NjQAAgNrZXkPZXh0ZW5kZWRfc3ltYm9sBXZhbHVlBWludDY0CXBheWZvcmNwdQABBHVzZXIEbmFtZQNyZXgABAR0eXBlBnN0cmluZwRmcm9tBnVpbnQ2NAJ0bwRuYW1lCHF1YW50aXR5BWFzc2V0A3RpcAAHCGNvbnRyYWN0BG5hbWUEZnJvbQZ1aW50NjQCdG8GdWludDY0DWZyb21fdXNlcm5hbWUGc3RyaW5nC3RvX3VzZXJuYW1lBnN0cmluZwhxdWFudGl0eQVhc3NldARtZW1vBnN0cmluZwh0cmFuc2ZlcgAEBGZyb20EbmFtZQJ0bwRuYW1lCHF1YW50aXR5BWFzc2V0BG1lbW8Gc3RyaW5nCHdpdGhkcmF3AAYIY29udHJhY3QEbmFtZQRmcm9tBnVpbnQ2NA1mcm9tX3VzZXJuYW1lBnN0cmluZwJ0bwRuYW1lCHF1YW50aXR5BWFzc2V0BG1lbW8Gc3RyaW5nBwAAAACoSW9EBmNscm9uZQAAAJAeq0lvRAljbHJvbmVzeW0AAADQFV26vKkJcGF5Zm9yY3B1AAAAAAAAALq6A3JleAAAAAAAAACqywN0aXAAAAAAVy08zc0IdHJhbnNmZXIAAAAA3NzUsuMId2l0aGRyYXcAAQAAADhPTREyA2k2NAAAB2FjY291bnQAAAAA=" +} \ No newline at end of file diff --git a/testdata/mock_server/chain_get_required_keys.json b/testdata/mock_server/chain_get_required_keys.json new file mode 100644 index 00000000..0001029e --- /dev/null +++ b/testdata/mock_server/chain_get_required_keys.json @@ -0,0 +1,5 @@ +{ + "required_keys": [ + "EOS5LYTegVed738P24stzRNG9BFdt5hxWHUo2VrnPE6LXDDcMa4dD" + ] +} \ No newline at end of file diff --git a/testdata/mock_server/chain_get_table_by_scope.json b/testdata/mock_server/chain_get_table_by_scope.json new file mode 100644 index 00000000..7ea6edd3 --- /dev/null +++ b/testdata/mock_server/chain_get_table_by_scope.json @@ -0,0 +1,47 @@ +{ + "rows": [ + { + "code": "tippedtipped", + "scope": ".......isttm4", + "table": "accounts", + "payer": "tippedtipped", + "count": 1 + }, + { + "code": "tippedtipped", + "scope": ".......ruv1hg", + "table": "accounts", + "payer": "tippedtipped", + "count": 1 + }, + { + "code": "tippedtipped", + "scope": ".......v.r3z2", + "table": "accounts", + "payer": "tippedtipped", + "count": 1 + }, + { + "code": "tippedtipped", + "scope": ".......zaftwj", + "table": "accounts", + "payer": "tippedtipped", + "count": 1 + }, + { + "code": "tippedtipped", + "scope": "......13mpu4j", + "table": "accounts", + "payer": "tippedtipped", + "count": 1 + }, + { + "code": "tippedtipped", + "scope": "tippedtipped", + "table": "accounts", + "payer": "tippedtipped", + "count": 4999 + } + ], + "more": "" +} \ No newline at end of file diff --git a/testdata/mock_server/server.go b/testdata/mock_server/server.go new file mode 100644 index 00000000..01e9c6bf --- /dev/null +++ b/testdata/mock_server/server.go @@ -0,0 +1,91 @@ +package mockServer + +import ( + "net/http" + "os" + "path/filepath" + + "github.com/jarcoal/httpmock" +) + +const ( + GET = "GET" + POST = "POST" +) + +func CreateAndActivateRestMockServer(rootDir string) { + httpmock.Activate() + + httpmock.RegisterResponder( + POST, "http://localhost/v1/chain/get_account", + httpmock.NewStringResponder(http.StatusOK, OpenFile(rootDir, "chain_get_account.json")), + ) + + httpmock.RegisterResponder( + POST, "http://localhost/v1/chain/get_block", + httpmock.NewStringResponder(http.StatusOK, OpenFile(rootDir, "chain_get_block.json")), + ) + + httpmock.RegisterResponder( + POST, "http://localhost/v1/chain/get_block_info", + httpmock.NewStringResponder(http.StatusOK, OpenFile(rootDir, "chain_get_block_info.json")), + ) + + httpmock.RegisterResponder( + POST, "http://localhost/v1/chain/get_info", + httpmock.NewStringResponder(http.StatusOK, OpenFile(rootDir, "chain_get_info.json")), + ) + + httpmock.RegisterResponder( + POST, "http://localhost/v1/chain/get_block_header_state", + httpmock.NewStringResponder(http.StatusOK, OpenFile(rootDir, "chain_get_block_header_state.json")), + ) + + httpmock.RegisterResponder( + POST, "http://localhost/v1/chain/get_abi", + httpmock.NewStringResponder(http.StatusOK, OpenFile(rootDir, "chain_get_abi.json")), + ) + + httpmock.RegisterResponder( + POST, "http://localhost/v1/chain/get_currency_balance", + httpmock.NewStringResponder(http.StatusOK, OpenFile(rootDir, "chain_get_currency_balance.json")), + ) + + httpmock.RegisterResponder( + POST, "http://localhost/v1/chain/get_currency_stats", + httpmock.NewStringResponder(http.StatusOK, OpenFile(rootDir, "chain_get_currency_stats.json")), + ) + + httpmock.RegisterResponder( + POST, "http://localhost/v1/chain/get_required_keys", + httpmock.NewStringResponder(http.StatusOK, OpenFile(rootDir, "chain_get_required_keys.json")), + ) + + httpmock.RegisterResponder( + POST, "http://localhost/v1/chain/get_producers", + httpmock.NewStringResponder(http.StatusOK, OpenFile(rootDir, "chain_get_producers.json")), + ) + + httpmock.RegisterResponder( + POST, "http://localhost/v1/chain/get_raw_code_and_abi", + httpmock.NewStringResponder(http.StatusOK, OpenFile(rootDir, "chain_get_raw_code_and_abi.json")), + ) + + httpmock.RegisterResponder( + POST, "http://localhost/v1/chain/get_table_by_scope", + httpmock.NewStringResponder(http.StatusOK, OpenFile(rootDir, "chain_get_table_by_scope.json")), + ) +} + +func OpenFile(rootdir, filename string) string { + body, err := os.ReadFile(filepath.Join(rootdir, "testdata", "mock_server", filename)) + if err != nil { + panic(err) + } + + return string(body) +} + +func DeactivateMockServer() { + httpmock.DeactivateAndReset() +} diff --git a/types.go b/types.go index 20ff7558..989d64be 100644 --- a/types.go +++ b/types.go @@ -83,6 +83,9 @@ type VoterInfo struct { LastVoteWeight Float64 `json:"last_vote_weight"` ProxiedVoteWeight Float64 `json:"proxied_vote_weight"` IsProxy byte `json:"is_proxy"` + Flags1 int64 `json:"flags1"` // added since EOSIO/Leap v2.0 + Reserved2 int64 `json:"reserved2"` // added since EOSIO/Leap v2.0 + Reserved3 Asset `json:"reserved3"` // added since EOSIO/Leap v2.0 } type RefundRequest struct { @@ -610,10 +613,30 @@ func (a Asset) MarshalJSON() (data []byte, err error) { return json.Marshal(a.String()) } +// RexInfo was added since EOSIO/Leap v2.0 +type RexInfo struct { + Version uint32 `json:"version"` + Owner AccountName `json:"owner"` + VoteStake Asset `json:"vote_stake"` + RexBalance Asset `json:"rex_balance"` + MaturedRex uint64 `json:"matured_rex"` + + // TODO: set the exact type + RexMaturities []interface{} `json:"rex_maturities"` +} + +// SimpleAction was added since EOSIO/Leap v2.0 +// chain_plugin/chain_plugin.hpp::eosio::chain_apis::linked_action +type LinkedAction struct { + Account AccountName `json:"account"` + Action ActionName `json:"action,omitempty"` +} + type Permission struct { - PermName string `json:"perm_name"` - Parent string `json:"parent"` - RequiredAuth Authority `json:"required_auth"` + PermName string `json:"perm_name"` + Parent string `json:"parent"` + RequiredAuth Authority `json:"required_auth"` + LinkedActions []LinkedAction `json:"linked_actions"` // added since EOSIO/Leap v2.0, TODO: find the better type from the current implementation } type PermissionLevel struct { @@ -958,6 +981,21 @@ func (f TimePointSec) AsTime() time.Time { return time.Unix(int64(f), 0).UTC() } +// nowadays, big number (especially float) represents as string type in JSON, and parsing it when unmarshaling. +// but it would be a breaking change against the previous implementation - marshal into the number type +// the SDK needs to follow the standard, but does not make breaking change +// between the collision point, we thought that mode setter would be the best solution for today +// default: number type - as the previous +var bigIntMarshalToString = false + +func SetFloat64MarshalingTypeIntoString() { + bigIntMarshalToString = true +} + +func SetFloat64MarshalingTypeIntoNumber() { + bigIntMarshalToString = false +} + type JSONFloat64 = Float64 type Float64 float64 @@ -972,7 +1010,12 @@ func (f *Float64) MarshalJSON() ([]byte, error) { return []byte("\"nan\""), nil default: } - return json.Marshal(float64(*f)) + + if bigIntMarshalToString { + return json.Marshal(fmt.Sprintf("%f", float64(*f))) + } else { + return json.Marshal(float64(*f)) + } } func (f *Float64) UnmarshalJSON(data []byte) error { From ef24b9511732b1f873cef6cf76f5c54fa4e6f5a5 Mon Sep 17 00:00:00 2001 From: psy2848048 Date: Thu, 1 Dec 2022 05:37:41 +0900 Subject: [PATCH 29/41] REST API aligning 2 - get_block, get_abi, get_currency_balance, get_currency_stats (#195) * test: added api mock test & get_info * fix: revised response type of get_info * fix: aligning the response of get_account - some type fixes of BlockTimestamp - Experimental type added: Int, Decimal - Response aligning of get_account API * test: changed expected data according to the changed blocktimestamp spec * fix: align comments of the member of types' modification into the current style * feat: added get block API test & parameter calibration * test: added a test - get ABI - checked the response struct and modified the mock response * test: added test - gret currency balance - no diff in types - just added a test * test: added test - get currency stats - Struct is slightly different but no problem to use - just added a test * fix: delete marshaling logic * fix: changed types of transaction of PackedTx --- actions.go | 4 +- api_test.go | 92 + p2ptypes.go | 11 +- responses.go | 2 +- testdata/mock_server/chain_get_abi.json | 12 +- testdata/mock_server/chain_get_block.json | 5799 +-------------------- transaction.go | 2 + 7 files changed, 133 insertions(+), 5789 deletions(-) diff --git a/actions.go b/actions.go index 2c9f9ae3..4d91eeab 100644 --- a/actions.go +++ b/actions.go @@ -79,8 +79,8 @@ func (a *ActionData) SetToServer(toServer bool) { a.toServer = toServer } -// jsonActionToServer represents what /v1/chain/push_transaction -// expects, which isn't allllways the same everywhere. +// jsonActionToServer represents what /v1/chain/push_transaction +// expects, which isn't allllways the same everywhere. type jsonActionToServer struct { Account AccountName `json:"account"` Name ActionName `json:"name"` diff --git a/api_test.go b/api_test.go index 6418af1c..dcaa7b49 100644 --- a/api_test.go +++ b/api_test.go @@ -26,6 +26,56 @@ func TestAPIGetAccount(t *testing.T) { assert.JSONEq(t, expectedJSON, string(actualJSON)) } +func TestAPIGetBlockByNum(t *testing.T) { + block, err := api.GetBlockByNum(context.Background(), 273283700) + assert.NoError(t, err) + + assert.Equal(t, block.ID.String(), "1049fa74670c8d45c83cfd6b54683edb186b5205bf84c66141afe55765499f7c") + assert.Equal(t, block.RefBlockPrefix, uint32(1811758280)) + assert.Equal(t, block.Timestamp.Format("2006-01-02T15:04:05"), "2022-10-15T07:13:42") + assert.Equal(t, block.Producer.String(), "eosiosg11111") + assert.Equal(t, block.Confirmed, uint16(240)) + assert.Equal(t, block.Previous.String(), "1049fa737265f6c2d46428c2ee89cd5be29dc2b9a0615afc6af4c8df6ffa7845") + assert.Equal(t, block.TransactionMRoot.String(), "f7cadbcc33efad01eacc153d2013ce9e50fe4f0d664df657a354a3d06ac569ab") + assert.Equal(t, block.ActionMRoot.String(), "0378d11e50e8ee4c8673a06ece81933d672ff0578aec743aad4f6962309dca58") + assert.Equal(t, block.ScheduleVersion, uint32(2043)) + assert.Nil(t, block.NewProducersV1) + assert.Equal(t, block.ProducerSignature.String(), "SIG_K1_KbbKB47LguWUfhYfqcZPNTR6Nd8hgLV4CfF1GSxLf7TBqwaFDbbXdMvDDQKhp5186HSWz1MgmNt2qPHVWdY6KAkZaDbEab") + + assert.Equal(t, len(block.Transactions), 1) + + tx := block.Transactions[0] + + assert.Equal(t, tx.Status.String(), "executed") + assert.Equal(t, tx.CPUUsageMicroSeconds, uint32(389)) + assert.Equal(t, tx.NetUsageWords, Varuint32(33)) + assert.Equal(t, tx.Transaction.ID.String(), "3b842c3b6eb260028a51bc9c4b1cf9587b393a0607b45dafd7c5279c200c3e24") + assert.Equal(t, len(tx.Transaction.Packed.Signatures), 2) + assert.Equal(t, tx.Transaction.Packed.Signatures[0].String(), "SIG_K1_KjUMXRq5vgxs9xenpjCR1PBP5vNQNndVD5HyXRtqjrQL4h7NRaS6iVhRXtdst6J4fYxnhbbfnbJsXoWiPugoVU8DZBoG2o") + assert.Equal(t, tx.Transaction.Packed.Compression.String(), "none") + assert.Equal(t, tx.Transaction.Packed.ContextFreeData, []string{}) + assert.Equal(t, tx.Transaction.Packed.PackedTransaction.String(), + "ba5d4a6360fae072f0530000000001a026a59a4d8331550080cae6aa4addd402a02bd21551cda6c100000000a8ed3232e07ba59a4d83315500000000a8ed3232880140aeda34d25cfd450000c8d7645cbb920000000000000000896f0000001f2819b684a6cff1e72d17a0e050a3349797dea09cbaef132f241790f2c73d49b9633cb6a595b7cd16378ded6323dbc131456cdd7ced6b287ad93a24bc1945771a10000000000000000000000000000000000000000000000000000000000000000000000000000000000000") + assert.Equal(t, tx.Transaction.Packed.Transaction.Expiration.Format("2006-01-02T15:04:05"), "2022-10-15T07:14:02") + assert.Equal(t, tx.Transaction.Packed.Transaction.RefBlockNum, uint16(64096)) + assert.Equal(t, tx.Transaction.Packed.Transaction.RefBlockPrefix, uint32(1408266976)) + assert.Equal(t, tx.Transaction.Packed.Transaction.MaxNetUsageWords, Varuint32(0)) + assert.Equal(t, tx.Transaction.Packed.Transaction.MaxCPUUsageMS, uint8(0)) + assert.Equal(t, tx.Transaction.Packed.Transaction.DelaySec, Varuint32(0)) + assert.Equal(t, tx.Transaction.Packed.Transaction.ContextFreeActions, []*Action{}) + + assert.Equal(t, len(tx.Transaction.Packed.Transaction.Actions), 1) + + action := tx.Transaction.Packed.Transaction.Actions[0] + assert.Equal(t, action.Account.String(), "eossanguoone") + assert.Equal(t, action.Name.String(), "unioperate") + assert.Equal(t, action.Authorization[0].Actor.String(), "sanguocpucpu") + assert.Equal(t, action.Authorization[0].Permission.String(), "active") + + // That's the main reason why I assert strictly, but no fancy way to check.. + assert.NotNil(t, action.Data) +} + func TestAPIGetInfo(t *testing.T) { info, err := api.GetInfo(context.Background()) assert.NoError(t, err) @@ -38,6 +88,48 @@ func TestAPIGetInfo(t *testing.T) { assert.JSONEq(t, expectedJSON, string(actualJSON)) } +func TestAPIGetAbi(t *testing.T) { + abiResp, err := api.GetABI(context.Background(), "tippedtipped") + assert.NoError(t, err) + + actualJSON, err := json.MarshalIndent(abiResp, "", " ") + assert.NoError(t, err) + + expectedJSON := mockserver.OpenFile(".", "chain_get_abi.json") + + assert.JSONEq(t, expectedJSON, string(actualJSON)) +} + +func TestAPIGetCurrencyBalance(t *testing.T) { + balanceResp, err := api.GetCurrencyBalance(context.Background(), "tippedtipped", "CET", "eosiochaince") + assert.NoError(t, err) + + actualJSON, err := json.Marshal(balanceResp) + assert.NoError(t, err) + + expectedJSON := mockserver.OpenFile(".", "chain_get_currency_balance.json") + + assert.JSONEq(t, expectedJSON, string(actualJSON)) +} + +func TestAPIGetCurrencyStats(t *testing.T) { + currencyStatResp, err := api.GetCurrencyStats(context.Background(), "eosiochaince", "CET") + assert.NoError(t, err) + + actualJSON, err := json.Marshal(currencyStatResp) + assert.NoError(t, err) + + expectedIntermediateJSON := mockserver.OpenFile(".", "chain_get_currency_stats.json") + cropped := new(map[string]interface{}) + err = json.Unmarshal([]byte(expectedIntermediateJSON), cropped) + assert.NoError(t, err) + + expectedJSON, err := json.Marshal((*cropped)["CET"]) + assert.NoError(t, err) + + assert.JSONEq(t, string(expectedJSON), string(actualJSON)) +} + func TestMain(m *testing.M) { setUp() code := m.Run() diff --git a/p2ptypes.go b/p2ptypes.go index 51d1754a..f7923cc0 100644 --- a/p2ptypes.go +++ b/p2ptypes.go @@ -269,11 +269,12 @@ func (c *PairAccountNameBlockNum) UnmarshalBinary(decoder *Decoder) error { } // FIXME: This structure supports both EOS 1.8.x as well as EOS 2.0.x. However, the binary encoding -// format does only support the 2.0.x version for now. It's not clear how we would do thing -// to propagate the information that encoding/decoding of binary should be performed with one -// variant or the other. When this comment was added, the binary encoding/decoding was not -// working for either version, so supporting EOS 2.0.x only is a fair improvements. Will need -// to understand better if this is required for other chains for example. +// +// format does only support the 2.0.x version for now. It's not clear how we would do thing +// to propagate the information that encoding/decoding of binary should be performed with one +// variant or the other. When this comment was added, the binary encoding/decoding was not +// working for either version, so supporting EOS 2.0.x only is a fair improvements. Will need +// to understand better if this is required for other chains for example. type BlockState struct { BlockNum uint32 `json:"block_num"` DPoSProposedIrreversibleBlockNum uint32 `json:"dpos_proposed_irreversible_blocknum"` diff --git a/responses.go b/responses.go index c7852321..ae37c269 100644 --- a/responses.go +++ b/responses.go @@ -381,7 +381,7 @@ type PushTransactionFullResp struct { type TransactionProcessed struct { Status string `json:"status"` ID Checksum256 `json:"id"` - BlockNum uint32 `json:"block_num"` + BlockNum uint32 `json:"block_num"` ActionTraces []Trace `json:"action_traces"` DeferredTransactions []string `json:"deferred_transactions"` // that's not right... dig to find what's there.. } diff --git a/testdata/mock_server/chain_get_abi.json b/testdata/mock_server/chain_get_abi.json index 50fb53e8..f0f714f3 100644 --- a/testdata/mock_server/chain_get_abi.json +++ b/testdata/mock_server/chain_get_abi.json @@ -2,7 +2,6 @@ "account_name": "tippedtipped", "abi": { "version": "eosio::abi/1.1", - "types": [], "structs": [ { "name": "account", @@ -234,15 +233,8 @@ { "name": "accounts", "index_type": "i64", - "key_names": [], - "key_types": [], "type": "account" } - ], - "ricardian_clauses": [], - "error_messages": [], - "abi_extensions": [], - "variants": [], - "action_results": [] + ] } -} \ No newline at end of file +} diff --git a/testdata/mock_server/chain_get_block.json b/testdata/mock_server/chain_get_block.json index 1e0057a7..8cbbeaef 100644 --- a/testdata/mock_server/chain_get_block.json +++ b/testdata/mock_server/chain_get_block.json @@ -1,5 +1,5 @@ { - "timestamp": "2022-10-15T07:13:42.000", + "timestamp": "2022-10-15T07:13:42", "producer": "eosiosg11111", "confirmed": 240, "previous": "1049fa737265f6c2d46428c2ee89cd5be29dc2b9a0615afc6af4c8df6ffa7845", @@ -11,5800 +11,57 @@ "transactions": [ { "status": "executed", - "cpu_usage_us": 129, - "net_usage_words": 15, - "trx": { - "id": "7a7a30e29098bd44efae9d3f7dbc0d870d479e65ef084c8b1ffe7c24a8bcae7a", - "signatures": [ - "SIG_K1_K8r5on6KEV6qbFhzZY7Lk64BQUG8rj9B1fr1jPRvaSTgyhdoWRBTqf7jEjMiZjfKQBqMmB7nmms3xKhphoHMgC6M8mycE7" - ], - "compression": "none", - "packed_context_free_data": "", - "context_free_data": [], - "packed_trx": "345e4a6320fa1a7d096a0000000001a09899fe369cbe6a0000000000a0a6930180b19a512f852e5d00000000a8ed32321880b19a512f852e5dc5da030000000000491f06000000000000", - "transaction": { - "expiration": "2022-10-15T07:16:04", - "ref_block_num": 64032, - "ref_block_prefix": 1779006746, - "max_net_usage_words": 0, - "max_cpu_usage_ms": 0, - "delay_sec": 0, - "context_free_actions": [], - "actions": [ - { - "account": "hezdshrynage", - "name": "mine", - "authorization": [ - { - "actor": "forcefulness", - "permission": "active" - } - ], - "data": { - "miner": "forcefulness", - "nonce": 252613, - "entry": 401225 - }, - "hex_data": "80b19a512f852e5dc5da030000000000491f060000000000" - } - ] - } - } - }, - { - "status": "executed", - "cpu_usage_us": 493, - "net_usage_words": 14, - "trx": { - "id": "768fc6482ee088096338d61aec1185b7266ee6a87d5f92d45604110601bdf0c5", - "signatures": [ - "SIG_K1_KZY6o5zZVwYNv1cCk5t8ycbVEebeZhP4sdiEdHZpNNt7SHkkmW1egSmweQwx4gCVY1ZpZ8x6ZRQu2FGwZxM3BdN7hqpPuQ" - ], - "compression": "none", - "packed_context_free_data": "", - "context_free_data": [], - "packed_trx": "ae5d4a6331fa7afdaf160000000001000000a063d0b0ae0000000000a0a6930160249d46ea69a49b00000000a8ed32321060249d46ea69a49bc12500000000000000", - "transaction": { - "expiration": "2022-10-15T07:13:50", - "ref_block_num": 64049, - "ref_block_prefix": 380632442, - "max_net_usage_words": 0, - "max_cpu_usage_ms": 0, - "delay_sec": 0, - "context_free_actions": [], - "actions": [ - { - "account": "push.sx", - "name": "mine", - "authorization": [ - { - "actor": "nimanumanoma", - "permission": "active" - } - ], - "data": { - "executor": "nimanumanoma", - "nonce": 9665 - }, - "hex_data": "60249d46ea69a49bc125000000000000" - } - ] - } - } - }, - { - "status": "executed", - "cpu_usage_us": 550, - "net_usage_words": 31, - "trx": { - "id": "0e3ef292c2a9a1d7ea44bf8a4cf5ab6f2810071c754867bd42f55b1c90bdebe9", - "signatures": [ - "SIG_K1_K7LvXvRgNj3uFSa9kdWZTkDvKKJLg6mYLsQUYutaW6RPaPvpZiLQXRjEyUSmvmXRhQ4T5YvoNpESfioajrSheawUB3d2mv", - "SIG_K1_KbXHGbbyd2UQqju6Vv6hf62ZK7U5LArPKX7UE5uWqXgUMQant4GUZhrBdGnZLv52AMGK1GoJpNyiAYjcyUwC36bki1FekM" - ], - "compression": "none", - "packed_context_free_data": "", - "context_free_data": [], - "packed_trx": "cf5d4a634efa1aa530850000000002a0649a2656ed4dac0000d0155dbabca901a0649a2656ed4dac0000d0155dbabca90890366a749791e489a0649a2656ed4dac000000000000c2980190366a749791e48900000000a46962d56190366a749791e4890b634d1bebd54700001d4d1b7fc64700005c4d1b07d6470000564d1bfcd5470000cd571b15c2470000cd571b10c24700005c4d1becd5470000534d1bfcd54700002d4d1b05d2470000294d1bfed1470000644d1bb6d147000000", - "transaction": { - "expiration": "2022-10-15T07:14:23", - "ref_block_num": 64078, - "ref_block_prefix": 2234557722, - "max_net_usage_words": 0, - "max_cpu_usage_ms": 0, - "delay_sec": 0, - "context_free_actions": [], - "actions": [ - { - "account": "playuplandme", - "name": "payforcpu", - "authorization": [ - { - "actor": "playuplandme", - "permission": "payforcpu" - } - ], - "data": { - "user_name": "lbmd35vohcvd" - }, - "hex_data": "90366a749791e489" - }, - { - "account": "playuplandme", - "name": "n31", - "authorization": [ - { - "actor": "lbmd35vohcvd", - "permission": "upland" - } - ], - "data": { - "a54": "lbmd35vohcvd", - "p55": [ - "78984098041187", - "78917861592349", - "78984567803228", - "78984383253846", - "78898903341005", - "78898819454925", - "78984114818396", - "78984383253843", - "78967354379565", - "78967236939049", - "78966028979556" - ] - }, - "hex_data": "90366a749791e4890b634d1bebd54700001d4d1b7fc64700005c4d1b07d6470000564d1bfcd5470000cd571b15c2470000cd571b10c24700005c4d1becd5470000534d1bfcd54700002d4d1b05d2470000294d1bfed1470000644d1bb6d1470000" - } - ] - } - } - }, - { - "status": "executed", - "cpu_usage_us": 120, - "net_usage_words": 15, - "trx": { - "id": "188765364a7d637c56455a1114c041250d655dc04a7cf4f03563c53623d31a7d", - "signatures": [ - "SIG_K1_K2DwnnaR9oHnMFP3zbJ5FRaE65x5d18gr5hnXE6kwuSt5DQm4smhapSn3rJFS6y2wFM9MhpmM4X37SEajSnAg8FWKEgChJ" - ], - "compression": "none", - "packed_context_free_data": "", - "context_free_data": [], - "packed_trx": "b85d4a6317f94cac290f00000000019091b97952a412d6201472b7aa6c52d50190d14449a9a512d600000000a8ed3232159091b97952a412d603454f53602700009a5d4a630000", - "transaction": { - "expiration": "2022-10-15T07:14:00", - "ref_block_num": 63767, - "ref_block_prefix": 254389324, - "max_net_usage_words": 0, - "max_cpu_usage_ms": 0, - "delay_sec": 0, - "context_free_actions": [], - "actions": [ - { - "account": "usdecontract", - "name": "updateprice2", - "authorization": [ - { - "actor": "usdefeedcnct", - "permission": "active" - } - ], - "data": { - "contract": "usdecontract", - "sym": "EOS", - "price": 10080, - "time": 1665818010, - "vid": [] - }, - "hex_data": "9091b97952a412d603454f53602700009a5d4a6300" - } - ] - } - } - }, - { - "status": "executed", - "cpu_usage_us": 311, + "cpu_usage_us": 389, "net_usage_words": 33, "trx": { - "id": "7d2a6715d9f1094ea7681a0538b670498197ea595450515b33650f055dbdbbc6", - "signatures": [ - "SIG_K1_Jz9JREXXf67gYohC8v3pvShPbzYevrmPeSY6oYYhdX2psoQSQon4r6G6SKjWGXi7UjY5tM2gJkpSB8rUkMizWFhp7G8kCp", - "SIG_K1_K6ftA7KniJqAZCxxFBuSoHTZMgYjFpt6QhM9fUQakYGW8AiuTBr9rvFd1C8Cfsax6PbvqQLuYF3duhFXYUvEDJtHgpdb9d", - "SIG_K1_K458TRhSXfR2MnNdGpp1MGb3CWXhXsBKtYRnq6KDUDnbDo35hFA8grC8rkBUPTdGAMZJdK21rU4pzSJe4H1Fvr1jnDNJ7y" - ], - "compression": "none", - "packed_context_free_data": "", - "context_free_data": [], - "packed_trx": "776b4a63f6f9c726d6870000000003a0649a2656ed4dac0000d0155dbabca901a0649a2656ed4dac0000d0155dbabca90820bee556237e5ded90113253419a7bd5000000572d3ccdcd0120bee556237e5ded00000000a46962d52120bee556237e5deda0649a2656ed4daca00f000000000000025550580000000000a0649a2656ed4dac000000000000029901a0649a2656ed4dac000000c067175dd62020bee556237e5dedcca22a816e470000a00f000000000000025550580000000000", - "transaction": { - "expiration": "2022-10-15T08:12:39", - "ref_block_num": 63990, - "ref_block_prefix": 2278958791, - "max_net_usage_words": 0, - "max_cpu_usage_ms": 0, - "delay_sec": 0, - "context_free_actions": [], - "actions": [ - { - "account": "playuplandme", - "name": "payforcpu", - "authorization": [ - { - "actor": "playuplandme", - "permission": "payforcpu" - } - ], - "data": { - "user_name": "xpirwcuqwqz2" - }, - "hex_data": "20bee556237e5ded" - }, - { - "account": "upxtokenacct", - "name": "transfer", - "authorization": [ - { - "actor": "xpirwcuqwqz2", - "permission": "upland" - } - ], - "data": { - "from": "xpirwcuqwqz2", - "to": "playuplandme", - "quantity": "40.00 UPX", - "memo": "" - }, - "hex_data": "20bee556237e5deda0649a2656ed4daca00f000000000000025550580000000000" - }, - { - "account": "playuplandme", - "name": "n41", - "authorization": [ - { - "actor": "playuplandme", - "permission": "utility" - } - ], - "data": { - "p51": "xpirwcuqwqz2", - "a45": "78539939029708", - "p54": "40.00 UPX" - }, - "hex_data": "20bee556237e5dedcca22a816e470000a00f0000000000000255505800000000" - } - ] - } - } - }, - { - "status": "executed", - "cpu_usage_us": 965, - "net_usage_words": 183, - "trx": { - "id": "83136704640235b96d19bb3aa805800754218f2ef242a6f2f52b1ada24b84219", + "id": "3b842c3b6eb260028a51bc9c4b1cf9587b393a0607b45dafd7c5279c200c3e24", "signatures": [ - "SIG_K1_KZc2twcuoJirnLbgAfrC16toARp57ZfsPso1Sk2qMkW6F87Cnn48Vb4bvWMLgfzG7hPUVv189pBqAVjNhqXycDDqTGczmj", - "SIG_K1_KmBNjXR49DbzZEGS2WJyEK3okB9CHSk3vgp7yFw4eDYQzeUnmH6jejddkL5vzw4bYT95wLkPTon3AwQfYrEAwrRzwBjqFc" + "SIG_K1_KjUMXRq5vgxs9xenpjCR1PBP5vNQNndVD5HyXRtqjrQL4h7NRaS6iVhRXtdst6J4fYxnhbbfnbJsXoWiPugoVU8DZBoG2o", + "SIG_K1_JyqVntuutnbKRQBNo5pmpYCbLqR5iEtoZ49VRTJJ5DH1DLVcMRnkWd5qG95BxgpWqV3nnFTKKyymP1BV4UNtxCU5Pydhh2" ], "compression": "none", "packed_context_free_data": "", "context_free_data": [], - "packed_trx": "b75d4a6359fa3c3f5b54000000001500dc5209a888cca500000000a86c52d5020000006ea904744500000000a8ed32327055ce4e1e8d315500000000a8ed3232107055ce4e1e8d3155010000000000000000dc5209a888cca500000000a86c52d5020000006ea904744500000000a8ed32327055ce4e1e8d315500000000a8ed3232107055ce4e1e8d3155020000000000000000dc5209a888cca500000000a86c52d5020000006ea904744500000000a8ed32327055ce4e1e8d315500000000a8ed3232107055ce4e1e8d3155030000000000000000dc5209a888cca500000000a86c52d5020000006ea904744500000000a8ed32327055ce4e1e8d315500000000a8ed3232107055ce4e1e8d3155040000000000000000dc5209a888cca500000000a86c52d5020000006ea904744500000000a8ed32327055ce4e1e8d315500000000a8ed3232107055ce4e1e8d3155050000000000000000dc5209a888cca500000000a86c52d5020000006ea904744500000000a8ed32327055ce4e1e8d315500000000a8ed3232107055ce4e1e8d3155060000000000000000dc5209a888cca500000000a86c52d5020000006ea904744500000000a8ed32327055ce4e1e8d315500000000a8ed3232107055ce4e1e8d3155070000000000000000dc5209a888cca500000000a86c52d5020000006ea904744500000000a8ed32327055ce4e1e8d315500000000a8ed3232107055ce4e1e8d3155080000000000000000dc5209a888cca500000000a86c52d5020000006ea904744500000000a8ed32327055ce4e1e8d315500000000a8ed3232107055ce4e1e8d3155090000000000000000dc5209a888cca500000000a86c52d5020000006ea904744500000000a8ed32327055ce4e1e8d315500000000a8ed3232107055ce4e1e8d31550a0000000000000000dc5209a888cca500000000a86c52d5020000006ea904744500000000a8ed32327055ce4e1e8d315500000000a8ed3232107055ce4e1e8d31550b0000000000000000dc5209a888cca500000000a86c52d5020000006ea904744500000000a8ed32327055ce4e1e8d315500000000a8ed3232107055ce4e1e8d31550c0000000000000000dc5209a888cca500000000a86c52d5020000006ea904744500000000a8ed32327055ce4e1e8d315500000000a8ed3232107055ce4e1e8d31550d0000000000000000dc5209a888cca500000000a86c52d5020000006ea904744500000000a8ed32327055ce4e1e8d315500000000a8ed3232107055ce4e1e8d31550e0000000000000000dc5209a888cca500000000a86c52d5020000006ea904744500000000a8ed32327055ce4e1e8d315500000000a8ed3232107055ce4e1e8d31550f0000000000000000dc5209a888cca500000000a86c52d5020000006ea904744500000000a8ed32327055ce4e1e8d315500000000a8ed3232107055ce4e1e8d3155100000000000000000dc5209a888cca500000000a86c52d5020000006ea904744500000000a8ed32327055ce4e1e8d315500000000a8ed3232107055ce4e1e8d3155110000000000000000dc5209a888cca500000000a86c52d5020000006ea904744500000000a8ed32327055ce4e1e8d315500000000a8ed3232107055ce4e1e8d3155120000000000000000dc5209a888cca500000000a86c52d5020000006ea904744500000000a8ed32327055ce4e1e8d315500000000a8ed3232107055ce4e1e8d3155130000000000000000dc5209a888cca500000000a86c52d5020000006ea904744500000000a8ed32327055ce4e1e8d315500000000a8ed3232107055ce4e1e8d3155140000000000000000dc5209a888cca500000000a86c52d5020000006ea904744500000000a8ed32327055ce4e1e8d315500000000a8ed3232107055ce4e1e8d3155150000000000000000", + "packed_trx": "ba5d4a6360fae072f0530000000001a026a59a4d8331550080cae6aa4addd402a02bd21551cda6c100000000a8ed3232e07ba59a4d83315500000000a8ed3232880140aeda34d25cfd450000c8d7645cbb920000000000000000896f0000001f2819b684a6cff1e72d17a0e050a3349797dea09cbaef132f241790f2c73d49b9633cb6a595b7cd16378ded6323dbc131456cdd7ced6b287ad93a24bc1945771a10000000000000000000000000000000000000000000000000000000000000000000000000000000000000", "transaction": { - "expiration": "2022-10-15T07:13:59", - "ref_block_num": 64089, - "ref_block_prefix": 1415266108, + "expiration": "2022-10-15T07:14:02", + "ref_block_num": 64096, + "ref_block_prefix": 1408266976, "max_net_usage_words": 0, "max_cpu_usage_ms": 0, "delay_sec": 0, "context_free_actions": [], "actions": [ { - "account": "oracle.defi", - "name": "update", - "authorization": [ - { - "actor": "cpu.defi", - "permission": "active" - }, - { - "actor": "eossubmitter", - "permission": "active" - } - ], - "data": { - "submitter": "eossubmitter", - "price_id": 1 - }, - "hex_data": "7055ce4e1e8d31550100000000000000" - }, - { - "account": "oracle.defi", - "name": "update", - "authorization": [ - { - "actor": "cpu.defi", - "permission": "active" - }, - { - "actor": "eossubmitter", - "permission": "active" - } - ], - "data": { - "submitter": "eossubmitter", - "price_id": 2 - }, - "hex_data": "7055ce4e1e8d31550200000000000000" - }, - { - "account": "oracle.defi", - "name": "update", - "authorization": [ - { - "actor": "cpu.defi", - "permission": "active" - }, - { - "actor": "eossubmitter", - "permission": "active" - } - ], - "data": { - "submitter": "eossubmitter", - "price_id": 3 - }, - "hex_data": "7055ce4e1e8d31550300000000000000" - }, - { - "account": "oracle.defi", - "name": "update", - "authorization": [ - { - "actor": "cpu.defi", - "permission": "active" - }, - { - "actor": "eossubmitter", - "permission": "active" - } - ], - "data": { - "submitter": "eossubmitter", - "price_id": 4 - }, - "hex_data": "7055ce4e1e8d31550400000000000000" - }, - { - "account": "oracle.defi", - "name": "update", - "authorization": [ - { - "actor": "cpu.defi", - "permission": "active" - }, - { - "actor": "eossubmitter", - "permission": "active" - } - ], - "data": { - "submitter": "eossubmitter", - "price_id": 5 - }, - "hex_data": "7055ce4e1e8d31550500000000000000" - }, - { - "account": "oracle.defi", - "name": "update", - "authorization": [ - { - "actor": "cpu.defi", - "permission": "active" - }, - { - "actor": "eossubmitter", - "permission": "active" - } - ], - "data": { - "submitter": "eossubmitter", - "price_id": 6 - }, - "hex_data": "7055ce4e1e8d31550600000000000000" - }, - { - "account": "oracle.defi", - "name": "update", - "authorization": [ - { - "actor": "cpu.defi", - "permission": "active" - }, - { - "actor": "eossubmitter", - "permission": "active" - } - ], - "data": { - "submitter": "eossubmitter", - "price_id": 7 - }, - "hex_data": "7055ce4e1e8d31550700000000000000" - }, - { - "account": "oracle.defi", - "name": "update", + "account": "eossanguoone", + "name": "unioperate", "authorization": [ { - "actor": "cpu.defi", + "actor": "sanguocpucpu", "permission": "active" }, { - "actor": "eossubmitter", + "actor": "eossanguopxy", "permission": "active" } ], "data": { - "submitter": "eossubmitter", - "price_id": 8 + "from": "cryptolover4", + "action": "mexpstart", + "block": 0, + "checksum": 0, + "nonce": 28553, + "psig": "SIG_K1_JzW4U8BsfM38WT9eWKGJCmZ5GqFRyNbujVWv4TsPotHHQBdRfaGUr3CrpR8NxJk8kFr5BNmrWaMocRopVcFCizeghizvsa", + "u1": 16, + "u2": 0, + "u3": 0, + "u4": 0, + "s": "", + "a": "0 ", + "n": "", + "v": [] }, - "hex_data": "7055ce4e1e8d31550800000000000000" - }, - { - "account": "oracle.defi", - "name": "update", - "authorization": [ - { - "actor": "cpu.defi", - "permission": "active" - }, - { - "actor": "eossubmitter", - "permission": "active" - } - ], - "data": { - "submitter": "eossubmitter", - "price_id": 9 - }, - "hex_data": "7055ce4e1e8d31550900000000000000" - }, - { - "account": "oracle.defi", - "name": "update", - "authorization": [ - { - "actor": "cpu.defi", - "permission": "active" - }, - { - "actor": "eossubmitter", - "permission": "active" - } - ], - "data": { - "submitter": "eossubmitter", - "price_id": 10 - }, - "hex_data": "7055ce4e1e8d31550a00000000000000" - }, - { - "account": "oracle.defi", - "name": "update", - "authorization": [ - { - "actor": "cpu.defi", - "permission": "active" - }, - { - "actor": "eossubmitter", - "permission": "active" - } - ], - "data": { - "submitter": "eossubmitter", - "price_id": 11 - }, - "hex_data": "7055ce4e1e8d31550b00000000000000" - }, - { - "account": "oracle.defi", - "name": "update", - "authorization": [ - { - "actor": "cpu.defi", - "permission": "active" - }, - { - "actor": "eossubmitter", - "permission": "active" - } - ], - "data": { - "submitter": "eossubmitter", - "price_id": 12 - }, - "hex_data": "7055ce4e1e8d31550c00000000000000" - }, - { - "account": "oracle.defi", - "name": "update", - "authorization": [ - { - "actor": "cpu.defi", - "permission": "active" - }, - { - "actor": "eossubmitter", - "permission": "active" - } - ], - "data": { - "submitter": "eossubmitter", - "price_id": 13 - }, - "hex_data": "7055ce4e1e8d31550d00000000000000" - }, - { - "account": "oracle.defi", - "name": "update", - "authorization": [ - { - "actor": "cpu.defi", - "permission": "active" - }, - { - "actor": "eossubmitter", - "permission": "active" - } - ], - "data": { - "submitter": "eossubmitter", - "price_id": 14 - }, - "hex_data": "7055ce4e1e8d31550e00000000000000" - }, - { - "account": "oracle.defi", - "name": "update", - "authorization": [ - { - "actor": "cpu.defi", - "permission": "active" - }, - { - "actor": "eossubmitter", - "permission": "active" - } - ], - "data": { - "submitter": "eossubmitter", - "price_id": 15 - }, - "hex_data": "7055ce4e1e8d31550f00000000000000" - }, - { - "account": "oracle.defi", - "name": "update", - "authorization": [ - { - "actor": "cpu.defi", - "permission": "active" - }, - { - "actor": "eossubmitter", - "permission": "active" - } - ], - "data": { - "submitter": "eossubmitter", - "price_id": 16 - }, - "hex_data": "7055ce4e1e8d31551000000000000000" - }, - { - "account": "oracle.defi", - "name": "update", - "authorization": [ - { - "actor": "cpu.defi", - "permission": "active" - }, - { - "actor": "eossubmitter", - "permission": "active" - } - ], - "data": { - "submitter": "eossubmitter", - "price_id": 17 - }, - "hex_data": "7055ce4e1e8d31551100000000000000" - }, - { - "account": "oracle.defi", - "name": "update", - "authorization": [ - { - "actor": "cpu.defi", - "permission": "active" - }, - { - "actor": "eossubmitter", - "permission": "active" - } - ], - "data": { - "submitter": "eossubmitter", - "price_id": 18 - }, - "hex_data": "7055ce4e1e8d31551200000000000000" - }, - { - "account": "oracle.defi", - "name": "update", - "authorization": [ - { - "actor": "cpu.defi", - "permission": "active" - }, - { - "actor": "eossubmitter", - "permission": "active" - } - ], - "data": { - "submitter": "eossubmitter", - "price_id": 19 - }, - "hex_data": "7055ce4e1e8d31551300000000000000" - }, - { - "account": "oracle.defi", - "name": "update", - "authorization": [ - { - "actor": "cpu.defi", - "permission": "active" - }, - { - "actor": "eossubmitter", - "permission": "active" - } - ], - "data": { - "submitter": "eossubmitter", - "price_id": 20 - }, - "hex_data": "7055ce4e1e8d31551400000000000000" - }, - { - "account": "oracle.defi", - "name": "update", - "authorization": [ - { - "actor": "cpu.defi", - "permission": "active" - }, - { - "actor": "eossubmitter", - "permission": "active" - } - ], - "data": { - "submitter": "eossubmitter", - "price_id": 21 - }, - "hex_data": "7055ce4e1e8d31551500000000000000" - } - ] - } - } - }, - { - "status": "executed", - "cpu_usage_us": 123, - "net_usage_words": 17, - "trx": { - "id": "31bc138a4615a392239d3cd79c36a536c6ad4d93db48a01f6785a82c8d57661f", - "signatures": [ - "SIG_K1_JwDcVmyohWczr7gucTFYqJ9tHhzD7A8L8Nt4TtPeqRi5ew9qrNHmMkDDekD7nSA9CfYio2YPjojoPSGZN3FhDfxcCdwYNi" - ], - "compression": "none", - "packed_context_free_data": "", - "context_free_data": [], - "packed_trx": "6f6b4a63e6f9646b161c000000000100a6823403ea3055000000572d3ccdcd0180a9c2d3dc2c294200000000a8ed32322b80a9c2d3dc2c294280a9ca344d4791863cc904000000000004454f53000000000a3138383634353930303600", - "transaction": { - "expiration": "2022-10-15T08:12:31", - "ref_block_num": 63974, - "ref_block_prefix": 471231332, - "max_net_usage_words": 0, - "max_cpu_usage_ms": 0, - "delay_sec": 0, - "context_free_actions": [], - "actions": [ - { - "account": "eosio.token", - "name": "transfer", - "authorization": [ - { - "actor": "ccomtranseos", - "permission": "active" - } - ], - "data": { - "from": "ccomtranseos", - "to": "kucoindoteos", - "quantity": "31.3660 EOS", - "memo": "1886459006" - }, - "hex_data": "80a9c2d3dc2c294280a9ca344d4791863cc904000000000004454f53000000000a31383836343539303036" - } - ] - } - } - }, - { - "status": "executed", - "cpu_usage_us": 198, - "net_usage_words": 21, - "trx": { - "id": "7ac2feaec689510e363da2086c1177ed0da05e7da0c9599fdfee771bcca1e760", - "signatures": [ - "SIG_K1_K4e5yBcGgU72oT41oy8NJe935psRKPfEQWv2gTvCJoCChuLBCZdzTDPidwpnMKt2p2Kzd74QDX4J6KKEPFuUfVySfFbUdk", - "SIG_K1_K3neqocQ3Wy2Ye58BJoVnU3Drj6Qs9eP967cybkBtiUJDHhh96SxXFXWThV3vS75ndRXcmNJpqBs4d8hZBGbBSdAdsXYtj" - ], - "compression": "none", - "packed_context_free_data": "", - "context_free_data": [], - "packed_trx": "d15d4a6351fa79a704780000000002a0649a2656ed4dac0000d0155dbabca901a0649a2656ed4dac0000d0155dbabca908c0213b0952e7c84ca0649a2656ed4dac000000000000c29801c0213b0952e7c84c00000000a46962d511c0213b0952e7c84c015c822d7b034a000000", - "transaction": { - "expiration": "2022-10-15T07:14:25", - "ref_block_num": 64081, - "ref_block_prefix": 2013570937, - "max_net_usage_words": 0, - "max_cpu_usage_ms": 0, - "delay_sec": 0, - "context_free_actions": [], - "actions": [ - { - "account": "playuplandme", - "name": "payforcpu", - "authorization": [ - { - "actor": "playuplandme", - "permission": "payforcpu" - } - ], - "data": { - "user_name": "dn4iiokdbgkw" - }, - "hex_data": "c0213b0952e7c84c" - }, - { - "account": "playuplandme", - "name": "n31", - "authorization": [ - { - "actor": "dn4iiokdbgkw", - "permission": "upland" - } - ], - "data": { - "a54": "dn4iiokdbgkw", - "p55": [ - "81378811937372" - ] - }, - "hex_data": "c0213b0952e7c84c015c822d7b034a0000" - } - ] - } - } - }, - { - "status": "executed", - "cpu_usage_us": 177, - "net_usage_words": 16, - "trx": { - "id": "f1b9d33b8b01c1a79cd6a1e940847d26fac8e4e782f5fd379095370573206755", - "signatures": [ - "SIG_K1_Kh4aEmQkFtzhJAq7kSXv34ZQV9GHS9uiRXYza4mizXdmdy7DerNLxikgXoPXSp4ggUXaiSynP9sbrguJ3pgFndTJ5Keqdb" - ], - "compression": "none", - "packed_context_free_data": "", - "context_free_data": [], - "packed_trx": "b45d4a6353fa6accc7160000000001704ca44865338d54000000000080545701704ca44865338d54000000000080545720709011763b9dd4c190316d4c65338d541d10000000000000044d4e580000000000", - "transaction": { - "expiration": "2022-10-15T07:13:56", - "ref_block_num": 64083, - "ref_block_prefix": 382192746, - "max_net_usage_words": 0, - "max_cpu_usage_ms": 0, - "delay_sec": 0, - "context_free_actions": [], - "actions": [ - { - "account": "emanatecolab", - "name": "exec", - "authorization": [ - { - "actor": "emanatecolab", - "permission": "exec" - } - ], - "data": { - "proposal_name": "sbeduivq2acb", - "owner": "emanateghost", - "value": "0.4125 MNX" - }, - "hex_data": "709011763b9dd4c190316d4c65338d541d10000000000000044d4e5800000000" - } - ] - } - } - }, - { - "status": "executed", - "cpu_usage_us": 574, - "net_usage_words": 137, - "trx": { - "id": "10c85113b050a47846a59c81ac140aaa784693c521cb21c9f20cf552b2cdcc6f", - "signatures": [ - "SIG_K1_K8vHDXWxKBLWYN7fopAbUCAKqhpfACednZDVLHegUoGvzz9HZjbvxebV81meSxSQTKYGtieK4B6bCwmfUh6EnVLJyy2Kjk", - "SIG_K1_Kih1hdKP6CaEoqbCU2YyNEA69imZ7KVXzBGwoq9JXyHaGXUf9DrYnPfWn8eFgQCKCKpZ8Rkw9qEDUEntn9mVugnavzHsZq" - ], - "compression": "none", - "packed_context_free_data": "", - "context_free_data": [], - "packed_trx": "c55e4a635afaec55ba3a00000000010000009d51a02e4590b18b2a9beba24a020040cd204677320e00000000a8ed32320000009d51a02e4500000000a8ed3232c907084948540000000078cfc4060000000000d0c4060000000000d1c4060000000000d2c4060000000000d3c4060000000000d4c4060000000000d5c4060000000000d6c4060000000000d7c4060000000000d8c4060000000000d9c4060000000000dac4060000000000dbc4060000000000dcc4060000000000ddc4060000000000dec4060000000000dfc4060000000000e0c4060000000000e1c4060000000000e2c4060000000000e3c4060000000000e4c4060000000000e5c4060000000000e6c4060000000000e7c4060000000000e8c4060000000000e9c4060000000000eac4060000000000ebc4060000000000ecc4060000000000edc4060000000000eec4060000000000efc4060000000000f0c4060000000000f1c4060000000000f2c4060000000000f3c4060000000000f4c4060000000000f5c4060000000000f6c4060000000000f7c4060000000000f8c4060000000000f9c4060000000000fac4060000000000fbc4060000000000fcc4060000000000fdc4060000000000fec4060000000000ffc406000000000000c506000000000001c506000000000002c506000000000003c506000000000004c506000000000005c506000000000006c506000000000007c506000000000008c506000000000009c50600000000000ac50600000000000bc50600000000000cc50600000000000dc50600000000000ec50600000000000fc506000000000010c506000000000011c506000000000012c506000000000013c506000000000014c506000000000015c506000000000016c506000000000017c506000000000018c506000000000019c50600000000001ac50600000000001bc50600000000001cc50600000000001dc50600000000001ec50600000000001fc506000000000020c506000000000021c506000000000022c506000000000023c506000000000024c506000000000025c506000000000026c506000000000027c506000000000028c506000000000029c50600000000002ac50600000000002bc50600000000002cc50600000000002dc50600000000002ec50600000000002fc506000000000030c506000000000031c506000000000032c506000000000033c506000000000034c506000000000035c506000000000036c506000000000037c506000000000038c506000000000039c50600000000003ac50600000000003bc50600000000003cc50600000000003dc50600000000003ec50600000000003fc506000000000040c506000000000041c506000000000042c506000000000043c506000000000044c506000000000045c506000000000046c506000000000000", - "transaction": { - "expiration": "2022-10-15T07:18:29", - "ref_block_num": 64090, - "ref_block_prefix": 985290220, - "max_net_usage_words": 0, - "max_cpu_usage_ms": 0, - "delay_sec": 0, - "context_free_actions": [], - "actions": [ - { - "account": "core.ogx", - "name": "deliratelist", - "authorization": [ - { - "actor": "1stbill.tp", - "permission": "active" - }, - { - "actor": "core.ogx", - "permission": "active" - } - ], - "data": { - "sym": "8,IHT", - "round_list": [ - 443599, - 443600, - 443601, - 443602, - 443603, - 443604, - 443605, - 443606, - 443607, - 443608, - 443609, - 443610, - 443611, - 443612, - 443613, - 443614, - 443615, - 443616, - 443617, - 443618, - 443619, - 443620, - 443621, - 443622, - 443623, - 443624, - 443625, - 443626, - 443627, - 443628, - 443629, - 443630, - 443631, - 443632, - 443633, - 443634, - 443635, - 443636, - 443637, - 443638, - 443639, - 443640, - 443641, - 443642, - 443643, - 443644, - 443645, - 443646, - 443647, - 443648, - 443649, - 443650, - 443651, - 443652, - 443653, - 443654, - 443655, - 443656, - 443657, - 443658, - 443659, - 443660, - 443661, - 443662, - 443663, - 443664, - 443665, - 443666, - 443667, - 443668, - 443669, - 443670, - 443671, - 443672, - 443673, - 443674, - 443675, - 443676, - 443677, - 443678, - 443679, - 443680, - 443681, - 443682, - 443683, - 443684, - 443685, - 443686, - 443687, - 443688, - 443689, - 443690, - 443691, - 443692, - 443693, - 443694, - 443695, - 443696, - 443697, - 443698, - 443699, - 443700, - 443701, - 443702, - 443703, - 443704, - 443705, - 443706, - 443707, - 443708, - 443709, - 443710, - 443711, - 443712, - 443713, - 443714, - 443715, - 443716, - 443717, - 443718 - ] - }, - "hex_data": "084948540000000078cfc4060000000000d0c4060000000000d1c4060000000000d2c4060000000000d3c4060000000000d4c4060000000000d5c4060000000000d6c4060000000000d7c4060000000000d8c4060000000000d9c4060000000000dac4060000000000dbc4060000000000dcc4060000000000ddc4060000000000dec4060000000000dfc4060000000000e0c4060000000000e1c4060000000000e2c4060000000000e3c4060000000000e4c4060000000000e5c4060000000000e6c4060000000000e7c4060000000000e8c4060000000000e9c4060000000000eac4060000000000ebc4060000000000ecc4060000000000edc4060000000000eec4060000000000efc4060000000000f0c4060000000000f1c4060000000000f2c4060000000000f3c4060000000000f4c4060000000000f5c4060000000000f6c4060000000000f7c4060000000000f8c4060000000000f9c4060000000000fac4060000000000fbc4060000000000fcc4060000000000fdc4060000000000fec4060000000000ffc406000000000000c506000000000001c506000000000002c506000000000003c506000000000004c506000000000005c506000000000006c506000000000007c506000000000008c506000000000009c50600000000000ac50600000000000bc50600000000000cc50600000000000dc50600000000000ec50600000000000fc506000000000010c506000000000011c506000000000012c506000000000013c506000000000014c506000000000015c506000000000016c506000000000017c506000000000018c506000000000019c50600000000001ac50600000000001bc50600000000001cc50600000000001dc50600000000001ec50600000000001fc506000000000020c506000000000021c506000000000022c506000000000023c506000000000024c506000000000025c506000000000026c506000000000027c506000000000028c506000000000029c50600000000002ac50600000000002bc50600000000002cc50600000000002dc50600000000002ec50600000000002fc506000000000030c506000000000031c506000000000032c506000000000033c506000000000034c506000000000035c506000000000036c506000000000037c506000000000038c506000000000039c50600000000003ac50600000000003bc50600000000003cc50600000000003dc50600000000003ec50600000000003fc506000000000040c506000000000041c506000000000042c506000000000043c506000000000044c506000000000045c506000000000046c5060000000000" - } - ] - } - } - }, - { - "status": "executed", - "cpu_usage_us": 1135, - "net_usage_words": 33, - "trx": { - "id": "f538dedc58cb5e96b5e3b68986a4881c03aa826161dba39645b8475d0c13d64e", - "signatures": [ - "SIG_K1_KffoZpaqkKTHdY6DdsJZwemcpLzL1ze8W6narqGhVzUw36gZh15Lvm5jXNxRq5MHfsxpDNqNPvZRR2D6mBjVPrebhegfjE" - ], - "compression": "none", - "packed_context_free_data": "", - "context_free_data": [], - "packed_trx": "d65d4a6317f94cac290f0000000001a0223297ba56a34a000000000095dde50190e8add36497315500000000a888cca5a90190e8add3649731550aa51400000000000000000000a07c305592270000000000000000000024ac3155c89c6c0b000000000000000024ac513e0c4868520000000000000000f889503e280a00000000000000000000643d3155760f0000000000000000000024acb39e35000000000000000000000064a9305534020100000000000000000060aa98db7b2b0000000000000000009732b7315588270000000000000000002027ac315500", - "transaction": { - "expiration": "2022-10-15T07:14:30", - "ref_block_num": 63767, - "ref_block_prefix": 254389324, - "max_net_usage_words": 0, - "max_cpu_usage_ms": 0, - "delay_sec": 0, - "context_free_actions": [], - "actions": [ - { - "account": "delphioracle", - "name": "write", - "authorization": [ - { - "actor": "eostitanprod", - "permission": "oracle" - } - ], - "data": { - "owner": "eostitanprod", - "quotes": [ - { - "value": 5285, - "pair": "eosbtc" - }, - { - "value": 10130, - "pair": "eosusd" - }, - { - "value": 191667400, - "pair": "btcusd" - }, - { - "value": 1382565900, - "pair": "btccny" - }, - { - "value": 2600, - "pair": "eosnut" - }, - { - "value": 3958, - "pair": "nutusd" - }, - { - "value": 53, - "pair": "eosemt" - }, - { - "value": 66100, - "pair": "vigeos" - }, - { - "value": 11131, - "pair": "eosvigor" - }, - { - "value": 10120, - "pair": "eosusdt" - } - ] - }, - "hex_data": "90e8add3649731550aa51400000000000000000000a07c305592270000000000000000000024ac3155c89c6c0b000000000000000024ac513e0c4868520000000000000000f889503e280a00000000000000000000643d3155760f0000000000000000000024acb39e35000000000000000000000064a9305534020100000000000000000060aa98db7b2b0000000000000000009732b7315588270000000000000000002027ac3155" - } - ] - } - } - }, - { - "status": "executed", - "cpu_usage_us": 389, - "net_usage_words": 33, - "trx": { - "id": "3b842c3b6eb260028a51bc9c4b1cf9587b393a0607b45dafd7c5279c200c3e24", - "signatures": [ - "SIG_K1_KjUMXRq5vgxs9xenpjCR1PBP5vNQNndVD5HyXRtqjrQL4h7NRaS6iVhRXtdst6J4fYxnhbbfnbJsXoWiPugoVU8DZBoG2o", - "SIG_K1_JyqVntuutnbKRQBNo5pmpYCbLqR5iEtoZ49VRTJJ5DH1DLVcMRnkWd5qG95BxgpWqV3nnFTKKyymP1BV4UNtxCU5Pydhh2" - ], - "compression": "none", - "packed_context_free_data": "", - "context_free_data": [], - "packed_trx": "ba5d4a6360fae072f0530000000001a026a59a4d8331550080cae6aa4addd402a02bd21551cda6c100000000a8ed3232e07ba59a4d83315500000000a8ed3232880140aeda34d25cfd450000c8d7645cbb920000000000000000896f0000001f2819b684a6cff1e72d17a0e050a3349797dea09cbaef132f241790f2c73d49b9633cb6a595b7cd16378ded6323dbc131456cdd7ced6b287ad93a24bc1945771a10000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "transaction": { - "expiration": "2022-10-15T07:14:02", - "ref_block_num": 64096, - "ref_block_prefix": 1408266976, - "max_net_usage_words": 0, - "max_cpu_usage_ms": 0, - "delay_sec": 0, - "context_free_actions": [], - "actions": [ - { - "account": "eossanguoone", - "name": "unioperate", - "authorization": [ - { - "actor": "sanguocpucpu", - "permission": "active" - }, - { - "actor": "eossanguopxy", - "permission": "active" - } - ], - "data": { - "from": "cryptolover4", - "action": "mexpstart", - "block": 0, - "checksum": 0, - "nonce": 28553, - "psig": "SIG_K1_JzW4U8BsfM38WT9eWKGJCmZ5GqFRyNbujVWv4TsPotHHQBdRfaGUr3CrpR8NxJk8kFr5BNmrWaMocRopVcFCizeghizvsa", - "u1": 16, - "u2": 0, - "u3": 0, - "u4": 0, - "s": "", - "a": "0 ", - "n": "", - "v": [] - }, - "hex_data": "40aeda34d25cfd450000c8d7645cbb920000000000000000896f0000001f2819b684a6cff1e72d17a0e050a3349797dea09cbaef132f241790f2c73d49b9633cb6a595b7cd16378ded6323dbc131456cdd7ced6b287ad93a24bc1945771a100000000000000000000000000000000000000000000000000000000000000000000000000000000000" - } - ] - } - } - }, - { - "status": "executed", - "cpu_usage_us": 141, - "net_usage_words": 15, - "trx": { - "id": "66f8eb865488ee85c54af89808d8abcf7b94e5b8118bf8488844174f19d36f6c", - "signatures": [ - "SIG_K1_K1hFGYNraptrUpxs56EJXinwV4n5tJojPFDDprDGQiyYfcoFekwPU6r1YFoTARRcebZ8BJNw4N4eP2zc8grugTN5CVs8Xx" - ], - "compression": "none", - "packed_context_free_data": "", - "context_free_data": [], - "packed_trx": "c35f4a63fdf9f81769850000000001a0649a2656ed4dac000000000000089901a0649a2656ed4dac000000c067175dd61bb0661bb979a9af79e880000000000000025550580000000002626e00", - "transaction": { - "expiration": "2022-10-15T07:22:43", - "ref_block_num": 63997, - "ref_block_prefix": 2238257144, - "max_net_usage_words": 0, - "max_cpu_usage_ms": 0, - "delay_sec": 0, - "context_free_actions": [], - "actions": [ - { - "account": "playuplandme", - "name": "n44", - "authorization": [ - { - "actor": "playuplandme", - "permission": "utility" - } - ], - "data": { - "p51": "jarumyht3hnf", - "p45": "330.00 UPX", - "memo": "bn" - }, - "hex_data": "b0661bb979a9af79e880000000000000025550580000000002626e" - } - ] - } - } - }, - { - "status": "executed", - "cpu_usage_us": 300, - "net_usage_words": 34, - "trx": { - "id": "bfb246a10d5db654072a108d73041ebc019e1ce18519a2b553cc6b191f508f5d", - "signatures": [ - "SIG_K1_KfpLsbDWMXfDQD5u2LeskScqrfQ6vptpK9i8QGogQXfvMsVdeB6p2EpF6zT13M4mnxsMetd3V4wazzkakQYfUHPtcvLTun", - "SIG_K1_K6om9uXTjTSGMQ7jVehZMA2idpjggdNuBszDMZ2j9maLAhng5uZs6ZnJD2kG6giTtFNbuPZMXds21MGmWKnkFcYby3w6qj" - ], - "compression": "none", - "packed_context_free_data": "", - "context_free_data": [], - "packed_trx": "ba5d4a6361fac2c2d41c0000000001a026a59a4d8331550080cae6aa4addd402a02bd21551cda6c100000000a8ed3232e07ba59a4d83315500000000a8ed3232940140c8184284c0a6920000c846aaaca24a5efa4910e694bcb3a3230000001f4d5bbe4bafa8774395aa47b31bb854cd895ddc23cae94f30d4a57618b7d22d1c70b8eefcea01e70878928d22acff0e4a432dee602bfe4f6809a6b8b0613d911b0000000000000000000000000000000000000000000000000000000000000000000000000000000000035d5300005e5300005f53000000", - "transaction": { - "expiration": "2022-10-15T07:14:02", - "ref_block_num": 64097, - "ref_block_prefix": 483705538, - "max_net_usage_words": 0, - "max_cpu_usage_ms": 0, - "delay_sec": 0, - "context_free_actions": [], - "actions": [ - { - "account": "eossanguoone", - "name": "unioperate", - "authorization": [ - { - "actor": "sanguocpucpu", - "permission": "active" - }, - { - "actor": "eossanguopxy", - "permission": "active" - } - ], - "data": { - "from": "meng11223344", - "action": "deletemat", - "block": 273283678, - "checksum": 3015480550, - "nonce": 9123, - "psig": "SIG_K1_K5NmwhrWZxtuHQzc5wgLzE5kiGVTkSTj9dZ5mgtgkQ6AGuCbb5dkgC2ktQHgKKehZA9zvsymzRKEf7eRk3R1TyqfrhWbWY", - "u1": 0, - "u2": 0, - "u3": 0, - "u4": 0, - "s": "", - "a": "0 ", - "n": "", - "v": [ - 21341, - 21342, - 21343 - ] - }, - "hex_data": "40c8184284c0a6920000c846aaaca24a5efa4910e694bcb3a3230000001f4d5bbe4bafa8774395aa47b31bb854cd895ddc23cae94f30d4a57618b7d22d1c70b8eefcea01e70878928d22acff0e4a432dee602bfe4f6809a6b8b0613d911b0000000000000000000000000000000000000000000000000000000000000000000000000000000000035d5300005e5300005f530000" - } - ] - } - } - }, - { - "status": "executed", - "cpu_usage_us": 182, - "net_usage_words": 18, - "trx": { - "id": "da923cace51c8b13a33373c58d0da4fd966afd392348535f9117f17bd8c665ac", - "signatures": [ - "SIG_K1_K1tA6jho63gUkDhDjm5sY6VycsWcbrQnqLEnnEDZ4h5UtMEDkmwVQdgZZ7EFntj2VRKjQCbo3Gi9j42nhKayb7h6LAXdPm", - "SIG_K1_Kgwa5ydd8nwjAM38WKs4dchezGW3q7cAZHXCk8HEMhxCmt2tZYkzS3LmLFQizBgqd2CkM25XCbQBo5nU9ouGQqYskkCASi" - ], - "compression": "none", - "packed_context_free_data": "", - "context_free_data": [], - "packed_trx": "c55d4a633afa380ffcf3000000000180f0a519a98ae9ad00000057c14bf9960270f0a519a98ae9ad00000000a8ed32320000e07981e0a44b00000000a8ed32321023e7010000000000ffffffffffffffff00", - "transaction": { - "expiration": "2022-10-15T07:14:13", - "ref_block_num": 64058, - "ref_block_prefix": 4093382456, - "max_net_usage_words": 0, - "max_cpu_usage_ms": 0, - "delay_sec": 0, - "context_free_actions": [], - "actions": [ - { - "account": "prospectorsc", - "name": "mvworker", - "authorization": [ - { - "actor": "prospectorsb", - "permission": "active" - }, - { - "actor": "dimi1.ftw", - "permission": "active" - } - ], - "data": { - "worker_id": 124707, - "x": -1, - "y": -1 - }, - "hex_data": "23e7010000000000ffffffffffffffff" - } - ] - } - } - }, - { - "status": "executed", - "cpu_usage_us": 161, - "net_usage_words": 18, - "trx": { - "id": "3daf3d75748b60d61b236dd8f47bfe63691548d705b67ab0cc83b50aed514bbe", - "signatures": [ - "SIG_K1_Kkth6yu6xhvhMA9tfDamWcj4Z5LFuBjiJv3k7NAoX4U55xenLS43LifcRHZz2K6YVjDXwqHzRQpPnobxEEDZK5t3115ieM", - "SIG_K1_K7VuH4HXpsiTkAJpjzHcBKZ4w6HzRvzsoBzZEpLme6Z2P3PWB6SikbnDNamWUqw9rMox8JSPCVd7MgA39ahUH4ENACFnRy" - ], - "compression": "none", - "packed_context_free_data": "", - "context_free_data": [], - "packed_trx": "d75d4a635dfa1f0bca95000000000180f0a519a98ae9ad00000000a8e9244d0270f0a519a98ae9ad00000000a8ed32322002be6a3a49ef3200000000a8ed3232161000140000000000d23c00000000000006002c01000000", - "transaction": { - "expiration": "2022-10-15T07:14:31", - "ref_block_num": 64093, - "ref_block_prefix": 2513046303, - "max_net_usage_words": 0, - "max_cpu_usage_ms": 0, - "delay_sec": 0, - "context_free_actions": [], - "actions": [ - { - "account": "prospectorsc", - "name": "domine", - "authorization": [ - { - "actor": "prospectorsb", - "permission": "active" - }, - { - "actor": "afrominers12", - "permission": "active" - } - ], - "data": { - "loc_id": 1310736, - "worker_id": 15570, - "type_id": 6, - "duration": 300 - }, - "hex_data": "1000140000000000d23c00000000000006002c010000" - } - ] - } - } - }, - { - "status": "executed", - "cpu_usage_us": 132, - "net_usage_words": 20, - "trx": { - "id": "a553c19720e034290e8ef27e1742de5b8c5661c2596b0fc7f1baf6409a4f3180", - "signatures": [ - "SIG_K1_Kd8kVyYrtCMt2srdoR2YZrgJQQUJfUqigcHNpjmSqTUjr4jcFg8SQ4rkmsaxB3tvih1c8A28g1Si4VCCXGh2kezhWicTVf" - ], - "compression": "none", - "packed_context_free_data": "", - "context_free_data": [], - "packed_trx": "d85d4a635ffa18b244260000000001305dc52a671535bd0000000000305dc501305dc52a671535bd00000000a8ed323215dc970600000000001c60fa4910000000009c5d4a6300", - "transaction": { - "expiration": "2022-10-15T07:14:32", - "ref_block_num": 64095, - "ref_block_prefix": 642036248, - "max_net_usage_words": 0, - "max_cpu_usage_ms": 0, - "delay_sec": 0, - "context_free_actions": [], - "actions": [ - { - "account": "roulettespin", - "name": "spin", - "authorization": [ - { - "actor": "roulettespin", - "permission": "active" - } - ], - "data": { - "gameid": 432092, - "num": 28, - "block": 273283680, - "blocktime": 1665818012 - }, - "hex_data": "dc970600000000001c60fa4910000000009c5d4a63" - } - ] - } - } - }, - { - "status": "executed", - "cpu_usage_us": 1384, - "net_usage_words": 41, - "trx": { - "id": "498a9469d332c6d5a4dac15ce6b6b8728cefbd515f8e12248faa294f4094bbc3", - "signatures": [ - "SIG_K1_Kf3fYRni9yQLKbUDEKpPc6FoJqt8PWJDx511Wim7xESsVrkdszjwHKFJ2jJo6EPQSxfaDUy2CJUhmpzL3we5GraB3XACGz", - "SIG_K1_Kd4afkYNbJrdgGH1KnevDL1Ln2GTGR2qvSJYJhBdxW7bwvxWwyn8Biuzjc6c7tH3P6U5RTX4AZ16tNBfyXYM9wpoQ3zEL5" - ], - "compression": "none", - "packed_context_free_data": "", - "context_free_data": [], - "packed_trx": "d95d4a6317f94cac290f0000000001a0223297ba56a34a000000000095dde50220945e982ad368340000000000e59ae190e8ad982ad36834000000269a6aa2a9c90190e8ad982ad368340c760f0000000000000000000024acb39ebc5fc500000000000000000024ac5b56280a00000000000000000000643d315592270000000000000000000024ac3155a51400000000000000000000a07c305584b86c0b000000000000000024ac513e90a527520000000000000000f889503e5d000000000000000000000064a93055a3270000000000000000002027ac3155d2270000000000000000009732b731554b010100000000000000000060aa98dbe81000000000000000000000004c957500", - "transaction": { - "expiration": "2022-10-15T07:14:33", - "ref_block_num": 63767, - "ref_block_prefix": 254389324, - "max_net_usage_words": 0, - "max_cpu_usage_ms": 0, - "delay_sec": 0, - "context_free_actions": [], - "actions": [ - { - "account": "delphioracle", - "name": "write", - "authorization": [ - { - "actor": "alohaeosfue2", - "permission": "wahie" - }, - { - "actor": "alohaeosprod", - "permission": "palapala" - } - ], - "data": { - "owner": "alohaeosprod", - "quotes": [ - { - "value": 3958, - "pair": "nutusd" - }, - { - "value": 12935100, - "pair": "ethusd" - }, - { - "value": 2600, - "pair": "eosnut" - }, - { - "value": 10130, - "pair": "eosusd" - }, - { - "value": 5285, - "pair": "eosbtc" - }, - { - "value": 191674500, - "pair": "btcusd" - }, - { - "value": 1378330000, - "pair": "btccny" - }, - { - "value": 93, - "pair": "eosemt" - }, - { - "value": 10147, - "pair": "eosusdt" - }, - { - "value": 10194, - "pair": "eosvigor" - }, - { - "value": 65867, - "pair": "vigeos" - }, - { - "value": 4328, - "pair": "iqeos" - } - ] - }, - "hex_data": "90e8ad982ad368340c760f0000000000000000000024acb39ebc5fc500000000000000000024ac5b56280a00000000000000000000643d315592270000000000000000000024ac3155a51400000000000000000000a07c305584b86c0b000000000000000024ac513e90a527520000000000000000f889503e5d000000000000000000000064a93055a3270000000000000000002027ac3155d2270000000000000000009732b731554b010100000000000000000060aa98dbe81000000000000000000000004c9575" - } - ] - } - } - }, - { - "status": "executed", - "cpu_usage_us": 168, - "net_usage_words": 15, - "trx": { - "id": "a77a170b14a777b6fa404adcac28a4c7492351b072453d63143991693660981c", - "signatures": [ - "SIG_K1_JwKFf54mdJZ9pmvjuyYErDrWJ3vwPuNp4pRVs5tqhXSeggnCPGK1KbfQ86ioM1VzXZJrMEoQEusSSVAV2qHhXop2oz6GK3" - ], - "compression": "none", - "packed_context_free_data": "", - "context_free_data": [], - "packed_trx": "c45f4a6300fa1b819b570000000001a0649a2656ed4dac000000000000089901a0649a2656ed4dac000000c067175dd61ba0c5e87c6018a8de8813000000000000025550580000000002626e00", - "transaction": { - "expiration": "2022-10-15T07:22:44", - "ref_block_num": 64000, - "ref_block_prefix": 1469808923, - "max_net_usage_words": 0, - "max_cpu_usage_ms": 0, - "delay_sec": 0, - "context_free_actions": [], - "actions": [ - { - "account": "playuplandme", - "name": "n44", - "authorization": [ - { - "actor": "playuplandme", - "permission": "utility" - } - ], - "data": { - "p51": "vuo1ks3wx32u", - "p45": "50.00 UPX", - "memo": "bn" - }, - "hex_data": "a0c5e87c6018a8de8813000000000000025550580000000002626e" - } - ] - } - } - }, - { - "status": "executed", - "cpu_usage_us": 248, - "net_usage_words": 15, - "trx": { - "id": "e11514838db099d77320d0df84dba485d65f94e95e612379cc3eb8817d088281", - "signatures": [ - "SIG_K1_KAdBjmFLhAVLM4LJNJbYKdLUtnfZ48hb5EcFxqiNxkPmiW2f96fdxjtvHKy7Xwght6yVxXSv5XmVBUyvk2WAQHuNethVU7" - ], - "compression": "none", - "packed_context_free_data": "", - "context_free_data": [], - "packed_trx": "bc5d4a6317f94cac290f0000000100408c7a02ea3055000000000085269d00082d28fd7a0deb05000180919ba62125315500000000000074450180919ba621253155000080d7c886a63a0000", - "transaction": { - "expiration": "2022-10-15T07:14:04", - "ref_block_num": 63767, - "ref_block_prefix": 254389324, - "max_net_usage_words": 0, - "max_cpu_usage_ms": 0, - "delay_sec": 0, - "context_free_actions": [ - { - "account": "eosio.null", - "name": "nonce", - "authorization": [], - "data": "2d28fd7a0deb0500" - } - ], - "actions": [ - { - "account": "eosmechanics", - "name": "cpu", - "authorization": [ - { - "actor": "eosmechanics", - "permission": "benchmark" - } - ], - "data": "" - } - ] - } - } - }, - { - "status": "executed", - "cpu_usage_us": 269, - "net_usage_words": 24, - "trx": { - "id": "5bb6b276af547742f3ceb33254276b2ee1cafdbf237b2b2e261e3c6a24b2d90f", - "signatures": [ - "SIG_K1_JxYvvymHctTG8Yy2QCB9DeDZow8s6B173gGN7SZuyJdj83NZJguT4BdgmZsrRP1ydYPVaCYfe96sFnyemVKeWPMxFk6wUV", - "SIG_K1_KXHK5mSSNaLAdL3KDoJP3BRBeRtfDxRVxGhyZfEqyqVbprVHXkqDSieCaa2GRUDjAhgxjgp1igEELsMntcgJe2jXF2X52q" - ], - "compression": "none", - "packed_context_free_data": "", - "context_free_data": [], - "packed_trx": "d55d4a6359fa3c3f5b540000000002a0649a2656ed4dac0000d0155dbabca901a0649a2656ed4dac0000d0155dbabca9086012d1c4e4db89aaa0649a2656ed4dac000000000000c298016012d1c4e4db89aa00000000a46962d5296012d1c4e4db89aa0401ca1c775546000085ca1c6a55460000a8ca1c7155460000a6fd1cd33346000000", - "transaction": { - "expiration": "2022-10-15T07:14:29", - "ref_block_num": 64089, - "ref_block_prefix": 1415266108, - "max_net_usage_words": 0, - "max_cpu_usage_ms": 0, - "delay_sec": 0, - "context_free_actions": [], - "actions": [ - { - "account": "playuplandme", - "name": "payforcpu", - "authorization": [ - { - "actor": "playuplandme", - "permission": "payforcpu" - } - ], - "data": { - "user_name": "pe4xrta4u4da" - }, - "hex_data": "6012d1c4e4db89aa" - }, - { - "account": "playuplandme", - "name": "n31", - "authorization": [ - { - "actor": "pe4xrta4u4da", - "permission": "upland" - } - ], - "data": { - "a54": "pe4xrta4u4da", - "p55": [ - "77332884539905", - "77332666436229", - "77332783876776", - "77188399168934" - ] - }, - "hex_data": "6012d1c4e4db89aa0401ca1c775546000085ca1c6a55460000a8ca1c7155460000a6fd1cd333460000" - } - ] - } - } - }, - { - "status": "executed", - "cpu_usage_us": 540, - "net_usage_words": 137, - "trx": { - "id": "9bfbe8aeb5d679737b85f8c0a99c4d72712bf45fd63b1536c8a5862f8f951897", - "signatures": [ - "SIG_K1_JzRMeT8Ye892quwLEbdWo6PyzwQ61NbzP27XLHQAWWsdwU8oRM466bD8SR1MY39r4okiWtDUfdRjdyddRuRyz99CpYrXV6", - "SIG_K1_K6pWnNF99MhTTo8JzmYwn9MBM47yW4Cd64jdF9tUeva5x5m3yKNHrw3Ejb2gj9rkyck7HTyH4w86fshBzbRSudjD8BAXaG" - ], - "compression": "none", - "packed_context_free_data": "", - "context_free_data": [], - "packed_trx": "c95e4a6361fac2c2d41c00000000010000009d51a02e4590b18b2a9beba24a020040cd204677320e00000000a8ed32320000009d51a02e4500000000a8ed3232c9070849485400000000783fc906000000000040c906000000000041c906000000000042c906000000000043c906000000000044c906000000000045c906000000000046c906000000000047c906000000000048c906000000000049c90600000000004ac90600000000004bc90600000000004cc90600000000004dc90600000000004ec90600000000004fc906000000000050c906000000000051c906000000000052c906000000000053c906000000000054c906000000000055c906000000000056c906000000000057c906000000000058c906000000000059c90600000000005ac90600000000005bc90600000000005cc90600000000005dc90600000000005ec90600000000005fc906000000000060c906000000000061c906000000000062c906000000000063c906000000000064c906000000000065c906000000000066c906000000000067c906000000000068c906000000000069c90600000000006ac90600000000006bc90600000000006cc90600000000006dc90600000000006ec90600000000006fc906000000000070c906000000000071c906000000000072c906000000000073c906000000000074c906000000000075c906000000000076c906000000000077c906000000000078c906000000000079c90600000000007ac90600000000007bc90600000000007cc90600000000007dc90600000000007ec90600000000007fc906000000000080c906000000000081c906000000000082c906000000000083c906000000000084c906000000000085c906000000000086c906000000000087c906000000000088c906000000000089c90600000000008ac90600000000008bc90600000000008cc90600000000008dc90600000000008ec90600000000008fc906000000000090c906000000000091c906000000000092c906000000000093c906000000000094c906000000000095c906000000000096c906000000000097c906000000000098c906000000000099c90600000000009ac90600000000009bc90600000000009cc90600000000009dc90600000000009ec90600000000009fc9060000000000a0c9060000000000a1c9060000000000a2c9060000000000a3c9060000000000a4c9060000000000a5c9060000000000a6c9060000000000a7c9060000000000a8c9060000000000a9c9060000000000aac9060000000000abc9060000000000acc9060000000000adc9060000000000aec9060000000000afc9060000000000b0c9060000000000b1c9060000000000b2c9060000000000b3c9060000000000b4c9060000000000b5c9060000000000b6c906000000000000", - "transaction": { - "expiration": "2022-10-15T07:18:33", - "ref_block_num": 64097, - "ref_block_prefix": 483705538, - "max_net_usage_words": 0, - "max_cpu_usage_ms": 0, - "delay_sec": 0, - "context_free_actions": [], - "actions": [ - { - "account": "core.ogx", - "name": "deliratelist", - "authorization": [ - { - "actor": "1stbill.tp", - "permission": "active" - }, - { - "actor": "core.ogx", - "permission": "active" - } - ], - "data": { - "sym": "8,IHT", - "round_list": [ - 444735, - 444736, - 444737, - 444738, - 444739, - 444740, - 444741, - 444742, - 444743, - 444744, - 444745, - 444746, - 444747, - 444748, - 444749, - 444750, - 444751, - 444752, - 444753, - 444754, - 444755, - 444756, - 444757, - 444758, - 444759, - 444760, - 444761, - 444762, - 444763, - 444764, - 444765, - 444766, - 444767, - 444768, - 444769, - 444770, - 444771, - 444772, - 444773, - 444774, - 444775, - 444776, - 444777, - 444778, - 444779, - 444780, - 444781, - 444782, - 444783, - 444784, - 444785, - 444786, - 444787, - 444788, - 444789, - 444790, - 444791, - 444792, - 444793, - 444794, - 444795, - 444796, - 444797, - 444798, - 444799, - 444800, - 444801, - 444802, - 444803, - 444804, - 444805, - 444806, - 444807, - 444808, - 444809, - 444810, - 444811, - 444812, - 444813, - 444814, - 444815, - 444816, - 444817, - 444818, - 444819, - 444820, - 444821, - 444822, - 444823, - 444824, - 444825, - 444826, - 444827, - 444828, - 444829, - 444830, - 444831, - 444832, - 444833, - 444834, - 444835, - 444836, - 444837, - 444838, - 444839, - 444840, - 444841, - 444842, - 444843, - 444844, - 444845, - 444846, - 444847, - 444848, - 444849, - 444850, - 444851, - 444852, - 444853, - 444854 - ] - }, - "hex_data": "0849485400000000783fc906000000000040c906000000000041c906000000000042c906000000000043c906000000000044c906000000000045c906000000000046c906000000000047c906000000000048c906000000000049c90600000000004ac90600000000004bc90600000000004cc90600000000004dc90600000000004ec90600000000004fc906000000000050c906000000000051c906000000000052c906000000000053c906000000000054c906000000000055c906000000000056c906000000000057c906000000000058c906000000000059c90600000000005ac90600000000005bc90600000000005cc90600000000005dc90600000000005ec90600000000005fc906000000000060c906000000000061c906000000000062c906000000000063c906000000000064c906000000000065c906000000000066c906000000000067c906000000000068c906000000000069c90600000000006ac90600000000006bc90600000000006cc90600000000006dc90600000000006ec90600000000006fc906000000000070c906000000000071c906000000000072c906000000000073c906000000000074c906000000000075c906000000000076c906000000000077c906000000000078c906000000000079c90600000000007ac90600000000007bc90600000000007cc90600000000007dc90600000000007ec90600000000007fc906000000000080c906000000000081c906000000000082c906000000000083c906000000000084c906000000000085c906000000000086c906000000000087c906000000000088c906000000000089c90600000000008ac90600000000008bc90600000000008cc90600000000008dc90600000000008ec90600000000008fc906000000000090c906000000000091c906000000000092c906000000000093c906000000000094c906000000000095c906000000000096c906000000000097c906000000000098c906000000000099c90600000000009ac90600000000009bc90600000000009cc90600000000009dc90600000000009ec90600000000009fc9060000000000a0c9060000000000a1c9060000000000a2c9060000000000a3c9060000000000a4c9060000000000a5c9060000000000a6c9060000000000a7c9060000000000a8c9060000000000a9c9060000000000aac9060000000000abc9060000000000acc9060000000000adc9060000000000aec9060000000000afc9060000000000b0c9060000000000b1c9060000000000b2c9060000000000b3c9060000000000b4c9060000000000b5c9060000000000b6c9060000000000" - } - ] - } - } - }, - { - "status": "executed", - "cpu_usage_us": 127, - "net_usage_words": 12, - "trx": { - "id": "8365cf3d506b838e3b6199f47c76aa3db05b8d0af7dcd914cbe58f6a0a414db1", - "signatures": [ - "SIG_K1_K8W5hmhEtjeQ54gB7xXK6Bc8oTQ5VjywMP6WYW7yZqt8DDWyCNmTEck9NoRdmCWcAeRnCuVm877GRh384MGPJQugQFH6x3" - ], - "compression": "none", - "packed_context_free_data": "", - "context_free_data": [], - "packed_trx": "bc5d4a6317f94cac290f0000000001c06802693a79d5a600000000a86c52d5010000008c26a0746400000000a8ed32320302343700", - "transaction": { - "expiration": "2022-10-15T07:14:04", - "ref_block_num": 63767, - "ref_block_prefix": 254389324, - "max_net_usage_words": 0, - "max_cpu_usage_ms": 0, - "delay_sec": 0, - "context_free_actions": [], - "actions": [ - { - "account": "overmind.dog", - "name": "update", - "authorization": [ - { - "actor": "glue.dog", - "permission": "active" - } - ], - "data": { - "agent": "47" - }, - "hex_data": "023437" - } - ] - } - } - }, - { - "status": "executed", - "cpu_usage_us": 150, - "net_usage_words": 15, - "trx": { - "id": "b994c662eaf00cd354d7664a97ed1b5de3519297b5e5529cc0b639bdca12baa5", - "signatures": [ - "SIG_K1_JwraMgXmt5CNd6TpbSTYxi5N5pwBJSk8AcMj68D7Rb34Cn3r4CYjFLvSo5VwZbcowmCa3Y5hRRhJ4Af3tZPoMUcE9xa9Ex" - ], - "compression": "none", - "packed_context_free_data": "", - "context_free_data": [], - "packed_trx": "c75f4a6306fafefd77c40000000001a0649a2656ed4dac000000000000089901a0649a2656ed4dac000000c067175dd61ba03e7c56ebba94f0e02e000000000000025550580000000002626e00", - "transaction": { - "expiration": "2022-10-15T07:22:47", - "ref_block_num": 64006, - "ref_block_prefix": 3296198142, - "max_net_usage_words": 0, - "max_cpu_usage_ms": 0, - "delay_sec": 0, - "context_free_actions": [], - "actions": [ - { - "account": "playuplandme", - "name": "n44", - "authorization": [ - { - "actor": "playuplandme", - "permission": "utility" - } - ], - "data": { - "p51": "y2efpuuqjkze", - "p45": "120.00 UPX", - "memo": "bn" - }, - "hex_data": "a03e7c56ebba94f0e02e000000000000025550580000000002626e" - } - ] - } - } - }, - { - "status": "executed", - "cpu_usage_us": 747, - "net_usage_words": 38, - "trx": { - "id": "a05f8e74be4e2fcfd19626fc5eae4670ba90a4326298844a13d6d722c0e9864f", - "signatures": [ - "SIG_K1_K45FNWUe9kNPGsyCsmLNXd2RiVdG5GFGCg2g8TQQ89e9rcPrqoGN9VsDX8waTRxaheftqRxdg63eF2Ww4T86DxCPozRP6g", - "SIG_K1_KhsAc5FkDXMbdBJpWh2Saff2stSb6XR6JHxj9cPV7xDC9z4UYkEsp5EvtKGd8sfkXbfTh8iQmGF88oZ2SrFsk5UudPzuCK" - ], - "compression": "none", - "packed_context_free_data": "", - "context_free_data": [], - "packed_trx": "d85d4a635ffa18b244260000000002a0649a2656ed4dac0000d0155dbabca901a0649a2656ed4dac0000d0155dbabca90850f7f5638dd0d987a0649a2656ed4dac000000000000c2980150f7f5638dd0d98700000000a46962d5990150f7f5638dd0d98712e27c2d0d0d4a0000e9802d36094a0000859d2dcaff490000009c2d04004a0000009b2d85ff4900003a9b2dd4004a0000d58128f0f04a000045992d8afd490000f49b2dfaff490000ec9b2df5ff4900006c9a2dbcfe490000429c2d60fe490000f6932870f24a000032902d22034a0000d99b2de6ff4900004e882832fc4a0000ff9928eff44a0000d58c2857f74a000000", - "transaction": { - "expiration": "2022-10-15T07:14:32", - "ref_block_num": 64095, - "ref_block_prefix": 642036248, - "max_net_usage_words": 0, - "max_cpu_usage_ms": 0, - "delay_sec": 0, - "context_free_actions": [], - "actions": [ - { - "account": "playuplandme", - "name": "payforcpu", - "authorization": [ - { - "actor": "playuplandme", - "permission": "payforcpu" - } - ], - "data": { - "user_name": "kzgx13f3yrvp" - }, - "hex_data": "50f7f5638dd0d987" - }, - { - "account": "playuplandme", - "name": "n31", - "authorization": [ - { - "actor": "kzgx13f3yrvp", - "permission": "upland" - } - ], - "data": { - "a54": "kzgx13f3yrvp", - "p55": [ - "81419916115170", - "81403424112873", - "81362957475205", - "81363930553344", - "81361799846656", - "81367420214074", - "82398681792981", - "81353293797701", - "81363762781172", - "81363678895084", - "81358427626092", - "81356884122690", - "82405124248566", - "81377318768690", - "81363427236825", - "82447033731150", - "82415844891135", - "82426179652821" - ] - }, - "hex_data": "50f7f5638dd0d98712e27c2d0d0d4a0000e9802d36094a0000859d2dcaff490000009c2d04004a0000009b2d85ff4900003a9b2dd4004a0000d58128f0f04a000045992d8afd490000f49b2dfaff490000ec9b2df5ff4900006c9a2dbcfe490000429c2d60fe490000f6932870f24a000032902d22034a0000d99b2de6ff4900004e882832fc4a0000ff9928eff44a0000d58c2857f74a0000" - } - ] - } - } - }, - { - "status": "executed", - "cpu_usage_us": 107, - "net_usage_words": 15, - "trx": { - "id": "fe2f9e6514719a552447237191e417736a0bb6f6e39a713338d4353bf595f346", - "signatures": [ - "SIG_K1_JzREUCL47EgcXGkaEAUc3mNeTnr8YQLTAozWNcPQXNdjhDyQLgTSQ3q3dUb2uggFDu51i3Rb6qszvmVGgu2MqzQSp1593D" - ], - "compression": "none", - "packed_context_free_data": "", - "context_free_data": [], - "packed_trx": "c85f4a6307faf2d749b50000000001a0649a2656ed4dac000000000000089901a0649a2656ed4dac000000c067175dd61be0c355687de9c2a4d8b8050000000000025550580000000002626e00", - "transaction": { - "expiration": "2022-10-15T07:22:48", - "ref_block_num": 64007, - "ref_block_prefix": 3041515506, - "max_net_usage_words": 0, - "max_cpu_usage_ms": 0, - "delay_sec": 0, - "context_free_actions": [], - "actions": [ - { - "account": "playuplandme", - "name": "n44", - "authorization": [ - { - "actor": "playuplandme", - "permission": "utility" - } - ], - "data": { - "p51": "on1imzfcer1y", - "p45": "3750.00 UPX", - "memo": "bn" - }, - "hex_data": "e0c355687de9c2a4d8b8050000000000025550580000000002626e" - } - ] - } - } - }, - { - "status": "executed", - "cpu_usage_us": 452, - "net_usage_words": 25, - "trx": { - "id": "7beb1e92e6d3458b5ee45e675b66bc10864c55a2bc9b50ea98c227c7f4dd5cb2", - "signatures": [ - "SIG_K1_K48FhqqTyABvAW4anrNvgzgAmQCiQbpVLbJzE6ZCWbM1cgv5HA8P2zYzDr1xkRPfuFXkjSGZLHRuMfxs9m7H4i9cF8jTx2", - "SIG_K1_K6pJ57on8Dsh9ziTSxQ7aSofKPpyTnYywqnb5AEsXHdddHXKmYqo8mWCnzD5NYkKMDkUmDnJxCDkTeeSHb2FQLN7ZyjyUx" - ], - "compression": "none", - "packed_context_free_data": "", - "context_free_data": [], - "packed_trx": "da5d4a6364fa50c4f5cb000000000100a6823403ea3055000000572d3ccdcd02c08e31c618638c3100000000a8ed32322042c2864deab58b00000000a8ed32324b2042c2864deab58b4073a6b161d33055204e00000000000004454f53000000002a646f6e676a69616e776c6c792d2d2d5b5d2d5b5d2d5b5d2d5b5d2d5b34395d2d3136363538313830313500", - "transaction": { - "expiration": "2022-10-15T07:14:34", - "ref_block_num": 64100, - "ref_block_prefix": 3421881424, - "max_net_usage_words": 0, - "max_cpu_usage_ms": 0, - "delay_sec": 0, - "context_free_actions": [], - "actions": [ - { - "account": "eosio.token", - "name": "transfer", - "authorization": [ - { - "actor": "aaaaaaaaaabg", - "permission": "active" - }, - { - "actor": "liuyongasd12", - "permission": "active" - } - ], - "data": { - "from": "liuyongasd12", - "to": "eoshashlotto", - "quantity": "2.0000 EOS", - "memo": "dongjianwlly---[]-[]-[]-[]-[49]-1665818015" - }, - "hex_data": "2042c2864deab58b4073a6b161d33055204e00000000000004454f53000000002a646f6e676a69616e776c6c792d2d2d5b5d2d5b5d2d5b5d2d5b5d2d5b34395d2d31363635383138303135" - } - ] - } - } - }, - { - "status": "executed", - "cpu_usage_us": 273, - "net_usage_words": 33, - "trx": { - "id": "f9524a36a14d7cd6872b99ae9df726bb1c5cea475ed8a015e2636302d82710dd", - "signatures": [ - "SIG_K1_K5qwgbrjPQpGE7EMBpZrL6zNTeXAREemaP6eoxLz28UYoNJKYLSsbPU1Voa2G55CmF3fd88FZCnQT3GdRqkNMrUAs7VZzS", - "SIG_K1_Jzyg9m4W265GNrJMEaJdrCJ4hEFGAvCCCR4xSTjcxWKJE3gzpcsSL6p1uATAuWqzWtLCV8jemc8LPnyqQKNjuKky5m8HQL", - "SIG_K1_Km9Mv7Vq47L1ovkdXQhApMYNMjQzZdJKGmDLapoxLKqF9gwvig4Bu7WRWhny3ttwVgz8goEAF7T52617QBta8in4ohxtXw" - ], - "compression": "none", - "packed_context_free_data": "", - "context_free_data": [], - "packed_trx": "7f6b4a6306fafefd77c40000000003a0649a2656ed4dac0000d0155dbabca901a0649a2656ed4dac0000d0155dbabca90880a6c8c669ec499890113253419a7bd5000000572d3ccdcd0180a6c8c669ec499800000000a46962d52180a6c8c669ec4998a0649a2656ed4dacac0d000000000000025550580000000000a0649a2656ed4dac000000000000029901a0649a2656ed4dac000000c067175dd62080a6c8c669ec4998c6c51c1255460000ac0d000000000000025550580000000000", - "transaction": { - "expiration": "2022-10-15T08:12:47", - "ref_block_num": 64006, - "ref_block_prefix": 3296198142, - "max_net_usage_words": 0, - "max_cpu_usage_ms": 0, - "delay_sec": 0, - "context_free_actions": [], - "actions": [ - { - "account": "playuplandme", - "name": "payforcpu", - "authorization": [ - { - "actor": "playuplandme", - "permission": "payforcpu" - } - ], - "data": { - "user_name": "n14ysuiat2nc" - }, - "hex_data": "80a6c8c669ec4998" - }, - { - "account": "upxtokenacct", - "name": "transfer", - "authorization": [ - { - "actor": "n14ysuiat2nc", - "permission": "upland" - } - ], - "data": { - "from": "n14ysuiat2nc", - "to": "playuplandme", - "quantity": "35.00 UPX", - "memo": "" - }, - "hex_data": "80a6c8c669ec4998a0649a2656ed4dacac0d000000000000025550580000000000" - }, - { - "account": "playuplandme", - "name": "n41", - "authorization": [ - { - "actor": "playuplandme", - "permission": "utility" - } - ], - "data": { - "p51": "n14ysuiat2nc", - "a45": "77331190040006", - "p54": "35.00 UPX" - }, - "hex_data": "80a6c8c669ec4998c6c51c1255460000ac0d0000000000000255505800000000" - } - ] - } - } - }, - { - "status": "executed", - "cpu_usage_us": 697, - "net_usage_words": 183, - "trx": { - "id": "a3d537488aac86d5f10370d00e934703c1243a3b92731a44c23720ffc0d65456", - "signatures": [ - "SIG_K1_K5Mk1un5SQoBaMxhaXmaSSPjKa2Anv35VnDu57bhi62gTFysfvdxYfvRECC5psV9BszuL6SyGoxi1LmE94CFztnVLexSR7", - "SIG_K1_K4txmE2Fmv1i628oHx8Jkbm5SHYmBSMkiQXQNkNUMEW9b5wj2ufdhyg5tURKmM9bx8k8FhFGTCB5eHWwJQg7jqoYV2w3iD" - ], - "compression": "none", - "packed_context_free_data": "", - "context_free_data": [], - "packed_trx": "be5d4a6368fae262650700000000150000704b2590945a000000000090945a020000006ea904744500000000a8ed323200805b2a81e9643200000000a8ed32321001000000000000001b280000000000000000704b2590945a000000000090945a020000006ea904744500000000a8ed323200805b2a81e9643200000000a8ed3232100200000000000000cf411d00000000000000704b2590945a000000000090945a020000006ea904744500000000a8ed323200805b2a81e9643200000000a8ed32321003000000000000006efb0100000000000000704b2590945a000000000090945a020000006ea904744500000000a8ed323200805b2a81e9643200000000a8ed3232100400000000000000ea200000000000000000704b2590945a000000000090945a020000006ea904744500000000a8ed323200805b2a81e9643200000000a8ed32321005000000000000000c270000000000000000704b2590945a000000000090945a020000006ea904744500000000a8ed323200805b2a81e9643200000000a8ed323210060000000000000007290000000000000000704b2590945a000000000090945a020000006ea904744500000000a8ed323200805b2a81e9643200000000a8ed3232100700000000000000e8270100000000000000704b2590945a000000000090945a020000006ea904744500000000a8ed323200805b2a81e9643200000000a8ed323210080000000000000063380000000000000000704b2590945a000000000090945a020000006ea904744500000000a8ed323200805b2a81e9643200000000a8ed323210090000000000000024810000000000000000704b2590945a000000000090945a020000006ea904744500000000a8ed323200805b2a81e9643200000000a8ed3232100a00000000000000120b0000000000000000704b2590945a000000000090945a020000006ea904744500000000a8ed323200805b2a81e9643200000000a8ed3232100b00000000000000db090000000000000000704b2590945a000000000090945a020000006ea904744500000000a8ed323200805b2a81e9643200000000a8ed3232100c000000000000003e090000000000000000704b2590945a000000000090945a020000006ea904744500000000a8ed323200805b2a81e9643200000000a8ed3232100d0000000000000014090000000000000000704b2590945a000000000090945a020000006ea904744500000000a8ed323200805b2a81e9643200000000a8ed3232100e000000000000003f590000000000000000704b2590945a000000000090945a020000006ea904744500000000a8ed323200805b2a81e9643200000000a8ed3232100f000000000000001c0e0000000000000000704b2590945a000000000090945a020000006ea904744500000000a8ed323200805b2a81e9643200000000a8ed3232101000000000000000d0410a00000000000000704b2590945a000000000090945a020000006ea904744500000000a8ed323200805b2a81e9643200000000a8ed3232101100000000000000a4270000000000000000704b2590945a000000000090945a020000006ea904744500000000a8ed323200805b2a81e9643200000000a8ed32321012000000000000002f080000000000000000704b2590945a000000000090945a020000006ea904744500000000a8ed323200805b2a81e9643200000000a8ed3232101300000000000000ffb11000000000000000704b2590945a000000000090945a020000006ea904744500000000a8ed323200805b2a81e9643200000000a8ed32321014000000000000008da70d00000000000000704b2590945a000000000090945a020000006ea904744500000000a8ed323200805b2a81e9643200000000a8ed32321015000000000000004bb9f9050000000000", - "transaction": { - "expiration": "2022-10-15T07:14:06", - "ref_block_num": 64104, - "ref_block_prefix": 124084962, - "max_net_usage_words": 0, - "max_cpu_usage_ms": 0, - "delay_sec": 0, - "context_free_actions": [], - "actions": [ - { - "account": "feed.defi", - "name": "feed", - "authorization": [ - { - "actor": "cpu.defi", - "permission": "active" - }, - { - "actor": "admin.defi", - "permission": "active" - } - ], - "data": { - "price_id": 1, - "price": 10267 - }, - "hex_data": "01000000000000001b28000000000000" - }, - { - "account": "feed.defi", - "name": "feed", - "authorization": [ - { - "actor": "cpu.defi", - "permission": "active" - }, - { - "actor": "admin.defi", - "permission": "active" - } - ], - "data": { - "price_id": 2, - "price": 1917391 - }, - "hex_data": "0200000000000000cf411d0000000000" - }, - { - "account": "feed.defi", - "name": "feed", - "authorization": [ - { - "actor": "cpu.defi", - "permission": "active" - }, - { - "actor": "admin.defi", - "permission": "active" - } - ], - "data": { - "price_id": 3, - "price": 129902 - }, - "hex_data": "03000000000000006efb010000000000" - }, - { - "account": "feed.defi", - "name": "feed", - "authorization": [ - { - "actor": "cpu.defi", - "permission": "active" - }, - { - "actor": "admin.defi", - "permission": "active" - } - ], - "data": { - "price_id": 4, - "price": 8426 - }, - "hex_data": "0400000000000000ea20000000000000" - }, - { - "account": "feed.defi", - "name": "feed", - "authorization": [ - { - "actor": "cpu.defi", - "permission": "active" - }, - { - "actor": "admin.defi", - "permission": "active" - } - ], - "data": { - "price_id": 5, - "price": 9996 - }, - "hex_data": "05000000000000000c27000000000000" - }, - { - "account": "feed.defi", - "name": "feed", - "authorization": [ - { - "actor": "cpu.defi", - "permission": "active" - }, - { - "actor": "admin.defi", - "permission": "active" - } - ], - "data": { - "price_id": 6, - "price": 10503 - }, - "hex_data": "06000000000000000729000000000000" - }, - { - "account": "feed.defi", - "name": "feed", - "authorization": [ - { - "actor": "cpu.defi", - "permission": "active" - }, - { - "actor": "admin.defi", - "permission": "active" - } - ], - "data": { - "price_id": 7, - "price": 75752 - }, - "hex_data": "0700000000000000e827010000000000" - }, - { - "account": "feed.defi", - "name": "feed", - "authorization": [ - { - "actor": "cpu.defi", - "permission": "active" - }, - { - "actor": "admin.defi", - "permission": "active" - } - ], - "data": { - "price_id": 8, - "price": 14435 - }, - "hex_data": "08000000000000006338000000000000" - }, - { - "account": "feed.defi", - "name": "feed", - "authorization": [ - { - "actor": "cpu.defi", - "permission": "active" - }, - { - "actor": "admin.defi", - "permission": "active" - } - ], - "data": { - "price_id": 9, - "price": 33060 - }, - "hex_data": "09000000000000002481000000000000" - }, - { - "account": "feed.defi", - "name": "feed", - "authorization": [ - { - "actor": "cpu.defi", - "permission": "active" - }, - { - "actor": "admin.defi", - "permission": "active" - } - ], - "data": { - "price_id": 10, - "price": 2834 - }, - "hex_data": "0a00000000000000120b000000000000" - }, - { - "account": "feed.defi", - "name": "feed", - "authorization": [ - { - "actor": "cpu.defi", - "permission": "active" - }, - { - "actor": "admin.defi", - "permission": "active" - } - ], - "data": { - "price_id": 11, - "price": 2523 - }, - "hex_data": "0b00000000000000db09000000000000" - }, - { - "account": "feed.defi", - "name": "feed", - "authorization": [ - { - "actor": "cpu.defi", - "permission": "active" - }, - { - "actor": "admin.defi", - "permission": "active" - } - ], - "data": { - "price_id": 12, - "price": 2366 - }, - "hex_data": "0c000000000000003e09000000000000" - }, - { - "account": "feed.defi", - "name": "feed", - "authorization": [ - { - "actor": "cpu.defi", - "permission": "active" - }, - { - "actor": "admin.defi", - "permission": "active" - } - ], - "data": { - "price_id": 13, - "price": 2324 - }, - "hex_data": "0d000000000000001409000000000000" - }, - { - "account": "feed.defi", - "name": "feed", - "authorization": [ - { - "actor": "cpu.defi", - "permission": "active" - }, - { - "actor": "admin.defi", - "permission": "active" - } - ], - "data": { - "price_id": 14, - "price": 22847 - }, - "hex_data": "0e000000000000003f59000000000000" - }, - { - "account": "feed.defi", - "name": "feed", - "authorization": [ - { - "actor": "cpu.defi", - "permission": "active" - }, - { - "actor": "admin.defi", - "permission": "active" - } - ], - "data": { - "price_id": 15, - "price": 3612 - }, - "hex_data": "0f000000000000001c0e000000000000" - }, - { - "account": "feed.defi", - "name": "feed", - "authorization": [ - { - "actor": "cpu.defi", - "permission": "active" - }, - { - "actor": "admin.defi", - "permission": "active" - } - ], - "data": { - "price_id": 16, - "price": 672208 - }, - "hex_data": "1000000000000000d0410a0000000000" - }, - { - "account": "feed.defi", - "name": "feed", - "authorization": [ - { - "actor": "cpu.defi", - "permission": "active" - }, - { - "actor": "admin.defi", - "permission": "active" - } - ], - "data": { - "price_id": 17, - "price": 10148 - }, - "hex_data": "1100000000000000a427000000000000" - }, - { - "account": "feed.defi", - "name": "feed", - "authorization": [ - { - "actor": "cpu.defi", - "permission": "active" - }, - { - "actor": "admin.defi", - "permission": "active" - } - ], - "data": { - "price_id": 18, - "price": 2095 - }, - "hex_data": "12000000000000002f08000000000000" - }, - { - "account": "feed.defi", - "name": "feed", - "authorization": [ - { - "actor": "cpu.defi", - "permission": "active" - }, - { - "actor": "admin.defi", - "permission": "active" - } - ], - "data": { - "price_id": 19, - "price": 1094143 - }, - "hex_data": "1300000000000000ffb1100000000000" - }, - { - "account": "feed.defi", - "name": "feed", - "authorization": [ - { - "actor": "cpu.defi", - "permission": "active" - }, - { - "actor": "admin.defi", - "permission": "active" - } - ], - "data": { - "price_id": 20, - "price": 894861 - }, - "hex_data": "14000000000000008da70d0000000000" - }, - { - "account": "feed.defi", - "name": "feed", - "authorization": [ - { - "actor": "cpu.defi", - "permission": "active" - }, - { - "actor": "admin.defi", - "permission": "active" - } - ], - "data": { - "price_id": 21, - "price": 100251979 - }, - "hex_data": "15000000000000004bb9f90500000000" - } - ] - } - } - }, - { - "status": "executed", - "cpu_usage_us": 290, - "net_usage_words": 33, - "trx": { - "id": "a55ccd974d54df77e606ec599cc73c9be84a6396580f193f8e6794ee5883b560", - "signatures": [ - "SIG_K1_K18wTJMMy4h4Gok1KvWZtAJKKYXRTcZdtwDGT8yHxGFTfr8w3okoKsZvY2BBvjLHCxt9Wbxw8wy4Fe5srjbux5sJsBBh8f", - "SIG_K1_JyTfYKd1yRaFb8y5juAMmQ3VuixJreXygAV8QCQbS5de9LbDoDrKo7paPTi2tADYn6rXtz7W9Atoip1Rr57oHNds6ArKsm", - "SIG_K1_KAd89K77ZwNAZTeu1Z3gsWkbgmgAC7QkcUvzXHQMwcid3iG32JSkgbocRmoNSxf62vmQhWFmYXoGBGsJVdWyjJLbQ2y7rw" - ], - "compression": "none", - "packed_context_free_data": "", - "context_free_data": [], - "packed_trx": "7f6b4a6306fafefd77c40000000003a0649a2656ed4dac0000d0155dbabca901a0649a2656ed4dac0000d0155dbabca90820dfacb75098bdb490113253419a7bd5000000572d3ccdcd0120dfacb75098bdb400000000a46962d52120dfacb75098bdb4a0649a2656ed4daca00f000000000000025550580000000000a0649a2656ed4dac000000000000029901a0649a2656ed4dac000000c067175dd62020dfacb75098bdb4b7772dd6034a0000a00f000000000000025550580000000000", - "transaction": { - "expiration": "2022-10-15T08:12:47", - "ref_block_num": 64006, - "ref_block_prefix": 3296198142, - "max_net_usage_words": 0, - "max_cpu_usage_ms": 0, - "delay_sec": 0, - "context_free_actions": [], - "actions": [ - { - "account": "playuplandme", - "name": "payforcpu", - "authorization": [ - { - "actor": "playuplandme", - "permission": "payforcpu" - } - ], - "data": { - "user_name": "qmytko5rpnjm" - }, - "hex_data": "20dfacb75098bdb4" - }, - { - "account": "upxtokenacct", - "name": "transfer", - "authorization": [ - { - "actor": "qmytko5rpnjm", - "permission": "upland" - } - ], - "data": { - "from": "qmytko5rpnjm", - "to": "playuplandme", - "quantity": "40.00 UPX", - "memo": "" - }, - "hex_data": "20dfacb75098bdb4a0649a2656ed4daca00f000000000000025550580000000000" - }, - { - "account": "playuplandme", - "name": "n41", - "authorization": [ - { - "actor": "playuplandme", - "permission": "utility" - } - ], - "data": { - "p51": "qmytko5rpnjm", - "a45": "81380338661303", - "p54": "40.00 UPX" - }, - "hex_data": "20dfacb75098bdb4b7772dd6034a0000a00f0000000000000255505800000000" - } - ] - } - } - }, - { - "status": "executed", - "cpu_usage_us": 24502, - "net_usage_words": 1046, - "trx": { - "id": "cf95cd14f744ee55e5cc957216f530c8146c87869c40ed6d7587c52c9a54fc1f", - "signatures": [ - "SIG_K1_Kj3NXqFue9ufC45sGQMG2LuUttKRqWb5xJNAayydTtux7nDrKyndN2xYqGWWziSL9SkvcUTEuDmVjy6gwVLGoRmGcDytLD" - ], - "compression": "none", - "packed_context_free_data": "", - "context_free_data": [], - "packed_trx": "bb5d4a6361fac2c2d41c000000006400a6823403ea3055000000572d3ccdcd021042e8d13c77754500000000a8ed3232305d8fe6b98b315500000000a8ed323221305d8fe6b98b3155301d459c56ea3055010000000000000004454f53000000000000a6823403ea3055000000572d3ccdcd021042e8d13c77754500000000a8ed3232305d8fe6b98b315500000000a8ed323221305d8fe6b98b3155301d459c56ea3055020000000000000004454f53000000000000a6823403ea3055000000572d3ccdcd021042e8d13c77754500000000a8ed3232305d8fe6b98b315500000000a8ed323221305d8fe6b98b3155301d459c56ea3055020000000000000004454f53000000000000a6823403ea3055000000572d3ccdcd021042e8d13c77754500000000a8ed3232305d8fe6b98b315500000000a8ed323221305d8fe6b98b3155301d459c56ea3055020000000000000004454f53000000000000a6823403ea3055000000572d3ccdcd021042e8d13c77754500000000a8ed3232305d8fe6b98b315500000000a8ed323221305d8fe6b98b3155301d459c56ea3055020000000000000004454f53000000000000a6823403ea3055000000572d3ccdcd021042e8d13c77754500000000a8ed3232305d8fe6b98b315500000000a8ed323221305d8fe6b98b3155301d459c56ea3055020000000000000004454f53000000000000a6823403ea3055000000572d3ccdcd021042e8d13c77754500000000a8ed3232305d8fe6b98b315500000000a8ed323221305d8fe6b98b3155301d459c56ea3055020000000000000004454f53000000000000a6823403ea3055000000572d3ccdcd021042e8d13c77754500000000a8ed3232305d8fe6b98b315500000000a8ed323221305d8fe6b98b3155301d459c56ea3055020000000000000004454f53000000000000a6823403ea3055000000572d3ccdcd021042e8d13c77754500000000a8ed3232305d8fe6b98b315500000000a8ed323221305d8fe6b98b3155301d459c56ea3055020000000000000004454f53000000000000a6823403ea3055000000572d3ccdcd021042e8d13c77754500000000a8ed3232305d8fe6b98b315500000000a8ed323221305d8fe6b98b3155301d459c56ea3055020000000000000004454f53000000000000a6823403ea3055000000572d3ccdcd021042e8d13c77754500000000a8ed3232305d8fe6b98b315500000000a8ed323221305d8fe6b98b3155301d459c56ea3055020000000000000004454f53000000000000a6823403ea3055000000572d3ccdcd021042e8d13c77754500000000a8ed3232305d8fe6b98b315500000000a8ed323221305d8fe6b98b3155301d459c56ea3055020000000000000004454f53000000000000a6823403ea3055000000572d3ccdcd021042e8d13c77754500000000a8ed3232305d8fe6b98b315500000000a8ed323221305d8fe6b98b3155301d459c56ea3055020000000000000004454f53000000000000a6823403ea3055000000572d3ccdcd021042e8d13c77754500000000a8ed3232305d8fe6b98b315500000000a8ed323221305d8fe6b98b3155301d459c56ea3055020000000000000004454f53000000000000a6823403ea3055000000572d3ccdcd021042e8d13c77754500000000a8ed3232305d8fe6b98b315500000000a8ed323221305d8fe6b98b3155301d459c56ea3055020000000000000004454f53000000000000a6823403ea3055000000572d3ccdcd021042e8d13c77754500000000a8ed3232305d8fe6b98b315500000000a8ed323221305d8fe6b98b3155301d459c56ea3055020000000000000004454f53000000000000a6823403ea3055000000572d3ccdcd021042e8d13c77754500000000a8ed3232305d8fe6b98b315500000000a8ed323221305d8fe6b98b3155301d459c56ea3055020000000000000004454f53000000000000a6823403ea3055000000572d3ccdcd021042e8d13c77754500000000a8ed3232305d8fe6b98b315500000000a8ed323221305d8fe6b98b3155301d459c56ea3055020000000000000004454f53000000000000a6823403ea3055000000572d3ccdcd021042e8d13c77754500000000a8ed3232305d8fe6b98b315500000000a8ed323221305d8fe6b98b3155301d459c56ea3055020000000000000004454f53000000000000a6823403ea3055000000572d3ccdcd021042e8d13c77754500000000a8ed3232305d8fe6b98b315500000000a8ed323221305d8fe6b98b3155301d459c56ea3055020000000000000004454f53000000000000a6823403ea3055000000572d3ccdcd021042e8d13c77754500000000a8ed3232305d8fe6b98b315500000000a8ed323221305d8fe6b98b3155301d459c56ea3055020000000000000004454f53000000000000a6823403ea3055000000572d3ccdcd021042e8d13c77754500000000a8ed3232305d8fe6b98b315500000000a8ed323221305d8fe6b98b3155301d459c56ea3055020000000000000004454f53000000000000a6823403ea3055000000572d3ccdcd021042e8d13c77754500000000a8ed3232305d8fe6b98b315500000000a8ed323221305d8fe6b98b3155301d459c56ea3055020000000000000004454f53000000000000a6823403ea3055000000572d3ccdcd021042e8d13c77754500000000a8ed3232305d8fe6b98b315500000000a8ed323221305d8fe6b98b3155301d459c56ea3055020000000000000004454f53000000000000a6823403ea3055000000572d3ccdcd021042e8d13c77754500000000a8ed3232305d8fe6b98b315500000000a8ed323221305d8fe6b98b3155301d459c56ea3055020000000000000004454f53000000000000a6823403ea3055000000572d3ccdcd021042e8d13c77754500000000a8ed3232305d8fe6b98b315500000000a8ed323221305d8fe6b98b3155301d459c56ea3055020000000000000004454f53000000000000a6823403ea3055000000572d3ccdcd021042e8d13c77754500000000a8ed3232305d8fe6b98b315500000000a8ed323221305d8fe6b98b3155301d459c56ea3055020000000000000004454f53000000000000a6823403ea3055000000572d3ccdcd021042e8d13c77754500000000a8ed3232305d8fe6b98b315500000000a8ed323221305d8fe6b98b3155301d459c56ea3055020000000000000004454f53000000000000a6823403ea3055000000572d3ccdcd021042e8d13c77754500000000a8ed3232305d8fe6b98b315500000000a8ed323221305d8fe6b98b3155301d459c56ea3055020000000000000004454f53000000000000a6823403ea3055000000572d3ccdcd021042e8d13c77754500000000a8ed3232305d8fe6b98b315500000000a8ed323221305d8fe6b98b3155301d459c56ea3055020000000000000004454f53000000000000a6823403ea3055000000572d3ccdcd021042e8d13c77754500000000a8ed3232305d8fe6b98b315500000000a8ed323221305d8fe6b98b3155301d459c56ea3055020000000000000004454f53000000000000a6823403ea3055000000572d3ccdcd021042e8d13c77754500000000a8ed3232305d8fe6b98b315500000000a8ed323221305d8fe6b98b3155301d459c56ea3055020000000000000004454f53000000000000a6823403ea3055000000572d3ccdcd021042e8d13c77754500000000a8ed3232305d8fe6b98b315500000000a8ed323221305d8fe6b98b3155301d459c56ea3055020000000000000004454f53000000000000a6823403ea3055000000572d3ccdcd021042e8d13c77754500000000a8ed3232305d8fe6b98b315500000000a8ed323221305d8fe6b98b3155301d459c56ea3055020000000000000004454f53000000000000a6823403ea3055000000572d3ccdcd021042e8d13c77754500000000a8ed3232305d8fe6b98b315500000000a8ed323221305d8fe6b98b3155301d459c56ea3055020000000000000004454f53000000000000a6823403ea3055000000572d3ccdcd021042e8d13c77754500000000a8ed3232305d8fe6b98b315500000000a8ed323221305d8fe6b98b3155301d459c56ea3055020000000000000004454f53000000000000a6823403ea3055000000572d3ccdcd021042e8d13c77754500000000a8ed3232305d8fe6b98b315500000000a8ed323221305d8fe6b98b3155301d459c56ea3055020000000000000004454f53000000000000a6823403ea3055000000572d3ccdcd021042e8d13c77754500000000a8ed3232305d8fe6b98b315500000000a8ed323221305d8fe6b98b3155301d459c56ea3055020000000000000004454f53000000000000a6823403ea3055000000572d3ccdcd021042e8d13c77754500000000a8ed3232305d8fe6b98b315500000000a8ed323221305d8fe6b98b3155301d459c56ea3055020000000000000004454f53000000000000a6823403ea3055000000572d3ccdcd021042e8d13c77754500000000a8ed3232305d8fe6b98b315500000000a8ed323221305d8fe6b98b3155301d459c56ea3055020000000000000004454f53000000000000a6823403ea3055000000572d3ccdcd021042e8d13c77754500000000a8ed3232305d8fe6b98b315500000000a8ed323221305d8fe6b98b3155301d459c56ea3055020000000000000004454f53000000000000a6823403ea3055000000572d3ccdcd021042e8d13c77754500000000a8ed3232305d8fe6b98b315500000000a8ed323221305d8fe6b98b3155301d459c56ea3055020000000000000004454f53000000000000a6823403ea3055000000572d3ccdcd021042e8d13c77754500000000a8ed3232305d8fe6b98b315500000000a8ed323221305d8fe6b98b3155301d459c56ea3055020000000000000004454f53000000000000a6823403ea3055000000572d3ccdcd021042e8d13c77754500000000a8ed3232305d8fe6b98b315500000000a8ed323221305d8fe6b98b3155301d459c56ea3055020000000000000004454f53000000000000a6823403ea3055000000572d3ccdcd021042e8d13c77754500000000a8ed3232305d8fe6b98b315500000000a8ed323221305d8fe6b98b3155301d459c56ea3055020000000000000004454f53000000000000a6823403ea3055000000572d3ccdcd021042e8d13c77754500000000a8ed3232305d8fe6b98b315500000000a8ed323221305d8fe6b98b3155301d459c56ea3055020000000000000004454f53000000000000a6823403ea3055000000572d3ccdcd021042e8d13c77754500000000a8ed3232305d8fe6b98b315500000000a8ed323221305d8fe6b98b3155301d459c56ea3055020000000000000004454f53000000000000a6823403ea3055000000572d3ccdcd021042e8d13c77754500000000a8ed3232305d8fe6b98b315500000000a8ed323221305d8fe6b98b3155301d459c56ea3055020000000000000004454f53000000000000a6823403ea3055000000572d3ccdcd021042e8d13c77754500000000a8ed3232305d8fe6b98b315500000000a8ed323221305d8fe6b98b3155301d459c56ea3055020000000000000004454f53000000000000a6823403ea3055000000572d3ccdcd021042e8d13c77754500000000a8ed3232305d8fe6b98b315500000000a8ed323221305d8fe6b98b3155301d459c56ea3055020000000000000004454f53000000000000a6823403ea3055000000572d3ccdcd021042e8d13c77754500000000a8ed3232305d8fe6b98b315500000000a8ed323221305d8fe6b98b3155301d459c56ea3055020000000000000004454f53000000000000a6823403ea3055000000572d3ccdcd021042e8d13c77754500000000a8ed3232305d8fe6b98b315500000000a8ed323221305d8fe6b98b3155301d459c56ea3055020000000000000004454f53000000000000a6823403ea3055000000572d3ccdcd021042e8d13c77754500000000a8ed3232305d8fe6b98b315500000000a8ed323221305d8fe6b98b3155301d459c56ea3055020000000000000004454f53000000000000a6823403ea3055000000572d3ccdcd021042e8d13c77754500000000a8ed3232305d8fe6b98b315500000000a8ed323221305d8fe6b98b3155301d459c56ea3055020000000000000004454f53000000000000a6823403ea3055000000572d3ccdcd021042e8d13c77754500000000a8ed3232305d8fe6b98b315500000000a8ed323221305d8fe6b98b3155301d459c56ea3055020000000000000004454f53000000000000a6823403ea3055000000572d3ccdcd021042e8d13c77754500000000a8ed3232305d8fe6b98b315500000000a8ed323221305d8fe6b98b3155301d459c56ea3055020000000000000004454f53000000000000a6823403ea3055000000572d3ccdcd021042e8d13c77754500000000a8ed3232305d8fe6b98b315500000000a8ed323221305d8fe6b98b3155301d459c56ea3055020000000000000004454f53000000000000a6823403ea3055000000572d3ccdcd021042e8d13c77754500000000a8ed3232305d8fe6b98b315500000000a8ed323221305d8fe6b98b3155301d459c56ea3055020000000000000004454f53000000000000a6823403ea3055000000572d3ccdcd021042e8d13c77754500000000a8ed3232305d8fe6b98b315500000000a8ed323221305d8fe6b98b3155301d459c56ea3055020000000000000004454f53000000000000a6823403ea3055000000572d3ccdcd021042e8d13c77754500000000a8ed3232305d8fe6b98b315500000000a8ed323221305d8fe6b98b3155301d459c56ea3055020000000000000004454f53000000000000a6823403ea3055000000572d3ccdcd021042e8d13c77754500000000a8ed3232305d8fe6b98b315500000000a8ed323221305d8fe6b98b3155301d459c56ea3055020000000000000004454f53000000000000a6823403ea3055000000572d3ccdcd021042e8d13c77754500000000a8ed3232305d8fe6b98b315500000000a8ed323221305d8fe6b98b3155301d459c56ea3055020000000000000004454f53000000000000a6823403ea3055000000572d3ccdcd021042e8d13c77754500000000a8ed3232305d8fe6b98b315500000000a8ed323221305d8fe6b98b3155301d459c56ea3055020000000000000004454f53000000000000a6823403ea3055000000572d3ccdcd021042e8d13c77754500000000a8ed3232305d8fe6b98b315500000000a8ed323221305d8fe6b98b3155301d459c56ea3055020000000000000004454f53000000000000a6823403ea3055000000572d3ccdcd021042e8d13c77754500000000a8ed3232305d8fe6b98b315500000000a8ed323221305d8fe6b98b3155301d459c56ea3055020000000000000004454f53000000000000a6823403ea3055000000572d3ccdcd021042e8d13c77754500000000a8ed3232305d8fe6b98b315500000000a8ed323221305d8fe6b98b3155301d459c56ea3055020000000000000004454f53000000000000a6823403ea3055000000572d3ccdcd021042e8d13c77754500000000a8ed3232305d8fe6b98b315500000000a8ed323221305d8fe6b98b3155301d459c56ea3055020000000000000004454f53000000000000a6823403ea3055000000572d3ccdcd021042e8d13c77754500000000a8ed3232305d8fe6b98b315500000000a8ed323221305d8fe6b98b3155301d459c56ea3055020000000000000004454f53000000000000a6823403ea3055000000572d3ccdcd021042e8d13c77754500000000a8ed3232305d8fe6b98b315500000000a8ed323221305d8fe6b98b3155301d459c56ea3055020000000000000004454f53000000000000a6823403ea3055000000572d3ccdcd021042e8d13c77754500000000a8ed3232305d8fe6b98b315500000000a8ed323221305d8fe6b98b3155301d459c56ea3055020000000000000004454f53000000000000a6823403ea3055000000572d3ccdcd021042e8d13c77754500000000a8ed3232305d8fe6b98b315500000000a8ed323221305d8fe6b98b3155301d459c56ea3055020000000000000004454f53000000000000a6823403ea3055000000572d3ccdcd021042e8d13c77754500000000a8ed3232305d8fe6b98b315500000000a8ed323221305d8fe6b98b3155301d459c56ea3055020000000000000004454f53000000000000a6823403ea3055000000572d3ccdcd021042e8d13c77754500000000a8ed3232305d8fe6b98b315500000000a8ed323221305d8fe6b98b3155301d459c56ea3055020000000000000004454f53000000000000a6823403ea3055000000572d3ccdcd021042e8d13c77754500000000a8ed3232305d8fe6b98b315500000000a8ed323221305d8fe6b98b3155301d459c56ea3055020000000000000004454f53000000000000a6823403ea3055000000572d3ccdcd021042e8d13c77754500000000a8ed3232305d8fe6b98b315500000000a8ed323221305d8fe6b98b3155301d459c56ea3055010000000000000004454f53000000000000a6823403ea3055000000572d3ccdcd021042e8d13c77754500000000a8ed3232305d8fe6b98b315500000000a8ed323221305d8fe6b98b3155301d459c56ea3055010000000000000004454f53000000000000a6823403ea3055000000572d3ccdcd021042e8d13c77754500000000a8ed3232305d8fe6b98b315500000000a8ed323221305d8fe6b98b3155301d459c56ea3055010000000000000004454f53000000000000a6823403ea3055000000572d3ccdcd021042e8d13c77754500000000a8ed3232305d8fe6b98b315500000000a8ed323221305d8fe6b98b3155301d459c56ea3055010000000000000004454f53000000000000a6823403ea3055000000572d3ccdcd021042e8d13c77754500000000a8ed3232305d8fe6b98b315500000000a8ed323221305d8fe6b98b3155301d459c56ea3055010000000000000004454f53000000000000a6823403ea3055000000572d3ccdcd021042e8d13c77754500000000a8ed3232305d8fe6b98b315500000000a8ed323221305d8fe6b98b3155301d459c56ea3055010000000000000004454f53000000000000a6823403ea3055000000572d3ccdcd021042e8d13c77754500000000a8ed3232305d8fe6b98b315500000000a8ed323221305d8fe6b98b3155301d459c56ea3055010000000000000004454f53000000000000a6823403ea3055000000572d3ccdcd021042e8d13c77754500000000a8ed3232305d8fe6b98b315500000000a8ed323221305d8fe6b98b3155301d459c56ea3055020000000000000004454f53000000000000a6823403ea3055000000572d3ccdcd021042e8d13c77754500000000a8ed3232305d8fe6b98b315500000000a8ed323221305d8fe6b98b3155301d459c56ea3055020000000000000004454f53000000000000a6823403ea3055000000572d3ccdcd021042e8d13c77754500000000a8ed3232305d8fe6b98b315500000000a8ed323221305d8fe6b98b3155301d459c56ea3055020000000000000004454f53000000000000a6823403ea3055000000572d3ccdcd021042e8d13c77754500000000a8ed3232305d8fe6b98b315500000000a8ed323221305d8fe6b98b3155301d459c56ea3055020000000000000004454f53000000000000a6823403ea3055000000572d3ccdcd021042e8d13c77754500000000a8ed3232305d8fe6b98b315500000000a8ed323221305d8fe6b98b3155301d459c56ea3055020000000000000004454f53000000000000a6823403ea3055000000572d3ccdcd021042e8d13c77754500000000a8ed3232305d8fe6b98b315500000000a8ed323221305d8fe6b98b3155301d459c56ea3055020000000000000004454f53000000000000a6823403ea3055000000572d3ccdcd021042e8d13c77754500000000a8ed3232305d8fe6b98b315500000000a8ed323221305d8fe6b98b3155301d459c56ea3055020000000000000004454f53000000000000a6823403ea3055000000572d3ccdcd021042e8d13c77754500000000a8ed3232305d8fe6b98b315500000000a8ed323221305d8fe6b98b3155301d459c56ea3055020000000000000004454f53000000000000a6823403ea3055000000572d3ccdcd021042e8d13c77754500000000a8ed3232305d8fe6b98b315500000000a8ed323221305d8fe6b98b3155301d459c56ea3055020000000000000004454f53000000000000a6823403ea3055000000572d3ccdcd021042e8d13c77754500000000a8ed3232305d8fe6b98b315500000000a8ed323221305d8fe6b98b3155301d459c56ea3055010000000000000004454f53000000000000a6823403ea3055000000572d3ccdcd021042e8d13c77754500000000a8ed3232305d8fe6b98b315500000000a8ed323221305d8fe6b98b3155301d459c56ea3055020000000000000004454f53000000000000a6823403ea3055000000572d3ccdcd021042e8d13c77754500000000a8ed3232305d8fe6b98b315500000000a8ed323221305d8fe6b98b3155301d459c56ea3055020000000000000004454f53000000000000a6823403ea3055000000572d3ccdcd021042e8d13c77754500000000a8ed3232305d8fe6b98b315500000000a8ed323221305d8fe6b98b3155301d459c56ea3055020000000000000004454f53000000000000a6823403ea3055000000572d3ccdcd021042e8d13c77754500000000a8ed3232305d8fe6b98b315500000000a8ed323221305d8fe6b98b3155301d459c56ea3055020000000000000004454f53000000000000a6823403ea3055000000572d3ccdcd021042e8d13c77754500000000a8ed3232305d8fe6b98b315500000000a8ed323221305d8fe6b98b3155301d459c56ea3055020000000000000004454f53000000000000a6823403ea3055000000572d3ccdcd021042e8d13c77754500000000a8ed3232305d8fe6b98b315500000000a8ed323221305d8fe6b98b3155301d459c56ea3055020000000000000004454f53000000000000a6823403ea3055000000572d3ccdcd021042e8d13c77754500000000a8ed3232305d8fe6b98b315500000000a8ed323221305d8fe6b98b3155301d459c56ea3055020000000000000004454f53000000000000a6823403ea3055000000572d3ccdcd021042e8d13c77754500000000a8ed3232305d8fe6b98b315500000000a8ed323221305d8fe6b98b3155301d459c56ea3055020000000000000004454f530000000000301d459c56ea3055000000572d3ccdcd021042e8d13c77754500000000a8ed3232305d8fe6b98b315500000000a8ed32322b305d8fe6b98b31550000704b25500dc780b2e60e0000000008504f57000000000a737761702c302c31323800", - "transaction": { - "expiration": "2022-10-15T07:14:03", - "ref_block_num": 64097, - "ref_block_prefix": 483705538, - "max_net_usage_words": 0, - "max_cpu_usage_ms": 0, - "delay_sec": 0, - "context_free_actions": [], - "actions": [ - { - "account": "eosio.token", - "name": "transfer", - "authorization": [ - { - "actor": "cpurijalx111", - "permission": "active" - }, - { - "actor": "eossrijalxin", - "permission": "active" - } - ], - "data": { - "from": "eossrijalxin", - "to": "eosiopowcoin", - "quantity": "0.0001 EOS", - "memo": "" - }, - "hex_data": "305d8fe6b98b3155301d459c56ea3055010000000000000004454f530000000000" - }, - { - "account": "eosio.token", - "name": "transfer", - "authorization": [ - { - "actor": "cpurijalx111", - "permission": "active" - }, - { - "actor": "eossrijalxin", - "permission": "active" - } - ], - "data": { - "from": "eossrijalxin", - "to": "eosiopowcoin", - "quantity": "0.0002 EOS", - "memo": "" - }, - "hex_data": "305d8fe6b98b3155301d459c56ea3055020000000000000004454f530000000000" - }, - { - "account": "eosio.token", - "name": "transfer", - "authorization": [ - { - "actor": "cpurijalx111", - "permission": "active" - }, - { - "actor": "eossrijalxin", - "permission": "active" - } - ], - "data": { - "from": "eossrijalxin", - "to": "eosiopowcoin", - "quantity": "0.0002 EOS", - "memo": "" - }, - "hex_data": "305d8fe6b98b3155301d459c56ea3055020000000000000004454f530000000000" - }, - { - "account": "eosio.token", - "name": "transfer", - "authorization": [ - { - "actor": "cpurijalx111", - "permission": "active" - }, - { - "actor": "eossrijalxin", - "permission": "active" - } - ], - "data": { - "from": "eossrijalxin", - "to": "eosiopowcoin", - "quantity": "0.0002 EOS", - "memo": "" - }, - "hex_data": "305d8fe6b98b3155301d459c56ea3055020000000000000004454f530000000000" - }, - { - "account": "eosio.token", - "name": "transfer", - "authorization": [ - { - "actor": "cpurijalx111", - "permission": "active" - }, - { - "actor": "eossrijalxin", - "permission": "active" - } - ], - "data": { - "from": "eossrijalxin", - "to": "eosiopowcoin", - "quantity": "0.0002 EOS", - "memo": "" - }, - "hex_data": "305d8fe6b98b3155301d459c56ea3055020000000000000004454f530000000000" - }, - { - "account": "eosio.token", - "name": "transfer", - "authorization": [ - { - "actor": "cpurijalx111", - "permission": "active" - }, - { - "actor": "eossrijalxin", - "permission": "active" - } - ], - "data": { - "from": "eossrijalxin", - "to": "eosiopowcoin", - "quantity": "0.0002 EOS", - "memo": "" - }, - "hex_data": "305d8fe6b98b3155301d459c56ea3055020000000000000004454f530000000000" - }, - { - "account": "eosio.token", - "name": "transfer", - "authorization": [ - { - "actor": "cpurijalx111", - "permission": "active" - }, - { - "actor": "eossrijalxin", - "permission": "active" - } - ], - "data": { - "from": "eossrijalxin", - "to": "eosiopowcoin", - "quantity": "0.0002 EOS", - "memo": "" - }, - "hex_data": "305d8fe6b98b3155301d459c56ea3055020000000000000004454f530000000000" - }, - { - "account": "eosio.token", - "name": "transfer", - "authorization": [ - { - "actor": "cpurijalx111", - "permission": "active" - }, - { - "actor": "eossrijalxin", - "permission": "active" - } - ], - "data": { - "from": "eossrijalxin", - "to": "eosiopowcoin", - "quantity": "0.0002 EOS", - "memo": "" - }, - "hex_data": "305d8fe6b98b3155301d459c56ea3055020000000000000004454f530000000000" - }, - { - "account": "eosio.token", - "name": "transfer", - "authorization": [ - { - "actor": "cpurijalx111", - "permission": "active" - }, - { - "actor": "eossrijalxin", - "permission": "active" - } - ], - "data": { - "from": "eossrijalxin", - "to": "eosiopowcoin", - "quantity": "0.0002 EOS", - "memo": "" - }, - "hex_data": "305d8fe6b98b3155301d459c56ea3055020000000000000004454f530000000000" - }, - { - "account": "eosio.token", - "name": "transfer", - "authorization": [ - { - "actor": "cpurijalx111", - "permission": "active" - }, - { - "actor": "eossrijalxin", - "permission": "active" - } - ], - "data": { - "from": "eossrijalxin", - "to": "eosiopowcoin", - "quantity": "0.0002 EOS", - "memo": "" - }, - "hex_data": "305d8fe6b98b3155301d459c56ea3055020000000000000004454f530000000000" - }, - { - "account": "eosio.token", - "name": "transfer", - "authorization": [ - { - "actor": "cpurijalx111", - "permission": "active" - }, - { - "actor": "eossrijalxin", - "permission": "active" - } - ], - "data": { - "from": "eossrijalxin", - "to": "eosiopowcoin", - "quantity": "0.0002 EOS", - "memo": "" - }, - "hex_data": "305d8fe6b98b3155301d459c56ea3055020000000000000004454f530000000000" - }, - { - "account": "eosio.token", - "name": "transfer", - "authorization": [ - { - "actor": "cpurijalx111", - "permission": "active" - }, - { - "actor": "eossrijalxin", - "permission": "active" - } - ], - "data": { - "from": "eossrijalxin", - "to": "eosiopowcoin", - "quantity": "0.0002 EOS", - "memo": "" - }, - "hex_data": "305d8fe6b98b3155301d459c56ea3055020000000000000004454f530000000000" - }, - { - "account": "eosio.token", - "name": "transfer", - "authorization": [ - { - "actor": "cpurijalx111", - "permission": "active" - }, - { - "actor": "eossrijalxin", - "permission": "active" - } - ], - "data": { - "from": "eossrijalxin", - "to": "eosiopowcoin", - "quantity": "0.0002 EOS", - "memo": "" - }, - "hex_data": "305d8fe6b98b3155301d459c56ea3055020000000000000004454f530000000000" - }, - { - "account": "eosio.token", - "name": "transfer", - "authorization": [ - { - "actor": "cpurijalx111", - "permission": "active" - }, - { - "actor": "eossrijalxin", - "permission": "active" - } - ], - "data": { - "from": "eossrijalxin", - "to": "eosiopowcoin", - "quantity": "0.0002 EOS", - "memo": "" - }, - "hex_data": "305d8fe6b98b3155301d459c56ea3055020000000000000004454f530000000000" - }, - { - "account": "eosio.token", - "name": "transfer", - "authorization": [ - { - "actor": "cpurijalx111", - "permission": "active" - }, - { - "actor": "eossrijalxin", - "permission": "active" - } - ], - "data": { - "from": "eossrijalxin", - "to": "eosiopowcoin", - "quantity": "0.0002 EOS", - "memo": "" - }, - "hex_data": "305d8fe6b98b3155301d459c56ea3055020000000000000004454f530000000000" - }, - { - "account": "eosio.token", - "name": "transfer", - "authorization": [ - { - "actor": "cpurijalx111", - "permission": "active" - }, - { - "actor": "eossrijalxin", - "permission": "active" - } - ], - "data": { - "from": "eossrijalxin", - "to": "eosiopowcoin", - "quantity": "0.0002 EOS", - "memo": "" - }, - "hex_data": "305d8fe6b98b3155301d459c56ea3055020000000000000004454f530000000000" - }, - { - "account": "eosio.token", - "name": "transfer", - "authorization": [ - { - "actor": "cpurijalx111", - "permission": "active" - }, - { - "actor": "eossrijalxin", - "permission": "active" - } - ], - "data": { - "from": "eossrijalxin", - "to": "eosiopowcoin", - "quantity": "0.0002 EOS", - "memo": "" - }, - "hex_data": "305d8fe6b98b3155301d459c56ea3055020000000000000004454f530000000000" - }, - { - "account": "eosio.token", - "name": "transfer", - "authorization": [ - { - "actor": "cpurijalx111", - "permission": "active" - }, - { - "actor": "eossrijalxin", - "permission": "active" - } - ], - "data": { - "from": "eossrijalxin", - "to": "eosiopowcoin", - "quantity": "0.0002 EOS", - "memo": "" - }, - "hex_data": "305d8fe6b98b3155301d459c56ea3055020000000000000004454f530000000000" - }, - { - "account": "eosio.token", - "name": "transfer", - "authorization": [ - { - "actor": "cpurijalx111", - "permission": "active" - }, - { - "actor": "eossrijalxin", - "permission": "active" - } - ], - "data": { - "from": "eossrijalxin", - "to": "eosiopowcoin", - "quantity": "0.0002 EOS", - "memo": "" - }, - "hex_data": "305d8fe6b98b3155301d459c56ea3055020000000000000004454f530000000000" - }, - { - "account": "eosio.token", - "name": "transfer", - "authorization": [ - { - "actor": "cpurijalx111", - "permission": "active" - }, - { - "actor": "eossrijalxin", - "permission": "active" - } - ], - "data": { - "from": "eossrijalxin", - "to": "eosiopowcoin", - "quantity": "0.0002 EOS", - "memo": "" - }, - "hex_data": "305d8fe6b98b3155301d459c56ea3055020000000000000004454f530000000000" - }, - { - "account": "eosio.token", - "name": "transfer", - "authorization": [ - { - "actor": "cpurijalx111", - "permission": "active" - }, - { - "actor": "eossrijalxin", - "permission": "active" - } - ], - "data": { - "from": "eossrijalxin", - "to": "eosiopowcoin", - "quantity": "0.0002 EOS", - "memo": "" - }, - "hex_data": "305d8fe6b98b3155301d459c56ea3055020000000000000004454f530000000000" - }, - { - "account": "eosio.token", - "name": "transfer", - "authorization": [ - { - "actor": "cpurijalx111", - "permission": "active" - }, - { - "actor": "eossrijalxin", - "permission": "active" - } - ], - "data": { - "from": "eossrijalxin", - "to": "eosiopowcoin", - "quantity": "0.0002 EOS", - "memo": "" - }, - "hex_data": "305d8fe6b98b3155301d459c56ea3055020000000000000004454f530000000000" - }, - { - "account": "eosio.token", - "name": "transfer", - "authorization": [ - { - "actor": "cpurijalx111", - "permission": "active" - }, - { - "actor": "eossrijalxin", - "permission": "active" - } - ], - "data": { - "from": "eossrijalxin", - "to": "eosiopowcoin", - "quantity": "0.0002 EOS", - "memo": "" - }, - "hex_data": "305d8fe6b98b3155301d459c56ea3055020000000000000004454f530000000000" - }, - { - "account": "eosio.token", - "name": "transfer", - "authorization": [ - { - "actor": "cpurijalx111", - "permission": "active" - }, - { - "actor": "eossrijalxin", - "permission": "active" - } - ], - "data": { - "from": "eossrijalxin", - "to": "eosiopowcoin", - "quantity": "0.0002 EOS", - "memo": "" - }, - "hex_data": "305d8fe6b98b3155301d459c56ea3055020000000000000004454f530000000000" - }, - { - "account": "eosio.token", - "name": "transfer", - "authorization": [ - { - "actor": "cpurijalx111", - "permission": "active" - }, - { - "actor": "eossrijalxin", - "permission": "active" - } - ], - "data": { - "from": "eossrijalxin", - "to": "eosiopowcoin", - "quantity": "0.0002 EOS", - "memo": "" - }, - "hex_data": "305d8fe6b98b3155301d459c56ea3055020000000000000004454f530000000000" - }, - { - "account": "eosio.token", - "name": "transfer", - "authorization": [ - { - "actor": "cpurijalx111", - "permission": "active" - }, - { - "actor": "eossrijalxin", - "permission": "active" - } - ], - "data": { - "from": "eossrijalxin", - "to": "eosiopowcoin", - "quantity": "0.0002 EOS", - "memo": "" - }, - "hex_data": "305d8fe6b98b3155301d459c56ea3055020000000000000004454f530000000000" - }, - { - "account": "eosio.token", - "name": "transfer", - "authorization": [ - { - "actor": "cpurijalx111", - "permission": "active" - }, - { - "actor": "eossrijalxin", - "permission": "active" - } - ], - "data": { - "from": "eossrijalxin", - "to": "eosiopowcoin", - "quantity": "0.0002 EOS", - "memo": "" - }, - "hex_data": "305d8fe6b98b3155301d459c56ea3055020000000000000004454f530000000000" - }, - { - "account": "eosio.token", - "name": "transfer", - "authorization": [ - { - "actor": "cpurijalx111", - "permission": "active" - }, - { - "actor": "eossrijalxin", - "permission": "active" - } - ], - "data": { - "from": "eossrijalxin", - "to": "eosiopowcoin", - "quantity": "0.0002 EOS", - "memo": "" - }, - "hex_data": "305d8fe6b98b3155301d459c56ea3055020000000000000004454f530000000000" - }, - { - "account": "eosio.token", - "name": "transfer", - "authorization": [ - { - "actor": "cpurijalx111", - "permission": "active" - }, - { - "actor": "eossrijalxin", - "permission": "active" - } - ], - "data": { - "from": "eossrijalxin", - "to": "eosiopowcoin", - "quantity": "0.0002 EOS", - "memo": "" - }, - "hex_data": "305d8fe6b98b3155301d459c56ea3055020000000000000004454f530000000000" - }, - { - "account": "eosio.token", - "name": "transfer", - "authorization": [ - { - "actor": "cpurijalx111", - "permission": "active" - }, - { - "actor": "eossrijalxin", - "permission": "active" - } - ], - "data": { - "from": "eossrijalxin", - "to": "eosiopowcoin", - "quantity": "0.0002 EOS", - "memo": "" - }, - "hex_data": "305d8fe6b98b3155301d459c56ea3055020000000000000004454f530000000000" - }, - { - "account": "eosio.token", - "name": "transfer", - "authorization": [ - { - "actor": "cpurijalx111", - "permission": "active" - }, - { - "actor": "eossrijalxin", - "permission": "active" - } - ], - "data": { - "from": "eossrijalxin", - "to": "eosiopowcoin", - "quantity": "0.0002 EOS", - "memo": "" - }, - "hex_data": "305d8fe6b98b3155301d459c56ea3055020000000000000004454f530000000000" - }, - { - "account": "eosio.token", - "name": "transfer", - "authorization": [ - { - "actor": "cpurijalx111", - "permission": "active" - }, - { - "actor": "eossrijalxin", - "permission": "active" - } - ], - "data": { - "from": "eossrijalxin", - "to": "eosiopowcoin", - "quantity": "0.0002 EOS", - "memo": "" - }, - "hex_data": "305d8fe6b98b3155301d459c56ea3055020000000000000004454f530000000000" - }, - { - "account": "eosio.token", - "name": "transfer", - "authorization": [ - { - "actor": "cpurijalx111", - "permission": "active" - }, - { - "actor": "eossrijalxin", - "permission": "active" - } - ], - "data": { - "from": "eossrijalxin", - "to": "eosiopowcoin", - "quantity": "0.0002 EOS", - "memo": "" - }, - "hex_data": "305d8fe6b98b3155301d459c56ea3055020000000000000004454f530000000000" - }, - { - "account": "eosio.token", - "name": "transfer", - "authorization": [ - { - "actor": "cpurijalx111", - "permission": "active" - }, - { - "actor": "eossrijalxin", - "permission": "active" - } - ], - "data": { - "from": "eossrijalxin", - "to": "eosiopowcoin", - "quantity": "0.0002 EOS", - "memo": "" - }, - "hex_data": "305d8fe6b98b3155301d459c56ea3055020000000000000004454f530000000000" - }, - { - "account": "eosio.token", - "name": "transfer", - "authorization": [ - { - "actor": "cpurijalx111", - "permission": "active" - }, - { - "actor": "eossrijalxin", - "permission": "active" - } - ], - "data": { - "from": "eossrijalxin", - "to": "eosiopowcoin", - "quantity": "0.0002 EOS", - "memo": "" - }, - "hex_data": "305d8fe6b98b3155301d459c56ea3055020000000000000004454f530000000000" - }, - { - "account": "eosio.token", - "name": "transfer", - "authorization": [ - { - "actor": "cpurijalx111", - "permission": "active" - }, - { - "actor": "eossrijalxin", - "permission": "active" - } - ], - "data": { - "from": "eossrijalxin", - "to": "eosiopowcoin", - "quantity": "0.0002 EOS", - "memo": "" - }, - "hex_data": "305d8fe6b98b3155301d459c56ea3055020000000000000004454f530000000000" - }, - { - "account": "eosio.token", - "name": "transfer", - "authorization": [ - { - "actor": "cpurijalx111", - "permission": "active" - }, - { - "actor": "eossrijalxin", - "permission": "active" - } - ], - "data": { - "from": "eossrijalxin", - "to": "eosiopowcoin", - "quantity": "0.0002 EOS", - "memo": "" - }, - "hex_data": "305d8fe6b98b3155301d459c56ea3055020000000000000004454f530000000000" - }, - { - "account": "eosio.token", - "name": "transfer", - "authorization": [ - { - "actor": "cpurijalx111", - "permission": "active" - }, - { - "actor": "eossrijalxin", - "permission": "active" - } - ], - "data": { - "from": "eossrijalxin", - "to": "eosiopowcoin", - "quantity": "0.0002 EOS", - "memo": "" - }, - "hex_data": "305d8fe6b98b3155301d459c56ea3055020000000000000004454f530000000000" - }, - { - "account": "eosio.token", - "name": "transfer", - "authorization": [ - { - "actor": "cpurijalx111", - "permission": "active" - }, - { - "actor": "eossrijalxin", - "permission": "active" - } - ], - "data": { - "from": "eossrijalxin", - "to": "eosiopowcoin", - "quantity": "0.0002 EOS", - "memo": "" - }, - "hex_data": "305d8fe6b98b3155301d459c56ea3055020000000000000004454f530000000000" - }, - { - "account": "eosio.token", - "name": "transfer", - "authorization": [ - { - "actor": "cpurijalx111", - "permission": "active" - }, - { - "actor": "eossrijalxin", - "permission": "active" - } - ], - "data": { - "from": "eossrijalxin", - "to": "eosiopowcoin", - "quantity": "0.0002 EOS", - "memo": "" - }, - "hex_data": "305d8fe6b98b3155301d459c56ea3055020000000000000004454f530000000000" - }, - { - "account": "eosio.token", - "name": "transfer", - "authorization": [ - { - "actor": "cpurijalx111", - "permission": "active" - }, - { - "actor": "eossrijalxin", - "permission": "active" - } - ], - "data": { - "from": "eossrijalxin", - "to": "eosiopowcoin", - "quantity": "0.0002 EOS", - "memo": "" - }, - "hex_data": "305d8fe6b98b3155301d459c56ea3055020000000000000004454f530000000000" - }, - { - "account": "eosio.token", - "name": "transfer", - "authorization": [ - { - "actor": "cpurijalx111", - "permission": "active" - }, - { - "actor": "eossrijalxin", - "permission": "active" - } - ], - "data": { - "from": "eossrijalxin", - "to": "eosiopowcoin", - "quantity": "0.0002 EOS", - "memo": "" - }, - "hex_data": "305d8fe6b98b3155301d459c56ea3055020000000000000004454f530000000000" - }, - { - "account": "eosio.token", - "name": "transfer", - "authorization": [ - { - "actor": "cpurijalx111", - "permission": "active" - }, - { - "actor": "eossrijalxin", - "permission": "active" - } - ], - "data": { - "from": "eossrijalxin", - "to": "eosiopowcoin", - "quantity": "0.0002 EOS", - "memo": "" - }, - "hex_data": "305d8fe6b98b3155301d459c56ea3055020000000000000004454f530000000000" - }, - { - "account": "eosio.token", - "name": "transfer", - "authorization": [ - { - "actor": "cpurijalx111", - "permission": "active" - }, - { - "actor": "eossrijalxin", - "permission": "active" - } - ], - "data": { - "from": "eossrijalxin", - "to": "eosiopowcoin", - "quantity": "0.0002 EOS", - "memo": "" - }, - "hex_data": "305d8fe6b98b3155301d459c56ea3055020000000000000004454f530000000000" - }, - { - "account": "eosio.token", - "name": "transfer", - "authorization": [ - { - "actor": "cpurijalx111", - "permission": "active" - }, - { - "actor": "eossrijalxin", - "permission": "active" - } - ], - "data": { - "from": "eossrijalxin", - "to": "eosiopowcoin", - "quantity": "0.0002 EOS", - "memo": "" - }, - "hex_data": "305d8fe6b98b3155301d459c56ea3055020000000000000004454f530000000000" - }, - { - "account": "eosio.token", - "name": "transfer", - "authorization": [ - { - "actor": "cpurijalx111", - "permission": "active" - }, - { - "actor": "eossrijalxin", - "permission": "active" - } - ], - "data": { - "from": "eossrijalxin", - "to": "eosiopowcoin", - "quantity": "0.0002 EOS", - "memo": "" - }, - "hex_data": "305d8fe6b98b3155301d459c56ea3055020000000000000004454f530000000000" - }, - { - "account": "eosio.token", - "name": "transfer", - "authorization": [ - { - "actor": "cpurijalx111", - "permission": "active" - }, - { - "actor": "eossrijalxin", - "permission": "active" - } - ], - "data": { - "from": "eossrijalxin", - "to": "eosiopowcoin", - "quantity": "0.0002 EOS", - "memo": "" - }, - "hex_data": "305d8fe6b98b3155301d459c56ea3055020000000000000004454f530000000000" - }, - { - "account": "eosio.token", - "name": "transfer", - "authorization": [ - { - "actor": "cpurijalx111", - "permission": "active" - }, - { - "actor": "eossrijalxin", - "permission": "active" - } - ], - "data": { - "from": "eossrijalxin", - "to": "eosiopowcoin", - "quantity": "0.0002 EOS", - "memo": "" - }, - "hex_data": "305d8fe6b98b3155301d459c56ea3055020000000000000004454f530000000000" - }, - { - "account": "eosio.token", - "name": "transfer", - "authorization": [ - { - "actor": "cpurijalx111", - "permission": "active" - }, - { - "actor": "eossrijalxin", - "permission": "active" - } - ], - "data": { - "from": "eossrijalxin", - "to": "eosiopowcoin", - "quantity": "0.0002 EOS", - "memo": "" - }, - "hex_data": "305d8fe6b98b3155301d459c56ea3055020000000000000004454f530000000000" - }, - { - "account": "eosio.token", - "name": "transfer", - "authorization": [ - { - "actor": "cpurijalx111", - "permission": "active" - }, - { - "actor": "eossrijalxin", - "permission": "active" - } - ], - "data": { - "from": "eossrijalxin", - "to": "eosiopowcoin", - "quantity": "0.0002 EOS", - "memo": "" - }, - "hex_data": "305d8fe6b98b3155301d459c56ea3055020000000000000004454f530000000000" - }, - { - "account": "eosio.token", - "name": "transfer", - "authorization": [ - { - "actor": "cpurijalx111", - "permission": "active" - }, - { - "actor": "eossrijalxin", - "permission": "active" - } - ], - "data": { - "from": "eossrijalxin", - "to": "eosiopowcoin", - "quantity": "0.0002 EOS", - "memo": "" - }, - "hex_data": "305d8fe6b98b3155301d459c56ea3055020000000000000004454f530000000000" - }, - { - "account": "eosio.token", - "name": "transfer", - "authorization": [ - { - "actor": "cpurijalx111", - "permission": "active" - }, - { - "actor": "eossrijalxin", - "permission": "active" - } - ], - "data": { - "from": "eossrijalxin", - "to": "eosiopowcoin", - "quantity": "0.0002 EOS", - "memo": "" - }, - "hex_data": "305d8fe6b98b3155301d459c56ea3055020000000000000004454f530000000000" - }, - { - "account": "eosio.token", - "name": "transfer", - "authorization": [ - { - "actor": "cpurijalx111", - "permission": "active" - }, - { - "actor": "eossrijalxin", - "permission": "active" - } - ], - "data": { - "from": "eossrijalxin", - "to": "eosiopowcoin", - "quantity": "0.0002 EOS", - "memo": "" - }, - "hex_data": "305d8fe6b98b3155301d459c56ea3055020000000000000004454f530000000000" - }, - { - "account": "eosio.token", - "name": "transfer", - "authorization": [ - { - "actor": "cpurijalx111", - "permission": "active" - }, - { - "actor": "eossrijalxin", - "permission": "active" - } - ], - "data": { - "from": "eossrijalxin", - "to": "eosiopowcoin", - "quantity": "0.0002 EOS", - "memo": "" - }, - "hex_data": "305d8fe6b98b3155301d459c56ea3055020000000000000004454f530000000000" - }, - { - "account": "eosio.token", - "name": "transfer", - "authorization": [ - { - "actor": "cpurijalx111", - "permission": "active" - }, - { - "actor": "eossrijalxin", - "permission": "active" - } - ], - "data": { - "from": "eossrijalxin", - "to": "eosiopowcoin", - "quantity": "0.0002 EOS", - "memo": "" - }, - "hex_data": "305d8fe6b98b3155301d459c56ea3055020000000000000004454f530000000000" - }, - { - "account": "eosio.token", - "name": "transfer", - "authorization": [ - { - "actor": "cpurijalx111", - "permission": "active" - }, - { - "actor": "eossrijalxin", - "permission": "active" - } - ], - "data": { - "from": "eossrijalxin", - "to": "eosiopowcoin", - "quantity": "0.0002 EOS", - "memo": "" - }, - "hex_data": "305d8fe6b98b3155301d459c56ea3055020000000000000004454f530000000000" - }, - { - "account": "eosio.token", - "name": "transfer", - "authorization": [ - { - "actor": "cpurijalx111", - "permission": "active" - }, - { - "actor": "eossrijalxin", - "permission": "active" - } - ], - "data": { - "from": "eossrijalxin", - "to": "eosiopowcoin", - "quantity": "0.0002 EOS", - "memo": "" - }, - "hex_data": "305d8fe6b98b3155301d459c56ea3055020000000000000004454f530000000000" - }, - { - "account": "eosio.token", - "name": "transfer", - "authorization": [ - { - "actor": "cpurijalx111", - "permission": "active" - }, - { - "actor": "eossrijalxin", - "permission": "active" - } - ], - "data": { - "from": "eossrijalxin", - "to": "eosiopowcoin", - "quantity": "0.0002 EOS", - "memo": "" - }, - "hex_data": "305d8fe6b98b3155301d459c56ea3055020000000000000004454f530000000000" - }, - { - "account": "eosio.token", - "name": "transfer", - "authorization": [ - { - "actor": "cpurijalx111", - "permission": "active" - }, - { - "actor": "eossrijalxin", - "permission": "active" - } - ], - "data": { - "from": "eossrijalxin", - "to": "eosiopowcoin", - "quantity": "0.0002 EOS", - "memo": "" - }, - "hex_data": "305d8fe6b98b3155301d459c56ea3055020000000000000004454f530000000000" - }, - { - "account": "eosio.token", - "name": "transfer", - "authorization": [ - { - "actor": "cpurijalx111", - "permission": "active" - }, - { - "actor": "eossrijalxin", - "permission": "active" - } - ], - "data": { - "from": "eossrijalxin", - "to": "eosiopowcoin", - "quantity": "0.0002 EOS", - "memo": "" - }, - "hex_data": "305d8fe6b98b3155301d459c56ea3055020000000000000004454f530000000000" - }, - { - "account": "eosio.token", - "name": "transfer", - "authorization": [ - { - "actor": "cpurijalx111", - "permission": "active" - }, - { - "actor": "eossrijalxin", - "permission": "active" - } - ], - "data": { - "from": "eossrijalxin", - "to": "eosiopowcoin", - "quantity": "0.0002 EOS", - "memo": "" - }, - "hex_data": "305d8fe6b98b3155301d459c56ea3055020000000000000004454f530000000000" - }, - { - "account": "eosio.token", - "name": "transfer", - "authorization": [ - { - "actor": "cpurijalx111", - "permission": "active" - }, - { - "actor": "eossrijalxin", - "permission": "active" - } - ], - "data": { - "from": "eossrijalxin", - "to": "eosiopowcoin", - "quantity": "0.0002 EOS", - "memo": "" - }, - "hex_data": "305d8fe6b98b3155301d459c56ea3055020000000000000004454f530000000000" - }, - { - "account": "eosio.token", - "name": "transfer", - "authorization": [ - { - "actor": "cpurijalx111", - "permission": "active" - }, - { - "actor": "eossrijalxin", - "permission": "active" - } - ], - "data": { - "from": "eossrijalxin", - "to": "eosiopowcoin", - "quantity": "0.0002 EOS", - "memo": "" - }, - "hex_data": "305d8fe6b98b3155301d459c56ea3055020000000000000004454f530000000000" - }, - { - "account": "eosio.token", - "name": "transfer", - "authorization": [ - { - "actor": "cpurijalx111", - "permission": "active" - }, - { - "actor": "eossrijalxin", - "permission": "active" - } - ], - "data": { - "from": "eossrijalxin", - "to": "eosiopowcoin", - "quantity": "0.0002 EOS", - "memo": "" - }, - "hex_data": "305d8fe6b98b3155301d459c56ea3055020000000000000004454f530000000000" - }, - { - "account": "eosio.token", - "name": "transfer", - "authorization": [ - { - "actor": "cpurijalx111", - "permission": "active" - }, - { - "actor": "eossrijalxin", - "permission": "active" - } - ], - "data": { - "from": "eossrijalxin", - "to": "eosiopowcoin", - "quantity": "0.0002 EOS", - "memo": "" - }, - "hex_data": "305d8fe6b98b3155301d459c56ea3055020000000000000004454f530000000000" - }, - { - "account": "eosio.token", - "name": "transfer", - "authorization": [ - { - "actor": "cpurijalx111", - "permission": "active" - }, - { - "actor": "eossrijalxin", - "permission": "active" - } - ], - "data": { - "from": "eossrijalxin", - "to": "eosiopowcoin", - "quantity": "0.0002 EOS", - "memo": "" - }, - "hex_data": "305d8fe6b98b3155301d459c56ea3055020000000000000004454f530000000000" - }, - { - "account": "eosio.token", - "name": "transfer", - "authorization": [ - { - "actor": "cpurijalx111", - "permission": "active" - }, - { - "actor": "eossrijalxin", - "permission": "active" - } - ], - "data": { - "from": "eossrijalxin", - "to": "eosiopowcoin", - "quantity": "0.0002 EOS", - "memo": "" - }, - "hex_data": "305d8fe6b98b3155301d459c56ea3055020000000000000004454f530000000000" - }, - { - "account": "eosio.token", - "name": "transfer", - "authorization": [ - { - "actor": "cpurijalx111", - "permission": "active" - }, - { - "actor": "eossrijalxin", - "permission": "active" - } - ], - "data": { - "from": "eossrijalxin", - "to": "eosiopowcoin", - "quantity": "0.0002 EOS", - "memo": "" - }, - "hex_data": "305d8fe6b98b3155301d459c56ea3055020000000000000004454f530000000000" - }, - { - "account": "eosio.token", - "name": "transfer", - "authorization": [ - { - "actor": "cpurijalx111", - "permission": "active" - }, - { - "actor": "eossrijalxin", - "permission": "active" - } - ], - "data": { - "from": "eossrijalxin", - "to": "eosiopowcoin", - "quantity": "0.0002 EOS", - "memo": "" - }, - "hex_data": "305d8fe6b98b3155301d459c56ea3055020000000000000004454f530000000000" - }, - { - "account": "eosio.token", - "name": "transfer", - "authorization": [ - { - "actor": "cpurijalx111", - "permission": "active" - }, - { - "actor": "eossrijalxin", - "permission": "active" - } - ], - "data": { - "from": "eossrijalxin", - "to": "eosiopowcoin", - "quantity": "0.0002 EOS", - "memo": "" - }, - "hex_data": "305d8fe6b98b3155301d459c56ea3055020000000000000004454f530000000000" - }, - { - "account": "eosio.token", - "name": "transfer", - "authorization": [ - { - "actor": "cpurijalx111", - "permission": "active" - }, - { - "actor": "eossrijalxin", - "permission": "active" - } - ], - "data": { - "from": "eossrijalxin", - "to": "eosiopowcoin", - "quantity": "0.0002 EOS", - "memo": "" - }, - "hex_data": "305d8fe6b98b3155301d459c56ea3055020000000000000004454f530000000000" - }, - { - "account": "eosio.token", - "name": "transfer", - "authorization": [ - { - "actor": "cpurijalx111", - "permission": "active" - }, - { - "actor": "eossrijalxin", - "permission": "active" - } - ], - "data": { - "from": "eossrijalxin", - "to": "eosiopowcoin", - "quantity": "0.0002 EOS", - "memo": "" - }, - "hex_data": "305d8fe6b98b3155301d459c56ea3055020000000000000004454f530000000000" - }, - { - "account": "eosio.token", - "name": "transfer", - "authorization": [ - { - "actor": "cpurijalx111", - "permission": "active" - }, - { - "actor": "eossrijalxin", - "permission": "active" - } - ], - "data": { - "from": "eossrijalxin", - "to": "eosiopowcoin", - "quantity": "0.0002 EOS", - "memo": "" - }, - "hex_data": "305d8fe6b98b3155301d459c56ea3055020000000000000004454f530000000000" - }, - { - "account": "eosio.token", - "name": "transfer", - "authorization": [ - { - "actor": "cpurijalx111", - "permission": "active" - }, - { - "actor": "eossrijalxin", - "permission": "active" - } - ], - "data": { - "from": "eossrijalxin", - "to": "eosiopowcoin", - "quantity": "0.0002 EOS", - "memo": "" - }, - "hex_data": "305d8fe6b98b3155301d459c56ea3055020000000000000004454f530000000000" - }, - { - "account": "eosio.token", - "name": "transfer", - "authorization": [ - { - "actor": "cpurijalx111", - "permission": "active" - }, - { - "actor": "eossrijalxin", - "permission": "active" - } - ], - "data": { - "from": "eossrijalxin", - "to": "eosiopowcoin", - "quantity": "0.0001 EOS", - "memo": "" - }, - "hex_data": "305d8fe6b98b3155301d459c56ea3055010000000000000004454f530000000000" - }, - { - "account": "eosio.token", - "name": "transfer", - "authorization": [ - { - "actor": "cpurijalx111", - "permission": "active" - }, - { - "actor": "eossrijalxin", - "permission": "active" - } - ], - "data": { - "from": "eossrijalxin", - "to": "eosiopowcoin", - "quantity": "0.0001 EOS", - "memo": "" - }, - "hex_data": "305d8fe6b98b3155301d459c56ea3055010000000000000004454f530000000000" - }, - { - "account": "eosio.token", - "name": "transfer", - "authorization": [ - { - "actor": "cpurijalx111", - "permission": "active" - }, - { - "actor": "eossrijalxin", - "permission": "active" - } - ], - "data": { - "from": "eossrijalxin", - "to": "eosiopowcoin", - "quantity": "0.0001 EOS", - "memo": "" - }, - "hex_data": "305d8fe6b98b3155301d459c56ea3055010000000000000004454f530000000000" - }, - { - "account": "eosio.token", - "name": "transfer", - "authorization": [ - { - "actor": "cpurijalx111", - "permission": "active" - }, - { - "actor": "eossrijalxin", - "permission": "active" - } - ], - "data": { - "from": "eossrijalxin", - "to": "eosiopowcoin", - "quantity": "0.0001 EOS", - "memo": "" - }, - "hex_data": "305d8fe6b98b3155301d459c56ea3055010000000000000004454f530000000000" - }, - { - "account": "eosio.token", - "name": "transfer", - "authorization": [ - { - "actor": "cpurijalx111", - "permission": "active" - }, - { - "actor": "eossrijalxin", - "permission": "active" - } - ], - "data": { - "from": "eossrijalxin", - "to": "eosiopowcoin", - "quantity": "0.0001 EOS", - "memo": "" - }, - "hex_data": "305d8fe6b98b3155301d459c56ea3055010000000000000004454f530000000000" - }, - { - "account": "eosio.token", - "name": "transfer", - "authorization": [ - { - "actor": "cpurijalx111", - "permission": "active" - }, - { - "actor": "eossrijalxin", - "permission": "active" - } - ], - "data": { - "from": "eossrijalxin", - "to": "eosiopowcoin", - "quantity": "0.0001 EOS", - "memo": "" - }, - "hex_data": "305d8fe6b98b3155301d459c56ea3055010000000000000004454f530000000000" - }, - { - "account": "eosio.token", - "name": "transfer", - "authorization": [ - { - "actor": "cpurijalx111", - "permission": "active" - }, - { - "actor": "eossrijalxin", - "permission": "active" - } - ], - "data": { - "from": "eossrijalxin", - "to": "eosiopowcoin", - "quantity": "0.0001 EOS", - "memo": "" - }, - "hex_data": "305d8fe6b98b3155301d459c56ea3055010000000000000004454f530000000000" - }, - { - "account": "eosio.token", - "name": "transfer", - "authorization": [ - { - "actor": "cpurijalx111", - "permission": "active" - }, - { - "actor": "eossrijalxin", - "permission": "active" - } - ], - "data": { - "from": "eossrijalxin", - "to": "eosiopowcoin", - "quantity": "0.0002 EOS", - "memo": "" - }, - "hex_data": "305d8fe6b98b3155301d459c56ea3055020000000000000004454f530000000000" - }, - { - "account": "eosio.token", - "name": "transfer", - "authorization": [ - { - "actor": "cpurijalx111", - "permission": "active" - }, - { - "actor": "eossrijalxin", - "permission": "active" - } - ], - "data": { - "from": "eossrijalxin", - "to": "eosiopowcoin", - "quantity": "0.0002 EOS", - "memo": "" - }, - "hex_data": "305d8fe6b98b3155301d459c56ea3055020000000000000004454f530000000000" - }, - { - "account": "eosio.token", - "name": "transfer", - "authorization": [ - { - "actor": "cpurijalx111", - "permission": "active" - }, - { - "actor": "eossrijalxin", - "permission": "active" - } - ], - "data": { - "from": "eossrijalxin", - "to": "eosiopowcoin", - "quantity": "0.0002 EOS", - "memo": "" - }, - "hex_data": "305d8fe6b98b3155301d459c56ea3055020000000000000004454f530000000000" - }, - { - "account": "eosio.token", - "name": "transfer", - "authorization": [ - { - "actor": "cpurijalx111", - "permission": "active" - }, - { - "actor": "eossrijalxin", - "permission": "active" - } - ], - "data": { - "from": "eossrijalxin", - "to": "eosiopowcoin", - "quantity": "0.0002 EOS", - "memo": "" - }, - "hex_data": "305d8fe6b98b3155301d459c56ea3055020000000000000004454f530000000000" - }, - { - "account": "eosio.token", - "name": "transfer", - "authorization": [ - { - "actor": "cpurijalx111", - "permission": "active" - }, - { - "actor": "eossrijalxin", - "permission": "active" - } - ], - "data": { - "from": "eossrijalxin", - "to": "eosiopowcoin", - "quantity": "0.0002 EOS", - "memo": "" - }, - "hex_data": "305d8fe6b98b3155301d459c56ea3055020000000000000004454f530000000000" - }, - { - "account": "eosio.token", - "name": "transfer", - "authorization": [ - { - "actor": "cpurijalx111", - "permission": "active" - }, - { - "actor": "eossrijalxin", - "permission": "active" - } - ], - "data": { - "from": "eossrijalxin", - "to": "eosiopowcoin", - "quantity": "0.0002 EOS", - "memo": "" - }, - "hex_data": "305d8fe6b98b3155301d459c56ea3055020000000000000004454f530000000000" - }, - { - "account": "eosio.token", - "name": "transfer", - "authorization": [ - { - "actor": "cpurijalx111", - "permission": "active" - }, - { - "actor": "eossrijalxin", - "permission": "active" - } - ], - "data": { - "from": "eossrijalxin", - "to": "eosiopowcoin", - "quantity": "0.0002 EOS", - "memo": "" - }, - "hex_data": "305d8fe6b98b3155301d459c56ea3055020000000000000004454f530000000000" - }, - { - "account": "eosio.token", - "name": "transfer", - "authorization": [ - { - "actor": "cpurijalx111", - "permission": "active" - }, - { - "actor": "eossrijalxin", - "permission": "active" - } - ], - "data": { - "from": "eossrijalxin", - "to": "eosiopowcoin", - "quantity": "0.0002 EOS", - "memo": "" - }, - "hex_data": "305d8fe6b98b3155301d459c56ea3055020000000000000004454f530000000000" - }, - { - "account": "eosio.token", - "name": "transfer", - "authorization": [ - { - "actor": "cpurijalx111", - "permission": "active" - }, - { - "actor": "eossrijalxin", - "permission": "active" - } - ], - "data": { - "from": "eossrijalxin", - "to": "eosiopowcoin", - "quantity": "0.0002 EOS", - "memo": "" - }, - "hex_data": "305d8fe6b98b3155301d459c56ea3055020000000000000004454f530000000000" - }, - { - "account": "eosio.token", - "name": "transfer", - "authorization": [ - { - "actor": "cpurijalx111", - "permission": "active" - }, - { - "actor": "eossrijalxin", - "permission": "active" - } - ], - "data": { - "from": "eossrijalxin", - "to": "eosiopowcoin", - "quantity": "0.0001 EOS", - "memo": "" - }, - "hex_data": "305d8fe6b98b3155301d459c56ea3055010000000000000004454f530000000000" - }, - { - "account": "eosio.token", - "name": "transfer", - "authorization": [ - { - "actor": "cpurijalx111", - "permission": "active" - }, - { - "actor": "eossrijalxin", - "permission": "active" - } - ], - "data": { - "from": "eossrijalxin", - "to": "eosiopowcoin", - "quantity": "0.0002 EOS", - "memo": "" - }, - "hex_data": "305d8fe6b98b3155301d459c56ea3055020000000000000004454f530000000000" - }, - { - "account": "eosio.token", - "name": "transfer", - "authorization": [ - { - "actor": "cpurijalx111", - "permission": "active" - }, - { - "actor": "eossrijalxin", - "permission": "active" - } - ], - "data": { - "from": "eossrijalxin", - "to": "eosiopowcoin", - "quantity": "0.0002 EOS", - "memo": "" - }, - "hex_data": "305d8fe6b98b3155301d459c56ea3055020000000000000004454f530000000000" - }, - { - "account": "eosio.token", - "name": "transfer", - "authorization": [ - { - "actor": "cpurijalx111", - "permission": "active" - }, - { - "actor": "eossrijalxin", - "permission": "active" - } - ], - "data": { - "from": "eossrijalxin", - "to": "eosiopowcoin", - "quantity": "0.0002 EOS", - "memo": "" - }, - "hex_data": "305d8fe6b98b3155301d459c56ea3055020000000000000004454f530000000000" - }, - { - "account": "eosio.token", - "name": "transfer", - "authorization": [ - { - "actor": "cpurijalx111", - "permission": "active" - }, - { - "actor": "eossrijalxin", - "permission": "active" - } - ], - "data": { - "from": "eossrijalxin", - "to": "eosiopowcoin", - "quantity": "0.0002 EOS", - "memo": "" - }, - "hex_data": "305d8fe6b98b3155301d459c56ea3055020000000000000004454f530000000000" - }, - { - "account": "eosio.token", - "name": "transfer", - "authorization": [ - { - "actor": "cpurijalx111", - "permission": "active" - }, - { - "actor": "eossrijalxin", - "permission": "active" - } - ], - "data": { - "from": "eossrijalxin", - "to": "eosiopowcoin", - "quantity": "0.0002 EOS", - "memo": "" - }, - "hex_data": "305d8fe6b98b3155301d459c56ea3055020000000000000004454f530000000000" - }, - { - "account": "eosio.token", - "name": "transfer", - "authorization": [ - { - "actor": "cpurijalx111", - "permission": "active" - }, - { - "actor": "eossrijalxin", - "permission": "active" - } - ], - "data": { - "from": "eossrijalxin", - "to": "eosiopowcoin", - "quantity": "0.0002 EOS", - "memo": "" - }, - "hex_data": "305d8fe6b98b3155301d459c56ea3055020000000000000004454f530000000000" - }, - { - "account": "eosio.token", - "name": "transfer", - "authorization": [ - { - "actor": "cpurijalx111", - "permission": "active" - }, - { - "actor": "eossrijalxin", - "permission": "active" - } - ], - "data": { - "from": "eossrijalxin", - "to": "eosiopowcoin", - "quantity": "0.0002 EOS", - "memo": "" - }, - "hex_data": "305d8fe6b98b3155301d459c56ea3055020000000000000004454f530000000000" - }, - { - "account": "eosio.token", - "name": "transfer", - "authorization": [ - { - "actor": "cpurijalx111", - "permission": "active" - }, - { - "actor": "eossrijalxin", - "permission": "active" - } - ], - "data": { - "from": "eossrijalxin", - "to": "eosiopowcoin", - "quantity": "0.0002 EOS", - "memo": "" - }, - "hex_data": "305d8fe6b98b3155301d459c56ea3055020000000000000004454f530000000000" - }, - { - "account": "eosiopowcoin", - "name": "transfer", - "authorization": [ - { - "actor": "cpurijalx111", - "permission": "active" - }, - { - "actor": "eossrijalxin", - "permission": "active" - } - ], - "data": { - "from": "eossrijalxin", - "to": "swap.defi", - "quantity": "2.50000000 POW", - "memo": "swap,0,128" - }, - "hex_data": "305d8fe6b98b31550000704b25500dc780b2e60e0000000008504f57000000000a737761702c302c313238" - } - ] - } - } - }, - { - "status": "executed", - "cpu_usage_us": 291, - "net_usage_words": 32, - "trx": { - "id": "a233f3c2584f133c1a49ae2d643c59caf348a2a1e48ac77aec295e536923cac8", - "signatures": [ - "SIG_K1_K7jy8ne5vns5LBFuGtg2uPsEoXprR53KufwKZyRwJSpsgq7mNjKhGuLedoiwiLqseHdtZgm8V96xvdzZMdZHpx3ynKexZJ", - "SIG_K1_K2YkbLnwFYPm5dh4weRpw8G5zTquTKQHpCVFNdu6UAZJ56Et9bVd77zUR86pqVa4wot9st5oUmGH7T8EHSyqM1cut3DCVA", - "SIG_K1_Jxmpfm5XexDg5EK7PxpaDvACZ4PzFBPSr35gYfCN4hqHtbLdUDJudH3WGuPUc9uutAEeqbh1oGoWdmHv4sXGeJ452pXAqJ" - ], - "compression": "none", - "packed_context_free_data": "", - "context_free_data": [], - "packed_trx": "7f6b4a6306fafefd77c40000000003a0649a2656ed4dac0000d0155dbabca901a0649a2656ed4dac0000d0155dbabca90850efca028ec2493c90113253419a7bd5000000572d3ccdcd0150efca028ec2493c00000000a46962d52150efca028ec2493ca0649a2656ed4dac8813000000000000025550580000000000a0649a2656ed4dac000000000000069901a0649a2656ed4dac000000c067175dd61850efca028ec2493c8813000000000000025550580000000000", - "transaction": { - "expiration": "2022-10-15T08:12:47", - "ref_block_num": 64006, - "ref_block_prefix": 3296198142, - "max_net_usage_words": 0, - "max_cpu_usage_ms": 0, - "delay_sec": 0, - "context_free_actions": [], - "actions": [ - { - "account": "playuplandme", - "name": "payforcpu", - "authorization": [ - { - "actor": "playuplandme", - "permission": "payforcpu" - } - ], - "data": { - "user_name": "bl4w53k2tfrp" - }, - "hex_data": "50efca028ec2493c" - }, - { - "account": "upxtokenacct", - "name": "transfer", - "authorization": [ - { - "actor": "bl4w53k2tfrp", - "permission": "upland" - } - ], - "data": { - "from": "bl4w53k2tfrp", - "to": "playuplandme", - "quantity": "50.00 UPX", - "memo": "" - }, - "hex_data": "50efca028ec2493ca0649a2656ed4dac8813000000000000025550580000000000" - }, - { - "account": "playuplandme", - "name": "n43", - "authorization": [ - { - "actor": "playuplandme", - "permission": "utility" - } - ], - "data": { - "p51": "bl4w53k2tfrp", - "p12": "50.00 UPX" - }, - "hex_data": "50efca028ec2493c88130000000000000255505800000000" - } - ] - } - } - }, - { - "status": "executed", - "cpu_usage_us": 182, - "net_usage_words": 21, - "trx": { - "id": "5e26cf1784733bfbd98c1b955187f76b522e010394b5f80310789c9448f2ffcd", - "signatures": [ - "SIG_K1_K9vZtCypzM12XQjrEgak2Toptbb9799C3gQtf5vc69WxGVTZ66aMFX5zpFmMS4o5S3JBhJb4oTMJwJb7xVeDLhz2kccShZ", - "SIG_K1_Ka5RakBN6m8pyjJrE8SYBzUJPW8AHdo5rhTdyHXE2ZRy9rbZAvS646NAGhuNuza8fZtp4iJwczPKmo1zapEdMGHo8aDHmB" - ], - "compression": "none", - "packed_context_free_data": "", - "context_free_data": [], - "packed_trx": "da5d4a6363fa49cea4960000000002a0649a2656ed4dac0000d0155dbabca901a0649a2656ed4dac0000d0155dbabca90830e31c696176693ca0649a2656ed4dac000000000000c2980130e31c696176693c00000000a46962d51130e31c696176693c0194cf191d6248000000", - "transaction": { - "expiration": "2022-10-15T07:14:34", - "ref_block_num": 64099, - "ref_block_prefix": 2527383113, - "max_net_usage_words": 0, - "max_cpu_usage_ms": 0, - "delay_sec": 0, - "context_free_actions": [], - "actions": [ - { - "account": "playuplandme", - "name": "payforcpu", - "authorization": [ - { - "actor": "playuplandme", - "permission": "payforcpu" - } - ], - "data": { - "user_name": "blorgsfd3nln" - }, - "hex_data": "30e31c696176693c" - }, - { - "account": "playuplandme", - "name": "n31", - "authorization": [ - { - "actor": "blorgsfd3nln", - "permission": "upland" - } - ], - "data": { - "a54": "blorgsfd3nln", - "p55": [ - "79586232225684" - ] - }, - "hex_data": "30e31c696176693c0194cf191d62480000" - } - ] - } - } - }, - { - "status": "executed", - "cpu_usage_us": 725, - "net_usage_words": 25, - "trx": { - "id": "c86f254024d2e254f7e1d53a4d25f53f8443cb013a37724b1a8ac9d0ff879365", - "signatures": [ - "SIG_K1_JzhssZ6MA92H2HmKPmhYL5CrpSUBp3iJN8SBV7X1oo25Sr8QxpE2D9nkKbCPg6B4xijyYUZp9NYuwKffiCs334sAResAzi" - ], - "compression": "none", - "packed_context_free_data": "", - "context_free_data": [], - "packed_trx": "bf5d4a636afa12056c4c0000000001a0223297ba56a34a000000000095dde50180b1915e5d268dca00000000a888cca56980b1915e5d268dca06cd270000000000000000000024ac3155431800000000000000000000a07c30558452f608000000000000000024ac513e35000000000000000000000064a9305534020100000000000000000060aa98db56bb32520000000000000000f889503e00", - "transaction": { - "expiration": "2022-10-15T07:14:07", - "ref_block_num": 64106, - "ref_block_prefix": 1282147602, - "max_net_usage_words": 0, - "max_cpu_usage_ms": 0, - "delay_sec": 0, - "context_free_actions": [], - "actions": [ - { - "account": "delphioracle", - "name": "write", - "authorization": [ - { - "actor": "teamgreymass", - "permission": "oracle" - } - ], - "data": { - "owner": "teamgreymass", - "quotes": [ - { - "value": 10189, - "pair": "eosusd" - }, - { - "value": 6211, - "pair": "eosbtc" - }, - { - "value": 150360708, - "pair": "btcusd" - }, - { - "value": 53, - "pair": "eosemt" - }, - { - "value": 66100, - "pair": "vigeos" - }, - { - "value": 1379056470, - "pair": "btccny" - } - ] - }, - "hex_data": "80b1915e5d268dca06cd270000000000000000000024ac3155431800000000000000000000a07c30558452f608000000000000000024ac513e35000000000000000000000064a9305534020100000000000000000060aa98db56bb32520000000000000000f889503e" - } - ] - } - } - }, - { - "status": "executed", - "cpu_usage_us": 217, - "net_usage_words": 23, - "trx": { - "id": "f9b044946ce2f145acbcd28047782a076b1cd65cbcce3cb98ad671a288652e8e", - "signatures": [ - "SIG_K1_Kk1pWgC4536ny8S3ceCpi4JaB82A7h1vFsr2agmdVYyYRFFoLn9baweuoxgfppq7c3FgqQdJjSSt9RxFD6vPDihC6KT2of" - ], - "compression": "none", - "packed_context_free_data": "", - "context_free_data": [], - "packed_trx": "be5d4a6368fae26265070000000001408242533984b351000000572d3ccdcd0110c20c613a8ab25100000000a8ed32325610c20c613a8ab2511042192360aab251980800000000000004454154434f494e3527596f75722063757272656e742073636f7265206174206561747363686f6f6c732e636f6d2f6f6e6c696e6520697320372e34312700", - "transaction": { - "expiration": "2022-10-15T07:14:06", - "ref_block_num": 64104, - "ref_block_prefix": 124084962, - "max_net_usage_words": 0, - "max_cpu_usage_ms": 0, - "delay_sec": 0, - "context_free_actions": [], - "actions": [ - { - "account": "eatscience14", - "name": "transfer", - "authorization": [ - { - "actor": "eatcoin11n11", - "permission": "active" - } - ], - "data": { - "from": "eatcoin11n11", - "to": "eateos133511", - "quantity": "0.2200 EATCOIN", - "memo": "'Your current score at eatschools.com/online is 7.41'" - }, - "hex_data": "10c20c613a8ab2511042192360aab251980800000000000004454154434f494e3527596f75722063757272656e742073636f7265206174206561747363686f6f6c732e636f6d2f6f6e6c696e6520697320372e343127" - } - ] - } - } - }, - { - "status": "executed", - "cpu_usage_us": 188, - "net_usage_words": 18, - "trx": { - "id": "a9c6327a1aa6c87ea9805ba1d35cbf0d9e4459b13374c7e08e054c1493d41b24", - "signatures": [ - "SIG_K1_K6E77YorKgsZVsLVDczfAC4QxWqT4qA2P3GobDjCNx2Quc21ppHHbzHNuyhD8uENuKyaNgMSdsiQGdd3cmK7rzu2a1WDrN", - "SIG_K1_KmLqQJBSgjK1oJJ2WQCGBQ3zkE1ywB8vkBucmrFttAkYyRWb9A2Y6zZGuYG6uXZ1TjT4jXrvx34AWYeuqqkgUZuaRo4zKq" - ], - "compression": "none", - "packed_context_free_data": "", - "context_free_data": [], - "packed_trx": "dc5d4a6367fa2565ef35000000000180f0a519a98ae9ad00000057c14bf9960270f0a519a98ae9ad00000000a8ed32320000e07981e0a44b00000000a8ed32321024e7010000000000ffffffffffffffff00", - "transaction": { - "expiration": "2022-10-15T07:14:36", - "ref_block_num": 64103, - "ref_block_prefix": 904881445, - "max_net_usage_words": 0, - "max_cpu_usage_ms": 0, - "delay_sec": 0, - "context_free_actions": [], - "actions": [ - { - "account": "prospectorsc", - "name": "mvworker", - "authorization": [ - { - "actor": "prospectorsb", - "permission": "active" - }, - { - "actor": "dimi1.ftw", - "permission": "active" - } - ], - "data": { - "worker_id": 124708, - "x": -1, - "y": -1 - }, - "hex_data": "24e7010000000000ffffffffffffffff" - } - ] - } - } - }, - { - "status": "executed", - "cpu_usage_us": 228, - "net_usage_words": 22, - "trx": { - "id": "8ad61770cfb9be36aea28f5d46f92f34fdc19f679ff2c374300ac9cb452fadc8", - "signatures": [ - "SIG_K1_K1tAJ5umcMPcPgutXg8cQSaGW6PSbS6ZAH1y4GGEerhc8BaPqWZJeNXP4gig1r92JMXvw1YP5sUrQ8M7rVhodnSQEpFaqT", - "SIG_K1_KcRwVmsNV4g5VPasJvj9HijnNveYEMfmBaLsBv72Ri9NQF8sWY3jiuYfSyT5nLQbhv5Q6YuF1tMzhSKsY9mb7SMa6Y8U4x" - ], - "compression": "none", - "packed_context_free_data": "", - "context_free_data": [], - "packed_trx": "da5d4a6364fa50c4f5cb0000000002a0649a2656ed4dac0000d0155dbabca901a0649a2656ed4dac0000d0155dbabca908e021ab4f709e699da0649a2656ed4dac000000000000c29801e021ab4f709e699d00000000a46962d519e021ab4f709e699d02cc91280ced4a00004e792833f84a000000", - "transaction": { - "expiration": "2022-10-15T07:14:34", - "ref_block_num": 64100, - "ref_block_prefix": 3421881424, - "max_net_usage_words": 0, - "max_cpu_usage_ms": 0, - "delay_sec": 0, - "context_free_actions": [], - "actions": [ - { - "account": "playuplandme", - "name": "payforcpu", - "authorization": [ - { - "actor": "playuplandme", - "permission": "payforcpu" - } - ], - "data": { - "user_name": "npotww2jpgky" - }, - "hex_data": "e021ab4f709e699d" - }, - { - "account": "playuplandme", - "name": "n31", - "authorization": [ - { - "actor": "npotww2jpgky", - "permission": "upland" - } - ], - "data": { - "a54": "npotww2jpgky", - "p55": [ - "82381971689932", - "82429870635342" - ] - }, - "hex_data": "e021ab4f709e699d02cc91280ced4a00004e792833f84a0000" - } - ] - } - } - }, - { - "status": "executed", - "cpu_usage_us": 1212, - "net_usage_words": 183, - "trx": { - "id": "044a91f86f71492f7283456fdc9d29f855d5db56d8eafe4eba96ddf7bcf31a8b", - "signatures": [ - "SIG_K1_KVisVSXo2dgPGifn31KPp564pnqmzSoTmA2VZuRHaJSt1fPYvmGmTff9R2VCGfmsthCHh4D5HQMuNxE69VUUz66t9FDGVb", - "SIG_K1_KbkYx4xw5y25GPsMWvgDG5VDpxWcbyZNYeUMiPHmEEspT4nuzcGuXH4PZngYbkxfKsPnz84XxQkqSfnzLTuJ43rR2AygoJ" - ], - "compression": "none", - "packed_context_free_data": "", - "context_free_data": [], - "packed_trx": "c15d4a636dfaa5a0d8b7000000001500dc5209a888cca500000000a86c52d5020000006ea904744500000000a8ed32327055ce4e1e8d315500000000a8ed3232107055ce4e1e8d3155010000000000000000dc5209a888cca500000000a86c52d5020000006ea904744500000000a8ed32327055ce4e1e8d315500000000a8ed3232107055ce4e1e8d3155020000000000000000dc5209a888cca500000000a86c52d5020000006ea904744500000000a8ed32327055ce4e1e8d315500000000a8ed3232107055ce4e1e8d3155030000000000000000dc5209a888cca500000000a86c52d5020000006ea904744500000000a8ed32327055ce4e1e8d315500000000a8ed3232107055ce4e1e8d3155040000000000000000dc5209a888cca500000000a86c52d5020000006ea904744500000000a8ed32327055ce4e1e8d315500000000a8ed3232107055ce4e1e8d3155050000000000000000dc5209a888cca500000000a86c52d5020000006ea904744500000000a8ed32327055ce4e1e8d315500000000a8ed3232107055ce4e1e8d3155060000000000000000dc5209a888cca500000000a86c52d5020000006ea904744500000000a8ed32327055ce4e1e8d315500000000a8ed3232107055ce4e1e8d3155070000000000000000dc5209a888cca500000000a86c52d5020000006ea904744500000000a8ed32327055ce4e1e8d315500000000a8ed3232107055ce4e1e8d3155080000000000000000dc5209a888cca500000000a86c52d5020000006ea904744500000000a8ed32327055ce4e1e8d315500000000a8ed3232107055ce4e1e8d3155090000000000000000dc5209a888cca500000000a86c52d5020000006ea904744500000000a8ed32327055ce4e1e8d315500000000a8ed3232107055ce4e1e8d31550a0000000000000000dc5209a888cca500000000a86c52d5020000006ea904744500000000a8ed32327055ce4e1e8d315500000000a8ed3232107055ce4e1e8d31550b0000000000000000dc5209a888cca500000000a86c52d5020000006ea904744500000000a8ed32327055ce4e1e8d315500000000a8ed3232107055ce4e1e8d31550c0000000000000000dc5209a888cca500000000a86c52d5020000006ea904744500000000a8ed32327055ce4e1e8d315500000000a8ed3232107055ce4e1e8d31550d0000000000000000dc5209a888cca500000000a86c52d5020000006ea904744500000000a8ed32327055ce4e1e8d315500000000a8ed3232107055ce4e1e8d31550e0000000000000000dc5209a888cca500000000a86c52d5020000006ea904744500000000a8ed32327055ce4e1e8d315500000000a8ed3232107055ce4e1e8d31550f0000000000000000dc5209a888cca500000000a86c52d5020000006ea904744500000000a8ed32327055ce4e1e8d315500000000a8ed3232107055ce4e1e8d3155100000000000000000dc5209a888cca500000000a86c52d5020000006ea904744500000000a8ed32327055ce4e1e8d315500000000a8ed3232107055ce4e1e8d3155110000000000000000dc5209a888cca500000000a86c52d5020000006ea904744500000000a8ed32327055ce4e1e8d315500000000a8ed3232107055ce4e1e8d3155120000000000000000dc5209a888cca500000000a86c52d5020000006ea904744500000000a8ed32327055ce4e1e8d315500000000a8ed3232107055ce4e1e8d3155130000000000000000dc5209a888cca500000000a86c52d5020000006ea904744500000000a8ed32327055ce4e1e8d315500000000a8ed3232107055ce4e1e8d3155140000000000000000dc5209a888cca500000000a86c52d5020000006ea904744500000000a8ed32327055ce4e1e8d315500000000a8ed3232107055ce4e1e8d3155150000000000000000", - "transaction": { - "expiration": "2022-10-15T07:14:09", - "ref_block_num": 64109, - "ref_block_prefix": 3084427429, - "max_net_usage_words": 0, - "max_cpu_usage_ms": 0, - "delay_sec": 0, - "context_free_actions": [], - "actions": [ - { - "account": "oracle.defi", - "name": "update", - "authorization": [ - { - "actor": "cpu.defi", - "permission": "active" - }, - { - "actor": "eossubmitter", - "permission": "active" - } - ], - "data": { - "submitter": "eossubmitter", - "price_id": 1 - }, - "hex_data": "7055ce4e1e8d31550100000000000000" - }, - { - "account": "oracle.defi", - "name": "update", - "authorization": [ - { - "actor": "cpu.defi", - "permission": "active" - }, - { - "actor": "eossubmitter", - "permission": "active" - } - ], - "data": { - "submitter": "eossubmitter", - "price_id": 2 - }, - "hex_data": "7055ce4e1e8d31550200000000000000" - }, - { - "account": "oracle.defi", - "name": "update", - "authorization": [ - { - "actor": "cpu.defi", - "permission": "active" - }, - { - "actor": "eossubmitter", - "permission": "active" - } - ], - "data": { - "submitter": "eossubmitter", - "price_id": 3 - }, - "hex_data": "7055ce4e1e8d31550300000000000000" - }, - { - "account": "oracle.defi", - "name": "update", - "authorization": [ - { - "actor": "cpu.defi", - "permission": "active" - }, - { - "actor": "eossubmitter", - "permission": "active" - } - ], - "data": { - "submitter": "eossubmitter", - "price_id": 4 - }, - "hex_data": "7055ce4e1e8d31550400000000000000" - }, - { - "account": "oracle.defi", - "name": "update", - "authorization": [ - { - "actor": "cpu.defi", - "permission": "active" - }, - { - "actor": "eossubmitter", - "permission": "active" - } - ], - "data": { - "submitter": "eossubmitter", - "price_id": 5 - }, - "hex_data": "7055ce4e1e8d31550500000000000000" - }, - { - "account": "oracle.defi", - "name": "update", - "authorization": [ - { - "actor": "cpu.defi", - "permission": "active" - }, - { - "actor": "eossubmitter", - "permission": "active" - } - ], - "data": { - "submitter": "eossubmitter", - "price_id": 6 - }, - "hex_data": "7055ce4e1e8d31550600000000000000" - }, - { - "account": "oracle.defi", - "name": "update", - "authorization": [ - { - "actor": "cpu.defi", - "permission": "active" - }, - { - "actor": "eossubmitter", - "permission": "active" - } - ], - "data": { - "submitter": "eossubmitter", - "price_id": 7 - }, - "hex_data": "7055ce4e1e8d31550700000000000000" - }, - { - "account": "oracle.defi", - "name": "update", - "authorization": [ - { - "actor": "cpu.defi", - "permission": "active" - }, - { - "actor": "eossubmitter", - "permission": "active" - } - ], - "data": { - "submitter": "eossubmitter", - "price_id": 8 - }, - "hex_data": "7055ce4e1e8d31550800000000000000" - }, - { - "account": "oracle.defi", - "name": "update", - "authorization": [ - { - "actor": "cpu.defi", - "permission": "active" - }, - { - "actor": "eossubmitter", - "permission": "active" - } - ], - "data": { - "submitter": "eossubmitter", - "price_id": 9 - }, - "hex_data": "7055ce4e1e8d31550900000000000000" - }, - { - "account": "oracle.defi", - "name": "update", - "authorization": [ - { - "actor": "cpu.defi", - "permission": "active" - }, - { - "actor": "eossubmitter", - "permission": "active" - } - ], - "data": { - "submitter": "eossubmitter", - "price_id": 10 - }, - "hex_data": "7055ce4e1e8d31550a00000000000000" - }, - { - "account": "oracle.defi", - "name": "update", - "authorization": [ - { - "actor": "cpu.defi", - "permission": "active" - }, - { - "actor": "eossubmitter", - "permission": "active" - } - ], - "data": { - "submitter": "eossubmitter", - "price_id": 11 - }, - "hex_data": "7055ce4e1e8d31550b00000000000000" - }, - { - "account": "oracle.defi", - "name": "update", - "authorization": [ - { - "actor": "cpu.defi", - "permission": "active" - }, - { - "actor": "eossubmitter", - "permission": "active" - } - ], - "data": { - "submitter": "eossubmitter", - "price_id": 12 - }, - "hex_data": "7055ce4e1e8d31550c00000000000000" - }, - { - "account": "oracle.defi", - "name": "update", - "authorization": [ - { - "actor": "cpu.defi", - "permission": "active" - }, - { - "actor": "eossubmitter", - "permission": "active" - } - ], - "data": { - "submitter": "eossubmitter", - "price_id": 13 - }, - "hex_data": "7055ce4e1e8d31550d00000000000000" - }, - { - "account": "oracle.defi", - "name": "update", - "authorization": [ - { - "actor": "cpu.defi", - "permission": "active" - }, - { - "actor": "eossubmitter", - "permission": "active" - } - ], - "data": { - "submitter": "eossubmitter", - "price_id": 14 - }, - "hex_data": "7055ce4e1e8d31550e00000000000000" - }, - { - "account": "oracle.defi", - "name": "update", - "authorization": [ - { - "actor": "cpu.defi", - "permission": "active" - }, - { - "actor": "eossubmitter", - "permission": "active" - } - ], - "data": { - "submitter": "eossubmitter", - "price_id": 15 - }, - "hex_data": "7055ce4e1e8d31550f00000000000000" - }, - { - "account": "oracle.defi", - "name": "update", - "authorization": [ - { - "actor": "cpu.defi", - "permission": "active" - }, - { - "actor": "eossubmitter", - "permission": "active" - } - ], - "data": { - "submitter": "eossubmitter", - "price_id": 16 - }, - "hex_data": "7055ce4e1e8d31551000000000000000" - }, - { - "account": "oracle.defi", - "name": "update", - "authorization": [ - { - "actor": "cpu.defi", - "permission": "active" - }, - { - "actor": "eossubmitter", - "permission": "active" - } - ], - "data": { - "submitter": "eossubmitter", - "price_id": 17 - }, - "hex_data": "7055ce4e1e8d31551100000000000000" - }, - { - "account": "oracle.defi", - "name": "update", - "authorization": [ - { - "actor": "cpu.defi", - "permission": "active" - }, - { - "actor": "eossubmitter", - "permission": "active" - } - ], - "data": { - "submitter": "eossubmitter", - "price_id": 18 - }, - "hex_data": "7055ce4e1e8d31551200000000000000" - }, - { - "account": "oracle.defi", - "name": "update", - "authorization": [ - { - "actor": "cpu.defi", - "permission": "active" - }, - { - "actor": "eossubmitter", - "permission": "active" - } - ], - "data": { - "submitter": "eossubmitter", - "price_id": 19 - }, - "hex_data": "7055ce4e1e8d31551300000000000000" - }, - { - "account": "oracle.defi", - "name": "update", - "authorization": [ - { - "actor": "cpu.defi", - "permission": "active" - }, - { - "actor": "eossubmitter", - "permission": "active" - } - ], - "data": { - "submitter": "eossubmitter", - "price_id": 20 - }, - "hex_data": "7055ce4e1e8d31551400000000000000" - }, - { - "account": "oracle.defi", - "name": "update", - "authorization": [ - { - "actor": "cpu.defi", - "permission": "active" - }, - { - "actor": "eossubmitter", - "permission": "active" - } - ], - "data": { - "submitter": "eossubmitter", - "price_id": 21 - }, - "hex_data": "7055ce4e1e8d31551500000000000000" - } - ] - } - } - }, - { - "status": "executed", - "cpu_usage_us": 857, - "net_usage_words": 32, - "trx": { - "id": "b77eac6c2cf604792f92b6b893afca0e1a80fdd099b71c2fcd21026d7b98ad2d", - "signatures": [ - "SIG_K1_KhpK18cPxHYrM7JH6xefWvofWKmD1e1pGJo5hT9drqCoA3rhnnh8ScuoJRQzG1fxirdDDMEJPNemnsX6Dowbd3ETxcrKFc", - "SIG_K1_JxsW2LZMYanEAp4gVeKC83chHV5ngvurjRrDWDR9Yf1GVeV2mpUAorZNbTj8x7DRcCnHtwQrG5brYechWbjyuSTirZB8uY" - ], - "compression": "none", - "packed_context_free_data": "", - "context_free_data": [], - "packed_trx": "1a5e4a6323f987c31ff6000000000390cd919447e3a662000000000050299d017099c4ea667324e5000000004ce63045009015bc4622276936a0a2c10a4d4de73401c0f3029766f3bff900000000a8ed323231c0f3029766f3bff9014ecc040000020000f30100000000000004454f530000000004454f5300000000000000000000000080b3c2d82027693600ae5a8baa6cd44501c0f3029766f3bff900000000a8ed32321fc0f3029766f3bff99015bc4622276936014ecc040000020000000473616c6500", - "transaction": { - "expiration": "2022-10-15T07:15:38", - "ref_block_num": 63779, - "ref_block_prefix": 4129276807, - "max_net_usage_words": 0, - "max_cpu_usage_ms": 0, - "delay_sec": 0, - "context_free_actions": [], - "actions": [ - { - "account": "genialwombat", - "name": "noop", - "authorization": [ - { - "actor": "wombatresmgr", - "permission": "cosign" - } - ], - "data": "" - }, - { - "account": "atomicmarket", - "name": "announcesale", - "authorization": [ - { - "actor": "zazzator.ftw", - "permission": "active" - } - ], - "data": { - "seller": "zazzator.ftw", - "asset_ids": [ - "2199023569998" - ], - "listing_price": "0.0499 EOS", - "settlement_symbol": "4,EOS", - "maker_marketplace": "" - }, - "hex_data": "c0f3029766f3bff9014ecc040000020000f30100000000000004454f530000000004454f53000000000000000000000000" - }, - { - "account": "atomicassets", - "name": "createoffer", - "authorization": [ - { - "actor": "zazzator.ftw", - "permission": "active" - } - ], - "data": { - "sender": "zazzator.ftw", - "recipient": "atomicmarket", - "sender_asset_ids": [ - "2199023569998" - ], - "recipient_asset_ids": [], - "memo": "sale" - }, - "hex_data": "c0f3029766f3bff99015bc4622276936014ecc040000020000000473616c65" - } - ] - } - } - }, - { - "status": "executed", - "cpu_usage_us": 979, - "net_usage_words": 33, - "trx": { - "id": "9732b991c1fea7a4df63c5cf51a0d6f3cf66e724032fa1dbb39fed45be521cd5", - "signatures": [ - "SIG_K1_K9RVAHUB9FeUUeTkZ6VGHqxFPCHUNmC79fdBAKY12Fe2kPPZ9dii3fu4SzsmxShdoWdnZAeT2Qh8j4J8xQaChDWrznKJvJ", - "SIG_K1_K7mkwHpm8qX5a3crr2w1H7BUieCXVsoPz6qXRnxzvEPHJ3G5Mqu1rcYvxuEoEah53AhZfPLSzZMoLEq71bGuFCrcAfR46d" - ], - "compression": "none", - "packed_context_free_data": "", - "context_free_data": [], - "packed_trx": "da5d4a6317f94cac290f00000000031082ae48a9bbf04a0000004057a4d45d0110c2a5d94d2ad1f200000000a8ed323208000000003093412980a5ca4e5eb3f04a000000572d3ccdcd01000000003093412900000000a8ed3232280000000030934129a0f055db6425f14a409c0000000000000443484b464f4f44076465706f736974a0f055db6425f14a00000042219de8ad01000000003093412900000000a8ed3232280000000030934129080000000000000007090000000000000400000000000000010000000000000000", - "transaction": { - "expiration": "2022-10-15T07:14:34", - "ref_block_num": 63767, - "ref_block_prefix": 254389324, - "max_net_usage_words": 0, - "max_cpu_usage_ms": 0, - "delay_sec": 0, - "context_free_actions": [], - "actions": [ - { - "account": "dfsfreecpu11", - "name": "freecpu", - "authorization": [ - { - "actor": "yfcmonitor11", - "permission": "active" - } - ], - "data": { - "user": "55.tag" - }, - "hex_data": "0000000030934129" - }, - { - "account": "dfsfarmitems", - "name": "transfer", - "authorization": [ - { - "actor": "55.tag", - "permission": "active" - } - ], - "data": { - "from": "55.tag", - "to": "dfsmetaverse", - "quantity": "4.0000 CHKFOOD", - "memo": "deposit" - }, - "hex_data": "0000000030934129a0f055db6425f14a409c0000000000000443484b464f4f44076465706f736974" - }, - { - "account": "dfsmetaverse", - "name": "produce2", - "authorization": [ - { - "actor": "55.tag", - "permission": "active" - } - ], - "data": { - "user": "55.tag", - "workid": 8, - "assetid": 2311, - "multiple": 4, - "round": 1 - }, - "hex_data": "00000000309341290800000000000000070900000000000004000000000000000100000000000000" - } - ] - } - } - }, - { - "status": "executed", - "cpu_usage_us": 502, - "net_usage_words": 33, - "trx": { - "id": "a1364653971696b098e60fb9d61825ae1f0fcd5f1998662e2d2608d2c4682938", - "signatures": [ - "SIG_K1_KdBxr7svwSMye1RSFpcexwd1iFcRxywkiRR5QBguXRoXhXFCFyM2FBdz6SWs2EBk9xtN2fNLjtFPAV9LoWCtBxmHiUERXt", - "SIG_K1_K2G5ZouMdoEmyvVThrZe2wwMLKeoLPUQVVFPxxoeJBX4HukKAc3NcSCn3DU4jZcqxEt28a69DLTQiiSKbKmNEGgDBUUaa9" - ], - "compression": "none", - "packed_context_free_data": "", - "context_free_data": [], - "packed_trx": "da5d4a6317f94cac290f00000000031082ae48a9bbf04a0000004057a4d45d0110c2a5d94d2ad1f200000000a8ed323208000000003093412980a5ca4e5eb3f04a000000572d3ccdcd01000000003093412900000000a8ed3232280000000030934129a0f055db6425f14a50c30000000000000443484b464f4f44076465706f736974a0f055db6425f14a00000042219de8ad01000000003093412900000000a8ed323228000000003093412908000000000000000c090000000000000500000000000000010000000000000000", - "transaction": { - "expiration": "2022-10-15T07:14:34", - "ref_block_num": 63767, - "ref_block_prefix": 254389324, - "max_net_usage_words": 0, - "max_cpu_usage_ms": 0, - "delay_sec": 0, - "context_free_actions": [], - "actions": [ - { - "account": "dfsfreecpu11", - "name": "freecpu", - "authorization": [ - { - "actor": "yfcmonitor11", - "permission": "active" - } - ], - "data": { - "user": "55.tag" - }, - "hex_data": "0000000030934129" - }, - { - "account": "dfsfarmitems", - "name": "transfer", - "authorization": [ - { - "actor": "55.tag", - "permission": "active" - } - ], - "data": { - "from": "55.tag", - "to": "dfsmetaverse", - "quantity": "5.0000 CHKFOOD", - "memo": "deposit" - }, - "hex_data": "0000000030934129a0f055db6425f14a50c30000000000000443484b464f4f44076465706f736974" - }, - { - "account": "dfsmetaverse", - "name": "produce2", - "authorization": [ - { - "actor": "55.tag", - "permission": "active" - } - ], - "data": { - "user": "55.tag", - "workid": 8, - "assetid": 2316, - "multiple": 5, - "round": 1 - }, - "hex_data": "000000003093412908000000000000000c0900000000000005000000000000000100000000000000" - } - ] - } - } - }, - { - "status": "executed", - "cpu_usage_us": 237, - "net_usage_words": 19, - "trx": { - "id": "ec9a7120f1e04c0c6663dbd1de77441b082f7132a480269ce64453ba8e31d27e", - "signatures": [ - "SIG_K1_KgAnZ53B19HG6ihxnPHbTF5fQY4BP4wc8AxsvRVNyXUTDh16oLiiyNAmgmx9bgahhm8uatZ2sVwSTPvaiEDkXVrFdTptPb", - "SIG_K1_Kf2F47L513ZEcov5KNYSkqKCXrCW2Ze9ZtkREjJVbhn6RdGp1BuPW8ncdyBacFrsDbWUjDpssa8Z7brXNcgtcFUu3Ds954" - ], - "compression": "none", - "packed_context_free_data": "", - "context_free_data": [], - "packed_trx": "da5d4a6317f94cac290f000000000290cd919447e3a662000000000050299d017099c4ea667324e5000000004ce630450000000080990c304e0000000000e94c440100785e6045e396b900000000a8ed32320800785e6045e396b900", - "transaction": { - "expiration": "2022-10-15T07:14:34", - "ref_block_num": 63767, - "ref_block_prefix": 254389324, - "max_net_usage_words": 0, - "max_cpu_usage_ms": 0, - "delay_sec": 0, - "context_free_actions": [], - "actions": [ - { - "account": "genialwombat", - "name": "noop", - "authorization": [ - { - "actor": "wombatresmgr", - "permission": "cosign" - } - ], - "data": "" - }, - { - "account": "dss.tag", - "name": "claim", - "authorization": [ - { - "actor": "rafialf.ftw", - "permission": "active" - } - ], - "data": { - "user": "rafialf.ftw" - }, - "hex_data": "00785e6045e396b9" + "hex_data": "40aeda34d25cfd450000c8d7645cbb920000000000000000896f0000001f2819b684a6cff1e72d17a0e050a3349797dea09cbaef132f241790f2c73d49b9633cb6a595b7cd16378ded6323dbc131456cdd7ced6b287ad93a24bc1945771a100000000000000000000000000000000000000000000000000000000000000000000000000000000000" } ] } diff --git a/transaction.go b/transaction.go index 7171ccd8..819640ff 100644 --- a/transaction.go +++ b/transaction.go @@ -344,6 +344,8 @@ type PackedTransaction struct { Compression CompressionType `json:"compression"` // in C++, it's an enum, not sure how it Binary-marshals.. PackedContextFreeData HexBytes `json:"packed_context_free_data"` PackedTransaction HexBytes `json:"packed_trx"` + ContextFreeData []string `json:"context_free_data,omitempty" eos:"-"` + Transaction *Transaction `json:"transaction,omitempty" eos:"-"` wasPackedLocally bool } From b2b6d616244e14177af73b7cd95e29a3863fbd54 Mon Sep 17 00:00:00 2001 From: psy2848048 Date: Fri, 2 Dec 2022 01:07:52 +0900 Subject: [PATCH 30/41] docs: added some points into CHANGELOG (#196) --- CHANGELOG.md | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 2ef0ea25..05906e09 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -8,9 +8,18 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 * Added `action_trace_v1` field * Added `AsTime` helper functions to convert `TimePoint` and `TimePointSec` to `time.Time` * Added support for decoding action results +* Raised the minimum supporting Go version 1.13 -> 1.17 +* Added unit tests of REST API +* Added `earliest_available_block_num`, `fork_db_head_block_num`, `fork_db_head_block_id`, `last_irreversible_block_time`, `total_cpu_weight`, `total_net_weight`, & `server_full_version_string` fields in `InfoResp` +* Added `head_block_num`, `head_block_time`, `rex_info`, `subjective_cpu_bill_limit`, & `eosio_any_linked_actions` fields in `AccountResp` +* Added the new type `RexInfo`, `LinkedAction` +* Added `linked_actions` in `Permission` +* Added `context_free_data` & `transaction` fields in `PackedTransaction` #### Breaking Changes +* `AccountResp.last_code_update` & `AccountResp.created` in `AccountResp` are now `BlockTimestamp`, were previously `JSONTime` + #### Added #### Changed From e05e5f6b6c931f482892d169a23a80b27dfefe26 Mon Sep 17 00:00:00 2001 From: Matthieu Vachon Date: Sat, 10 Dec 2022 02:16:05 -0500 Subject: [PATCH 31/41] Fixed serialization of `map[K]V` types by sorting the keys to have a stable order * `eos.MarshalBinary` will now refuses to serialize a `map[K]V` if `K`'s type is not comparable. * Updated to latest version of `github.com/streamingfast/logging` library. # Conflicts: # go.mod # go.sum --- CHANGELOG.md | 8 ++ abidecoder.go | 20 +-- abiencoder.go | 24 ++-- cmd/eos-p2p-client/main.go | 3 +- cmd/eos-p2p-proxy/main.go | 3 +- cmd/eos-p2p-relay/main.go | 3 +- decoder.go | 102 ++++++------- encoder.go | 178 +++++++++++++++++------ go.mod | 49 ++++--- go.sum | 283 ++++++++++++++++++++++++++++++++----- init_test.go | 2 +- logging.go | 26 +--- p2p/logging.go | 7 +- types.go | 4 + 14 files changed, 509 insertions(+), 203 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 05906e09..ff3115b4 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -49,13 +49,21 @@ Fix NewPrivateKey correctly working with PVT_K1 keys (#177) #### Added * Add EOSIO Testnet symbol (#165) + * Update ActionResp (#166) #### Changed +* Updated to latest version of `github.com/streamingfast/logging` library. + +* `eos.MarshalBinary` will now refuses to serialize a `map[K]V` if `K`'s type is not comparable. + #### Fixed +* Fixed serialization of `map[K]V` types by sorting the keys to have a stable order. + * Bugfix StringToSymbol (44b6fbd) + * Fixed built-in examples (pointing by default to EOS Nation API nodes) (36114bd) #### Deprecated diff --git a/abidecoder.go b/abidecoder.go index 40fa17e4..e814c74d 100644 --- a/abidecoder.go +++ b/abidecoder.go @@ -76,7 +76,7 @@ func (a *ABI) Decode(binaryDecoder *Decoder, structName string) ([]byte, error) } func (a *ABI) decode(binaryDecoder *Decoder, structName string) (map[string]interface{}, error) { - if traceEnabled { + if tracer.Enabled() { zlog.Debug("decode struct", zap.String("name", structName)) } @@ -87,12 +87,12 @@ func (a *ABI) decode(binaryDecoder *Decoder, structName string) (map[string]inte builtStruct := map[string]interface{}{} if structure.Base != "" { - if traceEnabled { + if tracer.Enabled() { zlog.Debug("struct has base struct", zap.String("name", structName), zap.String("base", structure.Base)) } baseName, isAlias := a.TypeNameForNewTypeName(structure.Base) - if isAlias && traceEnabled { + if isAlias && tracer.Enabled() { zlog.Debug("base is an alias", zap.String("from", structure.Base), zap.String("to", baseName)) } @@ -137,7 +137,7 @@ func (a *ABI) resolveField(binaryDecoder *Decoder, initialFieldType string) (out fieldType, isOptional, isArray, isBinaryExtension := analyzeFieldType(initialFieldType) //fmt.Println("resolveField", isOptional, isArray, initialFieldType, fieldType) - if traceEnabled { + if tracer.Enabled() { zlog.Debug("analyzed field", zap.String("field_type", fieldType), zap.Bool("is_optional", isOptional), @@ -149,7 +149,7 @@ func (a *ABI) resolveField(binaryDecoder *Decoder, initialFieldType string) (out // check if this field is an alias aliasFieldType, isAlias := a.TypeNameForNewTypeName(fieldType) if isAlias { - if traceEnabled { + if tracer.Enabled() { zlog.Debug("type is an alias", zap.String("from", fieldType), zap.String("to", aliasFieldType), @@ -160,7 +160,7 @@ func (a *ABI) resolveField(binaryDecoder *Decoder, initialFieldType string) (out // check if the field is a binary extension if isBinaryExtension && !binaryDecoder.hasRemaining() { - if traceEnabled { + if tracer.Enabled() { zlog.Debug("type is a binary extension and no more data, skipping field", zap.String("type", fieldType)) } return skipField, nil @@ -174,7 +174,7 @@ func (a *ABI) resolveField(binaryDecoder *Decoder, initialFieldType string) (out } if b == 0 { - if traceEnabled { + if tracer.Enabled() { zlog.Debug("field is not present") } if !a.fitNodeos { @@ -245,12 +245,12 @@ func (a *ABI) read(binaryDecoder *Decoder, fieldType string) (interface{}, error } variantFieldType := variant.Types[variantIndex] - if traceEnabled { + if tracer.Enabled() { zlog.Debug("field is a variant", zap.String("type", variantFieldType)) } resolvedVariantFieldType, isAlias := a.TypeNameForNewTypeName(variantFieldType) - if isAlias && traceEnabled { + if isAlias && tracer.Enabled() { zlog.Debug("variant type is an alias", zap.String("from", fieldType), zap.String("to", resolvedVariantFieldType)) } @@ -396,7 +396,7 @@ func (a *ABI) read(binaryDecoder *Decoder, fieldType string) (interface{}, error return nil, fmt.Errorf("read: %w", err) } - if traceEnabled { + if tracer.Enabled() { zlog.Debug("set field value", zap.Reflect("value", value), ) diff --git a/abiencoder.go b/abiencoder.go index 845a12cd..5e89ee0c 100644 --- a/abiencoder.go +++ b/abiencoder.go @@ -68,7 +68,7 @@ func (a *ABI) EncodeStruct(structName string, json []byte) ([]byte, error) { } func (a *ABI) encode(binaryEncoder *Encoder, structName string, json []byte) error { - if traceEnabled { + if tracer.Enabled() { zlog.Debug("abi encode struct", zap.String("name", structName)) } @@ -78,7 +78,7 @@ func (a *ABI) encode(binaryEncoder *Encoder, structName string, json []byte) err } if structure.Base != "" { - if traceEnabled { + if tracer.Enabled() { zlog.Debug("struct has base struct", zap.String("struct", structName), zap.String("base", structure.Base)) } err := a.encode(binaryEncoder, structure.Base, json) @@ -91,7 +91,7 @@ func (a *ABI) encode(binaryEncoder *Encoder, structName string, json []byte) err } func (a *ABI) encodeFields(binaryEncoder *Encoder, fields []FieldDef, json []byte) error { - if traceEnabled { + if tracer.Enabled() { defer func(prev *zap.Logger) { zlog = prev }(zlog) zlog = zlog.Named("fields") defer func(prev *zap.Logger) { zlog = prev }(zlog) @@ -100,14 +100,14 @@ func (a *ABI) encodeFields(binaryEncoder *Encoder, fields []FieldDef, json []byt for _, field := range fields { - if traceEnabled { + if tracer.Enabled() { zlog.Debug("encode field", zap.String("name", field.Name), zap.String("type", field.Type)) } fieldType, isOptional, isArray, _ := analyzeFieldType(field.Type) typeName, isAlias := a.TypeNameForNewTypeName(fieldType) fieldName := field.Name - if isAlias && traceEnabled { + if isAlias && tracer.Enabled() { zlog.Debug("type is an alias", zap.String("from", field.Type), zap.String("to", typeName)) } @@ -121,21 +121,21 @@ func (a *ABI) encodeFields(binaryEncoder *Encoder, fields []FieldDef, json []byt func (a *ABI) encodeField(binaryEncoder *Encoder, fieldName string, fieldType string, isOptional bool, isArray bool, json []byte) (err error) { - if traceEnabled { + if tracer.Enabled() { zlog.Debug("encode field json", zap.ByteString("json", json)) } value := gjson.GetBytes(json, fieldName) if isOptional { if value.Exists() { - if traceEnabled { + if tracer.Enabled() { zlog.Debug("field is optional and present", zap.String("name", fieldName), zap.String("type", fieldType)) } if e := binaryEncoder.writeByte(1); e != nil { return e } } else { - if traceEnabled { + if tracer.Enabled() { zlog.Debug("field is optional and *not* present", zap.String("name", fieldName), zap.String("type", fieldType)) } return binaryEncoder.writeByte(0) @@ -147,7 +147,7 @@ func (a *ABI) encodeField(binaryEncoder *Encoder, fieldName string, fieldType st if isArray { - if traceEnabled { + if tracer.Enabled() { zlog.Debug("field is an array", zap.String("name", fieldName), zap.String("type", fieldType)) } if !value.IsArray() { @@ -169,13 +169,13 @@ func (a *ABI) encodeField(binaryEncoder *Encoder, fieldName string, fieldType st func (a *ABI) writeField(binaryEncoder *Encoder, fieldName string, fieldType string, value gjson.Result) error { - if traceEnabled { + if tracer.Enabled() { zlog.Debug("write field", zap.String("name", fieldName), zap.String("type", fieldType), zap.String("json", value.Raw)) } structure := a.StructForName(fieldType) if structure != nil { - if traceEnabled { + if tracer.Enabled() { zlog.Debug("field is a struct", zap.String("name", fieldName)) } @@ -391,7 +391,7 @@ func (a *ABI) writeField(binaryEncoder *Encoder, fieldName string, fieldType str return fmt.Errorf("writing field of type [%s]: unknown type", fieldType) } - if traceEnabled { + if tracer.Enabled() { zlog.Debug("write object", zap.Reflect("value", object)) } diff --git a/cmd/eos-p2p-client/main.go b/cmd/eos-p2p-client/main.go index a6bf5d3c..0d6e30e6 100644 --- a/cmd/eos-p2p-client/main.go +++ b/cmd/eos-p2p-client/main.go @@ -8,6 +8,7 @@ import ( "github.com/eoscanada/eos-go/p2p" "github.com/streamingfast/logging" + "go.uber.org/zap/zapcore" ) var peer = flag.String("peer", "localhost:9876", "peer to connect to") @@ -18,7 +19,7 @@ func main() { flag.Parse() if *showLog { - logging.Set(logging.MustCreateLogger(), "github.com/eoscanada/eos-go/p2p") + logging.InstantiateLoggers(logging.WithDefaultLevel(zapcore.InfoLevel)) } defer p2p.SyncLogger() diff --git a/cmd/eos-p2p-proxy/main.go b/cmd/eos-p2p-proxy/main.go index 8cccaaed..0e943965 100644 --- a/cmd/eos-p2p-proxy/main.go +++ b/cmd/eos-p2p-proxy/main.go @@ -8,6 +8,7 @@ import ( "github.com/eoscanada/eos-go/p2p" "github.com/streamingfast/logging" + "go.uber.org/zap/zapcore" ) var peer1 = flag.String("peer1", "localhost:9876", "peer 1") @@ -21,7 +22,7 @@ func main() { fmt.Println("P2P Proxy") if *showLog { - logging.Set(logging.MustCreateLogger(), "github.com/eoscanada/eos-go/p2p") + logging.InstantiateLoggers(logging.WithDefaultLevel(zapcore.InfoLevel)) } defer p2p.SyncLogger() diff --git a/cmd/eos-p2p-relay/main.go b/cmd/eos-p2p-relay/main.go index 2105fe23..f25e3710 100644 --- a/cmd/eos-p2p-relay/main.go +++ b/cmd/eos-p2p-relay/main.go @@ -6,6 +6,7 @@ import ( "github.com/eoscanada/eos-go/p2p" "github.com/streamingfast/logging" + "go.uber.org/zap/zapcore" ) var peer = flag.String("peer", "", "peer") @@ -16,7 +17,7 @@ func main() { flag.Parse() if *showLog { - logging.Set(logging.MustCreateLogger(), "github.com/eoscanada/eos-go/p2p") + logging.InstantiateLoggers(logging.WithDefaultLevel(zapcore.InfoLevel)) } defer p2p.SyncLogger() diff --git a/decoder.go b/decoder.go index f8254e9e..f26e8ca4 100644 --- a/decoder.go +++ b/decoder.go @@ -161,7 +161,7 @@ func (d *Decoder) Decode(v interface{}, options ...DecodeOption) (err error) { } t := rv.Type() - if traceEnabled { + if tracer.Enabled() { zlog.Debug("decode type", typeField("type", v), zap.Bool("optional", optionalField)) } @@ -176,7 +176,7 @@ func (d *Decoder) Decode(v interface{}, options ...DecodeOption) (err error) { } if isPresent == 0 { - if traceEnabled { + if tracer.Enabled() { zlog.Debug("skipping optional", typeField("type", v)) } @@ -196,7 +196,7 @@ func (d *Decoder) Decode(v interface{}, options ...DecodeOption) (err error) { // // Ultimetaly, I think this could should be re-written, I don't think the `**` is necessary. if u, ok := newRV.Interface().(UnmarshalerBinary); ok { - if traceEnabled { + if tracer.Enabled() { zlog.Debug("using UnmarshalBinary method to decode type", typeField("type", v)) } return u.UnmarshalBinary(d) @@ -212,7 +212,7 @@ func (d *Decoder) Decode(v interface{}, options ...DecodeOption) (err error) { // We should re-code all the logic to determine the type and indirection using Golang `json` package // logic. See here: https://github.com/golang/go/blob/54697702e435bddb69c0b76b25b3209c78d2120a/src/encoding/json/decode.go#L439 if u, ok := v.(UnmarshalerBinary); ok { - if traceEnabled { + if tracer.Enabled() { zlog.Debug("using UnmarshalBinary method to decode type", typeField("type", v)) } return u.UnmarshalBinary(d) @@ -232,7 +232,7 @@ func (d *Decoder) Decode(v interface{}, options ...DecodeOption) (err error) { var n uint64 n, err = d.ReadUint64() name := NameToString(n) - if traceEnabled { + if tracer.Enabled() { zlog.Debug("read name", zap.String("name", name)) } rv.SetString(name) @@ -406,7 +406,7 @@ func (d *Decoder) Decode(v interface{}, options ...DecodeOption) (err error) { return } - if traceEnabled { + if tracer.Enabled() { zlog.Debug("type byte value", zap.Uint8("val", t)) } @@ -480,7 +480,7 @@ func (d *Decoder) Decode(v interface{}, options ...DecodeOption) (err error) { switch t.Kind() { case reflect.Array: - if traceEnabled { + if tracer.Enabled() { zlog.Debug("reading array") } len := t.Len() @@ -496,7 +496,7 @@ func (d *Decoder) Decode(v interface{}, options ...DecodeOption) (err error) { if l, err = d.ReadUvarint64(); err != nil { return } - if traceEnabled { + if tracer.Enabled() { zlog.Debug("reading slice", zap.Uint64("len", l), typeField("type", v)) } rv.Set(reflect.MakeSlice(t, int(l), int(l))) @@ -558,7 +558,7 @@ func (d *Decoder) decodeStruct(v interface{}, t reflect.Type, rv reflect.Value) value := v.Addr().Interface() - if traceEnabled { + if tracer.Enabled() { zlog.Debug("struct field", typeField(structField.Name, value), zap.String("tag", tag)) } @@ -577,7 +577,7 @@ func (d *Decoder) ReadUvarint64() (uint64, error) { if read <= 0 { return l, ErrVarIntBufferSize } - if traceEnabled { + if tracer.Enabled() { zlog.Debug("read uvarint64", zap.Uint64("val", l)) } d.pos += read @@ -588,7 +588,7 @@ func (d *Decoder) ReadVarint64() (out int64, err error) { if read <= 0 { return l, ErrVarIntBufferSize } - if traceEnabled { + if tracer.Enabled() { zlog.Debug("read varint", zap.Int64("val", l)) } d.pos += read @@ -601,7 +601,7 @@ func (d *Decoder) ReadVarint32() (out int32, err error) { return out, err } out = int32(n) - if traceEnabled { + if tracer.Enabled() { zlog.Debug("read varint32", zap.Int32("val", out)) } return @@ -613,7 +613,7 @@ func (d *Decoder) ReadUvarint32() (out uint32, err error) { return out, err } out = uint32(n) - if traceEnabled { + if tracer.Enabled() { zlog.Debug("read uvarint32", zap.Uint32("val", out)) } return @@ -632,7 +632,7 @@ func (d *Decoder) ReadByteArray() (out []byte, err error) { out = d.data[d.pos : d.pos+int(l)] d.pos += int(l) - if traceEnabled { + if tracer.Enabled() { zlog.Debug("read byte array", zap.Stringer("hex", HexBytes(out))) } return @@ -646,7 +646,7 @@ func (d *Decoder) ReadByte() (out byte, err error) { out = d.data[d.pos] d.pos++ - if traceEnabled { + if tracer.Enabled() { zlog.Debug("read byte", zap.Uint8("byte", out)) } return @@ -664,7 +664,7 @@ func (d *Decoder) ReadBool() (out bool, err error) { err = fmt.Errorf("readBool, %s", err) } out = b != 0 - if traceEnabled { + if tracer.Enabled() { zlog.Debug("read bool", zap.Bool("val", out)) } return @@ -684,7 +684,7 @@ func (d *Decoder) ReadUInt8() (out uint8, err error) { func (d *Decoder) ReadInt8() (out int8, err error) { b, err := d.ReadByte() out = int8(b) - if traceEnabled { + if tracer.Enabled() { zlog.Debug("read int8", zap.Int8("val", out)) } return @@ -698,7 +698,7 @@ func (d *Decoder) ReadUint16() (out uint16, err error) { out = binary.LittleEndian.Uint16(d.data[d.pos:]) d.pos += TypeSize.Uint16 - if traceEnabled { + if tracer.Enabled() { zlog.Debug("read uint16", zap.Uint16("val", out)) } return @@ -707,7 +707,7 @@ func (d *Decoder) ReadUint16() (out uint16, err error) { func (d *Decoder) ReadInt16() (out int16, err error) { n, err := d.ReadUint16() out = int16(n) - if traceEnabled { + if tracer.Enabled() { zlog.Debug("read int16", zap.Int16("val", out)) } return @@ -715,7 +715,7 @@ func (d *Decoder) ReadInt16() (out int16, err error) { func (d *Decoder) ReadInt64() (out int64, err error) { n, err := d.ReadUint64() out = int64(n) - if traceEnabled { + if tracer.Enabled() { zlog.Debug("read int64", zap.Int64("val", out)) } return @@ -729,7 +729,7 @@ func (d *Decoder) ReadUint32() (out uint32, err error) { out = binary.LittleEndian.Uint32(d.data[d.pos:]) d.pos += TypeSize.Uint32 - if traceEnabled { + if tracer.Enabled() { zlog.Debug("read uint32", zap.Uint32("val", out)) } return @@ -737,7 +737,7 @@ func (d *Decoder) ReadUint32() (out uint32, err error) { func (d *Decoder) ReadInt32() (out int32, err error) { n, err := d.ReadUint32() out = int32(n) - if traceEnabled { + if tracer.Enabled() { zlog.Debug("read int32", zap.Int32("val", out)) } return @@ -752,7 +752,7 @@ func (d *Decoder) ReadUint64() (out uint64, err error) { data := d.data[d.pos : d.pos+TypeSize.Uint64] out = binary.LittleEndian.Uint64(data) d.pos += TypeSize.Uint64 - if traceEnabled { + if tracer.Enabled() { zlog.Debug("read uint64", zap.Uint64("val", out), zap.Stringer("hex", HexBytes(data))) } return @@ -778,7 +778,7 @@ func (d *Decoder) ReadUint128(typeName string) (out Uint128, err error) { out.Hi = binary.LittleEndian.Uint64(data[8:]) d.pos += TypeSize.Uint128 - if traceEnabled { + if tracer.Enabled() { zlog.Debug("read uint128", zap.Stringer("hex", out), zap.Uint64("hi", out.Hi), zap.Uint64("lo", out.Lo)) } return @@ -793,7 +793,7 @@ func (d *Decoder) ReadFloat32() (out float32, err error) { n := binary.LittleEndian.Uint32(d.data[d.pos:]) out = math.Float32frombits(n) d.pos += TypeSize.Float32 - if traceEnabled { + if tracer.Enabled() { zlog.Debug("read float32", zap.Float32("val", out)) } return @@ -808,7 +808,7 @@ func (d *Decoder) ReadNodeosFloat32() (out float32, err error) { n := binary.LittleEndian.Uint32(d.data[d.pos:]) out = math.Float32frombits(n) d.pos += TypeSize.Float32 - if traceEnabled { + if tracer.Enabled() { zlog.Debug("read float32", zap.Float32("val", out)) } return @@ -823,7 +823,7 @@ func (d *Decoder) ReadFloat64() (out float64, err error) { n := binary.LittleEndian.Uint64(d.data[d.pos:]) out = math.Float64frombits(n) d.pos += TypeSize.Float64 - if traceEnabled { + if tracer.Enabled() { zlog.Debug("read Float64", zap.Float64("val", float64(out))) } return @@ -838,7 +838,7 @@ func fixUtf(r rune) rune { func (d *Decoder) SafeReadUTF8String() (out string, err error) { data, err := d.ReadByteArray() out = strings.Map(fixUtf, string(data)) - if traceEnabled { + if tracer.Enabled() { zlog.Debug("read safe UTF8 string", zap.String("val", out)) } return @@ -847,7 +847,7 @@ func (d *Decoder) SafeReadUTF8String() (out string, err error) { func (d *Decoder) ReadString() (out string, err error) { data, err := d.ReadByteArray() out = string(data) - if traceEnabled { + if tracer.Enabled() { zlog.Debug("read string", zap.String("val", out)) } return @@ -862,7 +862,7 @@ func (d *Decoder) ReadChecksum160() (out Checksum160, err error) { out = make(Checksum160, TypeSize.Checksum160) copy(out, d.data[d.pos:d.pos+TypeSize.Checksum160]) d.pos += TypeSize.Checksum160 - if traceEnabled { + if tracer.Enabled() { zlog.Debug("read checksum160", zap.Stringer("hex", HexBytes(out))) } return @@ -877,7 +877,7 @@ func (d *Decoder) ReadChecksum256() (out Checksum256, err error) { out = make(Checksum256, TypeSize.Checksum256) copy(out, d.data[d.pos:d.pos+TypeSize.Checksum256]) d.pos += TypeSize.Checksum256 - if traceEnabled { + if tracer.Enabled() { zlog.Debug("read checksum256", zap.Stringer("hex", HexBytes(out))) } return @@ -892,7 +892,7 @@ func (d *Decoder) ReadChecksum512() (out Checksum512, err error) { out = make(Checksum512, TypeSize.Checksum512) copy(out, d.data[d.pos:d.pos+TypeSize.Checksum512]) d.pos += TypeSize.Checksum512 - if traceEnabled { + if tracer.Enabled() { zlog.Debug("read checksum512", zap.Stringer("hex", HexBytes(out))) } return @@ -926,7 +926,7 @@ func (d *Decoder) ReadPublicKey() (out ecc.PublicKey, err error) { return out, fmt.Errorf("new public key from data: %w", err) } - if traceEnabled { + if tracer.Enabled() { zlog.Debug("read public key", zap.Stringer("pubkey", out)) } @@ -980,7 +980,7 @@ func (d *Decoder) ReadSignature() (out ecc.Signature, err error) { } curveID := ecc.CurveID(typeID) - if traceEnabled { + if tracer.Enabled() { zlog.Debug("read signature curve id", zap.Stringer("curve", curveID)) } @@ -994,7 +994,7 @@ func (d *Decoder) ReadSignature() (out ecc.Signature, err error) { data = make([]byte, 66) data[0] = byte(curveID) copy(data[1:], d.data[d.pos:d.pos+TypeSize.Signature-1]) - if traceEnabled { + if tracer.Enabled() { zlog.Debug("read signature data", zap.Stringer("data", HexBytes(data))) } @@ -1013,7 +1013,7 @@ func (d *Decoder) ReadSignature() (out ecc.Signature, err error) { return out, fmt.Errorf("new signature: %w", err) } - if traceEnabled { + if tracer.Enabled() { zlog.Debug("read signature", zap.Stringer("sig", out)) } @@ -1056,7 +1056,7 @@ func (d *Decoder) readWASignatureData() (out []byte, err error) { out = make([]byte, signatureMaterialSize+1) out[0] = byte(ecc.CurveWA) copy(out[1:], d.data[begin:begin+signatureMaterialSize]) - if traceEnabled { + if tracer.Enabled() { zlog.Debug("read wa signature data", zap.Stringer("data", HexBytes(out))) } @@ -1071,7 +1071,7 @@ func (d *Decoder) ReadTstamp() (out Tstamp, err error) { unixNano, err := d.ReadUint64() out.Time = time.Unix(0, int64(unixNano)) - if traceEnabled { + if tracer.Enabled() { zlog.Debug("read tstamp", zap.Time("time", out.Time)) } return @@ -1089,7 +1089,7 @@ func (d *Decoder) ReadBlockTimestamp() (out BlockTimestamp, err error) { milliseconds := int64(n)*500 + 946684800000 out.Time = time.Unix(0, milliseconds*1000*1000) - if traceEnabled { + if tracer.Enabled() { zlog.Debug("read block timestamp", zap.Time("time", out.Time)) } return @@ -1098,7 +1098,7 @@ func (d *Decoder) ReadBlockTimestamp() (out BlockTimestamp, err error) { func (d *Decoder) ReadTimePoint() (out TimePoint, err error) { n, err := d.ReadUint64() out = TimePoint(n) - if traceEnabled { + if tracer.Enabled() { zlog.Debug("read TimePoint", zap.Uint64("us", uint64(out))) } return @@ -1107,7 +1107,7 @@ func (d *Decoder) ReadTimePoint() (out TimePoint, err error) { func (d *Decoder) ReadTimePointSec() (out TimePointSec, err error) { n, err := d.ReadUint32() out = TimePointSec(n) - if traceEnabled { + if tracer.Enabled() { zlog.Debug("read TimePointSec", zap.Uint32("secs", uint32(out))) } return @@ -1117,7 +1117,7 @@ func (d *Decoder) ReadTimePointSec() (out TimePointSec, err error) { func (d *Decoder) ReadJSONTime() (jsonTime JSONTime, err error) { n, err := d.ReadUint32() jsonTime = JSONTime{time.Unix(int64(n), 0).UTC()} - if traceEnabled { + if tracer.Enabled() { zlog.Debug("read json time", zap.Time("time", jsonTime.Time)) } return @@ -1126,7 +1126,7 @@ func (d *Decoder) ReadJSONTime() (jsonTime JSONTime, err error) { func (d *Decoder) ReadName() (out Name, err error) { n, err := d.ReadUint64() out = Name(NameToString(n)) - if traceEnabled { + if tracer.Enabled() { zlog.Debug("read name", zap.String("name", string(out))) } return @@ -1136,7 +1136,7 @@ func (d *Decoder) ReadCurrencyName() (out CurrencyName, err error) { data := d.data[d.pos : d.pos+TypeSize.CurrencyName] d.pos += TypeSize.CurrencyName out = CurrencyName(strings.TrimRight(string(data), "\x00")) - if traceEnabled { + if tracer.Enabled() { zlog.Debug("read currency name", zap.String("name", string(out))) } return @@ -1162,7 +1162,7 @@ func (d *Decoder) ReadAsset() (out Asset, err error) { out.Amount = Int64(amount) out.Precision = precision out.Symbol.Symbol = strings.TrimRight(string(data), "\x00") - if traceEnabled { + if tracer.Enabled() { zlog.Debug("read asset", zap.Stringer("value", out)) } return @@ -1184,7 +1184,7 @@ func (d *Decoder) ReadExtendedAsset() (out ExtendedAsset, err error) { Contract: AccountName(contract), } - if traceEnabled { + if tracer.Enabled() { zlog.Debug("read extended asset") } @@ -1205,7 +1205,7 @@ func (d *Decoder) ReadSymbol() (out *Symbol, err error) { Symbol: symbolCode, } - if traceEnabled { + if tracer.Enabled() { zlog.Debug("read symbol", zap.String("symbol", symbolCode), zap.Uint8("precision", precision)) } return @@ -1215,7 +1215,7 @@ func (d *Decoder) ReadSymbolCode() (out SymbolCode, err error) { n, err := d.ReadUint64() out = SymbolCode(n) - if traceEnabled { + if tracer.Enabled() { zlog.Debug("read symbol code") } return @@ -1229,7 +1229,7 @@ func (d *Decoder) ReadActionData(action *Action) (err error) { objType := actionMap[action.Name] if objType != nil { - if traceEnabled { + if tracer.Enabled() { zlog.Debug("read object", zap.String("type", objType.Name())) } decodeInto = objType @@ -1239,12 +1239,12 @@ func (d *Decoder) ReadActionData(action *Action) (err error) { return } - if traceEnabled { + if tracer.Enabled() { zlog.Debug("reflect type", zap.String("type", decodeInto.Name())) } obj := reflect.New(decodeInto) iface := obj.Interface() - if traceEnabled { + if tracer.Enabled() { zlog.Debug("reflect object", typeField("type", iface), zap.Reflect("obj", obj)) } err = UnmarshalBinary(action.ActionData.HexData, iface) diff --git a/encoder.go b/encoder.go index 38f3d840..0e1e02a5 100644 --- a/encoder.go +++ b/encoder.go @@ -9,6 +9,7 @@ import ( "io" "math" "reflect" + "sort" "time" "github.com/eoscanada/eos-go/ecc" @@ -182,7 +183,7 @@ func (e *Encoder) Encode(v interface{}) (err error) { case reflect.Array: l := t.Len() - if traceEnabled { + if tracer.Enabled() { defer func(prev *zap.Logger) { zlog = prev }(zlog) zlog = zlog.Named("array") zlog.Debug("encode: array", zap.Int("length", l), typeField("type", v)) @@ -199,7 +200,7 @@ func (e *Encoder) Encode(v interface{}) (err error) { return } - if traceEnabled { + if tracer.Enabled() { defer func(prev *zap.Logger) { zlog = prev }(zlog) zlog = zlog.Named("slice") zlog.Debug("encode: slice", zap.Int("length", l), typeField("type", v)) @@ -213,7 +214,7 @@ func (e *Encoder) Encode(v interface{}) (err error) { case reflect.Struct: l := rv.NumField() - if traceEnabled { + if tracer.Enabled() { zlog.Debug("encode: struct", zap.Int("fields", l), typeField("type", v)) defer func(prev *zap.Logger) { zlog = prev }(zlog) zlog = zlog.Named("struct") @@ -221,7 +222,7 @@ func (e *Encoder) Encode(v interface{}) (err error) { for i := 0; i < l; i++ { field := t.Field(i) - if traceEnabled { + if tracer.Enabled() { zlog.Debug("field", zap.String("field", field.Name)) } @@ -248,19 +249,43 @@ func (e *Encoder) Encode(v interface{}) (err error) { } case reflect.Map: - keyCount := len(rv.MapKeys()) + keys := rv.MapKeys() + keyCount := len(keys) + keyType := t.Key() - if traceEnabled { - zlog.Debug("encode: map", zap.Int("key_count", keyCount), typeField("key_type", t.Key()), typeField("value_type", rv.Elem())) + if tracer.Enabled() { + zlog.Debug("encode: map", zap.Int("key_count", keyCount), typeField("key_type", keyType)) defer func(prev *zap.Logger) { zlog = prev }(zlog) - zlog = zlog.Named("struct") + zlog = zlog.Named("map") } if err = e.writeUVarInt(keyCount); err != nil { return } - for _, mapKey := range rv.MapKeys() { + if keyCount == 0 { + return + } + + keyKind, errCompare := basicKindFromReflect(keyType.Kind()) + if errCompare != nil { + return fmt.Errorf("encode map: key of type %t must be comparable: %w", keyType, errCompare) + } + + sort.Slice(keys, func(i, j int) bool { + left := keys[i] + right := keys[j] + + // We have validate most of this already, only case that can still happens is in error in coverage + isLower, err := lt(keyKind, left, right) + if err != nil { + panic(fmt.Errorf("encode map: unable to compare keys: %w", err)) + } + + return isLower + }) + + for _, mapKey := range keys { if err = e.Encode(mapKey.Interface()); err != nil { return } @@ -281,7 +306,7 @@ func (e *Encoder) Encode(v interface{}) (err error) { func (e *Encoder) toWriter(bytes []byte) (err error) { e.count += len(bytes) - if traceEnabled { + if tracer.Enabled() { zlog.Debug(" appending", zap.Stringer("hex", HexBytes(bytes)), zap.Int("pos", e.count)) } @@ -290,7 +315,7 @@ func (e *Encoder) toWriter(bytes []byte) (err error) { } func (e *Encoder) writeByteArray(b []byte) error { - if traceEnabled { + if tracer.Enabled() { zlog.Debug("write byte array", zap.Int("len", len(b))) } if err := e.writeUVarInt(len(b)); err != nil { @@ -300,7 +325,7 @@ func (e *Encoder) writeByteArray(b []byte) error { } func (e *Encoder) writeUVarInt(v int) (err error) { - if traceEnabled { + if tracer.Enabled() { zlog.Debug("write uvarint", zap.Int("val", v)) } @@ -310,7 +335,7 @@ func (e *Encoder) writeUVarInt(v int) (err error) { } func (e *Encoder) writeUVarInt32(v uint32) (err error) { - if traceEnabled { + if tracer.Enabled() { zlog.Debug("write varuint32", zap.Uint32("val", v)) } @@ -320,7 +345,7 @@ func (e *Encoder) writeUVarInt32(v uint32) (err error) { } func (e *Encoder) writeVarInt(v int) (err error) { - if traceEnabled { + if tracer.Enabled() { zlog.Debug("write varint", zap.Int("val", v)) } @@ -330,7 +355,7 @@ func (e *Encoder) writeVarInt(v int) (err error) { } func (e *Encoder) writeVarInt32(v int32) (err error) { - if traceEnabled { + if tracer.Enabled() { zlog.Debug("write varint32", zap.Int32("val", v)) } @@ -340,14 +365,14 @@ func (e *Encoder) writeVarInt32(v int32) (err error) { } func (e *Encoder) writeByte(b byte) (err error) { - if traceEnabled { + if tracer.Enabled() { zlog.Debug("write byte", zap.Uint8("val", b)) } return e.toWriter([]byte{b}) } func (e *Encoder) writeBool(b bool) (err error) { - if traceEnabled { + if tracer.Enabled() { zlog.Debug("write bool", zap.Bool("val", b)) } var out byte @@ -358,7 +383,7 @@ func (e *Encoder) writeBool(b bool) (err error) { } func (e *Encoder) writeUint16(i uint16) (err error) { - if traceEnabled { + if tracer.Enabled() { zlog.Debug("write uint16", zap.Uint16("val", i)) } buf := make([]byte, TypeSize.Uint16) @@ -367,21 +392,21 @@ func (e *Encoder) writeUint16(i uint16) (err error) { } func (e *Encoder) writeInt16(i int16) (err error) { - if traceEnabled { + if tracer.Enabled() { zlog.Debug("write int16", zap.Int16("val", i)) } return e.writeUint16(uint16(i)) } func (e *Encoder) writeInt32(i int32) (err error) { - if traceEnabled { + if tracer.Enabled() { zlog.Debug("write int32", zap.Int32("val", i)) } return e.writeUint32(uint32(i)) } func (e *Encoder) writeUint32(i uint32) (err error) { - if traceEnabled { + if tracer.Enabled() { zlog.Debug("write uint32", zap.Uint32("val", i)) } buf := make([]byte, TypeSize.Uint32) @@ -390,14 +415,14 @@ func (e *Encoder) writeUint32(i uint32) (err error) { } func (e *Encoder) writeInt64(i int64) (err error) { - if traceEnabled { + if tracer.Enabled() { zlog.Debug("write int64", zap.Int64("val", i)) } return e.writeUint64(uint64(i)) } func (e *Encoder) writeUint64(i uint64) (err error) { - if traceEnabled { + if tracer.Enabled() { zlog.Debug("write uint64", zap.Uint64("val", i)) } buf := make([]byte, TypeSize.Uint64) @@ -406,7 +431,7 @@ func (e *Encoder) writeUint64(i uint64) (err error) { } func (e *Encoder) writeUint128(i Uint128) (err error) { - if traceEnabled { + if tracer.Enabled() { zlog.Debug("write uint128", zap.Stringer("hex", i), zap.Uint64("lo", i.Lo), zap.Uint64("hi", i.Hi)) } buf := make([]byte, TypeSize.Uint128) @@ -416,7 +441,7 @@ func (e *Encoder) writeUint128(i Uint128) (err error) { } func (e *Encoder) writeFloat32(f float32) (err error) { - if traceEnabled { + if tracer.Enabled() { zlog.Debug("write float32", zap.Float32("val", f)) } i := math.Float32bits(f) @@ -426,7 +451,7 @@ func (e *Encoder) writeFloat32(f float32) (err error) { return e.toWriter(buf) } func (e *Encoder) writeFloat64(f float64) (err error) { - if traceEnabled { + if tracer.Enabled() { zlog.Debug("write float64", zap.Float64("val", f)) } i := math.Float64bits(f) @@ -437,14 +462,14 @@ func (e *Encoder) writeFloat64(f float64) (err error) { } func (e *Encoder) writeString(s string) (err error) { - if traceEnabled { + if tracer.Enabled() { zlog.Debug("write string", zap.String("val", s)) } return e.writeByteArray([]byte(s)) } func (e *Encoder) writeChecksum160(checksum Checksum160) error { - if traceEnabled { + if tracer.Enabled() { zlog.Debug("write Checksum160", zap.Stringer("hex", HexBytes(checksum))) } if len(checksum) == 0 { @@ -454,7 +479,7 @@ func (e *Encoder) writeChecksum160(checksum Checksum160) error { } func (e *Encoder) writeChecksum256(checksum Checksum256) error { - if traceEnabled { + if tracer.Enabled() { zlog.Debug("write Checksum256", zap.Stringer("hex", HexBytes(checksum))) } if len(checksum) == 0 { @@ -464,7 +489,7 @@ func (e *Encoder) writeChecksum256(checksum Checksum256) error { } func (e *Encoder) writeChecksum512(checksum Checksum512) error { - if traceEnabled { + if tracer.Enabled() { zlog.Debug("write Checksum512", zap.Stringer("hex", HexBytes(checksum))) } if len(checksum) == 0 { @@ -474,7 +499,7 @@ func (e *Encoder) writeChecksum512(checksum Checksum512) error { } func (e *Encoder) writePublicKey(pk ecc.PublicKey) (err error) { - if traceEnabled { + if tracer.Enabled() { zlog.Debug("write public key", zap.Stringer("pubkey", pk)) } @@ -491,7 +516,7 @@ func (e *Encoder) writePublicKey(pk ecc.PublicKey) (err error) { } func (e *Encoder) writeSignature(s ecc.Signature) (err error) { - if traceEnabled { + if tracer.Enabled() { zlog.Debug("write signature", zap.Stringer("sig", s)) } @@ -508,7 +533,7 @@ func (e *Encoder) writeSignature(s ecc.Signature) (err error) { } func (e *Encoder) writeTstamp(t Tstamp) (err error) { - if traceEnabled { + if tracer.Enabled() { zlog.Debug("write tstamp", zap.Time("time", t.Time)) } n := uint64(t.UnixNano()) @@ -516,7 +541,7 @@ func (e *Encoder) writeTstamp(t Tstamp) (err error) { } func (e *Encoder) writeBlockTimestamp(bt BlockTimestamp) (err error) { - if traceEnabled { + if tracer.Enabled() { zlog.Debug("write block timestamp", zap.Time("time", bt.Time)) } @@ -529,7 +554,7 @@ func (e *Encoder) writeBlockTimestamp(bt BlockTimestamp) (err error) { func (e *Encoder) writeCurrencyName(currency CurrencyName) (err error) { // FIXME: this isn't really used.. we should implement serialization for the Symbol // type only instead. - if traceEnabled { + if tracer.Enabled() { zlog.Debug("write currency", zap.String("name", string(currency))) } out := make([]byte, 7, 7) @@ -539,7 +564,7 @@ func (e *Encoder) writeCurrencyName(currency CurrencyName) (err error) { } func (e *Encoder) writeAsset(asset Asset) (err error) { - if traceEnabled { + if tracer.Enabled() { zlog.Debug("write asset", zap.Stringer("value", asset)) } e.writeUint64(uint64(asset.Amount)) @@ -552,14 +577,14 @@ func (e *Encoder) writeAsset(asset Asset) (err error) { } func (e *Encoder) writeJSONTime(tm JSONTime) (err error) { - if traceEnabled { + if tracer.Enabled() { zlog.Debug("write json time", zap.Time("time", tm.Time)) } return e.writeUint32(uint32(tm.Unix())) } func (e *Encoder) writeBlockP2PMessageEnvelope(envelope Packet) (err error) { - if traceEnabled { + if tracer.Enabled() { zlog.Debug("p2p: write message envelope") } @@ -576,7 +601,7 @@ func (e *Encoder) writeBlockP2PMessageEnvelope(envelope Packet) (err error) { messageLen := uint32(len(envelope.Payload) + 1) - if traceEnabled { + if tracer.Enabled() { zlog.Debug("p2p: message length", zap.Uint32("len", messageLen)) } @@ -597,7 +622,7 @@ func (e *Encoder) writeActionData(actionData ActionData) (err error) { // log.Fatal("pas cool") //} - if traceEnabled { + if tracer.Enabled() { zlog.Debug("entering action data", typeField("type", actionData)) } var d interface{} @@ -616,14 +641,14 @@ func (e *Encoder) writeActionData(actionData ActionData) (err error) { } - if traceEnabled { + if tracer.Enabled() { zlog.Debug("encoding action data", typeField("type", d)) } raw, err := MarshalBinary(d) if err != nil { return err } - if traceEnabled { + if tracer.Enabled() { zlog.Debug("writing action data", typeField("type", d)) } return e.writeByteArray(raw) @@ -631,3 +656,72 @@ func (e *Encoder) writeActionData(actionData ActionData) (err error) { return e.writeByteArray(actionData.HexData) } + +// lt evaluates the comparison a < b. +// +// Copied from text/template in Golang 1.19.2 +func lt(valueKind kind, arg1, arg2 reflect.Value) (bool, error) { + arg1 = indirectInterface(arg1) + arg2 = indirectInterface(arg2) + + truth := false + + switch valueKind { + case floatKind: + truth = arg1.Float() < arg2.Float() + case intKind: + truth = arg1.Int() < arg2.Int() + case stringKind: + truth = arg1.String() < arg2.String() + case uintKind: + truth = arg1.Uint() < arg2.Uint() + default: + panic("invalid kind") + } + + return truth, nil +} + +// indirectInterface returns the concrete value in an interface value, +// or else the zero reflect.Value. +// That is, if v represents the interface value x, the result is the same as reflect.ValueOf(x): +// the fact that x was an interface value is forgotten. +func indirectInterface(v reflect.Value) reflect.Value { + if v.Kind() != reflect.Interface { + return v + } + if v.IsNil() { + return reflect.Value{} + } + return v.Elem() +} + +type kind int + +const ( + invalidKind kind = iota + boolKind + complexKind + intKind + floatKind + stringKind + uintKind +) + +func basicKindFromReflect(v reflect.Kind) (kind, error) { + switch v { + case reflect.Int, reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int64: + return intKind, nil + case reflect.Uint, reflect.Uint8, reflect.Uint16, reflect.Uint32, reflect.Uint64, reflect.Uintptr: + return uintKind, nil + case reflect.Float32, reflect.Float64: + return floatKind, nil + case reflect.String: + return stringKind, nil + } + return invalidKind, fmt.Errorf("invalid type %s for comparison", v) +} + +func basicKind(v reflect.Value) (kind, error) { + return basicKindFromReflect(v.Kind()) +} diff --git a/go.mod b/go.mod index 599eb90b..10fd98fb 100644 --- a/go.mod +++ b/go.mod @@ -5,32 +5,49 @@ go 1.17 require ( github.com/jarcoal/httpmock v1.2.0 github.com/pkg/errors v0.9.1 - github.com/streamingfast/logging v0.0.0-20210811175431-f3b44b61606a - github.com/stretchr/testify v1.5.1 + github.com/streamingfast/cli v0.0.4-0.20220630165922-bc58c6666fc8 + github.com/streamingfast/logging v0.0.0-20221209193439-bff11742bf4c + github.com/stretchr/testify v1.7.0 + github.com/test-go/testify v1.1.4 github.com/tidwall/gjson v1.9.3 - go.uber.org/zap v1.14.0 - golang.org/x/crypto v0.0.0-20200406173513-056763e48d71 + go.uber.org/zap v1.21.0 + golang.org/x/crypto v0.0.0-20220214200702-86341886e292 ) require ( - contrib.go.opencensus.io/exporter/stackdriver v0.12.6 // indirect - github.com/BurntSushi/toml v0.3.1 // indirect github.com/blendle/zapdriver v1.3.1 // indirect + github.com/chzyer/readline v0.0.0-20180603132655-2972be24d48e // indirect github.com/davecgh/go-spew v1.1.1 // indirect - github.com/golang/groupcache v0.0.0-20190702054246-869f871628b6 // indirect + github.com/fsnotify/fsnotify v1.4.7 // indirect + github.com/hashicorp/hcl v1.0.0 // indirect + github.com/inconshreveable/mousetrap v1.0.0 // indirect + github.com/juju/ansiterm v0.0.0-20180109212912-720a0952cc2a // indirect + github.com/lithammer/dedent v1.1.0 // indirect github.com/logrusorgru/aurora v2.0.3+incompatible // indirect + github.com/lunixbochs/vtclean v0.0.0-20180621232353-2d01aacdc34a // indirect + github.com/magiconair/properties v1.8.1 // indirect + github.com/manifoldco/promptui v0.8.0 // indirect + github.com/mattn/go-colorable v0.0.9 // indirect + github.com/mattn/go-isatty v0.0.4 // indirect github.com/mitchellh/go-testing-interface v1.14.1 // indirect + github.com/mitchellh/mapstructure v1.1.2 // indirect + github.com/pelletier/go-toml v1.2.0 // indirect github.com/pmezard/go-difflib v1.0.0 // indirect - github.com/teris-io/shortid v0.0.0-20171029131806-771a37caa5cf // indirect + github.com/spf13/afero v1.1.2 // indirect + github.com/spf13/cast v1.3.0 // indirect + github.com/spf13/cobra v1.1.3 // indirect + github.com/spf13/jwalterweatherman v1.0.0 // indirect + github.com/spf13/pflag v1.0.5 // indirect + github.com/spf13/viper v1.7.0 // indirect + github.com/subosito/gotenv v1.2.0 // indirect github.com/tidwall/match v1.1.1 // indirect github.com/tidwall/pretty v1.2.0 // indirect - go.opencensus.io v0.22.1 // indirect - go.uber.org/atomic v1.5.0 // indirect - go.uber.org/multierr v1.3.0 // indirect - go.uber.org/tools v0.0.0-20190618225709-2cfd321de3ee // indirect - golang.org/x/lint v0.0.0-20190930215403-16217165b5de // indirect + go.uber.org/atomic v1.7.0 // indirect + go.uber.org/multierr v1.6.0 // indirect golang.org/x/sys v0.0.0-20220627191245-f75cf1eec38b // indirect - golang.org/x/tools v0.0.0-20191029190741-b9c20aec41a5 // indirect - gopkg.in/yaml.v2 v2.2.2 // indirect - honnef.co/go/tools v0.0.1-2019.2.3 // indirect + golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1 // indirect + golang.org/x/text v0.3.6 // indirect + gopkg.in/ini.v1 v1.51.0 // indirect + gopkg.in/yaml.v2 v2.4.0 // indirect + gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b // indirect ) diff --git a/go.sum b/go.sum index 19760374..69a5788d 100644 --- a/go.sum +++ b/go.sum @@ -1,23 +1,65 @@ cloud.google.com/go v0.26.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= cloud.google.com/go v0.34.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= cloud.google.com/go v0.38.0/go.mod h1:990N+gfupTy94rShfmMCWGDn0LpTmnzTp2qbd1dvSRU= -cloud.google.com/go v0.43.0/go.mod h1:BOSR3VbTLkk6FDC/TcffxP4NF/FFBGA5ku+jvKOP7pg= -contrib.go.opencensus.io/exporter/stackdriver v0.12.6 h1:Y2FTyj0HgOhfjEW6D6ytZNoz1YcPDXmkKr1I478CWKs= -contrib.go.opencensus.io/exporter/stackdriver v0.12.6/go.mod h1:8x999/OcIPy5ivx/wDiV7Gx4D+VUPODf0mWRGRc5kSk= +cloud.google.com/go v0.44.1/go.mod h1:iSa0KzasP4Uvy3f1mN/7PiObzGgflwredwwASm/v6AU= +cloud.google.com/go v0.44.2/go.mod h1:60680Gw3Yr4ikxnPRS/oxxkBccT6SA1yMk63TGekxKY= +cloud.google.com/go v0.45.1/go.mod h1:RpBamKRgapWJb87xiFSdk4g1CME7QZg3uwTez+TSTjc= +cloud.google.com/go v0.46.3/go.mod h1:a6bKKbmY7er1mI7TEI4lsAkts/mkhTSZK8w33B4RAg0= +cloud.google.com/go/bigquery v1.0.1/go.mod h1:i/xbL2UlR5RvWAURpBYZTtm/cXjCha9lbfbpx4poX+o= +cloud.google.com/go/datastore v1.0.0/go.mod h1:LXYbyblFSglQ5pkeyhO+Qmw7ukd3C+pD7TKLgZqpHYE= +cloud.google.com/go/firestore v1.1.0/go.mod h1:ulACoGHTpvq5r8rxGJ4ddJZBZqakUQqClKRT5SZwBmk= +cloud.google.com/go/pubsub v1.0.1/go.mod h1:R0Gpsv3s54REJCy4fxDixWD93lHJMoZTyQ2kNxGRt3I= +cloud.google.com/go/storage v1.0.0/go.mod h1:IhtSnM/ZTZV8YYJWCY8RULGVqBDmpoyjwiyrjsg+URw= +dmitri.shuralyov.com/gpu/mtl v0.0.0-20190408044501-666a987793e9/go.mod h1:H6x//7gZCb22OMCxBHrMx7a5I7Hp++hsVxbQ4BYO7hU= github.com/BurntSushi/toml v0.3.1 h1:WXkYYl6Yr3qBf1K79EBnL4mak0OimBfB0XUf9Vl28OQ= github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU= github.com/BurntSushi/xgb v0.0.0-20160522181843-27f122750802/go.mod h1:IVnqGOEym/WlBOVXweHU+Q+/VP0lqqI8lqeDx9IjBqo= -github.com/aws/aws-sdk-go v1.22.1/go.mod h1:KmX6BPdI08NWTb3/sm4ZGu5ShLoqVDhKgpiN924inxo= +github.com/OneOfOne/xxhash v1.2.2/go.mod h1:HSdplMjZKSmBqAxg5vPj2TmRDmfkzw+cTzAElWljhcU= +github.com/alecthomas/template v0.0.0-20160405071501-a0175ee3bccc/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc= +github.com/alecthomas/units v0.0.0-20151022065526-2efee857e7cf/go.mod h1:ybxpYRFXyAe+OPACYpWeL0wqObRcbAqCMya13uyzqw0= +github.com/armon/circbuf v0.0.0-20150827004946-bbbad097214e/go.mod h1:3U/XgcO3hCbHZ8TKRvWD2dDTCfh9M9ya+I9JpbB7O8o= +github.com/armon/go-metrics v0.0.0-20180917152333-f0300d1749da/go.mod h1:Q73ZrmVTwzkszR9V5SSuryQ31EELlFMUz1kKyl939pY= +github.com/armon/go-radix v0.0.0-20180808171621-7fddfc383310/go.mod h1:ufUuZ+zHj4x4TnLV4JWEpy2hxWSpsRywHrMgIH9cCH8= +github.com/benbjohnson/clock v1.1.0 h1:Q92kusRqC1XV2MjkWETPvjJVqKetz1OzxZB7mHJLju8= +github.com/benbjohnson/clock v1.1.0/go.mod h1:J11/hYXuz8f4ySSvYwY0FKfm+ezbsZBKZxNJlLklBHA= +github.com/beorn7/perks v0.0.0-20180321164747-3a771d992973/go.mod h1:Dwedo/Wpr24TaqPxmxbtue+5NUziq4I4S80YR8gNf3Q= +github.com/beorn7/perks v1.0.0/go.mod h1:KWe93zE9D1o94FZ5RNwFwVgaQK1VOXiVxmqh+CedLV8= +github.com/bgentry/speakeasy v0.1.0/go.mod h1:+zsyZBPWlz7T6j88CTgSN5bM796AkVf0kBD4zp0CCIs= +github.com/bketelsen/crypt v0.0.3-0.20200106085610-5cbc8cc4026c/go.mod h1:MKsuJmJgSg28kpZDP6UIiPt0e0Oz0kqKNGyRaWEPv84= github.com/blendle/zapdriver v1.3.1 h1:C3dydBOWYRiOk+B8X9IVZ5IOe+7cl+tGOexN4QqHfpE= github.com/blendle/zapdriver v1.3.1/go.mod h1:mdXfREi6u5MArG4j9fewC+FGnXaBR+T4Ox4J2u4eHCc= -github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU= +github.com/cespare/xxhash v1.1.0/go.mod h1:XrSqR1VqqWfGrhpAt58auRo0WTKS1nRRg3ghfAqPWnc= +github.com/chzyer/logex v1.1.10 h1:Swpa1K6QvQznwJRcfTfQJmTE72DqScAa40E+fbHEXEE= +github.com/chzyer/logex v1.1.10/go.mod h1:+Ywpsq7O8HXn0nuIou7OrIPyXbp3wmkHB+jjWRnGsAI= +github.com/chzyer/readline v0.0.0-20180603132655-2972be24d48e h1:fY5BOSpyZCqRo5OhCuC+XN+r/bBCmeuuJtjz+bCNIf8= +github.com/chzyer/readline v0.0.0-20180603132655-2972be24d48e/go.mod h1:nSuG5e5PlCu98SY8svDHJxuZscDgtXS6KTTbou5AhLI= +github.com/chzyer/test v0.0.0-20180213035817-a1ea475d72b1 h1:q763qf9huN11kDQavWsoZXJNW3xEE4JJyHa5Q25/sd8= +github.com/chzyer/test v0.0.0-20180213035817-a1ea475d72b1/go.mod h1:Q3SI9o4m/ZMnBNeIyt5eFwwo7qiLfzFZmjNmxjkiQlU= github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw= +github.com/coreos/bbolt v1.3.2/go.mod h1:iRUV2dpdMOn7Bo10OQBFzIJO9kkE559Wcmn+qkEiiKk= +github.com/coreos/etcd v3.3.13+incompatible/go.mod h1:uF7uidLiAD3TWHmW31ZFd/JWoc32PjwdhPthX9715RE= +github.com/coreos/go-semver v0.3.0/go.mod h1:nnelYz7RCh+5ahJtPPxZlU+153eP4D4r3EedlOD2RNk= +github.com/coreos/go-systemd v0.0.0-20190321100706-95778dfbb74e/go.mod h1:F5haX7vjVVG0kc13fIWeqUViNPyEJxv/OmvnBo0Yme4= +github.com/coreos/pkg v0.0.0-20180928190104-399ea9e2e55f/go.mod h1:E3G3o1h8I7cfcXa63jLwjI0eiQQMgzzUDFVpN/nH/eA= +github.com/cpuguy83/go-md2man/v2 v2.0.0/go.mod h1:maD7wRr/U5Z6m/iR4s+kqSMx2CaBsrgA7czyZG/E6dU= github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= +github.com/dgrijalva/jwt-go v3.2.0+incompatible/go.mod h1:E3ru+11k8xSBh+hMPgOLZmtrrCbhqsmaPHjLKYnJCaQ= +github.com/dgryski/go-sip13 v0.0.0-20181026042036-e10d5fee7954/go.mod h1:vAd38F8PWV+bWy6jNmig1y/TA+kYO4g3RSRF0IAv0no= +github.com/fatih/color v1.7.0/go.mod h1:Zm6kSWBoL9eyXnKyktHP6abPY2pDugNf5KwzbycvMj4= +github.com/fsnotify/fsnotify v1.4.7 h1:IXs+QLmnXW2CcXuY+8Mzv/fWEsPGWxqefPtCP5CnV9I= +github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo= +github.com/ghodss/yaml v1.0.0/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04= +github.com/go-gl/glfw v0.0.0-20190409004039-e6da0acd62b1/go.mod h1:vR7hzQXu2zJy9AVAgeJqvqgH9Q5CA+iKCZ2gyEVpxRU= +github.com/go-kit/kit v0.8.0/go.mod h1:xBxKIO96dXMWWy0MnWVtmwkA9/13aqxPnvrjFYMA2as= +github.com/go-logfmt/logfmt v0.3.0/go.mod h1:Qt1PoO58o5twSAckw1HlFXLmHsOX5/0LbT9GBnD5lWE= +github.com/go-logfmt/logfmt v0.4.0/go.mod h1:3RMwSq7FuexP4Kalkev3ejPJsZTpXXBr9+V4qmtdjCk= +github.com/go-stack/stack v1.8.0/go.mod h1:v0f6uXyyMGvRgIKkXu+yp6POWl0qKG85gN/melR3HDY= +github.com/gogo/protobuf v1.1.1/go.mod h1:r8qH/GZQm5c6nD/R0oafs1akxWv10x8SbQlK7atdtwQ= +github.com/gogo/protobuf v1.2.1/go.mod h1:hp+jE20tsWTFYpLwKvXlhS1hjn+gTNwPg2I6zVXpSg4= github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q= -github.com/golang/groupcache v0.0.0-20190702054246-869f871628b6 h1:ZgQEtGgCBiWRM39fZuwSd1LwSqqSW0hOdXCYYDX0R3I= -github.com/golang/groupcache v0.0.0-20190702054246-869f871628b6/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= +github.com/golang/groupcache v0.0.0-20190129154638-5b532d6fd5ef/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= github.com/golang/mock v1.1.1/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A= github.com/golang/mock v1.2.0/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A= github.com/golang/mock v1.3.1/go.mod h1:sBzyDLLjw3U8JLTeZvSv8jJB+tU5PVekmnlKIyFUx0Y= @@ -28,47 +70,152 @@ github.com/google/btree v0.0.0-20180813153112-4030bb1f1f0c/go.mod h1:lNA+9X1NB3Z github.com/google/btree v1.0.0/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ= github.com/google/go-cmp v0.2.0/go.mod h1:oXzfMopK8JAjlY9xF4vHSVASa0yLyX7SntLO5aqRK0M= github.com/google/go-cmp v0.3.0/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= -github.com/google/go-cmp v0.3.1/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= github.com/google/martian v2.1.0+incompatible/go.mod h1:9I4somxYTbIHy5NJKHRl3wXiIaQGbYVAs8BPL6v8lEs= github.com/google/pprof v0.0.0-20181206194817-3ea8567a2e57/go.mod h1:zfwlbNMJ+OItoe0UupaVj+oy1omPYYDuagoSzA8v9mc= github.com/google/pprof v0.0.0-20190515194954-54271f7e092f/go.mod h1:zfwlbNMJ+OItoe0UupaVj+oy1omPYYDuagoSzA8v9mc= github.com/google/renameio v0.1.0/go.mod h1:KWCgfxg9yswjAJkECMjeO8J8rahYeXnNhOm40UhjYkI= github.com/googleapis/gax-go/v2 v2.0.4/go.mod h1:0Wqv26UfaUD9n4G6kQubkQ+KchISgw+vpHVxEJEs9eg= github.com/googleapis/gax-go/v2 v2.0.5/go.mod h1:DWXyrwAJ9X0FpwwEdw+IPEYBICEFu5mhpdKc/us6bOk= +github.com/gopherjs/gopherjs v0.0.0-20181017120253-0766667cb4d1 h1:EGx4pi6eqNxGaHF6qqu48+N2wcFQ5qg5FXgOdqsJ5d8= +github.com/gopherjs/gopherjs v0.0.0-20181017120253-0766667cb4d1/go.mod h1:wJfORRmW1u3UXTncJ5qlYoELFm8eSnnEO6hX4iZ3EWY= +github.com/gorilla/websocket v1.4.2/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE= +github.com/grpc-ecosystem/go-grpc-middleware v1.0.0/go.mod h1:FiyG127CGDf3tlThmgyCl78X/SZQqEOJBCDaAfeWzPs= +github.com/grpc-ecosystem/go-grpc-prometheus v1.2.0/go.mod h1:8NvIoxWQoOIhqOTXgfV/d3M/q6VIi02HzZEHgUlZvzk= +github.com/grpc-ecosystem/grpc-gateway v1.9.0/go.mod h1:vNeuVxBJEsws4ogUvrchl83t/GYV9WGTSLVdBhOQFDY= +github.com/hashicorp/consul/api v1.1.0/go.mod h1:VmuI/Lkw1nC05EYQWNKwWGbkg+FbDBtguAZLlVdkD9Q= +github.com/hashicorp/consul/sdk v0.1.1/go.mod h1:VKf9jXwCTEY1QZP2MOLRhb5i/I/ssyNV1vwHyQBF0x8= +github.com/hashicorp/errwrap v1.0.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4= +github.com/hashicorp/go-cleanhttp v0.5.1/go.mod h1:JpRdi6/HCYpAwUzNwuwqhbovhLtngrth3wmdIIUrZ80= +github.com/hashicorp/go-immutable-radix v1.0.0/go.mod h1:0y9vanUI8NX6FsYoO3zeMjhV/C5i9g4Q3DwcSNZ4P60= +github.com/hashicorp/go-msgpack v0.5.3/go.mod h1:ahLV/dePpqEmjfWmKiqvPkv/twdG7iPBM1vqhUKIvfM= +github.com/hashicorp/go-multierror v1.0.0/go.mod h1:dHtQlpGsu+cZNNAkkCN/P3hoUDHhCYQXV3UM06sGGrk= +github.com/hashicorp/go-rootcerts v1.0.0/go.mod h1:K6zTfqpRlCUIjkwsN4Z+hiSfzSTQa6eBIzfwKfwNnHU= +github.com/hashicorp/go-sockaddr v1.0.0/go.mod h1:7Xibr9yA9JjQq1JpNB2Vw7kxv8xerXegt+ozgdvDeDU= +github.com/hashicorp/go-syslog v1.0.0/go.mod h1:qPfqrKkXGihmCqbJM2mZgkZGvKG1dFdvsLplgctolz4= +github.com/hashicorp/go-uuid v1.0.0/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/bN7x4byOro= +github.com/hashicorp/go-uuid v1.0.1/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/bN7x4byOro= +github.com/hashicorp/go.net v0.0.1/go.mod h1:hjKkEWcCURg++eb33jQU7oqQcI9XDCnUzHA0oac0k90= github.com/hashicorp/golang-lru v0.5.0/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8= github.com/hashicorp/golang-lru v0.5.1/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8= -github.com/hashicorp/golang-lru v0.5.3/go.mod h1:iADmTwqILo4mZ8BN3D2Q6+9jd8WM5uGBxy+E8yxSoD4= +github.com/hashicorp/hcl v1.0.0 h1:0Anlzjpi4vEasTeNFn2mLJgTSwt0+6sfsiTG8qcWGx4= +github.com/hashicorp/hcl v1.0.0/go.mod h1:E5yfLk+7swimpb2L/Alb/PJmXilQ/rhwaUYs4T20WEQ= +github.com/hashicorp/logutils v1.0.0/go.mod h1:QIAnNjmIWmVIIkWDTG1z5v++HQmx9WQRO+LraFDTW64= +github.com/hashicorp/mdns v1.0.0/go.mod h1:tL+uN++7HEJ6SQLQ2/p+z2pH24WQKWjBPkE0mNTz8vQ= +github.com/hashicorp/memberlist v0.1.3/go.mod h1:ajVTdAv/9Im8oMAAj5G31PhhMCZJV2pPBoIllUwCN7I= +github.com/hashicorp/serf v0.8.2/go.mod h1:6hOLApaqBFA1NXqRQAsxw9QxuDEvNxSQRwA/JwenrHc= +github.com/inconshreveable/mousetrap v1.0.0 h1:Z8tu5sraLXCXIcARxBp/8cbvlwVa7Z1NHg9XEKhtSvM= +github.com/inconshreveable/mousetrap v1.0.0/go.mod h1:PxqpIevigyE2G7u3NXJIT2ANytuPF1OarO4DADm73n8= github.com/jarcoal/httpmock v1.2.0 h1:gSvTxxFR/MEMfsGrvRbdfpRUMBStovlSRLw0Ep1bwwc= github.com/jarcoal/httpmock v1.2.0/go.mod h1:oCoTsnAz4+UoOUIf5lJOWV2QQIW5UoeUI6aM2YnWAZk= -github.com/jmespath/go-jmespath v0.0.0-20180206201540-c2b33e8439af/go.mod h1:Nht3zPeWKUH0NzdCt2Blrr5ys8VGpn0CEB0cQHVjt7k= +github.com/jonboulle/clockwork v0.1.0/go.mod h1:Ii8DK3G1RaLaWxj9trq07+26W01tbo22gdxWY5EU2bo= +github.com/json-iterator/go v1.1.6/go.mod h1:+SdeFBvtyEkXs7REEP0seUULqWtbJapLOCVDaaPEHmU= github.com/jstemmer/go-junit-report v0.0.0-20190106144839-af01ea7f8024/go.mod h1:6v2b51hI/fHJwM22ozAgKL4VKDeJcHhJFhtBdhmNjmU= +github.com/jtolds/gls v4.20.0+incompatible h1:xdiiI2gbIgH/gLH7ADydsJ1uDOEzR8yvV7C0MuV77Wo= +github.com/jtolds/gls v4.20.0+incompatible/go.mod h1:QJZ7F/aHp+rZTRtaJ1ow/lLfFfVYBRgL+9YlvaHOwJU= +github.com/juju/ansiterm v0.0.0-20180109212912-720a0952cc2a h1:FaWFmfWdAUKbSCtOU2QjDaorUexogfaMgbipgYATUMU= +github.com/juju/ansiterm v0.0.0-20180109212912-720a0952cc2a/go.mod h1:UJSiEoRfvx3hP73CvoARgeLjaIOjybY9vj8PUPPFGeU= +github.com/julienschmidt/httprouter v1.2.0/go.mod h1:SYymIcj16QtmaHHD7aYtjjsJG7VTCxuUUipMqKk8s4w= +github.com/kisielk/errcheck v1.1.0/go.mod h1:EZBBE59ingxPouuu3KfxchcWSUPOHkagtvWXihfKN4Q= github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck= +github.com/konsorten/go-windows-terminal-sequences v1.0.1/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= +github.com/kr/logfmt v0.0.0-20140226030751-b84e30acd515/go.mod h1:+0opPa2QZZtGFBFZlji/RkVcI2GknAs/DXo4wKdlNEc= github.com/kr/pretty v0.1.0 h1:L/CwN0zerZDmRFUapSPitk6f+Q3+0za1rQkzVuMiMFI= github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo= github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= github.com/kr/text v0.1.0 h1:45sCR5RtlFHMR4UwH9sdQ5TC8v0qDQCHnXt+kaKSTVE= github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI= +github.com/lithammer/dedent v1.1.0 h1:VNzHMVCBNG1j0fh3OrsFRkVUwStdDArbgBWoPAffktY= +github.com/lithammer/dedent v1.1.0/go.mod h1:jrXYCQtgg0nJiN+StA2KgR7w6CiQNv9Fd/Z9BP0jIOc= github.com/logrusorgru/aurora v2.0.3+incompatible h1:tOpm7WcpBTn4fjmVfgpQq0EfczGlG91VSDkswnjF5A8= github.com/logrusorgru/aurora v2.0.3+incompatible/go.mod h1:7rIyQOR62GCctdiQpZ/zOJlFyk6y+94wXzv6RNZgaR4= +github.com/lunixbochs/vtclean v0.0.0-20180621232353-2d01aacdc34a h1:weJVJJRzAJBFRlAiJQROKQs8oC9vOxvm4rZmBBk0ONw= +github.com/lunixbochs/vtclean v0.0.0-20180621232353-2d01aacdc34a/go.mod h1:pHhQNgMf3btfWnGBVipUOjRYhoOsdGqdm/+2c2E2WMI= +github.com/magiconair/properties v1.8.1 h1:ZC2Vc7/ZFkGmsVC9KvOjumD+G5lXy2RtTKyzRKO2BQ4= +github.com/magiconair/properties v1.8.1/go.mod h1:PppfXfuXeibc/6YijjN8zIbojt8czPbwD3XqdrwzmxQ= +github.com/manifoldco/promptui v0.8.0 h1:R95mMF+McvXZQ7j1g8ucVZE1gLP3Sv6j9vlF9kyRqQo= +github.com/manifoldco/promptui v0.8.0/go.mod h1:n4zTdgP0vr0S3w7/O/g98U+e0gwLScEXGwov2nIKuGQ= +github.com/mattn/go-colorable v0.0.9 h1:UVL0vNpWh04HeJXV0KLcaT7r06gOH2l4OW6ddYRUIY4= +github.com/mattn/go-colorable v0.0.9/go.mod h1:9vuHe8Xs5qXnSaW/c/ABM9alt+Vo+STaOChaDxuIBZU= +github.com/mattn/go-isatty v0.0.3/go.mod h1:M+lRXTBqGeGNdLjl/ufCoiOlB5xdOkqRJdNxMWT7Zi4= +github.com/mattn/go-isatty v0.0.4 h1:bnP0vzxcAdeI1zdubAl5PjU6zsERjGZb7raWodagDYs= +github.com/mattn/go-isatty v0.0.4/go.mod h1:M+lRXTBqGeGNdLjl/ufCoiOlB5xdOkqRJdNxMWT7Zi4= +github.com/matttproud/golang_protobuf_extensions v1.0.1/go.mod h1:D8He9yQNgCq6Z5Ld7szi9bcBfOoFv/3dc6xSMkL2PC0= github.com/maxatome/go-testdeep v1.11.0 h1:Tgh5efyCYyJFGUYiT0qxBSIDeXw0F5zSoatlou685kk= github.com/maxatome/go-testdeep v1.11.0/go.mod h1:011SgQ6efzZYAen6fDn4BqQ+lUR72ysdyKe7Dyogw70= +github.com/miekg/dns v1.0.14/go.mod h1:W1PPwlIAgtquWBMBEV9nkV9Cazfe8ScdGz/Lj7v3Nrg= +github.com/mitchellh/cli v1.0.0/go.mod h1:hNIlj7HEI86fIcpObd7a0FcrxTWetlwJDGcceTlRvqc= +github.com/mitchellh/go-homedir v1.0.0/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrkLzIz1N1q0pr0= +github.com/mitchellh/go-homedir v1.1.0/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrkLzIz1N1q0pr0= +github.com/mitchellh/go-testing-interface v1.0.0/go.mod h1:kRemZodwjscx+RGhAo8eIhFbs2+BFgRtFPeD/KE+zxI= github.com/mitchellh/go-testing-interface v1.14.1 h1:jrgshOhYAUVNMAJiKbEu7EqAwgJJ2JqpQmpLJOu07cU= github.com/mitchellh/go-testing-interface v1.14.1/go.mod h1:gfgS7OtZj6MA4U1UrDRp04twqAjfvlZyCfX3sDjEym8= +github.com/mitchellh/gox v0.4.0/go.mod h1:Sd9lOJ0+aimLBi73mGofS1ycjY8lL3uZM3JPS42BGNg= +github.com/mitchellh/iochan v1.0.0/go.mod h1:JwYml1nuB7xOzsp52dPpHFffvOCDupsG0QubkSMEySY= +github.com/mitchellh/mapstructure v0.0.0-20160808181253-ca63d7c062ee/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y= +github.com/mitchellh/mapstructure v1.1.2 h1:fmNYVwqnSfB9mZU6OS2O6GsXM+wcskZDuKQzvN1EDeE= +github.com/mitchellh/mapstructure v1.1.2/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y= +github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= +github.com/modern-go/reflect2 v1.0.1/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0= +github.com/mwitkow/go-conntrack v0.0.0-20161129095857-cc309e4a2223/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U= +github.com/oklog/ulid v1.3.1/go.mod h1:CirwcVhetQ6Lv90oh/F+FBtV6XMibvdAFo93nm5qn4U= +github.com/pascaldekloe/goe v0.0.0-20180627143212-57f6aae5913c/go.mod h1:lzWF7FIEvWOWxwDKqyGYQf6ZUaNfKdP144TG7ZOy1lc= +github.com/pelletier/go-toml v1.2.0 h1:T5zMGML61Wp+FlcbWjRDT7yAxhJNAiPPLOFECq181zc= +github.com/pelletier/go-toml v1.2.0/go.mod h1:5z9KED0ma1S8pY6P1sdut58dfprrGBbd/94hg7ilaic= +github.com/pkg/errors v0.8.0/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4= github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= +github.com/posener/complete v1.1.1/go.mod h1:em0nMJCgc9GFtwrmVmEMR/ZL6WyhyjMBndrE9hABlRI= +github.com/prometheus/client_golang v0.9.1/go.mod h1:7SWBe2y4D6OKWSNQJUaRYU/AaXPKyh/dDVn+NZz0KFw= +github.com/prometheus/client_golang v0.9.3/go.mod h1:/TN21ttK/J9q6uSwhBd54HahCDft0ttaMvbicHlPoso= +github.com/prometheus/client_model v0.0.0-20180712105110-5c3871d89910/go.mod h1:MbSGuTsp3dbXC40dX6PRTWyKYBIrTGTE9sqQNg2J8bo= +github.com/prometheus/client_model v0.0.0-20190129233127-fd36f4220a90/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= +github.com/prometheus/common v0.0.0-20181113130724-41aa239b4cce/go.mod h1:daVV7qP5qjZbuso7PdcryaAu0sAZbrN9i7WWcTMWvro= +github.com/prometheus/common v0.4.0/go.mod h1:TNfzLD0ON7rHzMJeJkieUDPYmFC7Snx/y86RQel1bk4= +github.com/prometheus/procfs v0.0.0-20181005140218-185b4288413d/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= +github.com/prometheus/procfs v0.0.0-20190507164030-5867b95ac084/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsTZCD3I8kEA= +github.com/prometheus/tsdb v0.7.1/go.mod h1:qhTCs0VvXwvX/y3TZrWD7rabWM+ijKTux40TwIPHuXU= +github.com/rogpeppe/fastuuid v0.0.0-20150106093220-6724a57986af/go.mod h1:XWv6SoW27p1b0cqNHllgS5HIMJraePCO15w5zCzIWYg= github.com/rogpeppe/go-internal v1.3.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4= -github.com/streamingfast/logging v0.0.0-20210811175431-f3b44b61606a h1:Hy7ST3+wGmk4nyBanXKzhRXE63E77UEF93oG51dfq6c= -github.com/streamingfast/logging v0.0.0-20210811175431-f3b44b61606a/go.mod h1:4GdqELhZOXj4xwc4IaBmzofzdErGynnaSzuzxy0ZIBo= +github.com/russross/blackfriday/v2 v2.0.1/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= +github.com/ryanuber/columnize v0.0.0-20160712163229-9b3edd62028f/go.mod h1:sm1tb6uqfes/u+d4ooFouqFdy9/2g9QGwK3SQygK0Ts= +github.com/sean-/seed v0.0.0-20170313163322-e2103e2c3529/go.mod h1:DxrIzT+xaE7yg65j358z/aeFdxmN0P9QXhEzd20vsDc= +github.com/shurcooL/sanitized_anchor_name v1.0.0/go.mod h1:1NzhyTcUVG4SuEtjjoZeVRXNmyL/1OwPU0+IJeTBvfc= +github.com/sirupsen/logrus v1.2.0/go.mod h1:LxeOpSwHxABJmUn/MG1IvRgCAasNZTLOkJPxbbu5VWo= +github.com/smartystreets/assertions v0.0.0-20180927180507-b2de0cb4f26d h1:zE9ykElWQ6/NYmHa3jpm/yHnI4xSofP+UP6SpjHcSeM= +github.com/smartystreets/assertions v0.0.0-20180927180507-b2de0cb4f26d/go.mod h1:OnSkiWE9lh6wB0YB77sQom3nweQdgAjqCqsofrRNTgc= +github.com/smartystreets/goconvey v1.6.4 h1:fv0U8FUIMPNf1L9lnHLvLhgicrIVChEkdzIKYqbNC9s= +github.com/smartystreets/goconvey v1.6.4/go.mod h1:syvi0/a8iFYH4r/RixwvyeAJjdLS9QV7WQ/tjFTllLA= +github.com/soheilhy/cmux v0.1.4/go.mod h1:IM3LyeVVIOuxMH7sFAkER9+bJ4dT7Ms6E4xg4kGIyLM= +github.com/spaolacci/murmur3 v0.0.0-20180118202830-f09979ecbc72/go.mod h1:JwIasOWyU6f++ZhiEuf87xNszmSA2myDM2Kzu9HwQUA= +github.com/spf13/afero v1.1.2 h1:m8/z1t7/fwjysjQRYbP0RD+bUIF/8tJwPdEZsI83ACI= +github.com/spf13/afero v1.1.2/go.mod h1:j4pytiNVoe2o6bmDsKpLACNPDBIoEAkihy7loJ1B0CQ= +github.com/spf13/cast v1.3.0 h1:oget//CVOEoFewqQxwr0Ej5yjygnqGkvggSE/gB35Q8= +github.com/spf13/cast v1.3.0/go.mod h1:Qx5cxh0v+4UWYiBimWS+eyWzqEqokIECu5etghLkUJE= +github.com/spf13/cobra v1.1.3 h1:xghbfqPkxzxP3C/f3n5DdpAbdKLj4ZE4BWQI362l53M= +github.com/spf13/cobra v1.1.3/go.mod h1:pGADOWyqRD/YMrPZigI/zbliZ2wVD/23d+is3pSWzOo= +github.com/spf13/jwalterweatherman v1.0.0 h1:XHEdyB+EcvlqZamSM4ZOMGlc93t6AcsBEu9Gc1vn7yk= +github.com/spf13/jwalterweatherman v1.0.0/go.mod h1:cQK4TGJAtQXfYWX+Ddv3mKDzgVb68N+wFjFa4jdeBTo= +github.com/spf13/pflag v1.0.3/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4= +github.com/spf13/pflag v1.0.5 h1:iy+VFUOCP1a+8yFto/drg2CJ5u0yRoB7fZw3DKv/JXA= +github.com/spf13/pflag v1.0.5/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= +github.com/spf13/viper v1.7.0 h1:xVKxvI7ouOI5I+U9s2eeiUfMaWBVoXA3AWskkrqK0VM= +github.com/spf13/viper v1.7.0/go.mod h1:8WkrPz2fc9jxqZNCJI/76HCieCp4Q8HaLFoCha5qpdg= +github.com/streamingfast/cli v0.0.4-0.20220630165922-bc58c6666fc8 h1:1W2VZY4jRTh7GJ6+PnydanRcr3Hj45SKDnb+kBQQwlc= +github.com/streamingfast/cli v0.0.4-0.20220630165922-bc58c6666fc8/go.mod h1:Lmirl0ABgXzidX33syiUG6lX64mJMK5pDNTBFuz8xZI= +github.com/streamingfast/logging v0.0.0-20221209193439-bff11742bf4c h1:dV1ye/S2PiW9uIWvLtMrxWoTLcZS+yhjZDSKEV102Ho= +github.com/streamingfast/logging v0.0.0-20221209193439-bff11742bf4c/go.mod h1:VlduQ80JcGJSargkRU4Sg9Xo63wZD/l8A5NC/Uo1/uU= github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= +github.com/stretchr/objx v0.1.1/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= +github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI= github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4= -github.com/stretchr/testify v1.5.1 h1:nOGnQDM7FYENwehXlg/kFVnos3rEvtKTjRvOWSzb6H4= -github.com/stretchr/testify v1.5.1/go.mod h1:5W2xD1RspED5o8YsWQXVCued0rvSQ+mT+I5cxcmMvtA= -github.com/teris-io/shortid v0.0.0-20171029131806-771a37caa5cf h1:Z2X3Os7oRzpdJ75iPqWZc0HeJWFYNCvKsfpQwFpRNTA= -github.com/teris-io/shortid v0.0.0-20171029131806-771a37caa5cf/go.mod h1:M8agBzgqHIhgj7wEn9/0hJUZcrvt9VY+Ln+S1I5Mha0= +github.com/stretchr/testify v1.7.0 h1:nwc3DEeHmmLAfoZucVR881uASk0Mfjw8xYJ99tb5CcY= +github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= +github.com/subosito/gotenv v1.2.0 h1:Slr1R9HxAlEKefgq5jn9U+DnETlIUa6HfgEzj0g5d7s= +github.com/subosito/gotenv v1.2.0/go.mod h1:N0PQaV/YGNqwC0u51sEeR/aUtSLEXKX9iv69rRypqCw= github.com/test-go/testify v1.1.4 h1:Tf9lntrKUMHiXQ07qBScBTSA0dhYQlu83hswqelv1iE= github.com/test-go/testify v1.1.4/go.mod h1:rH7cfJo/47vWGdi4GPj16x3/t1xGOj2YxzmNQzk2ghU= github.com/tidwall/gjson v1.9.3 h1:hqzS9wAHMO+KVBBkLxYdkEeeFHuqr95GfClRLKlgK0E= @@ -77,40 +224,61 @@ github.com/tidwall/match v1.1.1 h1:+Ho715JplO36QYgwN9PGYNhgZvoUSc9X2c80KVTi+GA= github.com/tidwall/match v1.1.1/go.mod h1:eRSPERbgtNPcGhD8UCthc6PmLEQXEWd3PRB5JTxsfmM= github.com/tidwall/pretty v1.2.0 h1:RWIZEg2iJ8/g6fDDYzMpobmaoGh5OLl4AXtGUGPcqCs= github.com/tidwall/pretty v1.2.0/go.mod h1:ITEVvHYasfjBbM0u2Pg8T2nJnzm8xPwvNhhsoaGGjNU= +github.com/tmc/grpc-websocket-proxy v0.0.0-20190109142713-0ad062ec5ee5/go.mod h1:ncp9v5uamzpCO7NfCPTXjqaC+bZgJeR0sMTm6dMHP7U= +github.com/xiang90/probing v0.0.0-20190116061207-43a291ad63a2/go.mod h1:UETIi67q53MR2AWcXfiuqkDkRtnGDLqkBTpCHuJHxtU= +github.com/yuin/goldmark v1.3.5/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1Zlc8k= +go.etcd.io/bbolt v1.3.2/go.mod h1:IbVyRI1SCnLcuJnV2u8VeU0CEYM7e686BmAb1XKL+uU= go.opencensus.io v0.21.0/go.mod h1:mSImk1erAIZhrmZN+AvHh14ztQfjbGwt4TtuofqLduU= go.opencensus.io v0.22.0/go.mod h1:+kGneAE2xo2IficOXnaByMWTGM9T73dGwxeWcUqIpI8= -go.opencensus.io v0.22.1 h1:8dP3SGL7MPB94crU3bEPplMPe83FI4EouesJUeFHv50= -go.opencensus.io v0.22.1/go.mod h1:Ap50jQcDJrx6rB6VgeeFPtuPIf3wMRvRfrfYDO6+BmA= go.uber.org/atomic v1.4.0/go.mod h1:gD2HeocX3+yG+ygLZcrzQJaqmWj9AIm7n08wl/qW/PE= -go.uber.org/atomic v1.5.0 h1:OI5t8sDa1Or+q8AeE+yKeB/SDYioSHAgcVljj9JIETY= -go.uber.org/atomic v1.5.0/go.mod h1:sABNBOSYdrvTF6hTgEIbc7YasKWGhgEQZyfxyTvoXHQ= +go.uber.org/atomic v1.6.0/go.mod h1:sABNBOSYdrvTF6hTgEIbc7YasKWGhgEQZyfxyTvoXHQ= +go.uber.org/atomic v1.7.0 h1:ADUqmZGgLDDfbSL9ZmPxKTybcoEYHgpYfELNoN+7hsw= +go.uber.org/atomic v1.7.0/go.mod h1:fEN4uk6kAWBTFdckzkM89CLk9XfWZrxpCo0nPH17wJc= +go.uber.org/goleak v1.1.11 h1:wy28qYRKZgnJTxGxvye5/wgWr1EKjmUDGYox5mGlRlI= +go.uber.org/goleak v1.1.11/go.mod h1:cwTWslyiVhfpKIDGSZEM2HlOvcqm+tG4zioyIeLoqMQ= go.uber.org/multierr v1.1.0/go.mod h1:wR5kodmAFQ0UK8QlbwjlSNy0Z68gJhDJUG5sjR94q/0= -go.uber.org/multierr v1.3.0 h1:sFPn2GLc3poCkfrpIXGhBD2X0CMIo4Q/zSULXrj/+uc= -go.uber.org/multierr v1.3.0/go.mod h1:VgVr7evmIr6uPjLBxg28wmKNXyqE9akIJ5XnfpiKl+4= -go.uber.org/tools v0.0.0-20190618225709-2cfd321de3ee h1:0mgffUl7nfd+FpvXMVz4IDEaUSmT1ysygQC7qYo7sG4= +go.uber.org/multierr v1.5.0/go.mod h1:FeouvMocqHpRaaGuG9EjoKcStLC43Zu/fmqdUMPcKYU= +go.uber.org/multierr v1.6.0 h1:y6IPFStTAIT5Ytl7/XYmHvzXQ7S3g/IeZW9hyZ5thw4= +go.uber.org/multierr v1.6.0/go.mod h1:cdWPpRnG4AhwMwsgIHip0KRBQjJy5kYEpYjJxpXp9iU= go.uber.org/tools v0.0.0-20190618225709-2cfd321de3ee/go.mod h1:vJERXedbb3MVM5f9Ejo0C68/HhF8uaILCdgjnY+goOA= go.uber.org/zap v1.10.0/go.mod h1:vwi/ZaCAaUcBkycHslxD9B2zi4UTXhF60s6SWpuDF0Q= -go.uber.org/zap v1.14.0 h1:/pduUoebOeeJzTDFuoMgC6nRkiasr1sBCIEorly7m4o= -go.uber.org/zap v1.14.0/go.mod h1:zwrFLgMcdUuIBviXEYEH1YKNaOBnKXsx2IPda5bBwHM= +go.uber.org/zap v1.16.0/go.mod h1:MA8QOfq0BHJwdXa996Y4dYkAqRKB8/1K1QMMZVaNZjQ= +go.uber.org/zap v1.21.0 h1:WefMeulhovoZ2sYXz7st6K0sLj7bBhpiFaud4r4zST8= +go.uber.org/zap v1.21.0/go.mod h1:wjWOCqI0f2ZZrJF/UufIOkiC8ii6tm1iqIsLo76RfJw= +golang.org/x/crypto v0.0.0-20180904163835-0709b304e793/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= +golang.org/x/crypto v0.0.0-20181029021203-45a5f77698d3/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= golang.org/x/crypto v0.0.0-20190510104115-cbcb75029529/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20190605123033-f99c8df09eb5/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= -golang.org/x/crypto v0.0.0-20200406173513-056763e48d71 h1:DOmugCavvUtnUD114C1Wh+UgTgQZ4pMLzXxi1pSt+/Y= -golang.org/x/crypto v0.0.0-20200406173513-056763e48d71/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= +golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= +golang.org/x/crypto v0.0.0-20210322153248-0c34fe9e7dc2/go.mod h1:T9bdIzuCu7OtxOm1hfPfRQxPLYneinmdGuTeoZ9dtd4= +golang.org/x/crypto v0.0.0-20220214200702-86341886e292 h1:f+lwQ+GtmgoY+A2YaQxlSOnDjXcQ7ZRLWOHbC6HtRqE= +golang.org/x/crypto v0.0.0-20220214200702-86341886e292/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= +golang.org/x/exp v0.0.0-20190306152737-a1d7652674e8/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20190510132918-efd6b22b2522/go.mod h1:ZjyILWgesfNpC6sMxTJOJm9Kp84zZh5NQWvqDGG3Qr8= +golang.org/x/exp v0.0.0-20190829153037-c13cbed26979/go.mod h1:86+5VVa7VpoJ4kLfm080zCjGlMRFzhUhsZKEZO7MGek= +golang.org/x/exp v0.0.0-20191030013958-a1ab85dbe136/go.mod h1:JXzH8nQsPlswgeRAPE3MuO9GYsAcnJvJ4vnMwN/5qkY= golang.org/x/image v0.0.0-20190227222117-0694c2d4d067/go.mod h1:kZ7UVZpmo3dzQBMxlp+ypCbDeSB+sBbTgSJuh5dn5js= +golang.org/x/image v0.0.0-20190802002840-cff245a6509b/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0= golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= golang.org/x/lint v0.0.0-20190227174305-5b3e6a55c961/go.mod h1:wehouNa3lNwaWXcvxsM5YxQ5yQlVC4a0KAMCusXpPoU= golang.org/x/lint v0.0.0-20190301231843-5614ed5bae6f/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= golang.org/x/lint v0.0.0-20190313153728-d0100b6bd8b3/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= golang.org/x/lint v0.0.0-20190409202823-959b441ac422/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= -golang.org/x/lint v0.0.0-20190930215403-16217165b5de h1:5hukYrvBGR8/eNkX5mdUezrA6JiaEZDtJb9Ei+1LlBs= +golang.org/x/lint v0.0.0-20190909230951-414d861bb4ac/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= golang.org/x/lint v0.0.0-20190930215403-16217165b5de/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= golang.org/x/mobile v0.0.0-20190312151609-d3739f865fa6/go.mod h1:z+o9i4GpDbdi3rU15maQ/Ox0txvL9dWGYEHz965HBQE= +golang.org/x/mobile v0.0.0-20190719004257-d2bd2a29d028/go.mod h1:E/iHnbuqvinMTCcRqshq8CkpyQDoeVncDDYHnLhea+o= golang.org/x/mod v0.0.0-20190513183733-4bf6d317e70e/go.mod h1:mXi4GBBbnImb6dmsKGUJ2LatrhH/nqhxcFungHvyanc= +golang.org/x/mod v0.1.0/go.mod h1:0QHyrYULN0/3qlju5TqG8bIK38QM8yzMo5ekMj3DlcY= +golang.org/x/mod v0.4.2/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20181023162649-9b4f9f5ad519/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20181114220301-adae6a3d119a/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20181201002055-351d144fa1fc/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20181220203305-927f97764cc3/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20190108225652-1e06a53dbb7e/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20190213061140-3a22650c66bd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20190311183353-d8887717615a/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= @@ -119,7 +287,9 @@ golang.org/x/net v0.0.0-20190501004415-9ce7a6920f09/go.mod h1:t9HGtf8HONx5eT2rtn golang.org/x/net v0.0.0-20190503192946-f4e77d36d62c/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= golang.org/x/net v0.0.0-20190603091049-60506f45cf65/go.mod h1:HSz+uSET+XFnRR8LxR5pz3Of3rY3CfYBVs4xY44aLks= golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20190724013045-ca1201d0de80/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= +golang.org/x/net v0.0.0-20210405180319-a5a99cb37ef4/go.mod h1:p54w0d4576C0XHj96bSt6lcn1PtDYWL6XObtHCRCNQM= +golang.org/x/net v0.0.0-20211112202133-69e39bad7dc2/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= golang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= @@ -128,7 +298,14 @@ golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJ golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190227155943-e225da77a7e6/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20210220032951-036812b2e83c/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sys v0.0.0-20180823144017-11551d06cbcc/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20180905080454-ebe1bf3edb33/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20181026203630-95b1ffbd15a5/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20181107165924-66b7b1311ac8/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20181116152217-5ac8a444bdc5/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20181122145206-62eef0e2fa9b/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190312061237-fead79001313/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= @@ -136,32 +313,53 @@ golang.org/x/sys v0.0.0-20190502145724-3ef323f4f1fd/go.mod h1:h1NjWce9XRLGQEsW7w golang.org/x/sys v0.0.0-20190507160741-ecd444e8653b/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190606165138-5da285871e9c/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190624142023-c5567b49c5d0/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190804053845-51ab0e2deafa/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210330210617-4fbd30eecc44/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210423082822-04245dca01da/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210510120138-977fb7262007/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220412211240-33da011f77ad/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220627191245-f75cf1eec38b h1:2n253B2r0pYSmEV+UNCQoPfU/FiaizQEK5Gu4Bq4JE8= golang.org/x/sys v0.0.0-20220627191245-f75cf1eec38b/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1 h1:v+OssWQX+hTHEmOBgwxdZxK4zHq3yOs8F9J7mk0PY8E= +golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.1-0.20180807135948-17ff2d5776d2/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk= +golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= +golang.org/x/text v0.3.6 h1:aRYxNxv6iGQlyVaZmk6ZgYEDa+Jg18DxebPSrd6bg1M= +golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/time v0.0.0-20181108054448-85acf8d2951c/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= +golang.org/x/tools v0.0.0-20180221164845-07fd8470d635/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20190114222345-bf090417da8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20190226205152-f727befe758c/go.mod h1:9Yl7xja0Znq3iFh3HoIrodX9oNMXvdceNzlUR8zjMvY= golang.org/x/tools v0.0.0-20190311212946-11955173bddd/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= golang.org/x/tools v0.0.0-20190312151545-0bb0c0a6e846/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= golang.org/x/tools v0.0.0-20190312170243-e65039ee4138/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= +golang.org/x/tools v0.0.0-20190328211700-ab21143f2384/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= golang.org/x/tools v0.0.0-20190425150028-36563e24a262/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= golang.org/x/tools v0.0.0-20190506145303-2d16b83fe98c/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= -golang.org/x/tools v0.0.0-20190524140312-2c0ae7006135/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= golang.org/x/tools v0.0.0-20190606124116-d0a3d012864b/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= golang.org/x/tools v0.0.0-20190621195816-6e04913cbbac/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= golang.org/x/tools v0.0.0-20190628153133-6cdbf07be9d0/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= +golang.org/x/tools v0.0.0-20190816200558-6889da9d5479/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20190911174233-4f2ddba30aff/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20191012152004-8de300cfc20a/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20191029041327-9cc4af7d6b2c/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20191029190741-b9c20aec41a5 h1:hKsoRgsbwY1NafxrwTs+k64bikrLBkAgPir1TNCj3Zs= golang.org/x/tools v0.0.0-20191029190741-b9c20aec41a5/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20191112195655-aa38f8e97acc/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.1.5/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= +golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= +golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= google.golang.org/api v0.4.0/go.mod h1:8k5glujaEP+g9n7WNsDg8QP6cUVNI86fCNMcbazEtwE= google.golang.org/api v0.7.0/go.mod h1:WtwebWUNSVBH/HAw79HIFXZNqEvBhG+Ra+ax0hx3E3M= +google.golang.org/api v0.8.0/go.mod h1:o4eAsZoiT+ibD93RtjEohWalFOjRDx6CVaqeizhEnKg= +google.golang.org/api v0.9.0/go.mod h1:o4eAsZoiT+ibD93RtjEohWalFOjRDx6CVaqeizhEnKg= +google.golang.org/api v0.13.0/go.mod h1:iLdEw5Ide6rF15KTC1Kkl0iskquN2gFfn9o9XIsbkAI= google.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM= google.golang.org/appengine v1.4.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= google.golang.org/appengine v1.5.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= @@ -171,22 +369,33 @@ google.golang.org/genproto v0.0.0-20190307195333-5fe7a883aa19/go.mod h1:VzzqZJRn google.golang.org/genproto v0.0.0-20190418145605-e7d98fc518a7/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= google.golang.org/genproto v0.0.0-20190425155659-357c62f0e4bb/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= google.golang.org/genproto v0.0.0-20190502173448-54afdca5d873/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= -google.golang.org/genproto v0.0.0-20190716160619-c506a9f90610/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc= google.golang.org/genproto v0.0.0-20190801165951-fa694d86fc64/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc= +google.golang.org/genproto v0.0.0-20190819201941-24fa4b261c55/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc= +google.golang.org/genproto v0.0.0-20190911173649-1774047e7e51/go.mod h1:IbNlFCBrqXvoKpeg0TB2l7cyZUmoaFKYIwrEpbDKLA8= +google.golang.org/genproto v0.0.0-20191108220845-16a3f7862a1a/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= google.golang.org/grpc v1.20.1/go.mod h1:10oTOabMzJvdu6/UiuZezV6QK5dSlG84ov/aaiqXj38= google.golang.org/grpc v1.21.1/go.mod h1:oYelfM1adQP15Ek0mdvEgi9Df8B9CZIaU1084ijfRaM= -google.golang.org/grpc v1.22.1/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg= +gopkg.in/alecthomas/kingpin.v2 v2.2.6/go.mod h1:FMv+mEhP44yOT+4EoQTLFTRgOQ1FBLkstjWtayDeSgw= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127 h1:qIbj1fsPNlZgppZ+VLlY7N33q108Sa+fhmuc+sWQYwY= gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/errgo.v2 v2.1.0/go.mod h1:hNsd1EY+bozCKY1Ytp96fpM3vjJbqLJn88ws8XvfDNI= -gopkg.in/yaml.v2 v2.2.2 h1:ZCJp+EgiOT7lHqUV2J862kp8Qj64Jo6az82+3Td9dZw= +gopkg.in/ini.v1 v1.51.0 h1:AQvPpx3LzTDM0AjnIRlVFwFFGC+npRopjZxLJj6gdno= +gopkg.in/ini.v1 v1.51.0/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k= +gopkg.in/resty.v1 v1.12.0/go.mod h1:mDo4pnntr5jdWRML875a/NmxYqAlA73dVijT2AXvQQo= +gopkg.in/yaml.v2 v2.0.0-20170812160011-eb3733d160e7/go.mod h1:JAlM8MvJe8wmxCU4Bli9HhUf9+ttbYbLASfIpnQbh74= +gopkg.in/yaml.v2 v2.2.1/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= +gopkg.in/yaml.v2 v2.2.4/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= +gopkg.in/yaml.v2 v2.2.8/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= +gopkg.in/yaml.v2 v2.4.0 h1:D8xgwECY7CYvx+Y2n4sBz93Jn9JRvxdiyyo8CTfuKaY= +gopkg.in/yaml.v2 v2.4.0/go.mod h1:RDklbk79AGWmwhnvt/jBztapEOGDOx6ZbXqjP6csGnQ= +gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= +gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b h1:h8qDotaEPuJATrMmW04NCwg7v22aHH28wwpauUhK9Oo= +gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= honnef.co/go/tools v0.0.0-20190102054323-c2f93a96b099/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= honnef.co/go/tools v0.0.0-20190106161140-3f1c8253044a/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= honnef.co/go/tools v0.0.0-20190418001031-e561f6794a2a/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= -honnef.co/go/tools v0.0.0-20190523083050-ea95bdfd59fc/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= -honnef.co/go/tools v0.0.1-2019.2.3 h1:3JgtbtFHMiCmsznwGVTUWbgGov+pVqnlf1dEJTNAXeM= honnef.co/go/tools v0.0.1-2019.2.3/go.mod h1:a3bituU0lyd329TUQxRnasdCoJDkEUEAqEt0JzvZhAg= rsc.io/binaryregexp v0.2.0/go.mod h1:qTv7/COck+e2FymRvadv62gMdZztPaShugOCi3I+8D8= diff --git a/init_test.go b/init_test.go index 48b2459d..13d9e6e4 100644 --- a/init_test.go +++ b/init_test.go @@ -5,5 +5,5 @@ import ( ) func init() { - logging.TestingOverride() + logging.InstantiateLoggers() } diff --git a/logging.go b/logging.go index da0f1a14..a3284cc6 100644 --- a/logging.go +++ b/logging.go @@ -7,17 +7,7 @@ import ( "go.uber.org/zap" ) -var traceEnabled = logging.IsTraceEnabled("eos-go", "github.com/eoscanada/eos-go") -var zlog = zap.NewNop() - -func init() { - logging.Register("github.com/eoscanada/eos-go", &zlog) -} - -func EnableDebugLogging(l *zap.Logger) { - traceEnabled = true - zlog = l -} +var zlog, tracer = logging.PackageLogger("eos-go", "github.com/eoscanada/eos-go") type logStringerFunc func() string @@ -28,17 +18,3 @@ func typeField(field string, v interface{}) zap.Field { return fmt.Sprintf("%T", v) })) } - -func newLogger(production bool) (l *zap.Logger) { - if production { - l, _ = zap.NewProduction() - } else { - l, _ = zap.NewDevelopment() - } - return -} - -// NewLogger a wrap to newLogger -func NewLogger(production bool) *zap.Logger { - return newLogger(production) -} diff --git a/p2p/logging.go b/p2p/logging.go index 3956147a..58beb37d 100644 --- a/p2p/logging.go +++ b/p2p/logging.go @@ -4,14 +4,9 @@ import ( "fmt" "github.com/streamingfast/logging" - "go.uber.org/zap" ) -var zlog = zap.NewNop() - -func init() { - logging.Register("github.com/eoscanada/eos-go/p2p", &zlog) -} +var zlog, _ = logging.PackageLogger("eos-go", "github.com/eoscanada/eos-go/p2p") // SyncLogger sync logger, should `defer SyncLogger()` when use p2p package func SyncLogger() { diff --git a/types.go b/types.go index 989d64be..2478fd97 100644 --- a/types.go +++ b/types.go @@ -672,6 +672,10 @@ func NewPermissionLevel(in string) (out PermissionLevel, err error) { return } +func (p PermissionLevel) String() string { + return fmt.Sprintf("%s@%s", p.Actor, p.Permission) +} + type PermissionLevelWeight struct { Permission PermissionLevel `json:"permission"` Weight uint16 `json:"weight"` // weight_type From 580014f8126504e5073eadc1695f49fa055415b4 Mon Sep 17 00:00:00 2001 From: Matthieu Vachon Date: Mon, 12 Dec 2022 16:31:22 -0500 Subject: [PATCH 32/41] Fixed serialization of `map[K]V` when using `eos.MarshalBinary` --- CHANGELOG.md | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index ff3115b4..0b7dd1fd 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -26,7 +26,11 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 #### Fixed -Fix NewPrivateKey correctly working with PVT_K1 keys (#177) +* Fixed serialization of `map[K]V` when using `eos.MarshalBinary` so that ordering in which the keys are serialized is in lexicographical order, just like JSON serialization. + +* Updated to latest version of `github.com/streamingfast/logging` library. + +* Fix NewPrivateKey correctly working with PVT_K1 keys (#177) #### Deprecated From 29cae92cfde15990a254d1d8e270703294337761 Mon Sep 17 00:00:00 2001 From: openventures <89419671+openventures@users.noreply.github.com> Date: Fri, 3 Feb 2023 15:40:53 +0100 Subject: [PATCH 33/41] fix(decoder): symbol_code decoding (#201) --- CHANGELOG.md | 2 ++ decoder.go | 5 +++++ decoder_test.go | 9 ++++++++- 3 files changed, 15 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 0b7dd1fd..30d7330d 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -32,6 +32,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 * Fix NewPrivateKey correctly working with PVT_K1 keys (#177) +* Fixed ABI encoder for `SymbolCode` type. + #### Deprecated ### [**0.10.2**](https://github.com/eoscanada/eos-go/releases/tag/v0.10.2) (January 19th, 2022) diff --git a/decoder.go b/decoder.go index f26e8ca4..8c49a2af 100644 --- a/decoder.go +++ b/decoder.go @@ -394,6 +394,11 @@ func (d *Decoder) Decode(v interface{}, options ...DecodeOption) (err error) { symbol, err = d.ReadSymbol() rv.Set(reflect.ValueOf(*symbol)) return + case *SymbolCode: + var sc SymbolCode + sc, err = d.ReadSymbolCode() + rv.Set(reflect.ValueOf(sc)) + return case *Asset: var asset Asset asset, err = d.ReadAsset() diff --git a/decoder_test.go b/decoder_test.go index 63ad0be6..abd3a73f 100644 --- a/decoder_test.go +++ b/decoder_test.go @@ -539,6 +539,8 @@ type EncodeTestStruct struct { F16 Varuint32 F17 bool F18 Asset + F19 Symbol + F20 SymbolCode } func TestDecoder_Encode(t *testing.T) { @@ -565,13 +567,15 @@ func TestDecoder_Encode(t *testing.T) { F16: Varuint32(999), F17: true, F18: NewEOSAsset(100000), + F19: MustStringToSymbol("4,EOS"), + F20: MustStringToSymbol("4,EOS").MustSymbolCode(), } buf := new(bytes.Buffer) enc := NewEncoder(buf) assert.NoError(t, enc.Encode(s)) - assert.Equal(t, "03616263b5ff6300e7030000000000000000000000000000000000000000000000000000000000000000000002036465660337383903666f6f036261720000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001570000000000000005010203040504ae0f517acd5715162e7b46e70701a08601000000000004454f5300000000", hex.EncodeToString(buf.Bytes())) + assert.Equal(t, "03616263b5ff6300e7030000000000000000000000000000000000000000000000000000000000000000000002036465660337383903666f6f036261720000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001570000000000000005010203040504ae0f517acd5715162e7b46e70701a08601000000000004454f530000000004454f5300000000454f530000000000", hex.EncodeToString(buf.Bytes())) decoder := NewDecoder(buf.Bytes()) assert.NoError(t, decoder.Decode(s)) @@ -596,6 +600,9 @@ func TestDecoder_Encode(t *testing.T) { assert.Equal(t, Int64(100000), s.F18.Amount) assert.Equal(t, uint8(4), s.F18.Precision) assert.Equal(t, "EOS", s.F18.Symbol.Symbol) + assert.Equal(t, "EOS", s.F19.Symbol) + assert.Equal(t, uint8(4), s.F19.Precision) + assert.Equal(t, "EOS", s.F20.String()) } From 6dd3b05879552237bd931c8cdc9cd3258d8e38c8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Frederik=20Sch=C3=B6ll?= Date: Fri, 17 Mar 2023 15:29:40 +0100 Subject: [PATCH 34/41] fix decoding of table rows with variant types (#204) * fix decoding of table rows with variant types * rename test case --- CHANGELOG.md | 2 ++ abidecoder.go | 8 +++++++ abidecoder_test.go | 58 ++++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 68 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 30d7330d..0a46ce6f 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -26,6 +26,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 #### Fixed +* Fixed decoding of table rows with variant types. + * Fixed serialization of `map[K]V` when using `eos.MarshalBinary` so that ordering in which the keys are serialized is in lexicographical order, just like JSON serialization. * Updated to latest version of `github.com/streamingfast/logging` library. diff --git a/abidecoder.go b/abidecoder.go index e814c74d..a316c21e 100644 --- a/abidecoder.go +++ b/abidecoder.go @@ -80,6 +80,14 @@ func (a *ABI) decode(binaryDecoder *Decoder, structName string) (map[string]inte zlog.Debug("decode struct", zap.String("name", structName)) } + if variant := a.VariantForName(structName); variant != nil { + out, err := binaryDecoder.ReadUvarint32() + if err != nil { + zlog.Error("error reading variant", zap.Error(err)) + } + structName = variant.Types[out] + } + structure := a.StructForName(structName) if structure == nil { return nil, fmt.Errorf("structure [%s] not found in abi", structName) diff --git a/abidecoder_test.go b/abidecoder_test.go index 99b664b5..8441bd8e 100644 --- a/abidecoder_test.go +++ b/abidecoder_test.go @@ -150,6 +150,64 @@ func TestABI_DecodeTable(t *testing.T) { } +func Test_DecodeTableRowVariant(t *testing.T) { + + abiString := ` +{ + "version": "eosio::abi/1.3", + "types": [], + "structs": [ + { + "name": "account_v0", + "base": "", + "fields": [ + { + "name": "owner", + "type": "name" + }, + { + "name": "balance", + "type": "asset" + } + ] + } + ], + "actions": [], + "tables": [ + { + "name": "account", + "index_type": "i64", + "type": "variant" + } + ], + "ricardian_clauses": [], + "variants": [ + { + "name": "variant", + "types": [ + "account_v0" + ] + } + ] +} +` + + abi, err := NewABI(strings.NewReader(abiString)) + require.NoError(t, err) + + tableDef := abi.TableForName("account") + require.NotNil(t, tableDef) + + data, err := hex.DecodeString(`00000000005c95b191198a8abe0000000004454f5300000000`) + require.NoError(t, err) + + res, err := abi.DecodeTableRowTyped(tableDef.Type, data) + require.NoError(t, err) + + assert.Equal(t, "master", gjson.GetBytes(res, "owner").String()) + assert.Equal(t, "319675.0361 EOS", gjson.GetBytes(res, "balance").String()) +} + func TestABI_DecodeTableRowMissingTable(t *testing.T) { abiReader := strings.NewReader(abiString) From bab86a7dbf2a1d85161f983fbdfb019970125b65 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Frederik=20Sch=C3=B6ll?= Date: Tue, 21 Mar 2023 12:33:24 +0100 Subject: [PATCH 35/41] downgrade logging library --- cmd/eos-p2p-client/main.go | 8 +++----- cmd/eos-p2p-proxy/main.go | 8 +++----- cmd/eos-p2p-relay/main.go | 8 +++----- go.mod | 6 +++++- go.sum | 25 +++++++++++++++++++++++++ logging.go | 13 ++++++++++++- p2p/logging.go | 14 +++++++++++++- 7 files changed, 64 insertions(+), 18 deletions(-) diff --git a/cmd/eos-p2p-client/main.go b/cmd/eos-p2p-client/main.go index 0d6e30e6..347bf340 100644 --- a/cmd/eos-p2p-client/main.go +++ b/cmd/eos-p2p-client/main.go @@ -7,8 +7,6 @@ import ( "log" "github.com/eoscanada/eos-go/p2p" - "github.com/streamingfast/logging" - "go.uber.org/zap/zapcore" ) var peer = flag.String("peer", "localhost:9876", "peer to connect to") @@ -18,9 +16,9 @@ var showLog = flag.Bool("v", false, "show detail log") func main() { flag.Parse() - if *showLog { - logging.InstantiateLoggers(logging.WithDefaultLevel(zapcore.InfoLevel)) - } + //if *showLog { + // logging.InstantiateLoggers(logging.WithDefaultLevel(zapcore.InfoLevel)) + //} defer p2p.SyncLogger() cID, err := hex.DecodeString(*chainID) diff --git a/cmd/eos-p2p-proxy/main.go b/cmd/eos-p2p-proxy/main.go index 0e943965..3cbb7fc5 100644 --- a/cmd/eos-p2p-proxy/main.go +++ b/cmd/eos-p2p-proxy/main.go @@ -7,8 +7,6 @@ import ( "log" "github.com/eoscanada/eos-go/p2p" - "github.com/streamingfast/logging" - "go.uber.org/zap/zapcore" ) var peer1 = flag.String("peer1", "localhost:9876", "peer 1") @@ -21,9 +19,9 @@ func main() { fmt.Println("P2P Proxy") - if *showLog { - logging.InstantiateLoggers(logging.WithDefaultLevel(zapcore.InfoLevel)) - } + //if *showLog { + // logging.InstantiateLoggers(logging.WithDefaultLevel(zapcore.InfoLevel)) + //} defer p2p.SyncLogger() cID, err := hex.DecodeString(*chainID) diff --git a/cmd/eos-p2p-relay/main.go b/cmd/eos-p2p-relay/main.go index f25e3710..9bf144ac 100644 --- a/cmd/eos-p2p-relay/main.go +++ b/cmd/eos-p2p-relay/main.go @@ -5,8 +5,6 @@ import ( "fmt" "github.com/eoscanada/eos-go/p2p" - "github.com/streamingfast/logging" - "go.uber.org/zap/zapcore" ) var peer = flag.String("peer", "", "peer") @@ -16,9 +14,9 @@ var showLog = flag.Bool("v", false, "show detail log") func main() { flag.Parse() - if *showLog { - logging.InstantiateLoggers(logging.WithDefaultLevel(zapcore.InfoLevel)) - } + //if *showLog { + // logging.InstantiateLoggers(logging.WithDefaultLevel(zapcore.InfoLevel)) + //} defer p2p.SyncLogger() relay := p2p.NewRelay(*listeningAddress, *peer) diff --git a/go.mod b/go.mod index 10fd98fb..6b6f0505 100644 --- a/go.mod +++ b/go.mod @@ -6,7 +6,7 @@ require ( github.com/jarcoal/httpmock v1.2.0 github.com/pkg/errors v0.9.1 github.com/streamingfast/cli v0.0.4-0.20220630165922-bc58c6666fc8 - github.com/streamingfast/logging v0.0.0-20221209193439-bff11742bf4c + github.com/streamingfast/logging v0.0.0-20210811175431-f3b44b61606a github.com/stretchr/testify v1.7.0 github.com/test-go/testify v1.1.4 github.com/tidwall/gjson v1.9.3 @@ -15,10 +15,12 @@ require ( ) require ( + contrib.go.opencensus.io/exporter/stackdriver v0.12.6 // indirect github.com/blendle/zapdriver v1.3.1 // indirect github.com/chzyer/readline v0.0.0-20180603132655-2972be24d48e // indirect github.com/davecgh/go-spew v1.1.1 // indirect github.com/fsnotify/fsnotify v1.4.7 // indirect + github.com/golang/groupcache v0.0.0-20190702054246-869f871628b6 // indirect github.com/hashicorp/hcl v1.0.0 // indirect github.com/inconshreveable/mousetrap v1.0.0 // indirect github.com/juju/ansiterm v0.0.0-20180109212912-720a0952cc2a // indirect @@ -40,8 +42,10 @@ require ( github.com/spf13/pflag v1.0.5 // indirect github.com/spf13/viper v1.7.0 // indirect github.com/subosito/gotenv v1.2.0 // indirect + github.com/teris-io/shortid v0.0.0-20171029131806-771a37caa5cf // indirect github.com/tidwall/match v1.1.1 // indirect github.com/tidwall/pretty v1.2.0 // indirect + go.opencensus.io v0.22.1 // indirect go.uber.org/atomic v1.7.0 // indirect go.uber.org/multierr v1.6.0 // indirect golang.org/x/sys v0.0.0-20220627191245-f75cf1eec38b // indirect diff --git a/go.sum b/go.sum index 69a5788d..83355ff7 100644 --- a/go.sum +++ b/go.sum @@ -1,6 +1,7 @@ cloud.google.com/go v0.26.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= cloud.google.com/go v0.34.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= cloud.google.com/go v0.38.0/go.mod h1:990N+gfupTy94rShfmMCWGDn0LpTmnzTp2qbd1dvSRU= +cloud.google.com/go v0.43.0/go.mod h1:BOSR3VbTLkk6FDC/TcffxP4NF/FFBGA5ku+jvKOP7pg= cloud.google.com/go v0.44.1/go.mod h1:iSa0KzasP4Uvy3f1mN/7PiObzGgflwredwwASm/v6AU= cloud.google.com/go v0.44.2/go.mod h1:60680Gw3Yr4ikxnPRS/oxxkBccT6SA1yMk63TGekxKY= cloud.google.com/go v0.45.1/go.mod h1:RpBamKRgapWJb87xiFSdk4g1CME7QZg3uwTez+TSTjc= @@ -10,6 +11,8 @@ cloud.google.com/go/datastore v1.0.0/go.mod h1:LXYbyblFSglQ5pkeyhO+Qmw7ukd3C+pD7 cloud.google.com/go/firestore v1.1.0/go.mod h1:ulACoGHTpvq5r8rxGJ4ddJZBZqakUQqClKRT5SZwBmk= cloud.google.com/go/pubsub v1.0.1/go.mod h1:R0Gpsv3s54REJCy4fxDixWD93lHJMoZTyQ2kNxGRt3I= cloud.google.com/go/storage v1.0.0/go.mod h1:IhtSnM/ZTZV8YYJWCY8RULGVqBDmpoyjwiyrjsg+URw= +contrib.go.opencensus.io/exporter/stackdriver v0.12.6 h1:Y2FTyj0HgOhfjEW6D6ytZNoz1YcPDXmkKr1I478CWKs= +contrib.go.opencensus.io/exporter/stackdriver v0.12.6/go.mod h1:8x999/OcIPy5ivx/wDiV7Gx4D+VUPODf0mWRGRc5kSk= dmitri.shuralyov.com/gpu/mtl v0.0.0-20190408044501-666a987793e9/go.mod h1:H6x//7gZCb22OMCxBHrMx7a5I7Hp++hsVxbQ4BYO7hU= github.com/BurntSushi/toml v0.3.1 h1:WXkYYl6Yr3qBf1K79EBnL4mak0OimBfB0XUf9Vl28OQ= github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU= @@ -20,6 +23,7 @@ github.com/alecthomas/units v0.0.0-20151022065526-2efee857e7cf/go.mod h1:ybxpYRF github.com/armon/circbuf v0.0.0-20150827004946-bbbad097214e/go.mod h1:3U/XgcO3hCbHZ8TKRvWD2dDTCfh9M9ya+I9JpbB7O8o= github.com/armon/go-metrics v0.0.0-20180917152333-f0300d1749da/go.mod h1:Q73ZrmVTwzkszR9V5SSuryQ31EELlFMUz1kKyl939pY= github.com/armon/go-radix v0.0.0-20180808171621-7fddfc383310/go.mod h1:ufUuZ+zHj4x4TnLV4JWEpy2hxWSpsRywHrMgIH9cCH8= +github.com/aws/aws-sdk-go v1.22.1/go.mod h1:KmX6BPdI08NWTb3/sm4ZGu5ShLoqVDhKgpiN924inxo= github.com/benbjohnson/clock v1.1.0 h1:Q92kusRqC1XV2MjkWETPvjJVqKetz1OzxZB7mHJLju8= github.com/benbjohnson/clock v1.1.0/go.mod h1:J11/hYXuz8f4ySSvYwY0FKfm+ezbsZBKZxNJlLklBHA= github.com/beorn7/perks v0.0.0-20180321164747-3a771d992973/go.mod h1:Dwedo/Wpr24TaqPxmxbtue+5NUziq4I4S80YR8gNf3Q= @@ -28,6 +32,7 @@ github.com/bgentry/speakeasy v0.1.0/go.mod h1:+zsyZBPWlz7T6j88CTgSN5bM796AkVf0kB github.com/bketelsen/crypt v0.0.3-0.20200106085610-5cbc8cc4026c/go.mod h1:MKsuJmJgSg28kpZDP6UIiPt0e0Oz0kqKNGyRaWEPv84= github.com/blendle/zapdriver v1.3.1 h1:C3dydBOWYRiOk+B8X9IVZ5IOe+7cl+tGOexN4QqHfpE= github.com/blendle/zapdriver v1.3.1/go.mod h1:mdXfREi6u5MArG4j9fewC+FGnXaBR+T4Ox4J2u4eHCc= +github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU= github.com/cespare/xxhash v1.1.0/go.mod h1:XrSqR1VqqWfGrhpAt58auRo0WTKS1nRRg3ghfAqPWnc= github.com/chzyer/logex v1.1.10 h1:Swpa1K6QvQznwJRcfTfQJmTE72DqScAa40E+fbHEXEE= github.com/chzyer/logex v1.1.10/go.mod h1:+Ywpsq7O8HXn0nuIou7OrIPyXbp3wmkHB+jjWRnGsAI= @@ -60,6 +65,8 @@ github.com/gogo/protobuf v1.1.1/go.mod h1:r8qH/GZQm5c6nD/R0oafs1akxWv10x8SbQlK7a github.com/gogo/protobuf v1.2.1/go.mod h1:hp+jE20tsWTFYpLwKvXlhS1hjn+gTNwPg2I6zVXpSg4= github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q= github.com/golang/groupcache v0.0.0-20190129154638-5b532d6fd5ef/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= +github.com/golang/groupcache v0.0.0-20190702054246-869f871628b6 h1:ZgQEtGgCBiWRM39fZuwSd1LwSqqSW0hOdXCYYDX0R3I= +github.com/golang/groupcache v0.0.0-20190702054246-869f871628b6/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= github.com/golang/mock v1.1.1/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A= github.com/golang/mock v1.2.0/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A= github.com/golang/mock v1.3.1/go.mod h1:sBzyDLLjw3U8JLTeZvSv8jJB+tU5PVekmnlKIyFUx0Y= @@ -70,6 +77,7 @@ github.com/google/btree v0.0.0-20180813153112-4030bb1f1f0c/go.mod h1:lNA+9X1NB3Z github.com/google/btree v1.0.0/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ= github.com/google/go-cmp v0.2.0/go.mod h1:oXzfMopK8JAjlY9xF4vHSVASa0yLyX7SntLO5aqRK0M= github.com/google/go-cmp v0.3.0/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= +github.com/google/go-cmp v0.3.1/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= github.com/google/martian v2.1.0+incompatible/go.mod h1:9I4somxYTbIHy5NJKHRl3wXiIaQGbYVAs8BPL6v8lEs= github.com/google/pprof v0.0.0-20181206194817-3ea8567a2e57/go.mod h1:zfwlbNMJ+OItoe0UupaVj+oy1omPYYDuagoSzA8v9mc= github.com/google/pprof v0.0.0-20190515194954-54271f7e092f/go.mod h1:zfwlbNMJ+OItoe0UupaVj+oy1omPYYDuagoSzA8v9mc= @@ -97,6 +105,7 @@ github.com/hashicorp/go-uuid v1.0.1/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/b github.com/hashicorp/go.net v0.0.1/go.mod h1:hjKkEWcCURg++eb33jQU7oqQcI9XDCnUzHA0oac0k90= github.com/hashicorp/golang-lru v0.5.0/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8= github.com/hashicorp/golang-lru v0.5.1/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8= +github.com/hashicorp/golang-lru v0.5.3/go.mod h1:iADmTwqILo4mZ8BN3D2Q6+9jd8WM5uGBxy+E8yxSoD4= github.com/hashicorp/hcl v1.0.0 h1:0Anlzjpi4vEasTeNFn2mLJgTSwt0+6sfsiTG8qcWGx4= github.com/hashicorp/hcl v1.0.0/go.mod h1:E5yfLk+7swimpb2L/Alb/PJmXilQ/rhwaUYs4T20WEQ= github.com/hashicorp/logutils v1.0.0/go.mod h1:QIAnNjmIWmVIIkWDTG1z5v++HQmx9WQRO+LraFDTW64= @@ -107,6 +116,7 @@ github.com/inconshreveable/mousetrap v1.0.0 h1:Z8tu5sraLXCXIcARxBp/8cbvlwVa7Z1NH github.com/inconshreveable/mousetrap v1.0.0/go.mod h1:PxqpIevigyE2G7u3NXJIT2ANytuPF1OarO4DADm73n8= github.com/jarcoal/httpmock v1.2.0 h1:gSvTxxFR/MEMfsGrvRbdfpRUMBStovlSRLw0Ep1bwwc= github.com/jarcoal/httpmock v1.2.0/go.mod h1:oCoTsnAz4+UoOUIf5lJOWV2QQIW5UoeUI6aM2YnWAZk= +github.com/jmespath/go-jmespath v0.0.0-20180206201540-c2b33e8439af/go.mod h1:Nht3zPeWKUH0NzdCt2Blrr5ys8VGpn0CEB0cQHVjt7k= github.com/jonboulle/clockwork v0.1.0/go.mod h1:Ii8DK3G1RaLaWxj9trq07+26W01tbo22gdxWY5EU2bo= github.com/json-iterator/go v1.1.6/go.mod h1:+SdeFBvtyEkXs7REEP0seUULqWtbJapLOCVDaaPEHmU= github.com/jstemmer/go-junit-report v0.0.0-20190106144839-af01ea7f8024/go.mod h1:6v2b51hI/fHJwM22ozAgKL4VKDeJcHhJFhtBdhmNjmU= @@ -205,6 +215,8 @@ github.com/spf13/viper v1.7.0 h1:xVKxvI7ouOI5I+U9s2eeiUfMaWBVoXA3AWskkrqK0VM= github.com/spf13/viper v1.7.0/go.mod h1:8WkrPz2fc9jxqZNCJI/76HCieCp4Q8HaLFoCha5qpdg= github.com/streamingfast/cli v0.0.4-0.20220630165922-bc58c6666fc8 h1:1W2VZY4jRTh7GJ6+PnydanRcr3Hj45SKDnb+kBQQwlc= github.com/streamingfast/cli v0.0.4-0.20220630165922-bc58c6666fc8/go.mod h1:Lmirl0ABgXzidX33syiUG6lX64mJMK5pDNTBFuz8xZI= +github.com/streamingfast/logging v0.0.0-20210811175431-f3b44b61606a h1:Hy7ST3+wGmk4nyBanXKzhRXE63E77UEF93oG51dfq6c= +github.com/streamingfast/logging v0.0.0-20210811175431-f3b44b61606a/go.mod h1:4GdqELhZOXj4xwc4IaBmzofzdErGynnaSzuzxy0ZIBo= github.com/streamingfast/logging v0.0.0-20221209193439-bff11742bf4c h1:dV1ye/S2PiW9uIWvLtMrxWoTLcZS+yhjZDSKEV102Ho= github.com/streamingfast/logging v0.0.0-20221209193439-bff11742bf4c/go.mod h1:VlduQ80JcGJSargkRU4Sg9Xo63wZD/l8A5NC/Uo1/uU= github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= @@ -216,6 +228,8 @@ github.com/stretchr/testify v1.7.0 h1:nwc3DEeHmmLAfoZucVR881uASk0Mfjw8xYJ99tb5Cc github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= github.com/subosito/gotenv v1.2.0 h1:Slr1R9HxAlEKefgq5jn9U+DnETlIUa6HfgEzj0g5d7s= github.com/subosito/gotenv v1.2.0/go.mod h1:N0PQaV/YGNqwC0u51sEeR/aUtSLEXKX9iv69rRypqCw= +github.com/teris-io/shortid v0.0.0-20171029131806-771a37caa5cf h1:Z2X3Os7oRzpdJ75iPqWZc0HeJWFYNCvKsfpQwFpRNTA= +github.com/teris-io/shortid v0.0.0-20171029131806-771a37caa5cf/go.mod h1:M8agBzgqHIhgj7wEn9/0hJUZcrvt9VY+Ln+S1I5Mha0= github.com/test-go/testify v1.1.4 h1:Tf9lntrKUMHiXQ07qBScBTSA0dhYQlu83hswqelv1iE= github.com/test-go/testify v1.1.4/go.mod h1:rH7cfJo/47vWGdi4GPj16x3/t1xGOj2YxzmNQzk2ghU= github.com/tidwall/gjson v1.9.3 h1:hqzS9wAHMO+KVBBkLxYdkEeeFHuqr95GfClRLKlgK0E= @@ -230,18 +244,23 @@ github.com/yuin/goldmark v1.3.5/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1 go.etcd.io/bbolt v1.3.2/go.mod h1:IbVyRI1SCnLcuJnV2u8VeU0CEYM7e686BmAb1XKL+uU= go.opencensus.io v0.21.0/go.mod h1:mSImk1erAIZhrmZN+AvHh14ztQfjbGwt4TtuofqLduU= go.opencensus.io v0.22.0/go.mod h1:+kGneAE2xo2IficOXnaByMWTGM9T73dGwxeWcUqIpI8= +go.opencensus.io v0.22.1 h1:8dP3SGL7MPB94crU3bEPplMPe83FI4EouesJUeFHv50= +go.opencensus.io v0.22.1/go.mod h1:Ap50jQcDJrx6rB6VgeeFPtuPIf3wMRvRfrfYDO6+BmA= go.uber.org/atomic v1.4.0/go.mod h1:gD2HeocX3+yG+ygLZcrzQJaqmWj9AIm7n08wl/qW/PE= +go.uber.org/atomic v1.5.0/go.mod h1:sABNBOSYdrvTF6hTgEIbc7YasKWGhgEQZyfxyTvoXHQ= go.uber.org/atomic v1.6.0/go.mod h1:sABNBOSYdrvTF6hTgEIbc7YasKWGhgEQZyfxyTvoXHQ= go.uber.org/atomic v1.7.0 h1:ADUqmZGgLDDfbSL9ZmPxKTybcoEYHgpYfELNoN+7hsw= go.uber.org/atomic v1.7.0/go.mod h1:fEN4uk6kAWBTFdckzkM89CLk9XfWZrxpCo0nPH17wJc= go.uber.org/goleak v1.1.11 h1:wy28qYRKZgnJTxGxvye5/wgWr1EKjmUDGYox5mGlRlI= go.uber.org/goleak v1.1.11/go.mod h1:cwTWslyiVhfpKIDGSZEM2HlOvcqm+tG4zioyIeLoqMQ= go.uber.org/multierr v1.1.0/go.mod h1:wR5kodmAFQ0UK8QlbwjlSNy0Z68gJhDJUG5sjR94q/0= +go.uber.org/multierr v1.3.0/go.mod h1:VgVr7evmIr6uPjLBxg28wmKNXyqE9akIJ5XnfpiKl+4= go.uber.org/multierr v1.5.0/go.mod h1:FeouvMocqHpRaaGuG9EjoKcStLC43Zu/fmqdUMPcKYU= go.uber.org/multierr v1.6.0 h1:y6IPFStTAIT5Ytl7/XYmHvzXQ7S3g/IeZW9hyZ5thw4= go.uber.org/multierr v1.6.0/go.mod h1:cdWPpRnG4AhwMwsgIHip0KRBQjJy5kYEpYjJxpXp9iU= go.uber.org/tools v0.0.0-20190618225709-2cfd321de3ee/go.mod h1:vJERXedbb3MVM5f9Ejo0C68/HhF8uaILCdgjnY+goOA= go.uber.org/zap v1.10.0/go.mod h1:vwi/ZaCAaUcBkycHslxD9B2zi4UTXhF60s6SWpuDF0Q= +go.uber.org/zap v1.14.0/go.mod h1:zwrFLgMcdUuIBviXEYEH1YKNaOBnKXsx2IPda5bBwHM= go.uber.org/zap v1.16.0/go.mod h1:MA8QOfq0BHJwdXa996Y4dYkAqRKB8/1K1QMMZVaNZjQ= go.uber.org/zap v1.21.0 h1:WefMeulhovoZ2sYXz7st6K0sLj7bBhpiFaud4r4zST8= go.uber.org/zap v1.21.0/go.mod h1:wjWOCqI0f2ZZrJF/UufIOkiC8ii6tm1iqIsLo76RfJw= @@ -287,6 +306,7 @@ golang.org/x/net v0.0.0-20190501004415-9ce7a6920f09/go.mod h1:t9HGtf8HONx5eT2rtn golang.org/x/net v0.0.0-20190503192946-f4e77d36d62c/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= golang.org/x/net v0.0.0-20190603091049-60506f45cf65/go.mod h1:HSz+uSET+XFnRR8LxR5pz3Of3rY3CfYBVs4xY44aLks= golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20190724013045-ca1201d0de80/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= golang.org/x/net v0.0.0-20210405180319-a5a99cb37ef4/go.mod h1:p54w0d4576C0XHj96bSt6lcn1PtDYWL6XObtHCRCNQM= golang.org/x/net v0.0.0-20211112202133-69e39bad7dc2/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= @@ -313,6 +333,7 @@ golang.org/x/sys v0.0.0-20190502145724-3ef323f4f1fd/go.mod h1:h1NjWce9XRLGQEsW7w golang.org/x/sys v0.0.0-20190507160741-ecd444e8653b/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190606165138-5da285871e9c/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190624142023-c5567b49c5d0/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190804053845-51ab0e2deafa/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210330210617-4fbd30eecc44/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210423082822-04245dca01da/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= @@ -341,6 +362,7 @@ golang.org/x/tools v0.0.0-20190312170243-e65039ee4138/go.mod h1:LCzVGOaR6xXOjkQ3 golang.org/x/tools v0.0.0-20190328211700-ab21143f2384/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= golang.org/x/tools v0.0.0-20190425150028-36563e24a262/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= golang.org/x/tools v0.0.0-20190506145303-2d16b83fe98c/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= +golang.org/x/tools v0.0.0-20190524140312-2c0ae7006135/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= golang.org/x/tools v0.0.0-20190606124116-d0a3d012864b/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= golang.org/x/tools v0.0.0-20190621195816-6e04913cbbac/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= golang.org/x/tools v0.0.0-20190628153133-6cdbf07be9d0/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= @@ -369,6 +391,7 @@ google.golang.org/genproto v0.0.0-20190307195333-5fe7a883aa19/go.mod h1:VzzqZJRn google.golang.org/genproto v0.0.0-20190418145605-e7d98fc518a7/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= google.golang.org/genproto v0.0.0-20190425155659-357c62f0e4bb/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= google.golang.org/genproto v0.0.0-20190502173448-54afdca5d873/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= +google.golang.org/genproto v0.0.0-20190716160619-c506a9f90610/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc= google.golang.org/genproto v0.0.0-20190801165951-fa694d86fc64/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc= google.golang.org/genproto v0.0.0-20190819201941-24fa4b261c55/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc= google.golang.org/genproto v0.0.0-20190911173649-1774047e7e51/go.mod h1:IbNlFCBrqXvoKpeg0TB2l7cyZUmoaFKYIwrEpbDKLA8= @@ -376,6 +399,7 @@ google.golang.org/genproto v0.0.0-20191108220845-16a3f7862a1a/go.mod h1:n3cpQtvx google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= google.golang.org/grpc v1.20.1/go.mod h1:10oTOabMzJvdu6/UiuZezV6QK5dSlG84ov/aaiqXj38= google.golang.org/grpc v1.21.1/go.mod h1:oYelfM1adQP15Ek0mdvEgi9Df8B9CZIaU1084ijfRaM= +google.golang.org/grpc v1.22.1/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg= gopkg.in/alecthomas/kingpin.v2 v2.2.6/go.mod h1:FMv+mEhP44yOT+4EoQTLFTRgOQ1FBLkstjWtayDeSgw= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127 h1:qIbj1fsPNlZgppZ+VLlY7N33q108Sa+fhmuc+sWQYwY= @@ -397,5 +421,6 @@ gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b/go.mod h1:K4uyk7z7BCEPqu6E+C honnef.co/go/tools v0.0.0-20190102054323-c2f93a96b099/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= honnef.co/go/tools v0.0.0-20190106161140-3f1c8253044a/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= honnef.co/go/tools v0.0.0-20190418001031-e561f6794a2a/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= +honnef.co/go/tools v0.0.0-20190523083050-ea95bdfd59fc/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= honnef.co/go/tools v0.0.1-2019.2.3/go.mod h1:a3bituU0lyd329TUQxRnasdCoJDkEUEAqEt0JzvZhAg= rsc.io/binaryregexp v0.2.0/go.mod h1:qTv7/COck+e2FymRvadv62gMdZztPaShugOCi3I+8D8= diff --git a/logging.go b/logging.go index a3284cc6..4a0e72f1 100644 --- a/logging.go +++ b/logging.go @@ -7,7 +7,18 @@ import ( "go.uber.org/zap" ) -var zlog, tracer = logging.PackageLogger("eos-go", "github.com/eoscanada/eos-go") +var zlog *zap.Logger +var tracer = &Tracer{} + +func init() { + logging.Register("github.com/eoscanada/eos-go", &zlog) +} + +type Tracer struct{} + +func (t *Tracer) Enabled() bool { + return logging.IsTraceEnabled("eos-go", "github.com/eoscanada/eos-go") +} type logStringerFunc func() string diff --git a/p2p/logging.go b/p2p/logging.go index 58beb37d..eb66be67 100644 --- a/p2p/logging.go +++ b/p2p/logging.go @@ -2,11 +2,23 @@ package p2p import ( "fmt" + "go.uber.org/zap" "github.com/streamingfast/logging" ) -var zlog, _ = logging.PackageLogger("eos-go", "github.com/eoscanada/eos-go/p2p") +var zlog *zap.Logger +var tracer = &Tracer{} + +func init() { + logging.Register("github.com/eoscanada/eos-go/p2p", &zlog) +} + +type Tracer struct{} + +func (t *Tracer) Enabled() bool { + return logging.IsTraceEnabled("eos-go", "github.com/eoscanada/eos-go/p2p") +} // SyncLogger sync logger, should `defer SyncLogger()` when use p2p package func SyncLogger() { From 2fb4b4a107eee08ef1499b1024b24e29c7a968bc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Frederik=20Sch=C3=B6ll?= Date: Tue, 21 Mar 2023 12:41:53 +0100 Subject: [PATCH 36/41] run go mod tidy --- go.mod | 24 ------- go.sum | 208 --------------------------------------------------------- 2 files changed, 232 deletions(-) diff --git a/go.mod b/go.mod index 6b6f0505..42ece56b 100644 --- a/go.mod +++ b/go.mod @@ -5,10 +5,8 @@ go 1.17 require ( github.com/jarcoal/httpmock v1.2.0 github.com/pkg/errors v0.9.1 - github.com/streamingfast/cli v0.0.4-0.20220630165922-bc58c6666fc8 github.com/streamingfast/logging v0.0.0-20210811175431-f3b44b61606a github.com/stretchr/testify v1.7.0 - github.com/test-go/testify v1.1.4 github.com/tidwall/gjson v1.9.3 go.uber.org/zap v1.21.0 golang.org/x/crypto v0.0.0-20220214200702-86341886e292 @@ -17,31 +15,11 @@ require ( require ( contrib.go.opencensus.io/exporter/stackdriver v0.12.6 // indirect github.com/blendle/zapdriver v1.3.1 // indirect - github.com/chzyer/readline v0.0.0-20180603132655-2972be24d48e // indirect github.com/davecgh/go-spew v1.1.1 // indirect - github.com/fsnotify/fsnotify v1.4.7 // indirect github.com/golang/groupcache v0.0.0-20190702054246-869f871628b6 // indirect - github.com/hashicorp/hcl v1.0.0 // indirect - github.com/inconshreveable/mousetrap v1.0.0 // indirect - github.com/juju/ansiterm v0.0.0-20180109212912-720a0952cc2a // indirect - github.com/lithammer/dedent v1.1.0 // indirect github.com/logrusorgru/aurora v2.0.3+incompatible // indirect - github.com/lunixbochs/vtclean v0.0.0-20180621232353-2d01aacdc34a // indirect - github.com/magiconair/properties v1.8.1 // indirect - github.com/manifoldco/promptui v0.8.0 // indirect - github.com/mattn/go-colorable v0.0.9 // indirect - github.com/mattn/go-isatty v0.0.4 // indirect github.com/mitchellh/go-testing-interface v1.14.1 // indirect - github.com/mitchellh/mapstructure v1.1.2 // indirect - github.com/pelletier/go-toml v1.2.0 // indirect github.com/pmezard/go-difflib v1.0.0 // indirect - github.com/spf13/afero v1.1.2 // indirect - github.com/spf13/cast v1.3.0 // indirect - github.com/spf13/cobra v1.1.3 // indirect - github.com/spf13/jwalterweatherman v1.0.0 // indirect - github.com/spf13/pflag v1.0.5 // indirect - github.com/spf13/viper v1.7.0 // indirect - github.com/subosito/gotenv v1.2.0 // indirect github.com/teris-io/shortid v0.0.0-20171029131806-771a37caa5cf // indirect github.com/tidwall/match v1.1.1 // indirect github.com/tidwall/pretty v1.2.0 // indirect @@ -50,8 +28,6 @@ require ( go.uber.org/multierr v1.6.0 // indirect golang.org/x/sys v0.0.0-20220627191245-f75cf1eec38b // indirect golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1 // indirect - golang.org/x/text v0.3.6 // indirect - gopkg.in/ini.v1 v1.51.0 // indirect gopkg.in/yaml.v2 v2.4.0 // indirect gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b // indirect ) diff --git a/go.sum b/go.sum index 83355ff7..35d98c1d 100644 --- a/go.sum +++ b/go.sum @@ -2,69 +2,21 @@ cloud.google.com/go v0.26.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMT cloud.google.com/go v0.34.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= cloud.google.com/go v0.38.0/go.mod h1:990N+gfupTy94rShfmMCWGDn0LpTmnzTp2qbd1dvSRU= cloud.google.com/go v0.43.0/go.mod h1:BOSR3VbTLkk6FDC/TcffxP4NF/FFBGA5ku+jvKOP7pg= -cloud.google.com/go v0.44.1/go.mod h1:iSa0KzasP4Uvy3f1mN/7PiObzGgflwredwwASm/v6AU= -cloud.google.com/go v0.44.2/go.mod h1:60680Gw3Yr4ikxnPRS/oxxkBccT6SA1yMk63TGekxKY= -cloud.google.com/go v0.45.1/go.mod h1:RpBamKRgapWJb87xiFSdk4g1CME7QZg3uwTez+TSTjc= -cloud.google.com/go v0.46.3/go.mod h1:a6bKKbmY7er1mI7TEI4lsAkts/mkhTSZK8w33B4RAg0= -cloud.google.com/go/bigquery v1.0.1/go.mod h1:i/xbL2UlR5RvWAURpBYZTtm/cXjCha9lbfbpx4poX+o= -cloud.google.com/go/datastore v1.0.0/go.mod h1:LXYbyblFSglQ5pkeyhO+Qmw7ukd3C+pD7TKLgZqpHYE= -cloud.google.com/go/firestore v1.1.0/go.mod h1:ulACoGHTpvq5r8rxGJ4ddJZBZqakUQqClKRT5SZwBmk= -cloud.google.com/go/pubsub v1.0.1/go.mod h1:R0Gpsv3s54REJCy4fxDixWD93lHJMoZTyQ2kNxGRt3I= -cloud.google.com/go/storage v1.0.0/go.mod h1:IhtSnM/ZTZV8YYJWCY8RULGVqBDmpoyjwiyrjsg+URw= contrib.go.opencensus.io/exporter/stackdriver v0.12.6 h1:Y2FTyj0HgOhfjEW6D6ytZNoz1YcPDXmkKr1I478CWKs= contrib.go.opencensus.io/exporter/stackdriver v0.12.6/go.mod h1:8x999/OcIPy5ivx/wDiV7Gx4D+VUPODf0mWRGRc5kSk= -dmitri.shuralyov.com/gpu/mtl v0.0.0-20190408044501-666a987793e9/go.mod h1:H6x//7gZCb22OMCxBHrMx7a5I7Hp++hsVxbQ4BYO7hU= -github.com/BurntSushi/toml v0.3.1 h1:WXkYYl6Yr3qBf1K79EBnL4mak0OimBfB0XUf9Vl28OQ= github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU= github.com/BurntSushi/xgb v0.0.0-20160522181843-27f122750802/go.mod h1:IVnqGOEym/WlBOVXweHU+Q+/VP0lqqI8lqeDx9IjBqo= -github.com/OneOfOne/xxhash v1.2.2/go.mod h1:HSdplMjZKSmBqAxg5vPj2TmRDmfkzw+cTzAElWljhcU= -github.com/alecthomas/template v0.0.0-20160405071501-a0175ee3bccc/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc= -github.com/alecthomas/units v0.0.0-20151022065526-2efee857e7cf/go.mod h1:ybxpYRFXyAe+OPACYpWeL0wqObRcbAqCMya13uyzqw0= -github.com/armon/circbuf v0.0.0-20150827004946-bbbad097214e/go.mod h1:3U/XgcO3hCbHZ8TKRvWD2dDTCfh9M9ya+I9JpbB7O8o= -github.com/armon/go-metrics v0.0.0-20180917152333-f0300d1749da/go.mod h1:Q73ZrmVTwzkszR9V5SSuryQ31EELlFMUz1kKyl939pY= -github.com/armon/go-radix v0.0.0-20180808171621-7fddfc383310/go.mod h1:ufUuZ+zHj4x4TnLV4JWEpy2hxWSpsRywHrMgIH9cCH8= github.com/aws/aws-sdk-go v1.22.1/go.mod h1:KmX6BPdI08NWTb3/sm4ZGu5ShLoqVDhKgpiN924inxo= github.com/benbjohnson/clock v1.1.0 h1:Q92kusRqC1XV2MjkWETPvjJVqKetz1OzxZB7mHJLju8= github.com/benbjohnson/clock v1.1.0/go.mod h1:J11/hYXuz8f4ySSvYwY0FKfm+ezbsZBKZxNJlLklBHA= -github.com/beorn7/perks v0.0.0-20180321164747-3a771d992973/go.mod h1:Dwedo/Wpr24TaqPxmxbtue+5NUziq4I4S80YR8gNf3Q= -github.com/beorn7/perks v1.0.0/go.mod h1:KWe93zE9D1o94FZ5RNwFwVgaQK1VOXiVxmqh+CedLV8= -github.com/bgentry/speakeasy v0.1.0/go.mod h1:+zsyZBPWlz7T6j88CTgSN5bM796AkVf0kBD4zp0CCIs= -github.com/bketelsen/crypt v0.0.3-0.20200106085610-5cbc8cc4026c/go.mod h1:MKsuJmJgSg28kpZDP6UIiPt0e0Oz0kqKNGyRaWEPv84= github.com/blendle/zapdriver v1.3.1 h1:C3dydBOWYRiOk+B8X9IVZ5IOe+7cl+tGOexN4QqHfpE= github.com/blendle/zapdriver v1.3.1/go.mod h1:mdXfREi6u5MArG4j9fewC+FGnXaBR+T4Ox4J2u4eHCc= github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU= -github.com/cespare/xxhash v1.1.0/go.mod h1:XrSqR1VqqWfGrhpAt58auRo0WTKS1nRRg3ghfAqPWnc= -github.com/chzyer/logex v1.1.10 h1:Swpa1K6QvQznwJRcfTfQJmTE72DqScAa40E+fbHEXEE= -github.com/chzyer/logex v1.1.10/go.mod h1:+Ywpsq7O8HXn0nuIou7OrIPyXbp3wmkHB+jjWRnGsAI= -github.com/chzyer/readline v0.0.0-20180603132655-2972be24d48e h1:fY5BOSpyZCqRo5OhCuC+XN+r/bBCmeuuJtjz+bCNIf8= -github.com/chzyer/readline v0.0.0-20180603132655-2972be24d48e/go.mod h1:nSuG5e5PlCu98SY8svDHJxuZscDgtXS6KTTbou5AhLI= -github.com/chzyer/test v0.0.0-20180213035817-a1ea475d72b1 h1:q763qf9huN11kDQavWsoZXJNW3xEE4JJyHa5Q25/sd8= -github.com/chzyer/test v0.0.0-20180213035817-a1ea475d72b1/go.mod h1:Q3SI9o4m/ZMnBNeIyt5eFwwo7qiLfzFZmjNmxjkiQlU= github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw= -github.com/coreos/bbolt v1.3.2/go.mod h1:iRUV2dpdMOn7Bo10OQBFzIJO9kkE559Wcmn+qkEiiKk= -github.com/coreos/etcd v3.3.13+incompatible/go.mod h1:uF7uidLiAD3TWHmW31ZFd/JWoc32PjwdhPthX9715RE= -github.com/coreos/go-semver v0.3.0/go.mod h1:nnelYz7RCh+5ahJtPPxZlU+153eP4D4r3EedlOD2RNk= -github.com/coreos/go-systemd v0.0.0-20190321100706-95778dfbb74e/go.mod h1:F5haX7vjVVG0kc13fIWeqUViNPyEJxv/OmvnBo0Yme4= -github.com/coreos/pkg v0.0.0-20180928190104-399ea9e2e55f/go.mod h1:E3G3o1h8I7cfcXa63jLwjI0eiQQMgzzUDFVpN/nH/eA= -github.com/cpuguy83/go-md2man/v2 v2.0.0/go.mod h1:maD7wRr/U5Z6m/iR4s+kqSMx2CaBsrgA7czyZG/E6dU= github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= -github.com/dgrijalva/jwt-go v3.2.0+incompatible/go.mod h1:E3ru+11k8xSBh+hMPgOLZmtrrCbhqsmaPHjLKYnJCaQ= -github.com/dgryski/go-sip13 v0.0.0-20181026042036-e10d5fee7954/go.mod h1:vAd38F8PWV+bWy6jNmig1y/TA+kYO4g3RSRF0IAv0no= -github.com/fatih/color v1.7.0/go.mod h1:Zm6kSWBoL9eyXnKyktHP6abPY2pDugNf5KwzbycvMj4= -github.com/fsnotify/fsnotify v1.4.7 h1:IXs+QLmnXW2CcXuY+8Mzv/fWEsPGWxqefPtCP5CnV9I= -github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo= -github.com/ghodss/yaml v1.0.0/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04= -github.com/go-gl/glfw v0.0.0-20190409004039-e6da0acd62b1/go.mod h1:vR7hzQXu2zJy9AVAgeJqvqgH9Q5CA+iKCZ2gyEVpxRU= -github.com/go-kit/kit v0.8.0/go.mod h1:xBxKIO96dXMWWy0MnWVtmwkA9/13aqxPnvrjFYMA2as= -github.com/go-logfmt/logfmt v0.3.0/go.mod h1:Qt1PoO58o5twSAckw1HlFXLmHsOX5/0LbT9GBnD5lWE= -github.com/go-logfmt/logfmt v0.4.0/go.mod h1:3RMwSq7FuexP4Kalkev3ejPJsZTpXXBr9+V4qmtdjCk= -github.com/go-stack/stack v1.8.0/go.mod h1:v0f6uXyyMGvRgIKkXu+yp6POWl0qKG85gN/melR3HDY= -github.com/gogo/protobuf v1.1.1/go.mod h1:r8qH/GZQm5c6nD/R0oafs1akxWv10x8SbQlK7atdtwQ= -github.com/gogo/protobuf v1.2.1/go.mod h1:hp+jE20tsWTFYpLwKvXlhS1hjn+gTNwPg2I6zVXpSg4= github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q= -github.com/golang/groupcache v0.0.0-20190129154638-5b532d6fd5ef/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= github.com/golang/groupcache v0.0.0-20190702054246-869f871628b6 h1:ZgQEtGgCBiWRM39fZuwSd1LwSqqSW0hOdXCYYDX0R3I= github.com/golang/groupcache v0.0.0-20190702054246-869f871628b6/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= github.com/golang/mock v1.1.1/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A= @@ -84,150 +36,38 @@ github.com/google/pprof v0.0.0-20190515194954-54271f7e092f/go.mod h1:zfwlbNMJ+OI github.com/google/renameio v0.1.0/go.mod h1:KWCgfxg9yswjAJkECMjeO8J8rahYeXnNhOm40UhjYkI= github.com/googleapis/gax-go/v2 v2.0.4/go.mod h1:0Wqv26UfaUD9n4G6kQubkQ+KchISgw+vpHVxEJEs9eg= github.com/googleapis/gax-go/v2 v2.0.5/go.mod h1:DWXyrwAJ9X0FpwwEdw+IPEYBICEFu5mhpdKc/us6bOk= -github.com/gopherjs/gopherjs v0.0.0-20181017120253-0766667cb4d1 h1:EGx4pi6eqNxGaHF6qqu48+N2wcFQ5qg5FXgOdqsJ5d8= -github.com/gopherjs/gopherjs v0.0.0-20181017120253-0766667cb4d1/go.mod h1:wJfORRmW1u3UXTncJ5qlYoELFm8eSnnEO6hX4iZ3EWY= -github.com/gorilla/websocket v1.4.2/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE= -github.com/grpc-ecosystem/go-grpc-middleware v1.0.0/go.mod h1:FiyG127CGDf3tlThmgyCl78X/SZQqEOJBCDaAfeWzPs= -github.com/grpc-ecosystem/go-grpc-prometheus v1.2.0/go.mod h1:8NvIoxWQoOIhqOTXgfV/d3M/q6VIi02HzZEHgUlZvzk= -github.com/grpc-ecosystem/grpc-gateway v1.9.0/go.mod h1:vNeuVxBJEsws4ogUvrchl83t/GYV9WGTSLVdBhOQFDY= -github.com/hashicorp/consul/api v1.1.0/go.mod h1:VmuI/Lkw1nC05EYQWNKwWGbkg+FbDBtguAZLlVdkD9Q= -github.com/hashicorp/consul/sdk v0.1.1/go.mod h1:VKf9jXwCTEY1QZP2MOLRhb5i/I/ssyNV1vwHyQBF0x8= -github.com/hashicorp/errwrap v1.0.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4= -github.com/hashicorp/go-cleanhttp v0.5.1/go.mod h1:JpRdi6/HCYpAwUzNwuwqhbovhLtngrth3wmdIIUrZ80= -github.com/hashicorp/go-immutable-radix v1.0.0/go.mod h1:0y9vanUI8NX6FsYoO3zeMjhV/C5i9g4Q3DwcSNZ4P60= -github.com/hashicorp/go-msgpack v0.5.3/go.mod h1:ahLV/dePpqEmjfWmKiqvPkv/twdG7iPBM1vqhUKIvfM= -github.com/hashicorp/go-multierror v1.0.0/go.mod h1:dHtQlpGsu+cZNNAkkCN/P3hoUDHhCYQXV3UM06sGGrk= -github.com/hashicorp/go-rootcerts v1.0.0/go.mod h1:K6zTfqpRlCUIjkwsN4Z+hiSfzSTQa6eBIzfwKfwNnHU= -github.com/hashicorp/go-sockaddr v1.0.0/go.mod h1:7Xibr9yA9JjQq1JpNB2Vw7kxv8xerXegt+ozgdvDeDU= -github.com/hashicorp/go-syslog v1.0.0/go.mod h1:qPfqrKkXGihmCqbJM2mZgkZGvKG1dFdvsLplgctolz4= -github.com/hashicorp/go-uuid v1.0.0/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/bN7x4byOro= -github.com/hashicorp/go-uuid v1.0.1/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/bN7x4byOro= -github.com/hashicorp/go.net v0.0.1/go.mod h1:hjKkEWcCURg++eb33jQU7oqQcI9XDCnUzHA0oac0k90= github.com/hashicorp/golang-lru v0.5.0/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8= github.com/hashicorp/golang-lru v0.5.1/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8= github.com/hashicorp/golang-lru v0.5.3/go.mod h1:iADmTwqILo4mZ8BN3D2Q6+9jd8WM5uGBxy+E8yxSoD4= -github.com/hashicorp/hcl v1.0.0 h1:0Anlzjpi4vEasTeNFn2mLJgTSwt0+6sfsiTG8qcWGx4= -github.com/hashicorp/hcl v1.0.0/go.mod h1:E5yfLk+7swimpb2L/Alb/PJmXilQ/rhwaUYs4T20WEQ= -github.com/hashicorp/logutils v1.0.0/go.mod h1:QIAnNjmIWmVIIkWDTG1z5v++HQmx9WQRO+LraFDTW64= -github.com/hashicorp/mdns v1.0.0/go.mod h1:tL+uN++7HEJ6SQLQ2/p+z2pH24WQKWjBPkE0mNTz8vQ= -github.com/hashicorp/memberlist v0.1.3/go.mod h1:ajVTdAv/9Im8oMAAj5G31PhhMCZJV2pPBoIllUwCN7I= -github.com/hashicorp/serf v0.8.2/go.mod h1:6hOLApaqBFA1NXqRQAsxw9QxuDEvNxSQRwA/JwenrHc= -github.com/inconshreveable/mousetrap v1.0.0 h1:Z8tu5sraLXCXIcARxBp/8cbvlwVa7Z1NHg9XEKhtSvM= -github.com/inconshreveable/mousetrap v1.0.0/go.mod h1:PxqpIevigyE2G7u3NXJIT2ANytuPF1OarO4DADm73n8= github.com/jarcoal/httpmock v1.2.0 h1:gSvTxxFR/MEMfsGrvRbdfpRUMBStovlSRLw0Ep1bwwc= github.com/jarcoal/httpmock v1.2.0/go.mod h1:oCoTsnAz4+UoOUIf5lJOWV2QQIW5UoeUI6aM2YnWAZk= github.com/jmespath/go-jmespath v0.0.0-20180206201540-c2b33e8439af/go.mod h1:Nht3zPeWKUH0NzdCt2Blrr5ys8VGpn0CEB0cQHVjt7k= -github.com/jonboulle/clockwork v0.1.0/go.mod h1:Ii8DK3G1RaLaWxj9trq07+26W01tbo22gdxWY5EU2bo= -github.com/json-iterator/go v1.1.6/go.mod h1:+SdeFBvtyEkXs7REEP0seUULqWtbJapLOCVDaaPEHmU= github.com/jstemmer/go-junit-report v0.0.0-20190106144839-af01ea7f8024/go.mod h1:6v2b51hI/fHJwM22ozAgKL4VKDeJcHhJFhtBdhmNjmU= -github.com/jtolds/gls v4.20.0+incompatible h1:xdiiI2gbIgH/gLH7ADydsJ1uDOEzR8yvV7C0MuV77Wo= -github.com/jtolds/gls v4.20.0+incompatible/go.mod h1:QJZ7F/aHp+rZTRtaJ1ow/lLfFfVYBRgL+9YlvaHOwJU= -github.com/juju/ansiterm v0.0.0-20180109212912-720a0952cc2a h1:FaWFmfWdAUKbSCtOU2QjDaorUexogfaMgbipgYATUMU= -github.com/juju/ansiterm v0.0.0-20180109212912-720a0952cc2a/go.mod h1:UJSiEoRfvx3hP73CvoARgeLjaIOjybY9vj8PUPPFGeU= -github.com/julienschmidt/httprouter v1.2.0/go.mod h1:SYymIcj16QtmaHHD7aYtjjsJG7VTCxuUUipMqKk8s4w= -github.com/kisielk/errcheck v1.1.0/go.mod h1:EZBBE59ingxPouuu3KfxchcWSUPOHkagtvWXihfKN4Q= github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck= -github.com/konsorten/go-windows-terminal-sequences v1.0.1/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= -github.com/kr/logfmt v0.0.0-20140226030751-b84e30acd515/go.mod h1:+0opPa2QZZtGFBFZlji/RkVcI2GknAs/DXo4wKdlNEc= github.com/kr/pretty v0.1.0 h1:L/CwN0zerZDmRFUapSPitk6f+Q3+0za1rQkzVuMiMFI= github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo= github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= github.com/kr/text v0.1.0 h1:45sCR5RtlFHMR4UwH9sdQ5TC8v0qDQCHnXt+kaKSTVE= github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI= -github.com/lithammer/dedent v1.1.0 h1:VNzHMVCBNG1j0fh3OrsFRkVUwStdDArbgBWoPAffktY= -github.com/lithammer/dedent v1.1.0/go.mod h1:jrXYCQtgg0nJiN+StA2KgR7w6CiQNv9Fd/Z9BP0jIOc= github.com/logrusorgru/aurora v2.0.3+incompatible h1:tOpm7WcpBTn4fjmVfgpQq0EfczGlG91VSDkswnjF5A8= github.com/logrusorgru/aurora v2.0.3+incompatible/go.mod h1:7rIyQOR62GCctdiQpZ/zOJlFyk6y+94wXzv6RNZgaR4= -github.com/lunixbochs/vtclean v0.0.0-20180621232353-2d01aacdc34a h1:weJVJJRzAJBFRlAiJQROKQs8oC9vOxvm4rZmBBk0ONw= -github.com/lunixbochs/vtclean v0.0.0-20180621232353-2d01aacdc34a/go.mod h1:pHhQNgMf3btfWnGBVipUOjRYhoOsdGqdm/+2c2E2WMI= -github.com/magiconair/properties v1.8.1 h1:ZC2Vc7/ZFkGmsVC9KvOjumD+G5lXy2RtTKyzRKO2BQ4= -github.com/magiconair/properties v1.8.1/go.mod h1:PppfXfuXeibc/6YijjN8zIbojt8czPbwD3XqdrwzmxQ= -github.com/manifoldco/promptui v0.8.0 h1:R95mMF+McvXZQ7j1g8ucVZE1gLP3Sv6j9vlF9kyRqQo= -github.com/manifoldco/promptui v0.8.0/go.mod h1:n4zTdgP0vr0S3w7/O/g98U+e0gwLScEXGwov2nIKuGQ= -github.com/mattn/go-colorable v0.0.9 h1:UVL0vNpWh04HeJXV0KLcaT7r06gOH2l4OW6ddYRUIY4= -github.com/mattn/go-colorable v0.0.9/go.mod h1:9vuHe8Xs5qXnSaW/c/ABM9alt+Vo+STaOChaDxuIBZU= -github.com/mattn/go-isatty v0.0.3/go.mod h1:M+lRXTBqGeGNdLjl/ufCoiOlB5xdOkqRJdNxMWT7Zi4= -github.com/mattn/go-isatty v0.0.4 h1:bnP0vzxcAdeI1zdubAl5PjU6zsERjGZb7raWodagDYs= -github.com/mattn/go-isatty v0.0.4/go.mod h1:M+lRXTBqGeGNdLjl/ufCoiOlB5xdOkqRJdNxMWT7Zi4= -github.com/matttproud/golang_protobuf_extensions v1.0.1/go.mod h1:D8He9yQNgCq6Z5Ld7szi9bcBfOoFv/3dc6xSMkL2PC0= github.com/maxatome/go-testdeep v1.11.0 h1:Tgh5efyCYyJFGUYiT0qxBSIDeXw0F5zSoatlou685kk= github.com/maxatome/go-testdeep v1.11.0/go.mod h1:011SgQ6efzZYAen6fDn4BqQ+lUR72ysdyKe7Dyogw70= -github.com/miekg/dns v1.0.14/go.mod h1:W1PPwlIAgtquWBMBEV9nkV9Cazfe8ScdGz/Lj7v3Nrg= -github.com/mitchellh/cli v1.0.0/go.mod h1:hNIlj7HEI86fIcpObd7a0FcrxTWetlwJDGcceTlRvqc= -github.com/mitchellh/go-homedir v1.0.0/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrkLzIz1N1q0pr0= -github.com/mitchellh/go-homedir v1.1.0/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrkLzIz1N1q0pr0= -github.com/mitchellh/go-testing-interface v1.0.0/go.mod h1:kRemZodwjscx+RGhAo8eIhFbs2+BFgRtFPeD/KE+zxI= github.com/mitchellh/go-testing-interface v1.14.1 h1:jrgshOhYAUVNMAJiKbEu7EqAwgJJ2JqpQmpLJOu07cU= github.com/mitchellh/go-testing-interface v1.14.1/go.mod h1:gfgS7OtZj6MA4U1UrDRp04twqAjfvlZyCfX3sDjEym8= -github.com/mitchellh/gox v0.4.0/go.mod h1:Sd9lOJ0+aimLBi73mGofS1ycjY8lL3uZM3JPS42BGNg= -github.com/mitchellh/iochan v1.0.0/go.mod h1:JwYml1nuB7xOzsp52dPpHFffvOCDupsG0QubkSMEySY= -github.com/mitchellh/mapstructure v0.0.0-20160808181253-ca63d7c062ee/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y= -github.com/mitchellh/mapstructure v1.1.2 h1:fmNYVwqnSfB9mZU6OS2O6GsXM+wcskZDuKQzvN1EDeE= -github.com/mitchellh/mapstructure v1.1.2/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y= -github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= -github.com/modern-go/reflect2 v1.0.1/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0= -github.com/mwitkow/go-conntrack v0.0.0-20161129095857-cc309e4a2223/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U= -github.com/oklog/ulid v1.3.1/go.mod h1:CirwcVhetQ6Lv90oh/F+FBtV6XMibvdAFo93nm5qn4U= -github.com/pascaldekloe/goe v0.0.0-20180627143212-57f6aae5913c/go.mod h1:lzWF7FIEvWOWxwDKqyGYQf6ZUaNfKdP144TG7ZOy1lc= -github.com/pelletier/go-toml v1.2.0 h1:T5zMGML61Wp+FlcbWjRDT7yAxhJNAiPPLOFECq181zc= -github.com/pelletier/go-toml v1.2.0/go.mod h1:5z9KED0ma1S8pY6P1sdut58dfprrGBbd/94hg7ilaic= -github.com/pkg/errors v0.8.0/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4= github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= -github.com/posener/complete v1.1.1/go.mod h1:em0nMJCgc9GFtwrmVmEMR/ZL6WyhyjMBndrE9hABlRI= -github.com/prometheus/client_golang v0.9.1/go.mod h1:7SWBe2y4D6OKWSNQJUaRYU/AaXPKyh/dDVn+NZz0KFw= -github.com/prometheus/client_golang v0.9.3/go.mod h1:/TN21ttK/J9q6uSwhBd54HahCDft0ttaMvbicHlPoso= -github.com/prometheus/client_model v0.0.0-20180712105110-5c3871d89910/go.mod h1:MbSGuTsp3dbXC40dX6PRTWyKYBIrTGTE9sqQNg2J8bo= -github.com/prometheus/client_model v0.0.0-20190129233127-fd36f4220a90/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= -github.com/prometheus/common v0.0.0-20181113130724-41aa239b4cce/go.mod h1:daVV7qP5qjZbuso7PdcryaAu0sAZbrN9i7WWcTMWvro= -github.com/prometheus/common v0.4.0/go.mod h1:TNfzLD0ON7rHzMJeJkieUDPYmFC7Snx/y86RQel1bk4= -github.com/prometheus/procfs v0.0.0-20181005140218-185b4288413d/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= -github.com/prometheus/procfs v0.0.0-20190507164030-5867b95ac084/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsTZCD3I8kEA= -github.com/prometheus/tsdb v0.7.1/go.mod h1:qhTCs0VvXwvX/y3TZrWD7rabWM+ijKTux40TwIPHuXU= -github.com/rogpeppe/fastuuid v0.0.0-20150106093220-6724a57986af/go.mod h1:XWv6SoW27p1b0cqNHllgS5HIMJraePCO15w5zCzIWYg= github.com/rogpeppe/go-internal v1.3.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4= -github.com/russross/blackfriday/v2 v2.0.1/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= -github.com/ryanuber/columnize v0.0.0-20160712163229-9b3edd62028f/go.mod h1:sm1tb6uqfes/u+d4ooFouqFdy9/2g9QGwK3SQygK0Ts= -github.com/sean-/seed v0.0.0-20170313163322-e2103e2c3529/go.mod h1:DxrIzT+xaE7yg65j358z/aeFdxmN0P9QXhEzd20vsDc= -github.com/shurcooL/sanitized_anchor_name v1.0.0/go.mod h1:1NzhyTcUVG4SuEtjjoZeVRXNmyL/1OwPU0+IJeTBvfc= -github.com/sirupsen/logrus v1.2.0/go.mod h1:LxeOpSwHxABJmUn/MG1IvRgCAasNZTLOkJPxbbu5VWo= -github.com/smartystreets/assertions v0.0.0-20180927180507-b2de0cb4f26d h1:zE9ykElWQ6/NYmHa3jpm/yHnI4xSofP+UP6SpjHcSeM= -github.com/smartystreets/assertions v0.0.0-20180927180507-b2de0cb4f26d/go.mod h1:OnSkiWE9lh6wB0YB77sQom3nweQdgAjqCqsofrRNTgc= -github.com/smartystreets/goconvey v1.6.4 h1:fv0U8FUIMPNf1L9lnHLvLhgicrIVChEkdzIKYqbNC9s= -github.com/smartystreets/goconvey v1.6.4/go.mod h1:syvi0/a8iFYH4r/RixwvyeAJjdLS9QV7WQ/tjFTllLA= -github.com/soheilhy/cmux v0.1.4/go.mod h1:IM3LyeVVIOuxMH7sFAkER9+bJ4dT7Ms6E4xg4kGIyLM= -github.com/spaolacci/murmur3 v0.0.0-20180118202830-f09979ecbc72/go.mod h1:JwIasOWyU6f++ZhiEuf87xNszmSA2myDM2Kzu9HwQUA= -github.com/spf13/afero v1.1.2 h1:m8/z1t7/fwjysjQRYbP0RD+bUIF/8tJwPdEZsI83ACI= -github.com/spf13/afero v1.1.2/go.mod h1:j4pytiNVoe2o6bmDsKpLACNPDBIoEAkihy7loJ1B0CQ= -github.com/spf13/cast v1.3.0 h1:oget//CVOEoFewqQxwr0Ej5yjygnqGkvggSE/gB35Q8= -github.com/spf13/cast v1.3.0/go.mod h1:Qx5cxh0v+4UWYiBimWS+eyWzqEqokIECu5etghLkUJE= -github.com/spf13/cobra v1.1.3 h1:xghbfqPkxzxP3C/f3n5DdpAbdKLj4ZE4BWQI362l53M= -github.com/spf13/cobra v1.1.3/go.mod h1:pGADOWyqRD/YMrPZigI/zbliZ2wVD/23d+is3pSWzOo= -github.com/spf13/jwalterweatherman v1.0.0 h1:XHEdyB+EcvlqZamSM4ZOMGlc93t6AcsBEu9Gc1vn7yk= -github.com/spf13/jwalterweatherman v1.0.0/go.mod h1:cQK4TGJAtQXfYWX+Ddv3mKDzgVb68N+wFjFa4jdeBTo= -github.com/spf13/pflag v1.0.3/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4= -github.com/spf13/pflag v1.0.5 h1:iy+VFUOCP1a+8yFto/drg2CJ5u0yRoB7fZw3DKv/JXA= -github.com/spf13/pflag v1.0.5/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= -github.com/spf13/viper v1.7.0 h1:xVKxvI7ouOI5I+U9s2eeiUfMaWBVoXA3AWskkrqK0VM= -github.com/spf13/viper v1.7.0/go.mod h1:8WkrPz2fc9jxqZNCJI/76HCieCp4Q8HaLFoCha5qpdg= -github.com/streamingfast/cli v0.0.4-0.20220630165922-bc58c6666fc8 h1:1W2VZY4jRTh7GJ6+PnydanRcr3Hj45SKDnb+kBQQwlc= -github.com/streamingfast/cli v0.0.4-0.20220630165922-bc58c6666fc8/go.mod h1:Lmirl0ABgXzidX33syiUG6lX64mJMK5pDNTBFuz8xZI= github.com/streamingfast/logging v0.0.0-20210811175431-f3b44b61606a h1:Hy7ST3+wGmk4nyBanXKzhRXE63E77UEF93oG51dfq6c= github.com/streamingfast/logging v0.0.0-20210811175431-f3b44b61606a/go.mod h1:4GdqELhZOXj4xwc4IaBmzofzdErGynnaSzuzxy0ZIBo= -github.com/streamingfast/logging v0.0.0-20221209193439-bff11742bf4c h1:dV1ye/S2PiW9uIWvLtMrxWoTLcZS+yhjZDSKEV102Ho= -github.com/streamingfast/logging v0.0.0-20221209193439-bff11742bf4c/go.mod h1:VlduQ80JcGJSargkRU4Sg9Xo63wZD/l8A5NC/Uo1/uU= github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= -github.com/stretchr/objx v0.1.1/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= -github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI= github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4= github.com/stretchr/testify v1.7.0 h1:nwc3DEeHmmLAfoZucVR881uASk0Mfjw8xYJ99tb5CcY= github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= -github.com/subosito/gotenv v1.2.0 h1:Slr1R9HxAlEKefgq5jn9U+DnETlIUa6HfgEzj0g5d7s= -github.com/subosito/gotenv v1.2.0/go.mod h1:N0PQaV/YGNqwC0u51sEeR/aUtSLEXKX9iv69rRypqCw= github.com/teris-io/shortid v0.0.0-20171029131806-771a37caa5cf h1:Z2X3Os7oRzpdJ75iPqWZc0HeJWFYNCvKsfpQwFpRNTA= github.com/teris-io/shortid v0.0.0-20171029131806-771a37caa5cf/go.mod h1:M8agBzgqHIhgj7wEn9/0hJUZcrvt9VY+Ln+S1I5Mha0= github.com/test-go/testify v1.1.4 h1:Tf9lntrKUMHiXQ07qBScBTSA0dhYQlu83hswqelv1iE= @@ -238,66 +78,46 @@ github.com/tidwall/match v1.1.1 h1:+Ho715JplO36QYgwN9PGYNhgZvoUSc9X2c80KVTi+GA= github.com/tidwall/match v1.1.1/go.mod h1:eRSPERbgtNPcGhD8UCthc6PmLEQXEWd3PRB5JTxsfmM= github.com/tidwall/pretty v1.2.0 h1:RWIZEg2iJ8/g6fDDYzMpobmaoGh5OLl4AXtGUGPcqCs= github.com/tidwall/pretty v1.2.0/go.mod h1:ITEVvHYasfjBbM0u2Pg8T2nJnzm8xPwvNhhsoaGGjNU= -github.com/tmc/grpc-websocket-proxy v0.0.0-20190109142713-0ad062ec5ee5/go.mod h1:ncp9v5uamzpCO7NfCPTXjqaC+bZgJeR0sMTm6dMHP7U= -github.com/xiang90/probing v0.0.0-20190116061207-43a291ad63a2/go.mod h1:UETIi67q53MR2AWcXfiuqkDkRtnGDLqkBTpCHuJHxtU= github.com/yuin/goldmark v1.3.5/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1Zlc8k= -go.etcd.io/bbolt v1.3.2/go.mod h1:IbVyRI1SCnLcuJnV2u8VeU0CEYM7e686BmAb1XKL+uU= go.opencensus.io v0.21.0/go.mod h1:mSImk1erAIZhrmZN+AvHh14ztQfjbGwt4TtuofqLduU= go.opencensus.io v0.22.0/go.mod h1:+kGneAE2xo2IficOXnaByMWTGM9T73dGwxeWcUqIpI8= go.opencensus.io v0.22.1 h1:8dP3SGL7MPB94crU3bEPplMPe83FI4EouesJUeFHv50= go.opencensus.io v0.22.1/go.mod h1:Ap50jQcDJrx6rB6VgeeFPtuPIf3wMRvRfrfYDO6+BmA= go.uber.org/atomic v1.4.0/go.mod h1:gD2HeocX3+yG+ygLZcrzQJaqmWj9AIm7n08wl/qW/PE= go.uber.org/atomic v1.5.0/go.mod h1:sABNBOSYdrvTF6hTgEIbc7YasKWGhgEQZyfxyTvoXHQ= -go.uber.org/atomic v1.6.0/go.mod h1:sABNBOSYdrvTF6hTgEIbc7YasKWGhgEQZyfxyTvoXHQ= go.uber.org/atomic v1.7.0 h1:ADUqmZGgLDDfbSL9ZmPxKTybcoEYHgpYfELNoN+7hsw= go.uber.org/atomic v1.7.0/go.mod h1:fEN4uk6kAWBTFdckzkM89CLk9XfWZrxpCo0nPH17wJc= go.uber.org/goleak v1.1.11 h1:wy28qYRKZgnJTxGxvye5/wgWr1EKjmUDGYox5mGlRlI= go.uber.org/goleak v1.1.11/go.mod h1:cwTWslyiVhfpKIDGSZEM2HlOvcqm+tG4zioyIeLoqMQ= go.uber.org/multierr v1.1.0/go.mod h1:wR5kodmAFQ0UK8QlbwjlSNy0Z68gJhDJUG5sjR94q/0= go.uber.org/multierr v1.3.0/go.mod h1:VgVr7evmIr6uPjLBxg28wmKNXyqE9akIJ5XnfpiKl+4= -go.uber.org/multierr v1.5.0/go.mod h1:FeouvMocqHpRaaGuG9EjoKcStLC43Zu/fmqdUMPcKYU= go.uber.org/multierr v1.6.0 h1:y6IPFStTAIT5Ytl7/XYmHvzXQ7S3g/IeZW9hyZ5thw4= go.uber.org/multierr v1.6.0/go.mod h1:cdWPpRnG4AhwMwsgIHip0KRBQjJy5kYEpYjJxpXp9iU= go.uber.org/tools v0.0.0-20190618225709-2cfd321de3ee/go.mod h1:vJERXedbb3MVM5f9Ejo0C68/HhF8uaILCdgjnY+goOA= go.uber.org/zap v1.10.0/go.mod h1:vwi/ZaCAaUcBkycHslxD9B2zi4UTXhF60s6SWpuDF0Q= go.uber.org/zap v1.14.0/go.mod h1:zwrFLgMcdUuIBviXEYEH1YKNaOBnKXsx2IPda5bBwHM= -go.uber.org/zap v1.16.0/go.mod h1:MA8QOfq0BHJwdXa996Y4dYkAqRKB8/1K1QMMZVaNZjQ= go.uber.org/zap v1.21.0 h1:WefMeulhovoZ2sYXz7st6K0sLj7bBhpiFaud4r4zST8= go.uber.org/zap v1.21.0/go.mod h1:wjWOCqI0f2ZZrJF/UufIOkiC8ii6tm1iqIsLo76RfJw= -golang.org/x/crypto v0.0.0-20180904163835-0709b304e793/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= -golang.org/x/crypto v0.0.0-20181029021203-45a5f77698d3/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= golang.org/x/crypto v0.0.0-20190510104115-cbcb75029529/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20190605123033-f99c8df09eb5/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= -golang.org/x/crypto v0.0.0-20210322153248-0c34fe9e7dc2/go.mod h1:T9bdIzuCu7OtxOm1hfPfRQxPLYneinmdGuTeoZ9dtd4= golang.org/x/crypto v0.0.0-20220214200702-86341886e292 h1:f+lwQ+GtmgoY+A2YaQxlSOnDjXcQ7ZRLWOHbC6HtRqE= golang.org/x/crypto v0.0.0-20220214200702-86341886e292/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= -golang.org/x/exp v0.0.0-20190306152737-a1d7652674e8/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20190510132918-efd6b22b2522/go.mod h1:ZjyILWgesfNpC6sMxTJOJm9Kp84zZh5NQWvqDGG3Qr8= -golang.org/x/exp v0.0.0-20190829153037-c13cbed26979/go.mod h1:86+5VVa7VpoJ4kLfm080zCjGlMRFzhUhsZKEZO7MGek= -golang.org/x/exp v0.0.0-20191030013958-a1ab85dbe136/go.mod h1:JXzH8nQsPlswgeRAPE3MuO9GYsAcnJvJ4vnMwN/5qkY= golang.org/x/image v0.0.0-20190227222117-0694c2d4d067/go.mod h1:kZ7UVZpmo3dzQBMxlp+ypCbDeSB+sBbTgSJuh5dn5js= -golang.org/x/image v0.0.0-20190802002840-cff245a6509b/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0= golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= golang.org/x/lint v0.0.0-20190227174305-5b3e6a55c961/go.mod h1:wehouNa3lNwaWXcvxsM5YxQ5yQlVC4a0KAMCusXpPoU= golang.org/x/lint v0.0.0-20190301231843-5614ed5bae6f/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= golang.org/x/lint v0.0.0-20190313153728-d0100b6bd8b3/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= golang.org/x/lint v0.0.0-20190409202823-959b441ac422/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= -golang.org/x/lint v0.0.0-20190909230951-414d861bb4ac/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= golang.org/x/lint v0.0.0-20190930215403-16217165b5de/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= golang.org/x/mobile v0.0.0-20190312151609-d3739f865fa6/go.mod h1:z+o9i4GpDbdi3rU15maQ/Ox0txvL9dWGYEHz965HBQE= -golang.org/x/mobile v0.0.0-20190719004257-d2bd2a29d028/go.mod h1:E/iHnbuqvinMTCcRqshq8CkpyQDoeVncDDYHnLhea+o= golang.org/x/mod v0.0.0-20190513183733-4bf6d317e70e/go.mod h1:mXi4GBBbnImb6dmsKGUJ2LatrhH/nqhxcFungHvyanc= -golang.org/x/mod v0.1.0/go.mod h1:0QHyrYULN0/3qlju5TqG8bIK38QM8yzMo5ekMj3DlcY= golang.org/x/mod v0.4.2/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= -golang.org/x/net v0.0.0-20181023162649-9b4f9f5ad519/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= -golang.org/x/net v0.0.0-20181114220301-adae6a3d119a/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= -golang.org/x/net v0.0.0-20181201002055-351d144fa1fc/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= -golang.org/x/net v0.0.0-20181220203305-927f97764cc3/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20190108225652-1e06a53dbb7e/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20190213061140-3a22650c66bd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20190311183353-d8887717615a/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= @@ -307,7 +127,6 @@ golang.org/x/net v0.0.0-20190503192946-f4e77d36d62c/go.mod h1:t9HGtf8HONx5eT2rtn golang.org/x/net v0.0.0-20190603091049-60506f45cf65/go.mod h1:HSz+uSET+XFnRR8LxR5pz3Of3rY3CfYBVs4xY44aLks= golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20190724013045-ca1201d0de80/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= golang.org/x/net v0.0.0-20210405180319-a5a99cb37ef4/go.mod h1:p54w0d4576C0XHj96bSt6lcn1PtDYWL6XObtHCRCNQM= golang.org/x/net v0.0.0-20211112202133-69e39bad7dc2/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= @@ -319,13 +138,7 @@ golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJ golang.org/x/sync v0.0.0-20190227155943-e225da77a7e6/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20210220032951-036812b2e83c/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sys v0.0.0-20180823144017-11551d06cbcc/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20180905080454-ebe1bf3edb33/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20181026203630-95b1ffbd15a5/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20181107165924-66b7b1311ac8/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20181116152217-5ac8a444bdc5/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20181122145206-62eef0e2fa9b/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190312061237-fead79001313/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= @@ -339,7 +152,6 @@ golang.org/x/sys v0.0.0-20210330210617-4fbd30eecc44/go.mod h1:h1NjWce9XRLGQEsW7w golang.org/x/sys v0.0.0-20210423082822-04245dca01da/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210510120138-977fb7262007/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20220412211240-33da011f77ad/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220627191245-f75cf1eec38b h1:2n253B2r0pYSmEV+UNCQoPfU/FiaizQEK5Gu4Bq4JE8= golang.org/x/sys v0.0.0-20220627191245-f75cf1eec38b/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1 h1:v+OssWQX+hTHEmOBgwxdZxK4zHq3yOs8F9J7mk0PY8E= @@ -348,30 +160,23 @@ golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.1-0.20180807135948-17ff2d5776d2/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= -golang.org/x/text v0.3.6 h1:aRYxNxv6iGQlyVaZmk6ZgYEDa+Jg18DxebPSrd6bg1M= golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/time v0.0.0-20181108054448-85acf8d2951c/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= -golang.org/x/tools v0.0.0-20180221164845-07fd8470d635/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20190114222345-bf090417da8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20190226205152-f727befe758c/go.mod h1:9Yl7xja0Znq3iFh3HoIrodX9oNMXvdceNzlUR8zjMvY= golang.org/x/tools v0.0.0-20190311212946-11955173bddd/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= golang.org/x/tools v0.0.0-20190312151545-0bb0c0a6e846/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= golang.org/x/tools v0.0.0-20190312170243-e65039ee4138/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= -golang.org/x/tools v0.0.0-20190328211700-ab21143f2384/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= golang.org/x/tools v0.0.0-20190425150028-36563e24a262/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= golang.org/x/tools v0.0.0-20190506145303-2d16b83fe98c/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= golang.org/x/tools v0.0.0-20190524140312-2c0ae7006135/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= golang.org/x/tools v0.0.0-20190606124116-d0a3d012864b/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= golang.org/x/tools v0.0.0-20190621195816-6e04913cbbac/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= golang.org/x/tools v0.0.0-20190628153133-6cdbf07be9d0/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= -golang.org/x/tools v0.0.0-20190816200558-6889da9d5479/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20190911174233-4f2ddba30aff/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20191012152004-8de300cfc20a/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20191029041327-9cc4af7d6b2c/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20191029190741-b9c20aec41a5/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20191112195655-aa38f8e97acc/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.1.5/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= @@ -379,9 +184,6 @@ golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8T golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= google.golang.org/api v0.4.0/go.mod h1:8k5glujaEP+g9n7WNsDg8QP6cUVNI86fCNMcbazEtwE= google.golang.org/api v0.7.0/go.mod h1:WtwebWUNSVBH/HAw79HIFXZNqEvBhG+Ra+ax0hx3E3M= -google.golang.org/api v0.8.0/go.mod h1:o4eAsZoiT+ibD93RtjEohWalFOjRDx6CVaqeizhEnKg= -google.golang.org/api v0.9.0/go.mod h1:o4eAsZoiT+ibD93RtjEohWalFOjRDx6CVaqeizhEnKg= -google.golang.org/api v0.13.0/go.mod h1:iLdEw5Ide6rF15KTC1Kkl0iskquN2gFfn9o9XIsbkAI= google.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM= google.golang.org/appengine v1.4.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= google.golang.org/appengine v1.5.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= @@ -393,25 +195,15 @@ google.golang.org/genproto v0.0.0-20190425155659-357c62f0e4bb/go.mod h1:VzzqZJRn google.golang.org/genproto v0.0.0-20190502173448-54afdca5d873/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= google.golang.org/genproto v0.0.0-20190716160619-c506a9f90610/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc= google.golang.org/genproto v0.0.0-20190801165951-fa694d86fc64/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc= -google.golang.org/genproto v0.0.0-20190819201941-24fa4b261c55/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc= -google.golang.org/genproto v0.0.0-20190911173649-1774047e7e51/go.mod h1:IbNlFCBrqXvoKpeg0TB2l7cyZUmoaFKYIwrEpbDKLA8= -google.golang.org/genproto v0.0.0-20191108220845-16a3f7862a1a/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= google.golang.org/grpc v1.20.1/go.mod h1:10oTOabMzJvdu6/UiuZezV6QK5dSlG84ov/aaiqXj38= google.golang.org/grpc v1.21.1/go.mod h1:oYelfM1adQP15Ek0mdvEgi9Df8B9CZIaU1084ijfRaM= google.golang.org/grpc v1.22.1/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg= -gopkg.in/alecthomas/kingpin.v2 v2.2.6/go.mod h1:FMv+mEhP44yOT+4EoQTLFTRgOQ1FBLkstjWtayDeSgw= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127 h1:qIbj1fsPNlZgppZ+VLlY7N33q108Sa+fhmuc+sWQYwY= gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/errgo.v2 v2.1.0/go.mod h1:hNsd1EY+bozCKY1Ytp96fpM3vjJbqLJn88ws8XvfDNI= -gopkg.in/ini.v1 v1.51.0 h1:AQvPpx3LzTDM0AjnIRlVFwFFGC+npRopjZxLJj6gdno= -gopkg.in/ini.v1 v1.51.0/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k= -gopkg.in/resty.v1 v1.12.0/go.mod h1:mDo4pnntr5jdWRML875a/NmxYqAlA73dVijT2AXvQQo= -gopkg.in/yaml.v2 v2.0.0-20170812160011-eb3733d160e7/go.mod h1:JAlM8MvJe8wmxCU4Bli9HhUf9+ttbYbLASfIpnQbh74= -gopkg.in/yaml.v2 v2.2.1/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= -gopkg.in/yaml.v2 v2.2.4/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.2.8/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.4.0 h1:D8xgwECY7CYvx+Y2n4sBz93Jn9JRvxdiyyo8CTfuKaY= gopkg.in/yaml.v2 v2.4.0/go.mod h1:RDklbk79AGWmwhnvt/jBztapEOGDOx6ZbXqjP6csGnQ= From ac1d9097f48bd61362c7c6b69c1ed0bd4468029e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Frederik=20Sch=C3=B6ll?= Date: Tue, 28 Mar 2023 11:34:33 +0200 Subject: [PATCH 37/41] allow '0 ' to be parsed as asset --- types.go | 19 +++++++++++++++++-- 1 file changed, 17 insertions(+), 2 deletions(-) diff --git a/types.go b/types.go index 2478fd97..f267decb 100644 --- a/types.go +++ b/types.go @@ -371,6 +371,10 @@ func (s Symbol) String() string { return fmt.Sprintf("%d,%s", s.Precision, s.Symbol) } +func (s Symbol) IsZero() bool { + return s.Symbol == "" && s.Precision == 0 && s.symbolCode == 0 +} + func (s *Symbol) UnmarshalJSON(data []byte) error { var str string err := json.Unmarshal(data, &str) @@ -465,11 +469,12 @@ func NewAsset(in string) (out Asset, err error) { return NewAssetFromString(in) } -// NewAssetFromString reads a string an decode it to an eos.Asset -// structure if possible. The input must contains an amount and +// NewAssetFromString reads a string and decodes it to an eos.Asset +// structure if possible. The input must contain an amount and // a symbol. The precision is inferred based on the actual number // of decimals present. func NewAssetFromString(in string) (out Asset, err error) { + out, err = newAssetFromString(in) if err != nil { return out, err @@ -527,6 +532,12 @@ func NewFixedSymbolAssetFromString(symbol Symbol, input string) (out Asset, err } func newAssetFromString(in string) (out Asset, err error) { + + // special case for "0 " which is a valid representation of an empty Asset + if in == "0 " { + return Asset{}, nil + } + integralPart, decimalPart, symbolPart, err := splitAsset(in) if err != nil { return out, err @@ -592,6 +603,10 @@ func splitAssetAmount(input string) (integralPart, decimalPart string, err error return } +func (a *Asset) IsZero() bool { + return a.Amount == 0 && a.Symbol.IsZero() +} + func (a *Asset) UnmarshalJSON(data []byte) error { var s string err := json.Unmarshal(data, &s) From b58e29c1532ee33b0d351947fc8f052473a9a361 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Frederik=20Sch=C3=B6ll?= Date: Tue, 28 Mar 2023 13:16:22 +0200 Subject: [PATCH 38/41] add test cases --- init_test.go | 5 ----- types.go | 6 +++--- types_test.go | 2 ++ 3 files changed, 5 insertions(+), 8 deletions(-) diff --git a/init_test.go b/init_test.go index 13d9e6e4..484a8966 100644 --- a/init_test.go +++ b/init_test.go @@ -1,9 +1,4 @@ package eos -import ( - "github.com/streamingfast/logging" -) - func init() { - logging.InstantiateLoggers() } diff --git a/types.go b/types.go index f267decb..ffae0775 100644 --- a/types.go +++ b/types.go @@ -480,7 +480,7 @@ func NewAssetFromString(in string) (out Asset, err error) { return out, err } - if out.Symbol.Symbol == "" { + if out.Symbol.Symbol == "" && !out.IsZero() { return out, fmt.Errorf("invalid format %q, expected an amount and a currency symbol", in) } @@ -533,8 +533,8 @@ func NewFixedSymbolAssetFromString(symbol Symbol, input string) (out Asset, err func newAssetFromString(in string) (out Asset, err error) { - // special case for "0 " which is a valid representation of an empty Asset - if in == "0 " { + // special case for "0" which is a valid representation of an empty Asset + if strings.TrimSpace(in) == "0" { return Asset{}, nil } diff --git a/types_test.go b/types_test.go index 8bcdbbcd..bf7b5363 100644 --- a/types_test.go +++ b/types_test.go @@ -654,6 +654,8 @@ func TestNewAssetFromString(t *testing.T) { {"1.0001 TEST", 10001, 4, "TEST", nil}, {"0.1 TEST", 1, 1, "TEST", nil}, {".1 TEST", 1, 1, "TEST", nil}, + {"0", 0, 0, "", nil}, + {"0 ", 0, 0, "", nil}, {"", 0, 0, "", errors.New("input cannot be empty")}, {".00.001", 0, 0, "", errors.New(`invalid asset amount ".00.001", expected amount to have at most a single dot`)}, From 127c97b937ab48439c44364ff6cfa8edef0e6461 Mon Sep 17 00:00:00 2001 From: janos-ultra <116555209+janos-ultra@users.noreply.github.com> Date: Wed, 5 Jul 2023 10:28:25 +0200 Subject: [PATCH 39/41] Merge pull request #7 from ultraio/feature/BLOCK-1421-investigate-preprod-dfuse-ultra.test-account-does-not-show-in-explorer Feature/block 1421 investigate preprod dfuse ultra.test account does not show in explorer --- types.go | 3 +++ 1 file changed, 3 insertions(+) diff --git a/types.go b/types.go index c788952f..35a70c38 100644 --- a/types.go +++ b/types.go @@ -97,6 +97,9 @@ type VoterInfo struct { type RefundRequest struct { Owner AccountName `json:"owner"` RequestTime JSONTime `json:"request_time"` // {"name":"request_time", "type":"time_point_sec"}, + // ultra-keisuke-kanao --- BLOCK-1421 investigate preprod dfuse ultra.test account doesn't show in explorer + // Note that removing NetAmount and CPUAmount would require additional updates on github.com/eoscanada/eosc package. + PowerAmount Asset `json:"power_amount"` NetAmount Asset `json:"net_amount"` CPUAmount Asset `json:"cpu_amount"` } From 7ab11fa47e4f26604be165cd26ca0f79b3edd769 Mon Sep 17 00:00:00 2001 From: Duncan Dam <59436522+Duncan-Ultra@users.noreply.github.com> Date: Fri, 21 Jul 2023 16:22:10 +0700 Subject: [PATCH 40/41] [UOD-1228] add support for native serialization (#9) --- abidecoder.go | 31 ++++++++++--- abidecoder_test.go | 5 +++ types.go | 48 ++++++++++++-------- types_test.go | 109 +++++++++++++++++++++++++++++++++++++++++++++ 4 files changed, 169 insertions(+), 24 deletions(-) diff --git a/abidecoder.go b/abidecoder.go index 1ec87ad5..e59b559a 100644 --- a/abidecoder.go +++ b/abidecoder.go @@ -12,6 +12,8 @@ import ( "go.uber.org/zap" ) +var NativeType = false + func (a *ABI) DecodeAction(data []byte, actionName ActionName) ([]byte, error) { binaryDecoder := NewDecoder(data) @@ -59,14 +61,18 @@ func (a *ABI) DecodeTableRow(tableName TableName, data []byte) ([]byte, error) { } func (a *ABI) DecodeTableRowTyped(tableType string, data []byte) ([]byte, error) { - binaryDecoder := NewDecoder(data) - builtStruct, err := a.decode(binaryDecoder, tableType) + builtStruct, err := a.DecodeTableRowTypedNative(tableType, data) if err != nil { return nil, err } return json.Marshal(builtStruct) } +func (a *ABI) DecodeTableRowTypedNative(tableType string, data []byte) (map[string]interface{}, error) { + binaryDecoder := NewDecoder(data) + return a.decode(binaryDecoder, tableType) +} + func (a *ABI) Decode(binaryDecoder *Decoder, structName string) ([]byte, error) { builtStruct, err := a.decode(binaryDecoder, structName) if err != nil { @@ -351,20 +357,33 @@ func (a *ABI) read(binaryDecoder *Decoder, fieldType string) (interface{}, error case "time_point": timePoint, e := binaryDecoder.ReadTimePoint() //todo double check if e == nil { - value = formatTimePoint(timePoint, a.fitNodeos) + if NativeType { + value = time.Unix(0, int64(timePoint*1000)).UTC() + } else { + value = formatTimePoint(timePoint, a.fitNodeos) + } } err = e case "time_point_sec": timePointSec, e := binaryDecoder.ReadTimePointSec() if e == nil { - t := time.Unix(int64(timePointSec), 0) - value = t.UTC().Format("2006-01-02T15:04:05") + t := time.Unix(int64(timePointSec), 0).UTC() + if NativeType { + value = t + } else { + value = t.UTC().Format("2006-01-02T15:04:05") + } } err = e case "block_timestamp_type": value, err = binaryDecoder.ReadBlockTimestamp() if err == nil { - value = value.(BlockTimestamp).Time.UTC().Format("2006-01-02T15:04:05") + t := value.(BlockTimestamp).Time.UTC() + if NativeType { + value = t + } else { + value = t.Format("2006-01-02T15:04:05") + } } case "name": value, err = binaryDecoder.ReadName() diff --git a/abidecoder_test.go b/abidecoder_test.go index 26eb8146..cb67fb74 100644 --- a/abidecoder_test.go +++ b/abidecoder_test.go @@ -1352,6 +1352,11 @@ func TestABIDecoder_analyseFieldType(t *testing.T) { {"field.type.1[]?$", "field.type.1", true, true, true}, {"field.type.1[]$", "field.type.1", false, true, true}, {"field.type.1[]?", "field.type.1", true, true, false}, + {"field.type.2[]?", "field.type.2", true, true, false}, + {"field.type.1?$", "field.type.1", true, false, true}, + {"field.type.1[]$", "field.type.1", false, true, true}, + {"field.type.3[]?$", "field.type.3", true, true, true}, + {"uint32?$", "uint32", true, false, true}, } for i, test := range testCases { diff --git a/types.go b/types.go index 35a70c38..5c3413ef 100644 --- a/types.go +++ b/types.go @@ -22,6 +22,8 @@ import ( var symbolRegex = regexp.MustCompile("^[0-9]{1,2},[A-Z]{1,7}$") var symbolCodeRegex = regexp.MustCompile("^[A-Z]{1,7}$") +var LegacyJSON4Asset = true + // For reference: // https://github.com/mithrilcoin-io/EosCommander/blob/master/app/src/main/java/io/mithrilcoin/eoscommander/data/remote/model/types/EosByteWriter.java @@ -62,23 +64,23 @@ type AccountResourceLimit struct { } type DelegatedBandwidth struct { - From AccountName `json:"from"` - To AccountName `json:"to"` -//ultra-andrey-bezrukov --- BLOCK-80 Integrate ultra power into dfuse and remove rex related tables -//NetWeight and CPUWeight are left inplace (moved to bottom) in order to avoid unimportant changes in eosc and bringing in a new repo - PowerWeight Asset `json:"power_weight"` - NetWeight Asset `json:"net_weight"` - CPUWeight Asset `json:"cpu_weight"` + From AccountName `json:"from"` + To AccountName `json:"to"` + //ultra-andrey-bezrukov --- BLOCK-80 Integrate ultra power into dfuse and remove rex related tables + //NetWeight and CPUWeight are left inplace (moved to bottom) in order to avoid unimportant changes in eosc and bringing in a new repo + PowerWeight Asset `json:"power_weight"` + NetWeight Asset `json:"net_weight"` + CPUWeight Asset `json:"cpu_weight"` } type TotalResources struct { - Owner AccountName `json:"owner"` -//ultra-andrey-bezrukov --- BLOCK-80 Integrate ultra power into dfuse and remove rex related tables -//NetWeight and CPUWeight are left inplace (moved to bottom) in order to avoid unimportant changes in eosc and bringing in a new repo - PowerWeight Asset `json:"power_weight"` - RAMBytes Int64 `json:"ram_bytes"` - NetWeight Asset `json:"net_weight"` - CPUWeight Asset `json:"cpu_weight"` + Owner AccountName `json:"owner"` + //ultra-andrey-bezrukov --- BLOCK-80 Integrate ultra power into dfuse and remove rex related tables + //NetWeight and CPUWeight are left inplace (moved to bottom) in order to avoid unimportant changes in eosc and bringing in a new repo + PowerWeight Asset `json:"power_weight"` + RAMBytes Int64 `json:"ram_bytes"` + NetWeight Asset `json:"net_weight"` + CPUWeight Asset `json:"cpu_weight"` } type VoterInfo struct { @@ -99,9 +101,9 @@ type RefundRequest struct { RequestTime JSONTime `json:"request_time"` // {"name":"request_time", "type":"time_point_sec"}, // ultra-keisuke-kanao --- BLOCK-1421 investigate preprod dfuse ultra.test account doesn't show in explorer // Note that removing NetAmount and CPUAmount would require additional updates on github.com/eoscanada/eosc package. - PowerAmount Asset `json:"power_amount"` - NetAmount Asset `json:"net_amount"` - CPUAmount Asset `json:"cpu_amount"` + PowerAmount Asset `json:"power_amount"` + NetAmount Asset `json:"net_amount"` + CPUAmount Asset `json:"cpu_amount"` } type CompressionType uint8 @@ -634,7 +636,17 @@ func (a *Asset) UnmarshalJSON(data []byte) error { } func (a Asset) MarshalJSON() (data []byte, err error) { - return json.Marshal(a.String()) + if LegacyJSON4Asset { + return json.Marshal(a.String()) + } else { + ratAmount := big.NewRat(int64(a.Amount), int64(math.Pow10(int(a.Symbol.Precision)))) + amount, _ := ratAmount.Float64() + return json.Marshal(map[string]interface{}{ + "amount": amount, + "symbol": a.Symbol.Symbol, + "precision": a.Symbol.Precision, + }) + } } // RexInfo was added since EOSIO/Leap v2.0 diff --git a/types_test.go b/types_test.go index bf7b5363..6970b843 100644 --- a/types_test.go +++ b/types_test.go @@ -389,6 +389,115 @@ func TestAssetToString(t *testing.T) { } } +func TestLegacyAssetToJSON(t *testing.T) { + LegacyJSON4Asset = true + tests := []struct { + in Asset + out string + }{ + // Haven't seen such a thing yet though.. + { + Asset{6000000, Symbol{Precision: 4, Symbol: "EOS"}}, + "\"600.0000 EOS\"", + }, + { + Asset{-6000000, Symbol{Precision: 4, Symbol: "EOS"}}, + "\"-600.0000 EOS\"", + }, + { + Asset{10, Symbol{Precision: 5, Symbol: "SYS"}}, + "\"0.00010 SYS\"", + }, + { + Asset{-10, Symbol{Precision: 5, Symbol: "SYS"}}, + "\"-0.00010 SYS\"", + }, + { + Asset{6000, Symbol{Precision: 0, Symbol: "MAMA"}}, + "\"6000 MAMA\"", + }, + { + Asset{-6000, Symbol{Precision: 0, Symbol: "MAMA"}}, + "\"-6000 MAMA\"", + }, + { + Asset{0, Symbol{Precision: 255, Symbol: "EOS"}}, + "\"0.000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 EOS\"", + }, + } + + for _, test := range tests { + bytes, err := test.in.MarshalJSON() + if err != nil { + t.Error("MarshalJSON() error: %w", err) + } + assert.Equal(t, test.out, string(bytes)) + } +} + +func TestAssetToJSON(t *testing.T) { + LegacyJSON4Asset = false + tests := []struct { + in Asset + out string + }{ + // Haven't seen such a thing yet though.. + { + Asset{6000000, Symbol{Precision: 4, Symbol: "EOS"}}, + assertJson(t, 600, "EOS", 4), + }, + { + Asset{-6000000, Symbol{Precision: 4, Symbol: "EOS"}}, + assertJson(t, -600, "EOS", 4), + }, + { + Asset{10, Symbol{Precision: 5, Symbol: "SYS"}}, + assertJson(t, 0.0001, "SYS", 5), + // "\"0.00010 SYS\"", + }, + { + Asset{-10, Symbol{Precision: 5, Symbol: "SYS"}}, + assertJson(t, -0.0001, "SYS", 5), + // "\"-0.00010 SYS\"", + }, + { + Asset{6000, Symbol{Precision: 0, Symbol: "MAMA"}}, + assertJson(t, 6000, "MAMA", 0), + // "\"6000 MAMA\"", + }, + { + Asset{-6000, Symbol{Precision: 0, Symbol: "MAMA"}}, + assertJson(t, -6000, "MAMA", 0), + // "\"-6000 MAMA\"", + }, + { + Asset{0, Symbol{Precision: 255, Symbol: "EOS"}}, + assertJson(t, 0, "EOS", 255), + }, + } + + for _, test := range tests { + bytes, err := test.in.MarshalJSON() + if err != nil { + t.Error("MarshalJSON() error: %w", err) + } + assert.Equal(t, test.out, string(bytes)) + } +} + +func assertJson(t testing.TB, amount float64, symbol string, precision uint8) string { + t.Helper() + data, err := json.Marshal(map[string]interface{}{ + "amount": amount, + "symbol": symbol, + "precision": precision, + }) + if err != nil { + t.Fatal("json.Marshal error: %w", err) + } + return string(data) +} + func TestSimplePacking(t *testing.T) { type S struct { P string From 24eab71ff7f3aa7e1e5b0baecfe96ff6114ae57c Mon Sep 17 00:00:00 2001 From: Duncan Dam Date: Mon, 15 Jan 2024 13:24:54 +0700 Subject: [PATCH 41/41] revert user group changes --- abidecoder.go | 70 ++------------------------------------------------- 1 file changed, 2 insertions(+), 68 deletions(-) diff --git a/abidecoder.go b/abidecoder.go index 0e6ffe54..fad15dc4 100644 --- a/abidecoder.go +++ b/abidecoder.go @@ -8,7 +8,7 @@ import ( "strconv" "strings" "time" - // "reflect" + "go.uber.org/zap" ) @@ -45,10 +45,6 @@ func (a *ABI) DecodeActionResult(data []byte, actionName ActionName) ([]byte, er return json.Marshal(res) } -/*ultra-Adam---BLOCK-1831 make user group integration user-friendly ---start/end*/ -const OR uint64 = 0X1000_0000_0000_0000 // 0: AND, 1: OR -const NEGATION uint64 = 0X2000_0000_0000_0000 // 0: no negation, 1: Negation - func (a *ABI) DecodeTableRow(tableName TableName, data []byte) ([]byte, error) { binaryDecoder := NewDecoder(data) tbl := a.TableForName(tableName) @@ -71,8 +67,6 @@ func (a *ABI) DecodeTableRowTyped(tableType string, data []byte) ([]byte, error) return nil, err } - - return json.Marshal(builtStruct) } @@ -81,11 +75,6 @@ func (a *ABI) DecodeTableRowTypedNative(tableType string, data []byte) (map[stri return a.decode(binaryDecoder, tableType) } -func (a *ABI) DecodeTableRowTypedNative(tableType string, data []byte) (map[string]interface{}, error) { - binaryDecoder := NewDecoder(data) - return a.decode(binaryDecoder, tableType) -} - func (a *ABI) Decode(binaryDecoder *Decoder, structName string) ([]byte, error) { builtStruct, err := a.decode(binaryDecoder, structName) if err != nil { @@ -130,62 +119,7 @@ func (a *ABI) decode(binaryDecoder *Decoder, structName string) (map[string]inte } } - finalStruct, err := a.decodeFields(binaryDecoder, structure.Fields, builtStruct) - - // only handle the group_restriction field from the token factory purchase table - if structName == "token_factory_purchase_v0" { - zlog.Info("purchase option table : ", zap.Any("value: ", finalStruct), zap.Any("type: ", structure), zap.Any("struct name: ", structName) ) - - /*ultra-Adam---BLOCK-1831 make user group integration user-friendly ---start/end*/ - groupRestrictionValue, exists := finalStruct["group_restriction"] - zlog.Info("group_restriction value and type: ", zap.Any("value: ", groupRestrictionValue)) - if exists { - // todo: check tmr, why the cast failed? - groupRestrictionSlice, isSlice := groupRestrictionValue.([]interface{}); - if !isSlice { - zlog.Info("group_restriction is not slice") - } - - if isSlice && len(groupRestrictionSlice) > 0 { - groupRestrictionStr := "" - for i,item := range groupRestrictionSlice{ - vtype := fmt.Sprintf("%T", item) - zlog.Info("var type: ", zap.Any("vtype: ", vtype) ) - - // First, assert to eos.Int64 - uint64Val, ok := item.(Uint64) - if !ok { - zlog.Info("Failed to assert to Int64 type") - return nil, fmt.Errorf("Failed to assert to Int64 type") - } - - v := uint64(uint64Val) - - if (v&OR) == OR { // OR - if i != 0 { // Ignore first OR - groupRestrictionStr += "|" - } - } else { // AND - if i != 0 { // Ignore first AND - groupRestrictionStr += "&" - } - } - - if (v & NEGATION) == NEGATION { // NEGATION - groupRestrictionStr += "~" - } - - // Extract group ID - groupID := v & ^(NEGATION + OR) - groupRestrictionStr += strconv.FormatUint(groupID, 10) - } - builtStruct["group_restriction"] = groupRestrictionStr; - } - } - /*ultra-Adam---BLOCK-1831 make user group integration user-friendly ---end*/ - } - - return finalStruct,err + return a.decodeFields(binaryDecoder, structure.Fields, builtStruct) } func (a *ABI) decodeFields(binaryDecoder *Decoder, fields []FieldDef, builtStruct map[string]interface{}) (out map[string]interface{}, err error) {