v1.27.0-a #10
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@ -37,7 +37,7 @@ func BuildTypeString() string {
|
||||
}
|
||||
|
||||
// BuildVersion is the local build version
|
||||
const BuildVersion = "1.25.2-dev"
|
||||
const BuildVersion = "1.25.3-dev"
|
||||
|
||||
func UserVersion() string {
|
||||
if os.Getenv("LOTUS_VERSION_IGNORE_COMMIT") == "1" {
|
||||
|
@ -886,6 +886,35 @@ func (syncer *Syncer) syncFork(ctx context.Context, incoming *types.TipSet, know
|
||||
}
|
||||
}
|
||||
|
||||
incomingParentsTsk := incoming.Parents()
|
||||
commonParent := false
|
||||
for _, incomingParent := range incomingParentsTsk.Cids() {
|
||||
if known.Contains(incomingParent) {
|
||||
commonParent = true
|
||||
}
|
||||
}
|
||||
|
||||
if commonParent {
|
||||
// known contains at least one of incoming's Parents => the common ancestor is known's Parents (incoming's Grandparents)
|
||||
// in this case, we need to return {incoming, incoming.Parents()}
|
||||
incomingParents, err := syncer.store.LoadTipSet(ctx, incomingParentsTsk)
|
||||
if err != nil {
|
||||
// fallback onto the network
|
||||
tips, err := syncer.Exchange.GetBlocks(ctx, incoming.Parents(), 1)
|
||||
if err != nil {
|
||||
return nil, xerrors.Errorf("failed to fetch incomingParents from the network: %w", err)
|
||||
}
|
||||
|
||||
if len(tips) == 0 {
|
||||
return nil, xerrors.Errorf("network didn't return any tipsets")
|
||||
}
|
||||
|
||||
incomingParents = tips[0]
|
||||
}
|
||||
|
||||
return []*types.TipSet{incoming, incomingParents}, nil
|
||||
}
|
||||
|
||||
// TODO: Does this mean we always ask for ForkLengthThreshold blocks from the network, even if we just need, like, 2? Yes.
|
||||
// Would it not be better to ask in smaller chunks, given that an ~ForkLengthThreshold is very rare?
|
||||
tips, err := syncer.Exchange.GetBlocks(ctx, incoming.Parents(), int(build.ForkLengthThreshold))
|
||||
|
@ -11,14 +11,18 @@ import (
|
||||
"net/http"
|
||||
"strings"
|
||||
|
||||
"github.com/BurntSushi/toml"
|
||||
"github.com/gbrlsnchs/jwt/v3"
|
||||
ds "github.com/ipfs/go-datastore"
|
||||
dssync "github.com/ipfs/go-datastore/sync"
|
||||
logging "github.com/ipfs/go-log/v2"
|
||||
"github.com/urfave/cli/v2"
|
||||
"golang.org/x/xerrors"
|
||||
|
||||
"github.com/BurntSushi/toml"
|
||||
"github.com/filecoin-project/go-address"
|
||||
"github.com/filecoin-project/go-jsonrpc/auth"
|
||||
"github.com/filecoin-project/go-statestore"
|
||||
|
||||
"github.com/filecoin-project/lotus/api"
|
||||
cliutil "github.com/filecoin-project/lotus/cli/util"
|
||||
"github.com/filecoin-project/lotus/journal"
|
||||
@ -34,9 +38,6 @@ import (
|
||||
"github.com/filecoin-project/lotus/storage/sealer"
|
||||
"github.com/filecoin-project/lotus/storage/sealer/ffiwrapper"
|
||||
"github.com/filecoin-project/lotus/storage/sealer/storiface"
|
||||
"github.com/gbrlsnchs/jwt/v3"
|
||||
"github.com/urfave/cli/v2"
|
||||
"golang.org/x/xerrors"
|
||||
)
|
||||
|
||||
var log = logging.Logger("lotus-provider/deps")
|
||||
|
@ -10,6 +10,7 @@ import (
|
||||
|
||||
"github.com/fatih/color"
|
||||
logging "github.com/ipfs/go-log/v2"
|
||||
"github.com/mitchellh/go-homedir"
|
||||
"github.com/urfave/cli/v2"
|
||||
|
||||
"github.com/filecoin-project/lotus/build"
|
||||
@ -29,7 +30,7 @@ func SetupCloseHandler() {
|
||||
go func() {
|
||||
<-c
|
||||
fmt.Println("\r- Ctrl+C pressed in Terminal")
|
||||
pprof.Lookup("goroutine").WriteTo(os.Stdout, 1)
|
||||
_ = pprof.Lookup("goroutine").WriteTo(os.Stdout, 1)
|
||||
panic(1)
|
||||
}()
|
||||
}
|
||||
@ -145,8 +146,14 @@ func main() {
|
||||
},
|
||||
After: func(c *cli.Context) error {
|
||||
if r := recover(); r != nil {
|
||||
p, err := homedir.Expand(c.String(FlagMinerRepo))
|
||||
if err != nil {
|
||||
log.Errorw("could not expand repo path for panic report", "error", err)
|
||||
panic(r)
|
||||
}
|
||||
|
||||
// Generate report in LOTUS_PATH and re-raise panic
|
||||
build.GeneratePanicReport(c.String("panic-reports"), c.String(deps.FlagRepoPath), c.App.Name)
|
||||
build.GeneratePanicReport(c.String("panic-reports"), p, c.App.Name)
|
||||
panic(r)
|
||||
}
|
||||
return nil
|
||||
|
@ -5,13 +5,13 @@ import (
|
||||
"context"
|
||||
|
||||
logging "github.com/ipfs/go-log/v2"
|
||||
"github.com/samber/lo"
|
||||
|
||||
"github.com/filecoin-project/lotus/cmd/lotus-provider/deps"
|
||||
"github.com/filecoin-project/lotus/lib/harmony/harmonytask"
|
||||
"github.com/filecoin-project/lotus/provider"
|
||||
"github.com/filecoin-project/lotus/provider/lpmessage"
|
||||
"github.com/filecoin-project/lotus/provider/lpwinning"
|
||||
"github.com/samber/lo"
|
||||
)
|
||||
|
||||
var log = logging.Logger("lotus-provider/deps")
|
||||
|
@ -7,7 +7,7 @@ USAGE:
|
||||
lotus-miner [global options] command [command options] [arguments...]
|
||||
|
||||
VERSION:
|
||||
1.25.2-dev
|
||||
1.25.3-dev
|
||||
|
||||
COMMANDS:
|
||||
init Initialize a lotus miner repo
|
||||
@ -231,8 +231,19 @@ OPTIONS:
|
||||
--help, -h show help
|
||||
```
|
||||
|
||||
#### lotus-miner actor set-addresses, set-addrs
|
||||
### lotus-miner actor set-addresses
|
||||
```
|
||||
NAME:
|
||||
lotus-miner actor set-addresses - set addresses that your miner can be publicly dialed on
|
||||
|
||||
USAGE:
|
||||
lotus-miner actor set-addresses [command options] <multiaddrs>
|
||||
|
||||
OPTIONS:
|
||||
--from value optionally specify the account to send the message from
|
||||
--gas-limit value set gas limit (default: 0)
|
||||
--unset unset address (default: false)
|
||||
--help, -h show help
|
||||
```
|
||||
|
||||
### lotus-miner actor withdraw
|
||||
@ -1161,8 +1172,20 @@ OPTIONS:
|
||||
--help, -h show help
|
||||
```
|
||||
|
||||
##### lotus-miner proving compute windowed-post, window-post
|
||||
#### lotus-miner proving compute windowed-post
|
||||
```
|
||||
NAME:
|
||||
lotus-miner proving compute windowed-post - Compute WindowPoSt for a specific deadline
|
||||
|
||||
USAGE:
|
||||
lotus-miner proving compute windowed-post [command options] [deadline index]
|
||||
|
||||
DESCRIPTION:
|
||||
Note: This command is intended to be used to verify PoSt compute performance.
|
||||
It will not send any messages to the chain.
|
||||
|
||||
OPTIONS:
|
||||
--help, -h show help
|
||||
```
|
||||
|
||||
### lotus-miner proving recover-faults
|
||||
|
410
documentation/en/cli-lotus-provider.md
Normal file
410
documentation/en/cli-lotus-provider.md
Normal file
@ -0,0 +1,410 @@
|
||||
# lotus-provider
|
||||
```
|
||||
NAME:
|
||||
lotus-provider - Filecoin decentralized storage network provider
|
||||
|
||||
USAGE:
|
||||
lotus-provider [global options] command [command options] [arguments...]
|
||||
|
||||
VERSION:
|
||||
1.25.3-dev
|
||||
|
||||
COMMANDS:
|
||||
run Start a lotus provider process
|
||||
stop Stop a running lotus provider
|
||||
config Manage node config by layers. The layer 'base' will always be applied.
|
||||
test Utility functions for testing
|
||||
version Print version
|
||||
help, h Shows a list of commands or help for one command
|
||||
DEVELOPER:
|
||||
auth Manage RPC permissions
|
||||
log Manage logging
|
||||
wait-api Wait for lotus api to come online
|
||||
fetch-params Fetch proving parameters
|
||||
|
||||
GLOBAL OPTIONS:
|
||||
--color use color in display output (default: depends on output being a TTY)
|
||||
--db-host value Command separated list of hostnames for yugabyte cluster (default: "yugabyte") [$LOTUS_DB_HOST]
|
||||
--db-name value (default: "yugabyte") [$LOTUS_DB_NAME, $LOTUS_HARMONYDB_HOSTS]
|
||||
--db-user value (default: "yugabyte") [$LOTUS_DB_USER, $LOTUS_HARMONYDB_USERNAME]
|
||||
--db-password value (default: "yugabyte") [$LOTUS_DB_PASSWORD, $LOTUS_HARMONYDB_PASSWORD]
|
||||
--layers value (default: "base") [$LOTUS_LAYERS, $LOTUS_CONFIG_LAYERS]
|
||||
--repo-path value (default: "~/.lotusprovider") [$LOTUS_REPO_PATH]
|
||||
--vv enables very verbose mode, useful for debugging the CLI (default: false)
|
||||
--help, -h show help
|
||||
--version, -v print the version
|
||||
```
|
||||
|
||||
## lotus-provider run
|
||||
```
|
||||
NAME:
|
||||
lotus-provider run - Start a lotus provider process
|
||||
|
||||
USAGE:
|
||||
lotus-provider run [command options] [arguments...]
|
||||
|
||||
OPTIONS:
|
||||
--listen value host address and port the worker api will listen on (default: "0.0.0.0:12300") [$LOTUS_WORKER_LISTEN]
|
||||
--nosync don't check full-node sync status (default: false)
|
||||
--manage-fdlimit manage open file limit (default: true)
|
||||
--layers value [ --layers value ] list of layers to be interpreted (atop defaults). Default: base (default: "base")
|
||||
--storage-json value path to json file containing storage config (default: "~/.lotus-provider/storage.json")
|
||||
--journal value path to journal files (default: "~/.lotus-provider/")
|
||||
--help, -h show help
|
||||
```
|
||||
|
||||
## lotus-provider stop
|
||||
```
|
||||
NAME:
|
||||
lotus-provider stop - Stop a running lotus provider
|
||||
|
||||
USAGE:
|
||||
lotus-provider stop [command options] [arguments...]
|
||||
|
||||
OPTIONS:
|
||||
--help, -h show help
|
||||
```
|
||||
|
||||
## lotus-provider config
|
||||
```
|
||||
NAME:
|
||||
lotus-provider config - Manage node config by layers. The layer 'base' will always be applied.
|
||||
|
||||
USAGE:
|
||||
lotus-provider config command [command options] [arguments...]
|
||||
|
||||
COMMANDS:
|
||||
default, defaults Print default node config
|
||||
set, add, update, create Set a config layer or the base by providing a filename or stdin.
|
||||
get, cat, show Get a config layer by name. You may want to pipe the output to a file, or use 'less'
|
||||
list, ls List config layers you can get.
|
||||
interpret, view, stacked, stack Interpret stacked config layers by this version of lotus-provider, with system-generated comments.
|
||||
remove, rm, del, delete Remove a named config layer.
|
||||
from-miner Express a database config (for lotus-provider) from an existing miner.
|
||||
help, h Shows a list of commands or help for one command
|
||||
|
||||
OPTIONS:
|
||||
--help, -h show help
|
||||
```
|
||||
|
||||
### lotus-provider config default
|
||||
```
|
||||
NAME:
|
||||
lotus-provider config default - Print default node config
|
||||
|
||||
USAGE:
|
||||
lotus-provider config default [command options] [arguments...]
|
||||
|
||||
OPTIONS:
|
||||
--no-comment don't comment default values (default: false)
|
||||
--help, -h show help
|
||||
```
|
||||
|
||||
### lotus-provider config set
|
||||
```
|
||||
NAME:
|
||||
lotus-provider config set - Set a config layer or the base by providing a filename or stdin.
|
||||
|
||||
USAGE:
|
||||
lotus-provider config set [command options] a layer's file name
|
||||
|
||||
OPTIONS:
|
||||
--title value title of the config layer (req'd for stdin)
|
||||
--help, -h show help
|
||||
```
|
||||
|
||||
### lotus-provider config get
|
||||
```
|
||||
NAME:
|
||||
lotus-provider config get - Get a config layer by name. You may want to pipe the output to a file, or use 'less'
|
||||
|
||||
USAGE:
|
||||
lotus-provider config get [command options] layer name
|
||||
|
||||
OPTIONS:
|
||||
--help, -h show help
|
||||
```
|
||||
|
||||
### lotus-provider config list
|
||||
```
|
||||
NAME:
|
||||
lotus-provider config list - List config layers you can get.
|
||||
|
||||
USAGE:
|
||||
lotus-provider config list [command options] [arguments...]
|
||||
|
||||
OPTIONS:
|
||||
--help, -h show help
|
||||
```
|
||||
|
||||
### lotus-provider config interpret
|
||||
```
|
||||
NAME:
|
||||
lotus-provider config interpret - Interpret stacked config layers by this version of lotus-provider, with system-generated comments.
|
||||
|
||||
USAGE:
|
||||
lotus-provider config interpret [command options] a list of layers to be interpreted as the final config
|
||||
|
||||
OPTIONS:
|
||||
--layers value [ --layers value ] comma or space separated list of layers to be interpreted (default: "base")
|
||||
--help, -h show help
|
||||
```
|
||||
|
||||
### lotus-provider config remove
|
||||
```
|
||||
NAME:
|
||||
lotus-provider config remove - Remove a named config layer.
|
||||
|
||||
USAGE:
|
||||
lotus-provider config remove [command options] [arguments...]
|
||||
|
||||
OPTIONS:
|
||||
--help, -h show help
|
||||
```
|
||||
|
||||
### lotus-provider config from-miner
|
||||
```
|
||||
NAME:
|
||||
lotus-provider config from-miner - Express a database config (for lotus-provider) from an existing miner.
|
||||
|
||||
USAGE:
|
||||
lotus-provider config from-miner [command options] [arguments...]
|
||||
|
||||
DESCRIPTION:
|
||||
Express a database config (for lotus-provider) from an existing miner.
|
||||
|
||||
OPTIONS:
|
||||
--miner-repo value, --storagerepo value Specify miner repo path. flag(storagerepo) and env(LOTUS_STORAGE_PATH) are DEPRECATION, will REMOVE SOON (default: "~/.lotusminer") [$LOTUS_MINER_PATH, $LOTUS_STORAGE_PATH]
|
||||
--to-layer value, -t value The layer name for this data push. 'base' is recommended for single-miner setup.
|
||||
--overwrite, -o Use this with --to-layer to replace an existing layer (default: false)
|
||||
--help, -h show help
|
||||
```
|
||||
|
||||
## lotus-provider test
|
||||
```
|
||||
NAME:
|
||||
lotus-provider test - Utility functions for testing
|
||||
|
||||
USAGE:
|
||||
lotus-provider test command [command options] [arguments...]
|
||||
|
||||
COMMANDS:
|
||||
window-post, wd, windowpost, wdpost Compute a proof-of-spacetime for a sector (requires the sector to be pre-sealed). These will not send to the chain.
|
||||
help, h Shows a list of commands or help for one command
|
||||
|
||||
OPTIONS:
|
||||
--help, -h show help
|
||||
```
|
||||
|
||||
### lotus-provider test window-post
|
||||
```
|
||||
NAME:
|
||||
lotus-provider test window-post - Compute a proof-of-spacetime for a sector (requires the sector to be pre-sealed). These will not send to the chain.
|
||||
|
||||
USAGE:
|
||||
lotus-provider test window-post command [command options] [arguments...]
|
||||
|
||||
COMMANDS:
|
||||
here, cli Compute WindowPoSt for performance and configuration testing.
|
||||
task, scheduled, schedule, async, asynchronous Test the windowpost scheduler by running it on the next available lotus-provider.
|
||||
help, h Shows a list of commands or help for one command
|
||||
|
||||
OPTIONS:
|
||||
--help, -h show help
|
||||
```
|
||||
|
||||
#### lotus-provider test window-post here
|
||||
```
|
||||
NAME:
|
||||
lotus-provider test window-post here - Compute WindowPoSt for performance and configuration testing.
|
||||
|
||||
USAGE:
|
||||
lotus-provider test window-post here [command options] [deadline index]
|
||||
|
||||
DESCRIPTION:
|
||||
Note: This command is intended to be used to verify PoSt compute performance.
|
||||
It will not send any messages to the chain. Since it can compute any deadline, output may be incorrectly timed for the chain.
|
||||
|
||||
OPTIONS:
|
||||
--deadline value deadline to compute WindowPoSt for (default: 0)
|
||||
--layers value [ --layers value ] list of layers to be interpreted (atop defaults). Default: base (default: "base")
|
||||
--storage-json value path to json file containing storage config (default: "~/.lotus-provider/storage.json")
|
||||
--partition value partition to compute WindowPoSt for (default: 0)
|
||||
--help, -h show help
|
||||
```
|
||||
|
||||
#### lotus-provider test window-post task
|
||||
```
|
||||
NAME:
|
||||
lotus-provider test window-post task - Test the windowpost scheduler by running it on the next available lotus-provider.
|
||||
|
||||
USAGE:
|
||||
lotus-provider test window-post task [command options] [arguments...]
|
||||
|
||||
OPTIONS:
|
||||
--deadline value deadline to compute WindowPoSt for (default: 0)
|
||||
--layers value [ --layers value ] list of layers to be interpreted (atop defaults). Default: base (default: "base")
|
||||
--help, -h show help
|
||||
```
|
||||
|
||||
## lotus-provider version
|
||||
```
|
||||
NAME:
|
||||
lotus-provider version - Print version
|
||||
|
||||
USAGE:
|
||||
lotus-provider version [command options] [arguments...]
|
||||
|
||||
OPTIONS:
|
||||
--help, -h show help
|
||||
```
|
||||
|
||||
## lotus-provider auth
|
||||
```
|
||||
NAME:
|
||||
lotus-provider auth - Manage RPC permissions
|
||||
|
||||
USAGE:
|
||||
lotus-provider auth command [command options] [arguments...]
|
||||
|
||||
COMMANDS:
|
||||
create-token Create token
|
||||
api-info Get token with API info required to connect to this node
|
||||
help, h Shows a list of commands or help for one command
|
||||
|
||||
OPTIONS:
|
||||
--help, -h show help
|
||||
```
|
||||
|
||||
### lotus-provider auth create-token
|
||||
```
|
||||
NAME:
|
||||
lotus-provider auth create-token - Create token
|
||||
|
||||
USAGE:
|
||||
lotus-provider auth create-token [command options] [arguments...]
|
||||
|
||||
OPTIONS:
|
||||
--perm value permission to assign to the token, one of: read, write, sign, admin
|
||||
--help, -h show help
|
||||
```
|
||||
|
||||
### lotus-provider auth api-info
|
||||
```
|
||||
NAME:
|
||||
lotus-provider auth api-info - Get token with API info required to connect to this node
|
||||
|
||||
USAGE:
|
||||
lotus-provider auth api-info [command options] [arguments...]
|
||||
|
||||
OPTIONS:
|
||||
--perm value permission to assign to the token, one of: read, write, sign, admin
|
||||
--help, -h show help
|
||||
```
|
||||
|
||||
## lotus-provider log
|
||||
```
|
||||
NAME:
|
||||
lotus-provider log - Manage logging
|
||||
|
||||
USAGE:
|
||||
lotus-provider log command [command options] [arguments...]
|
||||
|
||||
COMMANDS:
|
||||
list List log systems
|
||||
set-level Set log level
|
||||
alerts Get alert states
|
||||
help, h Shows a list of commands or help for one command
|
||||
|
||||
OPTIONS:
|
||||
--help, -h show help
|
||||
```
|
||||
|
||||
### lotus-provider log list
|
||||
```
|
||||
NAME:
|
||||
lotus-provider log list - List log systems
|
||||
|
||||
USAGE:
|
||||
lotus-provider log list [command options] [arguments...]
|
||||
|
||||
OPTIONS:
|
||||
--help, -h show help
|
||||
```
|
||||
|
||||
### lotus-provider log set-level
|
||||
```
|
||||
NAME:
|
||||
lotus-provider log set-level - Set log level
|
||||
|
||||
USAGE:
|
||||
lotus-provider log set-level [command options] [level]
|
||||
|
||||
DESCRIPTION:
|
||||
Set the log level for logging systems:
|
||||
|
||||
The system flag can be specified multiple times.
|
||||
|
||||
eg) log set-level --system chain --system chainxchg debug
|
||||
|
||||
Available Levels:
|
||||
debug
|
||||
info
|
||||
warn
|
||||
error
|
||||
|
||||
Environment Variables:
|
||||
GOLOG_LOG_LEVEL - Default log level for all log systems
|
||||
GOLOG_LOG_FMT - Change output log format (json, nocolor)
|
||||
GOLOG_FILE - Write logs to file
|
||||
GOLOG_OUTPUT - Specify whether to output to file, stderr, stdout or a combination, i.e. file+stderr
|
||||
|
||||
|
||||
OPTIONS:
|
||||
--system value [ --system value ] limit to log system
|
||||
--help, -h show help
|
||||
```
|
||||
|
||||
### lotus-provider log alerts
|
||||
```
|
||||
NAME:
|
||||
lotus-provider log alerts - Get alert states
|
||||
|
||||
USAGE:
|
||||
lotus-provider log alerts [command options] [arguments...]
|
||||
|
||||
OPTIONS:
|
||||
--all get all (active and inactive) alerts (default: false)
|
||||
--help, -h show help
|
||||
```
|
||||
|
||||
## lotus-provider wait-api
|
||||
```
|
||||
NAME:
|
||||
lotus-provider wait-api - Wait for lotus api to come online
|
||||
|
||||
USAGE:
|
||||
lotus-provider wait-api [command options] [arguments...]
|
||||
|
||||
CATEGORY:
|
||||
DEVELOPER
|
||||
|
||||
OPTIONS:
|
||||
--timeout value duration to wait till fail (default: 30s)
|
||||
--help, -h show help
|
||||
```
|
||||
|
||||
## lotus-provider fetch-params
|
||||
```
|
||||
NAME:
|
||||
lotus-provider fetch-params - Fetch proving parameters
|
||||
|
||||
USAGE:
|
||||
lotus-provider fetch-params [command options] [sectorSize]
|
||||
|
||||
CATEGORY:
|
||||
DEVELOPER
|
||||
|
||||
OPTIONS:
|
||||
--help, -h show help
|
||||
```
|
@ -7,7 +7,7 @@ USAGE:
|
||||
lotus-worker [global options] command [command options] [arguments...]
|
||||
|
||||
VERSION:
|
||||
1.25.2-dev
|
||||
1.25.3-dev
|
||||
|
||||
COMMANDS:
|
||||
run Start lotus worker
|
||||
|
@ -7,7 +7,7 @@ USAGE:
|
||||
lotus [global options] command [command options] [arguments...]
|
||||
|
||||
VERSION:
|
||||
1.25.2-dev
|
||||
1.25.3-dev
|
||||
|
||||
COMMANDS:
|
||||
daemon Start a lotus daemon process
|
||||
@ -1807,8 +1807,16 @@ OPTIONS:
|
||||
--help, -h show help
|
||||
```
|
||||
|
||||
#### lotus state sector, sector-info
|
||||
### lotus state sector
|
||||
```
|
||||
NAME:
|
||||
lotus state sector - Get miner sector info
|
||||
|
||||
USAGE:
|
||||
lotus state sector [command options] [minerAddress] [sectorNumber]
|
||||
|
||||
OPTIONS:
|
||||
--help, -h show help
|
||||
```
|
||||
|
||||
### lotus state get-actor
|
||||
@ -1937,12 +1945,29 @@ OPTIONS:
|
||||
--help, -h show help
|
||||
```
|
||||
|
||||
#### lotus state wait-msg, wait-message
|
||||
### lotus state wait-msg
|
||||
```
|
||||
NAME:
|
||||
lotus state wait-msg - Wait for a message to appear on chain
|
||||
|
||||
USAGE:
|
||||
lotus state wait-msg [command options] [messageCid]
|
||||
|
||||
OPTIONS:
|
||||
--timeout value (default: "10m")
|
||||
--help, -h show help
|
||||
```
|
||||
|
||||
#### lotus state search-msg, search-message
|
||||
### lotus state search-msg
|
||||
```
|
||||
NAME:
|
||||
lotus state search-msg - Search to see whether a message has appeared on chain
|
||||
|
||||
USAGE:
|
||||
lotus state search-msg [command options] [messageCid]
|
||||
|
||||
OPTIONS:
|
||||
--help, -h show help
|
||||
```
|
||||
|
||||
### lotus state miner-info
|
||||
@ -2080,8 +2105,17 @@ OPTIONS:
|
||||
--help, -h show help
|
||||
```
|
||||
|
||||
#### lotus chain get-block, getblock
|
||||
### lotus chain get-block
|
||||
```
|
||||
NAME:
|
||||
lotus chain get-block - Get a block and print its details
|
||||
|
||||
USAGE:
|
||||
lotus chain get-block [command options] [blockCid]
|
||||
|
||||
OPTIONS:
|
||||
--raw print just the raw block header (default: false)
|
||||
--help, -h show help
|
||||
```
|
||||
|
||||
### lotus chain read-obj
|
||||
@ -2132,16 +2166,46 @@ OPTIONS:
|
||||
--help, -h show help
|
||||
```
|
||||
|
||||
##### lotus chain getmessage, get-message, get-msg
|
||||
### lotus chain getmessage
|
||||
```
|
||||
NAME:
|
||||
lotus chain getmessage - Get and print a message by its cid
|
||||
|
||||
USAGE:
|
||||
lotus chain getmessage [command options] [messageCid]
|
||||
|
||||
OPTIONS:
|
||||
--help, -h show help
|
||||
```
|
||||
|
||||
#### lotus chain sethead, set-head
|
||||
### lotus chain sethead
|
||||
```
|
||||
NAME:
|
||||
lotus chain sethead - manually set the local nodes head tipset (Caution: normally only used for recovery)
|
||||
|
||||
USAGE:
|
||||
lotus chain sethead [command options] [tipsetkey]
|
||||
|
||||
OPTIONS:
|
||||
--genesis reset head to genesis (default: false)
|
||||
--epoch value reset head to given epoch (default: 0)
|
||||
--help, -h show help
|
||||
```
|
||||
|
||||
#### lotus chain list, love
|
||||
### lotus chain list
|
||||
```
|
||||
NAME:
|
||||
lotus chain list - View a segment of the chain
|
||||
|
||||
USAGE:
|
||||
lotus chain list [command options] [arguments...]
|
||||
|
||||
OPTIONS:
|
||||
--height value (default: current head)
|
||||
--count value (default: 30)
|
||||
--format value specify the format to print out tipsets (default: "<height>: (<time>) <blocks>")
|
||||
--gas-stats view gas statistics for the chain (default: false)
|
||||
--help, -h show help
|
||||
```
|
||||
|
||||
### lotus chain get
|
||||
@ -2768,8 +2832,16 @@ OPTIONS:
|
||||
--help, -h show help
|
||||
```
|
||||
|
||||
#### lotus net find-peer, findpeer
|
||||
### lotus net find-peer
|
||||
```
|
||||
NAME:
|
||||
lotus net find-peer - Find the addresses of a given peerID
|
||||
|
||||
USAGE:
|
||||
lotus net find-peer [command options] [peerId]
|
||||
|
||||
OPTIONS:
|
||||
--help, -h show help
|
||||
```
|
||||
|
||||
### lotus net scores
|
||||
|
4
go.mod
4
go.mod
@ -110,7 +110,7 @@ require (
|
||||
github.com/kelseyhightower/envconfig v1.4.0
|
||||
github.com/koalacxr/quantile v0.0.1
|
||||
github.com/libp2p/go-buffer-pool v0.1.0
|
||||
github.com/libp2p/go-libp2p v0.31.0
|
||||
github.com/libp2p/go-libp2p v0.31.1
|
||||
github.com/libp2p/go-libp2p-consensus v0.0.1
|
||||
github.com/libp2p/go-libp2p-gorpc v0.5.0
|
||||
github.com/libp2p/go-libp2p-kad-dht v0.24.0
|
||||
@ -305,7 +305,7 @@ require (
|
||||
github.com/prometheus/statsd_exporter v0.22.7 // indirect
|
||||
github.com/quic-go/qpack v0.4.0 // indirect
|
||||
github.com/quic-go/qtls-go1-20 v0.3.3 // indirect
|
||||
github.com/quic-go/quic-go v0.38.1 // indirect
|
||||
github.com/quic-go/quic-go v0.38.2 // indirect
|
||||
github.com/quic-go/webtransport-go v0.5.3 // indirect
|
||||
github.com/rivo/uniseg v0.1.0 // indirect
|
||||
github.com/rs/cors v1.7.0 // indirect
|
||||
|
8
go.sum
8
go.sum
@ -984,8 +984,8 @@ github.com/libp2p/go-libp2p v0.7.0/go.mod h1:hZJf8txWeCduQRDC/WSqBGMxaTHCOYHt2xS
|
||||
github.com/libp2p/go-libp2p v0.7.4/go.mod h1:oXsBlTLF1q7pxr+9w6lqzS1ILpyHsaBPniVO7zIHGMw=
|
||||
github.com/libp2p/go-libp2p v0.8.1/go.mod h1:QRNH9pwdbEBpx5DTJYg+qxcVaDMAz3Ee/qDKwXujH5o=
|
||||
github.com/libp2p/go-libp2p v0.14.3/go.mod h1:d12V4PdKbpL0T1/gsUNN8DfgMuRPDX8bS2QxCZlwRH0=
|
||||
github.com/libp2p/go-libp2p v0.31.0 h1:LFShhP8F6xthWiBBq3euxbKjZsoRajVEyBS9snfHxYg=
|
||||
github.com/libp2p/go-libp2p v0.31.0/go.mod h1:W/FEK1c/t04PbRH3fA9i5oucu5YcgrG0JVoBWT1B7Eg=
|
||||
github.com/libp2p/go-libp2p v0.31.1 h1:mUiFPwdzC2zMLIATKVddjCuPXVbtC3BsKKVPMs4+jzY=
|
||||
github.com/libp2p/go-libp2p v0.31.1/go.mod h1:+9TCv+XySSOdaxPF1WIgTK8rXP9jBb8WbemlMCSXGsU=
|
||||
github.com/libp2p/go-libp2p-asn-util v0.3.0 h1:gMDcMyYiZKkocGXDQ5nsUQyquC9+H+iLEQHwOCZ7s8s=
|
||||
github.com/libp2p/go-libp2p-asn-util v0.3.0/go.mod h1:B1mcOrKUE35Xq/ASTmQ4tN3LNzVVaMNmq2NACuqyB9w=
|
||||
github.com/libp2p/go-libp2p-autonat v0.1.0/go.mod h1:1tLf2yXxiE/oKGtDwPYWTSYG3PtvYlJmg7NeVtPRqH8=
|
||||
@ -1475,8 +1475,8 @@ github.com/quic-go/qpack v0.4.0 h1:Cr9BXA1sQS2SmDUWjSofMPNKmvF6IiIfDRmgU0w1ZCo=
|
||||
github.com/quic-go/qpack v0.4.0/go.mod h1:UZVnYIfi5GRk+zI9UMaCPsmZ2xKJP7XBUvVyT1Knj9A=
|
||||
github.com/quic-go/qtls-go1-20 v0.3.3 h1:17/glZSLI9P9fDAeyCHBFSWSqJcwx1byhLwP5eUIDCM=
|
||||
github.com/quic-go/qtls-go1-20 v0.3.3/go.mod h1:X9Nh97ZL80Z+bX/gUXMbipO6OxdiDi58b/fMC9mAL+k=
|
||||
github.com/quic-go/quic-go v0.38.1 h1:M36YWA5dEhEeT+slOu/SwMEucbYd0YFidxG3KlGPZaE=
|
||||
github.com/quic-go/quic-go v0.38.1/go.mod h1:ijnZM7JsFIkp4cRyjxJNIzdSfCLmUMg9wdyhGmg+SN4=
|
||||
github.com/quic-go/quic-go v0.38.2 h1:VWv/6gxIoB8hROQJhx1JEyiegsUQ+zMN3em3kynTGdg=
|
||||
github.com/quic-go/quic-go v0.38.2/go.mod h1:ijnZM7JsFIkp4cRyjxJNIzdSfCLmUMg9wdyhGmg+SN4=
|
||||
github.com/quic-go/webtransport-go v0.5.3 h1:5XMlzemqB4qmOlgIus5zB45AcZ2kCgCy2EptUrfOPWU=
|
||||
github.com/quic-go/webtransport-go v0.5.3/go.mod h1:OhmmgJIzTTqXK5xvtuX0oBpLV2GkLWNDA+UeTGJXErU=
|
||||
github.com/raulk/clock v1.1.0 h1:dpb29+UKMbLqiU/jqIJptgLR1nn23HLgMY0sTCDza5Y=
|
||||
|
@ -7,6 +7,7 @@ import (
|
||||
"path/filepath"
|
||||
|
||||
logging "github.com/ipfs/go-log/v2"
|
||||
"github.com/mitchellh/go-homedir"
|
||||
"golang.org/x/xerrors"
|
||||
|
||||
"github.com/filecoin-project/lotus/build"
|
||||
@ -41,6 +42,11 @@ func OpenFSJournal(lr repo.LockedRepo, disabled journal.DisabledEvents) (journal
|
||||
}
|
||||
|
||||
func OpenFSJournalPath(path string, disabled journal.DisabledEvents) (journal.Journal, error) {
|
||||
path, err := homedir.Expand(path)
|
||||
if err != nil {
|
||||
return nil, xerrors.Errorf("failed to expand repo path: %w", err)
|
||||
}
|
||||
|
||||
dir := filepath.Join(path, "journal")
|
||||
if err := os.MkdirAll(dir, 0755); err != nil {
|
||||
return nil, fmt.Errorf("failed to mk directory %s for file journal: %w", dir, err)
|
||||
|
@ -22,6 +22,7 @@ import (
|
||||
"github.com/filecoin-project/lotus/api"
|
||||
"github.com/filecoin-project/lotus/build"
|
||||
"github.com/filecoin-project/lotus/chain/actors"
|
||||
"github.com/filecoin-project/lotus/chain/actors/builtin"
|
||||
"github.com/filecoin-project/lotus/chain/state"
|
||||
"github.com/filecoin-project/lotus/chain/store"
|
||||
"github.com/filecoin-project/lotus/chain/types"
|
||||
@ -524,9 +525,6 @@ func ethTxFromNativeMessage(msg *types.Message, st *state.StateTree) (ethtypes.E
|
||||
}
|
||||
to = revertedEthAddress
|
||||
}
|
||||
toPtr := &to
|
||||
|
||||
// Finally, convert the input parameters to "solidity ABI".
|
||||
|
||||
// For empty, we use "0" as the codec. Otherwise, we use CBOR for message
|
||||
// parameters.
|
||||
@ -535,31 +533,11 @@ func ethTxFromNativeMessage(msg *types.Message, st *state.StateTree) (ethtypes.E
|
||||
codec = uint64(multicodec.Cbor)
|
||||
}
|
||||
|
||||
// We try to decode the input as an EVM method invocation and/or a contract creation. If
|
||||
// that fails, we encode the "native" parameters as Solidity ABI.
|
||||
var input []byte
|
||||
switch msg.Method {
|
||||
case builtintypes.MethodsEVM.InvokeContract, builtintypes.MethodsEAM.CreateExternal:
|
||||
inp, err := decodePayload(msg.Params, codec)
|
||||
if err == nil {
|
||||
// If this is a valid "create external", unset the "to" address.
|
||||
if msg.Method == builtintypes.MethodsEAM.CreateExternal {
|
||||
toPtr = nil
|
||||
}
|
||||
input = []byte(inp)
|
||||
break
|
||||
}
|
||||
// Yeah, we're going to ignore errors here because the user can send whatever they
|
||||
// want and may send garbage.
|
||||
fallthrough
|
||||
default:
|
||||
input = encodeFilecoinParamsAsABI(msg.Method, codec, msg.Params)
|
||||
}
|
||||
|
||||
return ethtypes.EthTx{
|
||||
To: toPtr,
|
||||
// We decode as a native call first.
|
||||
ethTx := ethtypes.EthTx{
|
||||
To: &to,
|
||||
From: from,
|
||||
Input: input,
|
||||
Input: encodeFilecoinParamsAsABI(msg.Method, codec, msg.Params),
|
||||
Nonce: ethtypes.EthUint64(msg.Nonce),
|
||||
ChainID: ethtypes.EthUint64(build.Eip155ChainId),
|
||||
Value: ethtypes.EthBigInt(msg.Value),
|
||||
@ -568,7 +546,25 @@ func ethTxFromNativeMessage(msg *types.Message, st *state.StateTree) (ethtypes.E
|
||||
MaxFeePerGas: ethtypes.EthBigInt(msg.GasFeeCap),
|
||||
MaxPriorityFeePerGas: ethtypes.EthBigInt(msg.GasPremium),
|
||||
AccessList: []ethtypes.EthHash{},
|
||||
}, nil
|
||||
}
|
||||
|
||||
// Then we try to see if it's "special". If we fail, we ignore the error and keep treating
|
||||
// it as a native message. Unfortunately, the user is free to send garbage that may not
|
||||
// properly decode.
|
||||
if msg.Method == builtintypes.MethodsEVM.InvokeContract {
|
||||
// try to decode it as a contract invocation first.
|
||||
if inp, err := decodePayload(msg.Params, codec); err == nil {
|
||||
ethTx.Input = []byte(inp)
|
||||
}
|
||||
} else if msg.To == builtin.EthereumAddressManagerActorAddr && msg.Method == builtintypes.MethodsEAM.CreateExternal {
|
||||
// Then, try to decode it as a contract deployment from an EOA.
|
||||
if inp, err := decodePayload(msg.Params, codec); err == nil {
|
||||
ethTx.Input = []byte(inp)
|
||||
ethTx.To = nil
|
||||
}
|
||||
}
|
||||
|
||||
return ethTx, nil
|
||||
}
|
||||
|
||||
func getSignedMessage(ctx context.Context, cs *store.ChainStore, msgCid cid.Cid) (*types.SignedMessage, error) {
|
||||
|
@ -32,8 +32,8 @@ def generate_lotus_cli(prog):
|
||||
cmd_flag = False
|
||||
if cmd_flag is True and line[-1] != ':' and 'help, h' not in line:
|
||||
gap_pos = None
|
||||
sub_cmd = line
|
||||
if ' ' in line:
|
||||
sub_cmd = line.split(',')[0].strip() # only take the first sub-command before the comma
|
||||
if ' ' in sub_cmd:
|
||||
gap_pos = sub_cmd.index(' ')
|
||||
sub_cmd = cur_cmd + ' ' + sub_cmd[:gap_pos]
|
||||
get_cmd_recursively(sub_cmd)
|
||||
@ -55,3 +55,4 @@ if __name__ == "__main__":
|
||||
generate_lotus_cli('lotus')
|
||||
generate_lotus_cli('lotus-miner')
|
||||
generate_lotus_cli('lotus-worker')
|
||||
generate_lotus_cli('lotus-provider')
|
Loading…
Reference in New Issue
Block a user