Merge branch 'master' into feat/nv18

This commit is contained in:
Steven Allen 2022-11-22 10:03:02 -08:00
commit 2651a38f89
300 changed files with 9681 additions and 1493 deletions

View File

@ -23,11 +23,6 @@ executors:
commands: commands:
install-deps:
steps:
- run: |
sudo apt update
sudo apt install python-is-python3
prepare: prepare:
parameters: parameters:
linux: linux:
@ -41,9 +36,8 @@ commands:
steps: steps:
- checkout - checkout
- git_fetch_all_tags - git_fetch_all_tags
- checkout
- when: - when:
condition: << parameters.linux >> condition: <<parameters.linux>>
steps: steps:
- run: - run:
name: Check Go Version name: Check Go Version
@ -56,6 +50,8 @@ commands:
fi fi
- run: sudo apt-get update - run: sudo apt-get update
- run: sudo apt-get install ocl-icd-opencl-dev libhwloc-dev - run: sudo apt-get install ocl-icd-opencl-dev libhwloc-dev
- run: sudo apt-get install python-is-python3
- when: - when:
condition: <<parameters.darwin>> condition: <<parameters.darwin>>
steps: steps:
@ -70,21 +66,12 @@ commands:
echo 'export GOPATH="${HOME}/go"' >> $BASH_ENV echo 'export GOPATH="${HOME}/go"' >> $BASH_ENV
- run: go version - run: go version
- run: - run:
name: Install pkg-config, goreleaser, and sha512sum name: Install dependencies with Homebrew
command: HOMEBREW_NO_AUTO_UPDATE=1 brew install pkg-config goreleaser/tap/goreleaser coreutils command: HOMEBREW_NO_AUTO_UPDATE=1 brew install pkg-config coreutils jq hwloc
- run: - run:
name: Install Rust name: Install Rust
command: | command: |
curl https://sh.rustup.rs -sSf | sh -s -- -y curl https://sh.rustup.rs -sSf | sh -s -- -y
- run:
name: Install hwloc
command: |
mkdir ~/hwloc
curl --location https://download.open-mpi.org/release/hwloc/v2.4/hwloc-2.4.1.tar.gz --output ~/hwloc/hwloc-2.4.1.tar.gz
cd ~/hwloc
tar -xvzpf hwloc-2.4.1.tar.gz
cd hwloc-2.4.1
./configure && make && sudo make install
- run: git submodule sync - run: git submodule sync
- run: git submodule update --init - run: git submodule update --init
download-params: download-params:
@ -104,28 +91,13 @@ commands:
install_ipfs: install_ipfs:
steps: steps:
- run: | - run: |
apt update curl -O https://dist.ipfs.tech/kubo/v0.16.0/kubo_v0.16.0_linux-amd64.tar.gz
apt install -y wget tar -xvzf kubo_v0.16.0_linux-amd64.tar.gz
wget https://github.com/ipfs/go-ipfs/releases/download/v0.12.2/go-ipfs_v0.12.2_linux-amd64.tar.gz
wget https://github.com/ipfs/go-ipfs/releases/download/v0.12.2/go-ipfs_v0.12.2_linux-amd64.tar.gz.sha512
if [ "$(sha512sum go-ipfs_v0.12.2_linux-amd64.tar.gz)" != "$(cat go-ipfs_v0.12.2_linux-amd64.tar.gz.sha512)" ]
then
echo "ipfs failed checksum check"
exit 1
fi
tar -xf go-ipfs_v0.12.2_linux-amd64.tar.gz
mv go-ipfs/ipfs /usr/local/bin/ipfs
chmod +x /usr/local/bin/ipfs
install_ipfs_macos:
steps:
- run: |
curl -O https://dist.ipfs.io/kubo/v0.14.0/kubo_v0.14.0_darwin-amd64.tar.gz
tar -xvzf kubo_v0.14.0_darwin-amd64.tar.gz
pushd kubo pushd kubo
sudo bash install.sh sudo bash install.sh
popd popd
rm -rf kubo/ rm -rf kubo
rm kubo_v0.14.0_darwin-amd64.tar.gz rm kubo_v0.16.0_linux-amd64.tar.gz
git_fetch_all_tags: git_fetch_all_tags:
steps: steps:
- run: - run:
@ -156,7 +128,6 @@ jobs:
mod-tidy-check: mod-tidy-check:
executor: golang executor: golang
steps: steps:
- install-deps
- prepare - prepare
- run: go mod tidy -v - run: go mod tidy -v
- run: - run:
@ -164,34 +135,9 @@ jobs:
command: | command: |
git --no-pager diff go.mod go.sum git --no-pager diff go.mod go.sum
git --no-pager diff --quiet go.mod go.sum git --no-pager diff --quiet go.mod go.sum
build-linux:
executor: golang
steps:
- install-deps
- prepare
- run: sudo apt-get update
- run: sudo apt-get install npm
- run:
command: make buildall
- run:
name: check tag and version output match
command: ./scripts/version-check.sh ./lotus
- store_artifacts:
path: lotus
- store_artifacts:
path: lotus-miner
- store_artifacts:
path: lotus-worker
- run: mkdir linux && mv lotus lotus-miner lotus-worker linux/
- persist_to_workspace:
root: "."
paths:
- linux
build-debug: build-debug:
executor: golang executor: golang
steps: steps:
- install-deps
- prepare - prepare
- run: - run:
command: make debug command: make debug
@ -224,7 +170,6 @@ jobs:
description: gotestsum format. https://github.com/gotestyourself/gotestsum#format description: gotestsum format. https://github.com/gotestyourself/gotestsum#format
executor: << parameters.executor >> executor: << parameters.executor >>
steps: steps:
- install-deps
- prepare - prepare
- run: - run:
command: make deps lotus command: make deps lotus
@ -268,7 +213,6 @@ jobs:
submodule is used. submodule is used.
executor: << parameters.executor >> executor: << parameters.executor >>
steps: steps:
- install-deps
- prepare - prepare
- run: - run:
command: make deps lotus command: make deps lotus
@ -311,36 +255,6 @@ jobs:
path: /tmp/test-reports path: /tmp/test-reports
- store_artifacts: - store_artifacts:
path: /tmp/test-artifacts/conformance-coverage.html path: /tmp/test-artifacts/conformance-coverage.html
build-ntwk-calibration:
description: |
Compile lotus binaries for the calibration network
parameters:
<<: *test-params
executor: << parameters.executor >>
steps:
- install-deps
- prepare
- run: make calibnet
- run: mkdir linux-calibrationnet && mv lotus lotus-miner lotus-worker linux-calibrationnet
- persist_to_workspace:
root: "."
paths:
- linux-calibrationnet
build-ntwk-butterfly:
description: |
Compile lotus binaries for the butterfly network
parameters:
<<: *test-params
executor: << parameters.executor >>
steps:
- install-deps
- prepare
- run: make butterflynet
- run: mkdir linux-butterflynet && mv lotus lotus-miner lotus-worker linux-butterflynet
- persist_to_workspace:
root: "."
paths:
- linux-butterflynet
build-lotus-soup: build-lotus-soup:
description: | description: |
Compile `lotus-soup` Testground test plan Compile `lotus-soup` Testground test plan
@ -348,7 +262,6 @@ jobs:
<<: *test-params <<: *test-params
executor: << parameters.executor >> executor: << parameters.executor >>
steps: steps:
- install-deps
- prepare - prepare
- run: cd extern/filecoin-ffi && make - run: cd extern/filecoin-ffi && make
- run: - run:
@ -364,7 +277,6 @@ jobs:
<<: *test-params <<: *test-params
executor: << parameters.executor >> executor: << parameters.executor >>
steps: steps:
- install-deps
- prepare - prepare
- run: - run:
name: "download testground" name: "download testground"
@ -384,48 +296,104 @@ jobs:
- run: - run:
name: "trigger payment channel stress testplan on taas" name: "trigger payment channel stress testplan on taas"
command: ~/testground-cli run composition -f $HOME/testground/plans/lotus-soup/_compositions/paych-stress-k8s.toml --metadata-commit=$CIRCLE_SHA1 --metadata-repo=filecoin-project/lotus --metadata-branch=$CIRCLE_BRANCH command: ~/testground-cli run composition -f $HOME/testground/plans/lotus-soup/_compositions/paych-stress-k8s.toml --metadata-commit=$CIRCLE_SHA1 --metadata-repo=filecoin-project/lotus --metadata-branch=$CIRCLE_BRANCH
build-macos:
build-linux-amd64:
executor: golang
steps:
- prepare
- run: make lotus lotus-miner lotus-worker
- run:
name: check tag and version output match
command: ./scripts/version-check.sh ./lotus
- run: |
mkdir -p /tmp/workspace/linux_amd64_v1 && \
mv lotus lotus-miner lotus-worker /tmp/workspace/linux_amd64_v1/
- persist_to_workspace:
root: /tmp/workspace
paths:
- linux_amd64_v1
build-darwin-amd64:
description: build darwin lotus binary description: build darwin lotus binary
parameters: working_directory: ~/go/src/github.com/filecoin-project/lotus
publish:
default: false
description: publish github release and homebrew?
type: boolean
macos: macos:
xcode: "13.4.1" xcode: "13.4.1"
working_directory: ~/go/src/github.com/filecoin-project/lotus
steps: steps:
- prepare: - prepare:
linux: false linux: false
darwin: true darwin: true
- install_ipfs_macos - run: make lotus lotus-miner lotus-worker
- restore_cache: - run:
name: restore cargo cache name: check tag and version output match
key: v3-go-deps-{{ arch }}-{{ checksum "~/go/src/github.com/filecoin-project/lotus/go.sum" }} command: ./scripts/version-check.sh ./lotus
- run: |
mkdir -p /tmp/workspace/darwin_amd64_v1 && \
mv lotus lotus-miner lotus-worker /tmp/workspace/darwin_amd64_v1/
- persist_to_workspace:
root: /tmp/workspace
paths:
- darwin_amd64_v1
build-darwin-arm64:
description: self-hosted m1 runner
working_directory: ~/go/src/github.com/filecoin-project/lotus
machine: true
resource_class: filecoin-project/self-hosted-m1
steps:
- run: echo 'export PATH=/opt/homebrew/bin:"$PATH"' >> "$BASH_ENV"
- prepare:
linux: false
darwin: true
- run: |
export CPATH=$(brew --prefix)/include
export LIBRARY_PATH=$(brew --prefix)/lib
make lotus lotus-miner lotus-worker
- run:
name: check tag and version output match
command: ./scripts/version-check.sh ./lotus
- run: |
mkdir -p /tmp/workspace/darwin_arm64 && \
mv lotus lotus-miner lotus-worker /tmp/workspace/darwin_arm64/
- persist_to_workspace:
root: /tmp/workspace
paths:
- darwin_arm64
- run:
command: make clean
when: always
- run:
name: cleanup homebrew
command: HOMEBREW_NO_AUTO_UPDATE=1 brew uninstall pkg-config coreutils jq hwloc
when: always
release:
executor: golang
parameters:
dry-run:
default: false
description: should this release actually publish it's artifacts?
type: boolean
steps:
- checkout
- run: |
echo 'deb [trusted=yes] https://repo.goreleaser.com/apt/ /' | sudo tee /etc/apt/sources.list.d/goreleaser.list
sudo apt update
sudo apt install goreleaser-pro
- install_ipfs
- attach_workspace:
at: /tmp/workspace
- when: - when:
condition: << parameters.publish >> condition: << parameters.dry-run >>
steps: steps:
- run: goreleaser release --rm-dist - run: goreleaser release --rm-dist --snapshot --debug
- run: ./scripts/generate-checksums.sh - run: ./scripts/generate-checksums.sh
- run: ./scripts/publish-checksums.sh
- when: - when:
condition: condition:
not: << parameters.publish >> not: << parameters.dry-run >>
steps: steps:
- run: goreleaser release --rm-dist --snapshot - run: goreleaser release --rm-dist --debug
- run: ./scripts/generate-checksums.sh - run: ./scripts/generate-checksums.sh
- store_artifacts: - run: ./scripts/publish-checksums.sh
path: dist
- persist_to_workspace:
root: "."
paths:
- dist
- save_cache:
name: save cargo cache
key: v3-go-deps-{{ arch }}-{{ checksum "~/go/src/github.com/filecoin-project/lotus/go.sum" }}
paths:
- "~/.rustup"
- "~/.cargo"
build-appimage: build-appimage:
machine: machine:
@ -433,7 +401,7 @@ jobs:
steps: steps:
- checkout - checkout
- attach_workspace: - attach_workspace:
at: "." at: /tmp/workspace
- run: - run:
name: Update Go name: Update Go
command: | command: |
@ -468,13 +436,11 @@ jobs:
command: | command: |
sed -i "s/version: latest/version: ${CIRCLE_TAG:-latest}/" AppImageBuilder.yml sed -i "s/version: latest/version: ${CIRCLE_TAG:-latest}/" AppImageBuilder.yml
make appimage make appimage
- run: - run: |
name: prepare workspace mkdir -p /tmp/workspace/appimage && \
command: | mv Lotus-*.AppImage /tmp/workspace/appimage/
mkdir appimage
mv Lotus-*.AppImage appimage
- persist_to_workspace: - persist_to_workspace:
root: "." root: /tmp/workspace
paths: paths:
- appimage - appimage
@ -482,7 +448,6 @@ jobs:
gofmt: gofmt:
executor: golang executor: golang
steps: steps:
- install-deps
- prepare - prepare
- run: - run:
command: "! go fmt ./... 2>&1 | read" command: "! go fmt ./... 2>&1 | read"
@ -490,7 +455,6 @@ jobs:
gen-check: gen-check:
executor: golang executor: golang
steps: steps:
- install-deps
- prepare - prepare
- run: make deps - run: make deps
- run: go install golang.org/x/tools/cmd/goimports - run: go install golang.org/x/tools/cmd/goimports
@ -505,7 +469,6 @@ jobs:
docs-check: docs-check:
executor: golang executor: golang
steps: steps:
- install-deps
- prepare - prepare
- run: go install golang.org/x/tools/cmd/goimports - run: go install golang.org/x/tools/cmd/goimports
- run: zcat build/openrpc/full.json.gz | jq > ../pre-openrpc-full - run: zcat build/openrpc/full.json.gz | jq > ../pre-openrpc-full
@ -542,7 +505,6 @@ jobs:
Arguments to pass to golangci-lint Arguments to pass to golangci-lint
executor: << parameters.executor >> executor: << parameters.executor >>
steps: steps:
- install-deps
- prepare - prepare
- run: - run:
command: make deps command: make deps
@ -570,13 +532,13 @@ jobs:
steps: steps:
- run: - run:
name: Install git jq curl name: Install git jq curl
command: apt update && apt install -y git jq curl command: apt update && apt install -y git jq curl sudo
- checkout - checkout
- git_fetch_all_tags - git_fetch_all_tags
- checkout - checkout
- install_ipfs - install_ipfs
- attach_workspace: - attach_workspace:
at: "." at: /tmp/workspace
- when: - when:
condition: << parameters.linux >> condition: << parameters.linux >>
steps: steps:
@ -751,8 +713,6 @@ jobs:
name: packer name: packer
steps: steps:
- checkout - checkout
- attach_workspace:
at: "."
- packer_build: - packer_build:
template: tools/packer/lotus-snap.pkr.hcl template: tools/packer/lotus-snap.pkr.hcl
publish-dockerhub: publish-dockerhub:
@ -896,6 +856,11 @@ workflows:
suite: itest-deals_publish suite: itest-deals_publish
target: "./itests/deals_publish_test.go" target: "./itests/deals_publish_test.go"
- test:
name: test-itest-deals_remote_retrieval
suite: itest-deals_remote_retrieval
target: "./itests/deals_remote_retrieval_test.go"
- test: - test:
name: test-itest-deals_retry_deal_no_funds name: test-itest-deals_retry_deal_no_funds
suite: itest-deals_retry_deal_no_funds suite: itest-deals_retry_deal_no_funds
@ -951,6 +916,11 @@ workflows:
suite: itest-mpool_msg_uuid suite: itest-mpool_msg_uuid
target: "./itests/mpool_msg_uuid_test.go" target: "./itests/mpool_msg_uuid_test.go"
- test:
name: test-itest-mpool_push_with_uuid
suite: itest-mpool_push_with_uuid
target: "./itests/mpool_push_with_uuid_test.go"
- test: - test:
name: test-itest-multisig name: test-itest-multisig
suite: itest-multisig suite: itest-multisig
@ -991,6 +961,11 @@ workflows:
suite: itest-pending_deal_allocation suite: itest-pending_deal_allocation
target: "./itests/pending_deal_allocation_test.go" target: "./itests/pending_deal_allocation_test.go"
- test:
name: test-itest-raft_messagesigner
suite: itest-raft_messagesigner
target: "./itests/raft_messagesigner_test.go"
- test: - test:
name: test-itest-remove_verifreg_datacap name: test-itest-remove_verifreg_datacap
suite: itest-remove_verifreg_datacap suite: itest-remove_verifreg_datacap
@ -1136,41 +1111,12 @@ workflows:
only: only:
- master - master
- build-debug - build-debug
- build-linux:
filters:
tags:
only:
- /^v\d+\.\d+\.\d+(-rc\d+)?$/
- build-ntwk-calibration:
filters:
tags:
only:
- /^v\d+\.\d+\.\d+(-rc\d+)?$/
- build-ntwk-butterfly:
filters:
tags:
only:
- /^v\d+\.\d+\.\d+(-rc\d+)?$/
- build-lotus-soup - build-lotus-soup
- build-macos:
name: publish-macos release:
publish: true jobs:
filters: - build-linux-amd64:
branches: name: "Build ( linux / amd64 )"
ignore:
- /.*/
tags:
only:
- /^v\d+\.\d+\.\d+$/
- build-macos:
filters:
branches:
only:
- /^release\/v\d+\.\d+\.\d+(-rc\d+)?$/
tags:
only:
- /^v\d+\.\d+\.\d+-rc\d+$/
- build-appimage:
filters: filters:
branches: branches:
only: only:
@ -1178,11 +1124,32 @@ workflows:
tags: tags:
only: only:
- /^v\d+\.\d+\.\d+(-rc\d+)?$/ - /^v\d+\.\d+\.\d+(-rc\d+)?$/
- publish: - build-darwin-amd64:
name: publish-linux name: "Build ( darwin / amd64 )"
linux: true filters:
branches:
only:
- /^release\/v\d+\.\d+\.\d+(-rc\d+)?$/
tags:
only:
- /^v\d+\.\d+\.\d+(-rc\d+)?$/
- build-darwin-arm64:
name: "Build ( darwin / arm64 )"
filters:
branches:
only:
- /^release\/v\d+\.\d+\.\d+(-rc\d+)?$/
tags:
only:
- /^v\d+\.\d+\.\d+(-rc\d+)?$/
- release:
name: "Release"
context:
- filecoin-goreleaser-key
requires: requires:
- build-linux - "Build ( darwin / amd64 )"
- "Build ( linux / amd64 )"
- "Build ( darwin / arm64 )"
filters: filters:
branches: branches:
ignore: ignore:
@ -1190,11 +1157,33 @@ workflows:
tags: tags:
only: only:
- /^v\d+\.\d+\.\d+(-rc\d+)?$/ - /^v\d+\.\d+\.\d+(-rc\d+)?$/
- release:
name: "Release (dry-run)"
context:
- filecoin-goreleaser-key
dry-run: true
requires:
- "Build ( darwin / amd64 )"
- "Build ( linux / amd64 )"
- "Build ( darwin / arm64 )"
filters:
branches:
only:
- /^release\/v\d+\.\d+\.\d+(-rc\d+)?$/
- build-appimage:
name: "Build AppImage"
filters:
branches:
only:
- /^release\/v\d+\.\d+\.\d+(-rc\d+)?$/
tags:
only:
- /^v\d+\.\d+\.\d+(-rc\d+)?$/
- publish: - publish:
name: publish-appimage name: "Publish AppImage"
appimage: true appimage: true
requires: requires:
- build-appimage - "Build AppImage"
filters: filters:
branches: branches:
ignore: ignore:
@ -1203,14 +1192,14 @@ workflows:
only: only:
- /^v\d+\.\d+\.\d+(-rc\d+)?$/ - /^v\d+\.\d+\.\d+(-rc\d+)?$/
- build-and-push-image: - build-and-push-image:
name: build-and-push/lotus-all-in-one name: "Publish ECR (lotus-all-in-one)"
dockerfile: Dockerfile.lotus dockerfile: Dockerfile.lotus
path: . path: .
repo: lotus-dev repo: lotus-dev
tag: '${CIRCLE_SHA1:0:8}' tag: '${CIRCLE_SHA1:0:8}'
target: lotus-all-in-one target: lotus-all-in-one
- build-and-push-image: - build-and-push-image:
name: build-and-push/lotus-test name: "Publish ECR (lotus-test)"
dockerfile: Dockerfile.lotus dockerfile: Dockerfile.lotus
path: . path: .
repo: lotus-test repo: lotus-test
@ -1261,7 +1250,7 @@ workflows:
only: only:
- /^v\d+\.\d+\.\d+-rc\d+$/ - /^v\d+\.\d+\.\d+-rc\d+$/
- publish-dockerhub: - publish-dockerhub:
name: publish-dockerhub name: "Publish Dockerhub (stable)"
tag: stable tag: stable
filters: filters:
branches: branches:
@ -1269,7 +1258,17 @@ workflows:
- /.*/ - /.*/
tags: tags:
only: only:
- /^v\d+\.\d+\.\d+(-rc\d+)?$/ - /^v\d+\.\d+\.\d+$/
- publish-dockerhub:
name: "Publish Dockerhub (candidate)"
tag: candidate
filters:
branches:
ignore:
- /.*/
tags:
only:
- /^v\d+\.\d+\.\d+-rc\d+$/
nightly: nightly:
triggers: triggers:

View File

@ -23,11 +23,6 @@ executors:
commands: commands:
install-deps:
steps:
- run: |
sudo apt update
sudo apt install python-is-python3
prepare: prepare:
parameters: parameters:
linux: linux:
@ -41,9 +36,8 @@ commands:
steps: steps:
- checkout - checkout
- git_fetch_all_tags - git_fetch_all_tags
- checkout
- when: - when:
condition: << parameters.linux >> condition: <<parameters.linux>>
steps: steps:
- run: - run:
name: Check Go Version name: Check Go Version
@ -56,6 +50,8 @@ commands:
fi fi
- run: sudo apt-get update - run: sudo apt-get update
- run: sudo apt-get install ocl-icd-opencl-dev libhwloc-dev - run: sudo apt-get install ocl-icd-opencl-dev libhwloc-dev
- run: sudo apt-get install python-is-python3
- when: - when:
condition: <<parameters.darwin>> condition: <<parameters.darwin>>
steps: steps:
@ -70,21 +66,12 @@ commands:
echo 'export GOPATH="${HOME}/go"' >> $BASH_ENV echo 'export GOPATH="${HOME}/go"' >> $BASH_ENV
- run: go version - run: go version
- run: - run:
name: Install pkg-config, goreleaser, and sha512sum name: Install dependencies with Homebrew
command: HOMEBREW_NO_AUTO_UPDATE=1 brew install pkg-config goreleaser/tap/goreleaser coreutils command: HOMEBREW_NO_AUTO_UPDATE=1 brew install pkg-config coreutils jq hwloc
- run: - run:
name: Install Rust name: Install Rust
command: | command: |
curl https://sh.rustup.rs -sSf | sh -s -- -y curl https://sh.rustup.rs -sSf | sh -s -- -y
- run:
name: Install hwloc
command: |
mkdir ~/hwloc
curl --location https://download.open-mpi.org/release/hwloc/v2.4/hwloc-2.4.1.tar.gz --output ~/hwloc/hwloc-2.4.1.tar.gz
cd ~/hwloc
tar -xvzpf hwloc-2.4.1.tar.gz
cd hwloc-2.4.1
./configure && make && sudo make install
- run: git submodule sync - run: git submodule sync
- run: git submodule update --init - run: git submodule update --init
download-params: download-params:
@ -104,28 +91,13 @@ commands:
install_ipfs: install_ipfs:
steps: steps:
- run: | - run: |
apt update curl -O https://dist.ipfs.tech/kubo/v0.16.0/kubo_v0.16.0_linux-amd64.tar.gz
apt install -y wget tar -xvzf kubo_v0.16.0_linux-amd64.tar.gz
wget https://github.com/ipfs/go-ipfs/releases/download/v0.12.2/go-ipfs_v0.12.2_linux-amd64.tar.gz
wget https://github.com/ipfs/go-ipfs/releases/download/v0.12.2/go-ipfs_v0.12.2_linux-amd64.tar.gz.sha512
if [ "$(sha512sum go-ipfs_v0.12.2_linux-amd64.tar.gz)" != "$(cat go-ipfs_v0.12.2_linux-amd64.tar.gz.sha512)" ]
then
echo "ipfs failed checksum check"
exit 1
fi
tar -xf go-ipfs_v0.12.2_linux-amd64.tar.gz
mv go-ipfs/ipfs /usr/local/bin/ipfs
chmod +x /usr/local/bin/ipfs
install_ipfs_macos:
steps:
- run: |
curl -O https://dist.ipfs.io/kubo/v0.14.0/kubo_v0.14.0_darwin-amd64.tar.gz
tar -xvzf kubo_v0.14.0_darwin-amd64.tar.gz
pushd kubo pushd kubo
sudo bash install.sh sudo bash install.sh
popd popd
rm -rf kubo/ rm -rf kubo
rm kubo_v0.14.0_darwin-amd64.tar.gz rm kubo_v0.16.0_linux-amd64.tar.gz
git_fetch_all_tags: git_fetch_all_tags:
steps: steps:
- run: - run:
@ -156,7 +128,6 @@ jobs:
mod-tidy-check: mod-tidy-check:
executor: golang executor: golang
steps: steps:
- install-deps
- prepare - prepare
- run: go mod tidy -v - run: go mod tidy -v
- run: - run:
@ -164,34 +135,9 @@ jobs:
command: | command: |
git --no-pager diff go.mod go.sum git --no-pager diff go.mod go.sum
git --no-pager diff --quiet go.mod go.sum git --no-pager diff --quiet go.mod go.sum
build-linux:
executor: golang
steps:
- install-deps
- prepare
- run: sudo apt-get update
- run: sudo apt-get install npm
- run:
command: make buildall
- run:
name: check tag and version output match
command: ./scripts/version-check.sh ./lotus
- store_artifacts:
path: lotus
- store_artifacts:
path: lotus-miner
- store_artifacts:
path: lotus-worker
- run: mkdir linux && mv lotus lotus-miner lotus-worker linux/
- persist_to_workspace:
root: "."
paths:
- linux
build-debug: build-debug:
executor: golang executor: golang
steps: steps:
- install-deps
- prepare - prepare
- run: - run:
command: make debug command: make debug
@ -224,7 +170,6 @@ jobs:
description: gotestsum format. https://github.com/gotestyourself/gotestsum#format description: gotestsum format. https://github.com/gotestyourself/gotestsum#format
executor: << parameters.executor >> executor: << parameters.executor >>
steps: steps:
- install-deps
- prepare - prepare
- run: - run:
command: make deps lotus command: make deps lotus
@ -268,7 +213,6 @@ jobs:
submodule is used. submodule is used.
executor: << parameters.executor >> executor: << parameters.executor >>
steps: steps:
- install-deps
- prepare - prepare
- run: - run:
command: make deps lotus command: make deps lotus
@ -311,36 +255,6 @@ jobs:
path: /tmp/test-reports path: /tmp/test-reports
- store_artifacts: - store_artifacts:
path: /tmp/test-artifacts/conformance-coverage.html path: /tmp/test-artifacts/conformance-coverage.html
build-ntwk-calibration:
description: |
Compile lotus binaries for the calibration network
parameters:
<<: *test-params
executor: << parameters.executor >>
steps:
- install-deps
- prepare
- run: make calibnet
- run: mkdir linux-calibrationnet && mv lotus lotus-miner lotus-worker linux-calibrationnet
- persist_to_workspace:
root: "."
paths:
- linux-calibrationnet
build-ntwk-butterfly:
description: |
Compile lotus binaries for the butterfly network
parameters:
<<: *test-params
executor: << parameters.executor >>
steps:
- install-deps
- prepare
- run: make butterflynet
- run: mkdir linux-butterflynet && mv lotus lotus-miner lotus-worker linux-butterflynet
- persist_to_workspace:
root: "."
paths:
- linux-butterflynet
build-lotus-soup: build-lotus-soup:
description: | description: |
Compile `lotus-soup` Testground test plan Compile `lotus-soup` Testground test plan
@ -348,7 +262,6 @@ jobs:
<<: *test-params <<: *test-params
executor: << parameters.executor >> executor: << parameters.executor >>
steps: steps:
- install-deps
- prepare - prepare
- run: cd extern/filecoin-ffi && make - run: cd extern/filecoin-ffi && make
- run: - run:
@ -364,7 +277,6 @@ jobs:
<<: *test-params <<: *test-params
executor: << parameters.executor >> executor: << parameters.executor >>
steps: steps:
- install-deps
- prepare - prepare
- run: - run:
name: "download testground" name: "download testground"
@ -384,48 +296,104 @@ jobs:
- run: - run:
name: "trigger payment channel stress testplan on taas" name: "trigger payment channel stress testplan on taas"
command: ~/testground-cli run composition -f $HOME/testground/plans/lotus-soup/_compositions/paych-stress-k8s.toml --metadata-commit=$CIRCLE_SHA1 --metadata-repo=filecoin-project/lotus --metadata-branch=$CIRCLE_BRANCH command: ~/testground-cli run composition -f $HOME/testground/plans/lotus-soup/_compositions/paych-stress-k8s.toml --metadata-commit=$CIRCLE_SHA1 --metadata-repo=filecoin-project/lotus --metadata-branch=$CIRCLE_BRANCH
build-macos:
build-linux-amd64:
executor: golang
steps:
- prepare
- run: make lotus lotus-miner lotus-worker
- run:
name: check tag and version output match
command: ./scripts/version-check.sh ./lotus
- run: |
mkdir -p /tmp/workspace/linux_amd64_v1 && \
mv lotus lotus-miner lotus-worker /tmp/workspace/linux_amd64_v1/
- persist_to_workspace:
root: /tmp/workspace
paths:
- linux_amd64_v1
build-darwin-amd64:
description: build darwin lotus binary description: build darwin lotus binary
parameters: working_directory: ~/go/src/github.com/filecoin-project/lotus
publish:
default: false
description: publish github release and homebrew?
type: boolean
macos: macos:
xcode: "13.4.1" xcode: "13.4.1"
working_directory: ~/go/src/github.com/filecoin-project/lotus
steps: steps:
- prepare: - prepare:
linux: false linux: false
darwin: true darwin: true
- install_ipfs_macos - run: make lotus lotus-miner lotus-worker
- restore_cache: - run:
name: restore cargo cache name: check tag and version output match
key: v3-go-deps-{{ arch }}-{{ checksum "~/go/src/github.com/filecoin-project/lotus/go.sum" }} command: ./scripts/version-check.sh ./lotus
- run: |
mkdir -p /tmp/workspace/darwin_amd64_v1 && \
mv lotus lotus-miner lotus-worker /tmp/workspace/darwin_amd64_v1/
- persist_to_workspace:
root: /tmp/workspace
paths:
- darwin_amd64_v1
build-darwin-arm64:
description: self-hosted m1 runner
working_directory: ~/go/src/github.com/filecoin-project/lotus
machine: true
resource_class: filecoin-project/self-hosted-m1
steps:
- run: echo 'export PATH=/opt/homebrew/bin:"$PATH"' >> "$BASH_ENV"
- prepare:
linux: false
darwin: true
- run: |
export CPATH=$(brew --prefix)/include
export LIBRARY_PATH=$(brew --prefix)/lib
make lotus lotus-miner lotus-worker
- run:
name: check tag and version output match
command: ./scripts/version-check.sh ./lotus
- run: |
mkdir -p /tmp/workspace/darwin_arm64 && \
mv lotus lotus-miner lotus-worker /tmp/workspace/darwin_arm64/
- persist_to_workspace:
root: /tmp/workspace
paths:
- darwin_arm64
- run:
command: make clean
when: always
- run:
name: cleanup homebrew
command: HOMEBREW_NO_AUTO_UPDATE=1 brew uninstall pkg-config coreutils jq hwloc
when: always
release:
executor: golang
parameters:
dry-run:
default: false
description: should this release actually publish it's artifacts?
type: boolean
steps:
- checkout
- run: |
echo 'deb [trusted=yes] https://repo.goreleaser.com/apt/ /' | sudo tee /etc/apt/sources.list.d/goreleaser.list
sudo apt update
sudo apt install goreleaser-pro
- install_ipfs
- attach_workspace:
at: /tmp/workspace
- when: - when:
condition: << parameters.publish >> condition: << parameters.dry-run >>
steps: steps:
- run: goreleaser release --rm-dist - run: goreleaser release --rm-dist --snapshot --debug
- run: ./scripts/generate-checksums.sh - run: ./scripts/generate-checksums.sh
- run: ./scripts/publish-checksums.sh
- when: - when:
condition: condition:
not: << parameters.publish >> not: << parameters.dry-run >>
steps: steps:
- run: goreleaser release --rm-dist --snapshot - run: goreleaser release --rm-dist --debug
- run: ./scripts/generate-checksums.sh - run: ./scripts/generate-checksums.sh
- store_artifacts: - run: ./scripts/publish-checksums.sh
path: dist
- persist_to_workspace:
root: "."
paths:
- dist
- save_cache:
name: save cargo cache
key: v3-go-deps-{{ arch }}-{{ checksum "~/go/src/github.com/filecoin-project/lotus/go.sum" }}
paths:
- "~/.rustup"
- "~/.cargo"
build-appimage: build-appimage:
machine: machine:
@ -433,7 +401,7 @@ jobs:
steps: steps:
- checkout - checkout
- attach_workspace: - attach_workspace:
at: "." at: /tmp/workspace
- run: - run:
name: Update Go name: Update Go
command: | command: |
@ -468,13 +436,11 @@ jobs:
command: | command: |
sed -i "s/version: latest/version: ${CIRCLE_TAG:-latest}/" AppImageBuilder.yml sed -i "s/version: latest/version: ${CIRCLE_TAG:-latest}/" AppImageBuilder.yml
make appimage make appimage
- run: - run: |
name: prepare workspace mkdir -p /tmp/workspace/appimage && \
command: | mv Lotus-*.AppImage /tmp/workspace/appimage/
mkdir appimage
mv Lotus-*.AppImage appimage
- persist_to_workspace: - persist_to_workspace:
root: "." root: /tmp/workspace
paths: paths:
- appimage - appimage
@ -482,7 +448,6 @@ jobs:
gofmt: gofmt:
executor: golang executor: golang
steps: steps:
- install-deps
- prepare - prepare
- run: - run:
command: "! go fmt ./... 2>&1 | read" command: "! go fmt ./... 2>&1 | read"
@ -490,7 +455,6 @@ jobs:
gen-check: gen-check:
executor: golang executor: golang
steps: steps:
- install-deps
- prepare - prepare
- run: make deps - run: make deps
- run: go install golang.org/x/tools/cmd/goimports - run: go install golang.org/x/tools/cmd/goimports
@ -505,7 +469,6 @@ jobs:
docs-check: docs-check:
executor: golang executor: golang
steps: steps:
- install-deps
- prepare - prepare
- run: go install golang.org/x/tools/cmd/goimports - run: go install golang.org/x/tools/cmd/goimports
- run: zcat build/openrpc/full.json.gz | jq > ../pre-openrpc-full - run: zcat build/openrpc/full.json.gz | jq > ../pre-openrpc-full
@ -542,7 +505,6 @@ jobs:
Arguments to pass to golangci-lint Arguments to pass to golangci-lint
executor: << parameters.executor >> executor: << parameters.executor >>
steps: steps:
- install-deps
- prepare - prepare
- run: - run:
command: make deps command: make deps
@ -570,13 +532,13 @@ jobs:
steps: steps:
- run: - run:
name: Install git jq curl name: Install git jq curl
command: apt update && apt install -y git jq curl command: apt update && apt install -y git jq curl sudo
- checkout - checkout
- git_fetch_all_tags - git_fetch_all_tags
- checkout - checkout
- install_ipfs - install_ipfs
- attach_workspace: - attach_workspace:
at: "." at: /tmp/workspace
- when: - when:
condition: << parameters.linux >> condition: << parameters.linux >>
steps: steps:
@ -751,8 +713,6 @@ jobs:
name: packer name: packer
steps: steps:
- checkout - checkout
- attach_workspace:
at: "."
- packer_build: - packer_build:
template: tools/packer/lotus-snap.pkr.hcl template: tools/packer/lotus-snap.pkr.hcl
publish-dockerhub: publish-dockerhub:
@ -846,41 +806,12 @@ workflows:
only: only:
- master - master
- build-debug - build-debug
- build-linux:
filters:
tags:
only:
- /^v\d+\.\d+\.\d+(-rc\d+)?$/
- build-ntwk-calibration:
filters:
tags:
only:
- /^v\d+\.\d+\.\d+(-rc\d+)?$/
- build-ntwk-butterfly:
filters:
tags:
only:
- /^v\d+\.\d+\.\d+(-rc\d+)?$/
- build-lotus-soup - build-lotus-soup
- build-macos:
name: publish-macos release:
publish: true jobs:
filters: - build-linux-amd64:
branches: name: "Build ( linux / amd64 )"
ignore:
- /.*/
tags:
only:
- /^v\d+\.\d+\.\d+$/
- build-macos:
filters:
branches:
only:
- /^release\/v\d+\.\d+\.\d+(-rc\d+)?$/
tags:
only:
- /^v\d+\.\d+\.\d+-rc\d+$/
- build-appimage:
filters: filters:
branches: branches:
only: only:
@ -888,11 +819,32 @@ workflows:
tags: tags:
only: only:
- /^v\d+\.\d+\.\d+(-rc\d+)?$/ - /^v\d+\.\d+\.\d+(-rc\d+)?$/
- publish: - build-darwin-amd64:
name: publish-linux name: "Build ( darwin / amd64 )"
linux: true filters:
branches:
only:
- /^release\/v\d+\.\d+\.\d+(-rc\d+)?$/
tags:
only:
- /^v\d+\.\d+\.\d+(-rc\d+)?$/
- build-darwin-arm64:
name: "Build ( darwin / arm64 )"
filters:
branches:
only:
- /^release\/v\d+\.\d+\.\d+(-rc\d+)?$/
tags:
only:
- /^v\d+\.\d+\.\d+(-rc\d+)?$/
- release:
name: "Release"
context:
- filecoin-goreleaser-key
requires: requires:
- build-linux - "Build ( darwin / amd64 )"
- "Build ( linux / amd64 )"
- "Build ( darwin / arm64 )"
filters: filters:
branches: branches:
ignore: ignore:
@ -900,11 +852,33 @@ workflows:
tags: tags:
only: only:
- /^v\d+\.\d+\.\d+(-rc\d+)?$/ - /^v\d+\.\d+\.\d+(-rc\d+)?$/
- release:
name: "Release (dry-run)"
context:
- filecoin-goreleaser-key
dry-run: true
requires:
- "Build ( darwin / amd64 )"
- "Build ( linux / amd64 )"
- "Build ( darwin / arm64 )"
filters:
branches:
only:
- /^release\/v\d+\.\d+\.\d+(-rc\d+)?$/
- build-appimage:
name: "Build AppImage"
filters:
branches:
only:
- /^release\/v\d+\.\d+\.\d+(-rc\d+)?$/
tags:
only:
- /^v\d+\.\d+\.\d+(-rc\d+)?$/
- publish: - publish:
name: publish-appimage name: "Publish AppImage"
appimage: true appimage: true
requires: requires:
- build-appimage - "Build AppImage"
filters: filters:
branches: branches:
ignore: ignore:
@ -913,14 +887,14 @@ workflows:
only: only:
- /^v\d+\.\d+\.\d+(-rc\d+)?$/ - /^v\d+\.\d+\.\d+(-rc\d+)?$/
- build-and-push-image: - build-and-push-image:
name: build-and-push/lotus-all-in-one name: "Publish ECR (lotus-all-in-one)"
dockerfile: Dockerfile.lotus dockerfile: Dockerfile.lotus
path: . path: .
repo: lotus-dev repo: lotus-dev
tag: '${CIRCLE_SHA1:0:8}' tag: '${CIRCLE_SHA1:0:8}'
target: lotus-all-in-one target: lotus-all-in-one
- build-and-push-image: - build-and-push-image:
name: build-and-push/lotus-test name: "Publish ECR (lotus-test)"
dockerfile: Dockerfile.lotus dockerfile: Dockerfile.lotus
path: . path: .
repo: lotus-test repo: lotus-test
@ -971,7 +945,7 @@ workflows:
only: only:
- /^v\d+\.\d+\.\d+-rc\d+$/ - /^v\d+\.\d+\.\d+-rc\d+$/
- publish-dockerhub: - publish-dockerhub:
name: publish-dockerhub name: "Publish Dockerhub (stable)"
tag: stable tag: stable
filters: filters:
branches: branches:
@ -979,7 +953,17 @@ workflows:
- /.*/ - /.*/
tags: tags:
only: only:
- /^v\d+\.\d+\.\d+(-rc\d+)?$/ - /^v\d+\.\d+\.\d+$/
- publish-dockerhub:
name: "Publish Dockerhub (candidate)"
tag: candidate
filters:
branches:
ignore:
- /.*/
tags:
only:
- /^v\d+\.\d+\.\d+-rc\d+$/
nightly: nightly:
triggers: triggers:

