update embryo to placehodler

This commit is contained in:
Jennifer Wang 2023-01-09 22:23:55 -05:00
parent 72c04caae9
commit cb49edf29d
12 changed files with 56 additions and 56 deletions

View File

@ -274,10 +274,10 @@ func IsPaymentChannelActor(c cid.Cid) bool {
return false
}
func IsEmbryoActor(c cid.Cid) bool {
func IsPlaceholderActor(c cid.Cid) bool {
name, _, ok := actors.GetActorMetaByCode(c)
if ok {
return name == manifest.EmbryoKey
return name == manifest.PlaceholderKey
}
return false

View File

@ -153,10 +153,10 @@ func IsPaymentChannelActor(c cid.Cid) bool {
return false
}
func IsEmbryoActor(c cid.Cid) bool {
func IsPlaceholderActor(c cid.Cid) bool {
name, _, ok := actors.GetActorMetaByCode(c)
if ok {
return name == manifest.EmbryoKey
return name == manifest.PlaceholderKey
}
return false

View File

@ -14,7 +14,6 @@ import (
cron10 "github.com/filecoin-project/go-state-types/builtin/v10/cron"
datacap10 "github.com/filecoin-project/go-state-types/builtin/v10/datacap"
eam10 "github.com/filecoin-project/go-state-types/builtin/v10/eam"
embryo10 "github.com/filecoin-project/go-state-types/builtin/v10/embryo"
ethaccount10 "github.com/filecoin-project/go-state-types/builtin/v10/ethaccount"
evm10 "github.com/filecoin-project/go-state-types/builtin/v10/evm"
_init10 "github.com/filecoin-project/go-state-types/builtin/v10/init"
@ -22,6 +21,7 @@ import (
miner10 "github.com/filecoin-project/go-state-types/builtin/v10/miner"
multisig10 "github.com/filecoin-project/go-state-types/builtin/v10/multisig"
paych10 "github.com/filecoin-project/go-state-types/builtin/v10/paych"
placeholder10 "github.com/filecoin-project/go-state-types/builtin/v10/placeholder"
power10 "github.com/filecoin-project/go-state-types/builtin/v10/power"
reward10 "github.com/filecoin-project/go-state-types/builtin/v10/reward"
system10 "github.com/filecoin-project/go-state-types/builtin/v10/system"
@ -361,10 +361,10 @@ func MakeRegistry(av actorstypes.Version) []RegistryEntry {
methods: eam10.Methods,
state: nil,
})
case manifest.EmbryoKey:
case manifest.PlaceholderKey:
registry = append(registry, RegistryEntry{
code: codeID,
methods: embryo10.Methods,
methods: placeholder10.Methods,
state: nil,
})
case manifest.EthAccountKey:

View File

@ -28,7 +28,7 @@ import (
{{if (ge . 10)}}
evm{{.}} "github.com/filecoin-project/go-state-types/builtin/v{{.}}/evm"
eam{{.}} "github.com/filecoin-project/go-state-types/builtin/v{{.}}/eam"
embryo{{.}} "github.com/filecoin-project/go-state-types/builtin/v{{.}}/embryo"
placeholder{{.}} "github.com/filecoin-project/go-state-types/builtin/v{{.}}/placeholder"
ethaccount{{.}} "github.com/filecoin-project/go-state-types/builtin/v{{.}}/ethaccount"
{{end}}
{{end}}
@ -193,10 +193,10 @@ func MakeRegistry(av actorstypes.Version) []RegistryEntry {
methods: eam{{.}}.Methods,
state: nil,
})
case manifest.EmbryoKey:
case manifest.PlaceholderKey:
registry = append(registry, RegistryEntry{
code: codeID,
methods: embryo{{.}}.Methods,
methods: placeholder{{.}}.Methods,
state: nil,
})
case manifest.EthAccountKey:

View File

@ -441,7 +441,7 @@ func IsValidForSending(act *types.Actor) bool {
return true
}
if !builtin.IsEmbryoActor(act.Code) || act.Nonce != 0 || act.Address == nil || act.Address.Protocol() != address.Delegated {
if !builtin.IsPlaceholderActor(act.Code) || act.Nonce != 0 || act.Address == nil || act.Address.Protocol() != address.Delegated {
return false
}

2
go.mod
View File

@ -44,7 +44,7 @@ require (
github.com/filecoin-project/go-legs v0.4.4
github.com/filecoin-project/go-padreader v0.0.1
github.com/filecoin-project/go-paramfetch v0.0.4
github.com/filecoin-project/go-state-types v0.10.0-alpha-8
github.com/filecoin-project/go-state-types v0.10.0-alpha-8.0.20230110024009-3a880f1517d4
github.com/filecoin-project/go-statemachine v1.0.2
github.com/filecoin-project/go-statestore v0.2.0
github.com/filecoin-project/go-storedcounter v0.1.0

4
go.sum
View File

@ -356,8 +356,8 @@ github.com/filecoin-project/go-state-types v0.1.0/go.mod h1:ezYnPf0bNkTsDibL/psS
github.com/filecoin-project/go-state-types v0.1.6/go.mod h1:UwGVoMsULoCK+bWjEdd/xLCvLAQFBC7EDT477SKml+Q=
github.com/filecoin-project/go-state-types v0.1.8/go.mod h1:UwGVoMsULoCK+bWjEdd/xLCvLAQFBC7EDT477SKml+Q=
github.com/filecoin-project/go-state-types v0.1.10/go.mod h1:UwGVoMsULoCK+bWjEdd/xLCvLAQFBC7EDT477SKml+Q=
github.com/filecoin-project/go-state-types v0.10.0-alpha-8 h1:BPUEnjs4eBjhX+WCeG/Mfpoc7umYVgXENur73PJ1cNc=
github.com/filecoin-project/go-state-types v0.10.0-alpha-8/go.mod h1:FPgQE05BFwZxKw/vCuIaIrzfJKo4RPQQMMPGd43dAFI=
github.com/filecoin-project/go-state-types v0.10.0-alpha-8.0.20230110024009-3a880f1517d4 h1:gn2wOJfq2Sij0sx4I5CNkTbBxCFa8At+PqOse+7IRzA=
github.com/filecoin-project/go-state-types v0.10.0-alpha-8.0.20230110024009-3a880f1517d4/go.mod h1:FPgQE05BFwZxKw/vCuIaIrzfJKo4RPQQMMPGd43dAFI=
github.com/filecoin-project/go-statemachine v0.0.0-20200925024713-05bd7c71fbfe/go.mod h1:FGwQgZAt2Gh5mjlwJUlVB62JeYdo+if0xWxSEfBD9ig=
github.com/filecoin-project/go-statemachine v1.0.2 h1:421SSWBk8GIoCoWYYTE/d+qCWccgmRH0uXotXRDjUbc=
github.com/filecoin-project/go-statemachine v1.0.2/go.mod h1:jZdXXiHa61n4NmgWFG4w8tnqgvZVHYbJ3yW7+y8bF54=

View File

@ -20,8 +20,8 @@ import (
)
// TestEthAccountAbstraction goes over the account abstraction workflow:
// - an embryo is created when it receives a message
// - the embryo turns into an EOA when it sends a message
// - an placeholder is created when it receives a message
// - the placeholder turns into an EOA when it sends a message
func TestEthAccountAbstraction(t *testing.T) {
kit.QuietMiningLogs()
@ -35,97 +35,97 @@ func TestEthAccountAbstraction(t *testing.T) {
secpKey, err := key.GenerateKey(types.KTDelegated)
require.NoError(t, err)
embryoAddress, err := client.WalletImport(ctx, &secpKey.KeyInfo)
placeholderAddress, err := client.WalletImport(ctx, &secpKey.KeyInfo)
require.NoError(t, err)
fmt.Println(embryoAddress)
fmt.Println(placeholderAddress)
// create an embryo actor at the target address
msgCreateEmbryo := &types.Message{
// create an placeholder actor at the target address
msgCreatePlaceholder := &types.Message{
From: client.DefaultKey.Address,
To: embryoAddress,
To: placeholderAddress,
Value: abi.TokenAmount(types.MustParseFIL("100")),
}
smCreateEmbryo, err := client.MpoolPushMessage(ctx, msgCreateEmbryo, nil)
smCreatePlaceholder, err := client.MpoolPushMessage(ctx, msgCreatePlaceholder, nil)
require.NoError(t, err)
mLookup, err := client.StateWaitMsg(ctx, smCreateEmbryo.Cid(), 3, api.LookbackNoLimit, true)
mLookup, err := client.StateWaitMsg(ctx, smCreatePlaceholder.Cid(), 3, api.LookbackNoLimit, true)
require.NoError(t, err)
require.Equal(t, exitcode.Ok, mLookup.Receipt.ExitCode)
// confirm the embryo is an embryo
embryoActor, err := client.StateGetActor(ctx, embryoAddress, types.EmptyTSK)
// confirm the placeholder is an placeholder
placeholderActor, err := client.StateGetActor(ctx, placeholderAddress, types.EmptyTSK)
require.NoError(t, err)
require.Equal(t, uint64(0), embryoActor.Nonce)
require.True(t, builtin.IsEmbryoActor(embryoActor.Code))
require.Equal(t, uint64(0), placeholderActor.Nonce)
require.True(t, builtin.IsPlaceholderActor(placeholderActor.Code))
// send a message from the embryo address
msgFromEmbryo := &types.Message{
From: embryoAddress,
// send a message from the placeholder address
msgFromPlaceholder := &types.Message{
From: placeholderAddress,
// self-send because an "eth tx payload" can't be to a filecoin address?
To: embryoAddress,
To: placeholderAddress,
}
msgFromEmbryo, err = client.GasEstimateMessageGas(ctx, msgFromEmbryo, nil, types.EmptyTSK)
msgFromPlaceholder, err = client.GasEstimateMessageGas(ctx, msgFromPlaceholder, nil, types.EmptyTSK)
require.NoError(t, err)
txArgs, err := ethtypes.NewEthTxArgsFromMessage(msgFromEmbryo)
txArgs, err := ethtypes.NewEthTxArgsFromMessage(msgFromPlaceholder)
require.NoError(t, err)
digest, err := txArgs.ToRlpUnsignedMsg()
require.NoError(t, err)
siggy, err := client.WalletSign(ctx, embryoAddress, digest)
siggy, err := client.WalletSign(ctx, placeholderAddress, digest)
require.NoError(t, err)
smFromEmbryoCid, err := client.MpoolPush(ctx, &types.SignedMessage{Message: *msgFromEmbryo, Signature: *siggy})
smFromPlaceholderCid, err := client.MpoolPush(ctx, &types.SignedMessage{Message: *msgFromPlaceholder, Signature: *siggy})
require.NoError(t, err)
mLookup, err = client.StateWaitMsg(ctx, smFromEmbryoCid, 3, api.LookbackNoLimit, true)
mLookup, err = client.StateWaitMsg(ctx, smFromPlaceholderCid, 3, api.LookbackNoLimit, true)
require.NoError(t, err)
require.Equal(t, exitcode.Ok, mLookup.Receipt.ExitCode)
// confirm ugly Embryo duckling has turned into a beautiful EthAccount swan
// confirm ugly Placeholder duckling has turned into a beautiful EthAccount swan
eoaActor, err := client.StateGetActor(ctx, embryoAddress, types.EmptyTSK)
eoaActor, err := client.StateGetActor(ctx, placeholderAddress, types.EmptyTSK)
require.NoError(t, err)
require.False(t, builtin.IsEmbryoActor(eoaActor.Code))
require.False(t, builtin.IsPlaceholderActor(eoaActor.Code))
require.True(t, builtin.IsEthAccountActor(eoaActor.Code))
require.Equal(t, uint64(1), eoaActor.Nonce)
// Send another message, it should succeed without any code CID changes
msgFromEmbryo = &types.Message{
From: embryoAddress,
To: embryoAddress,
msgFromPlaceholder = &types.Message{
From: placeholderAddress,
To: placeholderAddress,
Nonce: 1,
}
msgFromEmbryo, err = client.GasEstimateMessageGas(ctx, msgFromEmbryo, nil, types.EmptyTSK)
msgFromPlaceholder, err = client.GasEstimateMessageGas(ctx, msgFromPlaceholder, nil, types.EmptyTSK)
require.NoError(t, err)
txArgs, err = ethtypes.NewEthTxArgsFromMessage(msgFromEmbryo)
txArgs, err = ethtypes.NewEthTxArgsFromMessage(msgFromPlaceholder)
require.NoError(t, err)
digest, err = txArgs.ToRlpUnsignedMsg()
require.NoError(t, err)
siggy, err = client.WalletSign(ctx, embryoAddress, digest)
siggy, err = client.WalletSign(ctx, placeholderAddress, digest)
require.NoError(t, err)
smFromEmbryoCid, err = client.MpoolPush(ctx, &types.SignedMessage{Message: *msgFromEmbryo, Signature: *siggy})
smFromPlaceholderCid, err = client.MpoolPush(ctx, &types.SignedMessage{Message: *msgFromPlaceholder, Signature: *siggy})
require.NoError(t, err)
mLookup, err = client.StateWaitMsg(ctx, smFromEmbryoCid, 3, api.LookbackNoLimit, true)
mLookup, err = client.StateWaitMsg(ctx, smFromPlaceholderCid, 3, api.LookbackNoLimit, true)
require.NoError(t, err)
require.Equal(t, exitcode.Ok, mLookup.Receipt.ExitCode)
// confirm no changes in code CID
eoaActor, err = client.StateGetActor(ctx, embryoAddress, types.EmptyTSK)
eoaActor, err = client.StateGetActor(ctx, placeholderAddress, types.EmptyTSK)
require.NoError(t, err)
require.Equal(t, uint64(2), eoaActor.Nonce)
require.False(t, builtin.IsEmbryoActor(eoaActor.Code))
require.False(t, builtin.IsPlaceholderActor(eoaActor.Code))
require.True(t, builtin.IsEthAccountActor(eoaActor.Code))
}

View File

@ -62,8 +62,8 @@ func TestDeployment(t *testing.T) {
bal := client.EVM().AssertAddressBalanceConsistent(ctx, deployer)
require.Equal(t, types.FromFil(10), bal)
// verify the deployer address is an embryo.
client.AssertActorType(ctx, deployer, manifest.EmbryoKey)
// verify the deployer address is an Placeholder.
client.AssertActorType(ctx, deployer, manifest.PlaceholderKey)
gaslimit, err := client.EthEstimateGas(ctx, ethtypes.EthCall{
From: &ethAddr,
@ -74,7 +74,7 @@ func TestDeployment(t *testing.T) {
maxPriorityFeePerGas, err := client.EthMaxPriorityFeePerGas(ctx)
require.NoError(t, err)
// now deploy a contract from the embryo, and validate it went well
// now deploy a contract from the placeholder, and validate it went well
tx := ethtypes.EthTxArgs{
ChainID: build.Eip155ChainId,
Value: big.Zero(),

View File

@ -76,10 +76,10 @@ func TestAddressCreationBeforeDeploy(t *testing.T) {
require.NoError(t, err)
require.Equal(t, exitcode.Ok, mLookup.Receipt.ExitCode)
// Check if actor at new address is an embryo actor
// Check if actor at new address is an placeholder actor
actor, err := client.StateGetActor(ctx, contractFilAddr, types.EmptyTSK)
require.NoError(t, err)
require.True(t, builtin.IsEmbryoActor(actor.Code))
require.True(t, builtin.IsPlaceholderActor(actor.Code))
// Create and deploy evm actor

View File

@ -15,7 +15,7 @@ import (
// AssertActorType verifies that the supplied address is an actor of the
// specified type (as per its manifest key).
func (f *TestFullNode) AssertActorType(ctx context.Context, addr address.Address, actorType string) {
// validate that an embryo was created
// validate that an placeholder was created
act, err := f.StateGetActor(ctx, addr, types.EmptyTSK)
require.NoError(f.t, err)

View File

@ -636,7 +636,7 @@ func (a *EthModule) EthSendRawTransaction(ctx context.Context, rawTx ethtypes.Et
_, err = a.StateAPI.StateGetActor(ctx, smsg.Message.To, types.EmptyTSK)
if err != nil {
// if actor does not exist on chain yet, set the method to 0 because
// embryos only implement method 0
// placeholders only implement method 0
smsg.Message.Method = builtinactors.MethodSend
}