Skip to content

Commit

Permalink
Forbid transaction V4 on mainnet
Browse files Browse the repository at this point in the history
  • Loading branch information
Neylix committed Dec 30, 2024
1 parent 0d97b1e commit 4de36a8
Show file tree
Hide file tree
Showing 2 changed files with 15 additions and 1 deletion.
13 changes: 13 additions & 0 deletions lib/archethic/mining/pending_transaction_validation.ex
Original file line number Diff line number Diff line change
Expand Up @@ -69,6 +69,19 @@ defmodule Archethic.Mining.PendingTransactionValidation do

@tx_max_size Application.compile_env!(:archethic, :transaction_data_content_max_size)

@prod? Mix.env() == :prod

@doc """
Ensure transaction version is allowed
Used to differentiate mainnet / testnet network
"""
@spec(validate_transaction_version(transaction :: Transaction.t()) :: :ok, {:error, String.t()})
def validate_transaction_version(%Transaction{version: version}) do
if @prod? and System.get_env("ARCHETHIC_NETWORK_TYPE") != "testnet" and version >= 4,
do: {:error, "Transaction V4 are not yet supported on mainnet"},
else: :ok
end

@doc """
Ensure transaction size does not exceed the limit size
"""
Expand Down
3 changes: 2 additions & 1 deletion lib/archethic/mining/validation_context.ex
Original file line number Diff line number Diff line change
Expand Up @@ -301,7 +301,8 @@ defmodule Archethic.Mining.ValidationContext do
) do
start = System.monotonic_time()

with :ok <- PendingTransactionValidation.validate_previous_public_key(tx),
with :ok <- PendingTransactionValidation.validate_transaction_version(tx),
:ok <- PendingTransactionValidation.validate_previous_public_key(tx),
:ok <- PendingTransactionValidation.validate_previous_signature(tx),
:ok <- PendingTransactionValidation.validate_size(tx),
:ok <- PendingTransactionValidation.validate_contract(tx),
Expand Down

0 comments on commit 4de36a8

Please sign in to comment.