public async Task <Exception> InsertEvent(Event ev, bool setWireInfo) { //verify signature var(ok, err) = ev.Verify(); if (!ok) { return(err ?? new HashgraphError($"Invalid Event signature")); } using (var tx = Store.BeginTx()) { err = CheckSelfParent(ev); if (err != null) { return(new Exception($"CheckSelfParent: {err.Message}", err)); } err = await CheckOtherParent(ev); if (err != null) { return(new Exception($"CheckOtherParent: {err.Message}", err)); } ev.SetTopologicalIndex(TopologicalIndex); TopologicalIndex++; if (setWireInfo) { err = await SetWireInfo(ev); if (err != null) { return(new Exception($"SetWireInfo: {err.Message}", err)); } } err = await InitEventCoordinates(ev); if (err != null) { return(new Exception($"InitEventCoordinates: {err.Message}", err)); } err = await Store.SetEvent(ev); if (err != null) { return(new Exception($"SetEvent: {err.Message}", err)); } err = await UpdateAncestorFirstDescendant(ev); if (err != null) { return(new Exception($"UpdateAncestorFirstDescendant: {err.Message}", err)); } UndeterminedEvents.Add(ev.Hex()); if (ev.IsLoaded()) { PendingLoadedEvents++; } if (ev.BlockSignatures() != null) { await RecordBlockSignatures(ev.BlockSignatures()); } tx.Commit(); } return(null); }
public Exception InsertEvent(Event ev, bool setWireInfo) { //verify signature var(ok, err) = ev.Verify(); if (!ok) { if (err != null) { return(err); } return(new HashgraphError($"Invalid signature")); } err = CheckSelfParent(ev); if (err != null) { return(new Exception($"CheckSelfParent: {err.Message}", err)); } err = CheckOtherParent(ev); if (err != null) { return(new Exception($"CheckOtherParent: {err.Message}", err)); } ev.SetTopologicalIndex(TopologicalIndex); TopologicalIndex++; if (setWireInfo) { err = SetWireInfo(ev); if (err != null) { return(new Exception($"SetWireInfo: {err.Message}", err)); } } err = InitEventCoordinates(ev); if (err != null) { return(new Exception($"InitEventCoordinates: {err.Message}", err)); } err = Store.SetEvent(ev); if (err != null) { return(new Exception($"SetEvent: {err.Message}", err)); } err = UpdateAncestorFirstDescendant(ev); if (err != null) { return(new Exception($"UpdateAncestorFirstDescendant: {err.Message}", err)); } UndeterminedEvents.Add(ev.Hex()); if (ev.IsLoaded()) { PendingLoadedEvents++; } return(null); }