Logging
Index
Logging
This document introduces the logging functionality internal to Anoma and showcases some some of its debugging features. First, let us set up a new environment.
alias Anoma.Node.{Ordering, Mempool, Router, Storage}
import TestHelper.Nock
storage = %Storage{
qualified: AnomaTest.LoggerDoc.Qualified,
order: AnomaTest.LoggerDoc.Order
}
name = :loggerdoc
snapshot_path = [:my_special_nock_snaphsot | 0]
{:ok, nodes} =
Anoma.Node.start_link_or_find_instance(
name: name,
use_rocks: false,
settings:
{:new_storage,
[
snapshot_path: snapshot_path,
storage_data: storage,
block_storage: :dump_blocks,
ping_time: :no_timer
]
|> Anoma.Node.start_min()}
)
node = Anoma.Node.state(nodes)
:ok
:ok
Logger as an Engine
The Logger in Anoma is an engine which can be used as the usual logging device via connecting to other engines. The intended use of the Logging engine is to start it alongside the node letting the other engines store its address info. So, e.g. our primary :anoma
node launched at application startup will have a dedicated Logging engine:
logger = node.logger
%Anoma.Node.Router.Addr{
server: :"Anoma.Node.Logger HjryahDk+vQ6qtFk7r6aeydM31heWNXRbSL0uhA+KmI=",
id: %Anoma.Crypto.Id.Extern{
encrypt: <<230, 134, 45, 59, 48, 241, 215, 184, 53, 196, 224, 184, 103, 239, 83, 231, 220, 144,
234, 233, 14, 163, 59, 67, 134, 163, 174, 139, 120, 92, 220, 90>>,
sign: <<30, 58, 242, 106, 16, 228, 250, 244, 58, 170, 209, 100, 238, 190, 154, 123, 39, 76, 223,
88, 94, 88, 213, 209, 109, 34, 244, 186, 16, 62, 42, 98>>
},
router: %Anoma.Node.Router.Addr{
server: :"Anoma.Node.Router +D8Iwo2a2jICOhmeRyKgnigMiRSSmPEgCawDGI7LHiQ=",
id: %Anoma.Crypto.Id.Extern{
encrypt: <<119, 208, 33, 8, 239, 236, 229, 232, 138, 95, 91, 188, 195, 79, 17, 234, 79, 208,
198, 219, 11, 153, 108, 18, 6, 216, 210, 76, 227, 242, 219, 19>>,
sign: <<248, 63, 8, 194, 141, 154, 218, 50, 2, 58, 25, 158, 71, 34, 160, 158, 40, 12, 137, 20,
146, 152, 241, 32, 9, 172, 3, 24, 142, 203, 30, 36>>
},
router: :"Anoma.Node.Router +D8Iwo2a2jICOhmeRyKgnigMiRSSmPEgCawDGI7LHiQ="
}
}
Moreover, this address will be stored in appropriate fields of other engines such as the Executor:
alias Anoma.Node.Router.Engine
ex_logger = Engine.get_state(node.executor).logger
ex_logger == logger
true
As an engine, it has its own dependencies for startup. In particular, we require the Logger having an access to:
- the Clock engine for timestamping
- Storage where we dump the info to
Engine.get_state(logger)
%Anoma.Node.Logger{
clock: %Anoma.Node.Router.Addr{
server: :"Anoma.Node.Clock NztG/xI1ol8hcLhnaDft5j4nK9tJ0TcI43JiaRQET0g=",
id: %Anoma.Crypto.Id.Extern{
encrypt: <<247, 210, 98, 17, 246, 94, 217, 21, 214, 95, 6, 237, 31, 207, 149, 20, 45, 197,
197, 146, 40, 3, 198, 20, 242, 136, 62, 8, 172, 242, 0, 91>>,
sign: <<55, 59, 70, 255, 18, 53, 162, 95, 33, 112, 184, 103, 104, 55, 237, 230, 62, 39, 43,
219, 73, 209, 55, 8, 227, 114, 98, 105, 20, 4, 79, 72>>
},
router: %Anoma.Node.Router.Addr{
server: :"Anoma.Node.Router +D8Iwo2a2jICOhmeRyKgnigMiRSSmPEgCawDGI7LHiQ=",
id: %Anoma.Crypto.Id.Extern{
encrypt: <<119, 208, 33, 8, 239, 236, 229, 232, 138, 95, 91, 188, 195, 79, 17, 234, 79, 208,
198, 219, 11, 153, 108, 18, 6, 216, 210, 76, 227, 242, 219, 19>>,
sign: <<248, 63, 8, 194, 141, 154, 218, 50, 2, 58, 25, 158, 71, 34, 160, 158, 40, 12, 137,
20, 146, 152, 241, 32, 9, 172, 3, 24, 142, 203, 30, 36>>
},
router: :"Anoma.Node.Router +D8Iwo2a2jICOhmeRyKgnigMiRSSmPEgCawDGI7LHiQ="
}
},
storage: %Anoma.Node.Router.Addr{
server: :"Anoma.Node.Storage PFSZ/7snPaFarWcLK0dDNTlznyAo3F+G+tq1zmNfe+A=",
id: %Anoma.Crypto.Id.Extern{
encrypt: <<103, 181, 194, 163, 250, 93, 164, 234, 227, 159, 152, 54, 45, 216, 81, 68, 165, 66,
172, 210, 22, 27, 72, 168, 184, 202, 42, 249, 133, 43, 92, 120>>,
sign: <<60, 84, 153, 255, 187, 39, 61, 161, 90, 173, 103, 11, 43, 71, 67, 53, 57, 115, 159,
32, 40, 220, 95, 134, 250, 218, 181, 206, 99, 95, 123, 224>>
},
router: %Anoma.Node.Router.Addr{
server: :"Anoma.Node.Router +D8Iwo2a2jICOhmeRyKgnigMiRSSmPEgCawDGI7LHiQ=",
id: %Anoma.Crypto.Id.Extern{
encrypt: <<119, 208, 33, 8, 239, 236, 229, 232, 138, 95, 91, 188, 195, 79, 17, 234, 79, 208,
198, 219, 11, 153, 108, 18, 6, 216, 210, 76, 227, 242, 219, 19>>,
sign: <<248, 63, 8, 194, 141, 154, 218, 50, 2, 58, 25, 158, 71, 34, 160, 158, 40, 12, 137,
20, 146, 152, 241, 32, 9, 172, 3, 24, 142, 203, 30, 36>>
},
router: :"Anoma.Node.Router +D8Iwo2a2jICOhmeRyKgnigMiRSSmPEgCawDGI7LHiQ="
}
}
}
Logging API
The Logger provides functionality to add new and request the stored info using
-
add/3
-
get/1
-
get/2
The add
function awaits a logger address, an atom specifying the logging urgency and a message accompanying it. The engine then stores it using Anoma.Storage.put
functionality.
alias Anoma.Node.Logger
Logger.add(logger, :info, "This is a logger message")
:ok
The get/1
function awaits a logger address, after which it outputs all the info that the logger has stored:
Logger.get(logger)
[
{[
%Anoma.Crypto.Id.Extern{
encrypt: <<230, 134, 45, 59, 48, 241, 215, 184, 53, 196, 224, 184, 103, 239, 83, 231, 220,
144, 234, 233, 14, 163, 59, 67, 134, 163, 174, 139, 120, 92, 220, 90>>,
sign: <<30, 58, 242, 106, 16, 228, 250, 244, 58, 170, 209, 100, 238, 190, 154, 123, 39, 76,
223, 88, 94, 88, 213, 209, 109, 34, 244, 186, 16, 62, 42, 98>>
},
#PID<0.599.0>,
12815,
:info
], "This is a logger message"}
]
All elements of the stored info have the same structure: they are 2-tuples. The left element is a list. Its first element is the external ID of our logger, followed by the PID of the process that sent the message (in this case self
), a timestamp, as well as the supplied atom. The right element is the message.
Generally it is not the user who sends the logging messages but the engines themselves. Almost every public engine API has some logging that happens during function execution:
Kino.Process.render_seq_trace(
[Process.whereis(node.ordering.server)],
fn ->
Ordering.next_order(node.ordering)
end,
message_label: &Anoma.Utility.message_label/1
)
sequenceDiagram
participant 0 AS self();
participant 2 AS Anoma.Node.Logger HjryahDk+vQ6qtFk7r6aeydM31heWNXRbSL0uhA+KmI=;
participant 1 AS Anoma.Node.Ordering J+SRpK9QFPQakfr7mUzFfysUulMbQ9LD+Qc2a7l1uF8=;
0->>1: CALL: next_order
1->>2: ADD LEVEL: info
1->>0: INFO: tuple
1
We can now use get/2
by using both the Loger address and the address of the engine whose logging info we want to see. This fetches only the info relevant to said engine.
Logger.get(logger, node.ordering)
[
{[
%Anoma.Crypto.Id.Extern{
encrypt: <<230, 134, 45, 59, 48, 241, 215, 184, 53, 196, 224, 184, 103, 239, 83, 231, 220,
144, 234, 233, 14, 163, 59, 67, 134, 163, 174, 139, 120, 92, 220, 90>>,
sign: <<30, 58, 242, 106, 16, 228, 250, 244, 58, 170, 209, 100, 238, 190, 154, 123, 39, 76,
223, 88, 94, 88, 213, 209, 109, 34, 244, 186, 16, 62, 42, 98>>
},
%Anoma.Crypto.Id.Extern{
encrypt: <<88, 234, 42, 32, 205, 162, 194, 238, 222, 188, 180, 222, 111, 108, 226, 209, 156,
108, 68, 14, 149, 105, 186, 130, 229, 110, 153, 63, 140, 167, 53, 116>>,
sign: <<39, 228, 145, 164, 175, 80, 20, 244, 26, 145, 250, 251, 153, 76, 197, 127, 43, 20,
186, 83, 27, 67, 210, 195, 249, 7, 54, 107, 185, 117, 184, 95>>
},
19392,
:info
], "Requested next order: 1"}
]
Note that instead of a PID we now see the external ID of the engine. Logger checks whether what sent the request was a registered engine or some general process which sends a message. In the former case we use the external ID of the engine, in the latter just the PID. We can similarly use get/2
with a PID instead of an address.
Logger.get(logger, self())
[
{[
%Anoma.Crypto.Id.Extern{
encrypt: <<230, 134, 45, 59, 48, 241, 215, 184, 53, 196, 224, 184, 103, 239, 83, 231, 220,
144, 234, 233, 14, 163, 59, 67, 134, 163, 174, 139, 120, 92, 220, 90>>,
sign: <<30, 58, 242, 106, 16, 228, 250, 244, 58, 170, 209, 100, 238, 190, 154, 123, 39, 76,
223, 88, 94, 88, 213, 209, 109, 34, 244, 186, 16, 62, 42, 98>>
},
#PID<0.599.0>,
12815,
:info
], "This is a logger message"}
]
While the count of all the logging messages is now up to 2:
Logger.get(logger)
[
{[
%Anoma.Crypto.Id.Extern{
encrypt: <<230, 134, 45, 59, 48, 241, 215, 184, 53, 196, 224, 184, 103, 239, 83, 231, 220,
144, 234, 233, 14, 163, 59, 67, 134, 163, 174, 139, 120, 92, 220, 90>>,
sign: <<30, 58, 242, 106, 16, 228, 250, 244, 58, 170, 209, 100, 238, 190, 154, 123, 39, 76,
223, 88, 94, 88, 213, 209, 109, 34, 244, 186, 16, 62, 42, 98>>
},
%Anoma.Crypto.Id.Extern{
encrypt: <<88, 234, 42, 32, 205, 162, 194, 238, 222, 188, 180, 222, 111, 108, 226, 209, 156,
108, 68, 14, 149, 105, 186, 130, 229, 110, 153, 63, 140, 167, 53, 116>>,
sign: <<39, 228, 145, 164, 175, 80, 20, 244, 26, 145, 250, 251, 153, 76, 197, 127, 43, 20,
186, 83, 27, 67, 210, 195, 249, 7, 54, 107, 185, 117, 184, 95>>
},
19392,
:info
], "Requested next order: 1"},
{[
%Anoma.Crypto.Id.Extern{
encrypt: <<230, 134, 45, 59, 48, 241, 215, 184, 53, 196, 224, 184, 103, 239, 83, 231, 220,
144, 234, 233, 14, 163, 59, 67, 134, 163, 174, 139, 120, 92, 220, 90>>,
sign: <<30, 58, 242, 106, 16, 228, 250, 244, 58, 170, 209, 100, 238, 190, 154, 123, 39, 76,
223, 88, 94, 88, 213, 209, 109, 34, 244, 186, 16, 62, 42, 98>>
},
#PID<0.599.0>,
12815,
:info
], "This is a logger message"}
]
Using the Logger
Using the above functionality the user is able to debug the system in case of errors. Here is a trivial example of that based on an existing Mempool test. Suppose the user is testing Mempool capabilities, namely count iteration for block execution. However, they forget to use the zero counter. First the user sets up the Mempool:
key = 555
storage = Ordering.get_storage(node.ordering)
increment = increment_counter_val(key)
Mempool.hard_reset(node.mempool)
:ok
We then reproduce the setting by incrementing the counter without incrementing using the zero counter and execute. Here we assume the uses simply did not notice that the zero counter has not been submitted.
pid_one = Mempool.tx(node.mempool, {:kv, increment}).pid
Mempool.execute(node.mempool)
22:25:25.390 [error] Worker failed! :error
{:ok, 1}
We encounter an error which is signalled by the logger. Namely our worker has failed. Let us check the appropriate worker log:
Logger.get(logger, pid_one)
[
{[
%Anoma.Crypto.Id.Extern{
encrypt: <<230, 134, 45, 59, 48, 241, 215, 184, 53, 196, 224, 184, 103, 239, 83, 231, 220,
144, 234, 233, 14, 163, 59, 67, 134, 163, 174, 139, 120, 92, 220, 90>>,
sign: <<30, 58, 242, 106, 16, 228, 250, 244, 58, 170, 209, 100, 238, 190, 154, 123, 39, 76,
223, 88, 94, 88, 213, 209, 109, 34, 244, 186, 16, 62, 42, 98>>
},
#PID<0.761.0>,
35620,
:error
], "Worker failed! :error"},
{[
%Anoma.Crypto.Id.Extern{
encrypt: <<230, 134, 45, 59, 48, 241, 215, 184, 53, 196, 224, 184, 103, 239, 83, 231, 220,
144, 234, 233, 14, 163, 59, 67, 134, 163, 174, 139, 120, 92, 220, 90>>,
sign: <<30, 58, 242, 106, 16, 228, 250, 244, 58, 170, 209, 100, 238, 190, 154, 123, 39, 76,
223, 88, 94, 88, 213, 209, 109, 34, 244, 186, 16, 62, 42, 98>>
},
#PID<0.761.0>,
35621,
:info
],
"Taking snapshot key :my_special_nock_snaphsot in storage %Anoma.Node.Router.Addr{server: :\"Anoma.Node.Storage PFSZ/7snPaFarWcLK0dDNTlznyAo3F+G+tq1zmNfe+A=\", id: %Anoma.Crypto.Id.Extern{encrypt: <<103, 181, 194, 163, 250, 93, 164, 234, 227, 159, 152, 54, 45, 216, 81, 68, 165, 66, 172, 210, 22, 27, 72, 168, 184, 202, 42, 249, 133, 43, 92, 120>>, sign: <<60, 84, 153, 255, 187, 39, 61, 161, 90, 173, 103, 11, 43, 71, 67, 53, 57, 115, 159, 32, 40, 220, 95, 134, 250, 218, 181, 206, 99, 95, 123, 224>>}, router: %Anoma.Node.Router.Addr{server: :\"Anoma.Node.Router +D8Iwo2a2jICOhmeRyKgnigMiRSSmPEgCawDGI7LHiQ=\", id: %Anoma.Crypto.Id.Extern{encrypt: <<119, 208, 33, 8, 239, 236, 229, 232, 138, 95, 91, 188, 195, 79, 17, 234, 79, 208, 198, 219, 11, 153, 108, 18, 6, 216, 210, 76, 227, 242, 219, 19>>, sign: <<248, 63, 8, 194, 141, 154, 218, 50, 2, 58, 25, 158, 71, 34, 160, 158, 40, 12, 137, 20, 146, 152, 241, 32, 9, 172, 3, 24, 142, 203, 30, 36>>}, router: :\"Anoma.Node.Router +D8Iwo2a2jICOhmeRyKgnigMiRSSmPEgCawDGI7LHiQ=\"}}"},
{[
%Anoma.Crypto.Id.Extern{
encrypt: <<230, 134, 45, 59, 48, 241, 215, 184, 53, 196, 224, 184, 103, 239, 83, 231, 220,
144, 234, 233, 14, 163, 59, 67, 134, 163, 174, 139, 120, 92, 220, 90>>,
sign: <<30, 58, 242, 106, 16, 228, 250, 244, 58, 170, 209, 100, 238, 190, 154, 123, 39, 76,
223, 88, 94, 88, 213, 209, 109, 34, 244, 186, 16, 62, 42, 98>>
},
#PID<0.761.0>,
35582,
:info
], "Worker dispatched.\n Order id: 102439050089106441858870166176275840122"},
{[
%Anoma.Crypto.Id.Extern{
encrypt: <<230, 134, 45, 59, 48, 241, 215, 184, 53, 196, 224, 184, 103, 239, 83, 231, 220,
144, 234, 233, 14, 163, 59, 67, 134, 163, 174, 139, 120, 92, 220, 90>>,
sign: <<30, 58, 242, 106, 16, 228, 250, 244, 58, 170, 209, 100, 238, 190, 154, 123, 39, 76,
223, 88, 94, 88, 213, 209, 109, 34, 244, 186, 16, 62, 42, 98>>
},
#PID<0.761.0>,
35620,
:info
], "#PID<0.761.0>: making sure the snapshot is ready"}
]
Here we see that the worker has faced errors only at the end of its life-cycle. Before, it was succesfully waiting for the write ready message. Hence the user may try to probe the entire logging keyspace and notice, e.g. that there has only been one worker dispatched throughout the process:
logger
|> Logger.get()
|> Enum.filter(fn {_list, msg} ->
String.contains?(msg, "Worker dispatched")
end)
[
{[
%Anoma.Crypto.Id.Extern{
encrypt: <<230, 134, 45, 59, 48, 241, 215, 184, 53, 196, 224, 184, 103, 239, 83, 231, 220,
144, 234, 233, 14, 163, 59, 67, 134, 163, 174, 139, 120, 92, 220, 90>>,
sign: <<30, 58, 242, 106, 16, 228, 250, 244, 58, 170, 209, 100, 238, 190, 154, 123, 39, 76,
223, 88, 94, 88, 213, 209, 109, 34, 244, 186, 16, 62, 42, 98>>
},
#PID<0.761.0>,
35582,
:info
], "Worker dispatched.\n Order id: 102439050089106441858870166176275840122"}
]
We can then probe the logger to check what exact transaction has been submitted:
Logger.get(logger, node.mempool)
[
{[
%Anoma.Crypto.Id.Extern{
encrypt: <<230, 134, 45, 59, 48, 241, 215, 184, 53, 196, 224, 184, 103, 239, 83, 231, 220,
144, 234, 233, 14, 163, 59, 67, 134, 163, 174, 139, 120, 92, 220, 90>>,
sign: <<30, 58, 242, 106, 16, 228, 250, 244, 58, 170, 209, 100, 238, 190, 154, 123, 39, 76,
223, 88, 94, 88, 213, 209, 109, 34, 244, 186, 16, 62, 42, 98>>
},
%Anoma.Crypto.Id.Extern{
encrypt: <<253, 166, 38, 84, 229, 119, 215, 124, 49, 53, 22, 169, 126, 117, 33, 219, 26, 173,
225, 187, 54, 10, 32, 100, 21, 61, 121, 142, 141, 98, 107, 82>>,
sign: <<122, 24, 241, 113, 58, 166, 252, 185, 86, 76, 73, 43, 53, 32, 243, 170, 111, 97, 41,
49, 175, 182, 210, 234, 98, 20, 210, 148, 229, 140, 12, 103>>
},
35608,
:info
],
"Transaction added. New pool: [%Anoma.Transaction{transaction: {:kv, [[8, [1 | 0], [1, [1 | 555], 4, 12, [1 | 0], [0 | 6], 1, 555 | 0], 0 | 1], [[8, [1, [[[1 | 0], [0 | 0] | 0], 0, 0, 0, 0, 0, 0 | 0], 0, 0, 0, 0, 0, 0 | 0], [1, 6, [5, [1 | 1], 8, [9, 1406, 0 | 255], 9, 2, 10, [6, 0 | 118], 0 | 2], [6, [5, [1 | 1], 8, [9, 1406, 0 | 255], 9, 2, 10, [6, 0 | 238], 0 | 2], [6, [5, [1 | 1], 8, [9, 1406, 0 | 255], 9, 2, 10, [6, 0 | 958], 0 | 2], [6, [5, [1 | 0], 0 | 446], [0 | 0], 6, [0 | 3570], [1 | 0], 1 | 1], 1 | 1], 1 | 1], 1 | 1], 0 | 1], 8, [1, [[[1 | 0], [0 | 0] | 0], 0, 0, 0, 0, 0, 0 | 0], 0, 0, 0, 0, 0, 0 | 0], [1, 5, [1 | 0], 0 | 446], 0 | 1], [[1 | 0], [8, [1, 0, 0, 0, 0, 0, 0 | 0], [1, 8, [[8, [7, [0 | 7], 8, [9, 47, 0 | 31], 9, 2, 10, [6, 7, [0 | 3], 8, [1 | 0], [1, 8, [6, [6, [3, 0 | 6], [1 | 1], 1 | 0], [0 | 6], 0 | 0], 8, [5, [0 | 14], 0 | 2], 0 | 6], 0 | 1], 0 | 2], 9, 2, 10, [6, 0 | 28], 0 | 2], [8, [7, [0 | 7], 8, [9, 47, 0 | 31], 9, 2, 10, [6, 7, [0 | 3], 9, 181, 0 | 1], 0 | 2], 9, 2, 10, [6, 0 | 58], 0 | 2], [8, [7, [0 | 7], 8, [9, 47, 0 | 31], 9, 2, 10, [6, 7, [0 | 3], 9, 44, 0 | 1], 0 | 2], 9, 2, 10, [6, 0 | 118], 0 | 2], [8, [7, [0 | 7], 8, [9, 47, 0 | 31], 9, 2, 10, [6, 7, [0 | 3], 9, 180, 0 | 1], 0 | 2], 9, 2, 10, [6, 0 | 238], 0 | 2], [8, [7, [0 | 7], 9, 46, 0 | 1], 9, 2, 10, [6, 0 | 478], 0 | 2], [6, [6, [3, 0 | 446], [1 | 1], 1 | 0], [0 | 446], 0 | 0], 6, [5, [1 | 0], 0 | 447], [1 | 0], 0 | 0], 8, [5, [0 | 14], 0 | 2], 0 | 6], 0 | 1], [[8, [1 | 0], [1, 8, [6, [6, [3, 0 | 6], [1 | 1], 1 | 0], [0 | 6], 0 | 0], 8, [5, [0 | 14], 0 | 2], 0 | 6], 0 | 1], [[8, [1, [[1 | 0], [0 | 0] | 0], 0, 0, 0, 0, 0, 0 | 0], [1, 8, [8, [7, [0 | 7], 9, 91, 0 | 1], 9, 2, 10, [6, 0 | 14], 0 | 2], 8, [5, [0 | 14], 0 | 2], 0 | 6], 0 | 1], 8, [1 | 0], [1, 8, [6, [6, [3, 0 | 6], [1 | 1], 1 | 0], [0 | 6], 0 | 0], 8, [5, [0 | 14], 0 | 2], 0 | 6], 0 | 1], 8, [1, [[1 | 0], [0 | 0] | 0], 0, 0, 0, 0, 0, 0 | 0], [1, 8, [[8, [7, [0 | 7], 9, 47, 0 | 1], 9, 2, 10, [6, 0 | 28], 0 | 2], [6, [6, [3, 0 | 26], [1 | 1], 1 | 0], [0 | 26], 0 | 0], [6, [6, [3, 0 | 54], [1 | 1], 1 | 0], [0 | 54], 0 | 0], [6, [6, [3, 0 | 110], [1 | 1], 1 | 0], [0 | 110], 0 | 0], [6, [5, [1 | 0], 0 | 222], [1 | 0], 6, [5, [1 | 1], 0 | 222], [1 | 1], 0 | 0], [6, [6, [3, 0 | 446], [1 | 1], 1 | 0], [0 | 446], 0 | 0], [6, [6, [3, 0 | 894], [1 | 1], 1 | 0], [0 | 894], 0 | 0], 6, [6, [3, 0 | 895], [1 | 1], 1 | 0], [0 | 895], 0 | 0], 8, [5, [0 | 14], 0 | 2], 0 | 6], 0 | 1], [8, [1 | 0], [1, 8, [8, [7, [0 | 7], 8, [9, 47, 0 | 31], 9, 2, 10, [6, 7, [0 | 3], 8, [1, 0, 0 | 0], [1, 8, [[6, [6, [3, 0 | 12], [1 | 1], 1 | 0], [0 | 12], 0 | 0], [6, [5, [1 | 0], 0 | 26], [1 | 0], 6, [5, [1 | 1], 0 | 26], [1 | 1], 0 | 0], 6, [6, [3, 0 | 27], [1 | 1], 1 | 0], [0 | 27], 0 | 0], 8, [5, [0 | 14], 0 | 2], 0 | 6], 0 | 1], 0 | 2], 9, 2, 10, [6, 0 | 14], 0 | 2], 8, [5, [0 | 14], 0 | 2], 0 | 6], 0 | 1], 8, [1, [1 | 0], [0 | 0] | 0], [1, 8, [7, [1 | 0], 8, [1, 0 | 0], [1, 1 | 0], 0 | 1], 8, [5, [0 | 14], 0 | 2], 0 | 6], 0 | 1], [[7, [8, [1, 0 | 0], [1, 8, [1, 0 | 0], 8, [1, 6, [6, [5, [1 | 0], 0 | 60], [6, [5, [1 | 0], 0 | 61], [1 | 0], 1 | 1], 1 | 1], [0 | 13], 9, 2, 10, [30, [8, [8, [9, 10, 0 | 63], 9, 767, 10, [6, 7, [0 | 3], 1 | 0], 0 | 2], 9, 2, 10, [6, [7, [0 | 3], 1 | 1], 0 | 124], 0 | 2], 8, [8, [9, 10, 0 | 63], 9, 767, 10, [6, 7, [0 | 3], 1 | 0], 0 | 2], 9, 2, 10, [6, [7, [0 | 3], 1 | 1], 0 | 125], 0 | 2], 10, [6, [4, 0 | 12], 8, [9, 20, 0 | 511], 9, 2, 10, [6, [0 | 29], 7, [0 | 3], 8, [8, [9, 10, 0 | 63], 9, 90, 10, [6, ...], 0 | 2], 9, 2, 10, [6, [0 | 28], 7, ...], 0 | 2], 0 | 2], 0 | 1], 9, 2, 0 | 1], 0 | 1], 11, [1953718630, 1, 7891309, [0 | 7] | 0], 0 | 1], [[8, [[8, [1 | 0], [1, 8, [0 | 6], 8, [5, [0 | 14], 0 | 2], 0 | 6], 0 | 1], 8, [1 | 0], [1, 8, [0 | 6], 8, [5, [0 | 14], 0 | 2], 0 | 6], 0 | 1], [1, 8, [[0 | 50], 0 | 54], [1, 8, [[8, [0 | 60], 9, 2, 10, [6, 0 | 28], 0 | 2], 8, [0 | 61], 9, 2, 10, [6, 0 | 29], 0 | 2], 8, [5, [0 | 14], 0 | 2], 0 | 6], 0 | 1], 0 | 1], [8, [[8, [1 | 0], [1, 8, [0 | 6], 8, [5, [0 | 14], 0 | 2], 0 | 6], 0 | 1], 8, [1 | 0], [1, 8, [0 | 6], 8, [5, [0 " <> ...},
{[
%Anoma.Crypto.Id.Extern{
encrypt: <<230, 134, 45, 59, 48, 241, 215, 184, 53, 196, 224, 184, 103, 239, 83, 231, 220,
144, 234, 233, 14, 163, 59, 67, 134, 163, 174, 139, 120, 92, 220, 90>>,
sign: <<30, 58, 242, 106, 16, 228, 250, 244, 58, 170, 209, 100, 238, 190, 154, 123, 39, 76,
223, 88, 94, 88, 213, 209, 109, 34, 244, 186, 16, 62, 42, 98>>
},
%Anoma.Crypto.Id.Extern{
encrypt: <<253, 166, 38, 84, 229, 119, 215, 124, 49, 53, 22, 169, 126, 117, 33, 219, 26, 173,
225, 187, 54, 10, 32, 100, 21, 61, 121, 142, 141, 98, 107, 82>>,
sign: <<122, 24, 241, 113, 58, 166, 252, 185, 86, 76, 73, 43, 53, 32, 243, 170, 111, 97, 41,
49, 175, 182, 210, 234, 98, 20, 210, 148, 229, 140, 12, 103>>
},
35620,
:info
], "Sending :write_ready to 1 processes"},
{[
%Anoma.Crypto.Id.Extern{
encrypt: <<230, 134, 45, 59, 48, 241, 215, 184, 53, 196, 224, 184, 103, 239, 83, 231, 220,
144, 234, 233, 14, 163, 59, 67, 134, 163, 174, 139, 120, 92, 220, 90>>,
sign: <<30, 58, 242, 106, 16, 228, 250, 244, 58, 170, 209, 100, 238, 190, 154, 123, 39, 76,
223, 88, 94, 88, 213, 209, 109, 34, 244, 186, 16, 62, 42, 98>>
},
%Anoma.Crypto.Id.Extern{
encrypt: <<253, 166, 38, 84, 229, 119, 215, 124, 49, 53, 22, 169, 126, 117, 33, 219, 26, 173,
225, 187, 54, 10, 32, 100, 21, 61, 121, 142, 141, 98, 107, 82>>,
sign: <<122, 24, 241, 113, 58, 166, 252, 185, 86, 76, 73, 43, 53, 32, 243, 170, 111, 97, 41,
49, 175, 182, 210, 234, 98, 20, 210, 148, 229, 140, 12, 103>>
},
35578,
:info
],
"Requested transaction fire.\n Executor: %Anoma.Node.Router.Addr{server: :\"Anoma.Node.Executor bMdE8VVjfHe6Cwwf7x7HPnKE4UIk0ppsTRd+3lFCMfo=\", id: %Anoma.Crypto.Id.Extern{encrypt: <<124, 24, 139, 146, 134, 161, 98, 88, 227, 169, 92, 251, 165, 248, 140, 252, 237, 115, 81, 219, 226, 98, 33, 106, 80, 195, 115, 74, 84, 4, 91, 114>>, sign: <<108, 199, 68, 241, 85, 99, 124, 119, 186, 11, 12, 31, 239, 30, 199, 62, 114, 132, 225, 66, 36, 210, 154, 108, 77, 23, 126, 222, 81, 66, 49, 250>>}, router: %Anoma.Node.Router.Addr{server: :\"Anoma.Node.Router +D8Iwo2a2jICOhmeRyKgnigMiRSSmPEgCawDGI7LHiQ=\", id: %Anoma.Crypto.Id.Extern{encrypt: <<119, 208, 33, 8, 239, 236, 229, 232, 138, 95, 91, 188, 195, 79, 17, 234, 79, 208, 198, 219, 11, 153, 108, 18, 6, 216, 210, 76, 227, 242, 219, 19>>, sign: <<248, 63, 8, 194, 141, 154, 218, 50, 2, 58, 25, 158, 71, 34, 160, 158, 40, 12, 137, 20, 146, 152, 241, 32, 9, 172, 3, 24, 142, 203, 30, 36>>}, router: :\"Anoma.Node.Router +D8Iwo2a2jICOhmeRyKgnigMiRSSmPEgCawDGI7LHiQ=\"}}.\n Id : 102439050089106441858870166176275840122"},
{[
%Anoma.Crypto.Id.Extern{
encrypt: <<230, 134, 45, 59, 48, 241, 215, 184, 53, 196, 224, 184, 103, 239, 83, 231, 220,
144, 234, 233, 14, 163, 59, 67, 134, 163, 174, 139, 120, 92, 220, 90>>,
sign: <<30, 58, 242, 106, 16, 228, 250, 244, 58, 170, 209, 100, 238, 190, 154, 123, 39, 76,
223, 88, 94, 88, 213, 209, 109, 34, 244, 186, 16, 62, 42, 98>>
},
%Anoma.Crypto.Id.Extern{
encrypt: <<253, 166, 38, 84, 229, 119, 215, 124, 49, 53, 22, 169, 126, 117, 33, 219, 26, 173,
225, 187, 54, 10, 32, 100, 21, 61, 121, 142, 141, 98, 107, 82>>,
sign: <<122, 24, 241, 113, 58, 166, 252, 185, 86, 76, 73, 43, 53, 32, 243, 170, 111, 97, 41,
49, 175, 182, 210, 234, 98, 20, 210, 148, 229, 140, 12, 103>>
},
35627,
:info
], "Requested execution"},
{[
%Anoma.Crypto.Id.Extern{
encrypt: <<230, 134, 45, 59, 48, 241, 215, 184, 53, 196, 224, 184, 103, 239, 83, 231, 220,
144, 234, 233, 14, 163, 59, 67, 134, 163, 174, 139, 120, 92, 220, 90>>,
sign: <<30, 58, 242, 106, 16, 228, 250, 244, 58, 170, 209, 100, 238, 190, 154, 123, 39, 76,
223, 88, 94, 88, 213, 209, 109, 34, 244, 186, 16, 62, 42, 98>>
},
%Anoma.Crypto.Id.Extern{
encrypt: <<253, 166, 38, 84, 229, 119, 215, 124, 49, 53, 22, 169, 126, 117, 33, 219, 26, 173,
225, 187, 54, 10, 32, 100, 21, 61, 121, 142, 141, 98, 107, 82>>,
sign: <<122, 24, 241, 113, 58, 166, 252, 185, 86, 76, 73, 43, 53, 32, 243, 170, 111, 97, 41,
49, 175, 182, 210, 234, 98, 20, 210, 148, 229, 140, 12, 103>>
},
35619,
:info
],
"Producing block. Transsactions: [%Anoma.Transaction{transaction: {:kv, [[8, [1 | 0], [1, [1 | 555], 4, 12, [1 | 0], [0 | 6], 1, 555 | 0], 0 | 1], [[8, [1, [[[1 | 0], [0 | 0] | 0], 0, 0, 0, 0, 0, 0 | 0], 0, 0, 0, 0, 0, 0 | 0], [1, 6, [5, [1 | 1], 8, [9, 1406, 0 | 255], 9, 2, 10, [6, 0 | 118], 0 | 2], [6, [5, [1 | 1], 8, [9, 1406, 0 | 255], 9, 2, 10, [6, 0 | 238], 0 | 2], [6, [5, [1 | 1], 8, [9, 1406, 0 | 255], 9, 2, 10, [6, 0 | 958], 0 | 2], [6, [5, [1 | 0], 0 | 446], [0 | 0], 6, [0 | 3570], [1 | 0], 1 | 1], 1 | 1], 1 | 1], 1 | 1], 0 | 1], 8, [1, [[[1 | 0], [0 | 0] | 0], 0, 0, 0, 0, 0, 0 | 0], 0, 0, 0, 0, 0, 0 | 0], [1, 5, [1 | 0], 0 | 446], 0 | 1], [[1 | 0], [8, [1, 0, 0, 0, 0, 0, 0 | 0], [1, 8, [[8, [7, [0 | 7], 8, [9, 47, 0 | 31], 9, 2, 10, [6, 7, [0 | 3], 8, [1 | 0], [1, 8, [6, [6, [3, 0 | 6], [1 | 1], 1 | 0], [0 | 6], 0 | 0], 8, [5, [0 | 14], 0 | 2], 0 | 6], 0 | 1], 0 | 2], 9, 2, 10, [6, 0 | 28], 0 | 2], [8, [7, [0 | 7], 8, [9, 47, 0 | 31], 9, 2, 10, [6, 7, [0 | 3], 9, 181, 0 | 1], 0 | 2], 9, 2, 10, [6, 0 | 58], 0 | 2], [8, [7, [0 | 7], 8, [9, 47, 0 | 31], 9, 2, 10, [6, 7, [0 | 3], 9, 44, 0 | 1], 0 | 2], 9, 2, 10, [6, 0 | 118], 0 | 2], [8, [7, [0 | 7], 8, [9, 47, 0 | 31], 9, 2, 10, [6, 7, [0 | 3], 9, 180, 0 | 1], 0 | 2], 9, 2, 10, [6, 0 | 238], 0 | 2], [8, [7, [0 | 7], 9, 46, 0 | 1], 9, 2, 10, [6, 0 | 478], 0 | 2], [6, [6, [3, 0 | 446], [1 | 1], 1 | 0], [0 | 446], 0 | 0], 6, [5, [1 | 0], 0 | 447], [1 | 0], 0 | 0], 8, [5, [0 | 14], 0 | 2], 0 | 6], 0 | 1], [[8, [1 | 0], [1, 8, [6, [6, [3, 0 | 6], [1 | 1], 1 | 0], [0 | 6], 0 | 0], 8, [5, [0 | 14], 0 | 2], 0 | 6], 0 | 1], [[8, [1, [[1 | 0], [0 | 0] | 0], 0, 0, 0, 0, 0, 0 | 0], [1, 8, [8, [7, [0 | 7], 9, 91, 0 | 1], 9, 2, 10, [6, 0 | 14], 0 | 2], 8, [5, [0 | 14], 0 | 2], 0 | 6], 0 | 1], 8, [1 | 0], [1, 8, [6, [6, [3, 0 | 6], [1 | 1], 1 | 0], [0 | 6], 0 | 0], 8, [5, [0 | 14], 0 | 2], 0 | 6], 0 | 1], 8, [1, [[1 | 0], [0 | 0] | 0], 0, 0, 0, 0, 0, 0 | 0], [1, 8, [[8, [7, [0 | 7], 9, 47, 0 | 1], 9, 2, 10, [6, 0 | 28], 0 | 2], [6, [6, [3, 0 | 26], [1 | 1], 1 | 0], [0 | 26], 0 | 0], [6, [6, [3, 0 | 54], [1 | 1], 1 | 0], [0 | 54], 0 | 0], [6, [6, [3, 0 | 110], [1 | 1], 1 | 0], [0 | 110], 0 | 0], [6, [5, [1 | 0], 0 | 222], [1 | 0], 6, [5, [1 | 1], 0 | 222], [1 | 1], 0 | 0], [6, [6, [3, 0 | 446], [1 | 1], 1 | 0], [0 | 446], 0 | 0], [6, [6, [3, 0 | 894], [1 | 1], 1 | 0], [0 | 894], 0 | 0], 6, [6, [3, 0 | 895], [1 | 1], 1 | 0], [0 | 895], 0 | 0], 8, [5, [0 | 14], 0 | 2], 0 | 6], 0 | 1], [8, [1 | 0], [1, 8, [8, [7, [0 | 7], 8, [9, 47, 0 | 31], 9, 2, 10, [6, 7, [0 | 3], 8, [1, 0, 0 | 0], [1, 8, [[6, [6, [3, 0 | 12], [1 | 1], 1 | 0], [0 | 12], 0 | 0], [6, [5, [1 | 0], 0 | 26], [1 | 0], 6, [5, [1 | 1], 0 | 26], [1 | 1], 0 | 0], 6, [6, [3, 0 | 27], [1 | 1], 1 | 0], [0 | 27], 0 | 0], 8, [5, [0 | 14], 0 | 2], 0 | 6], 0 | 1], 0 | 2], 9, 2, 10, [6, 0 | 14], 0 | 2], 8, [5, [0 | 14], 0 | 2], 0 | 6], 0 | 1], 8, [1, [1 | 0], [0 | 0] | 0], [1, 8, [7, [1 | 0], 8, [1, 0 | 0], [1, 1 | 0], 0 | 1], 8, [5, [0 | 14], 0 | 2], 0 | 6], 0 | 1], [[7, [8, [1, 0 | 0], [1, 8, [1, 0 | 0], 8, [1, 6, [6, [5, [1 | 0], 0 | 60], [6, [5, [1 | 0], 0 | 61], [1 | 0], 1 | 1], 1 | 1], [0 | 13], 9, 2, 10, [30, [8, [8, [9, 10, 0 | 63], 9, 767, 10, [6, 7, [0 | 3], 1 | 0], 0 | 2], 9, 2, 10, [6, [7, [0 | 3], 1 | 1], 0 | 124], 0 | 2], 8, [8, [9, 10, 0 | 63], 9, 767, 10, [6, 7, [0 | 3], 1 | 0], 0 | 2], 9, 2, 10, [6, [7, [0 | 3], 1 | 1], 0 | 125], 0 | 2], 10, [6, [4, 0 | 12], 8, [9, 20, 0 | 511], 9, 2, 10, [6, [0 | 29], 7, [0 | 3], 8, [8, [9, 10, 0 | 63], 9, 90, 10, [6, ...], 0 | 2], 9, 2, 10, [6, [0 | 28], 7, ...], 0 | 2], 0 | 2], 0 | 1], 9, 2, 0 | 1], 0 | 1], 11, [1953718630, 1, 7891309, [0 | 7] | 0], 0 | 1], [[8, [[8, [1 | 0], [1, 8, [0 | 6], 8, [5, [0 | 14], 0 | 2], 0 | 6], 0 | 1], 8, [1 | 0], [1, 8, [0 | 6], 8, [5, [0 | 14], 0 | 2], 0 | 6], 0 | 1], [1, 8, [[0 | 50], 0 | 54], [1, 8, [[8, [0 | 60], 9, 2, 10, [6, 0 | 28], 0 | 2], 8, [0 | 61], 9, 2, 10, [6, 0 | 29], 0 | 2], 8, [5, [0 | 14], 0 | 2], 0 | 6], 0 | 1], 0 | 1], [8, [[8, [1 | 0], [1, 8, [0 | 6], 8, [5, [0 | 14], 0 | 2], 0 | 6], 0 | 1], 8, [1 | 0], [1, 8, [0 | 6], 8, [5, " <> ...},
{[
%Anoma.Crypto.Id.Extern{
encrypt: <<230, 134, 45, 59, 48, 241, 215, 184, 53, 196, 224, 184, 103, 239, 83, 231, 220,
144, 234, 233, 14, 163, 59, 67, 134, 163, 174, 139, 120, 92, 220, 90>>,
sign: <<30, 58, 242, 106, 16, 228, 250, 244, 58, 170, 209, 100, 238, 190, 154, 123, 39, 76,
223, 88, 94, 88, 213, 209, 109, 34, 244, 186, 16, 62, 42, 98>>
},
%Anoma.Crypto.Id.Extern{
encrypt: <<253, 166, 38, 84, 229, 119, 215, 124, 49, 53, 22, 169, 126, 117, 33, 219, 26, 173,
225, 187, 54, 10, 32, 100, 21, 61, 121, 142, 141, 98, 107, 82>>,
sign: <<122, 24, 241, 113, 58, 166, 252, 185, 86, 76, 73, 43, 53, 32, 243, 170, 111, 97, 41,
49, 175, 182, 210, 234, 98, 20, 210, 148, 229, 140, 12, 103>>
},
35626,
:info
],
"New state: %Anoma.Node.Mempool{logger: %Anoma.Node.Router.Addr{server: :\"Anoma.Node.Logger HjryahDk+vQ6qtFk7r6aeydM31heWNXRbSL0uhA+KmI=\", id: %Anoma.Crypto.Id.Extern{encrypt: <<230, 134, 45, 59, 48, 241, 215, 184, 53, 196, 224, 184, 103, 239, 83, 231, 220, 144, 234, 233, 14, 163, 59, 67, 134, 163, 174, 139, 120, 92, 220, 90>>, sign: <<30, 58, 242, 106, 16, 228, 250, 244, 58, 170, 209, 100, 238, 190, 154, 123, 39, 76, 223, 88, 94, 88, 213, 209, 109, 34, 244, 186, 16, 62, 42, 98>>}, router: %Anoma.Node.Router.Addr{server: :\"Anoma.Node.Router +D8Iwo2a2jICOhmeRyKgnigMiRSSmPEgCawDGI7LHiQ=\", id: %Anoma.Crypto.Id.Extern{encrypt: <<119, 208, 33, 8, 239, 236, 229, 232, 138, 95, 91, 188, 195, 79, 17, 234, 79, 208, 198, 219, 11, 153, 108, 18, 6, 216, 210, 76, 227, 242, 219, 19>>, sign: <<248, 63, 8, 194, 141, 154, 218, 50, 2, 58, 25, 158, 71, 34, 160, 158, 40, 12, 137, 20, 146, 152, 241, 32, 9, 172, 3, 24, 142, 203, 30, 36>>}, router: :\"Anoma.Node.Router +D8Iwo2a2jICOhmeRyKgnigMiRSSmPEgCawDGI7LHiQ=\"}}, key: {[<<1, 0, 1>>, <<178, 121, 76, 200, 168, 235, 151, 217, 13, 146, 94, 167, 184, 24, 103, 4, 71, 232, 222, 187, 242, 43, 201, 206, 9, 72, 38, 141, 71, 183, 193, 79, 96, 47, 11, 197, 9, 79, 186, 87, 134, 20, 214, 119, 17, ...>>], [<<1, 0, 1>>, <<178, 121, 76, 200, 168, 235, 151, 217, 13, 146, 94, 167, 184, 24, 103, 4, 71, 232, 222, 187, 242, 43, 201, 206, 9, 72, 38, 141, 71, 183, 193, 79, 96, 47, 11, 197, 9, 79, 186, 87, 134, 20, 214, 119, ...>>, <<36, 1, 192, 242, 2, 210, 117, 50, 63, 64, 182, 132, 19, 234, 40, 110, 126, 171, 134, 180, 88, 105, 105, 47, 126, 67, 230, 51, 62, 178, 221, 247, 75, 170, 114, 47, 112, 111, 123, 98, 201, 20, 79, ...>>, <<223, 174, 98, 120, 166, 199, 34, 129, 230, 158, 40, 40, 33, 31, 249, 41, 170, 201, 126, 28, 198, 156, 91, 16, 253, 170, 10, 56, 182, 211, 191, 77, 97, 146, 141, 133, 159, 124, 136, 47, 187, 243, ...>>, <<204, 66, 196, 29, 80, 253, 242, 26, 205, 16, 230, 113, 34, 45, 70, 56, 234, 19, 31, 223, 202, 193, 40, 12, 38, 108, 131, 166, 205, 90, 133, 22, 187, 76, 37, 36, 38, 153, 233, 73, 59, ...>>, <<104, 67, 12, 187, 88, 97, 241, 255, 194, 211, 109, 188, 102, 212, 84, 123, 203, 147, 232, 40, 217, 155, 0, 7, 199, 117, 127, 22, 56, 130, 50, 229, 138, 217, 153, 5, 243, 245, 68, 53, ...>>, <<188, 187, 184, 79, 202, 69, 74, 205, 222, 203, 13, 210, 93, 28, 238, 52, 170, 124, 15, 72, 142, 36, 153, 167, 88, 93, 141, 235, 178, 245, 63, 225, 248, 31, 236, 117, 145, 193, 70, ...>>, <<35, 138, 180, 228, 184, 64, 111, 151, 24, 72, 177, 78, 7, 82, 185, 141, 129, 128, 249, 46, 61, 166, 209, 175, 202, 195, 140, 234, 161, 251, 202, 156, 95, 135, 50, 251, 104, 117, ...>>]}, topic: %Anoma.Node.Router.Addr{server: nil, id: %Anoma.Crypto.Id.Extern{encrypt: <<190, 53, 205, 235, 5, 226, 41, 27, 52, 24, 129, 130, 166, 110, 247, 96, 38, 104, 62, 8, 193, 71, 72, 220, 200, 81, 64, 249, 236, 17, 96, 89>>, sign: <<220, 94, 47, 24, 186, 196, 237, 131, 1, 55, 84, 239, 201, 26, 56, 163, 239, 46, 23, 104, 7, 183, 111, 117, 235, 229, 167, 14, 178, 32, 27, 137>>}, router: :\"Anoma.Node.Router +D8Iwo2a2jICOhmeRyKgnigMiRSSmPEgCawDGI7LHiQ=\"}, round: 1, transactions: [], block_storage: :loggerdoc_blocks, executor: %Anoma.Node.Router.Addr{server: :\"Anoma.Node.Executor bMdE8VVjfHe6Cwwf7x7HPnKE4UIk0ppsTRd+3lFCMfo=\", id: %Anoma.Crypto.Id.Extern{encrypt: <<124, 24, 139, 146, 134, 161, 98, 88, 227, 169, 92, 251, 165, 248, 140, 252, 237, 115, 81, 219, 226, 98, 33, 106, 80, 195, 115, 74, 84, 4, 91, 114>>, sign: <<108, 199, 68, 241, 85, 99, 124, 119, 186, 11, 12, 31, 239, 30, 199, 62, 114, 132, 225, 66, 36, 210, 154, 108, 77, 23, 126, 222, 81, 66, 49, 250>>}, router: %Anoma.Node.Router.Addr{server: :\"Anoma.Node.Router +D8Iwo2a2jICOhmeRyKgnigMiRSSmPEgCawDGI7LHiQ=\", id: %Anoma.Crypto.Id.Extern{encrypt: <<119, 208, 33, 8, 239, 236, 229, 232, 138, 95, 91, 188, 195, 79, 17, 234, 79, 208, 198, 219, 11, 153, 108, 18, 6, 216, 210, 76, 227, 242, 219, 19>>, sign: <<248, 63, 8, 194, 141, 154, 218, 50, 2, 58, 25, 158, 71, 34, 160, 158, 40, 12, 137, 20, 146, 152, 241, 32, 9, 172, 3, 24, 142, 203, 30, 36>>}, router: :\"Anoma.Node.Router +D8Iwo2a2jICOhmeRyKg" <> ...}
]
logger
|> Logger.get(node.mempool)
|> Enum.filter(fn {_list, msg} ->
String.contains?(msg, "Transaction added")
end)
[
{[
%Anoma.Crypto.Id.Extern{
encrypt: <<230, 134, 45, 59, 48, 241, 215, 184, 53, 196, 224, 184, 103, 239, 83, 231, 220,
144, 234, 233, 14, 163, 59, 67, 134, 163, 174, 139, 120, 92, 220, 90>>,
sign: <<30, 58, 242, 106, 16, 228, 250, 244, 58, 170, 209, 100, 238, 190, 154, 123, 39, 76,
223, 88, 94, 88, 213, 209, 109, 34, 244, 186, 16, 62, 42, 98>>
},
%Anoma.Crypto.Id.Extern{
encrypt: <<253, 166, 38, 84, 229, 119, 215, 124, 49, 53, 22, 169, 126, 117, 33, 219, 26, 173,
225, 187, 54, 10, 32, 100, 21, 61, 121, 142, 141, 98, 107, 82>>,
sign: <<122, 24, 241, 113, 58, 166, 252, 185, 86, 76, 73, 43, 53, 32, 243, 170, 111, 97, 41,
49, 175, 182, 210, 234, 98, 20, 210, 148, 229, 140, 12, 103>>
},
35608,
:info
],
"Transaction added. New pool: [%Anoma.Transaction{transaction: {:kv, [[8, [1 | 0], [1, [1 | 555], 4, 12, [1 | 0], [0 | 6], 1, 555 | 0], 0 | 1], [[8, [1, [[[1 | 0], [0 | 0] | 0], 0, 0, 0, 0, 0, 0 | 0], 0, 0, 0, 0, 0, 0 | 0], [1, 6, [5, [1 | 1], 8, [9, 1406, 0 | 255], 9, 2, 10, [6, 0 | 118], 0 | 2], [6, [5, [1 | 1], 8, [9, 1406, 0 | 255], 9, 2, 10, [6, 0 | 238], 0 | 2], [6, [5, [1 | 1], 8, [9, 1406, 0 | 255], 9, 2, 10, [6, 0 | 958], 0 | 2], [6, [5, [1 | 0], 0 | 446], [0 | 0], 6, [0 | 3570], [1 | 0], 1 | 1], 1 | 1], 1 | 1], 1 | 1], 0 | 1], 8, [1, [[[1 | 0], [0 | 0] | 0], 0, 0, 0, 0, 0, 0 | 0], 0, 0, 0, 0, 0, 0 | 0], [1, 5, [1 | 0], 0 | 446], 0 | 1], [[1 | 0], [8, [1, 0, 0, 0, 0, 0, 0 | 0], [1, 8, [[8, [7, [0 | 7], 8, [9, 47, 0 | 31], 9, 2, 10, [6, 7, [0 | 3], 8, [1 | 0], [1, 8, [6, [6, [3, 0 | 6], [1 | 1], 1 | 0], [0 | 6], 0 | 0], 8, [5, [0 | 14], 0 | 2], 0 | 6], 0 | 1], 0 | 2], 9, 2, 10, [6, 0 | 28], 0 | 2], [8, [7, [0 | 7], 8, [9, 47, 0 | 31], 9, 2, 10, [6, 7, [0 | 3], 9, 181, 0 | 1], 0 | 2], 9, 2, 10, [6, 0 | 58], 0 | 2], [8, [7, [0 | 7], 8, [9, 47, 0 | 31], 9, 2, 10, [6, 7, [0 | 3], 9, 44, 0 | 1], 0 | 2], 9, 2, 10, [6, 0 | 118], 0 | 2], [8, [7, [0 | 7], 8, [9, 47, 0 | 31], 9, 2, 10, [6, 7, [0 | 3], 9, 180, 0 | 1], 0 | 2], 9, 2, 10, [6, 0 | 238], 0 | 2], [8, [7, [0 | 7], 9, 46, 0 | 1], 9, 2, 10, [6, 0 | 478], 0 | 2], [6, [6, [3, 0 | 446], [1 | 1], 1 | 0], [0 | 446], 0 | 0], 6, [5, [1 | 0], 0 | 447], [1 | 0], 0 | 0], 8, [5, [0 | 14], 0 | 2], 0 | 6], 0 | 1], [[8, [1 | 0], [1, 8, [6, [6, [3, 0 | 6], [1 | 1], 1 | 0], [0 | 6], 0 | 0], 8, [5, [0 | 14], 0 | 2], 0 | 6], 0 | 1], [[8, [1, [[1 | 0], [0 | 0] | 0], 0, 0, 0, 0, 0, 0 | 0], [1, 8, [8, [7, [0 | 7], 9, 91, 0 | 1], 9, 2, 10, [6, 0 | 14], 0 | 2], 8, [5, [0 | 14], 0 | 2], 0 | 6], 0 | 1], 8, [1 | 0], [1, 8, [6, [6, [3, 0 | 6], [1 | 1], 1 | 0], [0 | 6], 0 | 0], 8, [5, [0 | 14], 0 | 2], 0 | 6], 0 | 1], 8, [1, [[1 | 0], [0 | 0] | 0], 0, 0, 0, 0, 0, 0 | 0], [1, 8, [[8, [7, [0 | 7], 9, 47, 0 | 1], 9, 2, 10, [6, 0 | 28], 0 | 2], [6, [6, [3, 0 | 26], [1 | 1], 1 | 0], [0 | 26], 0 | 0], [6, [6, [3, 0 | 54], [1 | 1], 1 | 0], [0 | 54], 0 | 0], [6, [6, [3, 0 | 110], [1 | 1], 1 | 0], [0 | 110], 0 | 0], [6, [5, [1 | 0], 0 | 222], [1 | 0], 6, [5, [1 | 1], 0 | 222], [1 | 1], 0 | 0], [6, [6, [3, 0 | 446], [1 | 1], 1 | 0], [0 | 446], 0 | 0], [6, [6, [3, 0 | 894], [1 | 1], 1 | 0], [0 | 894], 0 | 0], 6, [6, [3, 0 | 895], [1 | 1], 1 | 0], [0 | 895], 0 | 0], 8, [5, [0 | 14], 0 | 2], 0 | 6], 0 | 1], [8, [1 | 0], [1, 8, [8, [7, [0 | 7], 8, [9, 47, 0 | 31], 9, 2, 10, [6, 7, [0 | 3], 8, [1, 0, 0 | 0], [1, 8, [[6, [6, [3, 0 | 12], [1 | 1], 1 | 0], [0 | 12], 0 | 0], [6, [5, [1 | 0], 0 | 26], [1 | 0], 6, [5, [1 | 1], 0 | 26], [1 | 1], 0 | 0], 6, [6, [3, 0 | 27], [1 | 1], 1 | 0], [0 | 27], 0 | 0], 8, [5, [0 | 14], 0 | 2], 0 | 6], 0 | 1], 0 | 2], 9, 2, 10, [6, 0 | 14], 0 | 2], 8, [5, [0 | 14], 0 | 2], 0 | 6], 0 | 1], 8, [1, [1 | 0], [0 | 0] | 0], [1, 8, [7, [1 | 0], 8, [1, 0 | 0], [1, 1 | 0], 0 | 1], 8, [5, [0 | 14], 0 | 2], 0 | 6], 0 | 1], [[7, [8, [1, 0 | 0], [1, 8, [1, 0 | 0], 8, [1, 6, [6, [5, [1 | 0], 0 | 60], [6, [5, [1 | 0], 0 | 61], [1 | 0], 1 | 1], 1 | 1], [0 | 13], 9, 2, 10, [30, [8, [8, [9, 10, 0 | 63], 9, 767, 10, [6, 7, [0 | 3], 1 | 0], 0 | 2], 9, 2, 10, [6, [7, [0 | 3], 1 | 1], 0 | 124], 0 | 2], 8, [8, [9, 10, 0 | 63], 9, 767, 10, [6, 7, [0 | 3], 1 | 0], 0 | 2], 9, 2, 10, [6, [7, [0 | 3], 1 | 1], 0 | 125], 0 | 2], 10, [6, [4, 0 | 12], 8, [9, 20, 0 | 511], 9, 2, 10, [6, [0 | 29], 7, [0 | 3], 8, [8, [9, 10, 0 | 63], 9, 90, 10, [6, ...], 0 | 2], 9, 2, 10, [6, [0 | 28], 7, ...], 0 | 2], 0 | 2], 0 | 1], 9, 2, 0 | 1], 0 | 1], 11, [1953718630, 1, 7891309, [0 | 7] | 0], 0 | 1], [[8, [[8, [1 | 0], [1, 8, [0 | 6], 8, [5, [0 | 14], 0 | 2], 0 | 6], 0 | 1], 8, [1 | 0], [1, 8, [0 | 6], 8, [5, [0 | 14], 0 | 2], 0 | 6], 0 | 1], [1, 8, [[0 | 50], 0 | 54], [1, 8, [[8, [0 | 60], 9, 2, 10, [6, 0 | 28], 0 | 2], 8, [0 | 61], 9, 2, 10, [6, 0 | 29], 0 | 2], 8, [5, [0 | 14], 0 | 2], 0 | 6], 0 | 1], 0 | 1], [8, [[8, [1 | 0], [1, 8, [0 | 6], 8, [5, [0 | 14], 0 | 2], 0 | 6], 0 | 1], 8, [1 | 0], [1, 8, [0 | 6], 8, [5, [0 " <> ...}
]
Assuming the user knows the Nock code for increments and zero counters, they will be able to determine why the error occured exactly.
Here we have showcased several ways in which the Logging engine can be used. It sends error messages directly to the user when encountered, stores major info re worker and engine actions, as well as allowing the user to prompt the logging messages using the usual filtering mechanisms.
Note that the logging functionality is easily added into working engines and hence the contributors can readily add more detailed logging at their convenience. Similarly, the keyspace storing can be more thorought, containing more info on the sending agents. Moreover, note that the better the user is acquainted with the actual logging messages, the more efficient the debigging.