From e32f44831bc69f024399f55e2d727df6e9401cae Mon Sep 17 00:00:00 2001 From: tomasarrachea Date: Fri, 4 Oct 2024 18:04:07 -0300 Subject: [PATCH 1/4] add initial signer test --- signerv2/signer_test.go | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) create mode 100644 signerv2/signer_test.go diff --git a/signerv2/signer_test.go b/signerv2/signer_test.go new file mode 100644 index 00000000..f6239dda --- /dev/null +++ b/signerv2/signer_test.go @@ -0,0 +1,20 @@ +package signerv2_test + +import ( + "math/big" + "testing" + + "github.com/Layr-Labs/eigensdk-go/signerv2" + "github.com/ethereum/go-ethereum/crypto" + "github.com/stretchr/testify/require" +) + +func TestPrivateKeySignerFn(t *testing.T) { + privateKeyHex := "ac0974bec39a17e36ba4a6b4d238ff944bacb478cbed5efcae784d7bf4f2ff80" + privateKey, err := crypto.HexToECDSA(privateKeyHex) + require.NoError(t, err) + chainID := big.NewInt(1) + + _, err = signerv2.PrivateKeySignerFn(privateKey, chainID) + require.NoError(t, err) +} From a923f5a10d76f21ca6387d2405fd8aa7ef440f74 Mon Sep 17 00:00:00 2001 From: tomasarrachea Date: Mon, 7 Oct 2024 12:16:44 -0300 Subject: [PATCH 2/4] private key signer test --- signerv2/signer_test.go | 19 ++++++++++++++++++- 1 file changed, 18 insertions(+), 1 deletion(-) diff --git a/signerv2/signer_test.go b/signerv2/signer_test.go index f6239dda..4c5b7b20 100644 --- a/signerv2/signer_test.go +++ b/signerv2/signer_test.go @@ -5,6 +5,8 @@ import ( "testing" "github.com/Layr-Labs/eigensdk-go/signerv2" + "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/core/types" "github.com/ethereum/go-ethereum/crypto" "github.com/stretchr/testify/require" ) @@ -15,6 +17,21 @@ func TestPrivateKeySignerFn(t *testing.T) { require.NoError(t, err) chainID := big.NewInt(1) - _, err = signerv2.PrivateKeySignerFn(privateKey, chainID) + signer, err := signerv2.PrivateKeySignerFn(privateKey, chainID) require.NoError(t, err) + + address := crypto.PubkeyToAddress(privateKey.PublicKey) + tx := types.NewTx(&types.DynamicFeeTx{ + Nonce: 0, + Value: big.NewInt(0), + ChainID: chainID, + Data: common.Hex2Bytes("6057361d00000000000000000000000000000000000000000000000000000000000f4240"), + }) + signedTx, err := signer(address, tx) + require.NoError(t, err) + + // Verify the sender address of the signed transaction + from, err := types.Sender(types.LatestSignerForChainID(chainID), signedTx) + require.NoError(t, err) + require.Equal(t, address, from) } From af922edb671813718744c840acc7b5d0955dc5b4 Mon Sep 17 00:00:00 2001 From: tomasarrachea Date: Mon, 7 Oct 2024 12:51:14 -0300 Subject: [PATCH 3/4] add keystore test --- signerv2/mockdata/dummy.key.json | 19 +++++++++++++++++++ signerv2/signer_test.go | 26 ++++++++++++++++++++++++++ 2 files changed, 45 insertions(+) create mode 100644 signerv2/mockdata/dummy.key.json diff --git a/signerv2/mockdata/dummy.key.json b/signerv2/mockdata/dummy.key.json new file mode 100644 index 00000000..7895ed91 --- /dev/null +++ b/signerv2/mockdata/dummy.key.json @@ -0,0 +1,19 @@ +{ + "crypto": { + "cipher": "aes-128-ctr", + "cipherparams": { + "iv": "6087dab2f9fdbbfaddc31a909735c1e6" + }, + "ciphertext": "5318b4d5bcd28de64ee5559e671353e16f075ecae9f99c7a79a38af5f869aa46", + "kdf": "pbkdf2", + "kdfparams": { + "c": 262144, + "dklen": 32, + "prf": "hmac-sha256", + "salt": "ae3cd4e7013836a3df6bd7241b12db061dbe2c6785853cce422d148a624ce0bd" + }, + "mac": "517ead924a9d0dc3124507e3393d175ce3ff7c1e96529c6c555ce9e51205e9b2" + }, + "id": "3198bc9c-6672-5ab3-d995-4942343ae5b6", + "version": 3 +} diff --git a/signerv2/signer_test.go b/signerv2/signer_test.go index 4c5b7b20..fbdd0607 100644 --- a/signerv2/signer_test.go +++ b/signerv2/signer_test.go @@ -35,3 +35,29 @@ func TestPrivateKeySignerFn(t *testing.T) { require.NoError(t, err) require.Equal(t, address, from) } + +func TestKeyStoreSignerFn(t *testing.T) { + keystorePath := "mockdata/dummy.key.json" + keystorePassword := "testpassword" + chainID := big.NewInt(1) + signer, err := signerv2.KeyStoreSignerFn(keystorePath, keystorePassword, chainID) + require.NoError(t, err) + + privateKey, err := crypto.HexToECDSA("7a28b5ba57c53603b0b07b56bba752f7784bf506fa95edc395f5cf6c7514fe9d") + require.NoError(t, err) + + address := crypto.PubkeyToAddress(privateKey.PublicKey) + tx := types.NewTx(&types.DynamicFeeTx{ + Nonce: 0, + Value: big.NewInt(0), + ChainID: chainID, + Data: common.Hex2Bytes("6057361d00000000000000000000000000000000000000000000000000000000000f4240"), + }) + signedTx, err := signer(address, tx) + require.NoError(t, err) + + // Verify the sender address of the signed transaction + from, err := types.Sender(types.LatestSignerForChainID(chainID), signedTx) + require.NoError(t, err) + require.Equal(t, address, from) +} From 1a52a31ff2b9be923086f37f4cda428a63ff1672 Mon Sep 17 00:00:00 2001 From: tomasarrachea Date: Mon, 7 Oct 2024 15:46:30 -0300 Subject: [PATCH 4/4] add web3 signer test --- signerv2/signer_test.go | 33 +++++++++++++++++++++++++++++++++ 1 file changed, 33 insertions(+) diff --git a/signerv2/signer_test.go b/signerv2/signer_test.go index fbdd0607..7b6f7cae 100644 --- a/signerv2/signer_test.go +++ b/signerv2/signer_test.go @@ -1,10 +1,12 @@ package signerv2_test import ( + "context" "math/big" "testing" "github.com/Layr-Labs/eigensdk-go/signerv2" + "github.com/Layr-Labs/eigensdk-go/testutils" "github.com/ethereum/go-ethereum/common" "github.com/ethereum/go-ethereum/core/types" "github.com/ethereum/go-ethereum/crypto" @@ -61,3 +63,34 @@ func TestKeyStoreSignerFn(t *testing.T) { require.NoError(t, err) require.Equal(t, address, from) } + +func TestWeb3SignerFn(t *testing.T) { + anvilC, err := testutils.StartAnvilContainer(testutils.GetDefaultTestConfig().AnvilStateFileName) + require.NoError(t, err) + + anvilHttpEndpoint, err := anvilC.Endpoint(context.Background(), "http") + require.NoError(t, err) + + signer, err := signerv2.Web3SignerFn(anvilHttpEndpoint) + require.NoError(t, err) + + privateKey, err := crypto.HexToECDSA("ac0974bec39a17e36ba4a6b4d238ff944bacb478cbed5efcae784d7bf4f2ff80") + require.NoError(t, err) + anvilChainID := big.NewInt(31337) + address := crypto.PubkeyToAddress(privateKey.PublicKey) + tx := types.NewTx(&types.DynamicFeeTx{ + Nonce: 0, + Value: big.NewInt(0), + To: &address, + ChainID: anvilChainID, + Data: common.Hex2Bytes("6057361d00000000000000000000000000000000000000000000000000000000000f4240"), + }) + + signedTx, err := signer(address, tx) + require.NoError(t, err) + + // Verify the sender address of the signed transaction + from, err := types.Sender(types.LatestSignerForChainID(anvilChainID), signedTx) + require.NoError(t, err) + require.Equal(t, address, from) +}