-
Notifications
You must be signed in to change notification settings - Fork 30
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Extra state reports #1287
Extra state reports #1287
Conversation
Codecov ReportPatch coverage has no change and project coverage change:
Additional details and impacted files@@ Coverage Diff @@
## feat/fraud-reports #1287 +/- ##
============================================================
- Coverage 60.28552% 60.19506% -0.09047%
============================================================
Files 566 566
Lines 34043 34041 -2
Branches 276 276
============================================================
- Hits 20523 20491 -32
- Misses 11662 11684 +22
- Partials 1858 1866 +8
Flags with carried forward coverage won't be shown. Click here to find out more.
☔ View full report in Codecov by Sentry. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
tiny stuff here n there. other than that, lgtm!
* [goreleaser] * up to calling submitStateReport * barebones report invalid state in snapshot. need to update root PR * make contract interfaces return txs for submitter * [goreleaser] * Cleanup: setup in parallel * staging: working on fraud_test notary signature * WIP: working thru fraud test * WIP: working test * Cleanup: remove logs * Cleanup: more logs * Fix: throw error for int64 overflow in EncodeState() * WIP: fraud attestation handling * WIP: add TestReportAttestationNotOnSummit * WIP: testing. not getting log for submitAttestation event * WIP, getting error of datahash code 0x184fb2df0de4da8049867b20a0d8b823d4590d0f3c9881144e53690eb2f67fe7 * WIP: successfully submitting fraudulent attestation. now debugging guards report * WIP: working TestReportAttestationNotOnSummit * Cleanup: test, remove logs * Cleanup: remove GetAttestationComputeHash(), instead calculate hash as input * Cleanup: remove unnecessary TestEncodeChainGasParity for now * Cleanup: remove init() used for debugging lightinbox.metadata.go * Cleanup: de-functionalize slashAccusedAgent() for consistency * WIP: adding submitAttestationReport * working submitattestationreport * WIP: getting a signature for the STATE report * small changes before handoff * WIP: verifyStateWithAttestation case impl * Feat: add TestReportFraudulentStateInAttestation * staging. added a getter to the bondingmanager * working test for fraudulentstateinattestation * WIP: add receipt type with encoder * WIP: add TestInvalidReceipt and handleReceipt impl * CLEANME: added checks to test and start with tips encoding parity * WIP: working case 1 of agnetStatusUpdate * WIP: opendispute handling * Cleanup: guard impl * Cleanup: remove checks from event parser methods * start of db implementation * fix * fillbytes * fix * staging * Cleanup: remove printing reverts * WIP: add getTestGuard() helper * working receipt fraud test * Cleanup: add bumpTx helper * Cleanup: utilize AgentFlagType enum for AgentStatus.Flag values * Cleanup: use getTestGuard() helper in all tests * Cleanup: remove unnecessary test code * Feat: add DisputeStatus type, GetDisputeStatus() call to BondingManager * Feat: guard checks dispute status before submitting state report * Cleanup: remove embedded lightinbox * Cleanup: Domain -> AgentDomain * WIP: verify agent status before slashing * working multiple state case * start to sql queries for crosstable dispute handling * WIP: implement db queries and logic for updateAgentStatus() call * WIP: fix cyclic deps * Fix: build errs * Add db tests * wip: crosstable * passing TestGetUpdateAgentStatusParameters * working crosstable testrs * WIP: add updateAgentStatuses() * Feat: working anvil backend for fraud tests * WIP: add evm.IncreaseTime() call * clean and reformat query * WIP: add bumpBackends() * WIP: merge handling of DisputeOpened on remote / summit * Cleanup: remove logs * Fix: build * Cleanup: some lints; guard parses RootUpdated events * Cleanup: more lints * Cleanup: remove unnecessary param in VerifyStateWithSnapshot() * Cleanup: more lints * Cleanup: more linting * Cleanup: remove comments * Cleanup: merge isStateSlashable() logic * Cleanup: unused params * Cleanup: another unused param * Cleanup: move event parsers to utils.go * Cleanup: move handlers to fraud.go * Cleanup: add comments for fraud handlers * Cleanup: comments * De-duplicate agent signing logic (#1228) * WIP: merge common signing logic into sign() util * WIP: add Encoder interface for signed types * Feat: add consts for salt values * Cleanup: remove specific language from generic signEncoder func * Fix: parity tests * Cleanup: lint * Fix: don't parse notary err on ctx cancel * Cleanup: enable TestGuardE2E * Cleanup: err msg * Fix: ignore ctx cancel err in agents integration test * Fix: TestAgentsE2E * Fix: avoid int64 overflow in executor tests * Cleanup: resolve merge conflict * Cleanup: merge conflict * Feat: add NowFunc for time override * WIP: executing mngr msg * WIP: debugging GetLatestSummitBlockNumber() * wip: friday progress * Feat: add PassAgentRoot to destination interface * WIP: parse RootUpdated on light manager, submit extra attestation and bump optimistic period on destination * WIP: manually pass in agent root in last attestation * Feat: guard db uses GetBlockNumberForRoot() * WIP: working test * Feat: correct block number condition * Cleanup: remove logs * Cleanup: more logs * Cleanup: more cleanup * Cleanup: remove unnecessary event parsing, re enable guard submitter * add GetSummitBlockNumberForRoot test * Cleanup: logs * Fix: re enable submitter in notary * Cleanup: go mod tidy * small lint * reduce again * support for remote scribe in guard commands * trivial fixes * Fix: retry contract deployment * Extra state reports (#1287) * Feat: submit state reports to remote chains * Feat: add SubmitStateReportWithAttestation on LightInbox * WIP: verify number of reports on agent domain * Feat: add prepareStateReport() for all report submissions * Feat: add working state report verification to TestReportFraudulentStateInAttestation * Feat: add verifyStateReport() helper * Feat: add verifyStateReport() helper * WIP: add RelayableAgentStatus model * Cleanup: remove unused dispute handling * WIP: working TestFraudulentStateInSnapshot with new agent status model * WIP: fix crosstable logic, logs * Feat: add NotaryOnDestination to test setup * WIP: working test with NotaryOnDestination and Order clause in db query * Cleanup: logs, dead code * Fix: db tests * Cleanup: lints * Cleanup: remove Debug() gorm flags * Feat: add updateAgentStatus() test helper * Cleanup: update db comment * Cleanup: correct db comment * Fix: some lints * Cleanup: lint * Cleanup: clear nonce * Submitter and Retries for Fraud (#1288) * wrap each func. need to fix test * working tests with submitter * remove test file * start to sql queries for crosstable dispute handling * retries and print statements to be deleted * undo generic retry * remove test files * remove other test file * working tests * remove print statement in executor * implement wasse suggestions * [goreleaser] * fraud report branch * gosum * upterm * assert->require * log json receipt of failed txes * receipt * try nightly (this is a longshot) * shorten ci runs * shorten ci runs * throw reverts at deployer level in addition to solidity level * throw reverts at deployer level in addition to solidity level * test some ideas * remove for * hi * redundant * generation fix [ci skip] * fatal * summit * real chain id * update * uptemr * [ci skip] * fix host port to not be bound to hostname * Fix: add index to avoid 'ON CONFLICT clause does not match any PRIMARY KEY or UNIQUE constraint' error * upterm * REVERT THIS. test changing all jaeger to null * re enable workflow * Revert "re enable workflow" This reverts commit f5ca330. * Revert "REVERT THIS. test changing all jaeger to null" This reverts commit 2320a1c. * start to sql queries for crosstable dispute handling * dont run upterm * upterm * Fix: log tx hash within submitter * Fix: do MIN(block_number) in db query * error instead of warn * Delete agents/agents/guard/test.txt * Delete agents/agents/test.txt * no jaeger in CI * upterm * Add logs * add agent status prints * omnirpc and increase evm increaase time by 30 secs * fix: DDDDDDDD * no more jaeger in ci * Retry guard constructor * Disable upterm * Add check for nil guard * Enable upterm * Enable test without pyroscope / cov * Bump timeouts * Add back env vars * Add upterm * Log err on anvil purge * Lint * Add time log * Printf * Add address to anvil log * Remove mem limit and enable gc * max retry to 60 secs * maxTotalTime on guard construcotR * swing for the fences * agents lint * core lint fix * Fix: yaml lint * Revert "Add address to anvil log" This reverts commit 3e401d7. * Add codecov back to workflow * try with run instead of command * Use command instead of run with multiline content * clean comments * Fix: yaml lint * redo go.yml * Cleanup: gh action retries * Cleanup: remove getTestGuard() retry * working with some noncemanager removals * working with all noncemanager removals * precompile tests * up the memlimit [no_skip] [goreleaser] * hi [goreleaser] * fix malformed memlimit * reintroduce pyroscope [goreleaser] * try to fix codecov * github * rename coverage.txt to profile.cov * utilize precompilation (see: golang/go#15513) * f * try disabing pyroscope again * list containers at the end [revert me] [goreleaser] * fix the issue * minimal log collection * go.yml * tmp logs * Fix: use iota+1 for contract type * fix: anvil test and delete debugging * Fix: address flakes in TestUpdateAgentStatusOnRemote by bumping backends * Cleanup: add grouped stdlib imports in editorconfig * Cleanup: add TODO * fix: mkdir for tmp logs for tar logs * Cleanup: use dockerutil.GetPort() * Cleanup: isNotSummit -> isNotary * Cleanup: more descriptive comment on GetPort() behavior * create parent dir for tmp logs * fix: add iota + 1 where applicable * Fix: bump backends after updateAgentStatus() * use different dir for getting the logs * revert iota + 1 in agents/contract * undo iota + 1 in agents/types * Add logs * sleep pass * Revert "Add logs" This reverts commit 8637cb6. * Fix: verify snapshot states before bumping evm time * Cleanup: lint * Config: bump retries * Config: add on_retry_command to rm docker containers --------- Co-authored-by: Max Planck <maxplanck.crypto@gmail.com> Co-authored-by: Trajan0x <trajan0x@users.noreply.github.com> Co-authored-by: Max Planck <99688618+CryptoMaxPlanck@users.noreply.github.com>
After a
Guard
submits a state report (either with snapshot or with attestation), we first submit the report on Summit, then on the agent's respective domain. If the agent is not yet registered on the remote domain, we store aRelayableAgentStatus
model and trigger a call toupdateAgentStatus()
on the domain prior to submitting the report.The
RelayableAgentStatus
model is mean to replace theDispute
model for the sake of generality; it allows us to handle both the case whereupdateAgentStatus()
must be called as a result of a remote dispute, or an agent that is yet to be registered.