Expand EthAccount abstraction test
This commit is contained in:
parent
160bcd64a6
commit
54cb97af3f
@ -155,7 +155,7 @@ func (tma *testMpoolAPI) GetActorAfter(addr address.Address, ts *types.TipSet) (
|
|||||||
}
|
}
|
||||||
|
|
||||||
return &types.Actor{
|
return &types.Actor{
|
||||||
Code: builtin2.StorageMarketActorCodeID,
|
Code: builtin2.AccountActorCodeID,
|
||||||
Nonce: nonce,
|
Nonce: nonce,
|
||||||
Balance: balance,
|
Balance: balance,
|
||||||
}, nil
|
}, nil
|
||||||
|
@ -2,19 +2,20 @@ package itests
|
|||||||
|
|
||||||
import (
|
import (
|
||||||
"context"
|
"context"
|
||||||
|
"fmt"
|
||||||
"testing"
|
"testing"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
"github.com/stretchr/testify/require"
|
"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/abi"
|
||||||
"github.com/filecoin-project/go-state-types/crypto"
|
|
||||||
"github.com/filecoin-project/go-state-types/exitcode"
|
"github.com/filecoin-project/go-state-types/exitcode"
|
||||||
|
|
||||||
"github.com/filecoin-project/lotus/api"
|
"github.com/filecoin-project/lotus/api"
|
||||||
"github.com/filecoin-project/lotus/chain/actors/builtin"
|
"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/types"
|
||||||
|
"github.com/filecoin-project/lotus/chain/wallet/key"
|
||||||
"github.com/filecoin-project/lotus/itests/kit"
|
"github.com/filecoin-project/lotus/itests/kit"
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -31,9 +32,14 @@ func TestEthAccountAbstraction(t *testing.T) {
|
|||||||
ctx, cancel := context.WithTimeout(context.Background(), time.Minute)
|
ctx, cancel := context.WithTimeout(context.Background(), time.Minute)
|
||||||
defer cancel()
|
defer cancel()
|
||||||
|
|
||||||
embryoAddress, err := address.NewFromString("t410fhreuqiy6apawwjpysfdqo2typwbb3ssfqfapmca")
|
secpKey, err := key.GenerateKey(types.KTDelegated)
|
||||||
require.NoError(t, err)
|
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
|
// create an embryo actor at the target address
|
||||||
msgCreateEmbryo := &types.Message{
|
msgCreateEmbryo := &types.Message{
|
||||||
From: client.DefaultKey.Address,
|
From: client.DefaultKey.Address,
|
||||||
@ -61,17 +67,19 @@ func TestEthAccountAbstraction(t *testing.T) {
|
|||||||
msgFromEmbryo, err = client.GasEstimateMessageGas(ctx, msgFromEmbryo, nil, types.EmptyTSK)
|
msgFromEmbryo, err = client.GasEstimateMessageGas(ctx, msgFromEmbryo, nil, types.EmptyTSK)
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
|
|
||||||
smFromEmbryo := &types.SignedMessage{
|
txArgs, err := eth.NewEthTxArgsFromMessage(msgFromEmbryo)
|
||||||
Message: *msgFromEmbryo,
|
|
||||||
Signature: crypto.Signature{Type: crypto.SigTypeDelegated},
|
|
||||||
}
|
|
||||||
|
|
||||||
// TODO: Unhack delegated verification to always be true
|
|
||||||
|
|
||||||
_, err = client.MpoolPush(ctx, smFromEmbryo)
|
|
||||||
require.NoError(t, err)
|
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.NoError(t, err)
|
||||||
require.Equal(t, exitcode.Ok, mLookup.Receipt.ExitCode)
|
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)
|
msgFromEmbryo, err = client.GasEstimateMessageGas(ctx, msgFromEmbryo, nil, types.EmptyTSK)
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
|
|
||||||
smFromEmbryo = &types.SignedMessage{
|
txArgs, err = eth.NewEthTxArgsFromMessage(msgFromEmbryo)
|
||||||
Message: *msgFromEmbryo,
|
|
||||||
Signature: crypto.Signature{Type: crypto.SigTypeDelegated},
|
|
||||||
}
|
|
||||||
|
|
||||||
_, err = client.MpoolPush(ctx, smFromEmbryo)
|
|
||||||
require.NoError(t, err)
|
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.NoError(t, err)
|
||||||
require.Equal(t, exitcode.Ok, mLookup.Receipt.ExitCode)
|
require.Equal(t, exitcode.Ok, mLookup.Receipt.ExitCode)
|
||||||
|
|
||||||
|
@ -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 {
|
func (delegatedSigner) Verify(sig []byte, a address.Address, msg []byte) error {
|
||||||
// TODO: Drop this!
|
|
||||||
return nil
|
|
||||||
hasher := sha3.NewLegacyKeccak256()
|
hasher := sha3.NewLegacyKeccak256()
|
||||||
hasher.Write(msg)
|
hasher.Write(msg)
|
||||||
hash := hasher.Sum(nil)
|
hash := hasher.Sum(nil)
|
||||||
|
Loading…
Reference in New Issue
Block a user