2
.gitattributes vendored Normal file
View File

@ -0,0 +1,2 @@
chain/actors/builtin/*/v* linguist-generated=true
chain/actors/builtin/*/message* linguist-generated=true

View File

@ -1,119 +1,65 @@
project_name: lotus project_name: lotus
before:
hooks:
- go mod tidy
- make deps
universal_binaries: universal_binaries:
- id: lotus - id: lotus
replace: true replace: true
name_template: lotus name_template: lotus
ids:
- lotus_darwin_amd64
- lotus_darwin_arm64
- id: lotus-miner - id: lotus-miner
replace: true replace: true
name_template: lotus-miner name_template: lotus-miner
ids:
- lotus-miner_darwin_amd64
- lotus-miner_darwin_arm64
- id: lotus-worker - id: lotus-worker
replace: true replace: true
name_template: lotus-worker name_template: lotus-worker
ids:
- lotus-worker_darwin_amd64
- lotus-worker_darwin_arm64
builds: builds:
- id: lotus_darwin_amd64 - id: lotus
main: ./cmd/lotus
binary: lotus binary: lotus
builder: prebuilt
goos: goos:
- darwin - darwin
- linux
goarch: goarch:
- amd64 - amd64
env: - arm64
- CGO_ENABLED=1 goamd64:
- FFI_BUILD_FROM_SOURCE=1 - v1
ldflags: ignore:
- -X=github.com/filecoin-project/lotus/build.CurrentCommit=+git.{{.ShortCommit}} - goos: linux
- id: lotus-miner_darwin_amd64 goarch: arm64
main: ./cmd/lotus-miner prebuilt:
path: /tmp/workspace/{{ .Os }}_{{ .Arch }}{{ with .Amd64 }}_{{ . }}{{ end }}/lotus
- id: lotus-miner
binary: lotus-miner binary: lotus-miner
builder: prebuilt
goos: goos:
- darwin - darwin
- linux
goarch: goarch:
- amd64 - amd64
env: - arm64
- CGO_ENABLED=1 goamd64:
- FFI_BUILD_FROM_SOURCE=1 - v1
ldflags: ignore:
- -X=github.com/filecoin-project/lotus/build.CurrentCommit=+git.{{.ShortCommit}} - goos: linux
- id: lotus-worker_darwin_amd64 goarch: arm64
main: ./cmd/lotus-worker prebuilt:
path: /tmp/workspace/{{ .Os }}_{{ .Arch }}{{ with .Amd64 }}_{{ . }}{{ end }}/lotus-miner
- id: lotus-worker
binary: lotus-worker binary: lotus-worker
builder: prebuilt
goos: goos:
- darwin - darwin
- linux
goarch: goarch:
- amd64 - amd64
env:
- CGO_ENABLED=1
- FFI_BUILD_FROM_SOURCE=1
ldflags:
- -X=github.com/filecoin-project/lotus/build.CurrentCommit=+git.{{.ShortCommit}}
- id: lotus_darwin_arm64
main: ./cmd/lotus
binary: lotus
goos:
- darwin
goarch:
- arm64 - arm64
env: goamd64:
- CGO_ENABLED=1 - v1
- FFI_BUILD_FROM_SOURCE=1 ignore:
- CPATH=/opt/homebrew/include - goos: linux
- LIBRARY_PATH=/opt/homebrew/lib goarch: arm64
ldflags: prebuilt:
- -X=github.com/filecoin-project/lotus/build.CurrentCommit=+git.{{.ShortCommit}} path: /tmp/workspace/{{ .Os }}_{{ .Arch }}{{ with .Amd64 }}_{{ . }}{{ end }}/lotus-worker
- id: lotus-miner_darwin_arm64
main: ./cmd/lotus-miner
binary: lotus-miner
goos:
- darwin
goarch:
- arm64
env:
- CGO_ENABLED=1
- FFI_BUILD_FROM_SOURCE=1
- CPATH=/opt/homebrew/include
- LIBRARY_PATH=/opt/homebrew/lib
ldflags:
- -X=github.com/filecoin-project/lotus/build.CurrentCommit=+git.{{.ShortCommit}}
- id: lotus-worker_darwin_arm64
main: ./cmd/lotus-worker
binary: lotus-worker
goos:
- darwin
goarch:
- arm64
env:
- CGO_ENABLED=1
- FFI_BUILD_FROM_SOURCE=1
- CPATH=/opt/homebrew/include
- LIBRARY_PATH=/opt/homebrew/lib
ldflags:
- -X=github.com/filecoin-project/lotus/build.CurrentCommit=+git.{{.ShortCommit}}
# - id: linux
# main: ./cmd/lotus
# binary: lotus
# goos:
# - linux
# goarch:
# - amd64
# env:
# - CGO_ENABLED=1
# ldflags:
# - -X=github.com/filecoin-project/lotus/build.CurrentCommit=+git.{{.ShortCommit}}
archives: archives:
- id: primary - id: primary
@ -131,7 +77,6 @@ release:
prerelease: auto prerelease: auto
name_template: "Release v{{.Version}}" name_template: "Release v{{.Version}}"
brews: brews:
- tap: - tap:
owner: filecoin-project owner: filecoin-project
@ -151,6 +96,7 @@ brews:
homepage: "https://filecoin.io" homepage: "https://filecoin.io"
description: "A homebrew cask for installing filecoin-project/lotus on MacOS" description: "A homebrew cask for installing filecoin-project/lotus on MacOS"
license: MIT license: MIT
skip_upload: auto
dependencies: dependencies:
- name: hwloc - name: hwloc

View File

