Skip to content

Commit

Permalink
Fix recipient deserialization
Browse files Browse the repository at this point in the history
  • Loading branch information
samuelmanzanera committed Dec 2, 2022
1 parent bf9c15c commit 88ead12
Showing 1 changed file with 3 additions and 21 deletions.
24 changes: 3 additions & 21 deletions lib/archethic/transaction_chain/transaction/validation_stamp.ex
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,8 @@ defmodule Archethic.TransactionChain.Transaction.ValidationStamp do
"""

alias Archethic.Crypto

alias Archethic.Utils
alias Archethic.Utils.VarInt

alias __MODULE__.LedgerOperations
Expand Down Expand Up @@ -275,7 +277,7 @@ defmodule Archethic.TransactionChain.Transaction.ValidationStamp do
{recipients_length, rest} = rest |> VarInt.get_value()

{recipients, <<error_byte::8, rest::bitstring>>} =
deserialize_list_of_recipients_addresses(rest, recipients_length, [])
Utils.deserialize_addresses(rest, recipients_length, [])

error = deserialize_error(error_byte)

Expand Down Expand Up @@ -403,26 +405,6 @@ defmodule Archethic.TransactionChain.Transaction.ValidationStamp do
Crypto.verify?(signature, raw_stamp, public_key)
end

defp deserialize_list_of_recipients_addresses(rest, 0, _acc), do: {[], rest}

defp deserialize_list_of_recipients_addresses(rest, nb_recipients, acc)
when length(acc) == nb_recipients do
{Enum.reverse(acc), rest}
end

defp deserialize_list_of_recipients_addresses(
<<hash_id::8, rest::bitstring>>,
nb_recipients,
acc
) do
hash_size = Crypto.hash_size(hash_id)
<<hash::binary-size(hash_size), rest::bitstring>> = rest

deserialize_list_of_recipients_addresses(rest, nb_recipients, [
<<hash_id::8, hash::binary>> | acc
])
end

defp serialize_error(nil), do: 0
defp serialize_error(:invalid_pending_transaction), do: 1
defp serialize_error(:invalid_inherit_constraints), do: 2
Expand Down

0 comments on commit 88ead12

Please sign in to comment.