Skip to content

Commit

Permalink
Merge branch 'release/1.4.2' into testnet
Browse files Browse the repository at this point in the history
  • Loading branch information
bchamagne committed Dec 12, 2023
2 parents 092d02c + 7928960 commit defb20a
Show file tree
Hide file tree
Showing 3 changed files with 35 additions and 7 deletions.
10 changes: 4 additions & 6 deletions lib/archethic/mining/validation_context.ex
Original file line number Diff line number Diff line change
Expand Up @@ -1087,11 +1087,10 @@ defmodule Archethic.Mining.ValidationContext do
transaction: tx = %Transaction{data: %TransactionData{recipients: recipients}},
previous_transaction: prev_tx,
resolved_addresses: resolved_addresses,
validation_time: validation_time,
contract_context: contract_context,
validation_stamp:
stamp = %ValidationStamp{
timestamp: timestamp,
timestamp: validation_time,
ledger_operations: %LedgerOperations{fee: stamp_fee}
}
}
Expand All @@ -1114,7 +1113,7 @@ defmodule Archethic.Mining.ValidationContext do
)

{sufficient_funds?, ledger_operations} =
get_ledger_operations(context, stamp_fee, timestamp, next_state)
get_ledger_operations(context, stamp_fee, validation_time, next_state)

subsets_verifications = [
timestamp: fn -> valid_timestamp(stamp, context) end,
Expand Down Expand Up @@ -1193,12 +1192,11 @@ defmodule Archethic.Mining.ValidationContext do
end

defp valid_stamp_error?(
%ValidationStamp{error: error},
%ValidationStamp{error: error, timestamp: validation_time},
%__MODULE__{
transaction: tx,
previous_transaction: prev_tx,
valid_pending_transaction?: valid_pending_transaction?,
validation_time: validation_time
valid_pending_transaction?: valid_pending_transaction?
},
valid_contract_execution?,
valid_contract_recipients?,
Expand Down
2 changes: 1 addition & 1 deletion mix.exs
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ defmodule Archethic.MixProject do
def project do
[
app: :archethic,
version: "1.4.1",
version: "1.4.2",
build_path: "_build",
config_path: "config/config.exs",
deps_path: "deps",
Expand Down
30 changes: 30 additions & 0 deletions test/archethic/mining/validation_context_test.exs
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,8 @@ defmodule Archethic.Mining.ValidationContextTest do
alias Archethic.TransactionChain.TransactionData
alias Archethic.TransactionChain.TransactionData.Recipient

import Mock

doctest ValidationContext

describe "cross_validate/1" do
Expand All @@ -43,6 +45,34 @@ defmodule Archethic.Mining.ValidationContextTest do
|> ValidationContext.cross_validate()
end

test "should validate even if validation_time and cross_validation_time are in different oracle bucket" do
validation_context = create_context(~U[2023-12-11 09:00:01Z])

validation_context2 = %ValidationContext{
validation_context
| validation_time: ~U[2023-12-11 08:59:59Z]
}

SharedSecrets.add_origin_public_key(:software, Crypto.origin_node_public_key())

# the cross valiadation (09:00:01) should look for the price a 08:00:00
# because it MUST look at the price of validation_stamp.timestamp (08:59:59)
with_mock(Archethic.OracleChain, [:passthrough],
get_uco_price: fn ~U[2023-12-11 08:00:00Z] ->
[eur: 0.05, usd: 0.07]
end
) do
assert %ValidationContext{
cross_validation_stamps: [%CrossValidationStamp{inconsistencies: []}]
} =
validation_context
|> ValidationContext.add_validation_stamp(
create_validation_stamp(validation_context2)
)
|> ValidationContext.cross_validate()
end
end

test "should get inconsistency when the user has not enough funds" do
validation_context =
%ValidationContext{create_context() | unspent_outputs: []}
Expand Down

0 comments on commit defb20a

Please sign in to comment.