diff --git a/lib/archethic/beacon_chain/subset/summary_cache.ex b/lib/archethic/beacon_chain/subset/summary_cache.ex index 1ae1d5dc5..40d594b89 100644 --- a/lib/archethic/beacon_chain/subset/summary_cache.ex +++ b/lib/archethic/beacon_chain/subset/summary_cache.ex @@ -39,6 +39,11 @@ defmodule Archethic.BeaconChain.Subset.SummaryCache do {:ok, %{}} end + def code_change("1.4.2", state, _extra) do + PubSub.register_to_self_repair() + {:ok, state} + end + def code_change(_version, state, _extra), do: {:ok, state} def handle_info(:self_repair_sync, state) do diff --git a/mix.exs b/mix.exs index a657abc63..e232b7393 100644 --- a/mix.exs +++ b/mix.exs @@ -4,7 +4,7 @@ defmodule Archethic.MixProject do def project do [ app: :archethic, - version: "1.4.2", + version: "1.4.3", build_path: "_build", config_path: "config/config.exs", deps_path: "deps", diff --git a/priv/migration_tasks/prod/1.4.3@jobcacheregistry_start.exs b/priv/migration_tasks/prod/1.4.3@jobcacheregistry_start.exs new file mode 100644 index 000000000..ab7977c1e --- /dev/null +++ b/priv/migration_tasks/prod/1.4.3@jobcacheregistry_start.exs @@ -0,0 +1,15 @@ +defmodule Migration_1_4_3 do + @moduledoc """ + Start the JobCacheRegistry which is a child of Application + """ + + def run() do + {:ok, _} = + Supervisor.start_child( + Archethic.Supervisor, + {Registry, keys: :unique, name: Archethic.Utils.JobCacheRegistry} + ) + + :ok + end +end diff --git a/rel/appups/archethic/1.4.2_to_1.4.3.appup b/rel/appups/archethic/1.4.2_to_1.4.3.appup new file mode 100644 index 000000000..1295b4e4b --- /dev/null +++ b/rel/appups/archethic/1.4.2_to_1.4.3.appup @@ -0,0 +1,906 @@ +{"1.4.3", + [{"1.4.2", + [{add_module,'Elixir.Archethic.Contracts.Conditions.Subjects'}, + {add_module,'Elixir.Archethic.Contracts.Conditions'}, + {add_module,'Elixir.Archethic.Contracts.Constants'}, + {add_module,'Elixir.Archethic.Contracts.Contract.ConditionRejected'}, + {add_module,'Elixir.Archethic.P2P.Message.DashboardData'}, + {add_module,'Elixir.Archethic.P2P.Message.GetDashboardData'}, + {add_module,'Elixir.ArchethicWeb.DashboardMetrics'}, + {add_module,'Elixir.ArchethicWeb.DashboardMetricsAggregator'}, + {update,'Elixir.Archethic.Account.MemTables.StateLedger', + {advanced,[]}, + brutal_purge,soft_purge,[]}, + {update,'Elixir.Archethic.Account.MemTables.TokenLedger', + {advanced,[]}, + brutal_purge,soft_purge,[]}, + {update,'Elixir.Archethic.Account.MemTables.UCOLedger', + {advanced,[]}, + brutal_purge,soft_purge,[]}, + {update,'Elixir.Archethic.BeaconChain.SubsetSupervisor',supervisor}, + {update,'Elixir.Archethic.BeaconChain.Update', + {advanced,[]}, + brutal_purge,soft_purge,[]}, + {load_module,'Elixir.Archethic.Cldr.Currency',brutal_purge,soft_purge,[]}, + {load_module,'Elixir.Archethic.Cldr.Number.Transliterate',brutal_purge, + soft_purge,[]}, + {load_module,'Elixir.Archethic.Contracts.Contract.Failure',brutal_purge, + soft_purge,[]}, + {load_module,'Elixir.Archethic.Contracts.Interpreter.ConditionInterpreter', + brutal_purge,soft_purge,[]}, + {update,'Elixir.Archethic.Contracts.TransactionLookup', + {advanced,[]}, + brutal_purge,soft_purge,[]}, + {update,'Elixir.Archethic.DB.EmbeddedImpl.BootstrapInfo', + {advanced,[]}, + brutal_purge,soft_purge,[]}, + {update,'Elixir.Archethic.DB.EmbeddedImpl.StatsInfo', + {advanced,[]}, + brutal_purge,soft_purge,[]}, + {update,'Elixir.Archethic.Election.Constraints', + {advanced,[]}, + brutal_purge,soft_purge,[]}, + {update,'Elixir.Archethic.Metrics.ETSFlush', + {advanced,[]}, + brutal_purge,soft_purge,[]}, + {update,'Elixir.Archethic.Metrics.MetricSupervisor',supervisor}, + {update,'Elixir.Archethic.OracleChain.MemTable', + {advanced,[]}, + brutal_purge,soft_purge,[]}, + {update,'Elixir.Archethic.P2P.GeoPatch.GeoIP.MaxMindDB', + {advanced,[]}, + brutal_purge,soft_purge,[]}, + {load_module,'Elixir.Archethic.P2P.MessageId',brutal_purge,soft_purge,[]}, + {load_module,'Elixir.Archethic.PubSub',brutal_purge,soft_purge,[]}, + {update,'Elixir.Archethic.Replication.TransactionPool', + {advanced,[]}, + brutal_purge,soft_purge,[]}, + {update,'Elixir.Archethic.Reward.MemTables.RewardTokens', + {advanced,[]}, + brutal_purge,soft_purge,[]}, + {update,'Elixir.Archethic.SharedSecrets.MemTables.NetworkLookup', + {advanced,[]}, + brutal_purge,soft_purge,[]}, + {update,'Elixir.Archethic.SharedSecrets.MemTables.OriginKeyLookup', + {advanced,[]}, + brutal_purge,soft_purge,[]}, + {update,'Elixir.Archethic.TransactionChain.MemTables.KOLedger', + {advanced,[]}, + brutal_purge,soft_purge,[]}, + {update,'Elixir.Archethic.TransactionChain.MemTables.PendingLedger', + {advanced,[]}, + brutal_purge,soft_purge,[]}, + {update,'Elixir.Archethic.Utils.JobCache', + {advanced,[]}, + brutal_purge,soft_purge,[]}, + {update,'Elixir.Archethic.Utils.JobConductor', + {advanced,[]}, + brutal_purge,soft_purge,[]}, + {update,'Elixir.Archethic.Utils.PortHandler', + {advanced,[]}, + brutal_purge,soft_purge,[]}, + {update,'Elixir.Archethic.Utils.Regression.Benchmark.SeedHolder', + {advanced,[]}, + brutal_purge,soft_purge,[]}, + {load_module,'Elixir.ArchethicWeb.API.JsonRPC.Error',brutal_purge, + soft_purge,[]}, + {load_module,'Elixir.ArchethicWeb.Explorer.DashboardView',brutal_purge, + soft_purge,[]}, + {update,'Elixir.ArchethicWeb.Explorer.ExplorerLive.TopTransactionsCache', + {advanced,[]}, + brutal_purge,soft_purge,[]}, + {update,'Elixir.ArchethicWeb.Explorer.FaucetRateLimiter', + {advanced,[]}, + brutal_purge,soft_purge,[]}, + {update,'Elixir.ArchethicWeb.Explorer.TransactionCache', + {advanced,[]}, + brutal_purge,soft_purge,[]}, + {load_module,'Elixir.ArchethicWeb.ExplorerRouter',brutal_purge,soft_purge, + []}, + {update,'Elixir.ArchethicWeb.Supervisor',supervisor}, + {load_module,'Elixir.Archethic.Contracts.Contract',brutal_purge, + soft_purge, + ['Elixir.Archethic.Contracts.Interpreter']}, + {load_module,'Elixir.Archethic.Contracts.Interpreter.ConditionValidator', + brutal_purge,soft_purge, + ['Elixir.Archethic.Contracts.Interpreter']}, + {load_module,'Elixir.Archethic.Contracts.Interpreter.Legacy.ConditionInterpreter', + brutal_purge,soft_purge, + ['Elixir.Archethic.Contracts.Interpreter']}, + {load_module,'Elixir.Archethic.Contracts.Interpreter.Library.Common.ChainImpl', + brutal_purge,soft_purge, + ['Elixir.Archethic.Utils']}, + {load_module,'Elixir.Archethic.Contracts.Interpreter.Library.Common.ContractImpl', + brutal_purge,soft_purge, + ['Elixir.Archethic.Contracts']}, + {update,'Elixir.Archethic.Crypto.Ed25519.LibSodiumPort', + {advanced,[]}, + brutal_purge,soft_purge, + ['Elixir.Archethic.Utils.PortHandler']}, + {update,'Elixir.Archethic.Crypto.NodeKeystore.Origin.SoftwareImpl', + {advanced,[]}, + brutal_purge,soft_purge, + ['Elixir.Archethic.Utils']}, + {update,'Elixir.Archethic.Crypto.NodeKeystore.Origin.TPMImpl', + {advanced,[]}, + brutal_purge,soft_purge, + ['Elixir.Archethic.Utils.PortHandler']}, + {update,'Elixir.Archethic.Crypto.NodeKeystore.SoftwareImpl', + {advanced,[]}, + brutal_purge,soft_purge, + ['Elixir.Archethic.Utils']}, + {update,'Elixir.Archethic.Crypto.SharedSecretsKeystore.SoftwareImpl', + {advanced,[]}, + brutal_purge,soft_purge, + ['Elixir.Archethic.TransactionChain']}, + {update,'Elixir.Archethic.DB.EmbeddedImpl.ChainIndex', + {advanced,[]}, + brutal_purge,soft_purge, + ['Elixir.Archethic.DB.EmbeddedImpl.ChainWriter']}, + {update,'Elixir.Archethic.DB.EmbeddedImpl.InputsWriter', + {advanced,[]}, + brutal_purge,soft_purge, + ['Elixir.Archethic.Utils']}, + {update,'Elixir.Archethic.DB.EmbeddedImpl.P2PView', + {advanced,[]}, + brutal_purge,soft_purge, + ['Elixir.Archethic.Utils']}, + {update,'Elixir.Archethic.Election.HypergeometricDistribution', + {advanced,[]}, + brutal_purge,soft_purge, + ['Elixir.Archethic.PubSub']}, + {update,'Elixir.Archethic.Governance.Pools.MemTableLoader', + {advanced,[]}, + brutal_purge,soft_purge, + ['Elixir.Archethic.TransactionChain']}, + {load_module,'Elixir.Archethic.Mining.ProofOfWork',brutal_purge, + soft_purge, + ['Elixir.Archethic.Contracts']}, + {update,'Elixir.Archethic.OracleChain.Services.HydratingCache', + {advanced,[]}, + brutal_purge,soft_purge, + ['Elixir.Archethic.Utils']}, + {update,'Elixir.Archethic.P2P.BootstrappingSeeds', + {advanced,[]}, + brutal_purge,soft_purge, + ['Elixir.Archethic.PubSub']}, + {update,'Elixir.Archethic.P2P.Listener', + {advanced,[]}, + brutal_purge,soft_purge, + ['Elixir.Archethic.PubSub']}, + {update,'Elixir.Archethic.P2P.MemTable', + {advanced,[]}, + brutal_purge,soft_purge, + ['Elixir.Archethic.PubSub']}, + {load_module,'Elixir.Archethic.P2P.Message.GetNetworkStats',brutal_purge, + soft_purge, + ['Elixir.Archethic.BeaconChain.Subset.StatsCollector']}, + {load_module,'Elixir.Archethic.P2P.Message.GetUnspentOutputs', + brutal_purge,soft_purge, + ['Elixir.Archethic.Utils']}, + {update,'Elixir.Archethic.SelfRepair.RepairWorker', + {advanced,[]}, + brutal_purge,soft_purge, + ['Elixir.Archethic.SelfRepair']}, + {load_module,'Elixir.Archethic.Utils',brutal_purge,soft_purge, + ['Elixir.Archethic.TransactionChain']}, + {load_module,'Elixir.Archethic.TransactionChain.Transaction.ValidationStamp.LedgerOperations.TransactionMovement', + brutal_purge,soft_purge, + ['Elixir.Archethic.Utils']}, + {load_module,'Elixir.ArchethicWeb.API.JsonRPC.Method.CallContractFunction', + brutal_purge,soft_purge, + ['Elixir.Archethic.Contracts']}, + {load_module,'Elixir.ArchethicWeb.Explorer.DashboardLive',brutal_purge, + soft_purge, + ['Elixir.Archethic.Utils']}, + {update,'Elixir.Archethic.BeaconChain.SummaryTimer', + {advanced,[]}, + brutal_purge,soft_purge, + ['Elixir.Archethic.PubSub','Elixir.Archethic.Utils']}, + {update,'Elixir.Archethic.DB.EmbeddedImpl.ChainWriter', + {advanced,[]}, + brutal_purge,soft_purge, + ['Elixir.Archethic.DB.EmbeddedImpl.ChainIndex', + 'Elixir.Archethic.Utils']}, + {load_module,'Elixir.Archethic.Election',brutal_purge,soft_purge, + ['Elixir.Archethic.Election.Constraints', + 'Elixir.Archethic.Utils']}, + {update,'Elixir.Archethic.TransactionChain.MemTablesLoader', + {advanced,[]}, + brutal_purge,soft_purge, + ['Elixir.Archethic.Contracts.Contract', + 'Elixir.Archethic.TransactionChain.MemTables.PendingLedger']}, + {update,'Elixir.ArchethicWeb.TransactionSubscriber', + {advanced,[]}, + brutal_purge,soft_purge, + ['Elixir.Archethic.Election','Elixir.Archethic.PubSub']}, + {load_module,'Elixir.Archethic.Application',brutal_purge,soft_purge, + ['Elixir.Archethic.OracleChain', + 'Elixir.Archethic.SelfRepair','Elixir.Archethic.Utils']}, + {load_module,'Elixir.Archethic.BeaconChain.NetworkCoordinates', + brutal_purge,soft_purge, + ['Elixir.Archethic.BeaconChain.Subset.SummaryCache', + 'Elixir.Archethic.Election','Elixir.Archethic.Utils']}, + {update,'Elixir.Archethic.BeaconChain.SlotTimer', + {advanced,[]}, + brutal_purge,soft_purge, + ['Elixir.Archethic.BeaconChain.SummaryTimer', + 'Elixir.Archethic.PubSub','Elixir.Archethic.Utils']}, + {update,'Elixir.Archethic.BeaconChain.Subset.SummaryCache', + {advanced,[]}, + brutal_purge,soft_purge, + ['Elixir.Archethic.BeaconChain.SummaryTimer', + 'Elixir.Archethic.PubSub','Elixir.Archethic.Utils']}, + {load_module,'Elixir.Archethic.TransactionChain',brutal_purge,soft_purge, + ['Elixir.Archethic.Election','Elixir.Archethic.P2P.Message', + 'Elixir.Archethic.TransactionChain.MemTables.KOLedger', + 'Elixir.Archethic.TransactionChain.MemTables.PendingLedger', + 'Elixir.Archethic.TransactionChain.MemTablesLoader']}, + {update,'Elixir.Archethic.Utils.DetectNodeResponsiveness', + {advanced,[]}, + brutal_purge,soft_purge, + ['Elixir.Archethic.TransactionChain']}, + {update,'Elixir.Archethic.P2P.Client.Connection', + {advanced,[]}, + brutal_purge,soft_purge, + ['Elixir.Archethic.P2P.Message','Elixir.Archethic.Utils']}, + {update,'Elixir.Archethic.Reward.MemTablesLoader', + {advanced,[]}, + brutal_purge,soft_purge, + ['Elixir.Archethic.Reward.MemTables.RewardTokens', + 'Elixir.Archethic.TransactionChain']}, + {update,'Elixir.Archethic.SelfRepair.Scheduler', + {advanced,[]}, + brutal_purge,soft_purge, + ['Elixir.Archethic.PubSub','Elixir.Archethic.Utils']}, + {update,'Elixir.Archethic.Networking.Scheduler', + {advanced,[]}, + brutal_purge,soft_purge, + ['Elixir.Archethic.PubSub','Elixir.Archethic.TransactionChain', + 'Elixir.Archethic.Utils']}, + {update,'Elixir.Archethic.OracleChain.MemTableLoader', + {advanced,[]}, + brutal_purge,soft_purge, + ['Elixir.Archethic.OracleChain', + 'Elixir.Archethic.OracleChain.MemTable', + 'Elixir.Archethic.TransactionChain']}, + {update,'Elixir.Archethic.P2P.MemTableLoader', + {advanced,[]}, + brutal_purge,soft_purge, + ['Elixir.Archethic.P2P.MemTable','Elixir.Archethic.SelfRepair', + 'Elixir.Archethic.TransactionChain']}, + {load_module,'Elixir.Archethic.P2P.Message.ReplicateTransaction', + brutal_purge,soft_purge, + ['Elixir.Archethic.Election', + 'Elixir.Archethic.TransactionChain', + 'Elixir.Archethic.Utils']}, + {update,'Elixir.Archethic.Account.MemTablesLoader', + {advanced,[]}, + brutal_purge,soft_purge, + ['Elixir.Archethic.Account.MemTables.StateLedger', + 'Elixir.Archethic.Account.MemTables.TokenLedger', + 'Elixir.Archethic.Account.MemTables.UCOLedger', + 'Elixir.Archethic.TransactionChain']}, + {update,'Elixir.Archethic.BeaconChain.Subset.StatsCollector', + {advanced,[]}, + brutal_purge,soft_purge, + ['Elixir.Archethic.BeaconChain.NetworkCoordinates', + 'Elixir.Archethic.Election','Elixir.Archethic.PubSub', + 'Elixir.Archethic.Utils.JobCache']}, + {load_module,'Elixir.Archethic.Contracts.Interpreter',brutal_purge, + soft_purge, + ['Elixir.Archethic.Contracts.Contract', + 'Elixir.Archethic.Contracts.Interpreter.ConditionInterpreter', + 'Elixir.Archethic.Contracts.Interpreter.ConditionValidator', + 'Elixir.Archethic.Utils']}, + {load_module,'Elixir.Archethic.Contracts',brutal_purge,soft_purge, + ['Elixir.Archethic.Contracts.Contract', + 'Elixir.Archethic.Contracts.Interpreter', + 'Elixir.Archethic.Contracts.Loader', + 'Elixir.Archethic.Contracts.TransactionLookup']}, + {load_module,'Elixir.Archethic.Mining.SmartContractValidation', + brutal_purge,soft_purge, + ['Elixir.Archethic.Contracts', + 'Elixir.Archethic.Contracts.Contract', + 'Elixir.Archethic.Election', + 'Elixir.Archethic.TransactionChain']}, + {load_module,'Elixir.Archethic.OracleChain',brutal_purge,soft_purge, + ['Elixir.Archethic.OracleChain.MemTable', + 'Elixir.Archethic.OracleChain.MemTableLoader', + 'Elixir.Archethic.OracleChain.Scheduler', + 'Elixir.Archethic.Utils']}, + {update,'Elixir.Archethic.SelfRepair.NetworkView', + {advanced,[]}, + brutal_purge,soft_purge, + ['Elixir.Archethic.OracleChain','Elixir.Archethic.PubSub', + 'Elixir.Archethic.TransactionChain']}, + {update,'Elixir.Archethic.SelfRepair.Notifier', + {advanced,[]}, + brutal_purge,soft_purge, + ['Elixir.Archethic.Election','Elixir.Archethic.TransactionChain', + 'Elixir.Archethic.Utils']}, + {load_module,'Elixir.ArchethicWeb.API.JsonRPC.Method.EstimateTransactionFee', + brutal_purge,soft_purge, + ['Elixir.Archethic.Mining.SmartContractValidation', + 'Elixir.Archethic.OracleChain', + 'Elixir.Archethic.TransactionChain']}, + {load_module,'Elixir.ArchethicWeb.API.JsonRPC.Method.SimulateContractExecution', + brutal_purge,soft_purge, + ['Elixir.Archethic.Contracts', + 'Elixir.Archethic.Contracts.Contract', + 'Elixir.ArchethicWeb.API.JsonRPC.Error']}, + {load_module,'Elixir.ArchethicWeb.API.REST.TransactionController', + brutal_purge,soft_purge, + ['Elixir.Archethic.Contracts','Elixir.Archethic.OracleChain', + 'Elixir.ArchethicWeb.TransactionSubscriber']}, + {load_module,'Elixir.Archethic.P2P.Message.ValidateSmartContractCall', + brutal_purge,soft_purge, + ['Elixir.Archethic.Contracts', + 'Elixir.Archethic.Contracts.Contract', + 'Elixir.Archethic.OracleChain', + 'Elixir.Archethic.TransactionChain']}, + {load_module,'Elixir.Archethic.P2P.Message',brutal_purge,soft_purge, + ['Elixir.Archethic.P2P.Message.GetNetworkStats', + 'Elixir.Archethic.P2P.Message.GetUnspentOutputs', + 'Elixir.Archethic.P2P.Message.ReplicateTransaction', + 'Elixir.Archethic.P2P.Message.ValidateSmartContractCall']}, + {update,'Elixir.Archethic.Reward.Scheduler', + {advanced,[]}, + brutal_purge,soft_purge, + ['Elixir.Archethic.Election','Elixir.Archethic.PubSub', + 'Elixir.Archethic.Utils', + 'Elixir.Archethic.Utils.DetectNodeResponsiveness']}, + {update,'Elixir.Archethic.SharedSecrets.NodeRenewalScheduler', + {advanced,[]}, + brutal_purge,soft_purge, + ['Elixir.Archethic.Election','Elixir.Archethic.PubSub', + 'Elixir.Archethic.Utils', + 'Elixir.Archethic.Utils.DetectNodeResponsiveness']}, + {update,'Elixir.Archethic.SharedSecrets.MemTablesLoader', + {advanced,[]}, + brutal_purge,soft_purge, + ['Elixir.Archethic.SharedSecrets.MemTables.NetworkLookup', + 'Elixir.Archethic.SharedSecrets.MemTables.OriginKeyLookup', + 'Elixir.Archethic.SharedSecrets.NodeRenewalScheduler', + 'Elixir.Archethic.TransactionChain','Elixir.Archethic.Utils']}, + {update,'Elixir.Archethic.Contracts.Worker', + {advanced,[]}, + brutal_purge,soft_purge, + ['Elixir.Archethic.Contracts', + 'Elixir.Archethic.Contracts.Contract', + 'Elixir.Archethic.Election','Elixir.Archethic.PubSub', + 'Elixir.Archethic.TransactionChain','Elixir.Archethic.Utils', + 'Elixir.Archethic.Utils.DetectNodeResponsiveness']}, + {update,'Elixir.Archethic.Contracts.Loader', + {advanced,[]}, + brutal_purge,soft_purge, + ['Elixir.Archethic.Contracts', + 'Elixir.Archethic.Contracts.Contract', + 'Elixir.Archethic.Contracts.TransactionLookup', + 'Elixir.Archethic.Contracts.Worker', + 'Elixir.Archethic.TransactionChain']}, + {update,'Elixir.Archethic.OracleChain.Scheduler', + {advanced,[]}, + brutal_purge,soft_purge, + ['Elixir.Archethic.Election','Elixir.Archethic.OracleChain', + 'Elixir.Archethic.PubSub','Elixir.Archethic.TransactionChain', + 'Elixir.Archethic.Utils', + 'Elixir.Archethic.Utils.DetectNodeResponsiveness']}, + {load_module,'Elixir.Archethic.Replication.TransactionValidator', + brutal_purge,soft_purge, + ['Elixir.Archethic.Contracts', + 'Elixir.Archethic.Contracts.Contract', + 'Elixir.Archethic.Election', + 'Elixir.Archethic.Mining.SmartContractValidation', + 'Elixir.Archethic.OracleChain', + 'Elixir.Archethic.TransactionChain', + 'Elixir.Archethic.TransactionChain.Transaction.ValidationStamp.LedgerOperations.TransactionMovement']}, + {load_module,'Elixir.Archethic.SelfRepair',brutal_purge,soft_purge, + ['Elixir.Archethic.Contracts','Elixir.Archethic.Election', + 'Elixir.Archethic.P2P.Message', + 'Elixir.Archethic.SelfRepair.RepairWorker', + 'Elixir.Archethic.SelfRepair.Scheduler', + 'Elixir.Archethic.TransactionChain', + 'Elixir.Archethic.Utils']}, + {load_module,'Elixir.Archethic.Mining.ValidationContext',brutal_purge, + soft_purge, + ['Elixir.Archethic.Contracts', + 'Elixir.Archethic.Contracts.Contract', + 'Elixir.Archethic.Election', + 'Elixir.Archethic.Mining.ProofOfWork', + 'Elixir.Archethic.Mining.SmartContractValidation', + 'Elixir.Archethic.OracleChain', + 'Elixir.Archethic.TransactionChain', + 'Elixir.Archethic.TransactionChain.Transaction.ValidationStamp.LedgerOperations.TransactionMovement', + 'Elixir.Archethic.Utils']}, + {update,'Elixir.Archethic.Mining.StandaloneWorkflow', + {advanced,[]}, + brutal_purge,soft_purge, + ['Elixir.Archethic.Election', + 'Elixir.Archethic.Mining.ValidationContext', + 'Elixir.Archethic.P2P.Message','Elixir.Archethic.PubSub', + 'Elixir.Archethic.TransactionChain']}, + {update,'Elixir.Archethic.Mining.DistributedWorkflow', + {advanced,[]}, + brutal_purge,soft_purge, + ['Elixir.Archethic.Election', + 'Elixir.Archethic.Mining.ValidationContext', + 'Elixir.Archethic.P2P.Message','Elixir.Archethic.PubSub', + 'Elixir.Archethic.TransactionChain','Elixir.Archethic.Utils']}, + {update,'Elixir.Archethic.BeaconChain.Subset', + {advanced,[]}, + brutal_purge,soft_purge, + ['Elixir.Archethic.BeaconChain.NetworkCoordinates', + 'Elixir.Archethic.BeaconChain.SlotTimer', + 'Elixir.Archethic.BeaconChain.Subset.StatsCollector', + 'Elixir.Archethic.BeaconChain.Subset.SummaryCache', + 'Elixir.Archethic.BeaconChain.SummaryTimer', + 'Elixir.Archethic.Election','Elixir.Archethic.PubSub', + 'Elixir.Archethic.SelfRepair','Elixir.Archethic.Utils']}, + {delete_module,'Elixir.Archethic.Contracts.ContractConditions.Subjects'}, + {delete_module,'Elixir.Archethic.Contracts.ContractConditions'}, + {delete_module,'Elixir.Archethic.Contracts.ContractConstants'}, + {delete_module,'Elixir.Archethic.Metrics.Collector.MetricsEndpoint'}, + {delete_module,'Elixir.Archethic.Metrics.Collector'}, + {delete_module,'Elixir.Archethic.Metrics.Parser'}, + {delete_module,'Elixir.Archethic.Metrics.Poller'}, + {delete_module,'Elixir.Archethic.OracleChain.Services.UCOPrice.Providers.CoinMarketCapUniris'}, + {apply,{supervisor, terminate_child, ['Elixir.Archethic.OracleChain.Supervisor', 'Elixir.Archethic.OracleChain.ServiceCacheSupervisor']}}, + {apply,{supervisor, restart_child, ['Elixir.Archethic.OracleChain.Supervisor', 'Elixir.Archethic.OracleChain.ServiceCacheSupervisor']}}, + {apply,{supervisor, restart_child, ['Elixir.ArchethicWeb.Supervisor', 'Elixir.ArchethicWeb.DashboardMetrics']}}, + {apply,{supervisor, restart_child, ['Elixir.ArchethicWeb.Supervisor', 'Elixir.ArchethicWeb.DashboardMetricsAggregator']}}, + {apply, {supervisor, terminate_child, ['Elixir.Archethic.Metrics.MetricSupervisor', 'Elixir.Archethic.Metrics.Poller']}}, + {apply, {supervisor, delete_child, ['Elixir.Archethic.Metrics.MetricSupervisor', 'Elixir.Archethic.Metrics.Poller']}}, + {apply,{supervisor, terminate_child, ['Elixir.Archethic.BeaconChain.SubsetSupervisor', 'Elixir.Archethic.BeaconChain.Subset.StatsCollector']}}, + {apply,{supervisor, restart_child, ['Elixir.Archethic.BeaconChain.SubsetSupervisor', 'Elixir.Archethic.BeaconChain.Subset.StatsCollector']}}, + {apply,{supervisor,terminate_child, + ['Elixir.Archethic.Telemetry',prometheus_metrics]}}, + {apply,{supervisor,restart_child, + ['Elixir.Archethic.Telemetry',prometheus_metrics]}}, + {apply,{'Elixir.Mix.Tasks.Archethic.Migrate',run,["1.4.3",true]}}]}], + [{"1.4.2", + [{delete_module,'Elixir.Archethic.Contracts.Conditions.Subjects'}, + {delete_module,'Elixir.Archethic.Contracts.Conditions'}, + {delete_module,'Elixir.Archethic.Contracts.Constants'}, + {delete_module,'Elixir.Archethic.Contracts.Contract.ConditionRejected'}, + {delete_module,'Elixir.Archethic.P2P.Message.DashboardData'}, + {delete_module,'Elixir.Archethic.P2P.Message.GetDashboardData'}, + {delete_module,'Elixir.ArchethicWeb.DashboardMetrics'}, + {delete_module,'Elixir.ArchethicWeb.DashboardMetricsAggregator'}, + {update,'Elixir.Archethic.Account.MemTables.StateLedger', + {advanced,[]}, + brutal_purge,soft_purge,[]}, + {update,'Elixir.Archethic.Account.MemTables.TokenLedger', + {advanced,[]}, + brutal_purge,soft_purge,[]}, + {update,'Elixir.Archethic.Account.MemTables.UCOLedger', + {advanced,[]}, + brutal_purge,soft_purge,[]}, + {update,'Elixir.Archethic.BeaconChain.SubsetSupervisor',supervisor}, + {update,'Elixir.Archethic.BeaconChain.Update', + {advanced,[]}, + brutal_purge,soft_purge,[]}, + {load_module,'Elixir.Archethic.Cldr.Currency',brutal_purge,soft_purge,[]}, + {load_module,'Elixir.Archethic.Cldr.Number.Transliterate',brutal_purge, + soft_purge,[]}, + {load_module,'Elixir.Archethic.Contracts.Contract.Failure',brutal_purge, + soft_purge,[]}, + {load_module,'Elixir.Archethic.Contracts.Interpreter.ConditionInterpreter', + brutal_purge,soft_purge,[]}, + {update,'Elixir.Archethic.Contracts.TransactionLookup', + {advanced,[]}, + brutal_purge,soft_purge,[]}, + {update,'Elixir.Archethic.DB.EmbeddedImpl.BootstrapInfo', + {advanced,[]}, + brutal_purge,soft_purge,[]}, + {update,'Elixir.Archethic.DB.EmbeddedImpl.StatsInfo', + {advanced,[]}, + brutal_purge,soft_purge,[]}, + {update,'Elixir.Archethic.Election.Constraints', + {advanced,[]}, + brutal_purge,soft_purge,[]}, + {update,'Elixir.Archethic.Metrics.ETSFlush', + {advanced,[]}, + brutal_purge,soft_purge,[]}, + {update,'Elixir.Archethic.Metrics.MetricSupervisor',supervisor}, + {update,'Elixir.Archethic.OracleChain.MemTable', + {advanced,[]}, + brutal_purge,soft_purge,[]}, + {update,'Elixir.Archethic.P2P.GeoPatch.GeoIP.MaxMindDB', + {advanced,[]}, + brutal_purge,soft_purge,[]}, + {load_module,'Elixir.Archethic.P2P.MessageId',brutal_purge,soft_purge,[]}, + {load_module,'Elixir.Archethic.PubSub',brutal_purge,soft_purge,[]}, + {update,'Elixir.Archethic.Replication.TransactionPool', + {advanced,[]}, + brutal_purge,soft_purge,[]}, + {update,'Elixir.Archethic.Reward.MemTables.RewardTokens', + {advanced,[]}, + brutal_purge,soft_purge,[]}, + {update,'Elixir.Archethic.SharedSecrets.MemTables.NetworkLookup', + {advanced,[]}, + brutal_purge,soft_purge,[]}, + {update,'Elixir.Archethic.SharedSecrets.MemTables.OriginKeyLookup', + {advanced,[]}, + brutal_purge,soft_purge,[]}, + {update,'Elixir.Archethic.TransactionChain.MemTables.KOLedger', + {advanced,[]}, + brutal_purge,soft_purge,[]}, + {update,'Elixir.Archethic.TransactionChain.MemTables.PendingLedger', + {advanced,[]}, + brutal_purge,soft_purge,[]}, + {update,'Elixir.Archethic.Utils.JobCache', + {advanced,[]}, + brutal_purge,soft_purge,[]}, + {update,'Elixir.Archethic.Utils.JobConductor', + {advanced,[]}, + brutal_purge,soft_purge,[]}, + {update,'Elixir.Archethic.Utils.PortHandler', + {advanced,[]}, + brutal_purge,soft_purge,[]}, + {update,'Elixir.Archethic.Utils.Regression.Benchmark.SeedHolder', + {advanced,[]}, + brutal_purge,soft_purge,[]}, + {load_module,'Elixir.ArchethicWeb.API.JsonRPC.Error',brutal_purge, + soft_purge,[]}, + {load_module,'Elixir.ArchethicWeb.Explorer.DashboardView',brutal_purge, + soft_purge,[]}, + {update,'Elixir.ArchethicWeb.Explorer.ExplorerLive.TopTransactionsCache', + {advanced,[]}, + brutal_purge,soft_purge,[]}, + {update,'Elixir.ArchethicWeb.Explorer.FaucetRateLimiter', + {advanced,[]}, + brutal_purge,soft_purge,[]}, + {update,'Elixir.ArchethicWeb.Explorer.TransactionCache', + {advanced,[]}, + brutal_purge,soft_purge,[]}, + {load_module,'Elixir.ArchethicWeb.ExplorerRouter',brutal_purge,soft_purge, + []}, + {update,'Elixir.ArchethicWeb.Supervisor',supervisor}, + {load_module,'Elixir.Archethic.Contracts.Contract',brutal_purge, + soft_purge, + ['Elixir.Archethic.Contracts.Interpreter']}, + {load_module,'Elixir.Archethic.Contracts.Interpreter.ConditionValidator', + brutal_purge,soft_purge, + ['Elixir.Archethic.Contracts.Interpreter']}, + {load_module,'Elixir.Archethic.Contracts.Interpreter.Legacy.ConditionInterpreter', + brutal_purge,soft_purge, + ['Elixir.Archethic.Contracts.Interpreter']}, + {load_module,'Elixir.Archethic.Contracts.Interpreter.Library.Common.ChainImpl', + brutal_purge,soft_purge, + ['Elixir.Archethic.Utils']}, + {load_module,'Elixir.Archethic.Contracts.Interpreter.Library.Common.ContractImpl', + brutal_purge,soft_purge, + ['Elixir.Archethic.Contracts']}, + {update,'Elixir.Archethic.Crypto.Ed25519.LibSodiumPort', + {advanced,[]}, + brutal_purge,soft_purge, + ['Elixir.Archethic.Utils.PortHandler']}, + {update,'Elixir.Archethic.Crypto.NodeKeystore.Origin.SoftwareImpl', + {advanced,[]}, + brutal_purge,soft_purge, + ['Elixir.Archethic.Utils']}, + {update,'Elixir.Archethic.Crypto.NodeKeystore.Origin.TPMImpl', + {advanced,[]}, + brutal_purge,soft_purge, + ['Elixir.Archethic.Utils.PortHandler']}, + {update,'Elixir.Archethic.Crypto.NodeKeystore.SoftwareImpl', + {advanced,[]}, + brutal_purge,soft_purge, + ['Elixir.Archethic.Utils']}, + {update,'Elixir.Archethic.Crypto.SharedSecretsKeystore.SoftwareImpl', + {advanced,[]}, + brutal_purge,soft_purge, + ['Elixir.Archethic.TransactionChain']}, + {update,'Elixir.Archethic.DB.EmbeddedImpl.ChainIndex', + {advanced,[]}, + brutal_purge,soft_purge, + ['Elixir.Archethic.DB.EmbeddedImpl.ChainWriter']}, + {update,'Elixir.Archethic.DB.EmbeddedImpl.InputsWriter', + {advanced,[]}, + brutal_purge,soft_purge, + ['Elixir.Archethic.Utils']}, + {update,'Elixir.Archethic.DB.EmbeddedImpl.P2PView', + {advanced,[]}, + brutal_purge,soft_purge, + ['Elixir.Archethic.Utils']}, + {update,'Elixir.Archethic.Election.HypergeometricDistribution', + {advanced,[]}, + brutal_purge,soft_purge, + ['Elixir.Archethic.PubSub']}, + {update,'Elixir.Archethic.Governance.Pools.MemTableLoader', + {advanced,[]}, + brutal_purge,soft_purge, + ['Elixir.Archethic.TransactionChain']}, + {load_module,'Elixir.Archethic.Mining.ProofOfWork',brutal_purge, + soft_purge, + ['Elixir.Archethic.Contracts']}, + {update,'Elixir.Archethic.OracleChain.Services.HydratingCache', + {advanced,[]}, + brutal_purge,soft_purge, + ['Elixir.Archethic.Utils']}, + {update,'Elixir.Archethic.P2P.BootstrappingSeeds', + {advanced,[]}, + brutal_purge,soft_purge, + ['Elixir.Archethic.PubSub']}, + {update,'Elixir.Archethic.P2P.Listener', + {advanced,[]}, + brutal_purge,soft_purge, + ['Elixir.Archethic.PubSub']}, + {update,'Elixir.Archethic.P2P.MemTable', + {advanced,[]}, + brutal_purge,soft_purge, + ['Elixir.Archethic.PubSub']}, + {load_module,'Elixir.Archethic.P2P.Message.GetNetworkStats',brutal_purge, + soft_purge, + ['Elixir.Archethic.BeaconChain.Subset.StatsCollector']}, + {load_module,'Elixir.Archethic.P2P.Message.GetUnspentOutputs', + brutal_purge,soft_purge, + ['Elixir.Archethic.Utils']}, + {update,'Elixir.Archethic.SelfRepair.RepairWorker', + {advanced,[]}, + brutal_purge,soft_purge, + ['Elixir.Archethic.SelfRepair']}, + {load_module,'Elixir.Archethic.Utils',brutal_purge,soft_purge, + ['Elixir.Archethic.TransactionChain']}, + {load_module,'Elixir.Archethic.TransactionChain.Transaction.ValidationStamp.LedgerOperations.TransactionMovement', + brutal_purge,soft_purge, + ['Elixir.Archethic.Utils']}, + {load_module,'Elixir.ArchethicWeb.API.JsonRPC.Method.CallContractFunction', + brutal_purge,soft_purge, + ['Elixir.Archethic.Contracts']}, + {load_module,'Elixir.ArchethicWeb.Explorer.DashboardLive',brutal_purge, + soft_purge, + ['Elixir.Archethic.Utils']}, + {update,'Elixir.Archethic.BeaconChain.SummaryTimer', + {advanced,[]}, + brutal_purge,soft_purge, + ['Elixir.Archethic.PubSub','Elixir.Archethic.Utils']}, + {update,'Elixir.Archethic.DB.EmbeddedImpl.ChainWriter', + {advanced,[]}, + brutal_purge,soft_purge, + ['Elixir.Archethic.DB.EmbeddedImpl.ChainIndex', + 'Elixir.Archethic.Utils']}, + {load_module,'Elixir.Archethic.Election',brutal_purge,soft_purge, + ['Elixir.Archethic.Election.Constraints', + 'Elixir.Archethic.Utils']}, + {update,'Elixir.Archethic.TransactionChain.MemTablesLoader', + {advanced,[]}, + brutal_purge,soft_purge, + ['Elixir.Archethic.Contracts.Contract', + 'Elixir.Archethic.TransactionChain.MemTables.PendingLedger']}, + {update,'Elixir.ArchethicWeb.TransactionSubscriber', + {advanced,[]}, + brutal_purge,soft_purge, + ['Elixir.Archethic.Election','Elixir.Archethic.PubSub']}, + {load_module,'Elixir.Archethic.Application',brutal_purge,soft_purge, + ['Elixir.Archethic.OracleChain', + 'Elixir.Archethic.SelfRepair','Elixir.Archethic.Utils']}, + {load_module,'Elixir.Archethic.BeaconChain.NetworkCoordinates', + brutal_purge,soft_purge, + ['Elixir.Archethic.BeaconChain.Subset.SummaryCache', + 'Elixir.Archethic.Election','Elixir.Archethic.Utils']}, + {update,'Elixir.Archethic.BeaconChain.SlotTimer', + {advanced,[]}, + brutal_purge,soft_purge, + ['Elixir.Archethic.BeaconChain.SummaryTimer', + 'Elixir.Archethic.PubSub','Elixir.Archethic.Utils']}, + {update,'Elixir.Archethic.BeaconChain.Subset.SummaryCache', + {advanced,[]}, + brutal_purge,soft_purge, + ['Elixir.Archethic.BeaconChain.SummaryTimer', + 'Elixir.Archethic.PubSub','Elixir.Archethic.Utils']}, + {load_module,'Elixir.Archethic.TransactionChain',brutal_purge,soft_purge, + ['Elixir.Archethic.Election','Elixir.Archethic.P2P.Message', + 'Elixir.Archethic.TransactionChain.MemTables.KOLedger', + 'Elixir.Archethic.TransactionChain.MemTables.PendingLedger', + 'Elixir.Archethic.TransactionChain.MemTablesLoader']}, + {update,'Elixir.Archethic.Utils.DetectNodeResponsiveness', + {advanced,[]}, + brutal_purge,soft_purge, + ['Elixir.Archethic.TransactionChain']}, + {update,'Elixir.Archethic.P2P.Client.Connection', + {advanced,[]}, + brutal_purge,soft_purge, + ['Elixir.Archethic.P2P.Message','Elixir.Archethic.Utils']}, + {update,'Elixir.Archethic.Reward.MemTablesLoader', + {advanced,[]}, + brutal_purge,soft_purge, + ['Elixir.Archethic.Reward.MemTables.RewardTokens', + 'Elixir.Archethic.TransactionChain']}, + {update,'Elixir.Archethic.SelfRepair.Scheduler', + {advanced,[]}, + brutal_purge,soft_purge, + ['Elixir.Archethic.PubSub','Elixir.Archethic.Utils']}, + {update,'Elixir.Archethic.Networking.Scheduler', + {advanced,[]}, + brutal_purge,soft_purge, + ['Elixir.Archethic.PubSub','Elixir.Archethic.TransactionChain', + 'Elixir.Archethic.Utils']}, + {update,'Elixir.Archethic.OracleChain.MemTableLoader', + {advanced,[]}, + brutal_purge,soft_purge, + ['Elixir.Archethic.OracleChain', + 'Elixir.Archethic.OracleChain.MemTable', + 'Elixir.Archethic.TransactionChain']}, + {update,'Elixir.Archethic.P2P.MemTableLoader', + {advanced,[]}, + brutal_purge,soft_purge, + ['Elixir.Archethic.P2P.MemTable','Elixir.Archethic.SelfRepair', + 'Elixir.Archethic.TransactionChain']}, + {load_module,'Elixir.Archethic.P2P.Message.ReplicateTransaction', + brutal_purge,soft_purge, + ['Elixir.Archethic.Election', + 'Elixir.Archethic.TransactionChain', + 'Elixir.Archethic.Utils']}, + {update,'Elixir.Archethic.Account.MemTablesLoader', + {advanced,[]}, + brutal_purge,soft_purge, + ['Elixir.Archethic.Account.MemTables.StateLedger', + 'Elixir.Archethic.Account.MemTables.TokenLedger', + 'Elixir.Archethic.Account.MemTables.UCOLedger', + 'Elixir.Archethic.TransactionChain']}, + {update,'Elixir.Archethic.BeaconChain.Subset.StatsCollector', + {advanced,[]}, + brutal_purge,soft_purge, + ['Elixir.Archethic.BeaconChain.NetworkCoordinates', + 'Elixir.Archethic.Election','Elixir.Archethic.PubSub', + 'Elixir.Archethic.Utils.JobCache']}, + {load_module,'Elixir.Archethic.Contracts.Interpreter',brutal_purge, + soft_purge, + ['Elixir.Archethic.Contracts.Contract', + 'Elixir.Archethic.Contracts.Interpreter.ConditionInterpreter', + 'Elixir.Archethic.Contracts.Interpreter.ConditionValidator', + 'Elixir.Archethic.Utils']}, + {load_module,'Elixir.Archethic.Contracts',brutal_purge,soft_purge, + ['Elixir.Archethic.Contracts.Contract', + 'Elixir.Archethic.Contracts.Interpreter', + 'Elixir.Archethic.Contracts.Loader', + 'Elixir.Archethic.Contracts.TransactionLookup']}, + {load_module,'Elixir.Archethic.Mining.SmartContractValidation', + brutal_purge,soft_purge, + ['Elixir.Archethic.Contracts', + 'Elixir.Archethic.Contracts.Contract', + 'Elixir.Archethic.Election', + 'Elixir.Archethic.TransactionChain']}, + {load_module,'Elixir.Archethic.OracleChain',brutal_purge,soft_purge, + ['Elixir.Archethic.OracleChain.MemTable', + 'Elixir.Archethic.OracleChain.MemTableLoader', + 'Elixir.Archethic.OracleChain.Scheduler', + 'Elixir.Archethic.Utils']}, + {update,'Elixir.Archethic.SelfRepair.NetworkView', + {advanced,[]}, + brutal_purge,soft_purge, + ['Elixir.Archethic.OracleChain','Elixir.Archethic.PubSub', + 'Elixir.Archethic.TransactionChain']}, + {update,'Elixir.Archethic.SelfRepair.Notifier', + {advanced,[]}, + brutal_purge,soft_purge, + ['Elixir.Archethic.Election','Elixir.Archethic.TransactionChain', + 'Elixir.Archethic.Utils']}, + {load_module,'Elixir.ArchethicWeb.API.JsonRPC.Method.EstimateTransactionFee', + brutal_purge,soft_purge, + ['Elixir.Archethic.Mining.SmartContractValidation', + 'Elixir.Archethic.OracleChain', + 'Elixir.Archethic.TransactionChain']}, + {load_module,'Elixir.ArchethicWeb.API.JsonRPC.Method.SimulateContractExecution', + brutal_purge,soft_purge, + ['Elixir.Archethic.Contracts', + 'Elixir.Archethic.Contracts.Contract', + 'Elixir.ArchethicWeb.API.JsonRPC.Error']}, + {load_module,'Elixir.ArchethicWeb.API.REST.TransactionController', + brutal_purge,soft_purge, + ['Elixir.Archethic.Contracts','Elixir.Archethic.OracleChain', + 'Elixir.ArchethicWeb.TransactionSubscriber']}, + {load_module,'Elixir.Archethic.P2P.Message.ValidateSmartContractCall', + brutal_purge,soft_purge, + ['Elixir.Archethic.Contracts', + 'Elixir.Archethic.Contracts.Contract', + 'Elixir.Archethic.OracleChain', + 'Elixir.Archethic.TransactionChain']}, + {load_module,'Elixir.Archethic.P2P.Message',brutal_purge,soft_purge, + ['Elixir.Archethic.P2P.Message.GetNetworkStats', + 'Elixir.Archethic.P2P.Message.GetUnspentOutputs', + 'Elixir.Archethic.P2P.Message.ReplicateTransaction', + 'Elixir.Archethic.P2P.Message.ValidateSmartContractCall']}, + {update,'Elixir.Archethic.Reward.Scheduler', + {advanced,[]}, + brutal_purge,soft_purge, + ['Elixir.Archethic.Election','Elixir.Archethic.PubSub', + 'Elixir.Archethic.Utils', + 'Elixir.Archethic.Utils.DetectNodeResponsiveness']}, + {update,'Elixir.Archethic.SharedSecrets.NodeRenewalScheduler', + {advanced,[]}, + brutal_purge,soft_purge, + ['Elixir.Archethic.Election','Elixir.Archethic.PubSub', + 'Elixir.Archethic.Utils', + 'Elixir.Archethic.Utils.DetectNodeResponsiveness']}, + {update,'Elixir.Archethic.SharedSecrets.MemTablesLoader', + {advanced,[]}, + brutal_purge,soft_purge, + ['Elixir.Archethic.SharedSecrets.MemTables.NetworkLookup', + 'Elixir.Archethic.SharedSecrets.MemTables.OriginKeyLookup', + 'Elixir.Archethic.SharedSecrets.NodeRenewalScheduler', + 'Elixir.Archethic.TransactionChain','Elixir.Archethic.Utils']}, + {update,'Elixir.Archethic.Contracts.Worker', + {advanced,[]}, + brutal_purge,soft_purge, + ['Elixir.Archethic.Contracts', + 'Elixir.Archethic.Contracts.Contract', + 'Elixir.Archethic.Election','Elixir.Archethic.PubSub', + 'Elixir.Archethic.TransactionChain','Elixir.Archethic.Utils', + 'Elixir.Archethic.Utils.DetectNodeResponsiveness']}, + {update,'Elixir.Archethic.Contracts.Loader', + {advanced,[]}, + brutal_purge,soft_purge, + ['Elixir.Archethic.Contracts', + 'Elixir.Archethic.Contracts.Contract', + 'Elixir.Archethic.Contracts.TransactionLookup', + 'Elixir.Archethic.Contracts.Worker', + 'Elixir.Archethic.TransactionChain']}, + {update,'Elixir.Archethic.OracleChain.Scheduler', + {advanced,[]}, + brutal_purge,soft_purge, + ['Elixir.Archethic.Election','Elixir.Archethic.OracleChain', + 'Elixir.Archethic.PubSub','Elixir.Archethic.TransactionChain', + 'Elixir.Archethic.Utils', + 'Elixir.Archethic.Utils.DetectNodeResponsiveness']}, + {load_module,'Elixir.Archethic.Replication.TransactionValidator', + brutal_purge,soft_purge, + ['Elixir.Archethic.Contracts', + 'Elixir.Archethic.Contracts.Contract', + 'Elixir.Archethic.Election', + 'Elixir.Archethic.Mining.SmartContractValidation', + 'Elixir.Archethic.OracleChain', + 'Elixir.Archethic.TransactionChain', + 'Elixir.Archethic.TransactionChain.Transaction.ValidationStamp.LedgerOperations.TransactionMovement']}, + {load_module,'Elixir.Archethic.SelfRepair',brutal_purge,soft_purge, + ['Elixir.Archethic.Contracts','Elixir.Archethic.Election', + 'Elixir.Archethic.P2P.Message', + 'Elixir.Archethic.SelfRepair.RepairWorker', + 'Elixir.Archethic.SelfRepair.Scheduler', + 'Elixir.Archethic.TransactionChain', + 'Elixir.Archethic.Utils']}, + {load_module,'Elixir.Archethic.Mining.ValidationContext',brutal_purge, + soft_purge, + ['Elixir.Archethic.Contracts', + 'Elixir.Archethic.Contracts.Contract', + 'Elixir.Archethic.Election', + 'Elixir.Archethic.Mining.ProofOfWork', + 'Elixir.Archethic.Mining.SmartContractValidation', + 'Elixir.Archethic.OracleChain', + 'Elixir.Archethic.TransactionChain', + 'Elixir.Archethic.TransactionChain.Transaction.ValidationStamp.LedgerOperations.TransactionMovement', + 'Elixir.Archethic.Utils']}, + {update,'Elixir.Archethic.Mining.StandaloneWorkflow', + {advanced,[]}, + brutal_purge,soft_purge, + ['Elixir.Archethic.Election', + 'Elixir.Archethic.Mining.ValidationContext', + 'Elixir.Archethic.P2P.Message','Elixir.Archethic.PubSub', + 'Elixir.Archethic.TransactionChain']}, + {update,'Elixir.Archethic.Mining.DistributedWorkflow', + {advanced,[]}, + brutal_purge,soft_purge, + ['Elixir.Archethic.Election', + 'Elixir.Archethic.Mining.ValidationContext', + 'Elixir.Archethic.P2P.Message','Elixir.Archethic.PubSub', + 'Elixir.Archethic.TransactionChain','Elixir.Archethic.Utils']}, + {update,'Elixir.Archethic.BeaconChain.Subset', + {advanced,[]}, + brutal_purge,soft_purge, + ['Elixir.Archethic.BeaconChain.NetworkCoordinates', + 'Elixir.Archethic.BeaconChain.SlotTimer', + 'Elixir.Archethic.BeaconChain.Subset.StatsCollector', + 'Elixir.Archethic.BeaconChain.Subset.SummaryCache', + 'Elixir.Archethic.BeaconChain.SummaryTimer', + 'Elixir.Archethic.Election','Elixir.Archethic.PubSub', + 'Elixir.Archethic.SelfRepair','Elixir.Archethic.Utils']}, + {add_module,'Elixir.Archethic.Contracts.ContractConditions.Subjects'}, + {add_module,'Elixir.Archethic.Contracts.ContractConditions'}, + {add_module,'Elixir.Archethic.Contracts.ContractConstants'}, + {add_module,'Elixir.Archethic.Metrics.Collector.MetricsEndpoint'}, + {add_module,'Elixir.Archethic.Metrics.Collector'}, + {add_module,'Elixir.Archethic.Metrics.Parser'}, + {add_module,'Elixir.Archethic.Metrics.Poller'}, + {add_module,'Elixir.Archethic.OracleChain.Services.UCOPrice.Providers.CoinMarketCapUniris'}]}]}.