Skip to content

Commit

Permalink
Rename signed payload key
Browse files Browse the repository at this point in the history
  • Loading branch information
alisinabh committed Dec 18, 2024
1 parent 401c84f commit 058d592
Show file tree
Hide file tree
Showing 5 changed files with 33 additions and 35 deletions.
2 changes: 1 addition & 1 deletion lib/ethers/signer/local.ex
Original file line number Diff line number Diff line change
Expand Up @@ -38,7 +38,7 @@ defmodule Ethers.Signer.Local do
{:ok, {r, s, recovery_id}} <- secp256k1_module().sign(sign_hash, private_key) do
signed_transaction =
%Signed{
transaction: transaction,
payload: transaction,
signature_r: r,
signature_s: s,
signature_y_parity_or_v: Signed.calculate_y_parity_or_v(transaction, recovery_id)
Expand Down
2 changes: 1 addition & 1 deletion lib/ethers/transaction.ex
Original file line number Diff line number Diff line change
Expand Up @@ -86,7 +86,7 @@ defmodule Ethers.Transaction do
case Map.fetch(params, :signature_r) do
{:ok, sig_r} when not is_nil(sig_r) ->
params
|> Map.put(:transaction, transaction)
|> Map.put(:payload, transaction)
|> Signed.new()

:error ->
Expand Down
28 changes: 13 additions & 15 deletions lib/ethers/transaction/signed.ex
Original file line number Diff line number Diff line change
Expand Up @@ -6,9 +6,9 @@ defmodule Ethers.Transaction.Signed do
alias Ethers.Transaction
alias Ethers.Transaction.Legacy

@enforce_keys [:transaction, :signature_r, :signature_s, :signature_y_parity_or_v]
@enforce_keys [:payload, :signature_r, :signature_s, :signature_y_parity_or_v]
defstruct [
:transaction,
:payload,
:signature_r,
:signature_s,
:signature_y_parity_or_v
Expand All @@ -31,7 +31,7 @@ defmodule Ethers.Transaction.Signed do
- [EIP-2930](https://eips.ethereum.org/EIPS/eip-2930): Optional access lists
"""
@type t :: %__MODULE__{
transaction: Transaction.t_payload(),
payload: Transaction.t_payload(),
signature_r: binary(),
signature_s: binary(),
signature_y_parity_or_v: non_neg_integer()
Expand All @@ -44,20 +44,20 @@ defmodule Ethers.Transaction.Signed do
def new(params) do
{:ok,
%__MODULE__{
transaction: params.transaction,
payload: params.payload,
signature_r: params.signature_r,
signature_s: params.signature_s,
signature_y_parity_or_v: params.signature_y_parity_or_v
}}
end

@doc false
def from_rlp_list(rlp_list, transaction) do
def from_rlp_list(rlp_list, payload) do
case rlp_list do
[signature_y_parity_or_v, signature_r, signature_s] ->
signed_tx =
maybe_add_chain_id(%__MODULE__{
transaction: transaction,
payload: payload,
signature_r: signature_r,
signature_s: signature_s,
signature_y_parity_or_v: :binary.decode_unsigned(signature_y_parity_or_v)
Expand All @@ -73,11 +73,9 @@ defmodule Ethers.Transaction.Signed do
end
end

defp maybe_add_chain_id(
%__MODULE__{transaction: %Legacy{chain_id: nil} = legacy_tx} = signed_tx
) do
defp maybe_add_chain_id(%__MODULE__{payload: %Legacy{chain_id: nil} = legacy_tx} = signed_tx) do
{chain_id, _recovery_id} = extract_chain_id_and_recovery_id(signed_tx)
%__MODULE__{signed_tx | transaction: %Legacy{legacy_tx | chain_id: chain_id}}
%__MODULE__{signed_tx | payload: %Legacy{legacy_tx | chain_id: chain_id}}
end

defp maybe_add_chain_id(%__MODULE__{} = tx), do: tx
Expand All @@ -95,7 +93,7 @@ defmodule Ethers.Transaction.Signed do
"""
@spec from_address(t()) :: {:ok, Ethers.Types.t_address()} | {:error, atom()}
def from_address(%__MODULE__{} = transaction) do
hash_bin = Transaction.transaction_hash(transaction.transaction, :bin)
hash_bin = Transaction.transaction_hash(transaction.payload, :bin)

{_chain_id, recovery_id} = extract_chain_id_and_recovery_id(transaction)

Expand Down Expand Up @@ -141,7 +139,7 @@ defmodule Ethers.Transaction.Signed do
end

@spec extract_chain_id_and_recovery_id(t()) :: {non_neg_integer() | nil, non_neg_integer()}
defp extract_chain_id_and_recovery_id(%__MODULE__{transaction: tx, signature_y_parity_or_v: v}) do
defp extract_chain_id_and_recovery_id(%__MODULE__{payload: tx, signature_y_parity_or_v: v}) do
case tx do
%Legacy{} ->
if v >= @legacy_parity_with_chain_magic_number do
Expand All @@ -158,12 +156,12 @@ defmodule Ethers.Transaction.Signed do
end

defimpl Transaction.Protocol do
def type_id(signed_tx), do: Transaction.Protocol.type_id(signed_tx.transaction)
def type_id(signed_tx), do: Transaction.Protocol.type_id(signed_tx.pyalod)

def type_envelope(signed_tx), do: Transaction.Protocol.type_envelope(signed_tx.transaction)
def type_envelope(signed_tx), do: Transaction.Protocol.type_envelope(signed_tx.payload)

def to_rlp_list(signed_tx, mode) do
base_list = Transaction.Protocol.to_rlp_list(signed_tx.transaction, mode)
base_list = Transaction.Protocol.to_rlp_list(signed_tx.payload, mode)

base_list ++ signature_fields(signed_tx)
end
Expand Down
30 changes: 15 additions & 15 deletions test/ethers/transaction_test.exs
Original file line number Diff line number Diff line change
Expand Up @@ -46,7 +46,7 @@ defmodule Ethers.TransactionTest do
expected_hash = "0x224d121387e3bbabfc7bad271b22dddc0dc2743aaf49d850161f628ac9514179"

assert {:ok, decoded_tx} = Transaction.decode(raw_tx)
assert %Transaction.Signed{transaction: %Transaction.Eip1559{}} = decoded_tx
assert %Transaction.Signed{payload: %Transaction.Eip1559{}} = decoded_tx

# Verify transaction hash matches
assert Transaction.transaction_hash(decoded_tx) == expected_hash
Expand All @@ -56,13 +56,13 @@ defmodule Ethers.TransactionTest do
assert String.downcase(recovered_from) == String.downcase(expected_from)

# Verify other transaction fields
assert decoded_tx.transaction.chain_id == 1
assert decoded_tx.transaction.gas == 63_628
assert decoded_tx.transaction.max_fee_per_gas == 11_890_834_482
assert decoded_tx.transaction.nonce == 119
assert decoded_tx.transaction.max_priority_fee_per_gas == 8_000_000
assert decoded_tx.transaction.to == "0x8881562783028f5c1bcb985d2283d5e170d88888"
assert decoded_tx.transaction.value == 0
assert decoded_tx.payload.chain_id == 1
assert decoded_tx.payload.gas == 63_628
assert decoded_tx.payload.max_fee_per_gas == 11_890_834_482
assert decoded_tx.payload.nonce == 119
assert decoded_tx.payload.max_priority_fee_per_gas == 8_000_000
assert decoded_tx.payload.to == "0x8881562783028f5c1bcb985d2283d5e170d88888"
assert decoded_tx.payload.value == 0
end

test "decodes raw legacy transaction correctly" do
Expand All @@ -73,7 +73,7 @@ defmodule Ethers.TransactionTest do
expected_hash = "0x5a456fc4bb92a075552d1b8b2ce0e61c75b87a237a8108819ea735d13b7d52aa"

assert {:ok, decoded_tx} = Transaction.decode(raw_tx)
assert %Transaction.Signed{transaction: %Transaction.Legacy{}} = decoded_tx
assert %Transaction.Signed{payload: %Transaction.Legacy{}} = decoded_tx

# Verify transaction hash matches
assert Transaction.transaction_hash(decoded_tx) == expected_hash
Expand All @@ -83,12 +83,12 @@ defmodule Ethers.TransactionTest do
assert String.downcase(recovered_from) == String.downcase(expected_from)

# Verify other transaction fields
assert decoded_tx.transaction.chain_id == 1
assert decoded_tx.transaction.gas == 21_000
assert decoded_tx.transaction.nonce == 198
assert decoded_tx.transaction.gas_price == 54_000_000_000
assert decoded_tx.transaction.to == "0xe48c9a989438606a79a7560cfba3d34bafbac38e"
assert decoded_tx.transaction.value == 25_173_818_188_182_582
assert decoded_tx.payload.chain_id == 1
assert decoded_tx.payload.gas == 21_000
assert decoded_tx.payload.nonce == 198
assert decoded_tx.payload.gas_price == 54_000_000_000
assert decoded_tx.payload.to == "0xe48c9a989438606a79a7560cfba3d34bafbac38e"
assert decoded_tx.payload.value == 25_173_818_188_182_582
end
end
end
6 changes: 3 additions & 3 deletions test/ethers_test.exs
Original file line number Diff line number Diff line change
Expand Up @@ -109,7 +109,7 @@ defmodule EthersTest do

assert {:ok,
%Ethers.Transaction.Signed{
transaction: %Ethers.Transaction.Eip1559{
payload: %Ethers.Transaction.Eip1559{
to: ^downcased_to_addr
}
}} = Ethers.get_transaction(tx_hash)
Expand All @@ -130,7 +130,7 @@ defmodule EthersTest do
assert {:ok,
[
ok: %Ethers.Transaction.Signed{
transaction: %Ethers.Transaction.Eip1559{}
payload: %Ethers.Transaction.Eip1559{}
}
]} =
Ethers.batch([
Expand Down Expand Up @@ -464,7 +464,7 @@ defmodule EthersTest do

wait_for_transaction!(tx_hash)

assert {:ok, %Ethers.Transaction.Signed{transaction: %Ethers.Transaction.Legacy{}}} =
assert {:ok, %Ethers.Transaction.Signed{payload: %Ethers.Transaction.Legacy{}}} =
Ethers.get_transaction(tx_hash)

assert {:ok, "hello local signer"} =
Expand Down

0 comments on commit 058d592

Please sign in to comment.