Home / Input Output / ECIP-Checkpointing
Feb 18, 12-1 PM (0)
Feb 18, 1-2 PM (0)
Feb 18, 2-3 PM (0)
Feb 18, 3-4 PM (1)
Feb 18, 4-5 PM (0)
Feb 18, 5-6 PM (0)
Feb 18, 6-7 PM (0)
Feb 18, 7-8 PM (0)
Feb 18, 8-9 PM (0)
Feb 18, 9-10 PM (0)
Feb 18, 10-11 PM (0)
Feb 18, 11-12 AM (0)
Feb 19, 12-1 AM (0)
Feb 19, 1-2 AM (0)
Feb 19, 2-3 AM (0)
Feb 19, 3-4 AM (0)
Feb 19, 4-5 AM (0)
Feb 19, 5-6 AM (0)
Feb 19, 6-7 AM (0)
Feb 19, 7-8 AM (0)
Feb 19, 8-9 AM (0)
Feb 19, 9-10 AM (0)
Feb 19, 10-11 AM (0)
Feb 19, 11-12 PM (0)
Feb 19, 12-1 PM (2)
Feb 19, 1-2 PM (0)
Feb 19, 2-3 PM (0)
Feb 19, 3-4 PM (2)
Feb 19, 4-5 PM (0)
Feb 19, 5-6 PM (0)
Feb 19, 6-7 PM (0)
Feb 19, 7-8 PM (0)
Feb 19, 8-9 PM (0)
Feb 19, 9-10 PM (0)
Feb 19, 10-11 PM (0)
Feb 19, 11-12 AM (0)
Feb 20, 12-1 AM (0)
Feb 20, 1-2 AM (0)
Feb 20, 2-3 AM (0)
Feb 20, 3-4 AM (0)
Feb 20, 4-5 AM (0)
Feb 20, 5-6 AM (0)
Feb 20, 6-7 AM (0)
Feb 20, 7-8 AM (0)
Feb 20, 8-9 AM (0)
Feb 20, 9-10 AM (0)
Feb 20, 10-11 AM (0)
Feb 20, 11-12 PM (0)
Feb 20, 12-1 PM (0)
Feb 20, 1-2 PM (0)
Feb 20, 2-3 PM (0)
Feb 20, 3-4 PM (0)
Feb 20, 4-5 PM (0)
Feb 20, 5-6 PM (0)
Feb 20, 6-7 PM (0)
Feb 20, 7-8 PM (0)
Feb 20, 8-9 PM (0)
Feb 20, 9-10 PM (0)
Feb 20, 10-11 PM (0)
Feb 20, 11-12 AM (0)
Feb 21, 12-1 AM (0)
Feb 21, 1-2 AM (0)
Feb 21, 2-3 AM (0)
Feb 21, 3-4 AM (0)
Feb 21, 4-5 AM (0)
Feb 21, 5-6 AM (0)
Feb 21, 6-7 AM (0)
Feb 21, 7-8 AM (0)
Feb 21, 8-9 AM (0)
Feb 21, 9-10 AM (0)
Feb 21, 10-11 AM (0)
Feb 21, 11-12 PM (0)
Feb 21, 12-1 PM (0)
Feb 21, 1-2 PM (0)
Feb 21, 2-3 PM (0)
Feb 21, 3-4 PM (0)
Feb 21, 4-5 PM (0)
Feb 21, 5-6 PM (0)
Feb 21, 6-7 PM (0)
Feb 21, 7-8 PM (0)
Feb 21, 8-9 PM (0)
Feb 21, 9-10 PM (0)
Feb 21, 10-11 PM (0)
Feb 21, 11-12 AM (0)
Feb 22, 12-1 AM (0)
Feb 22, 1-2 AM (0)
Feb 22, 2-3 AM (0)
Feb 22, 3-4 AM (0)
Feb 22, 4-5 AM (0)
Feb 22, 5-6 AM (0)
Feb 22, 6-7 AM (0)
Feb 22, 7-8 AM (0)
Feb 22, 8-9 AM (0)
Feb 22, 9-10 AM (0)
Feb 22, 10-11 AM (0)
Feb 22, 11-12 PM (0)
Feb 22, 12-1 PM (0)
Feb 22, 1-2 PM (0)
Feb 22, 2-3 PM (0)
Feb 22, 3-4 PM (0)
Feb 22, 4-5 PM (0)
Feb 22, 5-6 PM (0)
Feb 22, 6-7 PM (1)
Feb 22, 7-8 PM (0)
Feb 22, 8-9 PM (0)
Feb 22, 9-10 PM (0)
Feb 22, 10-11 PM (0)
Feb 22, 11-12 AM (0)
Feb 23, 12-1 AM (0)
Feb 23, 1-2 AM (0)
Feb 23, 2-3 AM (0)
Feb 23, 3-4 AM (0)
Feb 23, 4-5 AM (0)
Feb 23, 5-6 AM (0)
Feb 23, 6-7 AM (0)
Feb 23, 7-8 AM (0)
Feb 23, 8-9 AM (0)
Feb 23, 9-10 AM (0)
Feb 23, 10-11 AM (1)
Feb 23, 11-12 PM (0)
Feb 23, 12-1 PM (0)
Feb 23, 1-2 PM (0)
Feb 23, 2-3 PM (0)
Feb 23, 3-4 PM (0)
Feb 23, 4-5 PM (0)
Feb 23, 5-6 PM (0)
Feb 23, 6-7 PM (0)
Feb 23, 7-8 PM (0)
Feb 23, 8-9 PM (2)
Feb 23, 9-10 PM (0)
Feb 23, 10-11 PM (0)
Feb 23, 11-12 AM (0)
Feb 24, 12-1 AM (0)
Feb 24, 1-2 AM (0)
Feb 24, 2-3 AM (0)
Feb 24, 3-4 AM (0)
Feb 24, 4-5 AM (0)
Feb 24, 5-6 AM (0)
Feb 24, 6-7 AM (0)
Feb 24, 7-8 AM (0)
Feb 24, 8-9 AM (0)
Feb 24, 9-10 AM (0)
Feb 24, 10-11 AM (0)
Feb 24, 11-12 PM (0)
Feb 24, 12-1 PM (0)
Feb 24, 1-2 PM (0)
Feb 24, 2-3 PM (0)
Feb 24, 3-4 PM (0)
Feb 24, 4-5 PM (0)
Feb 24, 5-6 PM (0)
Feb 24, 6-7 PM (0)
Feb 24, 7-8 PM (0)
Feb 24, 8-9 PM (0)
Feb 24, 9-10 PM (0)
Feb 24, 10-11 PM (0)
Feb 24, 11-12 AM (0)
Feb 25, 12-1 AM (0)
Feb 25, 1-2 AM (0)
Feb 25, 2-3 AM (0)
Feb 25, 3-4 AM (0)
Feb 25, 4-5 AM (0)
Feb 25, 5-6 AM (0)
Feb 25, 6-7 AM (0)
Feb 25, 7-8 AM (0)
Feb 25, 8-9 AM (0)
Feb 25, 9-10 AM (0)
Feb 25, 10-11 AM (0)
Feb 25, 11-12 PM (0)
Feb 25, 12-1 PM (0)
9 commits this week Feb 18, 2021 - Feb 25, 2021
Refactor RPC interface
- Improve type safety by linking request and response type for each
  rpc method (Morpho.RPC.Abstract.RpcMethod)