@ -1,28 +1,29 @@
# Lotus changelog # Lotus changelog
# 1.18.0-rc5 / 2022-11-1 # 1.18.0 / 2022-11-15
> ⚠️ **Please note that from Lotus v1.17.2&^ will require a Go-version of v1.18.1&^** > ⚠️ **Please note that from Lotus v1.17.2&^ will require a Go-version of v1.18.1&^**
This is the fifth release canadiate of the upcoming MANDATORY release of Lotus that introduces [Filecoin network v17, This is the final release of the upcoming MANDATORY release of Lotus that introduces [Filecoin network v17,
codenamed the Shark upgrade](https://github.com/filecoin-project/community/discussions/74?sort=top#discussioncomment-3825422). Shark upgrade delivers a wave of protocol refinements that will allow for useful smart contracts to be written using the FVM (eg. programmable markets, lending contracts, etc.). codenamed the Shark upgrade](https://github.com/filecoin-project/community/discussions/74?sort=top#discussioncomment-3825422). Shark upgrade delivers a wave of protocol refinements that will allow for useful smart contracts to be written using the FVM (eg. programmable markets, lending contracts, etc.).
A full changelog will be published upon final release. **The Filecoin mainnet is scheduled to upgrade to nv17 at epoch 2383680, on Nov 30th on 2022-11-30T14:00:00Z. All node operators, including storage providers, must upgrade to this release before that time. Storage providers must update their daemons, miners, market and worker(s)/boost.**
The Shark upgrade introduces the following FIPs, delivered in [actors v9](https://github.com/filecoin-project/specs-actors/releases/tag/v9.0.1): The Shark upgrade introduces the following FIPs, delivered in [actors v9](https://github.com/filecoin-project/builtin-actors/releases/tag/v9.0.3):
- [FIP0029 Beneficiary Address for Storage Providers](https://github.com/filecoin-project/FIPs/blob/master/FIPS/fip-0029.md): step towards better lending market for SP - [FIP0029 Beneficiary Address for Storage Providers](https://github.com/filecoin-project/FIPs/blob/master/FIPS/fip-0029.md): step towards better lending market for SP
- [FIP0034 Fix PreCommit Deposit Independent of Sector Content](https://github.com/filecoin-project/FIPs/blob/master/FIPS/fip-0034.md): resolves a significant weakening of Filecoin PoReps security guarantees - [FIP0034 Fix PreCommit Deposit Independent of Sector Content](https://github.com/filecoin-project/FIPs/blob/master/FIPS/fip-0034.md): resolves a significant weakening of Filecoin PoReps security guarantees
- ❗Pre-commit deposit will be calculated as the 20-day projection of expected reward earned by a sector with a sector quality of 10 (i.e. full of verified deals), regardless of sector content. Leave the initial pledge value, due when the sector is proven, unchanged. - ❗Pre-commit deposit will be calculated as the 20-day projection of expected reward earned by a sector with **a sector quality of 10 (i.e. full of verified deals)**, regardless of sector content. The Initial Pledge value, due when the sector is proven, is left **unchanged**.
- [FIP0041 Forward Compatibility for PreCommit](https://github.com/filecoin-project/FIPs/blob/master/FIPS/fip-0041.md): enables a cleaner and easier transition to Programmable Storage Markets - [FIP0041 Forward Compatibility for PreCommit](https://github.com/filecoin-project/FIPs/blob/master/FIPS/fip-0041.md): enables a cleaner and easier transition to Programmable Storage Markets
- [FIP0044 Standard Message Authentication](https://github.com/filecoin-project/FIPs/blob/master/FIPS/fip-0044.md): enable metadata authentication for user defined actor - [FIP0044 Standard Message Authentication](https://github.com/filecoin-project/FIPs/blob/master/FIPS/fip-0044.md): enable metadata authentication for user defined actor
- [FIP0045 Decoupling Fil+ from Marketplace](https://github.com/filecoin-project/FIPs/blob/master/FIPS/fip-0045.md): DataCap and the QAP it brings is now associated with DATA. DataCap for the data many have terms where anyone who cares about that piece of data may extend the term, which incentives SPs to store the data longer on the network - [FIP0045 Decoupling Fil+ from Marketplace](https://github.com/filecoin-project/FIPs/blob/master/FIPS/fip-0045.md): DataCap and the 10x QAP is now only associated with how long DATA is wanted to be stored on the network.
- HUGE step towards user programmable storage market - This is a transitional state to enabling far more efficient and dynamic storage markets on Filecoin network in the future.
- ⭐️ First Fungible Token Contract - Datacap Actor, on Filecoin! ([fungible token standard](https://github.com/filecoin-project/FIPs/blob/master/FRCs/frc-0046.md), [token contract library](https://github.com/helix-onchain/filecoin/tree/5455f4f831e0f3f20005a9a789623d7ad6dada15/frc46_token)) - ⭐️ First Fungible Token Contract - Datacap Actor, on Filecoin! ([fungible token standard](https://github.com/filecoin-project/FIPs/blob/master/FRCs/frc-0046.md), [token contract library](https://github.com/helix-onchain/filecoin/tree/5455f4f831e0f3f20005a9a789623d7ad6dada15/frc46_token)).
- For storage deal participants (clients and storage providers):
- `PublishStorageDeals`/`ProveCommit(Aggregate)`/`ProveReplicaUpdates` message that includes verified deals will see a gas usage increase, more details can be found [here](https://github.com/filecoin-project/FIPs/blob/385f069b3b146c5fef4fdc1109a0e2f35f399e48/FIPS/fip-0045.md?plain=1#L784)
## Calibration-net Upgrade - `Term` is introduced for defining how long the DataCap is assigned to a piece of data. Anyone who cares about that piece of data may extend the _term_, which incentives SPs to store the data longer on the network without a new deal/resealing.
- There is no more diluted verified deal QAP due to deal/sector space time for new sectors that contains verified deals after this upgrade.
This release candidate sets the calibration-net upgrade at epoch 16800. The bundle the network will be using is [v9.0.3](https://github.com/filecoin-project/builtin-actors/releases/tag/v9.0.3)(located at `build/actors/v9.tar.zst` ). Upon the migration, the manifest CID should be `bafy2bzacedbedgynklc4dgpyxippkxmba2mgtw7ecntoneclsvvl4klqwuyyy`. - SPs may enjoy 90 days of extra QAP than deal duration by default, given `term_max` is always `deal duration + 90 days`.
❗ We highly recommend all lotus users, especially storage providers, developers and clients to read the FIPs in detail to understand the protocol changes and potential impact to network participants!
## Snapshots ## Snapshots
@ -31,7 +32,34 @@ We are planning to switch [the snapshot service listed in lotus docs](https://lo
## Migration ## Migration
(TBC) We are expecting a heavier than normal state migration for this upgrade due to the amount of the state changes introduced.
All node operators, including storage providers, should be aware that two pre-migrations are being scheduled. The first pre-migration will begin at 2022-11-30T12:00:00Z (120 minutes before the real upgrade), the second pre-migration will begin at 2022-11-30T13:45:00Z (7.5 minutes before the real upgrade).
The first pre-migration will take up to 1.5hr, depending on the amount of the historical state in the node blockstore and the hardware specs the node is running on. During this time, expect slower block validation times, increased CPU and memory usage, and longer delays for API queries.
We recommend node operators (who haven't enbabled splistore `universal` mode) that do not care about historical chain states, to prune the chain blockstore by syncing from a snapshot 1-2 days before the upgrade.
Note to full archival node operators: you may expect a migration that takes up to 20 min upon the upgrade, during this period your node will fall out of sync and your chain service may have some disruption. However, you can expect the node to catch up soon after the migration completes.
### v9 Built-in actor bundles
Bundles for all networks(mainnet, calibnet, and etc) are included in the lotus source tree (`build/actors/`) and embedded on build, for v9 actors you can find it [here](https://github.com/filecoin-project/lotus/blob/master/build/actors/v9.tar.zst).
Reminder: Lotus verifies that the bundle CIDs are the right ones upon build & upgrade against the values in `build/builtin_actors_gen.go`, according to the network you are building. You may also check the bundle manifest CID matches the bundle gen-ed values by running `lotus state actor-cids --network-version 17`.
The manifest CID & full list of actor code CIDs for nv17 using [actor v9](https://github.com/filecoin-project/builtin-actors/releases/tag/v9.0.3) is:
```
"_manifest": "bafy2bzaceb6j6666h36xnhksu3ww4kxb6e25niayfgkdnifaqi6m6ooc66i6i"
"account": "bafk2bzacect2p7urje3pylrrrjy3tngn6yaih4gtzauuatf2jllk3ksgfiw2y"
"cron": "bafk2bzacebcec3lffmos3nawm5cvwehssxeqwxixoyyfvejy7viszzsxzyu26"
"datacap": "bafk2bzacebb6uy2ys7tapekmtj7apnjg7oyj4ia5t7tlkvbmwtxwv74lb2pug"
"init": "bafk2bzacebtdq4zyuxk2fzbdkva6kc4mx75mkbfmldplfntayhbl5wkqou33i"
"multisig": "bafk2bzacec4va3nmugyqjqrs3lqyr2ij67jhjia5frvx7omnh2isha6abxzya"
"paymentchannel": "bafk2bzacebhdvjbjcgupklddfavzef4e4gnkt3xk3rbmgfmk7xhecszhfxeds"
"reward": "bafk2bzacebezgbbmcm2gbcqwisus5fjvpj7hhmu5ubd37phuku3hmkfulxm2o"
"storagemarket": "bafk2bzacec3j7p6gklk64stax5px3xxd7hdtejaepnd4nw7s2adihde6emkcu"
"storageminer": "bafk2bzacedyux5hlrildwutvvjdcsvjtwsoc5xnqdjl73ouiukgklekeuyfl4"
"storagepower": "bafk2bzacedsetphfajgne4qy3vdrpyd6ekcmtfs2zkjut4r34cvnuoqemdrtw"
"system": "bafk2bzaceagvlo2jtahj7dloshrmwfulrd6e2izqev32qm46eumf754weec6c"
"verifiedregistry": "bafk2bzacecf3yodlyudzukumehbuabgqljyhjt5ifiv4vetcfohnvsxzynwga"
```
## New Features ## New Features
- Integrate actor v9: - Integrate actor v9:
@ -61,7 +89,6 @@ We are planning to switch [the snapshot service listed in lotus docs](https://lo
- github.com/filecoin-project/go-jsonrpc (v0.1.7 -> v0.1.8) - github.com/filecoin-project/go-jsonrpc (v0.1.7 -> v0.1.8)
- github.com/filecoin-project/go-state-types (v0.1.12-beta -> v0.9.0): - github.com/filecoin-project/go-state-types (v0.1.12-beta -> v0.9.0):
## Others ## Others
- fix: upgrade: no splash banner for nv17 :( ([filecoin-project/lotus#9486](https://github.com/filecoin-project/lotus/pull/9486)) - fix: upgrade: no splash banner for nv17 :( ([filecoin-project/lotus#9486](https://github.com/filecoin-project/lotus/pull/9486))
- chore: build: add calib upgrade param for shark ([filecoin-project/lotus#9483](https://github.com/filecoin-project/lotus/pull/9483)) - chore: build: add calib upgrade param for shark ([filecoin-project/lotus#9483](https://github.com/filecoin-project/lotus/pull/9483))
@ -70,22 +97,35 @@ We are planning to switch [the snapshot service listed in lotus docs](https://lo
- Delete lotus-pond (#9352) ([filecoin-project/lotus#9352](https://github.com/filecoin-project/lotus/pull/9352)) - Delete lotus-pond (#9352) ([filecoin-project/lotus#9352](https://github.com/filecoin-project/lotus/pull/9352))
- build: set version to v1.18.0-dev - build: set version to v1.18.0-dev
## lotus-market EOL notice
As mentioned in [lotus v1.17.0 release notes](https://github.com/filecoin-project/lotus/releases/tag/v1.17.0), markets related features, enhancements and fixes is now lower priority for Lotus. We recommend our users to migrate to other deal making focused software, like [boost](https://boost.filecoin.io/) as soon as possible. That being said, the lotus maintainers will be:
- Lotus maintainers will stop supporting lotus-market subcomponent/**storage** deal making related issues or enhancements on Jan 31, 2023.
- In Q2 2023, we will be deprecating/removing lotus-market related code from this repository.
If you have any questions or concerns, please raise them in [Lotus discussion](https://github.com/filecoin-project/lotus/discussions/categories/market)!
## Contributors ## Contributors
| Contributor | Commits | Lines ± | Files Changed | | Contributor | Commits | Lines ± | Files Changed |
|-------------|---------|---------|---------------| |-------------|---------|---------|---------------|
| Geoff Stuart | 51 | +8677/-19320 | 401 | | @geoff-vball | 73 | +14533/-19712 | 509 |
| Aayush Rajasekaran | 5 | +1452/-166 | 34 | | @arajasek | 16 | +2230/-303 | 49 |
| Łukasz Magiera | 5 | +429/-135 | 45 | | @arajasek | 29 | +701/-297 | 117 |
| Aayush | 19 | +281/-157 | 72 | | @magik6k | 5 | +429/-135 | 45 |
| Shrenuj Bansal | 3 | +176/-61 | 10 | | @Frrist | 1 | +246/-203 | 25 |
| Jennifer Wang | 7 | +19/-18 | 15 | | @stebalien | 2 | +323/-2 | 6 |
| simlecode | 1 | +5/-5 | 4 | | @shrenujbansal | 3 | +176/-61 | 10 |
| @ZenGround0 | 2 | +78/-38 | 5 |
| @jennijuju | 8 | +97/-18 | 16 |
| @simlecode | 5 | +18/-9 | 11 |
| Kevin Li | 1 | +7/-0 | 1 | | Kevin Li | 1 | +7/-0 | 1 |
| @zenground0 | 2 | +3/-3 | 3 |
| @jennijuju | 1 | +3/-3 | 2 |
| Rod Vagg | 1 | +3/-2 | 2 | | Rod Vagg | 1 | +3/-2 | 2 |
| @jennijuju | 1 | +2/-2 | 2 |
| Peter Rabbitson | 1 | +3/-0 | 1 | | Peter Rabbitson | 1 | +3/-0 | 1 |
| ZenGround0 | 1 | +2/-0 | 1 | | Jakub Sztandera | 1 | +1/-1 | 1 |
# v1.17.2 / 2022-10-05 # v1.17.2 / 2022-10-05

View File

@ -3,28 +3,43 @@ MAINTAINER Lotus Development Team
RUN apt-get update && apt-get install -y ca-certificates build-essential clang ocl-icd-opencl-dev ocl-icd-libopencl1 jq libhwloc-dev RUN apt-get update && apt-get install -y ca-certificates build-essential clang ocl-icd-opencl-dev ocl-icd-libopencl1 jq libhwloc-dev
ARG RUST_VERSION=nightly
ENV XDG_CACHE_HOME="/tmp" ENV XDG_CACHE_HOME="/tmp"
### taken from https://github.com/rust-lang/docker-rust/blob/master/1.63.0/buster/Dockerfile
ENV RUSTUP_HOME=/usr/local/rustup \ ENV RUSTUP_HOME=/usr/local/rustup \
CARGO_HOME=/usr/local/cargo \ CARGO_HOME=/usr/local/cargo \
PATH=/usr/local/cargo/bin:$PATH PATH=/usr/local/cargo/bin:$PATH \
RUST_VERSION=1.63.0
RUN wget "https://static.rust-lang.org/rustup/dist/x86_64-unknown-linux-gnu/rustup-init"; \ RUN set -eux; \
dpkgArch="$(dpkg --print-architecture)"; \
case "${dpkgArch##*-}" in \
amd64) rustArch='x86_64-unknown-linux-gnu'; rustupSha256='5cc9ffd1026e82e7fb2eec2121ad71f4b0f044e88bca39207b3f6b769aaa799c' ;; \
arm64) rustArch='aarch64-unknown-linux-gnu'; rustupSha256='e189948e396d47254103a49c987e7fb0e5dd8e34b200aa4481ecc4b8e41fb929' ;; \
*) echo >&2 "unsupported architecture: ${dpkgArch}"; exit 1 ;; \
esac; \
url="https://static.rust-lang.org/rustup/archive/1.25.1/${rustArch}/rustup-init"; \
wget "$url"; \
echo "${rustupSha256} *rustup-init" | sha256sum -c -; \
chmod +x rustup-init; \ chmod +x rustup-init; \
./rustup-init -y --no-modify-path --profile minimal --default-toolchain $RUST_VERSION; \ ./rustup-init -y --no-modify-path --profile minimal --default-toolchain $RUST_VERSION --default-host ${rustArch}; \
rm rustup-init; \ rm rustup-init; \
chmod -R a+w $RUSTUP_HOME $CARGO_HOME; \ chmod -R a+w $RUSTUP_HOME $CARGO_HOME; \
rustup --version; \ rustup --version; \
cargo --version; \ cargo --version; \
rustc --version; rustc --version;
### end rust
FROM builder-deps AS builder-local FROM builder-deps AS builder-local
MAINTAINER Lotus Development Team MAINTAINER Lotus Development Team
COPY ./ /opt/filecoin COPY ./ /opt/filecoin
WORKDIR /opt/filecoin WORKDIR /opt/filecoin
### make configurable filecoin-ffi build
ARG FFI_BUILD_FROM_SOURCE=0
ENV FFI_BUILD_FROM_SOURCE=${FFI_BUILD_FROM_SOURCE}
RUN make clean deps RUN make clean deps
@ -52,14 +67,14 @@ MAINTAINER Lotus Development Team
# Base resources # Base resources
COPY --from=builder /etc/ssl/certs /etc/ssl/certs COPY --from=builder /etc/ssl/certs /etc/ssl/certs
COPY --from=builder /lib/x86_64-linux-gnu/libdl.so.2 /lib/ COPY --from=builder /lib/*/libdl.so.2 /lib/
COPY --from=builder /lib/x86_64-linux-gnu/librt.so.1 /lib/ COPY --from=builder /lib/*/librt.so.1 /lib/
COPY --from=builder /lib/x86_64-linux-gnu/libgcc_s.so.1 /lib/ COPY --from=builder /lib/*/libgcc_s.so.1 /lib/
COPY --from=builder /lib/x86_64-linux-gnu/libutil.so.1 /lib/ COPY --from=builder /lib/*/libutil.so.1 /lib/
COPY --from=builder /usr/lib/x86_64-linux-gnu/libltdl.so.7 /lib/ COPY --from=builder /usr/lib/*/libltdl.so.7 /lib/
COPY --from=builder /usr/lib/x86_64-linux-gnu/libnuma.so.1 /lib/ COPY --from=builder /usr/lib/*/libnuma.so.1 /lib/
COPY --from=builder /usr/lib/x86_64-linux-gnu/libhwloc.so.5 /lib/ COPY --from=builder /usr/lib/*/libhwloc.so.5 /lib/
COPY --from=builder /usr/lib/x86_64-linux-gnu/libOpenCL.so.1 /lib/ COPY --from=builder /usr/lib/*/libOpenCL.so.1 /lib/
RUN useradd -r -u 532 -U fc \ RUN useradd -r -u 532 -U fc \
&& mkdir -p /etc/OpenCL/vendors \ && mkdir -p /etc/OpenCL/vendors \

View File

@ -6,6 +6,7 @@ import (
"fmt" "fmt"
"time" "time"
"github.com/google/uuid"
blocks "github.com/ipfs/go-block-format" blocks "github.com/ipfs/go-block-format"
"github.com/ipfs/go-cid" "github.com/ipfs/go-cid"
"github.com/libp2p/go-libp2p/core/peer" "github.com/libp2p/go-libp2p/core/peer"
@ -763,6 +764,9 @@ type FullNode interface {
// LOTUS_BACKUP_BASE_PATH environment variable set to some path, and that // LOTUS_BACKUP_BASE_PATH environment variable set to some path, and that
// the path specified when calling CreateBackup is within the base path // the path specified when calling CreateBackup is within the base path
CreateBackup(ctx context.Context, fpath string) error //perm:admin CreateBackup(ctx context.Context, fpath string) error //perm:admin
RaftState(ctx context.Context) (*RaftStateData, error) //perm:read
RaftLeader(ctx context.Context) (peer.ID, error) //perm:read
} }
type StorageAsk struct { type StorageAsk struct {
@ -1012,8 +1016,12 @@ type RetrievalOrder struct {
Client address.Address Client address.Address
Miner address.Address Miner address.Address
MinerPeer *retrievalmarket.RetrievalPeer MinerPeer *retrievalmarket.RetrievalPeer
RemoteStore *RemoteStoreID `json:"RemoteStore,omitempty"`
} }
type RemoteStoreID = uuid.UUID
type InvocResult struct { type InvocResult struct {
MsgCid cid.Cid MsgCid cid.Cid
Msg *types.Message Msg *types.Message

View File

@ -320,7 +320,7 @@ type StorageMiner interface {
// the path specified when calling CreateBackup is within the base path // the path specified when calling CreateBackup is within the base path
CreateBackup(ctx context.Context, fpath string) error //perm:admin CreateBackup(ctx context.Context, fpath string) error //perm:admin
CheckProvable(ctx context.Context, pp abi.RegisteredPoStProof, sectors []storiface.SectorRef, expensive bool) (map[abi.SectorNumber]string, error) //perm:admin CheckProvable(ctx context.Context, pp abi.RegisteredPoStProof, sectors []storiface.SectorRef) (map[abi.SectorNumber]string, error) //perm:admin
ComputeProof(ctx context.Context, ssi []builtin.ExtendedSectorInfo, rand abi.PoStRandomness, poStEpoch abi.ChainEpoch, nv abinetwork.Version) ([]builtin.PoStProof, error) //perm:read ComputeProof(ctx context.Context, ssi []builtin.ExtendedSectorInfo, rand abi.PoStRandomness, poStEpoch abi.ChainEpoch, nv abinetwork.Version) ([]builtin.PoStProof, error) //perm:read

View File

@ -349,6 +349,10 @@ func init() {
addExample(map[string]bitfield.BitField{ addExample(map[string]bitfield.BitField{
"": bitfield.NewFromSet([]uint64{5, 6, 7, 10}), "": bitfield.NewFromSet([]uint64{5, 6, 7, 10}),
}) })
addExample(&api.RaftStateData{
NonceMap: make(map[address.Address]uint64),
MsgUuids: make(map[uuid.UUID]*types.SignedMessage),
})
addExample(http.Header{ addExample(http.Header{
"Authorization": []string{"Bearer ey.."}, "Authorization": []string{"Bearer ey.."},
@ -361,6 +365,7 @@ func init() {
Headers: nil, Headers: nil,
}, },
}) })
addExample(&uuid.UUID{})
} }
func GetAPIType(name, pkg string) (i interface{}, t reflect.Type, permStruct []reflect.Type) { func GetAPIType(name, pkg string) (i interface{}, t reflect.Type, permStruct []reflect.Type) {

View File

@ -2244,6 +2244,36 @@ func (mr *MockFullNodeMockRecorder) PaychVoucherSubmit(arg0, arg1, arg2, arg3, a
return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "PaychVoucherSubmit", reflect.TypeOf((*MockFullNode)(nil).PaychVoucherSubmit), arg0, arg1, arg2, arg3, arg4) return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "PaychVoucherSubmit", reflect.TypeOf((*MockFullNode)(nil).PaychVoucherSubmit), arg0, arg1, arg2, arg3, arg4)
} }
// RaftLeader mocks base method.
func (m *MockFullNode) RaftLeader(arg0 context.Context) (peer.ID, error) {
m.ctrl.T.Helper()
ret := m.ctrl.Call(m, "RaftLeader", arg0)
ret0, _ := ret[0].(peer.ID)
ret1, _ := ret[1].(error)
return ret0, ret1
}
// RaftLeader indicates an expected call of RaftLeader.
func (mr *MockFullNodeMockRecorder) RaftLeader(arg0 interface{}) *gomock.Call {
mr.mock.ctrl.T.Helper()
return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "RaftLeader", reflect.TypeOf((*MockFullNode)(nil).RaftLeader), arg0)
}
// RaftState mocks base method.
func (m *MockFullNode) RaftState(arg0 context.Context) (*api.RaftStateData, error) {
m.ctrl.T.Helper()
ret := m.ctrl.Call(m, "RaftState", arg0)
ret0, _ := ret[0].(*api.RaftStateData)
ret1, _ := ret[1].(error)
return ret0, ret1
}
// RaftState indicates an expected call of RaftState.
func (mr *MockFullNodeMockRecorder) RaftState(arg0 interface{}) *gomock.Call {
mr.mock.ctrl.T.Helper()
return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "RaftState", reflect.TypeOf((*MockFullNode)(nil).RaftState), arg0)
}
// Session mocks base method. // Session mocks base method.
func (m *MockFullNode) Session(arg0 context.Context) (uuid.UUID, error) { func (m *MockFullNode) Session(arg0 context.Context) (uuid.UUID, error) {
m.ctrl.T.Helper() m.ctrl.T.Helper()

View File

@ -342,6 +342,10 @@ type FullNodeStruct struct {
PaychVoucherSubmit func(p0 context.Context, p1 address.Address, p2 *paych.SignedVoucher, p3 []byte, p4 []byte) (cid.Cid, error) `perm:"sign"` PaychVoucherSubmit func(p0 context.Context, p1 address.Address, p2 *paych.SignedVoucher, p3 []byte, p4 []byte) (cid.Cid, error) `perm:"sign"`
RaftLeader func(p0 context.Context) (peer.ID, error) `perm:"read"`
RaftState func(p0 context.Context) (*RaftStateData, error) `perm:"read"`
StateAccountKey func(p0 context.Context, p1 address.Address, p2 types.TipSetKey) (address.Address, error) `perm:"read"` StateAccountKey func(p0 context.Context, p1 address.Address, p2 types.TipSetKey) (address.Address, error) `perm:"read"`
StateActorCodeCIDs func(p0 context.Context, p1 abinetwork.Version) (map[string]cid.Cid, error) `perm:"read"` StateActorCodeCIDs func(p0 context.Context, p1 abinetwork.Version) (map[string]cid.Cid, error) `perm:"read"`
@ -679,7 +683,7 @@ type StorageMinerStruct struct {
BeneficiaryWithdrawBalance func(p0 context.Context, p1 abi.TokenAmount) (cid.Cid, error) `perm:"admin"` BeneficiaryWithdrawBalance func(p0 context.Context, p1 abi.TokenAmount) (cid.Cid, error) `perm:"admin"`
CheckProvable func(p0 context.Context, p1 abi.RegisteredPoStProof, p2 []storiface.SectorRef, p3 bool) (map[abi.SectorNumber]string, error) `perm:"admin"` CheckProvable func(p0 context.Context, p1 abi.RegisteredPoStProof, p2 []storiface.SectorRef) (map[abi.SectorNumber]string, error) `perm:"admin"`
ComputeDataCid func(p0 context.Context, p1 abi.UnpaddedPieceSize, p2 storiface.Data) (abi.PieceInfo, error) `perm:"admin"` ComputeDataCid func(p0 context.Context, p1 abi.UnpaddedPieceSize, p2 storiface.Data) (abi.PieceInfo, error) `perm:"admin"`
@ -2473,6 +2477,28 @@ func (s *FullNodeStub) PaychVoucherSubmit(p0 context.Context, p1 address.Address
return *new(cid.Cid), ErrNotSupported return *new(cid.Cid), ErrNotSupported
} }
func (s *FullNodeStruct) RaftLeader(p0 context.Context) (peer.ID, error) {
if s.Internal.RaftLeader == nil {
return *new(peer.ID), ErrNotSupported
}
return s.Internal.RaftLeader(p0)
}
func (s *FullNodeStub) RaftLeader(p0 context.Context) (peer.ID, error) {
return *new(peer.ID), ErrNotSupported
}
func (s *FullNodeStruct) RaftState(p0 context.Context) (*RaftStateData, error) {
if s.Internal.RaftState == nil {
return nil, ErrNotSupported
}
return s.Internal.RaftState(p0)
}
func (s *FullNodeStub) RaftState(p0 context.Context) (*RaftStateData, error) {
return nil, ErrNotSupported
}
func (s *FullNodeStruct) StateAccountKey(p0 context.Context, p1 address.Address, p2 types.TipSetKey) (address.Address, error) { func (s *FullNodeStruct) StateAccountKey(p0 context.Context, p1 address.Address, p2 types.TipSetKey) (address.Address, error) {
if s.Internal.StateAccountKey == nil { if s.Internal.StateAccountKey == nil {
return *new(address.Address), ErrNotSupported return *new(address.Address), ErrNotSupported
@ -4134,14 +4160,14 @@ func (s *StorageMinerStub) BeneficiaryWithdrawBalance(p0 context.Context, p1 abi
return *new(cid.Cid), ErrNotSupported return *new(cid.Cid), ErrNotSupported
} }
func (s *StorageMinerStruct) CheckProvable(p0 context.Context, p1 abi.RegisteredPoStProof, p2 []storiface.SectorRef, p3 bool) (map[abi.SectorNumber]string, error) { func (s *StorageMinerStruct) CheckProvable(p0 context.Context, p1 abi.RegisteredPoStProof, p2 []storiface.SectorRef) (map[abi.SectorNumber]string, error) {
if s.Internal.CheckProvable == nil { if s.Internal.CheckProvable == nil {
return *new(map[abi.SectorNumber]string), ErrNotSupported return *new(map[abi.SectorNumber]string), ErrNotSupported
} }
return s.Internal.CheckProvable(p0, p1, p2, p3) return s.Internal.CheckProvable(p0, p1, p2)
} }
func (s *StorageMinerStub) CheckProvable(p0 context.Context, p1 abi.RegisteredPoStProof, p2 []storiface.SectorRef, p3 bool) (map[abi.SectorNumber]string, error) { func (s *StorageMinerStub) CheckProvable(p0 context.Context, p1 abi.RegisteredPoStProof, p2 []storiface.SectorRef) (map[abi.SectorNumber]string, error) {
return *new(map[abi.SectorNumber]string), ErrNotSupported return *new(map[abi.SectorNumber]string), ErrNotSupported
} }

View File

@ -59,6 +59,11 @@ type MessageSendSpec struct {
MsgUuid uuid.UUID MsgUuid uuid.UUID
} }
type MpoolMessageWhole struct {
Msg *types.Message
Spec *MessageSendSpec
}
// GraphSyncDataTransfer provides diagnostics on a data transfer happening over graphsync // GraphSyncDataTransfer provides diagnostics on a data transfer happening over graphsync
type GraphSyncDataTransfer struct { type GraphSyncDataTransfer struct {
// GraphSync request id for this transfer // GraphSync request id for this transfer
@ -334,3 +339,61 @@ type ForkUpgradeParams struct {
UpgradeSkyrHeight abi.ChainEpoch UpgradeSkyrHeight abi.ChainEpoch
UpgradeSharkHeight abi.ChainEpoch UpgradeSharkHeight abi.ChainEpoch
} }
type NonceMapType map[address.Address]uint64
type MsgUuidMapType map[uuid.UUID]*types.SignedMessage
type RaftStateData struct {
NonceMap NonceMapType
MsgUuids MsgUuidMapType
}
func (n *NonceMapType) MarshalJSON() ([]byte, error) {
marshalled := make(map[string]uint64)
for a, n := range *n {
marshalled[a.String()] = n
}
return json.Marshal(marshalled)
}
func (n *NonceMapType) UnmarshalJSON(b []byte) error {
unmarshalled := make(map[string]uint64)
err := json.Unmarshal(b, &unmarshalled)
if err != nil {
return err
}
*n = make(map[address.Address]uint64)
for saddr, nonce := range unmarshalled {
a, err := address.NewFromString(saddr)
if err != nil {
return err
}
(*n)[a] = nonce
}
return nil
}
func (m *MsgUuidMapType) MarshalJSON() ([]byte, error) {
marshalled := make(map[string]*types.SignedMessage)
for u, msg := range *m {
marshalled[u.String()] = msg
}
return json.Marshal(marshalled)
}
func (m *MsgUuidMapType) UnmarshalJSON(b []byte) error {
unmarshalled := make(map[string]*types.SignedMessage)
err := json.Unmarshal(b, &unmarshalled)
if err != nil {
return err
}
*m = make(map[uuid.UUID]*types.SignedMessage)
for suid, msg := range unmarshalled {
u, err := uuid.Parse(suid)
if err != nil {
return err
}
(*m)[u] = msg
}
return nil
}

441
blockstore/cbor_gen.go Normal file
View File

@ -0,0 +1,441 @@
// Code generated by github.com/whyrusleeping/cbor-gen. DO NOT EDIT.
package blockstore
import (
"fmt"
"io"
"math"
"sort"
cid "github.com/ipfs/go-cid"
cbg "github.com/whyrusleeping/cbor-gen"
xerrors "golang.org/x/xerrors"
)
var _ = xerrors.Errorf
var _ = cid.Undef
var _ = math.E
var _ = sort.Sort
var lengthBufNetRpcReq = []byte{132}
func (t *NetRpcReq) MarshalCBOR(w io.Writer) error {
if t == nil {
_, err := w.Write(cbg.CborNull)
return err
}
cw := cbg.NewCborWriter(w)
if _, err := cw.Write(lengthBufNetRpcReq); err != nil {
return err
}
// t.Type (blockstore.NetRPCReqType) (uint8)
if err := cw.WriteMajorTypeHeader(cbg.MajUnsignedInt, uint64(t.Type)); err != nil {
return err
}
// t.ID (uint64) (uint64)
if err := cw.WriteMajorTypeHeader(cbg.MajUnsignedInt, uint64(t.ID)); err != nil {
return err
}
// t.Cid ([]cid.Cid) (slice)
if len(t.Cid) > cbg.MaxLength {
return xerrors.Errorf("Slice value in field t.Cid was too long")
}
if err := cw.WriteMajorTypeHeader(cbg.MajArray, uint64(len(t.Cid))); err != nil {
return err
}
for _, v := range t.Cid {
if err := cbg.WriteCid(w, v); err != nil {
return xerrors.Errorf("failed writing cid field t.Cid: %w", err)
}
}
// t.Data ([][]uint8) (slice)
if len(t.Data) > cbg.MaxLength {
return xerrors.Errorf("Slice value in field t.Data was too long")
}
if err := cw.WriteMajorTypeHeader(cbg.MajArray, uint64(len(t.Data))); err != nil {
return err
}
for _, v := range t.Data {
if len(v) > cbg.ByteArrayMaxLen {
return xerrors.Errorf("Byte array in field v was too long")
}
if err := cw.WriteMajorTypeHeader(cbg.MajByteString, uint64(len(v))); err != nil {
return err
}
if _, err := cw.Write(v[:]); err != nil {
return err
}
}
return nil
}
func (t *NetRpcReq) UnmarshalCBOR(r io.Reader) (err error) {
*t = NetRpcReq{}
cr := cbg.NewCborReader(r)
maj, extra, err := cr.ReadHeader()
if err != nil {
return err
}
defer func() {
if err == io.EOF {
err = io.ErrUnexpectedEOF
}
}()
if maj != cbg.MajArray {
return fmt.Errorf("cbor input should be of type array")
}
if extra != 4 {
return fmt.Errorf("cbor input had wrong number of fields")
}
// t.Type (blockstore.NetRPCReqType) (uint8)
maj, extra, err = cr.ReadHeader()
if err != nil {
return err
}
if maj != cbg.MajUnsignedInt {
return fmt.Errorf("wrong type for uint8 field")
}
if extra > math.MaxUint8 {
return fmt.Errorf("integer in input was too large for uint8 field")
}
t.Type = NetRPCReqType(extra)
// t.ID (uint64) (uint64)
{
maj, extra, err = cr.ReadHeader()
if err != nil {
return err
}
if maj != cbg.MajUnsignedInt {
return fmt.Errorf("wrong type for uint64 field")
}
t.ID = uint64(extra)
}
// t.Cid ([]cid.Cid) (slice)
maj, extra, err = cr.ReadHeader()
if err != nil {
return err
}
if extra > cbg.MaxLength {
return fmt.Errorf("t.Cid: array too large (%d)", extra)
}
if maj != cbg.MajArray {
return fmt.Errorf("expected cbor array")
}
if extra > 0 {
t.Cid = make([]cid.Cid, extra)
}
for i := 0; i < int(extra); i++ {
c, err := cbg.ReadCid(cr)
if err != nil {
return xerrors.Errorf("reading cid field t.Cid failed: %w", err)
}
t.Cid[i] = c
}
// t.Data ([][]uint8) (slice)
maj, extra, err = cr.ReadHeader()
if err != nil {
return err
}
if extra > cbg.MaxLength {
return fmt.Errorf("t.Data: array too large (%d)", extra)
}
if maj != cbg.MajArray {
return fmt.Errorf("expected cbor array")
}
if extra > 0 {
t.Data = make([][]uint8, extra)
}
for i := 0; i < int(extra); i++ {
{
var maj byte
var extra uint64
var err error
maj, extra, err = cr.ReadHeader()
if err != nil {
return err
}
if extra > cbg.ByteArrayMaxLen {
return fmt.Errorf("t.Data[i]: byte array too large (%d)", extra)
}
if maj != cbg.MajByteString {
return fmt.Errorf("expected byte array")
}
if extra > 0 {
t.Data[i] = make([]uint8, extra)
}
if _, err := io.ReadFull(cr, t.Data[i][:]); err != nil {
return err
}
}
}
return nil
}
var lengthBufNetRpcResp = []byte{131}
func (t *NetRpcResp) MarshalCBOR(w io.Writer) error {
if t == nil {
_, err := w.Write(cbg.CborNull)
return err
}
cw := cbg.NewCborWriter(w)
if _, err := cw.Write(lengthBufNetRpcResp); err != nil {
return err
}
// t.Type (blockstore.NetRPCRespType) (uint8)
if err := cw.WriteMajorTypeHeader(cbg.MajUnsignedInt, uint64(t.Type)); err != nil {
return err
}
// t.ID (uint64) (uint64)
if err := cw.WriteMajorTypeHeader(cbg.MajUnsignedInt, uint64(t.ID)); err != nil {
return err
}
// t.Data ([]uint8) (slice)
if len(t.Data) > cbg.ByteArrayMaxLen {
return xerrors.Errorf("Byte array in field t.Data was too long")
}
if err := cw.WriteMajorTypeHeader(cbg.MajByteString, uint64(len(t.Data))); err != nil {
return err
}
if _, err := cw.Write(t.Data[:]); err != nil {
return err
}
return nil
}
func (t *NetRpcResp) UnmarshalCBOR(r io.Reader) (err error) {
*t = NetRpcResp{}
cr := cbg.NewCborReader(r)
maj, extra, err := cr.ReadHeader()
if err != nil {
return err
}
defer func() {
if err == io.EOF {
err = io.ErrUnexpectedEOF
}
}()
if maj != cbg.MajArray {
return fmt.Errorf("cbor input should be of type array")
}
if extra != 3 {
return fmt.Errorf("cbor input had wrong number of fields")
}
// t.Type (blockstore.NetRPCRespType) (uint8)
maj, extra, err = cr.ReadHeader()
if err != nil {
return err
}
if maj != cbg.MajUnsignedInt {
return fmt.Errorf("wrong type for uint8 field")
}
if extra > math.MaxUint8 {
return fmt.Errorf("integer in input was too large for uint8 field")
}
t.Type = NetRPCRespType(extra)
// t.ID (uint64) (uint64)
{
maj, extra, err = cr.ReadHeader()
if err != nil {
return err
}
if maj != cbg.MajUnsignedInt {
return fmt.Errorf("wrong type for uint64 field")
}
t.ID = uint64(extra)
}
// t.Data ([]uint8) (slice)
maj, extra, err = cr.ReadHeader()
if err != nil {
return err
}
if extra > cbg.ByteArrayMaxLen {
return fmt.Errorf("t.Data: byte array too large (%d)", extra)
}
if maj != cbg.MajByteString {
return fmt.Errorf("expected byte array")
}
if extra > 0 {
t.Data = make([]uint8, extra)
}
if _, err := io.ReadFull(cr, t.Data[:]); err != nil {
return err
}
return nil
}
var lengthBufNetRpcErr = []byte{131}
func (t *NetRpcErr) MarshalCBOR(w io.Writer) error {
if t == nil {
_, err := w.Write(cbg.CborNull)
return err
}
cw := cbg.NewCborWriter(w)
if _, err := cw.Write(lengthBufNetRpcErr); err != nil {
return err
}
// t.Type (blockstore.NetRPCErrType) (uint8)
if err := cw.WriteMajorTypeHeader(cbg.MajUnsignedInt, uint64(t.Type)); err != nil {
return err
}
// t.Msg (string) (string)
if len(t.Msg) > cbg.MaxLength {
return xerrors.Errorf("Value in field t.Msg was too long")
}
if err := cw.WriteMajorTypeHeader(cbg.MajTextString, uint64(len(t.Msg))); err != nil {
return err
}
if _, err := io.WriteString(w, string(t.Msg)); err != nil {
return err
}
// t.Cid (cid.Cid) (struct)
if t.Cid == nil {
if _, err := cw.Write(cbg.CborNull); err != nil {
return err
}
} else {
if err := cbg.WriteCid(cw, *t.Cid); err != nil {
return xerrors.Errorf("failed to write cid field t.Cid: %w", err)
}
}
return nil
}
func (t *NetRpcErr) UnmarshalCBOR(r io.Reader) (err error) {
*t = NetRpcErr{}
cr := cbg.NewCborReader(r)
maj, extra, err := cr.ReadHeader()
if err != nil {
return err
}
defer func() {
if err == io.EOF {
err = io.ErrUnexpectedEOF
}
}()
if maj != cbg.MajArray {
return fmt.Errorf("cbor input should be of type array")
}
if extra != 3 {
return fmt.Errorf("cbor input had wrong number of fields")
}
// t.Type (blockstore.NetRPCErrType) (uint8)
maj, extra, err = cr.ReadHeader()
if err != nil {
return err
}
if maj != cbg.MajUnsignedInt {
return fmt.Errorf("wrong type for uint8 field")
}
if extra > math.MaxUint8 {
return fmt.Errorf("integer in input was too large for uint8 field")
}
t.Type = NetRPCErrType(extra)
// t.Msg (string) (string)
{
sval, err := cbg.ReadString(cr)
if err != nil {
return err
}
t.Msg = string(sval)
}
// t.Cid (cid.Cid) (struct)
{
b, err := cr.ReadByte()
if err != nil {
return err
}
if b != cbg.CborNull[0] {
if err := cr.UnreadByte(); err != nil {
return err
}
c, err := cbg.ReadCid(cr)
if err != nil {
return xerrors.Errorf("failed to read cid field t.Cid: %w", err)
}
t.Cid = &c
}
}
return nil
}

424
blockstore/net.go Normal file
View File

@ -0,0 +1,424 @@
package blockstore
import (
"bytes"
"context"
"encoding/binary"
"fmt"
"sync"
"sync/atomic"
blocks "github.com/ipfs/go-block-format"
"github.com/ipfs/go-cid"
ipld "github.com/ipfs/go-ipld-format"
"github.com/libp2p/go-msgio"
cbg "github.com/whyrusleeping/cbor-gen"
"golang.org/x/xerrors"
)
type NetRPCReqType byte
const (
NRpcHas NetRPCReqType = iota
NRpcGet
NRpcGetSize
NRpcPut
NRpcDelete
// todo cancel req
)
type NetRPCRespType byte
const (
NRpcOK NetRPCRespType = iota
NRpcErr
NRpcMore
)
type NetRPCErrType byte
const (
NRpcErrGeneric NetRPCErrType = iota
NRpcErrNotFound
)
type NetRpcReq struct {
Type NetRPCReqType
ID uint64
Cid []cid.Cid // todo maxsize?
Data [][]byte // todo maxsize?
}
type NetRpcResp struct {
Type NetRPCRespType
ID uint64
// error or cids in allkeys
Data []byte // todo maxsize?
next <-chan NetRpcResp
}
type NetRpcErr struct {
Type NetRPCErrType
Msg string
// in case of NRpcErrNotFound
Cid *cid.Cid
}
type NetworkStore struct {
// note: writer is thread-safe
msgStream msgio.ReadWriteCloser
// atomic
reqCount uint64
respLk sync.Mutex
// respMap is nil after store closes
respMap map[uint64]chan<- NetRpcResp
closing chan struct{}
closed chan struct{}
closeLk sync.Mutex
onClose []func()
}
func NewNetworkStore(mss msgio.ReadWriteCloser) *NetworkStore {
ns := &NetworkStore{
msgStream: mss,
respMap: map[uint64]chan<- NetRpcResp{},
closing: make(chan struct{}),
closed: make(chan struct{}),
}
go ns.receive()
return ns
}
func (n *NetworkStore) shutdown(msg string) {
if err := n.msgStream.Close(); err != nil {
log.Errorw("closing netstore msg stream", "error", err)
}
nerr := NetRpcErr{
Type: NRpcErrGeneric,
Msg: msg,
Cid: nil,
}
var errb bytes.Buffer
if err := nerr.MarshalCBOR(&errb); err != nil {
log.Errorw("netstore shutdown: error marshaling error", "err", err)
}
n.respLk.Lock()
for id, resps := range n.respMap {
resps <- NetRpcResp{
Type: NRpcErr,
ID: id,
Data: errb.Bytes(),
}
}
n.respMap = nil
n.respLk.Unlock()
}
func (n *NetworkStore) OnClose(cb func()) {
n.closeLk.Lock()
defer n.closeLk.Unlock()
select {
case <-n.closed:
cb()
default:
n.onClose = append(n.onClose, cb)
}
}
func (n *NetworkStore) receive() {
defer func() {
n.closeLk.Lock()
defer n.closeLk.Unlock()
close(n.closed)
if n.onClose != nil {
for _, f := range n.onClose {
f()
}
}
}()
for {
select {
case <-n.closing:
n.shutdown("netstore stopping")
return
default:
}
msg, err := n.msgStream.ReadMsg()
if err != nil {
n.shutdown(fmt.Sprintf("netstore ReadMsg: %s", err))
return
}
var resp NetRpcResp
if err := resp.UnmarshalCBOR(bytes.NewReader(msg)); err != nil {
n.shutdown(fmt.Sprintf("unmarshaling netstore response: %s", err))
return
}
n.msgStream.ReleaseMsg(msg)
n.respLk.Lock()
if ch, ok := n.respMap[resp.ID]; ok {
if resp.Type == NRpcMore {
nch := make(chan NetRpcResp, 1)
resp.next = nch
n.respMap[resp.ID] = nch
} else {
delete(n.respMap, resp.ID)
}
ch <- resp
}
n.respLk.Unlock()
}
}
func (n *NetworkStore) sendRpc(rt NetRPCReqType, cids []cid.Cid, data [][]byte) (uint64, <-chan NetRpcResp, error) {
rid := atomic.AddUint64(&n.reqCount, 1)
respCh := make(chan NetRpcResp, 1) // todo pool?
n.respLk.Lock()
if n.respMap == nil {
n.respLk.Unlock()
return 0, nil, xerrors.Errorf("netstore closed")
}
n.respMap[rid] = respCh
n.respLk.Unlock()
req := NetRpcReq{
Type: rt,
ID: rid,
Cid: cids,
Data: data,
}
var rbuf bytes.Buffer // todo buffer pool
if err := req.MarshalCBOR(&rbuf); err != nil {
n.respLk.Lock()
defer n.respLk.Unlock()
if n.respMap == nil {
return 0, nil, xerrors.Errorf("netstore closed")
}
delete(n.respMap, rid)
return 0, nil, err
}
if err := n.msgStream.WriteMsg(rbuf.Bytes()); err != nil {
n.respLk.Lock()
defer n.respLk.Unlock()
if n.respMap == nil {
return 0, nil, xerrors.Errorf("netstore closed")
}
delete(n.respMap, rid)
return 0, nil, err
}
return rid, respCh, nil
}
func (n *NetworkStore) waitResp(ctx context.Context, rch <-chan NetRpcResp, rid uint64) (NetRpcResp, error) {
select {
case resp := <-rch:
if resp.Type == NRpcErr {
var e NetRpcErr
if err := e.UnmarshalCBOR(bytes.NewReader(resp.Data)); err != nil {
return NetRpcResp{}, xerrors.Errorf("unmarshaling error data: %w", err)
}
var err error
switch e.Type {
case NRpcErrNotFound:
if e.Cid != nil {
err = ipld.ErrNotFound{
Cid: *e.Cid,
}
} else {
err = xerrors.Errorf("block not found, but cid was null")
}
case NRpcErrGeneric:
err = xerrors.Errorf("generic error")
default:
err = xerrors.Errorf("unknown error type")
}
return NetRpcResp{}, xerrors.Errorf("netstore error response: %s (%w)", e.Msg, err)
}
return resp, nil
case <-ctx.Done():
// todo send cancel req
n.respLk.Lock()
if n.respMap != nil {
delete(n.respMap, rid)
}
n.respLk.Unlock()
return NetRpcResp{}, ctx.Err()
}
}
func (n *NetworkStore) Has(ctx context.Context, c cid.Cid) (bool, error) {
req, rch, err := n.sendRpc(NRpcHas, []cid.Cid{c}, nil)
if err != nil {
return false, err
}
resp, err := n.waitResp(ctx, rch, req)
if err != nil {
return false, err
}
if len(resp.Data) != 1 {
return false, xerrors.Errorf("expected reposnse length to be 1 byte")
}
switch resp.Data[0] {
case cbg.CborBoolTrue[0]:
return true, nil
case cbg.CborBoolFalse[0]:
return false, nil
default:
return false, xerrors.Errorf("has: bad response: %x", resp.Data[0])
}
}
func (n *NetworkStore) Get(ctx context.Context, c cid.Cid) (blocks.Block, error) {
req, rch, err := n.sendRpc(NRpcGet, []cid.Cid{c}, nil)
if err != nil {
return nil, err
}
resp, err := n.waitResp(ctx, rch, req)
if err != nil {
return nil, err
}
return blocks.NewBlockWithCid(resp.Data, c)
}
func (n *NetworkStore) View(ctx context.Context, c cid.Cid, callback func([]byte) error) error {
req, rch, err := n.sendRpc(NRpcGet, []cid.Cid{c}, nil)
if err != nil {
return err
}
resp, err := n.waitResp(ctx, rch, req)
if err != nil {
return err
}
return callback(resp.Data) // todo return buf to pool
}
func (n *NetworkStore) GetSize(ctx context.Context, c cid.Cid) (int, error) {
req, rch, err := n.sendRpc(NRpcGetSize, []cid.Cid{c}, nil)
if err != nil {
return 0, err
}
resp, err := n.waitResp(ctx, rch, req)
if err != nil {
return 0, err
}
if len(resp.Data) != 4 {
return 0, xerrors.Errorf("expected getsize response to be 4 bytes, was %d", resp.Data)
}
return int(binary.LittleEndian.Uint32(resp.Data)), nil
}
func (n *NetworkStore) Put(ctx context.Context, block blocks.Block) error {
return n.PutMany(ctx, []blocks.Block{block})
}
func (n *NetworkStore) PutMany(ctx context.Context, blocks []blocks.Block) error {
// todo pool
cids := make([]cid.Cid, len(blocks))
blkDatas := make([][]byte, len(blocks))
for i, block := range blocks {
cids[i] = block.Cid()
blkDatas[i] = block.RawData()
}
req, rch, err := n.sendRpc(NRpcPut, cids, blkDatas)
if err != nil {
return err
}
_, err = n.waitResp(ctx, rch, req)
if err != nil {
return err
}
return nil
}
func (n *NetworkStore) DeleteBlock(ctx context.Context, c cid.Cid) error {
return n.DeleteMany(ctx, []cid.Cid{c})
}
func (n *NetworkStore) DeleteMany(ctx context.Context, cids []cid.Cid) error {
req, rch, err := n.sendRpc(NRpcDelete, cids, nil)
if err != nil {
return err
}
_, err = n.waitResp(ctx, rch, req)
if err != nil {
return err
}
return nil
}
func (n *NetworkStore) AllKeysChan(ctx context.Context) (<-chan cid.Cid, error) {
return nil, xerrors.Errorf("not supported")
}
func (n *NetworkStore) HashOnRead(enabled bool) {
// todo
return
}
func (n *NetworkStore) Stop(ctx context.Context) error {
close(n.closing)
select {
case <-n.closed:
return nil
case <-ctx.Done():
return ctx.Err()
}
}
var _ Blockstore = &NetworkStore{}

237
blockstore/net_serve.go Normal file
View File

@ -0,0 +1,237 @@
package blockstore
import (
"bytes"
"context"
"encoding/binary"
block "github.com/ipfs/go-block-format"
"github.com/ipfs/go-cid"
ipld "github.com/ipfs/go-ipld-format"
"github.com/libp2p/go-msgio"
cbg "github.com/whyrusleeping/cbor-gen"
"golang.org/x/xerrors"
)
type NetworkStoreHandler struct {
msgStream msgio.ReadWriteCloser
bs Blockstore
}
// NOTE: This code isn't yet hardened to accept untrusted input. See TODOs here and in net.go
func HandleNetBstoreStream(ctx context.Context, bs Blockstore, mss msgio.ReadWriteCloser) *NetworkStoreHandler {
ns := &NetworkStoreHandler{
msgStream: mss,
bs: bs,
}
go ns.handle(ctx)
return ns
}
func (h *NetworkStoreHandler) handle(ctx context.Context) {
defer func() {
if err := h.msgStream.Close(); err != nil {
log.Errorw("error closing blockstore stream", "error", err)
}
}()
for {
var req NetRpcReq
ms, err := h.msgStream.ReadMsg()
if err != nil {
log.Warnw("bstore stream err", "error", err)
return
}
if err := req.UnmarshalCBOR(bytes.NewReader(ms)); err != nil {
return
}
h.msgStream.ReleaseMsg(ms)
switch req.Type {
case NRpcHas:
if len(req.Cid) != 1 {
if err := h.respondError(req.ID, xerrors.New("expected request for 1 cid"), cid.Undef); err != nil {
log.Warnw("writing error response", "error", err)
return
}
continue
}
res, err := h.bs.Has(ctx, req.Cid[0])
if err != nil {
if err := h.respondError(req.ID, err, req.Cid[0]); err != nil {
log.Warnw("writing error response", "error", err)
return
}
continue
}
var resData [1]byte
if res {
resData[0] = cbg.CborBoolTrue[0]
} else {
resData[0] = cbg.CborBoolFalse[0]
}
if err := h.respond(req.ID, NRpcOK, resData[:]); err != nil {
log.Warnw("writing response", "error", err)
return
}
case NRpcGet:
if len(req.Cid) != 1 {
if err := h.respondError(req.ID, xerrors.New("expected request for 1 cid"), cid.Undef); err != nil {
log.Warnw("writing error response", "error", err)
return
}
continue
}
err := h.bs.View(ctx, req.Cid[0], func(bdata []byte) error {
return h.respond(req.ID, NRpcOK, bdata)
})
if err != nil {
if err := h.respondError(req.ID, err, req.Cid[0]); err != nil {
log.Warnw("writing error response", "error", err)
return
}
continue
}
case NRpcGetSize:
if len(req.Cid) != 1 {
if err := h.respondError(req.ID, xerrors.New("expected request for 1 cid"), cid.Undef); err != nil {
log.Warnw("writing error response", "error", err)
return
}
continue
}
sz, err := h.bs.GetSize(ctx, req.Cid[0])
if err != nil {
if err := h.respondError(req.ID, err, req.Cid[0]); err != nil {
log.Warnw("writing error response", "error", err)
return
}
continue
}
var resData [4]byte
binary.LittleEndian.PutUint32(resData[:], uint32(sz))
if err := h.respond(req.ID, NRpcOK, resData[:]); err != nil {
log.Warnw("writing response", "error", err)
return
}
case NRpcPut:
blocks := make([]block.Block, len(req.Cid))
if len(req.Cid) != len(req.Data) {
if err := h.respondError(req.ID, xerrors.New("cid count didn't match data count"), cid.Undef); err != nil {
log.Warnw("writing error response", "error", err)
}
return
}
for i := range req.Cid {
blocks[i], err = block.NewBlockWithCid(req.Data[i], req.Cid[i])
if err != nil {
log.Warnw("make block", "error", err)
return
}
}
err := h.bs.PutMany(ctx, blocks)
if err != nil {
if err := h.respondError(req.ID, err, cid.Undef); err != nil {
log.Warnw("writing error response", "error", err)
return
}
continue
}
if err := h.respond(req.ID, NRpcOK, []byte{}); err != nil {
log.Warnw("writing response", "error", err)
return
}
case NRpcDelete:
err := h.bs.DeleteMany(ctx, req.Cid)
if err != nil {
if err := h.respondError(req.ID, err, cid.Undef); err != nil {
log.Warnw("writing error response", "error", err)
return
}
continue
}
if err := h.respond(req.ID, NRpcOK, []byte{}); err != nil {
log.Warnw("writing response", "error", err)
return
}
default:
if err := h.respondError(req.ID, xerrors.New("unsupported request type"), cid.Undef); err != nil {
log.Warnw("writing error response", "error", err)
return
}
continue
}
}
}
func (h *NetworkStoreHandler) respondError(req uint64, uerr error, c cid.Cid) error {
var resp NetRpcResp
resp.ID = req
resp.Type = NRpcErr
nerr := NetRpcErr{
Type: NRpcErrGeneric,
Msg: uerr.Error(),
}
if ipld.IsNotFound(uerr) {
nerr.Type = NRpcErrNotFound
nerr.Cid = &c
}
var edata bytes.Buffer
if err := nerr.MarshalCBOR(&edata); err != nil {
return xerrors.Errorf("marshaling error data: %w", err)
}
resp.Data = edata.Bytes()
var msg bytes.Buffer
if err := resp.MarshalCBOR(&msg); err != nil {
return xerrors.Errorf("marshaling error response: %w", err)
}
if err := h.msgStream.WriteMsg(msg.Bytes()); err != nil {
return xerrors.Errorf("write error response: %w", err)
}
return nil
}
func (h *NetworkStoreHandler) respond(req uint64, rt NetRPCRespType, data []byte) error {
var resp NetRpcResp
resp.ID = req
resp.Type = rt
resp.Data = data
var msg bytes.Buffer
if err := resp.MarshalCBOR(&msg); err != nil {
return xerrors.Errorf("marshaling response: %w", err)
}
if err := h.msgStream.WriteMsg(msg.Bytes()); err != nil {
return xerrors.Errorf("write response: %w", err)
}
return nil
}

63
blockstore/net_test.go Normal file
View File

@ -0,0 +1,63 @@
package blockstore
import (
"context"
"fmt"
"io"
"testing"
block "github.com/ipfs/go-block-format"
ipld "github.com/ipfs/go-ipld-format"
"github.com/libp2p/go-msgio"
"github.com/stretchr/testify/require"
)
func TestNetBstore(t *testing.T) {
ctx := context.Background()
cr, sw := io.Pipe()
sr, cw := io.Pipe()
cm := msgio.Combine(msgio.NewWriter(cw), msgio.NewReader(cr))
sm := msgio.Combine(msgio.NewWriter(sw), msgio.NewReader(sr))
bbs := NewMemorySync()
_ = HandleNetBstoreStream(ctx, bbs, sm)
nbs := NewNetworkStore(cm)
tb1 := block.NewBlock([]byte("aoeu"))
h, err := nbs.Has(ctx, tb1.Cid())
require.NoError(t, err)
require.False(t, h)
err = nbs.Put(ctx, tb1)
require.NoError(t, err)
h, err = nbs.Has(ctx, tb1.Cid())
require.NoError(t, err)
require.True(t, h)
sz, err := nbs.GetSize(ctx, tb1.Cid())
require.NoError(t, err)
require.Equal(t, 4, sz)
err = nbs.DeleteBlock(ctx, tb1.Cid())
require.NoError(t, err)
h, err = nbs.Has(ctx, tb1.Cid())
require.NoError(t, err)
require.False(t, h)
_, err = nbs.Get(ctx, tb1.Cid())
fmt.Println(err)
require.True(t, ipld.IsNotFound(err))
err = nbs.Put(ctx, tb1)
require.NoError(t, err)
b, err := nbs.Get(ctx, tb1.Cid())
require.NoError(t, err)
require.Equal(t, "aoeu", string(b.RawData()))
}

100
blockstore/net_ws.go Normal file
View File

@ -0,0 +1,100 @@
package blockstore
import (
"bytes"
"context"
"github.com/gorilla/websocket"
"github.com/libp2p/go-msgio"
"golang.org/x/xerrors"
)
type wsWrapper struct {
wc *websocket.Conn
nextMsg []byte
}
func (w *wsWrapper) Read(b []byte) (int, error) {
return 0, xerrors.New("read unsupported")
}
func (w *wsWrapper) ReadMsg() ([]byte, error) {
if w.nextMsg != nil {
nm := w.nextMsg
w.nextMsg = nil
return nm, nil
}
mt, r, err := w.wc.NextReader()
if err != nil {
return nil, err
}
switch mt {
case websocket.BinaryMessage, websocket.TextMessage:
default:
return nil, xerrors.Errorf("unexpected message type")
}
// todo pool
// todo limit sizes
var mbuf bytes.Buffer
if _, err := mbuf.ReadFrom(r); err != nil {
return nil, err
}
return mbuf.Bytes(), nil
}
func (w *wsWrapper) ReleaseMsg(bytes []byte) {
// todo use a pool
}
func (w *wsWrapper) NextMsgLen() (int, error) {
if w.nextMsg != nil {
return len(w.nextMsg), nil
}
mt, msg, err := w.wc.ReadMessage()
if err != nil {
return 0, err
}
switch mt {
case websocket.BinaryMessage, websocket.TextMessage:
default:
return 0, xerrors.Errorf("unexpected message type")
}
w.nextMsg = msg
return len(w.nextMsg), nil
}
func (w *wsWrapper) Write(bytes []byte) (int, error) {
return 0, xerrors.New("write unsupported")
}
func (w *wsWrapper) WriteMsg(bytes []byte) error {
return w.wc.WriteMessage(websocket.BinaryMessage, bytes)
}
func (w *wsWrapper) Close() error {
return w.wc.Close()
}
var _ msgio.ReadWriteCloser = &wsWrapper{}
func wsConnToMio(wc *websocket.Conn) msgio.ReadWriteCloser {
return &wsWrapper{
wc: wc,
}
}
func HandleNetBstoreWS(ctx context.Context, bs Blockstore, wc *websocket.Conn) *NetworkStoreHandler {
return HandleNetBstoreStream(ctx, bs, wsConnToMio(wc))
}
func NewNetworkStoreWS(wc *websocket.Conn) *NetworkStore {
return NewNetworkStore(wsConnToMio(wc))
}

Binary file not shown.

View File

@ -44,23 +44,23 @@ var EmbeddedBuiltinActorsMetadata []*BuiltinActorsMetadata = []*BuiltinActorsMet
}, { }, {
Network: "butterflynet", Network: "butterflynet",
Version: 10, Version: 10,
ManifestCid: MustParseCid("bafy2bzacech5zikzhyspdibj7ozpo5q7edmq4wnz2bkqsv532w5dbn36gv6pg"), ManifestCid: MustParseCid("bafy2bzacedrip7ekfxytqyx2dj5ggg7itm6w3lywgqsfs4lr4hlcrve6vgiqc"),
Actors: map[string]cid.Cid{ Actors: map[string]cid.Cid{
"account": MustParseCid("bafk2bzaceczu2o5v46l6jj6oe4v5pwlbacmjmmpo6klpbbzi35uexw6jx2sjg"), "account": MustParseCid("bafk2bzacebui5xw2dlftdkdo7lalrcjceohc6xpqnmmyrtdhsihi555c34w3m"),
"cron": MustParseCid("bafk2bzaced7h7pnzvpawfjoaauzl4rmeowsbew66zjoqx7lzfaxnifc3t4dda"), "cron": MustParseCid("bafk2bzacea7kk5jbwcl3hmy7lmuoswj2vwvm7enbibt4hwxoqdla7yuoqn3hy"),
"datacap": MustParseCid("bafk2bzacebbmaksmfux5ht7ucbxqdftkwlannhx3p5nd3jxoz6pc4vhuuomxc"), "datacap": MustParseCid("bafk2bzacebnhnt3tubzngnzmlgxrfbjaf6dcsijplaz5nbdzye75fexdlpndq"),
"eam": MustParseCid("bafk2bzacedzdp6jr2w46mnnmztittt7md2krcicotqmuoil4ic5c6l3jkg2ju"), "eam": MustParseCid("bafk2bzaceb5tc576ogvaafng6wm5qt5vonyha6dcfzyieu7zsaseulo6hogka"),
"embryo": MustParseCid("bafk2bzacecau3tohdilfx66pohfqdrngpuqd5oew2j5iv3c7sjlrkcm5npqos"), "embryo": MustParseCid("bafk2bzaceb5shyqwqsogg2izzfteoxcqji6pzqakuc3auvjo44uv5ndhaxt5i"),
"evm": MustParseCid("bafk2bzaceblv2mbvueap3f4tavi5aozgspebdqmqzskuhmd3fe2xe4jx7zkam"), "evm": MustParseCid("bafk2bzaceaxcgbhb2smi7yp7vjdqcclxc3iuma4rharhuavpwzgqxnhx6plss"),
"init": MustParseCid("bafk2bzacecdylyzglnbo7j4hmkqeba2n3bmjegvsb4osoictknq4vovufrcku"), "init": MustParseCid("bafk2bzaceddlj7vpdmsjhpafxfb3ltgwgzlckcss6khxllwiwwu5ml3d46pga"),
"multisig": MustParseCid("bafk2bzaceb2kcz3342uaslo5hxgazmz6j6fx6nkrpquf43jqp6qskhpwznzes"), "multisig": MustParseCid("bafk2bzacecxryfy3nips4lmoehiim2gbhm5brxdeefslbenlhg2tix3rpkpnc"),
"paymentchannel": MustParseCid("bafk2bzaceclkwohvisshvhunzi7fnouwlginejje2xdxxy4mf4krofi7hbhtc"), "paymentchannel": MustParseCid("bafk2bzacedu3xgcuftzf5xthcbwm55sd5rp4ptc2ulwciw56jajfy54kswiw6"),
"reward": MustParseCid("bafk2bzacecn2rkubqfohtxipehwsshez3zegailjsgjaws74cqqmz45vlistu"), "reward": MustParseCid("bafk2bzacedoojima37co6gllv35osnewurtycv6yudvjq2cgdwavll7sn6gbc"),
"storagemarket": MustParseCid("bafk2bzacedu3rtlofbeguc7qwdsctomv5rph2jdtebgxruitmudgh5orop77m"), "storagemarket": MustParseCid("bafk2bzacedvtynnpaxuyunegh3x3cql3sidflwkjtrxkkaqcukdrmdox7xziw"),
"storageminer": MustParseCid("bafk2bzaceawyrwb6e6xktx765fv3oozryfqc7z2qhynjg3thtrlykmvgodlzs"), "storageminer": MustParseCid("bafk2bzacednwhb2l4xth5tqgtmftybaj52rpehidesp2xjg7xbi7u62dgst6g"),
"storagepower": MustParseCid("bafk2bzacecwmkw5anen277bofe2nhd7bum62jwuibp4o7iqcz4lj3rbk53ylg"), "storagepower": MustParseCid("bafk2bzacebx5cu7mkxiqxcwht3j45yd3mrstcvncpipgrqv2velnwpzkrcvzs"),
"system": MustParseCid("bafk2bzacea7kozhxosbrh3lc4azas2vqxldiclxftni7nhdip2uzghdpme6ou"), "system": MustParseCid("bafk2bzacedigfwdw7pjmmvsyzo2vajmfa53ctyp2yz35hsd5c63h4xrxskmmq"),
"verifiedregistry": MustParseCid("bafk2bzacec5probznte3gi5wrb6wpuzqtynsa7xmaccbe2itlgyciwplg45uc"), "verifiedregistry": MustParseCid("bafk2bzacedfq3vluteepuco72n6f7jlp6sbfsstpecjhukiou6g4jivrtkvx2"),
}, },
}, { }, {
Network: "calibrationnet", Network: "calibrationnet",
@ -100,23 +100,23 @@ var EmbeddedBuiltinActorsMetadata []*BuiltinActorsMetadata = []*BuiltinActorsMet
}, { }, {
Network: "calibrationnet", Network: "calibrationnet",
Version: 10, Version: 10,
ManifestCid: MustParseCid("bafy2bzaceakll7cw4xednc7fagkpcuigmskgnqwclloskurdpwe6ksowsveem"), ManifestCid: MustParseCid("bafy2bzacebenfsnosatbwn2vskkduv5dd4fclymp3szy5rudwjjnpacjwgabw"),
Actors: map[string]cid.Cid{ Actors: map[string]cid.Cid{
"account": MustParseCid("bafk2bzacedym6hvldrhewweusr3o47jw6ppnoqybwxfpizukin4jqm2utanc6"), "account": MustParseCid("bafk2bzacebvkqmplmi4qta56c3o7xenxfnh52ubcru4oqaavx2mel6h7f3r26"),
"cron": MustParseCid("bafk2bzaceajvgdgkcmyum2rgkoohf2igmjlgft6rm6cmlm6e2n2mq5vsjtbc6"), "cron": MustParseCid("bafk2bzaceddqlwubzbrhdnkvgzoo6jinmn35qqnh4vtmkxhhnqmvoy7z3ovm4"),
"datacap": MustParseCid("bafk2bzacebqdsmsoomixknyc7rot4sgomvxlcnvctdzyzspdsvmvtsbzo3adw"), "datacap": MustParseCid("bafk2bzacedce7wj2kdujhvo55bfqwxup4gccdahvxpxtn4oqand67cnm7oaes"),
"eam": MustParseCid("bafk2bzacedtrp6jlak7kfnb4w6juwys672raifm5l6fkjovtfxnsbel7nraa6"), "eam": MustParseCid("bafk2bzacebvs75jzsh74vs43i5ve4ikbiy4h2sbg7fbqiv53lybwufhk6gntc"),
"embryo": MustParseCid("bafk2bzacecau3tohdilfx66pohfqdrngpuqd5oew2j5iv3c7sjlrkcm5npqos"), "embryo": MustParseCid("bafk2bzaceb5shyqwqsogg2izzfteoxcqji6pzqakuc3auvjo44uv5ndhaxt5i"),
"evm": MustParseCid("bafk2bzaceavkezg7jk6hhlyvlmfxuygxphnmhlparlrpuiu26om5lm5sqea2i"), "evm": MustParseCid("bafk2bzacebni52v7johlrrvfagunysb5b7ssruapbuw3lkw4raavhrf5dbjy2"),
"init": MustParseCid("bafk2bzaceddk4flq2hsni3foc3uwsia4gaugmu6ntnj6lo2gcynj5vsncp44c"), "init": MustParseCid("bafk2bzacebdjvjkidqczhk2dfmmfastxihuru7qssdsegxibx2u6zsmwxbr6y"),
"multisig": MustParseCid("bafk2bzacebok4642anm3443a7qcdenkr5rbfea6ghjrsattp24qfltokvw3au"), "multisig": MustParseCid("bafk2bzacea53zxqqchdykxyklsuuxr2nxavzym5prtw5jrnarrjldttcqxluo"),
"paymentchannel": MustParseCid("bafk2bzaceamay6icwp2h42uhdksljsydyz5fjolgfrkj5wyocg437ud3xg2t4"), "paymentchannel": MustParseCid("bafk2bzaceck54j7jukcc22ubrzf4yyiaxz6p5hmwkxqgzvevsn7x5nrpghxf4"),
"reward": MustParseCid("bafk2bzaceb2psfhos5ozxacng3naeizijn6z25hp64ze4udmzjfxwy2357gqc"), "reward": MustParseCid("bafk2bzacedlh4i2phmiqfbfl2zyajpzaigbgqp3fcdwtphststpap6e3pe2xg"),
"storagemarket": MustParseCid("bafk2bzacedwyvhlc5bd3u2hmcweetkica6elj6myswrqsgi7d2ojfccfz22yw"), "storagemarket": MustParseCid("bafk2bzacednr26koccefqs3pkab4e3bu7g2hxtwodrqaidj7lmxtaj4l4qbyw"),
"storageminer": MustParseCid("bafk2bzaceb7k267d6w7iktrr6xbyxgyqrl4ahdwabjyndgbnxe2q236wydaoo"), "storageminer": MustParseCid("bafk2bzaceb2vgdzj7ydnhfr4exyat2aiuigglhwqv7pu5p65l5syankhjbaeo"),
"storagepower": MustParseCid("bafk2bzacebfm23kwvby4rp66pygqppevdg5adw6cmeneg4vt3ahbtqhj42n3i"), "storagepower": MustParseCid("bafk2bzacedbqdw62m5fah32bkvns2ubz32lgqu4fngp77aezzm3af7b6vmvsu"),
"system": MustParseCid("bafk2bzacedrn4b7otr4uq5zhb4urbpxaoo26t3srbxvyyrvknhrx466ax5neq"), "system": MustParseCid("bafk2bzaceazgpbdm5nzg35jwmt6s4nqgy5ok2ne3ndhomkq6erits4l2ruyac"),
"verifiedregistry": MustParseCid("bafk2bzacedydpsphnnmtp2q56phftt674i5ew4feb2idjxhbvilxkma4yavw2"), "verifiedregistry": MustParseCid("bafk2bzacebs7l5v7b74fy5eqkmcdccbkjqpxykn6au34p4si7m2hc3utrpwhq"),
}, },
}, { }, {
Network: "caterpillarnet", Network: "caterpillarnet",
@ -156,23 +156,23 @@ var EmbeddedBuiltinActorsMetadata []*BuiltinActorsMetadata = []*BuiltinActorsMet
}, { }, {
Network: "caterpillarnet", Network: "caterpillarnet",
Version: 10, Version: 10,
ManifestCid: MustParseCid("bafy2bzacec7dckmatj6aqieerpjzyvtgonnwjghzx6nxwgeftyp4x63sjyzji"), ManifestCid: MustParseCid("bafy2bzacecprcdvekabbiozu6jaferly4jpw4uxoxy55ouioopv2uhsyfnatg"),
Actors: map[string]cid.Cid{ Actors: map[string]cid.Cid{
"account": MustParseCid("bafk2bzacea7ltxlbxq5t735tvokfw3vutsv5vcvmarrt3smvy6ityxc7kzyjo"), "account": MustParseCid("bafk2bzaceasuszw5iqejn3afhc2oftpmnhgwg5gt7d3fryfi3pzyuv4vaifzq"),
"cron": MustParseCid("bafk2bzacebkyepynkejhiwwer4fqzgnodx4qoesueon5gkvfrsoo5qqnon7xq"), "cron": MustParseCid("bafk2bzaceadt6coa6p7cgwt7k7sz7hafpy3ilma4q4obghn6xsywjedar43om"),
"datacap": MustParseCid("bafk2bzaced4oa6qiyl64xaawitscelc3b7wxqlzyrorsawjz5aveyib7gifg2"), "datacap": MustParseCid("bafk2bzacec3hswe3wucjxlqavck4ijdto65gwuzlqlhstpj22icx3xgy6y25m"),
"eam": MustParseCid("bafk2bzaceadxs6yx43da4bcleqbpdho7h72hbl27yxzxr6r42qfpga2pn5i64"), "eam": MustParseCid("bafk2bzaceb52bwd7ikj7dnpeebaak2aaoeqdp6sm5n3qu75gyhym7o7sa64oo"),
"embryo": MustParseCid("bafk2bzacecau3tohdilfx66pohfqdrngpuqd5oew2j5iv3c7sjlrkcm5npqos"), "embryo": MustParseCid("bafk2bzaceb5shyqwqsogg2izzfteoxcqji6pzqakuc3auvjo44uv5ndhaxt5i"),
"evm": MustParseCid("bafk2bzacechzhg6vwsnbsshj7exshd3ptt73tyvvnby2dir3l3ugmq2jub3ja"), "evm": MustParseCid("bafk2bzacecw44r27pmmurhlkf5vqnqjxpivnh5oopegonnl2o7rtu3wyc4h4s"),
"init": MustParseCid("bafk2bzacecpvier4hsrkzhnojtupquugx4jj372uco4kdyfm7smxhdrvrl75k"), "init": MustParseCid("bafk2bzaceb2hcbworiltqg5227d6xcuhypgd2x2olsnqdk5ung5rzps5hze4y"),
"multisig": MustParseCid("bafk2bzacebrqip3wapds4ks46ba2yc5hcatppu5mu7eug25o6veolrwglxzem"), "multisig": MustParseCid("bafk2bzacecwcqghlxf76d5a6uwn65ryb4ogrgktlfb6pc2625v5uznnz5sshc"),
"paymentchannel": MustParseCid("bafk2bzaced6i6kpzze22rbsx6pqqdsrpgzxulwbsuqjk6v6wjgei5rmetwkcg"), "paymentchannel": MustParseCid("bafk2bzacebk5bxknqhlsrvgdnleflwpmkc25hfx4zrqxasszo3ktkkvp7w6oo"),
"reward": MustParseCid("bafk2bzaced3j6bmqbdun7x7kv7um26n37kmbmjhrzlayo6ixqp26jlprof4jo"), "reward": MustParseCid("bafk2bzacebdl4woa2et6x2cg2gnw3zpx3a6jhuw3xnkcy4vjhu2zsd52cpgbc"),
"storagemarket": MustParseCid("bafk2bzacebc25u4aoostddz4c3ayz7q4lumdxnpedtu33c3t7zv3csqujdzlq"), "storagemarket": MustParseCid("bafk2bzacectrnbmdzux4ktjezov2eghyf4b6khne5bbx57fbw4ubdrplpkesi"),
"storageminer": MustParseCid("bafk2bzacedveye4v5wj44eukdgr52jxeyqkencpbnddbksqjq7gibn7zro75c"), "storageminer": MustParseCid("bafk2bzacebzwofvflpycvpl2oikql3o4gcd2alhoa7vtz4crj34ioegzl6h7i"),
"storagepower": MustParseCid("bafk2bzacedwg6am6kwujhaw4pk72j6nmnwyvbblzctkdeqerz3o3ftum6vyuk"), "storagepower": MustParseCid("bafk2bzaced7p4fzea2j4hs2cz52uxtxy2pie4avjs5hsdrjwxas2d247v645c"),
"system": MustParseCid("bafk2bzacebaxz63jyxokfiyi2fjzaevnn55e5wja3fkygwfmxr7rgtstzeh7s"), "system": MustParseCid("bafk2bzacea4nhoud6kwlrnayplpwfwlo5jlqqplu3gj5kp5e3i3pxzwzdmakq"),
"verifiedregistry": MustParseCid("bafk2bzacebhtptnl7rvega7pckyi6wvjg3jknbbqiblz7pi466kkxfakr4v3o"), "verifiedregistry": MustParseCid("bafk2bzacecuz22dwb56p4z67fyqsb4qfw3qk3lz6tq5kc3lsxuo7znlbjczqu"),
}, },
}, { }, {
Network: "devnet", Network: "devnet",
@ -212,23 +212,23 @@ var EmbeddedBuiltinActorsMetadata []*BuiltinActorsMetadata = []*BuiltinActorsMet
}, { }, {
Network: "devnet", Network: "devnet",
Version: 10, Version: 10,
ManifestCid: MustParseCid("bafy2bzacedozgcap7rarf3wb7fyi7efzu6qtf7w3g3lul45yhgflovpj5czkm"), ManifestCid: MustParseCid("bafy2bzacecwysahkxh4jgpmby7lboxalqv2fbvoohi4tcf6unllzwlrgb6n3u"),
Actors: map[string]cid.Cid{ Actors: map[string]cid.Cid{
"account": MustParseCid("bafk2bzacedewxnpn7dso7fypubae2w7ovnw4gj5kpb7lzohygm34mc7eqa3hm"), "account": MustParseCid("bafk2bzacecui4vegcaloi3dt2rob6dytzr7iag257jfszwdtvqgcun6vi2ggi"),
"cron": MustParseCid("bafk2bzacecuj4iqhstejynmnq6c5rqkyqhkemk6pr3kz3pnlsiqw6zmqkr72c"), "cron": MustParseCid("bafk2bzacedukjjklhrahhnbwqcbe3ppowu6cdd3ev2ncsynjg63ese36zg5es"),
"datacap": MustParseCid("bafk2bzacec645kiqnun4pgkru5jmnuzeh24p556bwgh3af3fv7erumg7poypg"), "datacap": MustParseCid("bafk2bzaceaucxyfovggh3hn3iwfqm45z2wxovyasp47ji6vhwv4zlfmtcfg3s"),
"eam": MustParseCid("bafk2bzacedqquawjg4yowzgzh4gjo6uqsi5i2fn5orks5a5oueg2alo7zlss4"), "eam": MustParseCid("bafk2bzaceazgazurwhvwoj4evuxmw5sd2bje2dr4kvyklunlapvw7kyhpzn46"),
"embryo": MustParseCid("bafk2bzacecau3tohdilfx66pohfqdrngpuqd5oew2j5iv3c7sjlrkcm5npqos"), "embryo": MustParseCid("bafk2bzaceb5shyqwqsogg2izzfteoxcqji6pzqakuc3auvjo44uv5ndhaxt5i"),
"evm": MustParseCid("bafk2bzacec7reu4kwibnazp2jw6trkh777w6njt4fwrmza7nxalwqsigggfio"), "evm": MustParseCid("bafk2bzaceam256namf22qqvbj4owo6jhsz5ai2lv6bgp2cqe6mqpyklzl4v2c"),
"init": MustParseCid("bafk2bzaceclig55sktlhe3ws2kbkkteinlyotc2drcupmp53porrn6xzxd6t6"), "init": MustParseCid("bafk2bzacecwy6qxelpbblzgq5ehzqjfe2k47olme3a2kmegth6qsyvykxyfui"),
"multisig": MustParseCid("bafk2bzacea5r262zfroswf3j2qkgqbfkzmdugxxgd4fkol673spsyp5x2fezu"), "multisig": MustParseCid("bafk2bzaceab6p4qg2jmqdylrgcam5u4md3ho7wiigxtnrj7h5qwplvuhe3qm2"),
"paymentchannel": MustParseCid("bafk2bzacebn2whw2uauxcjxnu4xqmaxp7jvipbwfbjrbqyzglzbzbjm7o2lzy"), "paymentchannel": MustParseCid("bafk2bzaceda4axurklqhlb3w3t2skgqj2xqi66cdufcdkgsl5v3f6qdvp7neg"),
"reward": MustParseCid("bafk2bzacebv26kdmzyif45jugv5odyavzf33jo5l6grk7f2rkeqwuuuwpa45u"), "reward": MustParseCid("bafk2bzaceax2wjon7qzsfha3cm3w2cl6rplwxg4onhyvermyhmeu7gubzdcha"),
"storagemarket": MustParseCid("bafk2bzacebbw6mxowf4wolutjjckl45u2fig67ltbqyxhdlv5zao3geh5mkvw"), "storagemarket": MustParseCid("bafk2bzacechmh6ufrhsodqxt2kf5kys2e7mtzom73l6qqemrebsatxxzvfkfy"),
"storageminer": MustParseCid("bafk2bzacedlxojnzgyz6nd3nopt73hhknx3i2pbajqo42mqajlonu73vh6iie"), "storageminer": MustParseCid("bafk2bzacebvtukozkvkmcj74o3wvozvi5iese5ijmhjd7u73aqcp55oc3z2tq"),
"storagepower": MustParseCid("bafk2bzacea6vslpi6dinukglk62ko52z2irkqbp4uzf3lcdrzqttuqv6ugw6u"), "storagepower": MustParseCid("bafk2bzaceaun3ipavgb3axpt7zjkkfserw6rhnorpvoicqihdmsyxuhymv6mq"),
"system": MustParseCid("bafk2bzacecyrjaxcqsahor6eqdvl3qologclu5dmuqrbidors4tsmkjtmfqzi"), "system": MustParseCid("bafk2bzacecrpokwc27mww4zf3l7kaxe2m6sgbzuuvouzzpkk7uh5ax4ufrx2w"),
"verifiedregistry": MustParseCid("bafk2bzacebqrndjputpy5wivtb6jhv7bmnlq2ly27da5gt5432c5viafreff4"), "verifiedregistry": MustParseCid("bafk2bzacecnbhvtkipjzczzwekkgmohikkeftconlvpdqkmuxrke24eb7trzq"),
}, },
}, { }, {
Network: "mainnet", Network: "mainnet",
@ -268,23 +268,23 @@ var EmbeddedBuiltinActorsMetadata []*BuiltinActorsMetadata = []*BuiltinActorsMet
}, { }, {
Network: "mainnet", Network: "mainnet",
Version: 10, Version: 10,
ManifestCid: MustParseCid("bafy2bzacecgsf5euzqplra4vxqhfim7zgsy6fpy2hvb6u3eplovclpfctdcnc"), ManifestCid: MustParseCid("bafy2bzaceb2ssutz56smwc6vwigjgo2kfqirnwkwq7zthxscynvtzn7ebywt4"),
Actors: map[string]cid.Cid{ Actors: map[string]cid.Cid{
"account": MustParseCid("bafk2bzacebrferb5v5mldmtcd5u3ln7uold6esrkqjy3cmcn5gajur5ymgj64"), "account": MustParseCid("bafk2bzacea34fwixc5x473laalyitolzttxxus5ulxi2ukylsubhrl2m32zhc"),
"cron": MustParseCid("bafk2bzacecixoe7cnx2233hxy5xdovoghp7mcaydk4vaj4bp6oa4nwiatzqim"), "cron": MustParseCid("bafk2bzacebxkofxwtkzmncfb77slj4hvwlhazb2x7li7gbdhfbh3gxdmud2eq"),
"datacap": MustParseCid("bafk2bzacecyfsfp3vftqbsxeqe76exjck54tsuupcpxtrendjvrjb4g5ot6bi"), "datacap": MustParseCid("bafk2bzaceac4u53w2fwsez4fmk5to4u5f6tls2obsutsep24nswiclqme75uy"),
"eam": MustParseCid("bafk2bzaceahedp5yhhnmk76spnvtx4cmtbjz463o3qhgamdftor4denxpzmh2"), "eam": MustParseCid("bafk2bzaced25owr5v4k4ypzm5qxi7c3juobbudekogapqaqia23chcyo43ofu"),
"embryo": MustParseCid("bafk2bzacecau3tohdilfx66pohfqdrngpuqd5oew2j5iv3c7sjlrkcm5npqos"), "embryo": MustParseCid("bafk2bzaceb5shyqwqsogg2izzfteoxcqji6pzqakuc3auvjo44uv5ndhaxt5i"),
"evm": MustParseCid("bafk2bzaced4cftxbo3h3wa4htlgjmfmqqrvqk5ddckmdua5ikc4syxfpup7gs"), "evm": MustParseCid("bafk2bzacechckrenio2m67kvacfbzmpm2uosnrw5zmrzsj4b6cukwmhpjfg6c"),
"init": MustParseCid("bafk2bzaceamsma6u3hxnfea6b7h3mfekbiufcdtghtqxpp2w45pt4d472oxak"), "init": MustParseCid("bafk2bzaceblbm5moflcetob6wbl3tjbi2zhyangfrmp4jux7wyeixi7ptctu6"),
"multisig": MustParseCid("bafk2bzaced2dxdjxgottjchlc2kdlw2z2hd4oirwsu67ca72sdbnc5y75zveu"), "multisig": MustParseCid("bafk2bzaceadileikmkovoi4ewl4jbyjgnntl7rqsqlxs2plj2ruv776qxp5hq"),
"paymentchannel": MustParseCid("bafk2bzacedr5eoysu45rvm4tfsp3hiay6kyucmlyj4flsxow2ag3omuwhgmee"), "paymentchannel": MustParseCid("bafk2bzaceasjtgnksm3infcphwhyg675hip3t65q3pzknatf6aqb3mi57pj2c"),
"reward": MustParseCid("bafk2bzaceaua7nxqwk5uuqjdwvwth57citforok365ybfcmtwfg2glmykke2y"), "reward": MustParseCid("bafk2bzacecozr3gal2ywayykdgrhjbttqvwktptyvlvph6dunqrlp2rnl5rbq"),
"storagemarket": MustParseCid("bafk2bzacebdvnxh3bj6yuvvnmygiloge5b246iiawtc4s4ldjby67ykop46m2"), "storagemarket": MustParseCid("bafk2bzacedv5grgmgmoxjvvrszb4phdnhzvlsjv6g3ugirjhgghfuncc67zvu"),
"storageminer": MustParseCid("bafk2bzaceby25xk5l2st6grf5jsqshccuhrxw57x2ws54vjifaipip5i27oiw"), "storageminer": MustParseCid("bafk2bzaceb7wvvvx6dduzodqanerefg5q6k2qvbrlzcbhal5yjhkzun64vtvk"),
"storagepower": MustParseCid("bafk2bzaceabh35xpju4yd57ro2by7gq6zdqcmrbm2vvrb43esxflbr47uaeym"), "storagepower": MustParseCid("bafk2bzacecauoq7xxccmc3hrbbsktonlivg7pibysrnplelsvgdzpzpryv6mm"),
"system": MustParseCid("bafk2bzaceaymi5z5hanmqbqlcaglyg65ib4t6wx7glvzcwir7g3sa57zchzpi"), "system": MustParseCid("bafk2bzaceapfdn6eteiqvvhape3iyybobhcyg6lbmncmerhcpckcj444uk6qo"),
"verifiedregistry": MustParseCid("bafk2bzacebw5tjiqj36dnhr6osgw5rfpunweoeeu2onah3xsfdc54hznidmga"), "verifiedregistry": MustParseCid("bafk2bzacec4v5cozakcgq5btelyjz6hkmcmftj35a2qvcjfcynb6hw4ifxbeq"),
}, },
}, { }, {
Network: "testing", Network: "testing",
@ -324,23 +324,23 @@ var EmbeddedBuiltinActorsMetadata []*BuiltinActorsMetadata = []*BuiltinActorsMet
}, { }, {
Network: "testing", Network: "testing",
Version: 10, Version: 10,
ManifestCid: MustParseCid("bafy2bzaceblyvl5vpmg5vsiheag37rmxbhyysppiducdiwrjigfmqzxzmeiw2"), ManifestCid: MustParseCid("bafy2bzaceaxppo7nkcn456lgend7oqb4pcxdtvk4rw7xqu4qfxsg76hpgjzdm"),
Actors: map[string]cid.Cid{ Actors: map[string]cid.Cid{
"account": MustParseCid("bafk2bzacecbss2ettatvrznxisyfokry3e3iseviub37giux6gu4xd4oufyuq"), "account": MustParseCid("bafk2bzacecasu6oljznrdqpljjomlstq3yf2c6jbofwn5eoivjkgnl65a52lq"),
"cron": MustParseCid("bafk2bzacecznld24ktoctdwdnztgjgfm7vc2xpxy2bs4rvh54i42nhadfy6hm"), "cron": MustParseCid("bafk2bzacec535ytbuh2ycyjwyhnnyjz2jolzfzuny6kdyg6a4h6jtjwqfwfdo"),
"datacap": MustParseCid("bafk2bzacedkxqprqldjle5gr4exhevmpejc4u2hv6abs7gymh4kwo2bdyaixg"), "datacap": MustParseCid("bafk2bzaceay7k6yf5ccms37l2pggjioffyklnzyz4b3sm6567k5dvetlpctfo"),
"eam": MustParseCid("bafk2bzacedfvxauqyelthrgu5i43quivikf3ndsc7345n7qm5sevf6ujl6bds"), "eam": MustParseCid("bafk2bzaceb5c32bdqtnpteri5okrwyg6m57vvcjqf5hggvhgqxgarpdski7e6"),
"embryo": MustParseCid("bafk2bzacecau3tohdilfx66pohfqdrngpuqd5oew2j5iv3c7sjlrkcm5npqos"), "embryo": MustParseCid("bafk2bzaceb5shyqwqsogg2izzfteoxcqji6pzqakuc3auvjo44uv5ndhaxt5i"),
"evm": MustParseCid("bafk2bzacecvk7sj5hqeirku3fyemeexatl6gyuggahr2sh5vmnwq36e36jolo"), "evm": MustParseCid("bafk2bzacedq6wp33m7oif4hgro52g4h2gdaxoymaic5js4cyyb5emqjfevi5k"),
"init": MustParseCid("bafk2bzacecv4vkplbdumw3hoyx22dr6frfh63h5k7wbwlb3vbyrzqnbwm3hq2"), "init": MustParseCid("bafk2bzacedk5bo33m4bjhii6mc35wmth6sx36azjgc4qbus3q45rtsb4xwl26"),
"multisig": MustParseCid("bafk2bzacecchofadvbkmrw3sal6vya3j3vgzm7fdqsv6exxdn5tkyfy7aqika"), "multisig": MustParseCid("bafk2bzaceal376rbj6h6g3wlrs2kiik57ie7rcdb4jldzhd5i2vhq6lgsek3i"),
"paymentchannel": MustParseCid("bafk2bzaceares72arkoutsqffr3mpys2yxawuwadvo22mnwjvm7krwzw2vvis"), "paymentchannel": MustParseCid("bafk2bzacec7nsh23sha54ete2jl4eupj2hz4rxzyp4wm4jfu466czhkg7vdwq"),
"reward": MustParseCid("bafk2bzacebateijm6usif3etrbnepz5qaraynbaiefwzykxkchym4or3aw6bi"), "reward": MustParseCid("bafk2bzacecc4kkj7shrexyjb4bamnjlficb2hfnoqnmobcflx2bmzl4b5vqay"),
"storagemarket": MustParseCid("bafk2bzacebbrlxtkfwoyv6b3dpowsuza35gmqmqhgyuqzjnrouc5suuvottdw"), "storagemarket": MustParseCid("bafk2bzaceat4aedqcvjb42nl2yotog462uy5brffvpnurrvxaghem4ppwdn3y"),
"storageminer": MustParseCid("bafk2bzacecrnmcy75hs3gv4ixyed4b77ctdg2fezmoijdoviwp777zwvflu3o"), "storageminer": MustParseCid("bafk2bzaceaeefkoaj7qpae6hivizqau6me4xdbajl2eny5hnexfbzqyooe4kg"),
"storagepower": MustParseCid("bafk2bzacecozrbsk3lyo6ttn27g4hhzxpoc5ekcmu7njq7chqfyk2iewm3nq6"), "storagepower": MustParseCid("bafk2bzacecgejk3gyjauoalkdbwaq5kfdx7nnlvkjh4yfa6g7a43332xc2ajm"),
"system": MustParseCid("bafk2bzacedg37rk2nyluufudaheng5illo7qlv5gsux3b57rzsoa4puaeu27a"), "system": MustParseCid("bafk2bzacebtg7ijnioa4xmscxvu6kk4mrnehfrddqgj4nqmj6f32nmvcc2ray"),
"verifiedregistry": MustParseCid("bafk2bzaceblkqi3jhrzhrl5qgfkyhy2jhvm7dj6fhbp3rm5c3bmslk4apl45c"), "verifiedregistry": MustParseCid("bafk2bzacecvdxtzrbtrrgtgw6t3nxw3zsslzdz6dybefzti45qbrlvuwqqt3q"),
}, },
}, { }, {
Network: "testing-fake-proofs", Network: "testing-fake-proofs",
@ -380,22 +380,22 @@ var EmbeddedBuiltinActorsMetadata []*BuiltinActorsMetadata = []*BuiltinActorsMet
}, { }, {
Network: "testing-fake-proofs", Network: "testing-fake-proofs",
Version: 10, Version: 10,
ManifestCid: MustParseCid("bafy2bzaceb2w3nde3bk73rkvsircwvj43qnw7f6hbcabtxkemku3tyixoyydc"), ManifestCid: MustParseCid("bafy2bzaceb2ablvyxqk2vjhwxq5f5ptat7xiv3euwshwruppxp6ui7b64tvbu"),
Actors: map[string]cid.Cid{ Actors: map[string]cid.Cid{
"account": MustParseCid("bafk2bzacecbss2ettatvrznxisyfokry3e3iseviub37giux6gu4xd4oufyuq"), "account": MustParseCid("bafk2bzacecasu6oljznrdqpljjomlstq3yf2c6jbofwn5eoivjkgnl65a52lq"),
"cron": MustParseCid("bafk2bzacecznld24ktoctdwdnztgjgfm7vc2xpxy2bs4rvh54i42nhadfy6hm"), "cron": MustParseCid("bafk2bzacec535ytbuh2ycyjwyhnnyjz2jolzfzuny6kdyg6a4h6jtjwqfwfdo"),
"datacap": MustParseCid("bafk2bzacedkxqprqldjle5gr4exhevmpejc4u2hv6abs7gymh4kwo2bdyaixg"), "datacap": MustParseCid("bafk2bzaceay7k6yf5ccms37l2pggjioffyklnzyz4b3sm6567k5dvetlpctfo"),
"eam": MustParseCid("bafk2bzacedfvxauqyelthrgu5i43quivikf3ndsc7345n7qm5sevf6ujl6bds"), "eam": MustParseCid("bafk2bzaceb5c32bdqtnpteri5okrwyg6m57vvcjqf5hggvhgqxgarpdski7e6"),
"embryo": MustParseCid("bafk2bzacecau3tohdilfx66pohfqdrngpuqd5oew2j5iv3c7sjlrkcm5npqos"), "embryo": MustParseCid("bafk2bzaceb5shyqwqsogg2izzfteoxcqji6pzqakuc3auvjo44uv5ndhaxt5i"),
"evm": MustParseCid("bafk2bzacecvk7sj5hqeirku3fyemeexatl6gyuggahr2sh5vmnwq36e36jolo"), "evm": MustParseCid("bafk2bzacedq6wp33m7oif4hgro52g4h2gdaxoymaic5js4cyyb5emqjfevi5k"),
"init": MustParseCid("bafk2bzacecv4vkplbdumw3hoyx22dr6frfh63h5k7wbwlb3vbyrzqnbwm3hq2"), "init": MustParseCid("bafk2bzacedk5bo33m4bjhii6mc35wmth6sx36azjgc4qbus3q45rtsb4xwl26"),
"multisig": MustParseCid("bafk2bzacecchofadvbkmrw3sal6vya3j3vgzm7fdqsv6exxdn5tkyfy7aqika"), "multisig": MustParseCid("bafk2bzaceal376rbj6h6g3wlrs2kiik57ie7rcdb4jldzhd5i2vhq6lgsek3i"),
"paymentchannel": MustParseCid("bafk2bzaceares72arkoutsqffr3mpys2yxawuwadvo22mnwjvm7krwzw2vvis"), "paymentchannel": MustParseCid("bafk2bzacec7nsh23sha54ete2jl4eupj2hz4rxzyp4wm4jfu466czhkg7vdwq"),
"reward": MustParseCid("bafk2bzacebateijm6usif3etrbnepz5qaraynbaiefwzykxkchym4or3aw6bi"), "reward": MustParseCid("bafk2bzacecc4kkj7shrexyjb4bamnjlficb2hfnoqnmobcflx2bmzl4b5vqay"),
"storagemarket": MustParseCid("bafk2bzacebbrlxtkfwoyv6b3dpowsuza35gmqmqhgyuqzjnrouc5suuvottdw"), "storagemarket": MustParseCid("bafk2bzaceat4aedqcvjb42nl2yotog462uy5brffvpnurrvxaghem4ppwdn3y"),
"storageminer": MustParseCid("bafk2bzacedehmf7vjcvsnsa2vrbc2oofjvy4mrosn5guudt7tt7cbcc26ggqu"), "storageminer": MustParseCid("bafk2bzacec4sgyamy6iobuxesdwkg3zwffkwxnur57tisfpotbbs6kammr4ds"),
"storagepower": MustParseCid("bafk2bzaceayqib4titfnswzcphrwvdcqkhnwuuhdvk2yafxgumtmnkuwkibbo"), "storagepower": MustParseCid("bafk2bzacecqxuizz2wxujshjeh7rsric3fkwpa5mucizzamevdpafqewdtm4y"),
"system": MustParseCid("bafk2bzacedg37rk2nyluufudaheng5illo7qlv5gsux3b57rzsoa4puaeu27a"), "system": MustParseCid("bafk2bzacebtg7ijnioa4xmscxvu6kk4mrnehfrddqgj4nqmj6f32nmvcc2ray"),
"verifiedregistry": MustParseCid("bafk2bzaceblkqi3jhrzhrl5qgfkyhy2jhvm7dj6fhbp3rm5c3bmslk4apl45c"), "verifiedregistry": MustParseCid("bafk2bzacecvdxtzrbtrrgtgw6t3nxw3zsslzdz6dybefzti45qbrlvuwqqt3q"),
}, },
}} }}

View File

@ -21,16 +21,18 @@ func TestEmbeddedMetadata(t *testing.T) {
// Test that we're registering the manifest correctly. // Test that we're registering the manifest correctly.
func TestRegistration(t *testing.T) { func TestRegistration(t *testing.T) {
manifestCid, found := actors.GetManifest(actorstypes.Version9) for _, av := range []actorstypes.Version{actorstypes.Version8, actorstypes.Version9} {
require.True(t, found) manifestCid, found := actors.GetManifest(av)
require.True(t, manifestCid.Defined()) require.True(t, found)
require.True(t, manifestCid.Defined())
for _, key := range actors.GetBuiltinActorsKeys(actorstypes.Version9) { for _, key := range actors.GetBuiltinActorsKeys(av) {
actorCid, found := actors.GetActorCodeID(actorstypes.Version9, key) actorCid, found := actors.GetActorCodeID(av, key)
require.True(t, found) require.True(t, found)
name, version, found := actors.GetActorMetaByCode(actorCid) name, version, found := actors.GetActorMetaByCode(actorCid)
require.True(t, found) require.True(t, found)
require.Equal(t, actorstypes.Version9, version) require.Equal(t, av, version)
require.Equal(t, key, name) require.Equal(t, key, name)
}
} }
} }

View File

@ -69,6 +69,10 @@ var DrandConfigs = map[DrandEnum]dtypes.DrandConfig{
ChainInfoJSON: `{"public_key":"8cda589f88914aa728fd183f383980b35789ce81b274e5daee1f338b77d02566ef4d3fb0098af1f844f10f9c803c1827","period":25,"genesis_time":1595348225,"hash":"e73b7dc3c4f6a236378220c0dd6aa110eb16eed26c11259606e07ee122838d4f","groupHash":"567d4785122a5a3e75a9bc9911d7ea807dd85ff76b78dc4ff06b075712898607"}`, ChainInfoJSON: `{"public_key":"8cda589f88914aa728fd183f383980b35789ce81b274e5daee1f338b77d02566ef4d3fb0098af1f844f10f9c803c1827","period":25,"genesis_time":1595348225,"hash":"e73b7dc3c4f6a236378220c0dd6aa110eb16eed26c11259606e07ee122838d4f","groupHash":"567d4785122a5a3e75a9bc9911d7ea807dd85ff76b78dc4ff06b075712898607"}`,
}, },
DrandIncentinet: { DrandIncentinet: {
Servers: []string{
"https://dev1.drand.sh",
"https://dev2.drand.sh",
},
ChainInfoJSON: `{"public_key":"8cad0c72c606ab27d36ee06de1d5b2db1faf92e447025ca37575ab3a8aac2eaae83192f846fc9e158bc738423753d000","period":30,"genesis_time":1595873820,"hash":"80c8b872c714f4c00fdd3daa465d5514049f457f01f85a4caf68cdcd394ba039","groupHash":"d9406aaed487f7af71851b4399448e311f2328923d454e971536c05398ce2d9b"}`, ChainInfoJSON: `{"public_key":"8cad0c72c606ab27d36ee06de1d5b2db1faf92e447025ca37575ab3a8aac2eaae83192f846fc9e158bc738423753d000","period":30,"genesis_time":1595873820,"hash":"80c8b872c714f4c00fdd3daa465d5514049f457f01f85a4caf68cdcd394ba039","groupHash":"d9406aaed487f7af71851b4399448e311f2328923d454e971536c05398ce2d9b"}`,
}, },
} }

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@ -79,14 +79,14 @@ const UpgradeOhSnapHeight = 1594680
// 2022-07-06T14:00:00Z // 2022-07-06T14:00:00Z
const UpgradeSkyrHeight = 1960320 const UpgradeSkyrHeight = 1960320
var UpgradeSharkHeight = abi.ChainEpoch(99999999999999) // 2022-11-30T14:00:00Z
var UpgradeSharkHeight = abi.ChainEpoch(2383680)
var SupportedProofTypes = []abi.RegisteredSealProof{ var SupportedProofTypes = []abi.RegisteredSealProof{
abi.RegisteredSealProof_StackedDrg32GiBV1, abi.RegisteredSealProof_StackedDrg32GiBV1,
abi.RegisteredSealProof_StackedDrg64GiBV1, abi.RegisteredSealProof_StackedDrg64GiBV1,
} }
var ConsensusMinerMinPower = abi.NewStoragePower(10 << 40) var ConsensusMinerMinPower = abi.NewStoragePower(10 << 40)
var MinVerifiedDealSize = abi.NewStoragePower(1 << 20)
var PreCommitChallengeDelay = abi.ChainEpoch(150) var PreCommitChallengeDelay = abi.ChainEpoch(150)
var PropagationDelaySecs = uint64(10) var PropagationDelaySecs = uint64(10)

View File

@ -37,7 +37,7 @@ func BuildTypeString() string {
} }
// BuildVersion is the local build version // BuildVersion is the local build version
const BuildVersion = "1.19.0-dev" const BuildVersion = "1.19.1-dev"
func UserVersion() string { func UserVersion() string {
if os.Getenv("LOTUS_VERSION_IGNORE_COMMIT") == "1" { if os.Getenv("LOTUS_VERSION_IGNORE_COMMIT") == "1" {

View File

@ -1,6 +1,7 @@
package account package account
import ( import (
"github.com/ipfs/go-cid"
"golang.org/x/xerrors" "golang.org/x/xerrors"
"github.com/filecoin-project/go-address" "github.com/filecoin-project/go-address"
@ -110,6 +111,25 @@ func MakeState(store adt.Store, av actorstypes.Version, addr address.Address) (S
type State interface { type State interface {
cbor.Marshaler cbor.Marshaler
Code() cid.Cid
ActorKey() string
ActorVersion() actorstypes.Version
PubkeyAddress() (address.Address, error) PubkeyAddress() (address.Address, error)
GetState() interface{} GetState() interface{}
} }
func AllCodes() []cid.Cid {
return []cid.Cid{
(&state0{}).Code(),
(&state2{}).Code(),
(&state3{}).Code(),
(&state4{}).Code(),
(&state5{}).Code(),
(&state6{}).Code(),
(&state7{}).Code(),
(&state8{}).Code(),
(&state9{}).Code(),
(&state10{}).Code(),
}
}

View File

@ -1,6 +1,7 @@
package account package account
import ( import (
"github.com/ipfs/go-cid"
actorstypes "github.com/filecoin-project/go-state-types/actors" actorstypes "github.com/filecoin-project/go-state-types/actors"
"github.com/filecoin-project/lotus/chain/actors" "github.com/filecoin-project/lotus/chain/actors"
"golang.org/x/xerrors" "golang.org/x/xerrors"
@ -62,6 +63,17 @@ func MakeState(store adt.Store, av actorstypes.Version, addr address.Address) (S
type State interface { type State interface {
cbor.Marshaler cbor.Marshaler
Code() cid.Cid
ActorKey() string
ActorVersion() actorstypes.Version
PubkeyAddress() (address.Address, error) PubkeyAddress() (address.Address, error)
GetState() interface{} GetState() interface{}
} }
func AllCodes() []cid.Cid {
return []cid.Cid{ {{range .versions}}
(&state{{.}}{}).Code(),
{{- end}}
}
}

View File

@ -1,10 +1,14 @@
package account package account
import ( import (
"fmt"
actorstypes "github.com/filecoin-project/go-state-types/actors"
"github.com/filecoin-project/go-address" "github.com/filecoin-project/go-address"
"github.com/ipfs/go-cid" "github.com/ipfs/go-cid"
"github.com/filecoin-project/lotus/chain/actors/adt" "github.com/filecoin-project/lotus/chain/actors/adt"
"github.com/filecoin-project/lotus/chain/actors"
{{if (le .v 7)}} {{if (le .v 7)}}
account{{.v}} "github.com/filecoin-project/specs-actors{{.import}}actors/builtin/account" account{{.v}} "github.com/filecoin-project/specs-actors{{.import}}actors/builtin/account"
@ -42,3 +46,20 @@ func (s *state{{.v}}) PubkeyAddress() (address.Address, error) {
func (s *state{{.v}}) GetState() interface{} { func (s *state{{.v}}) GetState() interface{} {
return &s.State return &s.State
} }
func (s *state{{.v}}) ActorKey() string {
return actors.AccountKey
}
func (s *state{{.v}}) ActorVersion() actorstypes.Version {
return actorstypes.Version{{.v}}
}
func (s *state{{.v}}) Code() cid.Cid {
code, ok := actors.GetActorCodeID(s.ActorVersion(), s.ActorKey())
if !ok {
panic(fmt.Errorf("didn't find actor %v code id for actor version %d", s.ActorKey(), s.ActorVersion()))
}
return code
}

View File

@ -1,11 +1,15 @@
package account package account
import ( import (
"fmt"
"github.com/ipfs/go-cid" "github.com/ipfs/go-cid"
"github.com/filecoin-project/go-address" "github.com/filecoin-project/go-address"
actorstypes "github.com/filecoin-project/go-state-types/actors"
account0 "github.com/filecoin-project/specs-actors/actors/builtin/account" account0 "github.com/filecoin-project/specs-actors/actors/builtin/account"
"github.com/filecoin-project/lotus/chain/actors"
"github.com/filecoin-project/lotus/chain/actors/adt" "github.com/filecoin-project/lotus/chain/actors/adt"
) )
@ -38,3 +42,20 @@ func (s *state0) PubkeyAddress() (address.Address, error) {
func (s *state0) GetState() interface{} { func (s *state0) GetState() interface{} {
return &s.State return &s.State
} }
func (s *state0) ActorKey() string {
return actors.AccountKey
}
func (s *state0) ActorVersion() actorstypes.Version {
return actorstypes.Version0
}
func (s *state0) Code() cid.Cid {
code, ok := actors.GetActorCodeID(s.ActorVersion(), s.ActorKey())
if !ok {
panic(fmt.Errorf("didn't find actor %v code id for actor version %d", s.ActorKey(), s.ActorVersion()))
}
return code
}

View File

@ -1,11 +1,15 @@
package account package account
import ( import (
"fmt"
"github.com/ipfs/go-cid" "github.com/ipfs/go-cid"
"github.com/filecoin-project/go-address" "github.com/filecoin-project/go-address"
actorstypes "github.com/filecoin-project/go-state-types/actors"
account10 "github.com/filecoin-project/go-state-types/builtin/v10/account" account10 "github.com/filecoin-project/go-state-types/builtin/v10/account"
"github.com/filecoin-project/lotus/chain/actors"
"github.com/filecoin-project/lotus/chain/actors/adt" "github.com/filecoin-project/lotus/chain/actors/adt"
) )
@ -38,3 +42,20 @@ func (s *state10) PubkeyAddress() (address.Address, error) {
func (s *state10) GetState() interface{} { func (s *state10) GetState() interface{} {
return &s.State return &s.State
} }
func (s *state10) ActorKey() string {
return actors.AccountKey
}
func (s *state10) ActorVersion() actorstypes.Version {
return actorstypes.Version10
}
func (s *state10) Code() cid.Cid {
code, ok := actors.GetActorCodeID(s.ActorVersion(), s.ActorKey())
if !ok {
panic(fmt.Errorf("didn't find actor %v code id for actor version %d", s.ActorKey(), s.ActorVersion()))
}
return code
}

View File

@ -1,11 +1,15 @@
package account package account
import ( import (
"fmt"
"github.com/ipfs/go-cid" "github.com/ipfs/go-cid"
"github.com/filecoin-project/go-address" "github.com/filecoin-project/go-address"
actorstypes "github.com/filecoin-project/go-state-types/actors"
account2 "github.com/filecoin-project/specs-actors/v2/actors/builtin/account" account2 "github.com/filecoin-project/specs-actors/v2/actors/builtin/account"
"github.com/filecoin-project/lotus/chain/actors"
"github.com/filecoin-project/lotus/chain/actors/adt" "github.com/filecoin-project/lotus/chain/actors/adt"
) )
@ -38,3 +42,20 @@ func (s *state2) PubkeyAddress() (address.Address, error) {
func (s *state2) GetState() interface{} { func (s *state2) GetState() interface{} {
return &s.State return &s.State
} }
func (s *state2) ActorKey() string {
return actors.AccountKey
}
func (s *state2) ActorVersion() actorstypes.Version {
return actorstypes.Version2
}
func (s *state2) Code() cid.Cid {
code, ok := actors.GetActorCodeID(s.ActorVersion(), s.ActorKey())
if !ok {
panic(fmt.Errorf("didn't find actor %v code id for actor version %d", s.ActorKey(), s.ActorVersion()))
}
return code
}

View File

@ -1,11 +1,15 @@
package account package account
import ( import (
"fmt"
"github.com/ipfs/go-cid" "github.com/ipfs/go-cid"
"github.com/filecoin-project/go-address" "github.com/filecoin-project/go-address"
actorstypes "github.com/filecoin-project/go-state-types/actors"
account3 "github.com/filecoin-project/specs-actors/v3/actors/builtin/account" account3 "github.com/filecoin-project/specs-actors/v3/actors/builtin/account"
"github.com/filecoin-project/lotus/chain/actors"
"github.com/filecoin-project/lotus/chain/actors/adt" "github.com/filecoin-project/lotus/chain/actors/adt"
) )
@ -38,3 +42,20 @@ func (s *state3) PubkeyAddress() (address.Address, error) {
func (s *state3) GetState() interface{} { func (s *state3) GetState() interface{} {
return &s.State return &s.State
} }
func (s *state3) ActorKey() string {
return actors.AccountKey
}
func (s *state3) ActorVersion() actorstypes.Version {
return actorstypes.Version3
}
func (s *state3) Code() cid.Cid {
code, ok := actors.GetActorCodeID(s.ActorVersion(), s.ActorKey())
if !ok {
panic(fmt.Errorf("didn't find actor %v code id for actor version %d", s.ActorKey(), s.ActorVersion()))
}
return code
}

View File

@ -1,11 +1,15 @@
package account package account
import ( import (
"fmt"
"github.com/ipfs/go-cid" "github.com/ipfs/go-cid"
"github.com/filecoin-project/go-address" "github.com/filecoin-project/go-address"
actorstypes "github.com/filecoin-project/go-state-types/actors"
account4 "github.com/filecoin-project/specs-actors/v4/actors/builtin/account" account4 "github.com/filecoin-project/specs-actors/v4/actors/builtin/account"
"github.com/filecoin-project/lotus/chain/actors"
"github.com/filecoin-project/lotus/chain/actors/adt" "github.com/filecoin-project/lotus/chain/actors/adt"
) )
@ -38,3 +42,20 @@ func (s *state4) PubkeyAddress() (address.Address, error) {
func (s *state4) GetState() interface{} { func (s *state4) GetState() interface{} {
return &s.State return &s.State
} }
func (s *state4) ActorKey() string {
return actors.AccountKey
}
func (s *state4) ActorVersion() actorstypes.Version {
return actorstypes.Version4
}
func (s *state4) Code() cid.Cid {
code, ok := actors.GetActorCodeID(s.ActorVersion(), s.ActorKey())
if !ok {
panic(fmt.Errorf("didn't find actor %v code id for actor version %d", s.ActorKey(), s.ActorVersion()))
}
return code
}

View File

@ -1,11 +1,15 @@
package account package account
import ( import (
"fmt"
"github.com/ipfs/go-cid" "github.com/ipfs/go-cid"
"github.com/filecoin-project/go-address" "github.com/filecoin-project/go-address"
actorstypes "github.com/filecoin-project/go-state-types/actors"
account5 "github.com/filecoin-project/specs-actors/v5/actors/builtin/account" account5 "github.com/filecoin-project/specs-actors/v5/actors/builtin/account"
"github.com/filecoin-project/lotus/chain/actors"
"github.com/filecoin-project/lotus/chain/actors/adt" "github.com/filecoin-project/lotus/chain/actors/adt"
) )
@ -38,3 +42,20 @@ func (s *state5) PubkeyAddress() (address.Address, error) {
func (s *state5) GetState() interface{} { func (s *state5) GetState() interface{} {
return &s.State return &s.State
} }
func (s *state5) ActorKey() string {
return actors.AccountKey
}
func (s *state5) ActorVersion() actorstypes.Version {
return actorstypes.Version5
}
func (s *state5) Code() cid.Cid {
code, ok := actors.GetActorCodeID(s.ActorVersion(), s.ActorKey())
if !ok {
panic(fmt.Errorf("didn't find actor %v code id for actor version %d", s.ActorKey(), s.ActorVersion()))
}
return code
}

View File

@ -1,11 +1,15 @@
package account package account
import ( import (
"fmt"
"github.com/ipfs/go-cid" "github.com/ipfs/go-cid"
"github.com/filecoin-project/go-address" "github.com/filecoin-project/go-address"
actorstypes "github.com/filecoin-project/go-state-types/actors"
account6 "github.com/filecoin-project/specs-actors/v6/actors/builtin/account" account6 "github.com/filecoin-project/specs-actors/v6/actors/builtin/account"
"github.com/filecoin-project/lotus/chain/actors"
"github.com/filecoin-project/lotus/chain/actors/adt" "github.com/filecoin-project/lotus/chain/actors/adt"
) )
@ -38,3 +42,20 @@ func (s *state6) PubkeyAddress() (address.Address, error) {
func (s *state6) GetState() interface{} { func (s *state6) GetState() interface{} {
return &s.State return &s.State
} }
func (s *state6) ActorKey() string {
return actors.AccountKey
}
func (s *state6) ActorVersion() actorstypes.Version {
return actorstypes.Version6
}
func (s *state6) Code() cid.Cid {
code, ok := actors.GetActorCodeID(s.ActorVersion(), s.ActorKey())
if !ok {
panic(fmt.Errorf("didn't find actor %v code id for actor version %d", s.ActorKey(), s.ActorVersion()))
}
return code
}

View File

@ -1,11 +1,15 @@
package account package account
import ( import (
"fmt"
"github.com/ipfs/go-cid" "github.com/ipfs/go-cid"
"github.com/filecoin-project/go-address" "github.com/filecoin-project/go-address"
actorstypes "github.com/filecoin-project/go-state-types/actors"
account7 "github.com/filecoin-project/specs-actors/v7/actors/builtin/account" account7 "github.com/filecoin-project/specs-actors/v7/actors/builtin/account"
"github.com/filecoin-project/lotus/chain/actors"
"github.com/filecoin-project/lotus/chain/actors/adt" "github.com/filecoin-project/lotus/chain/actors/adt"
) )
@ -38,3 +42,20 @@ func (s *state7) PubkeyAddress() (address.Address, error) {
func (s *state7) GetState() interface{} { func (s *state7) GetState() interface{} {
return &s.State return &s.State
} }
func (s *state7) ActorKey() string {
return actors.AccountKey
}
func (s *state7) ActorVersion() actorstypes.Version {
return actorstypes.Version7
}
func (s *state7) Code() cid.Cid {
code, ok := actors.GetActorCodeID(s.ActorVersion(), s.ActorKey())
if !ok {
panic(fmt.Errorf("didn't find actor %v code id for actor version %d", s.ActorKey(), s.ActorVersion()))
}
return code
}

View File

@ -1,11 +1,15 @@
package account package account
import ( import (
"fmt"
"github.com/ipfs/go-cid" "github.com/ipfs/go-cid"
"github.com/filecoin-project/go-address" "github.com/filecoin-project/go-address"
actorstypes "github.com/filecoin-project/go-state-types/actors"
account8 "github.com/filecoin-project/go-state-types/builtin/v8/account" account8 "github.com/filecoin-project/go-state-types/builtin/v8/account"
"github.com/filecoin-project/lotus/chain/actors"
"github.com/filecoin-project/lotus/chain/actors/adt" "github.com/filecoin-project/lotus/chain/actors/adt"
) )
@ -38,3 +42,20 @@ func (s *state8) PubkeyAddress() (address.Address, error) {
func (s *state8) GetState() interface{} { func (s *state8) GetState() interface{} {
return &s.State return &s.State
} }
func (s *state8) ActorKey() string {
return actors.AccountKey
}
func (s *state8) ActorVersion() actorstypes.Version {
return actorstypes.Version8
}
func (s *state8) Code() cid.Cid {
code, ok := actors.GetActorCodeID(s.ActorVersion(), s.ActorKey())
if !ok {
panic(fmt.Errorf("didn't find actor %v code id for actor version %d", s.ActorKey(), s.ActorVersion()))
}
return code
}

View File

@ -1,11 +1,15 @@
package account package account
import ( import (
"fmt"
"github.com/ipfs/go-cid" "github.com/ipfs/go-cid"
"github.com/filecoin-project/go-address" "github.com/filecoin-project/go-address"
actorstypes "github.com/filecoin-project/go-state-types/actors"
account9 "github.com/filecoin-project/go-state-types/builtin/v9/account" account9 "github.com/filecoin-project/go-state-types/builtin/v9/account"
"github.com/filecoin-project/lotus/chain/actors"
"github.com/filecoin-project/lotus/chain/actors/adt" "github.com/filecoin-project/lotus/chain/actors/adt"
) )
@ -38,3 +42,20 @@ func (s *state9) PubkeyAddress() (address.Address, error) {
func (s *state9) GetState() interface{} { func (s *state9) GetState() interface{} {
return &s.State return &s.State
} }
func (s *state9) ActorKey() string {
return actors.AccountKey
}
func (s *state9) ActorVersion() actorstypes.Version {
return actorstypes.Version9
}
func (s *state9) Code() cid.Cid {
code, ok := actors.GetActorCodeID(s.ActorVersion(), s.ActorKey())
if !ok {
panic(fmt.Errorf("didn't find actor %v code id for actor version %d", s.ActorKey(), s.ActorVersion()))
}
return code
}

View File

@ -1,6 +1,7 @@
package cron package cron
import ( import (
"github.com/ipfs/go-cid"
actorstypes "github.com/filecoin-project/go-state-types/actors" actorstypes "github.com/filecoin-project/go-state-types/actors"
"github.com/filecoin-project/lotus/chain/actors" "github.com/filecoin-project/lotus/chain/actors"
"github.com/filecoin-project/lotus/chain/actors/adt" "github.com/filecoin-project/lotus/chain/actors/adt"
@ -60,5 +61,16 @@ var (
type State interface { type State interface {
Code() cid.Cid
ActorKey() string
ActorVersion() actorstypes.Version
GetState() interface{} GetState() interface{}
} }
func AllCodes() []cid.Cid {
return []cid.Cid{ {{range .versions}}
(&state{{.}}{}).Code(),
{{- end}}
}
}

View File

@ -1,6 +1,7 @@
package cron package cron
import ( import (
"github.com/ipfs/go-cid"
"golang.org/x/xerrors" "golang.org/x/xerrors"
actorstypes "github.com/filecoin-project/go-state-types/actors" actorstypes "github.com/filecoin-project/go-state-types/actors"
@ -109,5 +110,24 @@ var (
) )
type State interface { type State interface {
Code() cid.Cid
ActorKey() string
ActorVersion() actorstypes.Version
GetState() interface{} GetState() interface{}
} }
func AllCodes() []cid.Cid {
return []cid.Cid{
(&state0{}).Code(),
(&state2{}).Code(),
(&state3{}).Code(),
(&state4{}).Code(),
(&state5{}).Code(),
(&state6{}).Code(),
(&state7{}).Code(),
(&state8{}).Code(),
(&state9{}).Code(),
(&state10{}).Code(),
}
}

View File

@ -1,9 +1,12 @@
package cron package cron
import ( import (
"fmt"
"github.com/ipfs/go-cid" "github.com/ipfs/go-cid"
"github.com/filecoin-project/lotus/chain/actors/adt" "github.com/filecoin-project/lotus/chain/actors/adt"
"github.com/filecoin-project/lotus/chain/actors"
actorstypes "github.com/filecoin-project/go-state-types/actors"
{{if (le .v 7)}} {{if (le .v 7)}}
cron{{.v}} "github.com/filecoin-project/specs-actors{{.import}}actors/builtin/cron" cron{{.v}} "github.com/filecoin-project/specs-actors{{.import}}actors/builtin/cron"
@ -37,3 +40,20 @@ type state{{.v}} struct {
func (s *state{{.v}}) GetState() interface{} { func (s *state{{.v}}) GetState() interface{} {
return &s.State return &s.State
} }
func (s *state{{.v}}) ActorKey() string {
return actors.CronKey
}
func (s *state{{.v}}) ActorVersion() actorstypes.Version {
return actorstypes.Version{{.v}}
}
func (s *state{{.v}}) Code() cid.Cid {
code, ok := actors.GetActorCodeID(s.ActorVersion(), s.ActorKey())
if !ok {
panic(fmt.Errorf("didn't find actor %v code id for actor version %d", s.ActorKey(), s.ActorVersion()))
}
return code
}

View File

@ -1,10 +1,14 @@
package cron package cron
import ( import (
"fmt"
"github.com/ipfs/go-cid" "github.com/ipfs/go-cid"
actorstypes "github.com/filecoin-project/go-state-types/actors"
cron0 "github.com/filecoin-project/specs-actors/actors/builtin/cron" cron0 "github.com/filecoin-project/specs-actors/actors/builtin/cron"
"github.com/filecoin-project/lotus/chain/actors"
"github.com/filecoin-project/lotus/chain/actors/adt" "github.com/filecoin-project/lotus/chain/actors/adt"
) )
@ -33,3 +37,20 @@ type state0 struct {
func (s *state0) GetState() interface{} { func (s *state0) GetState() interface{} {
return &s.State return &s.State
} }
func (s *state0) ActorKey() string {
return actors.CronKey
}
func (s *state0) ActorVersion() actorstypes.Version {
return actorstypes.Version0
}
func (s *state0) Code() cid.Cid {
code, ok := actors.GetActorCodeID(s.ActorVersion(), s.ActorKey())
if !ok {
panic(fmt.Errorf("didn't find actor %v code id for actor version %d", s.ActorKey(), s.ActorVersion()))
}
return code
}

View File

@ -1,10 +1,14 @@
package cron package cron
import ( import (
"fmt"
"github.com/ipfs/go-cid" "github.com/ipfs/go-cid"
actorstypes "github.com/filecoin-project/go-state-types/actors"
cron10 "github.com/filecoin-project/go-state-types/builtin/v10/cron" cron10 "github.com/filecoin-project/go-state-types/builtin/v10/cron"
"github.com/filecoin-project/lotus/chain/actors"
"github.com/filecoin-project/lotus/chain/actors/adt" "github.com/filecoin-project/lotus/chain/actors/adt"
) )
@ -33,3 +37,20 @@ type state10 struct {
func (s *state10) GetState() interface{} { func (s *state10) GetState() interface{} {
return &s.State return &s.State
} }
func (s *state10) ActorKey() string {
return actors.CronKey
}
func (s *state10) ActorVersion() actorstypes.Version {
return actorstypes.Version10
}
func (s *state10) Code() cid.Cid {
code, ok := actors.GetActorCodeID(s.ActorVersion(), s.ActorKey())
if !ok {
panic(fmt.Errorf("didn't find actor %v code id for actor version %d", s.ActorKey(), s.ActorVersion()))
}
return code
}

View File

@ -1,10 +1,14 @@
package cron package cron
import ( import (
"fmt"
"github.com/ipfs/go-cid" "github.com/ipfs/go-cid"
actorstypes "github.com/filecoin-project/go-state-types/actors"
cron2 "github.com/filecoin-project/specs-actors/v2/actors/builtin/cron" cron2 "github.com/filecoin-project/specs-actors/v2/actors/builtin/cron"
"github.com/filecoin-project/lotus/chain/actors"
"github.com/filecoin-project/lotus/chain/actors/adt" "github.com/filecoin-project/lotus/chain/actors/adt"
) )
@ -33,3 +37,20 @@ type state2 struct {
func (s *state2) GetState() interface{} { func (s *state2) GetState() interface{} {
return &s.State return &s.State
} }
func (s *state2) ActorKey() string {
return actors.CronKey
}
func (s *state2) ActorVersion() actorstypes.Version {
return actorstypes.Version2
}
func (s *state2) Code() cid.Cid {
code, ok := actors.GetActorCodeID(s.ActorVersion(), s.ActorKey())
if !ok {
panic(fmt.Errorf("didn't find actor %v code id for actor version %d", s.ActorKey(), s.ActorVersion()))
}
return code
}

View File

@ -1,10 +1,14 @@
package cron package cron
import ( import (
"fmt"
"github.com/ipfs/go-cid" "github.com/ipfs/go-cid"
actorstypes "github.com/filecoin-project/go-state-types/actors"
cron3 "github.com/filecoin-project/specs-actors/v3/actors/builtin/cron" cron3 "github.com/filecoin-project/specs-actors/v3/actors/builtin/cron"
"github.com/filecoin-project/lotus/chain/actors"
"github.com/filecoin-project/lotus/chain/actors/adt" "github.com/filecoin-project/lotus/chain/actors/adt"
) )
@ -33,3 +37,20 @@ type state3 struct {
func (s *state3) GetState() interface{} { func (s *state3) GetState() interface{} {
return &s.State return &s.State
} }
func (s *state3) ActorKey() string {
return actors.CronKey
}
func (s *state3) ActorVersion() actorstypes.Version {
return actorstypes.Version3
}
func (s *state3) Code() cid.Cid {
code, ok := actors.GetActorCodeID(s.ActorVersion(), s.ActorKey())
if !ok {
panic(fmt.Errorf("didn't find actor %v code id for actor version %d", s.ActorKey(), s.ActorVersion()))
}
return code
}

View File

@ -1,10 +1,14 @@
package cron package cron
import ( import (
"fmt"
"github.com/ipfs/go-cid" "github.com/ipfs/go-cid"
actorstypes "github.com/filecoin-project/go-state-types/actors"
cron4 "github.com/filecoin-project/specs-actors/v4/actors/builtin/cron" cron4 "github.com/filecoin-project/specs-actors/v4/actors/builtin/cron"
"github.com/filecoin-project/lotus/chain/actors"
"github.com/filecoin-project/lotus/chain/actors/adt" "github.com/filecoin-project/lotus/chain/actors/adt"
) )
@ -33,3 +37,20 @@ type state4 struct {
func (s *state4) GetState() interface{} { func (s *state4) GetState() interface{} {
return &s.State return &s.State
} }
func (s *state4) ActorKey() string {
return actors.CronKey
}
func (s *state4) ActorVersion() actorstypes.Version {
return actorstypes.Version4
}
func (s *state4) Code() cid.Cid {
code, ok := actors.GetActorCodeID(s.ActorVersion(), s.ActorKey())
if !ok {
panic(fmt.Errorf("didn't find actor %v code id for actor version %d", s.ActorKey(), s.ActorVersion()))
}
return code
}

View File

@ -1,10 +1,14 @@
package cron package cron
import ( import (
"fmt"
"github.com/ipfs/go-cid" "github.com/ipfs/go-cid"
actorstypes "github.com/filecoin-project/go-state-types/actors"
cron5 "github.com/filecoin-project/specs-actors/v5/actors/builtin/cron" cron5 "github.com/filecoin-project/specs-actors/v5/actors/builtin/cron"
"github.com/filecoin-project/lotus/chain/actors"
"github.com/filecoin-project/lotus/chain/actors/adt" "github.com/filecoin-project/lotus/chain/actors/adt"
) )
@ -33,3 +37,20 @@ type state5 struct {
func (s *state5) GetState() interface{} { func (s *state5) GetState() interface{} {
return &s.State return &s.State
} }
func (s *state5) ActorKey() string {
return actors.CronKey
}
func (s *state5) ActorVersion() actorstypes.Version {
return actorstypes.Version5
}
func (s *state5) Code() cid.Cid {
code, ok := actors.GetActorCodeID(s.ActorVersion(), s.ActorKey())
if !ok {
panic(fmt.Errorf("didn't find actor %v code id for actor version %d", s.ActorKey(), s.ActorVersion()))
}
return code
}

View File

@ -1,10 +1,14 @@
package cron package cron
import ( import (
"fmt"
"github.com/ipfs/go-cid" "github.com/ipfs/go-cid"
actorstypes "github.com/filecoin-project/go-state-types/actors"
cron6 "github.com/filecoin-project/specs-actors/v6/actors/builtin/cron" cron6 "github.com/filecoin-project/specs-actors/v6/actors/builtin/cron"
"github.com/filecoin-project/lotus/chain/actors"
"github.com/filecoin-project/lotus/chain/actors/adt" "github.com/filecoin-project/lotus/chain/actors/adt"
) )
@ -33,3 +37,20 @@ type state6 struct {
func (s *state6) GetState() interface{} { func (s *state6) GetState() interface{} {
return &s.State return &s.State
} }
func (s *state6) ActorKey() string {
return actors.CronKey
}
func (s *state6) ActorVersion() actorstypes.Version {
return actorstypes.Version6
}
func (s *state6) Code() cid.Cid {
code, ok := actors.GetActorCodeID(s.ActorVersion(), s.ActorKey())
if !ok {
panic(fmt.Errorf("didn't find actor %v code id for actor version %d", s.ActorKey(), s.ActorVersion()))
}
return code
}

View File

@ -1,10 +1,14 @@
package cron package cron
import ( import (
"fmt"
"github.com/ipfs/go-cid" "github.com/ipfs/go-cid"
actorstypes "github.com/filecoin-project/go-state-types/actors"
cron7 "github.com/filecoin-project/specs-actors/v7/actors/builtin/cron" cron7 "github.com/filecoin-project/specs-actors/v7/actors/builtin/cron"
"github.com/filecoin-project/lotus/chain/actors"
"github.com/filecoin-project/lotus/chain/actors/adt" "github.com/filecoin-project/lotus/chain/actors/adt"
) )
@ -33,3 +37,20 @@ type state7 struct {
func (s *state7) GetState() interface{} { func (s *state7) GetState() interface{} {
return &s.State return &s.State
} }
func (s *state7) ActorKey() string {
return actors.CronKey
}
func (s *state7) ActorVersion() actorstypes.Version {
return actorstypes.Version7
}
func (s *state7) Code() cid.Cid {
code, ok := actors.GetActorCodeID(s.ActorVersion(), s.ActorKey())
if !ok {
panic(fmt.Errorf("didn't find actor %v code id for actor version %d", s.ActorKey(), s.ActorVersion()))
}
return code
}

View File

@ -1,10 +1,14 @@
package cron package cron
import ( import (
"fmt"
"github.com/ipfs/go-cid" "github.com/ipfs/go-cid"
actorstypes "github.com/filecoin-project/go-state-types/actors"
cron8 "github.com/filecoin-project/go-state-types/builtin/v8/cron" cron8 "github.com/filecoin-project/go-state-types/builtin/v8/cron"
"github.com/filecoin-project/lotus/chain/actors"
"github.com/filecoin-project/lotus/chain/actors/adt" "github.com/filecoin-project/lotus/chain/actors/adt"
) )
@ -33,3 +37,20 @@ type state8 struct {
func (s *state8) GetState() interface{} { func (s *state8) GetState() interface{} {
return &s.State return &s.State
} }
func (s *state8) ActorKey() string {
return actors.CronKey
}
func (s *state8) ActorVersion() actorstypes.Version {
return actorstypes.Version8
}
func (s *state8) Code() cid.Cid {
code, ok := actors.GetActorCodeID(s.ActorVersion(), s.ActorKey())
if !ok {
panic(fmt.Errorf("didn't find actor %v code id for actor version %d", s.ActorKey(), s.ActorVersion()))
}
return code
}

View File

@ -1,10 +1,14 @@
package cron package cron
import ( import (
"fmt"
"github.com/ipfs/go-cid" "github.com/ipfs/go-cid"
actorstypes "github.com/filecoin-project/go-state-types/actors"
cron9 "github.com/filecoin-project/go-state-types/builtin/v9/cron" cron9 "github.com/filecoin-project/go-state-types/builtin/v9/cron"
"github.com/filecoin-project/lotus/chain/actors"
"github.com/filecoin-project/lotus/chain/actors/adt" "github.com/filecoin-project/lotus/chain/actors/adt"
) )
@ -33,3 +37,20 @@ type state9 struct {
func (s *state9) GetState() interface{} { func (s *state9) GetState() interface{} {
return &s.State return &s.State
} }
func (s *state9) ActorKey() string {
return actors.CronKey
}
func (s *state9) ActorVersion() actorstypes.Version {
return actorstypes.Version9
}
func (s *state9) Code() cid.Cid {
code, ok := actors.GetActorCodeID(s.ActorVersion(), s.ActorKey())
if !ok {
panic(fmt.Errorf("didn't find actor %v code id for actor version %d", s.ActorKey(), s.ActorVersion()))
}
return code
}

View File

@ -3,6 +3,8 @@ package datacap
import ( import (
"golang.org/x/xerrors" "golang.org/x/xerrors"
"github.com/ipfs/go-cid"
"github.com/filecoin-project/go-address" "github.com/filecoin-project/go-address"
"github.com/filecoin-project/go-state-types/abi" "github.com/filecoin-project/go-state-types/abi"
actorstypes "github.com/filecoin-project/go-state-types/actors" actorstypes "github.com/filecoin-project/go-state-types/actors"
@ -49,8 +51,19 @@ func MakeState(store adt.Store, av actorstypes.Version, governor address.Address
type State interface { type State interface {
cbor.Marshaler cbor.Marshaler
Code() cid.Cid
ActorKey() string
ActorVersion() actorstypes.Version
ForEachClient(func(addr address.Address, dcap abi.StoragePower) error) error ForEachClient(func(addr address.Address, dcap abi.StoragePower) error) error
VerifiedClientDataCap(address.Address) (bool, abi.StoragePower, error) VerifiedClientDataCap(address.Address) (bool, abi.StoragePower, error)
Governor() (address.Address, error) Governor() (address.Address, error)
GetState() interface{} GetState() interface{}
} }
func AllCodes() []cid.Cid {
return []cid.Cid{ {{range .versions}}
(&state{{.}}{}).Code(),
{{- end}}
}
}

View File

@ -1,6 +1,7 @@
package datacap package datacap
import ( import (
"github.com/ipfs/go-cid"
"golang.org/x/xerrors" "golang.org/x/xerrors"
"github.com/filecoin-project/go-address" "github.com/filecoin-project/go-address"
@ -56,8 +57,19 @@ func MakeState(store adt.Store, av actorstypes.Version, governor address.Address
type State interface { type State interface {
cbor.Marshaler cbor.Marshaler
Code() cid.Cid
ActorKey() string
ActorVersion() actorstypes.Version
ForEachClient(func(addr address.Address, dcap abi.StoragePower) error) error ForEachClient(func(addr address.Address, dcap abi.StoragePower) error) error
VerifiedClientDataCap(address.Address) (bool, abi.StoragePower, error) VerifiedClientDataCap(address.Address) (bool, abi.StoragePower, error)
Governor() (address.Address, error) Governor() (address.Address, error)
GetState() interface{} GetState() interface{}
} }
func AllCodes() []cid.Cid {
return []cid.Cid{
(&state9{}).Code(),
(&state10{}).Code(),
}
}

View File

@ -1,12 +1,14 @@
package datacap package datacap
import ( import (
"fmt"
"github.com/filecoin-project/go-address" "github.com/filecoin-project/go-address"
"github.com/filecoin-project/go-state-types/abi" "github.com/filecoin-project/go-state-types/abi"
"github.com/ipfs/go-cid" "github.com/ipfs/go-cid"
"github.com/filecoin-project/lotus/chain/actors" "github.com/filecoin-project/lotus/chain/actors"
"github.com/filecoin-project/lotus/chain/actors/adt" "github.com/filecoin-project/lotus/chain/actors/adt"
actorstypes "github.com/filecoin-project/go-state-types/actors"
datacap{{.v}} "github.com/filecoin-project/go-state-types/builtin{{.import}}datacap" datacap{{.v}} "github.com/filecoin-project/go-state-types/builtin{{.import}}datacap"
adt{{.v}} "github.com/filecoin-project/go-state-types/builtin{{.import}}util/adt" adt{{.v}} "github.com/filecoin-project/go-state-types/builtin{{.import}}util/adt"
@ -59,3 +61,20 @@ func (s *state{{.v}}) verifiedClients() (adt.Map, error) {
func (s *state{{.v}}) VerifiedClientDataCap(addr address.Address) (bool, abi.StoragePower, error) { func (s *state{{.v}}) VerifiedClientDataCap(addr address.Address) (bool, abi.StoragePower, error) {
return getDataCap(s.store, actors.Version{{.v}}, s.verifiedClients, addr) return getDataCap(s.store, actors.Version{{.v}}, s.verifiedClients, addr)
} }
func (s *state{{.v}}) ActorKey() string {
return actors.DatacapKey
}
func (s *state{{.v}}) ActorVersion() actorstypes.Version {
return actorstypes.Version{{.v}}
}
func (s *state{{.v}}) Code() cid.Cid {
code, ok := actors.GetActorCodeID(s.ActorVersion(), s.ActorKey())
if !ok {
panic(fmt.Errorf("didn't find actor %v code id for actor version %d", s.ActorKey(), s.ActorVersion()))
}
return code
}

View File

@ -1,10 +1,13 @@
package datacap package datacap
import ( import (
"fmt"
"github.com/ipfs/go-cid" "github.com/ipfs/go-cid"
"github.com/filecoin-project/go-address" "github.com/filecoin-project/go-address"
"github.com/filecoin-project/go-state-types/abi" "github.com/filecoin-project/go-state-types/abi"
actorstypes "github.com/filecoin-project/go-state-types/actors"
datacap10 "github.com/filecoin-project/go-state-types/builtin/v10/datacap" datacap10 "github.com/filecoin-project/go-state-types/builtin/v10/datacap"
adt10 "github.com/filecoin-project/go-state-types/builtin/v10/util/adt" adt10 "github.com/filecoin-project/go-state-types/builtin/v10/util/adt"
@ -59,3 +62,20 @@ func (s *state10) verifiedClients() (adt.Map, error) {
func (s *state10) VerifiedClientDataCap(addr address.Address) (bool, abi.StoragePower, error) { func (s *state10) VerifiedClientDataCap(addr address.Address) (bool, abi.StoragePower, error) {
return getDataCap(s.store, actors.Version10, s.verifiedClients, addr) return getDataCap(s.store, actors.Version10, s.verifiedClients, addr)
} }
func (s *state10) ActorKey() string {
return actors.DatacapKey
}
func (s *state10) ActorVersion() actorstypes.Version {
return actorstypes.Version10
}
func (s *state10) Code() cid.Cid {
code, ok := actors.GetActorCodeID(s.ActorVersion(), s.ActorKey())
if !ok {
panic(fmt.Errorf("didn't find actor %v code id for actor version %d", s.ActorKey(), s.ActorVersion()))
}
return code
}

View File

@ -1,10 +1,13 @@
package datacap package datacap
import ( import (
"fmt"
"github.com/ipfs/go-cid" "github.com/ipfs/go-cid"
"github.com/filecoin-project/go-address" "github.com/filecoin-project/go-address"
"github.com/filecoin-project/go-state-types/abi" "github.com/filecoin-project/go-state-types/abi"
actorstypes "github.com/filecoin-project/go-state-types/actors"
datacap9 "github.com/filecoin-project/go-state-types/builtin/v9/datacap" datacap9 "github.com/filecoin-project/go-state-types/builtin/v9/datacap"
adt9 "github.com/filecoin-project/go-state-types/builtin/v9/util/adt" adt9 "github.com/filecoin-project/go-state-types/builtin/v9/util/adt"
@ -59,3 +62,20 @@ func (s *state9) verifiedClients() (adt.Map, error) {
func (s *state9) VerifiedClientDataCap(addr address.Address) (bool, abi.StoragePower, error) { func (s *state9) VerifiedClientDataCap(addr address.Address) (bool, abi.StoragePower, error) {
return getDataCap(s.store, actors.Version9, s.verifiedClients, addr) return getDataCap(s.store, actors.Version9, s.verifiedClients, addr)
} }
func (s *state9) ActorKey() string {
return actors.DatacapKey
}
func (s *state9) ActorVersion() actorstypes.Version {
return actorstypes.Version9
}
func (s *state9) Code() cid.Cid {
code, ok := actors.GetActorCodeID(s.ActorVersion(), s.ActorKey())
if !ok {
panic(fmt.Errorf("didn't find actor %v code id for actor version %d", s.ActorKey(), s.ActorVersion()))
}
return code
}

View File

@ -67,6 +67,10 @@ func MakeState(store adt.Store, av actorstypes.Version, networkName string) (Sta
type State interface { type State interface {
cbor.Marshaler cbor.Marshaler
Code() cid.Cid
ActorKey() string
ActorVersion() actorstypes.Version
ResolveAddress(address address.Address) (address.Address, bool, error) ResolveAddress(address address.Address) (address.Address, bool, error)
MapAddressToNewID(address address.Address) (address.Address, error) MapAddressToNewID(address address.Address) (address.Address, error)
NetworkName() (dtypes.NetworkName, error) NetworkName() (dtypes.NetworkName, error)
@ -87,6 +91,16 @@ type State interface {
// Sets the address map for the init actor. This should only be used for testing. // Sets the address map for the init actor. This should only be used for testing.
SetAddressMap(mcid cid.Cid) error SetAddressMap(mcid cid.Cid) error
AddressMap() (adt.Map, error)
GetState() interface{} GetState() interface{}
AddressMap() (adt.Map, error)
AddressMapBitWidth() int
AddressMapHashFunction() func(input []byte) []byte
}
func AllCodes() []cid.Cid {
return []cid.Cid{ {{range .versions}}
(&state{{.}}{}).Code(),
{{- end}}
}
} }

View File

@ -116,6 +116,10 @@ func MakeState(store adt.Store, av actorstypes.Version, networkName string) (Sta
type State interface { type State interface {
cbor.Marshaler cbor.Marshaler
Code() cid.Cid
ActorKey() string
ActorVersion() actorstypes.Version
ResolveAddress(address address.Address) (address.Address, bool, error) ResolveAddress(address address.Address) (address.Address, bool, error)
MapAddressToNewID(address address.Address) (address.Address, error) MapAddressToNewID(address address.Address) (address.Address, error)
NetworkName() (dtypes.NetworkName, error) NetworkName() (dtypes.NetworkName, error)
@ -136,6 +140,24 @@ type State interface {
// Sets the address map for the init actor. This should only be used for testing. // Sets the address map for the init actor. This should only be used for testing.
SetAddressMap(mcid cid.Cid) error SetAddressMap(mcid cid.Cid) error
AddressMap() (adt.Map, error)
GetState() interface{} GetState() interface{}
AddressMap() (adt.Map, error)
AddressMapBitWidth() int
AddressMapHashFunction() func(input []byte) []byte
}
func AllCodes() []cid.Cid {
return []cid.Cid{
(&state0{}).Code(),
(&state2{}).Code(),
(&state3{}).Code(),
(&state4{}).Code(),
(&state5{}).Code(),
(&state6{}).Code(),
(&state7{}).Code(),
(&state8{}).Code(),
(&state9{}).Code(),
(&state10{}).Code(),
}
} }

View File

@ -1,13 +1,18 @@
package init package init
import ( import (
"crypto/sha256"
"fmt"
"github.com/filecoin-project/go-address" "github.com/filecoin-project/go-address"
"github.com/filecoin-project/go-state-types/abi" "github.com/filecoin-project/go-state-types/abi"
"github.com/ipfs/go-cid" "github.com/ipfs/go-cid"
cbg "github.com/whyrusleeping/cbor-gen" cbg "github.com/whyrusleeping/cbor-gen"
"golang.org/x/xerrors" "golang.org/x/xerrors"
"github.com/filecoin-project/lotus/chain/actors"
"github.com/filecoin-project/lotus/chain/actors/adt" "github.com/filecoin-project/lotus/chain/actors/adt"
actorstypes "github.com/filecoin-project/go-state-types/actors"
"github.com/filecoin-project/lotus/node/modules/dtypes" "github.com/filecoin-project/lotus/node/modules/dtypes"
{{if (le .v 7)}} {{if (le .v 7)}}
@ -119,10 +124,42 @@ func (s *state{{.v}}) SetAddressMap(mcid cid.Cid) error {
return nil return nil
} }
func (s *state{{.v}}) GetState() interface{} {
return &s.State
}
func (s *state{{.v}}) AddressMap() (adt.Map, error) { func (s *state{{.v}}) AddressMap() (adt.Map, error) {
return adt{{.v}}.AsMap(s.store, s.State.AddressMap{{if (ge .v 3)}}, builtin{{.v}}.DefaultHamtBitwidth{{end}}) return adt{{.v}}.AsMap(s.store, s.State.AddressMap{{if (ge .v 3)}}, builtin{{.v}}.DefaultHamtBitwidth{{end}})
} }
func (s *state{{.v}}) GetState() interface{} { func (s *state{{.v}}) AddressMapBitWidth() int {
return &s.State {{- if (ge .v 3)}}
return builtin{{.v}}.DefaultHamtBitwidth
{{- else}}
return 5
{{- end}}
}
func (s *state{{.v}}) AddressMapHashFunction() func(input []byte) []byte {
return func(input []byte) []byte {
res := sha256.Sum256(input)
return res[:]
}
}
func (s *state{{.v}}) ActorKey() string {
return actors.InitKey
}
func (s *state{{.v}}) ActorVersion() actorstypes.Version {
return actorstypes.Version{{.v}}
}
func (s *state{{.v}}) Code() cid.Cid {
code, ok := actors.GetActorCodeID(s.ActorVersion(), s.ActorKey())
if !ok {
panic(fmt.Errorf("didn't find actor %v code id for actor version %d", s.ActorKey(), s.ActorVersion()))
}
return code
} }

View File

@ -1,15 +1,20 @@
package init package init
import ( import (
"crypto/sha256"
"fmt"
"github.com/ipfs/go-cid" "github.com/ipfs/go-cid"
cbg "github.com/whyrusleeping/cbor-gen" cbg "github.com/whyrusleeping/cbor-gen"
"golang.org/x/xerrors" "golang.org/x/xerrors"
"github.com/filecoin-project/go-address" "github.com/filecoin-project/go-address"
"github.com/filecoin-project/go-state-types/abi" "github.com/filecoin-project/go-state-types/abi"
actorstypes "github.com/filecoin-project/go-state-types/actors"
init0 "github.com/filecoin-project/specs-actors/actors/builtin/init" init0 "github.com/filecoin-project/specs-actors/actors/builtin/init"
adt0 "github.com/filecoin-project/specs-actors/actors/util/adt" adt0 "github.com/filecoin-project/specs-actors/actors/util/adt"
"github.com/filecoin-project/lotus/chain/actors"
"github.com/filecoin-project/lotus/chain/actors/adt" "github.com/filecoin-project/lotus/chain/actors/adt"
"github.com/filecoin-project/lotus/node/modules/dtypes" "github.com/filecoin-project/lotus/node/modules/dtypes"
) )
@ -103,10 +108,38 @@ func (s *state0) SetAddressMap(mcid cid.Cid) error {
return nil return nil
} }
func (s *state0) GetState() interface{} {
return &s.State
}
func (s *state0) AddressMap() (adt.Map, error) { func (s *state0) AddressMap() (adt.Map, error) {
return adt0.AsMap(s.store, s.State.AddressMap) return adt0.AsMap(s.store, s.State.AddressMap)
} }
func (s *state0) GetState() interface{} { func (s *state0) AddressMapBitWidth() int {
return &s.State return 5
}
func (s *state0) AddressMapHashFunction() func(input []byte) []byte {
return func(input []byte) []byte {
res := sha256.Sum256(input)
return res[:]
}
}
func (s *state0) ActorKey() string {
return actors.InitKey
}
func (s *state0) ActorVersion() actorstypes.Version {
return actorstypes.Version0
}
func (s *state0) Code() cid.Cid {
code, ok := actors.GetActorCodeID(s.ActorVersion(), s.ActorKey())
if !ok {
panic(fmt.Errorf("didn't find actor %v code id for actor version %d", s.ActorKey(), s.ActorVersion()))
}
return code
} }

View File

@ -1,16 +1,21 @@
package init package init
import ( import (
"crypto/sha256"
"fmt"
"github.com/ipfs/go-cid" "github.com/ipfs/go-cid"
cbg "github.com/whyrusleeping/cbor-gen" cbg "github.com/whyrusleeping/cbor-gen"
"golang.org/x/xerrors" "golang.org/x/xerrors"
"github.com/filecoin-project/go-address" "github.com/filecoin-project/go-address"
"github.com/filecoin-project/go-state-types/abi" "github.com/filecoin-project/go-state-types/abi"
actorstypes "github.com/filecoin-project/go-state-types/actors"
builtin10 "github.com/filecoin-project/go-state-types/builtin" builtin10 "github.com/filecoin-project/go-state-types/builtin"
init10 "github.com/filecoin-project/go-state-types/builtin/v10/init" init10 "github.com/filecoin-project/go-state-types/builtin/v10/init"
adt10 "github.com/filecoin-project/go-state-types/builtin/v10/util/adt" adt10 "github.com/filecoin-project/go-state-types/builtin/v10/util/adt"
"github.com/filecoin-project/lotus/chain/actors"
"github.com/filecoin-project/lotus/chain/actors/adt" "github.com/filecoin-project/lotus/chain/actors/adt"
"github.com/filecoin-project/lotus/node/modules/dtypes" "github.com/filecoin-project/lotus/node/modules/dtypes"
) )
@ -104,10 +109,38 @@ func (s *state10) SetAddressMap(mcid cid.Cid) error {
return nil return nil
} }
func (s *state10) GetState() interface{} {
return &s.State
}
func (s *state10) AddressMap() (adt.Map, error) { func (s *state10) AddressMap() (adt.Map, error) {
return adt10.AsMap(s.store, s.State.AddressMap, builtin10.DefaultHamtBitwidth) return adt10.AsMap(s.store, s.State.AddressMap, builtin10.DefaultHamtBitwidth)
} }
func (s *state10) GetState() interface{} { func (s *state10) AddressMapBitWidth() int {
return &s.State return builtin10.DefaultHamtBitwidth
}
func (s *state10) AddressMapHashFunction() func(input []byte) []byte {
return func(input []byte) []byte {
res := sha256.Sum256(input)
return res[:]
}
}
func (s *state10) ActorKey() string {
return actors.InitKey
}
func (s *state10) ActorVersion() actorstypes.Version {
return actorstypes.Version10
}
func (s *state10) Code() cid.Cid {
code, ok := actors.GetActorCodeID(s.ActorVersion(), s.ActorKey())
if !ok {
panic(fmt.Errorf("didn't find actor %v code id for actor version %d", s.ActorKey(), s.ActorVersion()))
}
return code
} }

View File

@ -1,15 +1,20 @@
package init package init
import ( import (
"crypto/sha256"
"fmt"
"github.com/ipfs/go-cid" "github.com/ipfs/go-cid"
cbg "github.com/whyrusleeping/cbor-gen" cbg "github.com/whyrusleeping/cbor-gen"
"golang.org/x/xerrors" "golang.org/x/xerrors"
"github.com/filecoin-project/go-address" "github.com/filecoin-project/go-address"
"github.com/filecoin-project/go-state-types/abi" "github.com/filecoin-project/go-state-types/abi"
actorstypes "github.com/filecoin-project/go-state-types/actors"
init2 "github.com/filecoin-project/specs-actors/v2/actors/builtin/init" init2 "github.com/filecoin-project/specs-actors/v2/actors/builtin/init"
adt2 "github.com/filecoin-project/specs-actors/v2/actors/util/adt" adt2 "github.com/filecoin-project/specs-actors/v2/actors/util/adt"
"github.com/filecoin-project/lotus/chain/actors"
"github.com/filecoin-project/lotus/chain/actors/adt" "github.com/filecoin-project/lotus/chain/actors/adt"
"github.com/filecoin-project/lotus/node/modules/dtypes" "github.com/filecoin-project/lotus/node/modules/dtypes"
) )
@ -103,10 +108,38 @@ func (s *state2) SetAddressMap(mcid cid.Cid) error {
return nil return nil
} }
func (s *state2) GetState() interface{} {
return &s.State
}
func (s *state2) AddressMap() (adt.Map, error) { func (s *state2) AddressMap() (adt.Map, error) {
return adt2.AsMap(s.store, s.State.AddressMap) return adt2.AsMap(s.store, s.State.AddressMap)
} }
func (s *state2) GetState() interface{} { func (s *state2) AddressMapBitWidth() int {
return &s.State return 5
}
func (s *state2) AddressMapHashFunction() func(input []byte) []byte {
return func(input []byte) []byte {
res := sha256.Sum256(input)
return res[:]
}
}
func (s *state2) ActorKey() string {
return actors.InitKey
}
func (s *state2) ActorVersion() actorstypes.Version {
return actorstypes.Version2
}
func (s *state2) Code() cid.Cid {
code, ok := actors.GetActorCodeID(s.ActorVersion(), s.ActorKey())
if !ok {
panic(fmt.Errorf("didn't find actor %v code id for actor version %d", s.ActorKey(), s.ActorVersion()))
}
return code
} }

View File

@ -1,16 +1,21 @@
package init package init
import ( import (
"crypto/sha256"
"fmt"
"github.com/ipfs/go-cid" "github.com/ipfs/go-cid"
cbg "github.com/whyrusleeping/cbor-gen" cbg "github.com/whyrusleeping/cbor-gen"
"golang.org/x/xerrors" "golang.org/x/xerrors"
"github.com/filecoin-project/go-address" "github.com/filecoin-project/go-address"
"github.com/filecoin-project/go-state-types/abi" "github.com/filecoin-project/go-state-types/abi"
actorstypes "github.com/filecoin-project/go-state-types/actors"
builtin3 "github.com/filecoin-project/specs-actors/v3/actors/builtin" builtin3 "github.com/filecoin-project/specs-actors/v3/actors/builtin"
init3 "github.com/filecoin-project/specs-actors/v3/actors/builtin/init" init3 "github.com/filecoin-project/specs-actors/v3/actors/builtin/init"
adt3 "github.com/filecoin-project/specs-actors/v3/actors/util/adt" adt3 "github.com/filecoin-project/specs-actors/v3/actors/util/adt"
"github.com/filecoin-project/lotus/chain/actors"
"github.com/filecoin-project/lotus/chain/actors/adt" "github.com/filecoin-project/lotus/chain/actors/adt"
"github.com/filecoin-project/lotus/node/modules/dtypes" "github.com/filecoin-project/lotus/node/modules/dtypes"
) )
@ -104,10 +109,38 @@ func (s *state3) SetAddressMap(mcid cid.Cid) error {
return nil return nil
} }
func (s *state3) GetState() interface{} {
return &s.State
}
func (s *state3) AddressMap() (adt.Map, error) { func (s *state3) AddressMap() (adt.Map, error) {
return adt3.AsMap(s.store, s.State.AddressMap, builtin3.DefaultHamtBitwidth) return adt3.AsMap(s.store, s.State.AddressMap, builtin3.DefaultHamtBitwidth)
} }
func (s *state3) GetState() interface{} { func (s *state3) AddressMapBitWidth() int {
return &s.State return builtin3.DefaultHamtBitwidth
}
func (s *state3) AddressMapHashFunction() func(input []byte) []byte {
return func(input []byte) []byte {
res := sha256.Sum256(input)
return res[:]
}
}
func (s *state3) ActorKey() string {
return actors.InitKey
}
func (s *state3) ActorVersion() actorstypes.Version {
return actorstypes.Version3
}
func (s *state3) Code() cid.Cid {
code, ok := actors.GetActorCodeID(s.ActorVersion(), s.ActorKey())
if !ok {
panic(fmt.Errorf("didn't find actor %v code id for actor version %d", s.ActorKey(), s.ActorVersion()))
}
return code
} }

View File

@ -1,16 +1,21 @@
package init package init
import ( import (
"crypto/sha256"
"fmt"
"github.com/ipfs/go-cid" "github.com/ipfs/go-cid"
cbg "github.com/whyrusleeping/cbor-gen" cbg "github.com/whyrusleeping/cbor-gen"
"golang.org/x/xerrors" "golang.org/x/xerrors"
"github.com/filecoin-project/go-address" "github.com/filecoin-project/go-address"
"github.com/filecoin-project/go-state-types/abi" "github.com/filecoin-project/go-state-types/abi"
actorstypes "github.com/filecoin-project/go-state-types/actors"
builtin4 "github.com/filecoin-project/specs-actors/v4/actors/builtin" builtin4 "github.com/filecoin-project/specs-actors/v4/actors/builtin"
init4 "github.com/filecoin-project/specs-actors/v4/actors/builtin/init" init4 "github.com/filecoin-project/specs-actors/v4/actors/builtin/init"
adt4 "github.com/filecoin-project/specs-actors/v4/actors/util/adt" adt4 "github.com/filecoin-project/specs-actors/v4/actors/util/adt"
"github.com/filecoin-project/lotus/chain/actors"
"github.com/filecoin-project/lotus/chain/actors/adt" "github.com/filecoin-project/lotus/chain/actors/adt"
"github.com/filecoin-project/lotus/node/modules/dtypes" "github.com/filecoin-project/lotus/node/modules/dtypes"
) )
@ -104,10 +109,38 @@ func (s *state4) SetAddressMap(mcid cid.Cid) error {
return nil return nil
} }
func (s *state4) GetState() interface{} {
return &s.State
}
func (s *state4) AddressMap() (adt.Map, error) { func (s *state4) AddressMap() (adt.Map, error) {
return adt4.AsMap(s.store, s.State.AddressMap, builtin4.DefaultHamtBitwidth) return adt4.AsMap(s.store, s.State.AddressMap, builtin4.DefaultHamtBitwidth)
} }
func (s *state4) GetState() interface{} { func (s *state4) AddressMapBitWidth() int {
return &s.State return builtin4.DefaultHamtBitwidth
}
func (s *state4) AddressMapHashFunction() func(input []byte) []byte {
return func(input []byte) []byte {
res := sha256.Sum256(input)
return res[:]
}
}
func (s *state4) ActorKey() string {
return actors.InitKey
}
func (s *state4) ActorVersion() actorstypes.Version {
return actorstypes.Version4
}
func (s *state4) Code() cid.Cid {
code, ok := actors.GetActorCodeID(s.ActorVersion(), s.ActorKey())
if !ok {
panic(fmt.Errorf("didn't find actor %v code id for actor version %d", s.ActorKey(), s.ActorVersion()))
}
return code
} }

View File

@ -1,16 +1,21 @@
package init package init
import ( import (
"crypto/sha256"
"fmt"
"github.com/ipfs/go-cid" "github.com/ipfs/go-cid"
cbg "github.com/whyrusleeping/cbor-gen" cbg "github.com/whyrusleeping/cbor-gen"
"golang.org/x/xerrors" "golang.org/x/xerrors"
"github.com/filecoin-project/go-address" "github.com/filecoin-project/go-address"
"github.com/filecoin-project/go-state-types/abi" "github.com/filecoin-project/go-state-types/abi"
actorstypes "github.com/filecoin-project/go-state-types/actors"
builtin5 "github.com/filecoin-project/specs-actors/v5/actors/builtin" builtin5 "github.com/filecoin-project/specs-actors/v5/actors/builtin"
init5 "github.com/filecoin-project/specs-actors/v5/actors/builtin/init" init5 "github.com/filecoin-project/specs-actors/v5/actors/builtin/init"
adt5 "github.com/filecoin-project/specs-actors/v5/actors/util/adt" adt5 "github.com/filecoin-project/specs-actors/v5/actors/util/adt"
"github.com/filecoin-project/lotus/chain/actors"
"github.com/filecoin-project/lotus/chain/actors/adt" "github.com/filecoin-project/lotus/chain/actors/adt"
"github.com/filecoin-project/lotus/node/modules/dtypes" "github.com/filecoin-project/lotus/node/modules/dtypes"
) )
@ -104,10 +109,38 @@ func (s *state5) SetAddressMap(mcid cid.Cid) error {
return nil return nil
} }
func (s *state5) GetState() interface{} {
return &s.State
}
func (s *state5) AddressMap() (adt.Map, error) { func (s *state5) AddressMap() (adt.Map, error) {
return adt5.AsMap(s.store, s.State.AddressMap, builtin5.DefaultHamtBitwidth) return adt5.AsMap(s.store, s.State.AddressMap, builtin5.DefaultHamtBitwidth)
} }
func (s *state5) GetState() interface{} { func (s *state5) AddressMapBitWidth() int {
return &s.State return builtin5.DefaultHamtBitwidth
}
func (s *state5) AddressMapHashFunction() func(input []byte) []byte {
return func(input []byte) []byte {
res := sha256.Sum256(input)
return res[:]
}
}
func (s *state5) ActorKey() string {
return actors.InitKey
}
func (s *state5) ActorVersion() actorstypes.Version {
return actorstypes.Version5
}
func (s *state5) Code() cid.Cid {
code, ok := actors.GetActorCodeID(s.ActorVersion(), s.ActorKey())
if !ok {
panic(fmt.Errorf("didn't find actor %v code id for actor version %d", s.ActorKey(), s.ActorVersion()))
}
return code
} }

View File

@ -1,16 +1,21 @@
package init package init
import ( import (
"crypto/sha256"
"fmt"
"github.com/ipfs/go-cid" "github.com/ipfs/go-cid"
cbg "github.com/whyrusleeping/cbor-gen" cbg "github.com/whyrusleeping/cbor-gen"
"golang.org/x/xerrors" "golang.org/x/xerrors"
"github.com/filecoin-project/go-address" "github.com/filecoin-project/go-address"
"github.com/filecoin-project/go-state-types/abi" "github.com/filecoin-project/go-state-types/abi"
actorstypes "github.com/filecoin-project/go-state-types/actors"
builtin6 "github.com/filecoin-project/specs-actors/v6/actors/builtin" builtin6 "github.com/filecoin-project/specs-actors/v6/actors/builtin"
init6 "github.com/filecoin-project/specs-actors/v6/actors/builtin/init" init6 "github.com/filecoin-project/specs-actors/v6/actors/builtin/init"
adt6 "github.com/filecoin-project/specs-actors/v6/actors/util/adt" adt6 "github.com/filecoin-project/specs-actors/v6/actors/util/adt"
"github.com/filecoin-project/lotus/chain/actors"
"github.com/filecoin-project/lotus/chain/actors/adt" "github.com/filecoin-project/lotus/chain/actors/adt"
"github.com/filecoin-project/lotus/node/modules/dtypes" "github.com/filecoin-project/lotus/node/modules/dtypes"
) )
@ -104,10 +109,38 @@ func (s *state6) SetAddressMap(mcid cid.Cid) error {
return nil return nil
} }
func (s *state6) GetState() interface{} {
return &s.State
}
func (s *state6) AddressMap() (adt.Map, error) { func (s *state6) AddressMap() (adt.Map, error) {
return adt6.AsMap(s.store, s.State.AddressMap, builtin6.DefaultHamtBitwidth) return adt6.AsMap(s.store, s.State.AddressMap, builtin6.DefaultHamtBitwidth)
} }
func (s *state6) GetState() interface{} { func (s *state6) AddressMapBitWidth() int {
return &s.State return builtin6.DefaultHamtBitwidth
}
func (s *state6) AddressMapHashFunction() func(input []byte) []byte {
return func(input []byte) []byte {
res := sha256.Sum256(input)
return res[:]
}
}
func (s *state6) ActorKey() string {
return actors.InitKey
}
func (s *state6) ActorVersion() actorstypes.Version {
return actorstypes.Version6
}
func (s *state6) Code() cid.Cid {
code, ok := actors.GetActorCodeID(s.ActorVersion(), s.ActorKey())
if !ok {
panic(fmt.Errorf("didn't find actor %v code id for actor version %d", s.ActorKey(), s.ActorVersion()))
}
return code
} }

View File

@ -1,16 +1,21 @@
package init package init
import ( import (
"crypto/sha256"
"fmt"
"github.com/ipfs/go-cid" "github.com/ipfs/go-cid"
cbg "github.com/whyrusleeping/cbor-gen" cbg "github.com/whyrusleeping/cbor-gen"
"golang.org/x/xerrors" "golang.org/x/xerrors"
"github.com/filecoin-project/go-address" "github.com/filecoin-project/go-address"
"github.com/filecoin-project/go-state-types/abi" "github.com/filecoin-project/go-state-types/abi"
actorstypes "github.com/filecoin-project/go-state-types/actors"
builtin7 "github.com/filecoin-project/specs-actors/v7/actors/builtin" builtin7 "github.com/filecoin-project/specs-actors/v7/actors/builtin"
init7 "github.com/filecoin-project/specs-actors/v7/actors/builtin/init" init7 "github.com/filecoin-project/specs-actors/v7/actors/builtin/init"
adt7 "github.com/filecoin-project/specs-actors/v7/actors/util/adt" adt7 "github.com/filecoin-project/specs-actors/v7/actors/util/adt"
"github.com/filecoin-project/lotus/chain/actors"
"github.com/filecoin-project/lotus/chain/actors/adt" "github.com/filecoin-project/lotus/chain/actors/adt"
"github.com/filecoin-project/lotus/node/modules/dtypes" "github.com/filecoin-project/lotus/node/modules/dtypes"
) )
@ -104,10 +109,38 @@ func (s *state7) SetAddressMap(mcid cid.Cid) error {
return nil return nil
} }
func (s *state7) GetState() interface{} {
return &s.State
}
func (s *state7) AddressMap() (adt.Map, error) { func (s *state7) AddressMap() (adt.Map, error) {
return adt7.AsMap(s.store, s.State.AddressMap, builtin7.DefaultHamtBitwidth) return adt7.AsMap(s.store, s.State.AddressMap, builtin7.DefaultHamtBitwidth)
} }
func (s *state7) GetState() interface{} { func (s *state7) AddressMapBitWidth() int {
return &s.State return builtin7.DefaultHamtBitwidth
}
func (s *state7) AddressMapHashFunction() func(input []byte) []byte {
return func(input []byte) []byte {
res := sha256.Sum256(input)
return res[:]
}
}
func (s *state7) ActorKey() string {
return actors.InitKey
}
func (s *state7) ActorVersion() actorstypes.Version {
return actorstypes.Version7
}
func (s *state7) Code() cid.Cid {
code, ok := actors.GetActorCodeID(s.ActorVersion(), s.ActorKey())
if !ok {
panic(fmt.Errorf("didn't find actor %v code id for actor version %d", s.ActorKey(), s.ActorVersion()))
}
return code
} }

View File

@ -1,16 +1,21 @@
package init package init
import ( import (
"crypto/sha256"
"fmt"
"github.com/ipfs/go-cid" "github.com/ipfs/go-cid"
cbg "github.com/whyrusleeping/cbor-gen" cbg "github.com/whyrusleeping/cbor-gen"
"golang.org/x/xerrors" "golang.org/x/xerrors"
"github.com/filecoin-project/go-address" "github.com/filecoin-project/go-address"
"github.com/filecoin-project/go-state-types/abi" "github.com/filecoin-project/go-state-types/abi"
actorstypes "github.com/filecoin-project/go-state-types/actors"
builtin8 "github.com/filecoin-project/go-state-types/builtin" builtin8 "github.com/filecoin-project/go-state-types/builtin"
init8 "github.com/filecoin-project/go-state-types/builtin/v8/init" init8 "github.com/filecoin-project/go-state-types/builtin/v8/init"
adt8 "github.com/filecoin-project/go-state-types/builtin/v8/util/adt" adt8 "github.com/filecoin-project/go-state-types/builtin/v8/util/adt"
"github.com/filecoin-project/lotus/chain/actors"
"github.com/filecoin-project/lotus/chain/actors/adt" "github.com/filecoin-project/lotus/chain/actors/adt"
"github.com/filecoin-project/lotus/node/modules/dtypes" "github.com/filecoin-project/lotus/node/modules/dtypes"
) )
@ -104,10 +109,38 @@ func (s *state8) SetAddressMap(mcid cid.Cid) error {
return nil return nil
} }
func (s *state8) GetState() interface{} {
return &s.State
}
func (s *state8) AddressMap() (adt.Map, error) { func (s *state8) AddressMap() (adt.Map, error) {
return adt8.AsMap(s.store, s.State.AddressMap, builtin8.DefaultHamtBitwidth) return adt8.AsMap(s.store, s.State.AddressMap, builtin8.DefaultHamtBitwidth)
} }
func (s *state8) GetState() interface{} { func (s *state8) AddressMapBitWidth() int {
return &s.State return builtin8.DefaultHamtBitwidth
}
func (s *state8) AddressMapHashFunction() func(input []byte) []byte {
return func(input []byte) []byte {
res := sha256.Sum256(input)
return res[:]
}
}
func (s *state8) ActorKey() string {
return actors.InitKey
}
func (s *state8) ActorVersion() actorstypes.Version {
return actorstypes.Version8
}
func (s *state8) Code() cid.Cid {
code, ok := actors.GetActorCodeID(s.ActorVersion(), s.ActorKey())
if !ok {
panic(fmt.Errorf("didn't find actor %v code id for actor version %d", s.ActorKey(), s.ActorVersion()))
}
return code
} }

View File

@ -1,16 +1,21 @@
package init package init
import ( import (
"crypto/sha256"
"fmt"
"github.com/ipfs/go-cid" "github.com/ipfs/go-cid"
cbg "github.com/whyrusleeping/cbor-gen" cbg "github.com/whyrusleeping/cbor-gen"
"golang.org/x/xerrors" "golang.org/x/xerrors"
"github.com/filecoin-project/go-address" "github.com/filecoin-project/go-address"
"github.com/filecoin-project/go-state-types/abi" "github.com/filecoin-project/go-state-types/abi"
actorstypes "github.com/filecoin-project/go-state-types/actors"
builtin9 "github.com/filecoin-project/go-state-types/builtin" builtin9 "github.com/filecoin-project/go-state-types/builtin"
init9 "github.com/filecoin-project/go-state-types/builtin/v9/init" init9 "github.com/filecoin-project/go-state-types/builtin/v9/init"
adt9 "github.com/filecoin-project/go-state-types/builtin/v9/util/adt" adt9 "github.com/filecoin-project/go-state-types/builtin/v9/util/adt"
"github.com/filecoin-project/lotus/chain/actors"
"github.com/filecoin-project/lotus/chain/actors/adt" "github.com/filecoin-project/lotus/chain/actors/adt"
"github.com/filecoin-project/lotus/node/modules/dtypes" "github.com/filecoin-project/lotus/node/modules/dtypes"
) )
@ -104,10 +109,38 @@ func (s *state9) SetAddressMap(mcid cid.Cid) error {
return nil return nil
} }
func (s *state9) GetState() interface{} {
return &s.State
}
func (s *state9) AddressMap() (adt.Map, error) { func (s *state9) AddressMap() (adt.Map, error) {
return adt9.AsMap(s.store, s.State.AddressMap, builtin9.DefaultHamtBitwidth) return adt9.AsMap(s.store, s.State.AddressMap, builtin9.DefaultHamtBitwidth)
} }
func (s *state9) GetState() interface{} { func (s *state9) AddressMapBitWidth() int {
return &s.State return builtin9.DefaultHamtBitwidth
}
func (s *state9) AddressMapHashFunction() func(input []byte) []byte {
return func(input []byte) []byte {
res := sha256.Sum256(input)
return res[:]
}
}
func (s *state9) ActorKey() string {
return actors.InitKey
}
func (s *state9) ActorVersion() actorstypes.Version {
return actorstypes.Version9
}
func (s *state9) Code() cid.Cid {
code, ok := actors.GetActorCodeID(s.ActorVersion(), s.ActorKey())
if !ok {
panic(fmt.Errorf("didn't find actor %v code id for actor version %d", s.ActorKey(), s.ActorVersion()))
}
return code
} }

View File

@ -1,6 +1,7 @@
package market package market
import ( import (
"github.com/ipfs/go-cid"
actorstypes "github.com/filecoin-project/go-state-types/actors" actorstypes "github.com/filecoin-project/go-state-types/actors"
"unicode/utf8" "unicode/utf8"
@ -73,6 +74,11 @@ func MakeState(store adt.Store, av actorstypes.Version) (State, error) {
type State interface { type State interface {
cbor.Marshaler cbor.Marshaler
Code() cid.Cid
ActorKey() string
ActorVersion() actorstypes.Version
BalancesChanged(State) (bool, error) BalancesChanged(State) (bool, error)
EscrowTable() (BalanceTable, error) EscrowTable() (BalanceTable, error)
LockedTable() (BalanceTable, error) LockedTable() (BalanceTable, error)
@ -200,3 +206,10 @@ func labelFromGoString(s string) (markettypes.DealLabel, error) {
return markettypes.NewLabelFromBytes([]byte(s)) return markettypes.NewLabelFromBytes([]byte(s))
} }
} }
func AllCodes() []cid.Cid {
return []cid.Cid{ {{range .versions}}
(&state{{.}}{}).Code(),
{{- end}}
}
}

View File

@ -3,6 +3,7 @@ package market
import ( import (
"unicode/utf8" "unicode/utf8"
"github.com/ipfs/go-cid"
cbg "github.com/whyrusleeping/cbor-gen" cbg "github.com/whyrusleeping/cbor-gen"
"golang.org/x/xerrors" "golang.org/x/xerrors"
@ -120,6 +121,11 @@ func MakeState(store adt.Store, av actorstypes.Version) (State, error) {
type State interface { type State interface {
cbor.Marshaler cbor.Marshaler
Code() cid.Cid
ActorKey() string
ActorVersion() actorstypes.Version
BalancesChanged(State) (bool, error) BalancesChanged(State) (bool, error)
EscrowTable() (BalanceTable, error) EscrowTable() (BalanceTable, error)
LockedTable() (BalanceTable, error) LockedTable() (BalanceTable, error)
@ -273,3 +279,18 @@ func labelFromGoString(s string) (markettypes.DealLabel, error) {
return markettypes.NewLabelFromBytes([]byte(s)) return markettypes.NewLabelFromBytes([]byte(s))
} }
} }
func AllCodes() []cid.Cid {
return []cid.Cid{
(&state0{}).Code(),
(&state2{}).Code(),
(&state3{}).Code(),
(&state4{}).Code(),
(&state5{}).Code(),
(&state6{}).Code(),
(&state7{}).Code(),
(&state8{}).Code(),
(&state9{}).Code(),
(&state10{}).Code(),
}
}

View File

@ -1,6 +1,7 @@
package market package market
import ( import (
"fmt"
"bytes" "bytes"
"github.com/filecoin-project/go-address" "github.com/filecoin-project/go-address"
@ -14,7 +15,9 @@ import (
{{end}} {{end}}
actorstypes "github.com/filecoin-project/go-state-types/actors"
"github.com/filecoin-project/lotus/chain/actors/adt" "github.com/filecoin-project/lotus/chain/actors/adt"
"github.com/filecoin-project/lotus/chain/actors"
"github.com/filecoin-project/lotus/chain/types" "github.com/filecoin-project/lotus/chain/types"
verifregtypes "github.com/filecoin-project/go-state-types/builtin/v9/verifreg" verifregtypes "github.com/filecoin-project/go-state-types/builtin/v9/verifreg"
@ -387,3 +390,21 @@ func (s *state{{.v}}) GetAllocationIdForPendingDeal(dealId abi.DealID) (verifreg
return verifregtypes.AllocationId(allocationId), nil return verifregtypes.AllocationId(allocationId), nil
{{end}} {{end}}
} }
func (s *state{{.v}}) ActorKey() string {
return actors.MarketKey
}
func (s *state{{.v}}) ActorVersion() actorstypes.Version {
return actorstypes.Version{{.v}}
}
func (s *state{{.v}}) Code() cid.Cid {
code, ok := actors.GetActorCodeID(s.ActorVersion(), s.ActorKey())
if !ok {
panic(fmt.Errorf("didn't find actor %v code id for actor version %d", s.ActorKey(), s.ActorVersion()))
}
return code
}

View File

@ -2,6 +2,7 @@ package market
import ( import (
"bytes" "bytes"
"fmt"
"github.com/ipfs/go-cid" "github.com/ipfs/go-cid"
cbg "github.com/whyrusleeping/cbor-gen" cbg "github.com/whyrusleeping/cbor-gen"
@ -9,10 +10,12 @@ import (
"github.com/filecoin-project/go-address" "github.com/filecoin-project/go-address"
"github.com/filecoin-project/go-state-types/abi" "github.com/filecoin-project/go-state-types/abi"
actorstypes "github.com/filecoin-project/go-state-types/actors"
verifregtypes "github.com/filecoin-project/go-state-types/builtin/v9/verifreg" verifregtypes "github.com/filecoin-project/go-state-types/builtin/v9/verifreg"
market0 "github.com/filecoin-project/specs-actors/actors/builtin/market" market0 "github.com/filecoin-project/specs-actors/actors/builtin/market"
adt0 "github.com/filecoin-project/specs-actors/actors/util/adt" adt0 "github.com/filecoin-project/specs-actors/actors/util/adt"
"github.com/filecoin-project/lotus/chain/actors"
"github.com/filecoin-project/lotus/chain/actors/adt" "github.com/filecoin-project/lotus/chain/actors/adt"
"github.com/filecoin-project/lotus/chain/types" "github.com/filecoin-project/lotus/chain/types"
) )
@ -307,3 +310,20 @@ func (s *state0) GetAllocationIdForPendingDeal(dealId abi.DealID) (verifregtypes
return verifregtypes.NoAllocationID, xerrors.Errorf("unsupported before actors v9") return verifregtypes.NoAllocationID, xerrors.Errorf("unsupported before actors v9")
} }
func (s *state0) ActorKey() string {
return actors.MarketKey
}
func (s *state0) ActorVersion() actorstypes.Version {
return actorstypes.Version0
}
func (s *state0) Code() cid.Cid {
code, ok := actors.GetActorCodeID(s.ActorVersion(), s.ActorKey())
if !ok {
panic(fmt.Errorf("didn't find actor %v code id for actor version %d", s.ActorKey(), s.ActorVersion()))
}
return code
}

View File

@ -2,6 +2,7 @@ package market
import ( import (
"bytes" "bytes"
"fmt"
"github.com/ipfs/go-cid" "github.com/ipfs/go-cid"
cbg "github.com/whyrusleeping/cbor-gen" cbg "github.com/whyrusleeping/cbor-gen"
@ -11,12 +12,14 @@ import (
"github.com/filecoin-project/go-bitfield" "github.com/filecoin-project/go-bitfield"
rlepluslazy "github.com/filecoin-project/go-bitfield/rle" rlepluslazy "github.com/filecoin-project/go-bitfield/rle"
"github.com/filecoin-project/go-state-types/abi" "github.com/filecoin-project/go-state-types/abi"
actorstypes "github.com/filecoin-project/go-state-types/actors"
"github.com/filecoin-project/go-state-types/builtin" "github.com/filecoin-project/go-state-types/builtin"
market10 "github.com/filecoin-project/go-state-types/builtin/v10/market" market10 "github.com/filecoin-project/go-state-types/builtin/v10/market"
adt10 "github.com/filecoin-project/go-state-types/builtin/v10/util/adt" adt10 "github.com/filecoin-project/go-state-types/builtin/v10/util/adt"
markettypes "github.com/filecoin-project/go-state-types/builtin/v9/market" markettypes "github.com/filecoin-project/go-state-types/builtin/v9/market"
verifregtypes "github.com/filecoin-project/go-state-types/builtin/v9/verifreg" verifregtypes "github.com/filecoin-project/go-state-types/builtin/v9/verifreg"
"github.com/filecoin-project/lotus/chain/actors"
"github.com/filecoin-project/lotus/chain/actors/adt" "github.com/filecoin-project/lotus/chain/actors/adt"
"github.com/filecoin-project/lotus/chain/types" "github.com/filecoin-project/lotus/chain/types"
) )
@ -347,3 +350,20 @@ func (s *state10) GetAllocationIdForPendingDeal(dealId abi.DealID) (verifregtype
return verifregtypes.AllocationId(allocationId), nil return verifregtypes.AllocationId(allocationId), nil
} }
func (s *state10) ActorKey() string {
return actors.MarketKey
}
func (s *state10) ActorVersion() actorstypes.Version {
return actorstypes.Version10
}
func (s *state10) Code() cid.Cid {
code, ok := actors.GetActorCodeID(s.ActorVersion(), s.ActorKey())
if !ok {
panic(fmt.Errorf("didn't find actor %v code id for actor version %d", s.ActorKey(), s.ActorVersion()))
}
return code
}

View File

@ -2,6 +2,7 @@ package market
import ( import (
"bytes" "bytes"
"fmt"
"github.com/ipfs/go-cid" "github.com/ipfs/go-cid"
cbg "github.com/whyrusleeping/cbor-gen" cbg "github.com/whyrusleeping/cbor-gen"
@ -9,10 +10,12 @@ import (
"github.com/filecoin-project/go-address" "github.com/filecoin-project/go-address"
"github.com/filecoin-project/go-state-types/abi" "github.com/filecoin-project/go-state-types/abi"
actorstypes "github.com/filecoin-project/go-state-types/actors"
verifregtypes "github.com/filecoin-project/go-state-types/builtin/v9/verifreg" verifregtypes "github.com/filecoin-project/go-state-types/builtin/v9/verifreg"
market2 "github.com/filecoin-project/specs-actors/v2/actors/builtin/market" market2 "github.com/filecoin-project/specs-actors/v2/actors/builtin/market"
adt2 "github.com/filecoin-project/specs-actors/v2/actors/util/adt" adt2 "github.com/filecoin-project/specs-actors/v2/actors/util/adt"
"github.com/filecoin-project/lotus/chain/actors"
"github.com/filecoin-project/lotus/chain/actors/adt" "github.com/filecoin-project/lotus/chain/actors/adt"
"github.com/filecoin-project/lotus/chain/types" "github.com/filecoin-project/lotus/chain/types"
) )
@ -307,3 +310,20 @@ func (s *state2) GetAllocationIdForPendingDeal(dealId abi.DealID) (verifregtypes
return verifregtypes.NoAllocationID, xerrors.Errorf("unsupported before actors v9") return verifregtypes.NoAllocationID, xerrors.Errorf("unsupported before actors v9")
} }
func (s *state2) ActorKey() string {
return actors.MarketKey
}
func (s *state2) ActorVersion() actorstypes.Version {
return actorstypes.Version2
}
func (s *state2) Code() cid.Cid {
code, ok := actors.GetActorCodeID(s.ActorVersion(), s.ActorKey())
if !ok {
panic(fmt.Errorf("didn't find actor %v code id for actor version %d", s.ActorKey(), s.ActorVersion()))
}
return code
}

View File

@ -2,6 +2,7 @@ package market
import ( import (
"bytes" "bytes"
"fmt"
"github.com/ipfs/go-cid" "github.com/ipfs/go-cid"
cbg "github.com/whyrusleeping/cbor-gen" cbg "github.com/whyrusleeping/cbor-gen"
@ -9,10 +10,12 @@ import (
"github.com/filecoin-project/go-address" "github.com/filecoin-project/go-address"
"github.com/filecoin-project/go-state-types/abi" "github.com/filecoin-project/go-state-types/abi"
actorstypes "github.com/filecoin-project/go-state-types/actors"
verifregtypes "github.com/filecoin-project/go-state-types/builtin/v9/verifreg" verifregtypes "github.com/filecoin-project/go-state-types/builtin/v9/verifreg"
market3 "github.com/filecoin-project/specs-actors/v3/actors/builtin/market" market3 "github.com/filecoin-project/specs-actors/v3/actors/builtin/market"
adt3 "github.com/filecoin-project/specs-actors/v3/actors/util/adt" adt3 "github.com/filecoin-project/specs-actors/v3/actors/util/adt"
"github.com/filecoin-project/lotus/chain/actors"
"github.com/filecoin-project/lotus/chain/actors/adt" "github.com/filecoin-project/lotus/chain/actors/adt"
"github.com/filecoin-project/lotus/chain/types" "github.com/filecoin-project/lotus/chain/types"
) )
@ -302,3 +305,20 @@ func (s *state3) GetAllocationIdForPendingDeal(dealId abi.DealID) (verifregtypes
return verifregtypes.NoAllocationID, xerrors.Errorf("unsupported before actors v9") return verifregtypes.NoAllocationID, xerrors.Errorf("unsupported before actors v9")
} }
func (s *state3) ActorKey() string {
return actors.MarketKey
}
func (s *state3) ActorVersion() actorstypes.Version {
return actorstypes.Version3
}
func (s *state3) Code() cid.Cid {
code, ok := actors.GetActorCodeID(s.ActorVersion(), s.ActorKey())
if !ok {
panic(fmt.Errorf("didn't find actor %v code id for actor version %d", s.ActorKey(), s.ActorVersion()))
}
return code
}

View File

@ -2,6 +2,7 @@ package market
import ( import (
"bytes" "bytes"
"fmt"
"github.com/ipfs/go-cid" "github.com/ipfs/go-cid"
cbg "github.com/whyrusleeping/cbor-gen" cbg "github.com/whyrusleeping/cbor-gen"
@ -9,10 +10,12 @@ import (
"github.com/filecoin-project/go-address" "github.com/filecoin-project/go-address"
"github.com/filecoin-project/go-state-types/abi" "github.com/filecoin-project/go-state-types/abi"
actorstypes "github.com/filecoin-project/go-state-types/actors"
verifregtypes "github.com/filecoin-project/go-state-types/builtin/v9/verifreg" verifregtypes "github.com/filecoin-project/go-state-types/builtin/v9/verifreg"
market4 "github.com/filecoin-project/specs-actors/v4/actors/builtin/market" market4 "github.com/filecoin-project/specs-actors/v4/actors/builtin/market"
adt4 "github.com/filecoin-project/specs-actors/v4/actors/util/adt" adt4 "github.com/filecoin-project/specs-actors/v4/actors/util/adt"
"github.com/filecoin-project/lotus/chain/actors"
"github.com/filecoin-project/lotus/chain/actors/adt" "github.com/filecoin-project/lotus/chain/actors/adt"
"github.com/filecoin-project/lotus/chain/types" "github.com/filecoin-project/lotus/chain/types"
) )
@ -302,3 +305,20 @@ func (s *state4) GetAllocationIdForPendingDeal(dealId abi.DealID) (verifregtypes
return verifregtypes.NoAllocationID, xerrors.Errorf("unsupported before actors v9") return verifregtypes.NoAllocationID, xerrors.Errorf("unsupported before actors v9")
} }
func (s *state4) ActorKey() string {
return actors.MarketKey
}
func (s *state4) ActorVersion() actorstypes.Version {
return actorstypes.Version4
}
func (s *state4) Code() cid.Cid {
code, ok := actors.GetActorCodeID(s.ActorVersion(), s.ActorKey())
if !ok {
panic(fmt.Errorf("didn't find actor %v code id for actor version %d", s.ActorKey(), s.ActorVersion()))
}
return code
}

View File

@ -2,6 +2,7 @@ package market
import ( import (
"bytes" "bytes"
"fmt"
"github.com/ipfs/go-cid" "github.com/ipfs/go-cid"
cbg "github.com/whyrusleeping/cbor-gen" cbg "github.com/whyrusleeping/cbor-gen"
@ -9,10 +10,12 @@ import (
"github.com/filecoin-project/go-address" "github.com/filecoin-project/go-address"
"github.com/filecoin-project/go-state-types/abi" "github.com/filecoin-project/go-state-types/abi"
actorstypes "github.com/filecoin-project/go-state-types/actors"
verifregtypes "github.com/filecoin-project/go-state-types/builtin/v9/verifreg" verifregtypes "github.com/filecoin-project/go-state-types/builtin/v9/verifreg"
market5 "github.com/filecoin-project/specs-actors/v5/actors/builtin/market" market5 "github.com/filecoin-project/specs-actors/v5/actors/builtin/market"
adt5 "github.com/filecoin-project/specs-actors/v5/actors/util/adt" adt5 "github.com/filecoin-project/specs-actors/v5/actors/util/adt"
"github.com/filecoin-project/lotus/chain/actors"
"github.com/filecoin-project/lotus/chain/actors/adt" "github.com/filecoin-project/lotus/chain/actors/adt"
"github.com/filecoin-project/lotus/chain/types" "github.com/filecoin-project/lotus/chain/types"
) )
@ -302,3 +305,20 @@ func (s *state5) GetAllocationIdForPendingDeal(dealId abi.DealID) (verifregtypes
return verifregtypes.NoAllocationID, xerrors.Errorf("unsupported before actors v9") return verifregtypes.NoAllocationID, xerrors.Errorf("unsupported before actors v9")
} }
func (s *state5) ActorKey() string {
return actors.MarketKey
}
func (s *state5) ActorVersion() actorstypes.Version {
return actorstypes.Version5
}
func (s *state5) Code() cid.Cid {
code, ok := actors.GetActorCodeID(s.ActorVersion(), s.ActorKey())
if !ok {
panic(fmt.Errorf("didn't find actor %v code id for actor version %d", s.ActorKey(), s.ActorVersion()))
}
return code
}

View File

@ -2,6 +2,7 @@ package market
import ( import (
"bytes" "bytes"
"fmt"
"github.com/ipfs/go-cid" "github.com/ipfs/go-cid"
cbg "github.com/whyrusleeping/cbor-gen" cbg "github.com/whyrusleeping/cbor-gen"
@ -11,10 +12,12 @@ import (
"github.com/filecoin-project/go-bitfield" "github.com/filecoin-project/go-bitfield"
rlepluslazy "github.com/filecoin-project/go-bitfield/rle" rlepluslazy "github.com/filecoin-project/go-bitfield/rle"
"github.com/filecoin-project/go-state-types/abi" "github.com/filecoin-project/go-state-types/abi"
actorstypes "github.com/filecoin-project/go-state-types/actors"
verifregtypes "github.com/filecoin-project/go-state-types/builtin/v9/verifreg" verifregtypes "github.com/filecoin-project/go-state-types/builtin/v9/verifreg"
market6 "github.com/filecoin-project/specs-actors/v6/actors/builtin/market" market6 "github.com/filecoin-project/specs-actors/v6/actors/builtin/market"
adt6 "github.com/filecoin-project/specs-actors/v6/actors/util/adt" adt6 "github.com/filecoin-project/specs-actors/v6/actors/util/adt"
"github.com/filecoin-project/lotus/chain/actors"
"github.com/filecoin-project/lotus/chain/actors/adt" "github.com/filecoin-project/lotus/chain/actors/adt"
"github.com/filecoin-project/lotus/chain/types" "github.com/filecoin-project/lotus/chain/types"
) )
@ -320,3 +323,20 @@ func (s *state6) GetAllocationIdForPendingDeal(dealId abi.DealID) (verifregtypes
return verifregtypes.NoAllocationID, xerrors.Errorf("unsupported before actors v9") return verifregtypes.NoAllocationID, xerrors.Errorf("unsupported before actors v9")
} }
func (s *state6) ActorKey() string {
return actors.MarketKey
}
func (s *state6) ActorVersion() actorstypes.Version {
return actorstypes.Version6
}
func (s *state6) Code() cid.Cid {
code, ok := actors.GetActorCodeID(s.ActorVersion(), s.ActorKey())
if !ok {
panic(fmt.Errorf("didn't find actor %v code id for actor version %d", s.ActorKey(), s.ActorVersion()))
}
return code
}

View File

@ -2,6 +2,7 @@ package market
import ( import (
"bytes" "bytes"
"fmt"
"github.com/ipfs/go-cid" "github.com/ipfs/go-cid"
cbg "github.com/whyrusleeping/cbor-gen" cbg "github.com/whyrusleeping/cbor-gen"
@ -11,10 +12,12 @@ import (
"github.com/filecoin-project/go-bitfield" "github.com/filecoin-project/go-bitfield"
rlepluslazy "github.com/filecoin-project/go-bitfield/rle" rlepluslazy "github.com/filecoin-project/go-bitfield/rle"
"github.com/filecoin-project/go-state-types/abi" "github.com/filecoin-project/go-state-types/abi"
actorstypes "github.com/filecoin-project/go-state-types/actors"
verifregtypes "github.com/filecoin-project/go-state-types/builtin/v9/verifreg" verifregtypes "github.com/filecoin-project/go-state-types/builtin/v9/verifreg"
market7 "github.com/filecoin-project/specs-actors/v7/actors/builtin/market" market7 "github.com/filecoin-project/specs-actors/v7/actors/builtin/market"
adt7 "github.com/filecoin-project/specs-actors/v7/actors/util/adt" adt7 "github.com/filecoin-project/specs-actors/v7/actors/util/adt"
"github.com/filecoin-project/lotus/chain/actors"
"github.com/filecoin-project/lotus/chain/actors/adt" "github.com/filecoin-project/lotus/chain/actors/adt"
"github.com/filecoin-project/lotus/chain/types" "github.com/filecoin-project/lotus/chain/types"
) )
@ -320,3 +323,20 @@ func (s *state7) GetAllocationIdForPendingDeal(dealId abi.DealID) (verifregtypes
return verifregtypes.NoAllocationID, xerrors.Errorf("unsupported before actors v9") return verifregtypes.NoAllocationID, xerrors.Errorf("unsupported before actors v9")
} }
func (s *state7) ActorKey() string {
return actors.MarketKey
}
func (s *state7) ActorVersion() actorstypes.Version {
return actorstypes.Version7
}
func (s *state7) Code() cid.Cid {
code, ok := actors.GetActorCodeID(s.ActorVersion(), s.ActorKey())
if !ok {
panic(fmt.Errorf("didn't find actor %v code id for actor version %d", s.ActorKey(), s.ActorVersion()))
}
return code
}

View File

@ -2,6 +2,7 @@ package market
import ( import (
"bytes" "bytes"
"fmt"
"github.com/ipfs/go-cid" "github.com/ipfs/go-cid"
cbg "github.com/whyrusleeping/cbor-gen" cbg "github.com/whyrusleeping/cbor-gen"
@ -11,11 +12,13 @@ import (
"github.com/filecoin-project/go-bitfield" "github.com/filecoin-project/go-bitfield"
rlepluslazy "github.com/filecoin-project/go-bitfield/rle" rlepluslazy "github.com/filecoin-project/go-bitfield/rle"
"github.com/filecoin-project/go-state-types/abi" "github.com/filecoin-project/go-state-types/abi"
actorstypes "github.com/filecoin-project/go-state-types/actors"
market8 "github.com/filecoin-project/go-state-types/builtin/v8/market" market8 "github.com/filecoin-project/go-state-types/builtin/v8/market"
adt8 "github.com/filecoin-project/go-state-types/builtin/v8/util/adt" adt8 "github.com/filecoin-project/go-state-types/builtin/v8/util/adt"
markettypes "github.com/filecoin-project/go-state-types/builtin/v9/market" markettypes "github.com/filecoin-project/go-state-types/builtin/v9/market"
verifregtypes "github.com/filecoin-project/go-state-types/builtin/v9/verifreg" verifregtypes "github.com/filecoin-project/go-state-types/builtin/v9/verifreg"
"github.com/filecoin-project/lotus/chain/actors"
"github.com/filecoin-project/lotus/chain/actors/adt" "github.com/filecoin-project/lotus/chain/actors/adt"
"github.com/filecoin-project/lotus/chain/types" "github.com/filecoin-project/lotus/chain/types"
) )
@ -337,3 +340,20 @@ func (s *state8) GetAllocationIdForPendingDeal(dealId abi.DealID) (verifregtypes
return verifregtypes.NoAllocationID, xerrors.Errorf("unsupported before actors v9") return verifregtypes.NoAllocationID, xerrors.Errorf("unsupported before actors v9")
} }
func (s *state8) ActorKey() string {
return actors.MarketKey
}
func (s *state8) ActorVersion() actorstypes.Version {
return actorstypes.Version8
}
func (s *state8) Code() cid.Cid {
code, ok := actors.GetActorCodeID(s.ActorVersion(), s.ActorKey())
if !ok {
panic(fmt.Errorf("didn't find actor %v code id for actor version %d", s.ActorKey(), s.ActorVersion()))
}
return code
}

View File

@ -2,6 +2,7 @@ package market
import ( import (
"bytes" "bytes"
"fmt"
"github.com/ipfs/go-cid" "github.com/ipfs/go-cid"
cbg "github.com/whyrusleeping/cbor-gen" cbg "github.com/whyrusleeping/cbor-gen"
@ -11,12 +12,14 @@ import (
"github.com/filecoin-project/go-bitfield" "github.com/filecoin-project/go-bitfield"
rlepluslazy "github.com/filecoin-project/go-bitfield/rle" rlepluslazy "github.com/filecoin-project/go-bitfield/rle"
"github.com/filecoin-project/go-state-types/abi" "github.com/filecoin-project/go-state-types/abi"
actorstypes "github.com/filecoin-project/go-state-types/actors"
"github.com/filecoin-project/go-state-types/builtin" "github.com/filecoin-project/go-state-types/builtin"
market9 "github.com/filecoin-project/go-state-types/builtin/v9/market" market9 "github.com/filecoin-project/go-state-types/builtin/v9/market"
markettypes "github.com/filecoin-project/go-state-types/builtin/v9/market" markettypes "github.com/filecoin-project/go-state-types/builtin/v9/market"
adt9 "github.com/filecoin-project/go-state-types/builtin/v9/util/adt" adt9 "github.com/filecoin-project/go-state-types/builtin/v9/util/adt"
verifregtypes "github.com/filecoin-project/go-state-types/builtin/v9/verifreg" verifregtypes "github.com/filecoin-project/go-state-types/builtin/v9/verifreg"
"github.com/filecoin-project/lotus/chain/actors"
"github.com/filecoin-project/lotus/chain/actors/adt" "github.com/filecoin-project/lotus/chain/actors/adt"
"github.com/filecoin-project/lotus/chain/types" "github.com/filecoin-project/lotus/chain/types"
) )
@ -347,3 +350,20 @@ func (s *state9) GetAllocationIdForPendingDeal(dealId abi.DealID) (verifregtypes
return verifregtypes.AllocationId(allocationId), nil return verifregtypes.AllocationId(allocationId), nil
} }
func (s *state9) ActorKey() string {
return actors.MarketKey
}
func (s *state9) ActorVersion() actorstypes.Version {
return actorstypes.Version9
}
func (s *state9) Code() cid.Cid {
code, ok := actors.GetActorCodeID(s.ActorVersion(), s.ActorKey())
if !ok {
panic(fmt.Errorf("didn't find actor %v code id for actor version %d", s.ActorKey(), s.ActorVersion()))
}
return code
}

View File

@ -1,6 +1,7 @@
package miner package miner
import ( import (
"github.com/ipfs/go-cid"
actorstypes "github.com/filecoin-project/go-state-types/actors" actorstypes "github.com/filecoin-project/go-state-types/actors"
"github.com/filecoin-project/go-state-types/big" "github.com/filecoin-project/go-state-types/big"
"github.com/filecoin-project/go-state-types/network" "github.com/filecoin-project/go-state-types/network"
@ -66,6 +67,10 @@ func MakeState(store adt.Store, av actors.Version) (State, error) {
type State interface { type State interface {
cbor.Marshaler cbor.Marshaler
Code() cid.Cid
ActorKey() string
ActorVersion() actorstypes.Version
// Total available balance to spend. // Total available balance to spend.
AvailableBalance(abi.TokenAmount) (abi.TokenAmount, error) AvailableBalance(abi.TokenAmount) (abi.TokenAmount, error)
// Funds that will vest by the given epoch. // Funds that will vest by the given epoch.
@ -243,3 +248,10 @@ type LockedFunds struct {
func (lf LockedFunds) TotalLockedFunds() abi.TokenAmount { func (lf LockedFunds) TotalLockedFunds() abi.TokenAmount {
return big.Add(lf.VestingFunds, big.Add(lf.InitialPledgeRequirement, lf.PreCommitDeposits)) return big.Add(lf.VestingFunds, big.Add(lf.InitialPledgeRequirement, lf.PreCommitDeposits))
} }
func AllCodes() []cid.Cid {
return []cid.Cid{ {{range .versions}}
(&state{{.}}{}).Code(),
{{- end}}
}
}

View File

@ -1,6 +1,7 @@
package miner package miner
import ( import (
"github.com/ipfs/go-cid"
cbg "github.com/whyrusleeping/cbor-gen" cbg "github.com/whyrusleeping/cbor-gen"
"golang.org/x/xerrors" "golang.org/x/xerrors"
@ -114,6 +115,10 @@ func MakeState(store adt.Store, av actors.Version) (State, error) {
type State interface { type State interface {
cbor.Marshaler cbor.Marshaler
Code() cid.Cid
ActorKey() string
ActorVersion() actorstypes.Version
// Total available balance to spend. // Total available balance to spend.
AvailableBalance(abi.TokenAmount) (abi.TokenAmount, error) AvailableBalance(abi.TokenAmount) (abi.TokenAmount, error)
// Funds that will vest by the given epoch. // Funds that will vest by the given epoch.
@ -291,3 +296,18 @@ type LockedFunds struct {
func (lf LockedFunds) TotalLockedFunds() abi.TokenAmount { func (lf LockedFunds) TotalLockedFunds() abi.TokenAmount {
return big.Add(lf.VestingFunds, big.Add(lf.InitialPledgeRequirement, lf.PreCommitDeposits)) return big.Add(lf.VestingFunds, big.Add(lf.InitialPledgeRequirement, lf.PreCommitDeposits))
} }
func AllCodes() []cid.Cid {
return []cid.Cid{
(&state0{}).Code(),
(&state2{}).Code(),
(&state3{}).Code(),
(&state4{}).Code(),
(&state5{}).Code(),
(&state6{}).Code(),
(&state7{}).Code(),
(&state8{}).Code(),
(&state9{}).Code(),
(&state10{}).Code(),
}
}

View File

@ -1,6 +1,7 @@
package miner package miner
import ( import (
"fmt"
"bytes" "bytes"
"errors" "errors"
{{if (le .v 1)}} {{if (le .v 1)}}
@ -15,6 +16,8 @@ import (
"golang.org/x/xerrors" "golang.org/x/xerrors"
"github.com/filecoin-project/lotus/chain/actors/adt" "github.com/filecoin-project/lotus/chain/actors/adt"
"github.com/filecoin-project/lotus/chain/actors"
actorstypes "github.com/filecoin-project/go-state-types/actors"
minertypes "github.com/filecoin-project/go-state-types/builtin/v{{.latestVersion}}/miner" minertypes "github.com/filecoin-project/go-state-types/builtin/v{{.latestVersion}}/miner"
{{if (le .v 7)}} {{if (le .v 7)}}
@ -602,3 +605,20 @@ func fromV{{.v}}SectorPreCommitOnChainInfo(v{{.v}} miner{{.v}}.SectorPreCommitOn
func (s *state{{.v}}) GetState() interface{} { func (s *state{{.v}}) GetState() interface{} {
return &s.State return &s.State
} }
func (s *state{{.v}}) ActorKey() string {
return actors.MinerKey
}
func (s *state{{.v}}) ActorVersion() actorstypes.Version {
return actorstypes.Version{{.v}}
}
func (s *state{{.v}}) Code() cid.Cid {
code, ok := actors.GetActorCodeID(s.ActorVersion(), s.ActorKey())
if !ok {
panic(fmt.Errorf("didn't find actor %v code id for actor version %d", s.ActorKey(), s.ActorVersion()))
}
return code
}

View File

@ -3,6 +3,7 @@ package miner
import ( import (
"bytes" "bytes"
"errors" "errors"
"fmt"
"github.com/ipfs/go-cid" "github.com/ipfs/go-cid"
cbg "github.com/whyrusleeping/cbor-gen" cbg "github.com/whyrusleeping/cbor-gen"
@ -11,12 +12,14 @@ import (
"github.com/filecoin-project/go-bitfield" "github.com/filecoin-project/go-bitfield"
rle "github.com/filecoin-project/go-bitfield/rle" rle "github.com/filecoin-project/go-bitfield/rle"
"github.com/filecoin-project/go-state-types/abi" "github.com/filecoin-project/go-state-types/abi"
actorstypes "github.com/filecoin-project/go-state-types/actors"
"github.com/filecoin-project/go-state-types/big" "github.com/filecoin-project/go-state-types/big"
minertypes "github.com/filecoin-project/go-state-types/builtin/v10/miner" minertypes "github.com/filecoin-project/go-state-types/builtin/v10/miner"
"github.com/filecoin-project/go-state-types/dline" "github.com/filecoin-project/go-state-types/dline"
miner0 "github.com/filecoin-project/specs-actors/actors/builtin/miner" miner0 "github.com/filecoin-project/specs-actors/actors/builtin/miner"
adt0 "github.com/filecoin-project/specs-actors/actors/util/adt" adt0 "github.com/filecoin-project/specs-actors/actors/util/adt"
"github.com/filecoin-project/lotus/chain/actors"
"github.com/filecoin-project/lotus/chain/actors/adt" "github.com/filecoin-project/lotus/chain/actors/adt"
) )
@ -528,3 +531,20 @@ func fromV0SectorPreCommitOnChainInfo(v0 miner0.SectorPreCommitOnChainInfo) mine
func (s *state0) GetState() interface{} { func (s *state0) GetState() interface{} {
return &s.State return &s.State
} }
func (s *state0) ActorKey() string {
return actors.MinerKey
}
func (s *state0) ActorVersion() actorstypes.Version {
return actorstypes.Version0
}
func (s *state0) Code() cid.Cid {
code, ok := actors.GetActorCodeID(s.ActorVersion(), s.ActorKey())
if !ok {
panic(fmt.Errorf("didn't find actor %v code id for actor version %d", s.ActorKey(), s.ActorVersion()))
}
return code
}

View File

@ -3,6 +3,7 @@ package miner
import ( import (
"bytes" "bytes"
"errors" "errors"
"fmt"
"github.com/ipfs/go-cid" "github.com/ipfs/go-cid"
cbg "github.com/whyrusleeping/cbor-gen" cbg "github.com/whyrusleeping/cbor-gen"
@ -11,12 +12,14 @@ import (
"github.com/filecoin-project/go-bitfield" "github.com/filecoin-project/go-bitfield"
rle "github.com/filecoin-project/go-bitfield/rle" rle "github.com/filecoin-project/go-bitfield/rle"
"github.com/filecoin-project/go-state-types/abi" "github.com/filecoin-project/go-state-types/abi"
actorstypes "github.com/filecoin-project/go-state-types/actors"
builtin10 "github.com/filecoin-project/go-state-types/builtin" builtin10 "github.com/filecoin-project/go-state-types/builtin"
miner10 "github.com/filecoin-project/go-state-types/builtin/v10/miner" miner10 "github.com/filecoin-project/go-state-types/builtin/v10/miner"
minertypes "github.com/filecoin-project/go-state-types/builtin/v10/miner" minertypes "github.com/filecoin-project/go-state-types/builtin/v10/miner"
adt10 "github.com/filecoin-project/go-state-types/builtin/v10/util/adt" adt10 "github.com/filecoin-project/go-state-types/builtin/v10/util/adt"
"github.com/filecoin-project/go-state-types/dline" "github.com/filecoin-project/go-state-types/dline"
"github.com/filecoin-project/lotus/chain/actors"
"github.com/filecoin-project/lotus/chain/actors/adt" "github.com/filecoin-project/lotus/chain/actors/adt"
) )
@ -552,3 +555,20 @@ func fromV10SectorPreCommitOnChainInfo(v10 miner10.SectorPreCommitOnChainInfo) m
func (s *state10) GetState() interface{} { func (s *state10) GetState() interface{} {
return &s.State return &s.State
} }
func (s *state10) ActorKey() string {
return actors.MinerKey
}
func (s *state10) ActorVersion() actorstypes.Version {
return actorstypes.Version10
}
func (s *state10) Code() cid.Cid {
code, ok := actors.GetActorCodeID(s.ActorVersion(), s.ActorKey())
if !ok {
panic(fmt.Errorf("didn't find actor %v code id for actor version %d", s.ActorKey(), s.ActorVersion()))
}
return code
}

View File

@ -3,6 +3,7 @@ package miner
import ( import (
"bytes" "bytes"
"errors" "errors"
"fmt"
"github.com/ipfs/go-cid" "github.com/ipfs/go-cid"
cbg "github.com/whyrusleeping/cbor-gen" cbg "github.com/whyrusleeping/cbor-gen"
@ -11,11 +12,13 @@ import (
"github.com/filecoin-project/go-bitfield" "github.com/filecoin-project/go-bitfield"
rle "github.com/filecoin-project/go-bitfield/rle" rle "github.com/filecoin-project/go-bitfield/rle"
"github.com/filecoin-project/go-state-types/abi" "github.com/filecoin-project/go-state-types/abi"
actorstypes "github.com/filecoin-project/go-state-types/actors"
minertypes "github.com/filecoin-project/go-state-types/builtin/v10/miner" minertypes "github.com/filecoin-project/go-state-types/builtin/v10/miner"
"github.com/filecoin-project/go-state-types/dline" "github.com/filecoin-project/go-state-types/dline"
miner2 "github.com/filecoin-project/specs-actors/v2/actors/builtin/miner" miner2 "github.com/filecoin-project/specs-actors/v2/actors/builtin/miner"
adt2 "github.com/filecoin-project/specs-actors/v2/actors/util/adt" adt2 "github.com/filecoin-project/specs-actors/v2/actors/util/adt"
"github.com/filecoin-project/lotus/chain/actors"
"github.com/filecoin-project/lotus/chain/actors/adt" "github.com/filecoin-project/lotus/chain/actors/adt"
) )
@ -559,3 +562,20 @@ func fromV2SectorPreCommitOnChainInfo(v2 miner2.SectorPreCommitOnChainInfo) mine
func (s *state2) GetState() interface{} { func (s *state2) GetState() interface{} {
return &s.State return &s.State
} }
func (s *state2) ActorKey() string {
return actors.MinerKey
}
func (s *state2) ActorVersion() actorstypes.Version {
return actorstypes.Version2
}
func (s *state2) Code() cid.Cid {
code, ok := actors.GetActorCodeID(s.ActorVersion(), s.ActorKey())
if !ok {
panic(fmt.Errorf("didn't find actor %v code id for actor version %d", s.ActorKey(), s.ActorVersion()))
}
return code
}

View File

@ -3,6 +3,7 @@ package miner
import ( import (
"bytes" "bytes"
"errors" "errors"
"fmt"
"github.com/ipfs/go-cid" "github.com/ipfs/go-cid"
cbg "github.com/whyrusleeping/cbor-gen" cbg "github.com/whyrusleeping/cbor-gen"
@ -11,12 +12,14 @@ import (
"github.com/filecoin-project/go-bitfield" "github.com/filecoin-project/go-bitfield"
rle "github.com/filecoin-project/go-bitfield/rle" rle "github.com/filecoin-project/go-bitfield/rle"
"github.com/filecoin-project/go-state-types/abi" "github.com/filecoin-project/go-state-types/abi"
actorstypes "github.com/filecoin-project/go-state-types/actors"
minertypes "github.com/filecoin-project/go-state-types/builtin/v10/miner" minertypes "github.com/filecoin-project/go-state-types/builtin/v10/miner"
"github.com/filecoin-project/go-state-types/dline" "github.com/filecoin-project/go-state-types/dline"
builtin3 "github.com/filecoin-project/specs-actors/v3/actors/builtin" builtin3 "github.com/filecoin-project/specs-actors/v3/actors/builtin"
miner3 "github.com/filecoin-project/specs-actors/v3/actors/builtin/miner" miner3 "github.com/filecoin-project/specs-actors/v3/actors/builtin/miner"
adt3 "github.com/filecoin-project/specs-actors/v3/actors/util/adt" adt3 "github.com/filecoin-project/specs-actors/v3/actors/util/adt"
"github.com/filecoin-project/lotus/chain/actors"
"github.com/filecoin-project/lotus/chain/actors/adt" "github.com/filecoin-project/lotus/chain/actors/adt"
) )
@ -559,3 +562,20 @@ func fromV3SectorPreCommitOnChainInfo(v3 miner3.SectorPreCommitOnChainInfo) mine
func (s *state3) GetState() interface{} { func (s *state3) GetState() interface{} {
return &s.State return &s.State
} }
func (s *state3) ActorKey() string {
return actors.MinerKey
}
func (s *state3) ActorVersion() actorstypes.Version {
return actorstypes.Version3
}
func (s *state3) Code() cid.Cid {
code, ok := actors.GetActorCodeID(s.ActorVersion(), s.ActorKey())
if !ok {
panic(fmt.Errorf("didn't find actor %v code id for actor version %d", s.ActorKey(), s.ActorVersion()))
}
return code
}

View File

@ -3,6 +3,7 @@ package miner
import ( import (
"bytes" "bytes"
"errors" "errors"
"fmt"
"github.com/ipfs/go-cid" "github.com/ipfs/go-cid"
cbg "github.com/whyrusleeping/cbor-gen" cbg "github.com/whyrusleeping/cbor-gen"
@ -11,12 +12,14 @@ import (
"github.com/filecoin-project/go-bitfield" "github.com/filecoin-project/go-bitfield"
rle "github.com/filecoin-project/go-bitfield/rle" rle "github.com/filecoin-project/go-bitfield/rle"
"github.com/filecoin-project/go-state-types/abi" "github.com/filecoin-project/go-state-types/abi"
actorstypes "github.com/filecoin-project/go-state-types/actors"
minertypes "github.com/filecoin-project/go-state-types/builtin/v10/miner" minertypes "github.com/filecoin-project/go-state-types/builtin/v10/miner"
"github.com/filecoin-project/go-state-types/dline" "github.com/filecoin-project/go-state-types/dline"
builtin4 "github.com/filecoin-project/specs-actors/v4/actors/builtin" builtin4 "github.com/filecoin-project/specs-actors/v4/actors/builtin"
miner4 "github.com/filecoin-project/specs-actors/v4/actors/builtin/miner" miner4 "github.com/filecoin-project/specs-actors/v4/actors/builtin/miner"
adt4 "github.com/filecoin-project/specs-actors/v4/actors/util/adt" adt4 "github.com/filecoin-project/specs-actors/v4/actors/util/adt"
"github.com/filecoin-project/lotus/chain/actors"
"github.com/filecoin-project/lotus/chain/actors/adt" "github.com/filecoin-project/lotus/chain/actors/adt"
) )
@ -559,3 +562,20 @@ func fromV4SectorPreCommitOnChainInfo(v4 miner4.SectorPreCommitOnChainInfo) mine
func (s *state4) GetState() interface{} { func (s *state4) GetState() interface{} {
return &s.State return &s.State
} }
func (s *state4) ActorKey() string {
return actors.MinerKey
}
func (s *state4) ActorVersion() actorstypes.Version {
return actorstypes.Version4
}
func (s *state4) Code() cid.Cid {
code, ok := actors.GetActorCodeID(s.ActorVersion(), s.ActorKey())
if !ok {
panic(fmt.Errorf("didn't find actor %v code id for actor version %d", s.ActorKey(), s.ActorVersion()))
}
return code
}

View File

@ -3,6 +3,7 @@ package miner
import ( import (
"bytes" "bytes"
"errors" "errors"
"fmt"
"github.com/ipfs/go-cid" "github.com/ipfs/go-cid"
cbg "github.com/whyrusleeping/cbor-gen" cbg "github.com/whyrusleeping/cbor-gen"
@ -11,12 +12,14 @@ import (
"github.com/filecoin-project/go-bitfield" "github.com/filecoin-project/go-bitfield"
rle "github.com/filecoin-project/go-bitfield/rle" rle "github.com/filecoin-project/go-bitfield/rle"
"github.com/filecoin-project/go-state-types/abi" "github.com/filecoin-project/go-state-types/abi"
actorstypes "github.com/filecoin-project/go-state-types/actors"
minertypes "github.com/filecoin-project/go-state-types/builtin/v10/miner" minertypes "github.com/filecoin-project/go-state-types/builtin/v10/miner"
"github.com/filecoin-project/go-state-types/dline" "github.com/filecoin-project/go-state-types/dline"
builtin5 "github.com/filecoin-project/specs-actors/v5/actors/builtin" builtin5 "github.com/filecoin-project/specs-actors/v5/actors/builtin"
miner5 "github.com/filecoin-project/specs-actors/v5/actors/builtin/miner" miner5 "github.com/filecoin-project/specs-actors/v5/actors/builtin/miner"
adt5 "github.com/filecoin-project/specs-actors/v5/actors/util/adt" adt5 "github.com/filecoin-project/specs-actors/v5/actors/util/adt"
"github.com/filecoin-project/lotus/chain/actors"
"github.com/filecoin-project/lotus/chain/actors/adt" "github.com/filecoin-project/lotus/chain/actors/adt"
) )
@ -559,3 +562,20 @@ func fromV5SectorPreCommitOnChainInfo(v5 miner5.SectorPreCommitOnChainInfo) mine
func (s *state5) GetState() interface{} { func (s *state5) GetState() interface{} {
return &s.State return &s.State
} }
func (s *state5) ActorKey() string {
return actors.MinerKey
}
func (s *state5) ActorVersion() actorstypes.Version {
return actorstypes.Version5
}
func (s *state5) Code() cid.Cid {
code, ok := actors.GetActorCodeID(s.ActorVersion(), s.ActorKey())
if !ok {
panic(fmt.Errorf("didn't find actor %v code id for actor version %d", s.ActorKey(), s.ActorVersion()))
}
return code
}

View File

@ -3,6 +3,7 @@ package miner
import ( import (
"bytes" "bytes"
"errors" "errors"
"fmt"
"github.com/ipfs/go-cid" "github.com/ipfs/go-cid"
cbg "github.com/whyrusleeping/cbor-gen" cbg "github.com/whyrusleeping/cbor-gen"
@ -11,12 +12,14 @@ import (
"github.com/filecoin-project/go-bitfield" "github.com/filecoin-project/go-bitfield"
rle "github.com/filecoin-project/go-bitfield/rle" rle "github.com/filecoin-project/go-bitfield/rle"
"github.com/filecoin-project/go-state-types/abi" "github.com/filecoin-project/go-state-types/abi"
actorstypes "github.com/filecoin-project/go-state-types/actors"
minertypes "github.com/filecoin-project/go-state-types/builtin/v10/miner" minertypes "github.com/filecoin-project/go-state-types/builtin/v10/miner"
"github.com/filecoin-project/go-state-types/dline" "github.com/filecoin-project/go-state-types/dline"
builtin6 "github.com/filecoin-project/specs-actors/v6/actors/builtin" builtin6 "github.com/filecoin-project/specs-actors/v6/actors/builtin"
miner6 "github.com/filecoin-project/specs-actors/v6/actors/builtin/miner" miner6 "github.com/filecoin-project/specs-actors/v6/actors/builtin/miner"
adt6 "github.com/filecoin-project/specs-actors/v6/actors/util/adt" adt6 "github.com/filecoin-project/specs-actors/v6/actors/util/adt"
"github.com/filecoin-project/lotus/chain/actors"
"github.com/filecoin-project/lotus/chain/actors/adt" "github.com/filecoin-project/lotus/chain/actors/adt"
) )
@ -559,3 +562,20 @@ func fromV6SectorPreCommitOnChainInfo(v6 miner6.SectorPreCommitOnChainInfo) mine
func (s *state6) GetState() interface{} { func (s *state6) GetState() interface{} {
return &s.State return &s.State
} }
func (s *state6) ActorKey() string {
return actors.MinerKey
}
func (s *state6) ActorVersion() actorstypes.Version {
return actorstypes.Version6
}
func (s *state6) Code() cid.Cid {
code, ok := actors.GetActorCodeID(s.ActorVersion(), s.ActorKey())
if !ok {
panic(fmt.Errorf("didn't find actor %v code id for actor version %d", s.ActorKey(), s.ActorVersion()))
}
return code
}

View File

@ -3,6 +3,7 @@ package miner
import ( import (
"bytes" "bytes"
"errors" "errors"
"fmt"
"github.com/ipfs/go-cid" "github.com/ipfs/go-cid"
cbg "github.com/whyrusleeping/cbor-gen" cbg "github.com/whyrusleeping/cbor-gen"
@ -11,12 +12,14 @@ import (
"github.com/filecoin-project/go-bitfield" "github.com/filecoin-project/go-bitfield"
rle "github.com/filecoin-project/go-bitfield/rle" rle "github.com/filecoin-project/go-bitfield/rle"
"github.com/filecoin-project/go-state-types/abi" "github.com/filecoin-project/go-state-types/abi"
actorstypes "github.com/filecoin-project/go-state-types/actors"
minertypes "github.com/filecoin-project/go-state-types/builtin/v10/miner" minertypes "github.com/filecoin-project/go-state-types/builtin/v10/miner"
"github.com/filecoin-project/go-state-types/dline" "github.com/filecoin-project/go-state-types/dline"
builtin7 "github.com/filecoin-project/specs-actors/v7/actors/builtin" builtin7 "github.com/filecoin-project/specs-actors/v7/actors/builtin"
miner7 "github.com/filecoin-project/specs-actors/v7/actors/builtin/miner" miner7 "github.com/filecoin-project/specs-actors/v7/actors/builtin/miner"
adt7 "github.com/filecoin-project/specs-actors/v7/actors/util/adt" adt7 "github.com/filecoin-project/specs-actors/v7/actors/util/adt"
"github.com/filecoin-project/lotus/chain/actors"
"github.com/filecoin-project/lotus/chain/actors/adt" "github.com/filecoin-project/lotus/chain/actors/adt"
) )
@ -560,3 +563,20 @@ func fromV7SectorPreCommitOnChainInfo(v7 miner7.SectorPreCommitOnChainInfo) mine
func (s *state7) GetState() interface{} { func (s *state7) GetState() interface{} {
return &s.State return &s.State
} }
func (s *state7) ActorKey() string {
return actors.MinerKey
}
func (s *state7) ActorVersion() actorstypes.Version {
return actorstypes.Version7
}
func (s *state7) Code() cid.Cid {
code, ok := actors.GetActorCodeID(s.ActorVersion(), s.ActorKey())
if !ok {
panic(fmt.Errorf("didn't find actor %v code id for actor version %d", s.ActorKey(), s.ActorVersion()))
}
return code
}

View File

@ -3,6 +3,7 @@ package miner
import ( import (
"bytes" "bytes"
"errors" "errors"
"fmt"
"github.com/ipfs/go-cid" "github.com/ipfs/go-cid"
cbg "github.com/whyrusleeping/cbor-gen" cbg "github.com/whyrusleeping/cbor-gen"
@ -11,12 +12,14 @@ import (
"github.com/filecoin-project/go-bitfield" "github.com/filecoin-project/go-bitfield"
rle "github.com/filecoin-project/go-bitfield/rle" rle "github.com/filecoin-project/go-bitfield/rle"
"github.com/filecoin-project/go-state-types/abi" "github.com/filecoin-project/go-state-types/abi"
actorstypes "github.com/filecoin-project/go-state-types/actors"
builtin8 "github.com/filecoin-project/go-state-types/builtin" builtin8 "github.com/filecoin-project/go-state-types/builtin"
minertypes "github.com/filecoin-project/go-state-types/builtin/v10/miner" minertypes "github.com/filecoin-project/go-state-types/builtin/v10/miner"
miner8 "github.com/filecoin-project/go-state-types/builtin/v8/miner" miner8 "github.com/filecoin-project/go-state-types/builtin/v8/miner"
adt8 "github.com/filecoin-project/go-state-types/builtin/v8/util/adt" adt8 "github.com/filecoin-project/go-state-types/builtin/v8/util/adt"
"github.com/filecoin-project/go-state-types/dline" "github.com/filecoin-project/go-state-types/dline"
"github.com/filecoin-project/lotus/chain/actors"
"github.com/filecoin-project/lotus/chain/actors/adt" "github.com/filecoin-project/lotus/chain/actors/adt"
) )
@ -560,3 +563,20 @@ func fromV8SectorPreCommitOnChainInfo(v8 miner8.SectorPreCommitOnChainInfo) mine
func (s *state8) GetState() interface{} { func (s *state8) GetState() interface{} {
return &s.State return &s.State
} }
func (s *state8) ActorKey() string {
return actors.MinerKey
}
func (s *state8) ActorVersion() actorstypes.Version {
return actorstypes.Version8
}
func (s *state8) Code() cid.Cid {
code, ok := actors.GetActorCodeID(s.ActorVersion(), s.ActorKey())
if !ok {
panic(fmt.Errorf("didn't find actor %v code id for actor version %d", s.ActorKey(), s.ActorVersion()))
}
return code
}

View File

@ -3,6 +3,7 @@ package miner
import ( import (
"bytes" "bytes"
"errors" "errors"
"fmt"
"github.com/ipfs/go-cid" "github.com/ipfs/go-cid"
cbg "github.com/whyrusleeping/cbor-gen" cbg "github.com/whyrusleeping/cbor-gen"
@ -11,12 +12,14 @@ import (
"github.com/filecoin-project/go-bitfield" "github.com/filecoin-project/go-bitfield"
rle "github.com/filecoin-project/go-bitfield/rle" rle "github.com/filecoin-project/go-bitfield/rle"
"github.com/filecoin-project/go-state-types/abi" "github.com/filecoin-project/go-state-types/abi"
actorstypes "github.com/filecoin-project/go-state-types/actors"
builtin9 "github.com/filecoin-project/go-state-types/builtin" builtin9 "github.com/filecoin-project/go-state-types/builtin"
minertypes "github.com/filecoin-project/go-state-types/builtin/v10/miner" minertypes "github.com/filecoin-project/go-state-types/builtin/v10/miner"
miner9 "github.com/filecoin-project/go-state-types/builtin/v9/miner" miner9 "github.com/filecoin-project/go-state-types/builtin/v9/miner"
adt9 "github.com/filecoin-project/go-state-types/builtin/v9/util/adt" adt9 "github.com/filecoin-project/go-state-types/builtin/v9/util/adt"
"github.com/filecoin-project/go-state-types/dline" "github.com/filecoin-project/go-state-types/dline"
"github.com/filecoin-project/lotus/chain/actors"
"github.com/filecoin-project/lotus/chain/actors/adt" "github.com/filecoin-project/lotus/chain/actors/adt"
) )
@ -552,3 +555,20 @@ func fromV9SectorPreCommitOnChainInfo(v9 miner9.SectorPreCommitOnChainInfo) mine
func (s *state9) GetState() interface{} { func (s *state9) GetState() interface{} {
return &s.State return &s.State
} }
func (s *state9) ActorKey() string {
return actors.MinerKey
}
func (s *state9) ActorVersion() actorstypes.Version {
return actorstypes.Version9
}
func (s *state9) Code() cid.Cid {
code, ok := actors.GetActorCodeID(s.ActorVersion(), s.ActorKey())
if !ok {
panic(fmt.Errorf("didn't find actor %v code id for actor version %d", s.ActorKey(), s.ActorVersion()))
}
return code
}

View File

@ -2,6 +2,7 @@ package multisig
import ( import (
actorstypes "github.com/filecoin-project/go-state-types/actors" actorstypes "github.com/filecoin-project/go-state-types/actors"
"github.com/ipfs/go-cid"
"fmt" "fmt"
"github.com/minio/blake2b-simd" "github.com/minio/blake2b-simd"
@ -67,6 +68,10 @@ func MakeState(store adt.Store, av actorstypes.Version, signers []address.Addres
type State interface { type State interface {
cbor.Marshaler cbor.Marshaler
Code() cid.Cid
ActorKey() string
ActorVersion() actorstypes.Version
LockedBalance(epoch abi.ChainEpoch) (abi.TokenAmount, error) LockedBalance(epoch abi.ChainEpoch) (abi.TokenAmount, error)
StartEpoch() (abi.ChainEpoch, error) StartEpoch() (abi.ChainEpoch, error)
UnlockDuration() (abi.ChainEpoch, error) UnlockDuration() (abi.ChainEpoch, error)
@ -141,3 +146,10 @@ func txnParams(id uint64, data *ProposalHashData) ([]byte, error) {
return actors.SerializeParams(&params) return actors.SerializeParams(&params)
} }
func AllCodes() []cid.Cid {
return []cid.Cid{ {{range .versions}}
(&state{{.}}{}).Code(),
{{- end}}
}
}

View File

@ -3,6 +3,7 @@ package multisig
import ( import (
"fmt" "fmt"
"github.com/ipfs/go-cid"
"github.com/minio/blake2b-simd" "github.com/minio/blake2b-simd"
cbg "github.com/whyrusleeping/cbor-gen" cbg "github.com/whyrusleeping/cbor-gen"
"golang.org/x/xerrors" "golang.org/x/xerrors"
@ -114,6 +115,10 @@ func MakeState(store adt.Store, av actorstypes.Version, signers []address.Addres
type State interface { type State interface {
cbor.Marshaler cbor.Marshaler
Code() cid.Cid
ActorKey() string
ActorVersion() actorstypes.Version
LockedBalance(epoch abi.ChainEpoch) (abi.TokenAmount, error) LockedBalance(epoch abi.ChainEpoch) (abi.TokenAmount, error)
StartEpoch() (abi.ChainEpoch, error) StartEpoch() (abi.ChainEpoch, error)
UnlockDuration() (abi.ChainEpoch, error) UnlockDuration() (abi.ChainEpoch, error)
@ -215,3 +220,18 @@ func txnParams(id uint64, data *ProposalHashData) ([]byte, error) {
return actors.SerializeParams(&params) return actors.SerializeParams(&params)
} }
func AllCodes() []cid.Cid {
return []cid.Cid{
(&state0{}).Code(),
(&state2{}).Code(),
(&state3{}).Code(),
(&state4{}).Code(),
(&state5{}).Code(),
(&state6{}).Code(),
(&state7{}).Code(),
(&state8{}).Code(),
(&state9{}).Code(),
(&state10{}).Code(),
}
}

View File

@ -1,9 +1,11 @@
package multisig package multisig
import ( import (
"fmt"
"bytes" "bytes"
"encoding/binary" "encoding/binary"
actorstypes "github.com/filecoin-project/go-state-types/actors"
"github.com/filecoin-project/go-address" "github.com/filecoin-project/go-address"
"github.com/filecoin-project/go-state-types/abi" "github.com/filecoin-project/go-state-types/abi"
@ -12,6 +14,7 @@ import (
"golang.org/x/xerrors" "golang.org/x/xerrors"
"github.com/filecoin-project/lotus/chain/actors/adt" "github.com/filecoin-project/lotus/chain/actors/adt"
"github.com/filecoin-project/lotus/chain/actors"
{{if (le .v 7)}} {{if (le .v 7)}}
{{if (ge .v 3)}} {{if (ge .v 3)}}
@ -131,3 +134,20 @@ func (s *state{{.v}}) decodeTransaction(val *cbg.Deferred) (Transaction, error)
func (s *state{{.v}}) GetState() interface{} { func (s *state{{.v}}) GetState() interface{} {
return &s.State return &s.State
} }
func (s *state{{.v}}) ActorKey() string {
return actors.MultisigKey
}
func (s *state{{.v}}) ActorVersion() actorstypes.Version {
return actorstypes.Version{{.v}}
}
func (s *state{{.v}}) Code() cid.Cid {
code, ok := actors.GetActorCodeID(s.ActorVersion(), s.ActorKey())
if !ok {
panic(fmt.Errorf("didn't find actor %v code id for actor version %d", s.ActorKey(), s.ActorVersion()))
}
return code
}

Some files were not shown because too many files have changed in this diff Show More