Skip to content
Merged
Show file tree
Hide file tree
Changes from 22 commits
Commits
Show all changes
27 commits
Select commit Hold shift + click to select a range
f64dfbc
deps: update to lotus v1.18
frrist Oct 17, 2022
9c14f7a
schema: implement precommitinfov9 schema and extractor
frrist Oct 18, 2022
9817596
schema: implement minerbeneficiary task and schema (#1081)
frrist Nov 15, 2022
1e4d0a0
schema: implement datacap balance extractor and schema (#1082)
frrist Nov 15, 2022
eebcb2a
fix tests
frrist Nov 16, 2022
2b00edb
pull in latest version of lotus
frrist Nov 16, 2022
b6a92f6
fix more tests
frrist Nov 16, 2022
c4390ab
and more tests
frrist Nov 16, 2022
c19a919
fix schema error
frrist Nov 16, 2022
f19e425
deps: update to lotus v1.18.0 release
frrist Nov 16, 2022
a1a945c
docker: update build image to 1.18.1
frrist Nov 16, 2022
9fc6035
go mod tidy
frrist Nov 16, 2022
c4a0dab
replace deprecated libp2p deps
frrist Nov 16, 2022
ea2ba1b
fix: deal id field name
frrist Nov 21, 2022
9655bba
fix: unsealed column name
frrist Nov 21, 2022
be6bca9
fix: beneficiary task
frrist Nov 21, 2022
a5c0448
update ffi deps
frrist Nov 21, 2022
37bc9b4
more fix beneficiary
frrist Nov 21, 2022
9d4bd81
fix panic in param parsing
frrist Nov 21, 2022
31260cd
fix: datacap verifreg diff return err
frrist Nov 22, 2022
cd31965
fix sector events and datacap diffing
frrist Nov 22, 2022
bc746f9
fix parsed messages
frrist Nov 22, 2022
aae51b2
fix: special case UniversalReceiverHookMethodNum msg params
frrist Nov 22, 2022
00b8880
fix: miner beneficiaries
frrist Nov 28, 2022
6a0b768
update: GO_BUILD_IMAGE to match CI
frrist Nov 29, 2022
107022d
fix: datacap inital state address
frrist Nov 29, 2022
a64fd18
deps: update ffi to match lotus v1.18.0
frrist Nov 29, 2022
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 4 additions & 4 deletions .circleci/config.yml
Original file line number Diff line number Diff line change
Expand Up @@ -6,12 +6,12 @@ orbs:
executors:
dockerizer:
docker:
- image: cimg/go:1.17.6
- image: cimg/go:1.18.7
Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

lotus and lily are now on go version 1.18, ci must match; mechanical change in this file.

environment:
IMAGE_NAME: filecoin/lily
golang:
docker:
- image: cimg/go:1.17.6
- image: cimg/go:1.18.7

commands:
install-deps:
Expand Down Expand Up @@ -148,7 +148,7 @@ jobs:
test:
resource_class: xlarge
docker:
- image: cimg/go:1.17.6
- image: cimg/go:1.18.7
- image: timescale/timescaledb:2.5.0-pg13
environment:
POSTGRES_PASSWORD: password
Expand Down Expand Up @@ -183,7 +183,7 @@ jobs:
integration-test:
resource_class: large
docker:
- image: cimg/go:1.17.6
- image: cimg/go:1.18.7
- image: timescale/timescaledb:2.5.0-pg13
environment:
POSTGRES_PASSWORD: password
Expand Down
4 changes: 2 additions & 2 deletions Makefile
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
SHELL=/usr/bin/env bash

GO_BUILD_IMAGE?=golang:1.17.6
GO_BUILD_IMAGE?=golang:1.18.1
PG_IMAGE?=postgres:10
REDIS_IMAGE?=redis:6
LILY_IMAGE_NAME?=filecoin/lily
Expand Down Expand Up @@ -82,7 +82,7 @@ testfull: build
docker-compose up -d
sleep 2
LILY_DB="postgres://postgres:password@localhost:5432/postgres?sslmode=disable" ./lily migrate --latest
-TZ= PGSSLMODE=disable LILY_TEST_DB="postgres://postgres:password@localhost:5432/postgres?sslmode=disable" go test ./... -v
-TZ= PGSSLMODE=disable LILY_TEST_DB="postgres://postgres:password@localhost:5432/postgres?sslmode=disable" go test ./...
docker-compose down

# testshort runs tests that don't require external dependencies such as postgres or redis
Expand Down
5 changes: 4 additions & 1 deletion chain/actors/actors.go
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
package actors

import (
actorstypes "github.com/filecoin-project/go-state-types/actors"
"github.com/filecoin-project/lotus/chain/actors"
builtin0 "github.com/filecoin-project/specs-actors/actors/builtin"
builtin2 "github.com/filecoin-project/specs-actors/v2/actors/builtin"
Expand All @@ -27,6 +28,7 @@ const (
Version6 Version = 6
Version7 Version = 7
Version8 Version = 8
Version9 Version = 9
Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

support new actor version

)
const (
AccountKey = "account"
Expand All @@ -40,12 +42,13 @@ const (
RewardKey = "reward"
SystemKey = "system"
VerifregKey = "verifiedregistry"
DatacapKey = "datacap"
Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

new datacap actor added in v9

)

// GetActorCodeID looks up a builtin actor's code CID by actor version and canonical actor name.
func GetActorCodeID(av Version, name string) (cid.Cid, bool) {
// Actors V8 and above
if c, ok := actors.GetActorCodeID(actors.Version(av), name); ok {
if c, ok := actors.GetActorCodeID(actorstypes.Version(av), name); ok {
return c, true
}

Expand Down
125 changes: 69 additions & 56 deletions chain/actors/agen/generator/gen.go
Original file line number Diff line number Diff line change
Expand Up @@ -3,58 +3,52 @@ package generator
import (
"bytes"
"fmt"
"go/format"
"io/ioutil"
"os"
"path/filepath"
"strconv"
"text/template"
)

var latestVersion = 8

var versions = []int{0, 2, 3, 4, 5, 6, 7, latestVersion}

var versionImports = map[int]string{
0: "/",
2: "/v2/",
3: "/v3/",
4: "/v4/",
5: "/v5/",
6: "/v6/",
7: "/v7/",
latestVersion: "/v8/",
}
lotusactors "github.com/filecoin-project/lotus/chain/actors"
"golang.org/x/xerrors"
)

var actors = map[string][]int{
"init": versions,
"market": versions,
"miner": versions,
"multisig": versions,
"power": versions,
"reward": versions,
"verifreg": versions,
//"account": lotusactors.Versions,
//"cron": lotusactors.Versions,
"init": lotusactors.Versions,
"market": lotusactors.Versions,
"miner": lotusactors.Versions,
"multisig": lotusactors.Versions,
//"paych": lotusactors.Versions,
"power": lotusactors.Versions,
//"system": lotusactors.Versions,
"reward": lotusactors.Versions,
"verifreg": lotusactors.Versions,
"datacap": lotusactors.Versions[8:],
}

func Gen() error {
if err := generateAdapters(); err != nil {
return err
}

if err := generatePolicy(); err != nil {
if err := generatePolicy("chain/actors/policy/policy.go"); err != nil {
return err
}

if err := generateBuiltin(); err != nil {
if err := generateBuiltin("chain/actors/builtin/builtin.go"); err != nil {
return err
}
return nil
}

func generateAdapters() error {
actorsDir := "chain/actors/builtin"
for act, versions := range actors {
actDir := filepath.Join(actorsDir, act)
actDir := filepath.Join("chain/actors/builtin", act)

if err := generateState(actDir); err != nil {
if err := generateState(actDir, versions); err != nil {
return err
}

Expand All @@ -65,24 +59,29 @@ func generateAdapters() error {
{
af, err := ioutil.ReadFile(filepath.Join(actDir, "actor.go.template"))
if err != nil {
return fmt.Errorf("loading actor template: %w", err)
return xerrors.Errorf("loading actor template: %w", err)
}

tpl := template.Must(template.New("").Funcs(template.FuncMap{
"import": func(v int) string { return versionImports[v] },
"import": func(v int) string { return getVersionImports()[v] },
}).Parse(string(af)))

var b bytes.Buffer

err = tpl.Execute(&b, map[string]interface{}{
"versions": versions,
"latestVersion": latestVersion,
"latestVersion": lotusactors.LatestVersion,
})
if err != nil {
return err
}

if err := ioutil.WriteFile(filepath.Join(actDir, fmt.Sprintf("%s.go", act)), b.Bytes(), 0o666); err != nil {
fmted, err := format.Source(b.Bytes())
if err != nil {
return err
}

if err := ioutil.WriteFile(filepath.Join(actDir, fmt.Sprintf("%s.go", act)), fmted, 0666); err != nil {
return err
}
}
Expand All @@ -91,31 +90,31 @@ func generateAdapters() error {
return nil
}

func generateState(actDir string) error {
func generateState(actDir string, versions []int) error {
af, err := ioutil.ReadFile(filepath.Join(actDir, "state.go.template"))
if err != nil {
if os.IsNotExist(err) {
return nil // skip
}

return fmt.Errorf("loading state adapter template: %w", err)
return xerrors.Errorf("loading state adapter template: %w", err)
}

for _, version := range versions {
fmt.Println("parsing", actDir)
tpl := template.Must(template.New("").Funcs(template.FuncMap{}).Parse(string(af)))

var b bytes.Buffer

err := tpl.Execute(&b, map[string]interface{}{
"v": version,
"import": versionImports[version],
"v": version,
"import": getVersionImports()[version],
"latestVersion": lotusactors.LatestVersion,
})
if err != nil {
return err
}

if err := ioutil.WriteFile(filepath.Join(actDir, fmt.Sprintf("v%d.go", version)), b.Bytes(), 0o666); err != nil {
if err := ioutil.WriteFile(filepath.Join(actDir, fmt.Sprintf("v%d.go", version)), b.Bytes(), 0666); err != nil {
return err
}
}
Expand All @@ -130,88 +129,102 @@ func generateMessages(actDir string) error {
return nil // skip
}

return fmt.Errorf("loading message adapter template: %w", err)
return xerrors.Errorf("loading message adapter template: %w", err)
}

for _, version := range versions {
for _, version := range lotusactors.Versions {
tpl := template.Must(template.New("").Funcs(template.FuncMap{}).Parse(string(af)))

var b bytes.Buffer

err := tpl.Execute(&b, map[string]interface{}{
"v": version,
"import": versionImports[version],
"v": version,
"import": getVersionImports()[version],
"latestVersion": lotusactors.LatestVersion,
})
if err != nil {
return err
}

if err := ioutil.WriteFile(filepath.Join(actDir, fmt.Sprintf("message%d.go", version)), b.Bytes(), 0o666); err != nil {
if err := ioutil.WriteFile(filepath.Join(actDir, fmt.Sprintf("message%d.go", version)), b.Bytes(), 0666); err != nil {
return err
}
}

return nil
}

func generatePolicy() error {
policyPath := "chain/actors/policy/policy.go"
func generatePolicy(policyPath string) error {

pf, err := ioutil.ReadFile(policyPath + ".template")
if err != nil {
if os.IsNotExist(err) {
return nil // skip
}

return fmt.Errorf("loading policy template file: %w", err)
return xerrors.Errorf("loading policy template file: %w", err)
}

tpl := template.Must(template.New("").Funcs(template.FuncMap{
"import": func(v int) string { return versionImports[v] },
"import": func(v int) string { return getVersionImports()[v] },
}).Parse(string(pf)))
var b bytes.Buffer

err = tpl.Execute(&b, map[string]interface{}{
"versions": versions,
"latestVersion": latestVersion,
"versions": lotusactors.Versions,
"latestVersion": lotusactors.LatestVersion,
})
if err != nil {
return err
}

if err := ioutil.WriteFile(policyPath, b.Bytes(), 0o666); err != nil {
if err := ioutil.WriteFile(policyPath, b.Bytes(), 0666); err != nil {
return err
}

return nil
}

func generateBuiltin() error {
builtinPath := "chain/actors/builtin/builtin.go"
func generateBuiltin(builtinPath string) error {

bf, err := ioutil.ReadFile(builtinPath + ".template")
if err != nil {
if os.IsNotExist(err) {
return nil // skip
}

return fmt.Errorf("loading builtin template file: %w", err)
return xerrors.Errorf("loading builtin template file: %w", err)
}

tpl := template.Must(template.New("").Funcs(template.FuncMap{
"import": func(v int) string { return versionImports[v] },
"import": func(v int) string { return getVersionImports()[v] },
}).Parse(string(bf)))
var b bytes.Buffer

err = tpl.Execute(&b, map[string]interface{}{
"versions": versions,
"latestVersion": latestVersion,
"versions": lotusactors.Versions,
"latestVersion": lotusactors.LatestVersion,
})
if err != nil {
return err
}

if err := ioutil.WriteFile(builtinPath, b.Bytes(), 0o666); err != nil {
if err := ioutil.WriteFile(builtinPath, b.Bytes(), 0666); err != nil {
return err
}

return nil
}

func getVersionImports() map[int]string {
versionImports := make(map[int]string, lotusactors.LatestVersion)
for _, v := range lotusactors.Versions {
if v == 0 {
versionImports[v] = "/"
} else {
versionImports[v] = "/v" + strconv.Itoa(v) + "/"
}
}

return versionImports
}
Loading