Expand EthAccount abstraction test

This commit is contained in:
Aayush 2022-12-15 16:38:48 -05:00
parent 160bcd64a6
commit 54cb97af3f
3 changed files with 32 additions and 22 deletions
chain/messagepool
itests
lib/sigs/delegated

View File

@ -155,7 +155,7 @@ func (tma *testMpoolAPI) GetActorAfter(addr address.Address, ts *types.TipSet) (
}
return &types.Actor{
Code: builtin2.StorageMarketActorCodeID,
Code: builtin2.AccountActorCodeID,
Nonce: nonce,
Balance: balance,
}, nil

View File

@ -2,19 +2,20 @@ package itests
import (
"context"
"fmt"
"testing"
"time"
"github.com/stretchr/testify/require"
"github.com/filecoin-project/go-address"
"github.com/filecoin-project/go-state-types/abi"
"github.com/filecoin-project/go-state-types/crypto"
"github.com/filecoin-project/go-state-types/exitcode"
"github.com/filecoin-project/lotus/api"
"github.com/filecoin-project/lotus/chain/actors/builtin"
"github.com/filecoin-project/lotus/chain/eth"
"github.com/filecoin-project/lotus/chain/types"
"github.com/filecoin-project/lotus/chain/wallet/key"
"github.com/filecoin-project/lotus/itests/kit"
)
@ -31,9 +32,14 @@ func TestEthAccountAbstraction(t *testing.T) {
ctx, cancel := context.WithTimeout(context.Background(), time.Minute)
defer cancel()
embryoAddress, err := address.NewFromString("t410fhreuqiy6apawwjpysfdqo2typwbb3ssfqfapmca")
secpKey, err := key.GenerateKey(types.KTDelegated)
require.NoError(t, err)
embryoAddress, err := client.WalletImport(ctx, &secpKey.KeyInfo)
require.NoError(t, err)
fmt.Println(embryoAddress)
// create an embryo actor at the target address
msgCreateEmbryo := &types.Message{
From: client.DefaultKey.Address,
@ -61,17 +67,19 @@ func TestEthAccountAbstraction(t *testing.T) {
msgFromEmbryo, err = client.GasEstimateMessageGas(ctx, msgFromEmbryo, nil, types.EmptyTSK)
require.NoError(t, err)
smFromEmbryo := &types.SignedMessage{
Message: *msgFromEmbryo,
Signature: crypto.Signature{Type: crypto.SigTypeDelegated},
}
// TODO: Unhack delegated verification to always be true
_, err = client.MpoolPush(ctx, smFromEmbryo)
txArgs, err := eth.NewEthTxArgsFromMessage(msgFromEmbryo)
require.NoError(t, err)
mLookup, err = client.StateWaitMsg(ctx, smFromEmbryo.Cid(), 3, api.LookbackNoLimit, true)
digest, err := txArgs.OriginalRlpMsg()
require.NoError(t, err)
siggy, err := client.WalletSign(ctx, embryoAddress, digest)
require.NoError(t, err)
smFromEmbryoCid, err := client.MpoolPush(ctx, &types.SignedMessage{Message: *msgFromEmbryo, Signature: *siggy})
require.NoError(t, err)
mLookup, err = client.StateWaitMsg(ctx, smFromEmbryoCid, 3, api.LookbackNoLimit, true)
require.NoError(t, err)
require.Equal(t, exitcode.Ok, mLookup.Receipt.ExitCode)
@ -93,15 +101,19 @@ func TestEthAccountAbstraction(t *testing.T) {
msgFromEmbryo, err = client.GasEstimateMessageGas(ctx, msgFromEmbryo, nil, types.EmptyTSK)
require.NoError(t, err)
smFromEmbryo = &types.SignedMessage{
Message: *msgFromEmbryo,
Signature: crypto.Signature{Type: crypto.SigTypeDelegated},
}
_, err = client.MpoolPush(ctx, smFromEmbryo)
txArgs, err = eth.NewEthTxArgsFromMessage(msgFromEmbryo)
require.NoError(t, err)
mLookup, err = client.StateWaitMsg(ctx, smFromEmbryo.Cid(), 3, api.LookbackNoLimit, true)
digest, err = txArgs.OriginalRlpMsg()
require.NoError(t, err)
siggy, err = client.WalletSign(ctx, embryoAddress, digest)
require.NoError(t, err)
smFromEmbryoCid, err = client.MpoolPush(ctx, &types.SignedMessage{Message: *msgFromEmbryo, Signature: *siggy})
require.NoError(t, err)
mLookup, err = client.StateWaitMsg(ctx, smFromEmbryoCid, 3, api.LookbackNoLimit, true)
require.NoError(t, err)
require.Equal(t, exitcode.Ok, mLookup.Receipt.ExitCode)

View File

@ -40,8 +40,6 @@ func (s delegatedSigner) Sign(pk []byte, msg []byte) ([]byte, error) {
}
func (delegatedSigner) Verify(sig []byte, a address.Address, msg []byte) error {
// TODO: Drop this!
return nil
hasher := sha3.NewLegacyKeccak256()
hasher.Write(msg)
hash := hasher.Sum(nil)