fix: evm: use CREATE not CREATE2 for EVM contract deployment (#9553)

Also updates the actors to accommodate this change, and fix a bug in
looking up addresses for f4 actors.
This commit is contained in:
Steven Allen
2022-11-09 19:47:23 +02:00
committed by vyzo
parent dc5fc9ded4
commit 6337d594fa
3 changed files with 18 additions and 32 deletions
+5 -10
View File
@@ -4,7 +4,6 @@ import (
"bytes"
"context"
"encoding/base64"
"encoding/binary"
"encoding/hex"
"encoding/json"
"fmt"
@@ -1673,14 +1672,9 @@ var ChainExecEVMCmd = &cli.Command{
nonce = 0 // assume a zero nonce on error (e.g. sender doesn't exist).
}
var salt [32]byte
binary.BigEndian.PutUint64(salt[:], nonce)
// TODO this probably needs to be Create instead of Create2, but Create
// is not callable by any caller
params, err := actors.SerializeParams(&eam.Create2Params{
params, err := actors.SerializeParams(&eam.CreateParams{
Initcode: contract,
Salt: salt,
Nonce: nonce,
})
if err != nil {
return fmt.Errorf("failed to serialize Create2 params: %w", err)
@@ -1690,10 +1684,11 @@ var ChainExecEVMCmd = &cli.Command{
To: builtintypes.EthereumAddressManagerActorAddr,
From: fromAddr,
Value: big.Zero(),
Method: builtintypes.MethodsEAM.Create2,
Method: builtintypes.MethodsEAM.Create,
Params: params,
}
// TODO: this is very racy. It may assign a _different_ nonce than the expected one.
afmt.Println("sending message...")
smsg, err := api.MpoolPushMessage(ctx, msg, nil)
if err != nil {
@@ -1711,7 +1706,7 @@ var ChainExecEVMCmd = &cli.Command{
return xerrors.Errorf("actor execution failed")
}
var result eam.Create2Return
var result eam.CreateReturn
r := bytes.NewReader(wait.Receipt.Return)
if err := result.UnmarshalCBOR(r); err != nil {
return xerrors.Errorf("error unmarshaling return value: %w", err)