- Abstract over RPC upstreams (Morpho.RPC.Abstract.RpcUpstream), which
  will allow running the morpho node with a mocking RPC upstream without
  having to mock an HTTP server
- As part of the above, network manager objects are now reused between
  requests
- As part of the above, clean up tracing of RPC calls. Now each RPC call
  is traced in a single location (Morpho.RPC.Tracing), and specifically not
  in the main Morpho.Node.Run module
- As part of the above, move http exception handling (and all other
  json-rpc specific bits) into the Morpho.RPC.JsonRpc module
- Remove the previous mock Pow chain (Morpho.RPC.PoWMock), which was only
  used by the tests. Above changes enable a much nicer testing interface
- Split the RPC protocol and encoding into a separate module
  (Morpho.RPC.JsonRpcProtocol), making sure to not reuse any ToJSON
  implementations from morpho's data types, so as to have a fixed protocol
  that doesn't change with different underlying data types
Don't duplicate vote checks
Before this change whether a vote is valid was checked twice:
- Once by first getting the ledger state, then checking if there's
  a duplicate vote already and if it's at the correct interval
- Once again with tryAddTxs, which actually inserts the vote, but this
  time with a more up-to-date ledger state, but the exact same checks
  for duplicate votes and the correct interval are performed again there
  (via applyTx)

(And actually a third time when the block is forged, but we can't avoid
this)

This change removes this duplication and as a result cleanly splits
errors during vote creating and vote application