2d57bfe273
* Use local GST Use local GST * Import actors and define upgrade heights Creatin a mock actor-bundle and define upgrade heights * Generate adapters Updates gen/inlinegen-data.json, and runs make actors-gen * Add schedule and migration Add schedule and migration * Add upgrade and network version fields/params Add upgrade and network version fields/params * Run make gen / make docsgen-cli Run make gen / make docsgen-cli * Update filecoin-ffi Update filecoin-ffi to the v1.28.0-dev tag, which supports the nv23 skeleton. * Update GST to v0.14.0-dev Update GST to v0.14.0-dev, which includes the nv23 skeleton * Add support for actor version 14 in actor registry Add support for actor version 14 in actor registry
78 lines
2.1 KiB
Go
Generated
78 lines
2.1 KiB
Go
Generated
package multisig
|
|
|
|
import (
|
|
"golang.org/x/xerrors"
|
|
|
|
"github.com/filecoin-project/go-address"
|
|
"github.com/filecoin-project/go-state-types/abi"
|
|
actorstypes "github.com/filecoin-project/go-state-types/actors"
|
|
builtintypes "github.com/filecoin-project/go-state-types/builtin"
|
|
init14 "github.com/filecoin-project/go-state-types/builtin/v14/init"
|
|
multisig8 "github.com/filecoin-project/go-state-types/builtin/v8/multisig"
|
|
"github.com/filecoin-project/go-state-types/manifest"
|
|
|
|
"github.com/filecoin-project/lotus/chain/actors"
|
|
init_ "github.com/filecoin-project/lotus/chain/actors/builtin/init"
|
|
"github.com/filecoin-project/lotus/chain/types"
|
|
)
|
|
|
|
type message8 struct{ message0 }
|
|
|
|
func (m message8) Create(
|
|
signers []address.Address, threshold uint64,
|
|
unlockStart, unlockDuration abi.ChainEpoch,
|
|
initialAmount abi.TokenAmount,
|
|
) (*types.Message, error) {
|
|
|
|
lenAddrs := uint64(len(signers))
|
|
|
|
if lenAddrs < threshold {
|
|
return nil, xerrors.Errorf("cannot require signing of more addresses than provided for multisig")
|
|
}
|
|
|
|
if threshold == 0 {
|
|
threshold = lenAddrs
|
|
}
|
|
|
|
if m.from == address.Undef {
|
|
return nil, xerrors.Errorf("must provide source address")
|
|
}
|
|
|
|
// Set up constructor parameters for multisig
|
|
msigParams := &multisig8.ConstructorParams{
|
|
Signers: signers,
|
|
NumApprovalsThreshold: threshold,
|
|
UnlockDuration: unlockDuration,
|
|
StartEpoch: unlockStart,
|
|
}
|
|
|
|
enc, actErr := actors.SerializeParams(msigParams)
|
|
if actErr != nil {
|
|
return nil, actErr
|
|
}
|
|
|
|
code, ok := actors.GetActorCodeID(actorstypes.Version8, manifest.MultisigKey)
|
|
if !ok {
|
|
return nil, xerrors.Errorf("failed to get multisig code ID")
|
|
}
|
|
|
|
// new actors are created by invoking 'exec' on the init actor with the constructor params
|
|
execParams := &init14.ExecParams{
|
|
CodeCID: code,
|
|
ConstructorParams: enc,
|
|
}
|
|
|
|
enc, actErr = actors.SerializeParams(execParams)
|
|
if actErr != nil {
|
|
return nil, actErr
|
|
}
|
|
|
|
return &types.Message{
|
|
To: init_.Address,
|
|
From: m.from,
|
|
Method: builtintypes.MethodsInit.Exec,
|
|
Params: enc,
|
|
Value: initialAmount,
|
|
}, nil
|
|
}
|