@blinklabs/dingo 0.7.0 → 0.8.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.dingo/blob/000001.sst +0 -0
- package/.dingo/blob/000001.vlog +0 -0
- package/.dingo/blob/DISCARD +0 -0
- package/.dingo/blob/KEYREGISTRY +2 -0
- package/.dingo/blob/MANIFEST +0 -0
- package/.dingo/metadata.sqlite +0 -0
- package/.github/workflows/golangci-lint.yml +1 -1
- package/.github/workflows/publish.yml +1 -7
- package/README.md +2 -1
- package/{bin/dingo → dingo} +0 -0
- package/dingo.yaml.example +53 -0
- package/package.json +2 -2
- package/Dockerfile +0 -25
- package/Makefile +0 -53
- package/blockfetch.go +0 -144
- package/chain/chain.go +0 -504
- package/chain/chain_test.go +0 -468
- package/chain/errors.go +0 -80
- package/chain/event.go +0 -33
- package/chain/iter.go +0 -64
- package/chainsync/chainsync.go +0 -97
- package/chainsync.go +0 -223
- package/cmd/dingo/load.go +0 -52
- package/cmd/dingo/main.go +0 -118
- package/cmd/dingo/serve.go +0 -49
- package/config/cardano/node.go +0 -192
- package/config/cardano/node_test.go +0 -85
- package/config/cardano/preview/README.md +0 -4
- package/config/cardano/preview/alonzo-genesis.json +0 -196
- package/config/cardano/preview/byron-genesis.json +0 -117
- package/config/cardano/preview/config.json +0 -114
- package/config/cardano/preview/conway-genesis.json +0 -297
- package/config/cardano/preview/shelley-genesis.json +0 -68
- package/config.go +0 -245
- package/connmanager/connection_manager.go +0 -105
- package/connmanager/connection_manager_test.go +0 -185
- package/connmanager/event.go +0 -37
- package/connmanager/listener.go +0 -140
- package/connmanager/outbound.go +0 -93
- package/connmanager/socket.go +0 -55
- package/connmanager/unix.go +0 -78
- package/custom-p2p-topology.json +0 -24
- package/custom-p2p-topology.json.backup +0 -24
- package/custom-p2p-topology.json.mainnet +0 -37
- package/database/account.go +0 -180
- package/database/block.go +0 -362
- package/database/certs.go +0 -53
- package/database/commit_timestamp.go +0 -77
- package/database/database.go +0 -118
- package/database/database_test.go +0 -62
- package/database/drep.go +0 -47
- package/database/epoch.go +0 -121
- package/database/immutable/chunk.go +0 -182
- package/database/immutable/immutable.go +0 -350
- package/database/immutable/immutable_test.go +0 -59
- package/database/immutable/primary.go +0 -106
- package/database/immutable/secondary.go +0 -103
- package/database/immutable/testdata/08893.chunk +0 -0
- package/database/immutable/testdata/08893.primary +0 -0
- package/database/immutable/testdata/08893.secondary +0 -0
- package/database/immutable/testdata/08894.chunk +0 -0
- package/database/immutable/testdata/08894.primary +0 -0
- package/database/immutable/testdata/08894.secondary +0 -0
- package/database/immutable/testdata/README.md +0 -4
- package/database/plugin/blob/badger/commit_timestamp.go +0 -50
- package/database/plugin/blob/badger/database.go +0 -152
- package/database/plugin/blob/badger/logger.go +0 -63
- package/database/plugin/blob/badger/metrics.go +0 -98
- package/database/plugin/blob/blob.go +0 -19
- package/database/plugin/blob/store.go +0 -40
- package/database/plugin/log.go +0 -27
- package/database/plugin/metadata/metadata.go +0 -19
- package/database/plugin/metadata/sqlite/account.go +0 -313
- package/database/plugin/metadata/sqlite/certs.go +0 -58
- package/database/plugin/metadata/sqlite/commit_timestamp.go +0 -68
- package/database/plugin/metadata/sqlite/database.go +0 -218
- package/database/plugin/metadata/sqlite/drep.go +0 -140
- package/database/plugin/metadata/sqlite/epoch.go +0 -120
- package/database/plugin/metadata/sqlite/models/account.go +0 -118
- package/database/plugin/metadata/sqlite/models/auth_committee_hot.go +0 -26
- package/database/plugin/metadata/sqlite/models/drep.go +0 -52
- package/database/plugin/metadata/sqlite/models/epoch.go +0 -31
- package/database/plugin/metadata/sqlite/models/models.go +0 -46
- package/database/plugin/metadata/sqlite/models/pool.go +0 -97
- package/database/plugin/metadata/sqlite/models/pparam_update.go +0 -27
- package/database/plugin/metadata/sqlite/models/pparams.go +0 -27
- package/database/plugin/metadata/sqlite/models/resign_committee_cold.go +0 -27
- package/database/plugin/metadata/sqlite/models/stake_vote_delegation.go +0 -27
- package/database/plugin/metadata/sqlite/models/tip.go +0 -26
- package/database/plugin/metadata/sqlite/models/update_drep.go +0 -27
- package/database/plugin/metadata/sqlite/models/utxo.go +0 -30
- package/database/plugin/metadata/sqlite/models/vote_delegation.go +0 -26
- package/database/plugin/metadata/sqlite/models/vote_registration_delegation.go +0 -15
- package/database/plugin/metadata/sqlite/pool.go +0 -240
- package/database/plugin/metadata/sqlite/pparams.go +0 -110
- package/database/plugin/metadata/sqlite/tip.go +0 -83
- package/database/plugin/metadata/sqlite/utxo.go +0 -292
- package/database/plugin/metadata/store.go +0 -198
- package/database/plugin/option.go +0 -190
- package/database/plugin/plugin.go +0 -20
- package/database/plugin/register.go +0 -118
- package/database/pparams.go +0 -145
- package/database/tip.go +0 -45
- package/database/txn.go +0 -147
- package/database/types/types.go +0 -74
- package/database/types/types_test.go +0 -83
- package/database/utxo.go +0 -263
- package/dist/artifacts.json +0 -1
- package/dist/checksums.txt +0 -22
- package/dist/config.yaml +0 -253
- package/dist/dingo-0.5.0-SNAPSHOT-d9431e4.tar.gz +0 -0
- package/dist/dingo-0.5.0-SNAPSHOT-d9431e4.tar.gz.sbom.json +0 -1
- package/dist/dingo_0.5.0-SNAPSHOT-d9431e4_darwin_arm64.tar.gz +0 -0
- package/dist/dingo_0.5.0-SNAPSHOT-d9431e4_darwin_arm64.tar.gz.sbom.json +0 -1
- package/dist/dingo_0.5.0-SNAPSHOT-d9431e4_darwin_x86_64.tar.gz +0 -0
- package/dist/dingo_0.5.0-SNAPSHOT-d9431e4_darwin_x86_64.tar.gz.sbom.json +0 -1
- package/dist/dingo_0.5.0-SNAPSHOT-d9431e4_linux_amd64.apk +0 -0
- package/dist/dingo_0.5.0-SNAPSHOT-d9431e4_linux_amd64.apk.sbom.json +0 -1
- package/dist/dingo_0.5.0-SNAPSHOT-d9431e4_linux_amd64.deb +0 -0
- package/dist/dingo_0.5.0-SNAPSHOT-d9431e4_linux_amd64.deb.sbom.json +0 -1
- package/dist/dingo_0.5.0-SNAPSHOT-d9431e4_linux_amd64.rpm +0 -0
- package/dist/dingo_0.5.0-SNAPSHOT-d9431e4_linux_amd64.rpm.sbom.json +0 -1
- package/dist/dingo_0.5.0-SNAPSHOT-d9431e4_linux_arm64.apk +0 -0
- package/dist/dingo_0.5.0-SNAPSHOT-d9431e4_linux_arm64.apk.sbom.json +0 -1
- package/dist/dingo_0.5.0-SNAPSHOT-d9431e4_linux_arm64.deb +0 -0
- package/dist/dingo_0.5.0-SNAPSHOT-d9431e4_linux_arm64.deb.sbom.json +0 -1
- package/dist/dingo_0.5.0-SNAPSHOT-d9431e4_linux_arm64.rpm +0 -0
- package/dist/dingo_0.5.0-SNAPSHOT-d9431e4_linux_arm64.rpm.sbom.json +0 -1
- package/dist/dingo_0.5.0-SNAPSHOT-d9431e4_linux_arm64.tar.gz +0 -0
- package/dist/dingo_0.5.0-SNAPSHOT-d9431e4_linux_arm64.tar.gz.sbom.json +0 -1
- package/dist/dingo_0.5.0-SNAPSHOT-d9431e4_linux_x86_64.tar.gz +0 -0
- package/dist/dingo_0.5.0-SNAPSHOT-d9431e4_linux_x86_64.tar.gz.sbom.json +0 -1
- package/dist/dingo_darwin_amd64_v1/dingo +0 -0
- package/dist/dingo_darwin_arm64_v8.0/dingo +0 -0
- package/dist/dingo_linux_amd64_v1/dingo +0 -0
- package/dist/dingo_linux_arm64_v8.0/dingo +0 -0
- package/dist/homebrew/dingo.rb +0 -51
- package/dist/metadata.json +0 -1
- package/event/event.go +0 -141
- package/event/event_test.go +0 -115
- package/event/metrics.go +0 -44
- package/go.mod +0 -98
- package/go.sum +0 -358
- package/internal/config/config.go +0 -145
- package/internal/config/config_test.go +0 -118
- package/internal/node/load.go +0 -149
- package/internal/node/node.go +0 -176
- package/internal/version/version.go +0 -33
- package/ledger/certs.go +0 -164
- package/ledger/chainsync.go +0 -504
- package/ledger/delta.go +0 -99
- package/ledger/eras/allegra.go +0 -154
- package/ledger/eras/alonzo.go +0 -156
- package/ledger/eras/babbage.go +0 -154
- package/ledger/eras/byron.go +0 -42
- package/ledger/eras/conway.go +0 -166
- package/ledger/eras/eras.go +0 -44
- package/ledger/eras/mary.go +0 -154
- package/ledger/eras/shelley.go +0 -164
- package/ledger/error.go +0 -19
- package/ledger/event.go +0 -50
- package/ledger/metrics.go +0 -53
- package/ledger/queries.go +0 -258
- package/ledger/slot.go +0 -127
- package/ledger/slot_test.go +0 -147
- package/ledger/state.go +0 -821
- package/ledger/view.go +0 -73
- package/localstatequery.go +0 -50
- package/localtxmonitor.go +0 -44
- package/localtxsubmission.go +0 -52
- package/mempool/consumer.go +0 -98
- package/mempool/mempool.go +0 -322
- package/node.go +0 -320
- package/peergov/event.go +0 -27
- package/peergov/peer.go +0 -67
- package/peergov/peergov.go +0 -290
- package/peersharing.go +0 -70
- package/preview-local-topology.json +0 -23
- package/topology/topology.go +0 -69
- package/topology/topology_test.go +0 -179
- package/tracing.go +0 -65
- package/txsubmission.go +0 -233
- package/utxorpc/query.go +0 -311
- package/utxorpc/submit.go +0 -395
- package/utxorpc/sync.go +0 -276
- package/utxorpc/utxorpc.go +0 -166
- package/utxorpc/watch.go +0 -310
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
@@ -87,13 +87,7 @@ jobs:
|
|
|
87
87
|
if: startsWith(github.ref, 'refs/tags/')
|
|
88
88
|
run: |
|
|
89
89
|
_filename=${{ env.APPLICATION_NAME }}-${{ env.RELEASE_TAG }}-${{ matrix.os }}-${{ matrix.arch }}.tar.gz
|
|
90
|
-
|
|
91
|
-
tar czf ${_filename} ${{ env.APPLICATION_NAME }}
|
|
92
|
-
fi
|
|
93
|
-
if [[ "${{ matrix.os }}" == "darwin" ]]; then
|
|
94
|
-
_filename=${{ env.APPLICATION_NAME }}-${{ env.RELEASE_TAG }}-${{ matrix.os }}-${{ matrix.arch }}.zip
|
|
95
|
-
zip -r ${_filename} ${{ env.APPLICATION_NAME }}
|
|
96
|
-
fi
|
|
90
|
+
tar czf ${_filename} ${{ env.APPLICATION_NAME }}
|
|
97
91
|
curl \
|
|
98
92
|
-H "Authorization: token ${{ secrets.GITHUB_TOKEN }}" \
|
|
99
93
|
-H "Content-Type: application/octet-stream" \
|
package/README.md
CHANGED
|
@@ -19,9 +19,10 @@
|
|
|
19
19
|
|
|
20
20
|
## Running
|
|
21
21
|
|
|
22
|
-
Dingo
|
|
22
|
+
Dingo supports configuration via both a YAML config file (`dingo.yaml`) and uses environment
|
|
23
23
|
variables to modify its own behavior.
|
|
24
24
|
|
|
25
|
+
A sample configuration file is provided at `dingo.yaml.example`.You can copy and edit this file to configure Dingo for your local or production environment:
|
|
25
26
|
This behavior can be changed via the following environment variables:
|
|
26
27
|
|
|
27
28
|
- `CARDANO_BIND_ADDR`
|
package/{bin/dingo → dingo}
RENAMED
|
Binary file
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
# Example config file for dingo
|
|
2
|
+
# The values shown below correspond to the in-code defaults
|
|
3
|
+
|
|
4
|
+
# Public bind address for the Dingo server
|
|
5
|
+
bindAddr: "0.0.0.0"
|
|
6
|
+
|
|
7
|
+
# Path to the Cardano node configuration file
|
|
8
|
+
#
|
|
9
|
+
# Can be overridden with the config environment variable
|
|
10
|
+
cardanoConfig: "./config/cardano/preview/config.json"
|
|
11
|
+
|
|
12
|
+
# A directory which contains the ledger database files
|
|
13
|
+
databasePath: ".dingo"
|
|
14
|
+
|
|
15
|
+
# Path to the UNIX domain socket file used by the server
|
|
16
|
+
socketPath: "dingo.socket"
|
|
17
|
+
|
|
18
|
+
# Name of the Cardano network
|
|
19
|
+
network: "preview"
|
|
20
|
+
|
|
21
|
+
# TLS certificate file path (for HTTPS)
|
|
22
|
+
#
|
|
23
|
+
# Can be overridden with the TLS_CERT_FILE_PATH environment variable
|
|
24
|
+
tlsCertFilePath: ""
|
|
25
|
+
|
|
26
|
+
# TLS key file path (for HTTPS)
|
|
27
|
+
#
|
|
28
|
+
# Can be overridden with the TLS_KEY_FILE_PATH environment variable
|
|
29
|
+
tlsKeyFilePath: ""
|
|
30
|
+
|
|
31
|
+
# Path to the topology configuration file for Cardano node
|
|
32
|
+
topology: ""
|
|
33
|
+
|
|
34
|
+
# TCP port to bind for Prometheus metrics endpoint
|
|
35
|
+
metricsPort: 12798
|
|
36
|
+
|
|
37
|
+
# Internal/private address to bind for listening for Ouroboros NtC
|
|
38
|
+
privateBindAddr: "127.0.0.1"
|
|
39
|
+
|
|
40
|
+
# TCP port to bind for listening for Ouroboros NtC
|
|
41
|
+
privatePort: 3002
|
|
42
|
+
|
|
43
|
+
# TCP port to bind for listening for Ouroboros NtN
|
|
44
|
+
#
|
|
45
|
+
# Can be overridden with the port environment variable
|
|
46
|
+
relayPort: 3001
|
|
47
|
+
|
|
48
|
+
# TCP port to bind for listening for UTxO RPC
|
|
49
|
+
utxorpcPort: 9090
|
|
50
|
+
|
|
51
|
+
# Ignore prior chain history and start from current tip (default: false)
|
|
52
|
+
# This is experimental and may break — use with caution
|
|
53
|
+
intersectTip: false
|
package/package.json
CHANGED
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@blinklabs/dingo",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.8.0",
|
|
4
4
|
"description": "Dingo is a Cardano blockchain data node",
|
|
5
5
|
"main": "index.js",
|
|
6
|
+
"bin": "dingo",
|
|
6
7
|
"scripts": {
|
|
7
8
|
"postinstall": "golang-npm install",
|
|
8
9
|
"preuninstall": "golang-npm uninstall"
|
|
@@ -22,7 +23,6 @@
|
|
|
22
23
|
},
|
|
23
24
|
"homepage": "https://github.com/blinklabs-io/dingo#readme",
|
|
24
25
|
"dependencies": {
|
|
25
|
-
"dingo": "^0.0.18",
|
|
26
26
|
"golang-npm": "^0.0.6"
|
|
27
27
|
},
|
|
28
28
|
"goBinary": {
|
package/Dockerfile
DELETED
|
@@ -1,25 +0,0 @@
|
|
|
1
|
-
FROM ghcr.io/blinklabs-io/go:1.24.2-1 AS build
|
|
2
|
-
|
|
3
|
-
WORKDIR /code
|
|
4
|
-
COPY go.* .
|
|
5
|
-
RUN go mod download
|
|
6
|
-
COPY . .
|
|
7
|
-
RUN make build
|
|
8
|
-
|
|
9
|
-
FROM ghcr.io/blinklabs-io/cardano-configs:20250213-1 AS cardano-configs
|
|
10
|
-
FROM ghcr.io/blinklabs-io/txtop:0.12.3 AS txtop
|
|
11
|
-
|
|
12
|
-
FROM debian:bookworm-slim AS dingo
|
|
13
|
-
COPY --from=build /code/dingo /bin/
|
|
14
|
-
COPY --from=cardano-configs /config/ /opt/cardano/config/
|
|
15
|
-
COPY --from=txtop /bin/txtop /usr/local/bin/
|
|
16
|
-
ENV CARDANO_CONFIG=/opt/cardano/config/preview/config.json
|
|
17
|
-
ENV CARDANO_NETWORK=preview
|
|
18
|
-
# Create database dir owned by container user
|
|
19
|
-
VOLUME /data/db
|
|
20
|
-
ENV CARDANO_DATABASE_PATH=/data/db
|
|
21
|
-
# Create socket dir owned by container user
|
|
22
|
-
VOLUME /ipc
|
|
23
|
-
ENV CARDANO_NODE_SOCKET_PATH=/ipc/dingo.socket
|
|
24
|
-
ENV CARDANO_SOCKET_PATH=/ipc/dingo.socket
|
|
25
|
-
ENTRYPOINT ["dingo"]
|
package/Makefile
DELETED
|
@@ -1,53 +0,0 @@
|
|
|
1
|
-
# Determine root directory
|
|
2
|
-
ROOT_DIR=$(shell dirname $(realpath $(firstword $(MAKEFILE_LIST))))
|
|
3
|
-
|
|
4
|
-
# Gather all .go files for use in dependencies below
|
|
5
|
-
GO_FILES=$(shell find $(ROOT_DIR) -name '*.go')
|
|
6
|
-
|
|
7
|
-
# Gather list of expected binaries
|
|
8
|
-
BINARIES=$(shell cd $(ROOT_DIR)/cmd && ls -1 | grep -v ^common)
|
|
9
|
-
|
|
10
|
-
# Extract Go module name from go.mod
|
|
11
|
-
GOMODULE=$(shell grep ^module $(ROOT_DIR)/go.mod | awk '{ print $$2 }')
|
|
12
|
-
|
|
13
|
-
# Set version strings based on git tag and current ref
|
|
14
|
-
GO_LDFLAGS=-ldflags "-s -w -X '$(GOMODULE)/internal/version.Version=$(shell git describe --tags --exact-match 2>/dev/null)' -X '$(GOMODULE)/internal/version.CommitHash=$(shell git rev-parse --short HEAD)'"
|
|
15
|
-
|
|
16
|
-
.PHONY: build mod-tidy clean format golines test
|
|
17
|
-
|
|
18
|
-
# Alias for building program binary
|
|
19
|
-
build: $(BINARIES)
|
|
20
|
-
|
|
21
|
-
# Builds and installs binary in ~/.local/bin
|
|
22
|
-
install: build
|
|
23
|
-
mkdir -p $(HOME)/.local/bin
|
|
24
|
-
mv $(BINARIES) $(HOME)/.local/bin
|
|
25
|
-
|
|
26
|
-
uninstall:
|
|
27
|
-
rm -f $(HOME)/.local/bin/$(BINARIES)
|
|
28
|
-
|
|
29
|
-
mod-tidy:
|
|
30
|
-
# Needed to fetch new dependencies and add them to go.mod
|
|
31
|
-
go mod tidy
|
|
32
|
-
|
|
33
|
-
clean:
|
|
34
|
-
rm -f $(BINARIES)
|
|
35
|
-
|
|
36
|
-
format:
|
|
37
|
-
go fmt ./...
|
|
38
|
-
gofmt -s -w $(GO_FILES)
|
|
39
|
-
|
|
40
|
-
golines:
|
|
41
|
-
golines -w --ignore-generated --chain-split-dots --max-len=80 --reformat-tags .
|
|
42
|
-
|
|
43
|
-
test: mod-tidy
|
|
44
|
-
go test -v -race ./...
|
|
45
|
-
|
|
46
|
-
# Build our program binaries
|
|
47
|
-
# Depends on GO_FILES to determine when rebuild is needed
|
|
48
|
-
$(BINARIES): mod-tidy $(GO_FILES)
|
|
49
|
-
CGO_ENABLED=0 \
|
|
50
|
-
go build \
|
|
51
|
-
$(GO_LDFLAGS) \
|
|
52
|
-
-o $(@) \
|
|
53
|
-
./cmd/$(@)
|
package/blockfetch.go
DELETED
|
@@ -1,144 +0,0 @@
|
|
|
1
|
-
// Copyright 2024 Blink Labs Software
|
|
2
|
-
//
|
|
3
|
-
// Licensed under the Apache License, Version 2.0 (the "License");
|
|
4
|
-
// you may not use this file except in compliance with the License.
|
|
5
|
-
// You may obtain a copy of the License at
|
|
6
|
-
//
|
|
7
|
-
// http://www.apache.org/licenses/LICENSE-2.0
|
|
8
|
-
//
|
|
9
|
-
// Unless required by applicable law or agreed to in writing, software
|
|
10
|
-
// distributed under the License is distributed on an "AS IS" BASIS,
|
|
11
|
-
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
12
|
-
// See the License for the specific language governing permissions and
|
|
13
|
-
// limitations under the License.
|
|
14
|
-
|
|
15
|
-
package dingo
|
|
16
|
-
|
|
17
|
-
import (
|
|
18
|
-
"fmt"
|
|
19
|
-
"time"
|
|
20
|
-
|
|
21
|
-
"github.com/blinklabs-io/dingo/event"
|
|
22
|
-
"github.com/blinklabs-io/dingo/ledger"
|
|
23
|
-
ouroboros "github.com/blinklabs-io/gouroboros"
|
|
24
|
-
gledger "github.com/blinklabs-io/gouroboros/ledger"
|
|
25
|
-
"github.com/blinklabs-io/gouroboros/protocol/blockfetch"
|
|
26
|
-
ocommon "github.com/blinklabs-io/gouroboros/protocol/common"
|
|
27
|
-
)
|
|
28
|
-
|
|
29
|
-
func (n *Node) blockfetchServerConnOpts() []blockfetch.BlockFetchOptionFunc {
|
|
30
|
-
return []blockfetch.BlockFetchOptionFunc{
|
|
31
|
-
blockfetch.WithRequestRangeFunc(n.blockfetchServerRequestRange),
|
|
32
|
-
}
|
|
33
|
-
}
|
|
34
|
-
|
|
35
|
-
func (n *Node) blockfetchClientConnOpts() []blockfetch.BlockFetchOptionFunc {
|
|
36
|
-
return []blockfetch.BlockFetchOptionFunc{
|
|
37
|
-
blockfetch.WithBlockFunc(n.blockfetchClientBlock),
|
|
38
|
-
blockfetch.WithBatchDoneFunc(n.blockfetchClientBatchDone),
|
|
39
|
-
blockfetch.WithBatchStartTimeout(2 * time.Second),
|
|
40
|
-
blockfetch.WithBlockTimeout(2 * time.Second),
|
|
41
|
-
// Set the recv queue size to 2x our block batch size
|
|
42
|
-
blockfetch.WithRecvQueueSize(1000),
|
|
43
|
-
}
|
|
44
|
-
}
|
|
45
|
-
|
|
46
|
-
func (n *Node) blockfetchServerRequestRange(
|
|
47
|
-
ctx blockfetch.CallbackContext,
|
|
48
|
-
start ocommon.Point,
|
|
49
|
-
end ocommon.Point,
|
|
50
|
-
) error {
|
|
51
|
-
// TODO: check if we have requested block range available and send NoBlocks if not (#397)
|
|
52
|
-
chainIter, err := n.ledgerState.GetChainFromPoint(start, true)
|
|
53
|
-
if err != nil {
|
|
54
|
-
return err
|
|
55
|
-
}
|
|
56
|
-
// Start async process to send requested block range
|
|
57
|
-
go func() {
|
|
58
|
-
if err := ctx.Server.StartBatch(); err != nil {
|
|
59
|
-
return
|
|
60
|
-
}
|
|
61
|
-
for {
|
|
62
|
-
next, _ := chainIter.Next(false)
|
|
63
|
-
if next == nil {
|
|
64
|
-
break
|
|
65
|
-
}
|
|
66
|
-
if next.Block.Slot > end.Slot {
|
|
67
|
-
break
|
|
68
|
-
}
|
|
69
|
-
blockBytes := next.Block.Cbor[:]
|
|
70
|
-
err := ctx.Server.Block(
|
|
71
|
-
next.Block.Type,
|
|
72
|
-
blockBytes,
|
|
73
|
-
)
|
|
74
|
-
if err != nil {
|
|
75
|
-
// TODO: push this error somewhere (#398)
|
|
76
|
-
return
|
|
77
|
-
}
|
|
78
|
-
// Make sure we don't hang waiting for the next block if we've already hit the end
|
|
79
|
-
if next.Block.Slot == end.Slot {
|
|
80
|
-
break
|
|
81
|
-
}
|
|
82
|
-
}
|
|
83
|
-
if err := ctx.Server.BatchDone(); err != nil {
|
|
84
|
-
return
|
|
85
|
-
}
|
|
86
|
-
}()
|
|
87
|
-
return nil
|
|
88
|
-
}
|
|
89
|
-
|
|
90
|
-
// blockfetchClientRequestRange is called by the ledger when it needs to request a range of block bodies
|
|
91
|
-
func (n *Node) blockfetchClientRequestRange(
|
|
92
|
-
connId ouroboros.ConnectionId,
|
|
93
|
-
start ocommon.Point,
|
|
94
|
-
end ocommon.Point,
|
|
95
|
-
) error {
|
|
96
|
-
conn := n.connManager.GetConnectionById(connId)
|
|
97
|
-
if conn == nil {
|
|
98
|
-
return fmt.Errorf("failed to lookup connection ID: %s", connId.String())
|
|
99
|
-
}
|
|
100
|
-
if err := conn.BlockFetch().Client.GetBlockRange(start, end); err != nil {
|
|
101
|
-
return err
|
|
102
|
-
}
|
|
103
|
-
return nil
|
|
104
|
-
}
|
|
105
|
-
|
|
106
|
-
func (n *Node) blockfetchClientBlock(
|
|
107
|
-
ctx blockfetch.CallbackContext,
|
|
108
|
-
blockType uint,
|
|
109
|
-
block gledger.Block,
|
|
110
|
-
) error {
|
|
111
|
-
// Generate event
|
|
112
|
-
n.eventBus.Publish(
|
|
113
|
-
ledger.BlockfetchEventType,
|
|
114
|
-
event.NewEvent(
|
|
115
|
-
ledger.BlockfetchEventType,
|
|
116
|
-
ledger.BlockfetchEvent{
|
|
117
|
-
Point: ocommon.NewPoint(
|
|
118
|
-
block.SlotNumber(),
|
|
119
|
-
block.Hash().Bytes(),
|
|
120
|
-
),
|
|
121
|
-
Type: blockType,
|
|
122
|
-
Block: block,
|
|
123
|
-
},
|
|
124
|
-
),
|
|
125
|
-
)
|
|
126
|
-
return nil
|
|
127
|
-
}
|
|
128
|
-
|
|
129
|
-
func (n *Node) blockfetchClientBatchDone(
|
|
130
|
-
ctx blockfetch.CallbackContext,
|
|
131
|
-
) error {
|
|
132
|
-
// Generate event
|
|
133
|
-
n.eventBus.Publish(
|
|
134
|
-
ledger.BlockfetchEventType,
|
|
135
|
-
event.NewEvent(
|
|
136
|
-
ledger.BlockfetchEventType,
|
|
137
|
-
ledger.BlockfetchEvent{
|
|
138
|
-
ConnectionId: ctx.ConnectionId,
|
|
139
|
-
BatchDone: true,
|
|
140
|
-
},
|
|
141
|
-
),
|
|
142
|
-
)
|
|
143
|
-
return nil
|
|
144
|
-
}
|