Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Add chain reader and codec EVM implementation (#11842)
* Implement skeleton interfaces, structs, & methods for ChainReader EVM POC - Read ChainReader config in from RelayConfig - Add some initialization and validation relay skeletons - Use medianProviderWrapper instead of passing medianContract separately This avoids us having to modify the signature of NewMedianFactory, which would require further modifications to all non-evm repos and chainlink-relay - Add chain_reader_test.go with some basic relay tests Co-authored-by: Jordan Krage <jmank88@gmail.com> - Add chain reader config validation - Add chain reader config validation tests - Add config for chain reader median contract to cr validation testcases - Add unimplemented Encode(), Decode(), GetMaxEncodingSize(), GetMaxDecodingSize() - Add ChainReader() method to mock provider for plugin test - Rename relaymercury.ChainReader to MercuryChainReader, resolve name collisions - Add tests for errors during ChainReader construction - Propagate InvalidConfig & any other errors back to client We should ignore Unsupported until node ops have been given ample time to migrate to the new job spec (including a section for ChainReader config) so that we can remove the old product-specific MedianContract component from MedianProvider. All other errors we can immediately start passing back to the client, letting the core node decide how to handle them (eg. displaying an "invalid job spec" message to the UI if the RelayConfig was invalid or the ContractID missing) * Fix lint * Fix go imports lint * Fix go.mod require got split into two Co-authored-by: Jordan Krage <jmank88@gmail.com> * Run make gomodtidy * Add tickets to chainreader TODOs * Log when we're falling back to internal MedianContract We had this before, at some point it accidentally got dropped * Pass contractID, relayConfig instead of relayOpts Also: move test for invalid contract ID to evm_test.go, & add mismatched ChainID test while we're here since it's pretty similar * Revert get solana sha workflow to ref develop Co-authored-by: Jordan Krage <jmank88@gmail.com> * Update err handling for when chain reader config is missing * Update solana repo hash * Improve chain reader config validation tests * Run go mod tidy * Update solana repo go mod reference and tidy * fix logs dir for Solana tests * fix solana logs path once more * print absolue log folder location * get abs folder in a correct way * do it some other way * update solana logs dir in github workflow * Add chain Reader enabled log to NewMedianServices * Update chainlink-solana ref and tidy * Add logs and handle disabled chain reader when median loop is enabled * Update go mod solana repo refs * Improve error messages in evm chain reader and add test cases * Update minor comment * Run tidy * Remove unneeded chain reader codec methods * Remove chain reader return values as they are out of scope for this PR * Add types for the evm * Create a codec entry with from args, allowing us to do type checking and to have structs to use with abi.Arguments's Pack function * Craetes a function to get the max size for abi.Argumetns, given any outermost slices have N elements * Add codec and make chain reader use it. Run the interface tests for both chain reader and codec. * Add modifiers to evm chain reader and codec * Add modifiers to evm chain reader and codec * small fixes after merging * Small cleanups and comments * fix after merge * add events * Don't pass ctx around in tests * Support multiple contract names and mapping them to multiple contracts. * Upadte chain reader interface * update go mod * Fix address type and start the chain reader * Update go mod references * add epoch converting * Simplify chain reader's bindings. * Add smoke test and feature test for chain reader. * lint again * Update solana to point to newer other ones in its own integration tests... * linter * . * newer solana again * newer solana again... * Fix bug with unnamed return params and invalid params containing the same name multiple times * Add generated files to sonar exclude * Update sonar again * Methods per sonar suggestions * Reanme function and type per PR feedback * Generate abi, bin & wrapper for chainreader test with gethwrappers * Update generated-wrapper-dependency-versions-do-not-edit.txt Also: remove extra unused files * prettier -w ChainReaderTestContract.sol * Update to use the ErrSliceWrongLen * Move test contract from contracts/tests to contrats/shared/test * Fix SQ coverage exclusions * Use modifier for time * Update go.mod * .github/workflows: dedupe log artifact name with tag_suffix * [TT-792] Add Resources for New OCR2 Tests (#11702) * Add Resources for New OCR2 Tests * More power to the engines * Log everything * Chill on the power now * Fix missing container env * Update common * Fix broken test * Add encoder defs for events * Revert "Add encoder defs for events" This reverts commit dd99acc. * revert the change to codec entry for event and simplify how it's done * Add Marshal method for custom codec types. * Updated common, still seeing not found, not sure why... * Update feeds * Update feeds and common to remove accidental debugging log line * Update feeds to remove accidental log line and to add more logging to warning messages * Fixup go mod * Update feeds * Remove json tag that had no business being where it was in codec entry * Fix small lint error, likely detected from better linter in merge from dev * Add fuzz test for codec * Support indexed events * PR feedback, fix typo, clear up comment, revert making a function public * Refactored function for getting event input. * --fix and add comments * use maps instaed fo ToCamelCase to allow consistnacy, also safer if customers have foo and foo_ both as varibles. * Scope native and checked type conversion to a single struct and add tests to verify that NewAt is safe and fuzz tests for sanity around it too * Chain Reader config improvements (#11679) * core/services/job: remove JSONConfig.Bytes hack * Shorten chain reader cfg abi in median test, change readType string * minimize abi; pretty formatting; use text marshaller * integrations-tests/client: use TOML for relayconfig * minimize chain reader median contract abi in features ocr2 test * pretty ABI JSON * add ModifiersConfig wrapper to include type field * fix TestOCR2TaskJobSpec_String --------- Co-authored-by: ilija <pavlovicilija42@gmail.com> * Template must in types gen and small json rename for mods in chain reader def fields * Update test contract for lint, fix toml test files after renaming the mod in prior commit * Update common for a rename and fix tests that I broke a couple commits ago * Move test contract * Commit with fixed contract for codec test and add small check to if statement for arg len * small fix to encoder, and fix config in feature test * Remove debug line since smoke test is passing now and I need to be ready to merge * Fix bad merge conflict * small PR fixes * Couple more error fixes * update common * update feeds to point to main * Fix typo * Update Solana repo refs * Pretty chain reader test solitidty file * Update solana * Update solana in integation tests * Needed to update more than just integation tests for solana. * Update Solana ref to fix relayConfig * Update Solana ref again * Update solana and starknet to point to the develop branches. * update relayer for starknet --------- Co-authored-by: Domino Valdano <2644901+reductionista@users.noreply.github.com> Co-authored-by: ilija <pavlovicilija42@gmail.com> Co-authored-by: ilija42 <57732589+ilija42@users.noreply.github.com> Co-authored-by: Jordan Krage <jmank88@gmail.com> Co-authored-by: Bartek Tofel <bartek.tofel@smartcontract.com> Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> Co-authored-by: Adam Hamrick <adam.hamrick@smartcontract.com>
- Loading branch information