Skip to content

feat(custody): eip-1271, eip-6492 sigs support#293

Merged
nksazonov merged 12 commits intofeat/mm-eip191-signaturesfrom
feat/custody-eip1271-6492
Jul 28, 2025
Merged

feat(custody): eip-1271, eip-6492 sigs support#293
nksazonov merged 12 commits intofeat/mm-eip191-signaturesfrom
feat/custody-eip1271-6492

Conversation

@nksazonov
Copy link
Contributor

No description provided.

@nksazonov nksazonov requested a review from mnaichuk July 25, 2025 14:32
Copy link
Contributor

@gemini-code-assist gemini-code-assist bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Summary of Changes

Hello @nksazonov, I'm Gemini Code Assist1! I'm currently reviewing this pull request and will post my feedback shortly. In the meantime, here's a summary to help you and other reviewers quickly get up to speed!

This pull request introduces comprehensive support for EIP-1271 and EIP-6492 signature validation within the Custody contract. This enhancement allows the system to verify signatures from a wider range of account types, including smart contracts and undeployed smart accounts, significantly improving flexibility and compatibility with modern Ethereum account abstraction standards. The changes involve core logic updates, utility function refactoring, and extensive new test coverage.

Highlights

  • EIP-1271 Signature Support: I've added support for EIP-1271, allowing smart contracts to validate signatures. The _verifyChallengerSignature and verifyStateSignature functions now check if a signer is a contract and, if so, delegate signature validation to that contract via isValidERC1271Signature.
  • EIP-6492 Signature Support (Account Abstraction): I've implemented EIP-6492 support, enabling the validation of signatures from smart accounts that are not yet deployed on-chain. A new isValidERC6492Signature function can deploy the account via a create2 factory if needed, then proceed with EIP-1271 validation.
  • Unified Signature Verification: The core verifyStateSignature function in Utils.sol has been refactored to intelligently handle different signature types (EOA, EIP-1271, EIP-6492) based on the signature format and the signer's address code. EOA-specific logic is now encapsulated in verifyStateEOASignature.
  • Contract Visibility and Function Modifiers: Several internal constants in Custody.sol and Utils.sol have been made public for external access, primarily for testing. Additionally, view modifiers have been removed from various functions across Custody.sol, Utils.sol, and adjudicator contracts, as EIP-6492 validation may involve state-changing deployments.
  • Expanded Test Coverage: I've significantly expanded the test suite to cover the new EIP-1271 and EIP-6492 signature validation flows. This includes new mock contracts (MockFlagERC1271, MockERC4337Factory) and a UtilsHarness for direct testing of internal utility functions, along with refactored and new test cases in Custody.t.sol, Custody_integration.t.sol, and Utils.t.sol.
Using Gemini Code Assist

The full guide for Gemini Code Assist can be found on our documentation page, here are some quick tips.

Invoking Gemini

You can request assistance from Gemini at any point in your pull request via creating an issue comment (i.e. comment on the pull request page) using either /gemini <command> or @gemini-code-assist <command>. Below is a summary of the supported commands.

Feature Command Description
Code Review /gemini review Performs a code review for the current pull request in its current state.
Pull Request Summary /gemini summary Provides a summary of the current pull request in its current state.
Comment @gemini-code-assist Responds in comments when explicitly tagged, both in issue comments and review comments.
Help /gemini help Displays a list of available commands.

Customization

To customize Gemini Code Assist for GitHub experience, repository maintainers can create a configuration file and/or provide a custom code review style guide (such as PEP-8 for Python) by creating and adding files to a .gemini/ folder in the base of the repository. Detailed instructions can be found here.

Limitations & Feedback

Gemini Code Assist may make mistakes. Please leave feedback on any instances where its feedback is incorrect or counter productive. You can react with 👍 and 👎 on @gemini-code-assist comments or fill out our survey to provide feedback.

You can also get AI-powered code generation, chat, as well as code reviews directly in the IDE at no cost with the Gemini Code Assist IDE Extension.

Footnotes

  1. Review the Privacy Notices, Generative AI Prohibited Use Policy, Terms of Service, and learn how to configure Gemini Code Assist in GitHub here. Gemini can make mistakes, so double check it and use code with caution.

Copy link
Contributor

@gemini-code-assist gemini-code-assist bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Code Review

This pull request introduces support for EIP-1271 and EIP-6492 signature verification, which is a great enhancement for smart contract wallet compatibility. The code is well-organized, and the addition of comprehensive tests, including a UtilsHarness, is commendable.

I've identified one critical issue that will cause a compilation error and a couple of medium-severity suggestions focused on improving gas efficiency by avoiding redundant computations in the signature verification logic. Addressing these points will further strengthen the implementation.

@nksazonov nksazonov merged commit 606ef82 into feat/mm-eip191-signatures Jul 28, 2025
@nksazonov nksazonov deleted the feat/custody-eip1271-6492 branch July 28, 2025 12:16
nksazonov added a commit that referenced this pull request Jul 28, 2025
* feat(contract): add ERC-1271,6492 support

* test(contract/Utils.sol): add ERC-1271, 6492 tests

* refactor(contract:Utils.t.sol): separate tests into contracts

* refactor(UtilsHarness): do NOT expose constants

* fix(contracts/adjudicators): use verifyStateSignature instead of just EOA sig

* test(contract/Custody): add ERC-1271, 6492 sig to integration test

* test(contract/Custody): add challenge with EIP-712, EIP-1271 tests

* refactor(contract/Utils): reorder recoverStateEIP712Signer params for consistency

* test(contract): remove console.logs

* feat(contract): clarify Utils comments

* refactor(contract): optimize Custody and Utils sig verification functions

* style(contract): run forge fmt
nksazonov added a commit that referenced this pull request Jul 31, 2025
* feat(contract): add ERC-1271,6492 support

* test(contract/Utils.sol): add ERC-1271, 6492 tests

* refactor(contract:Utils.t.sol): separate tests into contracts

* refactor(UtilsHarness): do NOT expose constants

* fix(contracts/adjudicators): use verifyStateSignature instead of just EOA sig

* test(contract/Custody): add ERC-1271, 6492 sig to integration test

* test(contract/Custody): add challenge with EIP-712, EIP-1271 tests

* refactor(contract/Utils): reorder recoverStateEIP712Signer params for consistency

* test(contract): remove console.logs

* feat(contract): clarify Utils comments

* refactor(contract): optimize Custody and Utils sig verification functions

* style(contract): run forge fmt
nksazonov added a commit that referenced this pull request Jul 31, 2025
…1271,6492) (#294)

* feat: move erc7824 documentation to nitrolite (#272)

* feat: move erc7824 documentation to nitrolite

* feat: move GH actions to common scope

* fix: comment GITHUB_TOKEN

* feat(custody): add EIP-191, EIP-712 signature support (#257)

* feat(custody): add EIP-191, EIP-712 support

* feat(custody): correct EIP-712 sig impl

* feat(utils): add POLA principle comment

* feat(contract): add EIP712AdjudicatorBase

* feat(contract): integrate EIP712AdjudicatorBase to supported adjs

* fix(contract): tests with updated adjs

* test(contract): EIP712AdjudicatorBase

* test(contract): SimpleConsensus EIP191, EIP712 sigs

* test(contract): Utils signatures

* test(contract): Custody, SimpleConsensus integration tests for sigs

* refactor(contract): migrate sig to bytes (#279)

* refactor(Types): replace Signature{v,r,s} with bytes

* style(contract): add empty lines at the end

* refactor(clearnode): replace Signature{r,s,v} with []byte (#283)

* refactor(sdk): migrate `Signature{r,s,v}` to `Hex` (#284)

* refactor(sdk): replace Signature{r,s,v} with Hex

* fix(NitroliteService): perform convertStateFromContract correctly

* fix(rpc): expect updated signature type from rpc

* style(sdk/rpc): remove ServerSignatureSchema var

* feat(sdk/rpc): add empty signatures array by default

* feat(sdk): add build:force command

* feat(sdk): remove npm build:force

* refactor(clearnode): define `Signature []byte` type (#287)

* refactor(clearnode): define `Signature []byte` type

* refactor(clearnode::RPCEntry): replace sig `[]string` with `[]Signature`

* feat(clearnode/nitrolite): add Sigs2Strings, Strings2Sigs helpers

* fix(integration): tests sig migration (#289)

* feat(docker-compose): add ability to pass logger visibility to clearnode

* fix(clearnode): raw ECDSA sign and verify

* fix(clearnode): try to extract req id on ummarshal error

* fix(integration): update sig to new type

* feat(sdk): change type of sig array to contain only Hex

* refactor(clearnode): remove check on nil Req, zero-init instead

* fix(clearnode:nitrolite): remove unintended side-effect of sig param modif

* feat(custody): add note about ephemeral final state

* style(contract): run forge fmt

* fix(clearnode/docs): remove legacy signature format

* feat(custody): eip-1271, eip-6492 sigs support (#293)

* feat(contract): add ERC-1271,6492 support

* test(contract/Utils.sol): add ERC-1271, 6492 tests

* refactor(contract:Utils.t.sol): separate tests into contracts

* refactor(UtilsHarness): do NOT expose constants

* fix(contracts/adjudicators): use verifyStateSignature instead of just EOA sig

* test(contract/Custody): add ERC-1271, 6492 sig to integration test

* test(contract/Custody): add challenge with EIP-712, EIP-1271 tests

* refactor(contract/Utils): reorder recoverStateEIP712Signer params for consistency

* test(contract): remove console.logs

* feat(contract): clarify Utils comments

* refactor(contract): optimize Custody and Utils sig verification functions

* style(contract): run forge fmt

* feat: replace `stateHash` with `packedState` in message signing (#295)

* feat(contract): replace stateHash with packedState in signing

* test(contract): migrate to getPackedState

* feat(contract): remove getStateHash

* feat(clearnode): remove state_hash, rename EncodeState to Pack

* feat(sdk): remove state_hash, add getPackedState

* refactor(sdk): supply channelId and state to signState

* docs(website): migrate Sig to Hex, add supported signature formats

---------

Co-authored-by: MaxMoskalenko <mx.msklnk@gmail.com>
nksazonov added a commit that referenced this pull request Jul 31, 2025
…1271,6492) (#294)

* feat: move erc7824 documentation to nitrolite (#272)

* feat: move erc7824 documentation to nitrolite

* feat: move GH actions to common scope

* fix: comment GITHUB_TOKEN

* feat(custody): add EIP-191, EIP-712 signature support (#257)

* feat(custody): add EIP-191, EIP-712 support

* feat(custody): correct EIP-712 sig impl

* feat(utils): add POLA principle comment

* feat(contract): add EIP712AdjudicatorBase

* feat(contract): integrate EIP712AdjudicatorBase to supported adjs

* fix(contract): tests with updated adjs

* test(contract): EIP712AdjudicatorBase

* test(contract): SimpleConsensus EIP191, EIP712 sigs

* test(contract): Utils signatures

* test(contract): Custody, SimpleConsensus integration tests for sigs

* refactor(contract): migrate sig to bytes (#279)

* refactor(Types): replace Signature{v,r,s} with bytes

* style(contract): add empty lines at the end

* refactor(clearnode): replace Signature{r,s,v} with []byte (#283)

* refactor(sdk): migrate `Signature{r,s,v}` to `Hex` (#284)

* refactor(sdk): replace Signature{r,s,v} with Hex

* fix(NitroliteService): perform convertStateFromContract correctly

* fix(rpc): expect updated signature type from rpc

* style(sdk/rpc): remove ServerSignatureSchema var

* feat(sdk/rpc): add empty signatures array by default

* feat(sdk): add build:force command

* feat(sdk): remove npm build:force

* refactor(clearnode): define `Signature []byte` type (#287)

* refactor(clearnode): define `Signature []byte` type

* refactor(clearnode::RPCEntry): replace sig `[]string` with `[]Signature`

* feat(clearnode/nitrolite): add Sigs2Strings, Strings2Sigs helpers

* fix(integration): tests sig migration (#289)

* feat(docker-compose): add ability to pass logger visibility to clearnode

* fix(clearnode): raw ECDSA sign and verify

* fix(clearnode): try to extract req id on ummarshal error

* fix(integration): update sig to new type

* feat(sdk): change type of sig array to contain only Hex

* refactor(clearnode): remove check on nil Req, zero-init instead

* fix(clearnode:nitrolite): remove unintended side-effect of sig param modif

* feat(custody): add note about ephemeral final state

* style(contract): run forge fmt

* fix(clearnode/docs): remove legacy signature format

* feat(custody): eip-1271, eip-6492 sigs support (#293)

* feat(contract): add ERC-1271,6492 support

* test(contract/Utils.sol): add ERC-1271, 6492 tests

* refactor(contract:Utils.t.sol): separate tests into contracts

* refactor(UtilsHarness): do NOT expose constants

* fix(contracts/adjudicators): use verifyStateSignature instead of just EOA sig

* test(contract/Custody): add ERC-1271, 6492 sig to integration test

* test(contract/Custody): add challenge with EIP-712, EIP-1271 tests

* refactor(contract/Utils): reorder recoverStateEIP712Signer params for consistency

* test(contract): remove console.logs

* feat(contract): clarify Utils comments

* refactor(contract): optimize Custody and Utils sig verification functions

* style(contract): run forge fmt

* feat: replace `stateHash` with `packedState` in message signing (#295)

* feat(contract): replace stateHash with packedState in signing

* test(contract): migrate to getPackedState

* feat(contract): remove getStateHash

* feat(clearnode): remove state_hash, rename EncodeState to Pack

* feat(sdk): remove state_hash, add getPackedState

* refactor(sdk): supply channelId and state to signState

* docs(website): migrate Sig to Hex, add supported signature formats

---------

Co-authored-by: MaxMoskalenko <mx.msklnk@gmail.com>
nksazonov added a commit that referenced this pull request Jul 31, 2025
…1271,6492) (#294)

* feat: move erc7824 documentation to nitrolite (#272)

* feat: move erc7824 documentation to nitrolite

* feat: move GH actions to common scope

* fix: comment GITHUB_TOKEN

* feat(custody): add EIP-191, EIP-712 signature support (#257)

* feat(custody): add EIP-191, EIP-712 support

* feat(custody): correct EIP-712 sig impl

* feat(utils): add POLA principle comment

* feat(contract): add EIP712AdjudicatorBase

* feat(contract): integrate EIP712AdjudicatorBase to supported adjs

* fix(contract): tests with updated adjs

* test(contract): EIP712AdjudicatorBase

* test(contract): SimpleConsensus EIP191, EIP712 sigs

* test(contract): Utils signatures

* test(contract): Custody, SimpleConsensus integration tests for sigs

* refactor(contract): migrate sig to bytes (#279)

* refactor(Types): replace Signature{v,r,s} with bytes

* style(contract): add empty lines at the end

* refactor(clearnode): replace Signature{r,s,v} with []byte (#283)

* refactor(sdk): migrate `Signature{r,s,v}` to `Hex` (#284)

* refactor(sdk): replace Signature{r,s,v} with Hex

* fix(NitroliteService): perform convertStateFromContract correctly

* fix(rpc): expect updated signature type from rpc

* style(sdk/rpc): remove ServerSignatureSchema var

* feat(sdk/rpc): add empty signatures array by default

* feat(sdk): add build:force command

* feat(sdk): remove npm build:force

* refactor(clearnode): define `Signature []byte` type (#287)

* refactor(clearnode): define `Signature []byte` type

* refactor(clearnode::RPCEntry): replace sig `[]string` with `[]Signature`

* feat(clearnode/nitrolite): add Sigs2Strings, Strings2Sigs helpers

* fix(integration): tests sig migration (#289)

* feat(docker-compose): add ability to pass logger visibility to clearnode

* fix(clearnode): raw ECDSA sign and verify

* fix(clearnode): try to extract req id on ummarshal error

* fix(integration): update sig to new type

* feat(sdk): change type of sig array to contain only Hex

* refactor(clearnode): remove check on nil Req, zero-init instead

* fix(clearnode:nitrolite): remove unintended side-effect of sig param modif

* feat(custody): add note about ephemeral final state

* style(contract): run forge fmt

* fix(clearnode/docs): remove legacy signature format

* feat(custody): eip-1271, eip-6492 sigs support (#293)

* feat(contract): add ERC-1271,6492 support

* test(contract/Utils.sol): add ERC-1271, 6492 tests

* refactor(contract:Utils.t.sol): separate tests into contracts

* refactor(UtilsHarness): do NOT expose constants

* fix(contracts/adjudicators): use verifyStateSignature instead of just EOA sig

* test(contract/Custody): add ERC-1271, 6492 sig to integration test

* test(contract/Custody): add challenge with EIP-712, EIP-1271 tests

* refactor(contract/Utils): reorder recoverStateEIP712Signer params for consistency

* test(contract): remove console.logs

* feat(contract): clarify Utils comments

* refactor(contract): optimize Custody and Utils sig verification functions

* style(contract): run forge fmt

* feat: replace `stateHash` with `packedState` in message signing (#295)

* feat(contract): replace stateHash with packedState in signing

* test(contract): migrate to getPackedState

* feat(contract): remove getStateHash

* feat(clearnode): remove state_hash, rename EncodeState to Pack

* feat(sdk): remove state_hash, add getPackedState

* refactor(sdk): supply channelId and state to signState

* docs(website): migrate Sig to Hex, add supported signature formats

---------

Co-authored-by: MaxMoskalenko <mx.msklnk@gmail.com>
nksazonov added a commit that referenced this pull request Jul 31, 2025
…1271,6492) (#294)

* feat: move erc7824 documentation to nitrolite (#272)

* feat: move erc7824 documentation to nitrolite

* feat: move GH actions to common scope

* fix: comment GITHUB_TOKEN

* feat(custody): add EIP-191, EIP-712 signature support (#257)

* feat(custody): add EIP-191, EIP-712 support

* feat(custody): correct EIP-712 sig impl

* feat(utils): add POLA principle comment

* feat(contract): add EIP712AdjudicatorBase

* feat(contract): integrate EIP712AdjudicatorBase to supported adjs

* fix(contract): tests with updated adjs

* test(contract): EIP712AdjudicatorBase

* test(contract): SimpleConsensus EIP191, EIP712 sigs

* test(contract): Utils signatures

* test(contract): Custody, SimpleConsensus integration tests for sigs

* refactor(contract): migrate sig to bytes (#279)

* refactor(Types): replace Signature{v,r,s} with bytes

* style(contract): add empty lines at the end

* refactor(clearnode): replace Signature{r,s,v} with []byte (#283)

* refactor(sdk): migrate `Signature{r,s,v}` to `Hex` (#284)

* refactor(sdk): replace Signature{r,s,v} with Hex

* fix(NitroliteService): perform convertStateFromContract correctly

* fix(rpc): expect updated signature type from rpc

* style(sdk/rpc): remove ServerSignatureSchema var

* feat(sdk/rpc): add empty signatures array by default

* feat(sdk): add build:force command

* feat(sdk): remove npm build:force

* refactor(clearnode): define `Signature []byte` type (#287)

* refactor(clearnode): define `Signature []byte` type

* refactor(clearnode::RPCEntry): replace sig `[]string` with `[]Signature`

* feat(clearnode/nitrolite): add Sigs2Strings, Strings2Sigs helpers

* fix(integration): tests sig migration (#289)

* feat(docker-compose): add ability to pass logger visibility to clearnode

* fix(clearnode): raw ECDSA sign and verify

* fix(clearnode): try to extract req id on ummarshal error

* fix(integration): update sig to new type

* feat(sdk): change type of sig array to contain only Hex

* refactor(clearnode): remove check on nil Req, zero-init instead

* fix(clearnode:nitrolite): remove unintended side-effect of sig param modif

* feat(custody): add note about ephemeral final state

* style(contract): run forge fmt

* fix(clearnode/docs): remove legacy signature format

* feat(custody): eip-1271, eip-6492 sigs support (#293)

* feat(contract): add ERC-1271,6492 support

* test(contract/Utils.sol): add ERC-1271, 6492 tests

* refactor(contract:Utils.t.sol): separate tests into contracts

* refactor(UtilsHarness): do NOT expose constants

* fix(contracts/adjudicators): use verifyStateSignature instead of just EOA sig

* test(contract/Custody): add ERC-1271, 6492 sig to integration test

* test(contract/Custody): add challenge with EIP-712, EIP-1271 tests

* refactor(contract/Utils): reorder recoverStateEIP712Signer params for consistency

* test(contract): remove console.logs

* feat(contract): clarify Utils comments

* refactor(contract): optimize Custody and Utils sig verification functions

* style(contract): run forge fmt

* feat: replace `stateHash` with `packedState` in message signing (#295)

* feat(contract): replace stateHash with packedState in signing

* test(contract): migrate to getPackedState

* feat(contract): remove getStateHash

* feat(clearnode): remove state_hash, rename EncodeState to Pack

* feat(sdk): remove state_hash, add getPackedState

* refactor(sdk): supply channelId and state to signState

* docs(website): migrate Sig to Hex, add supported signature formats

---------

Co-authored-by: MaxMoskalenko <mx.msklnk@gmail.com>
dimast-x pushed a commit that referenced this pull request Jul 31, 2025
feat(custody): add EIP-191, EIP-712 signature support (#257)

* feat(custody): add EIP-191, EIP-712 support

* feat(custody): correct EIP-712 sig impl

* feat(utils): add POLA principle comment

* feat(contract): add EIP712AdjudicatorBase

* feat(contract): integrate EIP712AdjudicatorBase to supported adjs

* fix(contract): tests with updated adjs

* test(contract): EIP712AdjudicatorBase

* test(contract): SimpleConsensus EIP191, EIP712 sigs

* test(contract): Utils signatures

* test(contract): Custody, SimpleConsensus integration tests for sigs

refactor(contract): migrate sig to bytes (#279)

* refactor(Types): replace Signature{v,r,s} with bytes

* style(contract): add empty lines at the end

refactor(clearnode): replace Signature{r,s,v} with []byte (#283)

refactor(sdk): migrate `Signature{r,s,v}` to `Hex` (#284)

* refactor(sdk): replace Signature{r,s,v} with Hex

* fix(NitroliteService): perform convertStateFromContract correctly

* fix(rpc): expect updated signature type from rpc

* style(sdk/rpc): remove ServerSignatureSchema var

* feat(sdk/rpc): add empty signatures array by default

* feat(sdk): add build:force command

* feat(sdk): remove npm build:force

refactor(clearnode): define `Signature []byte` type (#287)

* refactor(clearnode): define `Signature []byte` type

* refactor(clearnode::RPCEntry): replace sig `[]string` with `[]Signature`

* feat(clearnode/nitrolite): add Sigs2Strings, Strings2Sigs helpers

fix(integration): tests sig migration (#289)

* feat(docker-compose): add ability to pass logger visibility to clearnode

* fix(clearnode): raw ECDSA sign and verify

* fix(clearnode): try to extract req id on ummarshal error

* fix(integration): update sig to new type

* feat(sdk): change type of sig array to contain only Hex

* refactor(clearnode): remove check on nil Req, zero-init instead

* fix(clearnode:nitrolite): remove unintended side-effect of sig param modif

feat(custody): add note about ephemeral final state

style(contract): run forge fmt

fix(clearnode/docs): remove legacy signature format

feat(custody): eip-1271, eip-6492 sigs support (#293)

* feat(contract): add ERC-1271,6492 support

* test(contract/Utils.sol): add ERC-1271, 6492 tests

* refactor(contract:Utils.t.sol): separate tests into contracts

* refactor(UtilsHarness): do NOT expose constants

* fix(contracts/adjudicators): use verifyStateSignature instead of just EOA sig

* test(contract/Custody): add ERC-1271, 6492 sig to integration test

* test(contract/Custody): add challenge with EIP-712, EIP-1271 tests

* refactor(contract/Utils): reorder recoverStateEIP712Signer params for consistency

* test(contract): remove console.logs

* feat(contract): clarify Utils comments

* refactor(contract): optimize Custody and Utils sig verification functions

* style(contract): run forge fmt

feat(custody): add ability to create channel w/ server sig

feat(contract/Custody): add ability to broker deposit in create
dimast-x pushed a commit that referenced this pull request Jul 31, 2025
feat(custody): add EIP-191, EIP-712 signature support (#257)

* feat(custody): add EIP-191, EIP-712 support

* feat(custody): correct EIP-712 sig impl

* feat(utils): add POLA principle comment

* feat(contract): add EIP712AdjudicatorBase

* feat(contract): integrate EIP712AdjudicatorBase to supported adjs

* fix(contract): tests with updated adjs

* test(contract): EIP712AdjudicatorBase

* test(contract): SimpleConsensus EIP191, EIP712 sigs

* test(contract): Utils signatures

* test(contract): Custody, SimpleConsensus integration tests for sigs

refactor(contract): migrate sig to bytes (#279)

* refactor(Types): replace Signature{v,r,s} with bytes

* style(contract): add empty lines at the end

refactor(clearnode): replace Signature{r,s,v} with []byte (#283)

refactor(sdk): migrate `Signature{r,s,v}` to `Hex` (#284)

* refactor(sdk): replace Signature{r,s,v} with Hex

* fix(NitroliteService): perform convertStateFromContract correctly

* fix(rpc): expect updated signature type from rpc

* style(sdk/rpc): remove ServerSignatureSchema var

* feat(sdk/rpc): add empty signatures array by default

* feat(sdk): add build:force command

* feat(sdk): remove npm build:force

refactor(clearnode): define `Signature []byte` type (#287)

* refactor(clearnode): define `Signature []byte` type

* refactor(clearnode::RPCEntry): replace sig `[]string` with `[]Signature`

* feat(clearnode/nitrolite): add Sigs2Strings, Strings2Sigs helpers

fix(integration): tests sig migration (#289)

* feat(docker-compose): add ability to pass logger visibility to clearnode

* fix(clearnode): raw ECDSA sign and verify

* fix(clearnode): try to extract req id on ummarshal error

* fix(integration): update sig to new type

* feat(sdk): change type of sig array to contain only Hex

* refactor(clearnode): remove check on nil Req, zero-init instead

* fix(clearnode:nitrolite): remove unintended side-effect of sig param modif

feat(custody): add note about ephemeral final state

style(contract): run forge fmt

fix(clearnode/docs): remove legacy signature format

feat(custody): eip-1271, eip-6492 sigs support (#293)

* feat(contract): add ERC-1271,6492 support

* test(contract/Utils.sol): add ERC-1271, 6492 tests

* refactor(contract:Utils.t.sol): separate tests into contracts

* refactor(UtilsHarness): do NOT expose constants

* fix(contracts/adjudicators): use verifyStateSignature instead of just EOA sig

* test(contract/Custody): add ERC-1271, 6492 sig to integration test

* test(contract/Custody): add challenge with EIP-712, EIP-1271 tests

* refactor(contract/Utils): reorder recoverStateEIP712Signer params for consistency

* test(contract): remove console.logs

* feat(contract): clarify Utils comments

* refactor(contract): optimize Custody and Utils sig verification functions

* style(contract): run forge fmt

feat(custody): add ability to create channel w/ server sig

feat(contract/Custody): add ability to broker deposit in create
nksazonov added a commit that referenced this pull request Aug 6, 2025
feat(custody): add EIP-191, EIP-712 signature support (#257)

* feat(custody): add EIP-191, EIP-712 support

* feat(custody): correct EIP-712 sig impl

* feat(utils): add POLA principle comment

* feat(contract): add EIP712AdjudicatorBase

* feat(contract): integrate EIP712AdjudicatorBase to supported adjs

* fix(contract): tests with updated adjs

* test(contract): EIP712AdjudicatorBase

* test(contract): SimpleConsensus EIP191, EIP712 sigs

* test(contract): Utils signatures

* test(contract): Custody, SimpleConsensus integration tests for sigs

refactor(contract): migrate sig to bytes (#279)

* refactor(Types): replace Signature{v,r,s} with bytes

* style(contract): add empty lines at the end

refactor(clearnode): replace Signature{r,s,v} with []byte (#283)

refactor(sdk): migrate `Signature{r,s,v}` to `Hex` (#284)

* refactor(sdk): replace Signature{r,s,v} with Hex

* fix(NitroliteService): perform convertStateFromContract correctly

* fix(rpc): expect updated signature type from rpc

* style(sdk/rpc): remove ServerSignatureSchema var

* feat(sdk/rpc): add empty signatures array by default

* feat(sdk): add build:force command

* feat(sdk): remove npm build:force

refactor(clearnode): define `Signature []byte` type (#287)

* refactor(clearnode): define `Signature []byte` type

* refactor(clearnode::RPCEntry): replace sig `[]string` with `[]Signature`

* feat(clearnode/nitrolite): add Sigs2Strings, Strings2Sigs helpers

fix(integration): tests sig migration (#289)

* feat(docker-compose): add ability to pass logger visibility to clearnode

* fix(clearnode): raw ECDSA sign and verify

* fix(clearnode): try to extract req id on ummarshal error

* fix(integration): update sig to new type

* feat(sdk): change type of sig array to contain only Hex

* refactor(clearnode): remove check on nil Req, zero-init instead

* fix(clearnode:nitrolite): remove unintended side-effect of sig param modif

feat(custody): add note about ephemeral final state

style(contract): run forge fmt

fix(clearnode/docs): remove legacy signature format

feat(custody): eip-1271, eip-6492 sigs support (#293)

* feat(contract): add ERC-1271,6492 support

* test(contract/Utils.sol): add ERC-1271, 6492 tests

* refactor(contract:Utils.t.sol): separate tests into contracts

* refactor(UtilsHarness): do NOT expose constants

* fix(contracts/adjudicators): use verifyStateSignature instead of just EOA sig

* test(contract/Custody): add ERC-1271, 6492 sig to integration test

* test(contract/Custody): add challenge with EIP-712, EIP-1271 tests

* refactor(contract/Utils): reorder recoverStateEIP712Signer params for consistency

* test(contract): remove console.logs

* feat(contract): clarify Utils comments

* refactor(contract): optimize Custody and Utils sig verification functions

* style(contract): run forge fmt

feat(custody): add ability to create channel w/ server sig

feat(contract/Custody): add ability to broker deposit in create
nksazonov added a commit that referenced this pull request Aug 6, 2025
…ints (#290)

* feat: custody updates

feat(custody): add EIP-191, EIP-712 signature support (#257)

* feat(custody): add EIP-191, EIP-712 support

* feat(custody): correct EIP-712 sig impl

* feat(utils): add POLA principle comment

* feat(contract): add EIP712AdjudicatorBase

* feat(contract): integrate EIP712AdjudicatorBase to supported adjs

* fix(contract): tests with updated adjs

* test(contract): EIP712AdjudicatorBase

* test(contract): SimpleConsensus EIP191, EIP712 sigs

* test(contract): Utils signatures

* test(contract): Custody, SimpleConsensus integration tests for sigs

refactor(contract): migrate sig to bytes (#279)

* refactor(Types): replace Signature{v,r,s} with bytes

* style(contract): add empty lines at the end

refactor(clearnode): replace Signature{r,s,v} with []byte (#283)

refactor(sdk): migrate `Signature{r,s,v}` to `Hex` (#284)

* refactor(sdk): replace Signature{r,s,v} with Hex

* fix(NitroliteService): perform convertStateFromContract correctly

* fix(rpc): expect updated signature type from rpc

* style(sdk/rpc): remove ServerSignatureSchema var

* feat(sdk/rpc): add empty signatures array by default

* feat(sdk): add build:force command

* feat(sdk): remove npm build:force

refactor(clearnode): define `Signature []byte` type (#287)

* refactor(clearnode): define `Signature []byte` type

* refactor(clearnode::RPCEntry): replace sig `[]string` with `[]Signature`

* feat(clearnode/nitrolite): add Sigs2Strings, Strings2Sigs helpers

fix(integration): tests sig migration (#289)

* feat(docker-compose): add ability to pass logger visibility to clearnode

* fix(clearnode): raw ECDSA sign and verify

* fix(clearnode): try to extract req id on ummarshal error

* fix(integration): update sig to new type

* feat(sdk): change type of sig array to contain only Hex

* refactor(clearnode): remove check on nil Req, zero-init instead

* fix(clearnode:nitrolite): remove unintended side-effect of sig param modif

feat(custody): add note about ephemeral final state

style(contract): run forge fmt

fix(clearnode/docs): remove legacy signature format

feat(custody): eip-1271, eip-6492 sigs support (#293)

* feat(contract): add ERC-1271,6492 support

* test(contract/Utils.sol): add ERC-1271, 6492 tests

* refactor(contract:Utils.t.sol): separate tests into contracts

* refactor(UtilsHarness): do NOT expose constants

* fix(contracts/adjudicators): use verifyStateSignature instead of just EOA sig

* test(contract/Custody): add ERC-1271, 6492 sig to integration test

* test(contract/Custody): add challenge with EIP-712, EIP-1271 tests

* refactor(contract/Utils): reorder recoverStateEIP712Signer params for consistency

* test(contract): remove console.logs

* feat(contract): clarify Utils comments

* refactor(contract): optimize Custody and Utils sig verification functions

* style(contract): run forge fmt

feat(custody): add ability to create channel w/ server sig

feat(contract/Custody): add ability to broker deposit in create

* feat: clearnode updates

feat: improve and simplify channel joining by broker

drop join by broker

feat: add create channel endpoint draft

feat: use proper state format

feat: code improvements and fix tests

add doc

feat: use state as encode state arg

address comments

feat: add tests for request create method

update docs

feat: refactor channel service tests

rename encode state into encode state data

feat: update response

feat: unify channel operation responses

feat: alling app session service structure to channel service

update docs

improve errors consistency

* feat(rpc): add create_channel method and unify channel response types (#296)

* feat: remove state hash from channel operation response

* update erc-7824 docs

* feat: include channel in channel operation response

* fix: use chain id as key in network config

* fix(Custody::join): allow 2 signatures

* feat: add an optional session key for create_channel request

* return state data as an encoded string

* fix(Custody::join): add Server wallet

* test(custody::join): broker auto-join tests (#303)

* test(Custody::join): broker auto-join

* refactor(contract/test): signState usage

* refactor(Custody.t.sol): enhance broker auto join test name readability

* feat: add sdk and integration support for simplified join (#304)

---------

Co-authored-by: Sazonov Nikita <35502225+nksazonov@users.noreply.github.com>
Co-authored-by: Max Pushkarov <mpushkarov@yellow.org>
Co-authored-by: nksazonov <nsazonov@openware.com>
Co-authored-by: MaxMoskalenko <mx.msklnk@gmail.com>
nksazonov added a commit that referenced this pull request Aug 6, 2025
…ints (#290)

* feat: custody updates

feat(custody): add EIP-191, EIP-712 signature support (#257)

* feat(custody): add EIP-191, EIP-712 support

* feat(custody): correct EIP-712 sig impl

* feat(utils): add POLA principle comment

* feat(contract): add EIP712AdjudicatorBase

* feat(contract): integrate EIP712AdjudicatorBase to supported adjs

* fix(contract): tests with updated adjs

* test(contract): EIP712AdjudicatorBase

* test(contract): SimpleConsensus EIP191, EIP712 sigs

* test(contract): Utils signatures

* test(contract): Custody, SimpleConsensus integration tests for sigs

refactor(contract): migrate sig to bytes (#279)

* refactor(Types): replace Signature{v,r,s} with bytes

* style(contract): add empty lines at the end

refactor(clearnode): replace Signature{r,s,v} with []byte (#283)

refactor(sdk): migrate `Signature{r,s,v}` to `Hex` (#284)

* refactor(sdk): replace Signature{r,s,v} with Hex

* fix(NitroliteService): perform convertStateFromContract correctly

* fix(rpc): expect updated signature type from rpc

* style(sdk/rpc): remove ServerSignatureSchema var

* feat(sdk/rpc): add empty signatures array by default

* feat(sdk): add build:force command

* feat(sdk): remove npm build:force

refactor(clearnode): define `Signature []byte` type (#287)

* refactor(clearnode): define `Signature []byte` type

* refactor(clearnode::RPCEntry): replace sig `[]string` with `[]Signature`

* feat(clearnode/nitrolite): add Sigs2Strings, Strings2Sigs helpers

fix(integration): tests sig migration (#289)

* feat(docker-compose): add ability to pass logger visibility to clearnode

* fix(clearnode): raw ECDSA sign and verify

* fix(clearnode): try to extract req id on ummarshal error

* fix(integration): update sig to new type

* feat(sdk): change type of sig array to contain only Hex

* refactor(clearnode): remove check on nil Req, zero-init instead

* fix(clearnode:nitrolite): remove unintended side-effect of sig param modif

feat(custody): add note about ephemeral final state

style(contract): run forge fmt

fix(clearnode/docs): remove legacy signature format

feat(custody): eip-1271, eip-6492 sigs support (#293)

* feat(contract): add ERC-1271,6492 support

* test(contract/Utils.sol): add ERC-1271, 6492 tests

* refactor(contract:Utils.t.sol): separate tests into contracts

* refactor(UtilsHarness): do NOT expose constants

* fix(contracts/adjudicators): use verifyStateSignature instead of just EOA sig

* test(contract/Custody): add ERC-1271, 6492 sig to integration test

* test(contract/Custody): add challenge with EIP-712, EIP-1271 tests

* refactor(contract/Utils): reorder recoverStateEIP712Signer params for consistency

* test(contract): remove console.logs

* feat(contract): clarify Utils comments

* refactor(contract): optimize Custody and Utils sig verification functions

* style(contract): run forge fmt

feat(custody): add ability to create channel w/ server sig

feat(contract/Custody): add ability to broker deposit in create

* feat: clearnode updates

feat: improve and simplify channel joining by broker

drop join by broker

feat: add create channel endpoint draft

feat: use proper state format

feat: code improvements and fix tests

add doc

feat: use state as encode state arg

address comments

feat: add tests for request create method

update docs

feat: refactor channel service tests

rename encode state into encode state data

feat: update response

feat: unify channel operation responses

feat: alling app session service structure to channel service

update docs

improve errors consistency

* feat(rpc): add create_channel method and unify channel response types (#296)

* feat: remove state hash from channel operation response

* update erc-7824 docs

* feat: include channel in channel operation response

* fix: use chain id as key in network config

* fix(Custody::join): allow 2 signatures

* feat: add an optional session key for create_channel request

* return state data as an encoded string

* fix(Custody::join): add Server wallet

* test(custody::join): broker auto-join tests (#303)

* test(Custody::join): broker auto-join

* refactor(contract/test): signState usage

* refactor(Custody.t.sol): enhance broker auto join test name readability

* feat: add sdk and integration support for simplified join (#304)

---------

Co-authored-by: Sazonov Nikita <35502225+nksazonov@users.noreply.github.com>
Co-authored-by: Max Pushkarov <mpushkarov@yellow.org>
Co-authored-by: nksazonov <nsazonov@openware.com>
Co-authored-by: MaxMoskalenko <mx.msklnk@gmail.com>
dimast-x pushed a commit that referenced this pull request Aug 13, 2025
…1271,6492) (#294)

* feat: move erc7824 documentation to nitrolite (#272)

* feat: move erc7824 documentation to nitrolite

* feat: move GH actions to common scope

* fix: comment GITHUB_TOKEN

* feat(custody): add EIP-191, EIP-712 signature support (#257)

* feat(custody): add EIP-191, EIP-712 support

* feat(custody): correct EIP-712 sig impl

* feat(utils): add POLA principle comment

* feat(contract): add EIP712AdjudicatorBase

* feat(contract): integrate EIP712AdjudicatorBase to supported adjs

* fix(contract): tests with updated adjs

* test(contract): EIP712AdjudicatorBase

* test(contract): SimpleConsensus EIP191, EIP712 sigs

* test(contract): Utils signatures

* test(contract): Custody, SimpleConsensus integration tests for sigs

* refactor(contract): migrate sig to bytes (#279)

* refactor(Types): replace Signature{v,r,s} with bytes

* style(contract): add empty lines at the end

* refactor(clearnode): replace Signature{r,s,v} with []byte (#283)

* refactor(sdk): migrate `Signature{r,s,v}` to `Hex` (#284)

* refactor(sdk): replace Signature{r,s,v} with Hex

* fix(NitroliteService): perform convertStateFromContract correctly

* fix(rpc): expect updated signature type from rpc

* style(sdk/rpc): remove ServerSignatureSchema var

* feat(sdk/rpc): add empty signatures array by default

* feat(sdk): add build:force command

* feat(sdk): remove npm build:force

* refactor(clearnode): define `Signature []byte` type (#287)

* refactor(clearnode): define `Signature []byte` type

* refactor(clearnode::RPCEntry): replace sig `[]string` with `[]Signature`

* feat(clearnode/nitrolite): add Sigs2Strings, Strings2Sigs helpers

* fix(integration): tests sig migration (#289)

* feat(docker-compose): add ability to pass logger visibility to clearnode

* fix(clearnode): raw ECDSA sign and verify

* fix(clearnode): try to extract req id on ummarshal error

* fix(integration): update sig to new type

* feat(sdk): change type of sig array to contain only Hex

* refactor(clearnode): remove check on nil Req, zero-init instead

* fix(clearnode:nitrolite): remove unintended side-effect of sig param modif

* feat(custody): add note about ephemeral final state

* style(contract): run forge fmt

* fix(clearnode/docs): remove legacy signature format

* feat(custody): eip-1271, eip-6492 sigs support (#293)

* feat(contract): add ERC-1271,6492 support

* test(contract/Utils.sol): add ERC-1271, 6492 tests

* refactor(contract:Utils.t.sol): separate tests into contracts

* refactor(UtilsHarness): do NOT expose constants

* fix(contracts/adjudicators): use verifyStateSignature instead of just EOA sig

* test(contract/Custody): add ERC-1271, 6492 sig to integration test

* test(contract/Custody): add challenge with EIP-712, EIP-1271 tests

* refactor(contract/Utils): reorder recoverStateEIP712Signer params for consistency

* test(contract): remove console.logs

* feat(contract): clarify Utils comments

* refactor(contract): optimize Custody and Utils sig verification functions

* style(contract): run forge fmt

* feat: replace `stateHash` with `packedState` in message signing (#295)

* feat(contract): replace stateHash with packedState in signing

* test(contract): migrate to getPackedState

* feat(contract): remove getStateHash

* feat(clearnode): remove state_hash, rename EncodeState to Pack

* feat(sdk): remove state_hash, add getPackedState

* refactor(sdk): supply channelId and state to signState

* docs(website): migrate Sig to Hex, add supported signature formats

---------

Co-authored-by: MaxMoskalenko <mx.msklnk@gmail.com>
dimast-x added a commit that referenced this pull request Aug 13, 2025
…ints (#290)

* feat: custody updates

feat(custody): add EIP-191, EIP-712 signature support (#257)

* feat(custody): add EIP-191, EIP-712 support

* feat(custody): correct EIP-712 sig impl

* feat(utils): add POLA principle comment

* feat(contract): add EIP712AdjudicatorBase

* feat(contract): integrate EIP712AdjudicatorBase to supported adjs

* fix(contract): tests with updated adjs

* test(contract): EIP712AdjudicatorBase

* test(contract): SimpleConsensus EIP191, EIP712 sigs

* test(contract): Utils signatures

* test(contract): Custody, SimpleConsensus integration tests for sigs

refactor(contract): migrate sig to bytes (#279)

* refactor(Types): replace Signature{v,r,s} with bytes

* style(contract): add empty lines at the end

refactor(clearnode): replace Signature{r,s,v} with []byte (#283)

refactor(sdk): migrate `Signature{r,s,v}` to `Hex` (#284)

* refactor(sdk): replace Signature{r,s,v} with Hex

* fix(NitroliteService): perform convertStateFromContract correctly

* fix(rpc): expect updated signature type from rpc

* style(sdk/rpc): remove ServerSignatureSchema var

* feat(sdk/rpc): add empty signatures array by default

* feat(sdk): add build:force command

* feat(sdk): remove npm build:force

refactor(clearnode): define `Signature []byte` type (#287)

* refactor(clearnode): define `Signature []byte` type

* refactor(clearnode::RPCEntry): replace sig `[]string` with `[]Signature`

* feat(clearnode/nitrolite): add Sigs2Strings, Strings2Sigs helpers

fix(integration): tests sig migration (#289)

* feat(docker-compose): add ability to pass logger visibility to clearnode

* fix(clearnode): raw ECDSA sign and verify

* fix(clearnode): try to extract req id on ummarshal error

* fix(integration): update sig to new type

* feat(sdk): change type of sig array to contain only Hex

* refactor(clearnode): remove check on nil Req, zero-init instead

* fix(clearnode:nitrolite): remove unintended side-effect of sig param modif

feat(custody): add note about ephemeral final state

style(contract): run forge fmt

fix(clearnode/docs): remove legacy signature format

feat(custody): eip-1271, eip-6492 sigs support (#293)

* feat(contract): add ERC-1271,6492 support

* test(contract/Utils.sol): add ERC-1271, 6492 tests

* refactor(contract:Utils.t.sol): separate tests into contracts

* refactor(UtilsHarness): do NOT expose constants

* fix(contracts/adjudicators): use verifyStateSignature instead of just EOA sig

* test(contract/Custody): add ERC-1271, 6492 sig to integration test

* test(contract/Custody): add challenge with EIP-712, EIP-1271 tests

* refactor(contract/Utils): reorder recoverStateEIP712Signer params for consistency

* test(contract): remove console.logs

* feat(contract): clarify Utils comments

* refactor(contract): optimize Custody and Utils sig verification functions

* style(contract): run forge fmt

feat(custody): add ability to create channel w/ server sig

feat(contract/Custody): add ability to broker deposit in create

* feat: clearnode updates

feat: improve and simplify channel joining by broker

drop join by broker

feat: add create channel endpoint draft

feat: use proper state format

feat: code improvements and fix tests

add doc

feat: use state as encode state arg

address comments

feat: add tests for request create method

update docs

feat: refactor channel service tests

rename encode state into encode state data

feat: update response

feat: unify channel operation responses

feat: alling app session service structure to channel service

update docs

improve errors consistency

* feat(rpc): add create_channel method and unify channel response types (#296)

* feat: remove state hash from channel operation response

* update erc-7824 docs

* feat: include channel in channel operation response

* fix: use chain id as key in network config

* fix(Custody::join): allow 2 signatures

* feat: add an optional session key for create_channel request

* return state data as an encoded string

* fix(Custody::join): add Server wallet

* test(custody::join): broker auto-join tests (#303)

* test(Custody::join): broker auto-join

* refactor(contract/test): signState usage

* refactor(Custody.t.sol): enhance broker auto join test name readability

* feat: add sdk and integration support for simplified join (#304)

---------

Co-authored-by: Sazonov Nikita <35502225+nksazonov@users.noreply.github.com>
Co-authored-by: Max Pushkarov <mpushkarov@yellow.org>
Co-authored-by: nksazonov <nsazonov@openware.com>
Co-authored-by: MaxMoskalenko <mx.msklnk@gmail.com>
nksazonov added a commit that referenced this pull request Aug 21, 2025
* feat: add system support for EIP-191, contracts support for EIP-(712,1271,6492) (#294)

* feat: move erc7824 documentation to nitrolite (#272)

* feat: move erc7824 documentation to nitrolite

* feat: move GH actions to common scope

* fix: comment GITHUB_TOKEN

* feat(custody): add EIP-191, EIP-712 signature support (#257)

* feat(custody): add EIP-191, EIP-712 support

* feat(custody): correct EIP-712 sig impl

* feat(utils): add POLA principle comment

* feat(contract): add EIP712AdjudicatorBase

* feat(contract): integrate EIP712AdjudicatorBase to supported adjs

* fix(contract): tests with updated adjs

* test(contract): EIP712AdjudicatorBase

* test(contract): SimpleConsensus EIP191, EIP712 sigs

* test(contract): Utils signatures

* test(contract): Custody, SimpleConsensus integration tests for sigs

* refactor(contract): migrate sig to bytes (#279)

* refactor(Types): replace Signature{v,r,s} with bytes

* style(contract): add empty lines at the end

* refactor(clearnode): replace Signature{r,s,v} with []byte (#283)

* refactor(sdk): migrate `Signature{r,s,v}` to `Hex` (#284)

* refactor(sdk): replace Signature{r,s,v} with Hex

* fix(NitroliteService): perform convertStateFromContract correctly

* fix(rpc): expect updated signature type from rpc

* style(sdk/rpc): remove ServerSignatureSchema var

* feat(sdk/rpc): add empty signatures array by default

* feat(sdk): add build:force command

* feat(sdk): remove npm build:force

* refactor(clearnode): define `Signature []byte` type (#287)

* refactor(clearnode): define `Signature []byte` type

* refactor(clearnode::RPCEntry): replace sig `[]string` with `[]Signature`

* feat(clearnode/nitrolite): add Sigs2Strings, Strings2Sigs helpers

* fix(integration): tests sig migration (#289)

* feat(docker-compose): add ability to pass logger visibility to clearnode

* fix(clearnode): raw ECDSA sign and verify

* fix(clearnode): try to extract req id on ummarshal error

* fix(integration): update sig to new type

* feat(sdk): change type of sig array to contain only Hex

* refactor(clearnode): remove check on nil Req, zero-init instead

* fix(clearnode:nitrolite): remove unintended side-effect of sig param modif

* feat(custody): add note about ephemeral final state

* style(contract): run forge fmt

* fix(clearnode/docs): remove legacy signature format

* feat(custody): eip-1271, eip-6492 sigs support (#293)

* feat(contract): add ERC-1271,6492 support

* test(contract/Utils.sol): add ERC-1271, 6492 tests

* refactor(contract:Utils.t.sol): separate tests into contracts

* refactor(UtilsHarness): do NOT expose constants

* fix(contracts/adjudicators): use verifyStateSignature instead of just EOA sig

* test(contract/Custody): add ERC-1271, 6492 sig to integration test

* test(contract/Custody): add challenge with EIP-712, EIP-1271 tests

* refactor(contract/Utils): reorder recoverStateEIP712Signer params for consistency

* test(contract): remove console.logs

* feat(contract): clarify Utils comments

* refactor(contract): optimize Custody and Utils sig verification functions

* style(contract): run forge fmt

* feat: replace `stateHash` with `packedState` in message signing (#295)

* feat(contract): replace stateHash with packedState in signing

* test(contract): migrate to getPackedState

* feat(contract): remove getStateHash

* feat(clearnode): remove state_hash, rename EncodeState to Pack

* feat(sdk): remove state_hash, add getPackedState

* refactor(sdk): supply channelId and state to signState

* docs(website): migrate Sig to Hex, add supported signature formats

---------

Co-authored-by: MaxMoskalenko <mx.msklnk@gmail.com>

* feat: replace stateWalletClient with StateSigner (#297)

* feat: redesign and improve joining channels by broker, refactor endpoints (#290)

* feat: custody updates

feat(custody): add EIP-191, EIP-712 signature support (#257)

* feat(custody): add EIP-191, EIP-712 support

* feat(custody): correct EIP-712 sig impl

* feat(utils): add POLA principle comment

* feat(contract): add EIP712AdjudicatorBase

* feat(contract): integrate EIP712AdjudicatorBase to supported adjs

* fix(contract): tests with updated adjs

* test(contract): EIP712AdjudicatorBase

* test(contract): SimpleConsensus EIP191, EIP712 sigs

* test(contract): Utils signatures

* test(contract): Custody, SimpleConsensus integration tests for sigs

refactor(contract): migrate sig to bytes (#279)

* refactor(Types): replace Signature{v,r,s} with bytes

* style(contract): add empty lines at the end

refactor(clearnode): replace Signature{r,s,v} with []byte (#283)

refactor(sdk): migrate `Signature{r,s,v}` to `Hex` (#284)

* refactor(sdk): replace Signature{r,s,v} with Hex

* fix(NitroliteService): perform convertStateFromContract correctly

* fix(rpc): expect updated signature type from rpc

* style(sdk/rpc): remove ServerSignatureSchema var

* feat(sdk/rpc): add empty signatures array by default

* feat(sdk): add build:force command

* feat(sdk): remove npm build:force

refactor(clearnode): define `Signature []byte` type (#287)

* refactor(clearnode): define `Signature []byte` type

* refactor(clearnode::RPCEntry): replace sig `[]string` with `[]Signature`

* feat(clearnode/nitrolite): add Sigs2Strings, Strings2Sigs helpers

fix(integration): tests sig migration (#289)

* feat(docker-compose): add ability to pass logger visibility to clearnode

* fix(clearnode): raw ECDSA sign and verify

* fix(clearnode): try to extract req id on ummarshal error

* fix(integration): update sig to new type

* feat(sdk): change type of sig array to contain only Hex

* refactor(clearnode): remove check on nil Req, zero-init instead

* fix(clearnode:nitrolite): remove unintended side-effect of sig param modif

feat(custody): add note about ephemeral final state

style(contract): run forge fmt

fix(clearnode/docs): remove legacy signature format

feat(custody): eip-1271, eip-6492 sigs support (#293)

* feat(contract): add ERC-1271,6492 support

* test(contract/Utils.sol): add ERC-1271, 6492 tests

* refactor(contract:Utils.t.sol): separate tests into contracts

* refactor(UtilsHarness): do NOT expose constants

* fix(contracts/adjudicators): use verifyStateSignature instead of just EOA sig

* test(contract/Custody): add ERC-1271, 6492 sig to integration test

* test(contract/Custody): add challenge with EIP-712, EIP-1271 tests

* refactor(contract/Utils): reorder recoverStateEIP712Signer params for consistency

* test(contract): remove console.logs

* feat(contract): clarify Utils comments

* refactor(contract): optimize Custody and Utils sig verification functions

* style(contract): run forge fmt

feat(custody): add ability to create channel w/ server sig

feat(contract/Custody): add ability to broker deposit in create

* feat: clearnode updates

feat: improve and simplify channel joining by broker

drop join by broker

feat: add create channel endpoint draft

feat: use proper state format

feat: code improvements and fix tests

add doc

feat: use state as encode state arg

address comments

feat: add tests for request create method

update docs

feat: refactor channel service tests

rename encode state into encode state data

feat: update response

feat: unify channel operation responses

feat: alling app session service structure to channel service

update docs

improve errors consistency

* feat(rpc): add create_channel method and unify channel response types (#296)

* feat: remove state hash from channel operation response

* update erc-7824 docs

* feat: include channel in channel operation response

* fix: use chain id as key in network config

* fix(Custody::join): allow 2 signatures

* feat: add an optional session key for create_channel request

* return state data as an encoded string

* fix(Custody::join): add Server wallet

* test(custody::join): broker auto-join tests (#303)

* test(Custody::join): broker auto-join

* refactor(contract/test): signState usage

* refactor(Custody.t.sol): enhance broker auto join test name readability

* feat: add sdk and integration support for simplified join (#304)

---------

Co-authored-by: Sazonov Nikita <35502225+nksazonov@users.noreply.github.com>
Co-authored-by: Max Pushkarov <mpushkarov@yellow.org>
Co-authored-by: nksazonov <nsazonov@openware.com>
Co-authored-by: MaxMoskalenko <mx.msklnk@gmail.com>

* refactor: API protocol (#285)

* refactor: API protocol

* fix: resolve issues after rebase

* feat(Custody): update domain version to 0.3.0

* config(contract): set optimizer runs to 45 000

* docs(contract/deployments): add UAT 137, 11155111, PROD 137

* fix: add missing exports

* bump sdk version

* fix(sdk::RPCNetworkInfo): remove chain name

* update uat release values

* feat: migrate cerebro to v0.3.0 (#306)

* fix: channel amount

* feat(examples): remove snake, tictactoe, aura

* fix(main-pr): remove test-examples action

* build(contract): add separate config for linea

* docs(contract): add v0.3.0 deployments for mainnet

* add linea support & update prod config

---------

Co-authored-by: MaxMoskalenko <mx.msklnk@gmail.com>
Co-authored-by: Dmytro Steblyna <80773046+dimast-x@users.noreply.github.com>
Co-authored-by: Max Pushkarov <mpushkarov@yellow.org>
Co-authored-by: Anton Filonenko <phil@yellow.org>
gabrielantonyxaviour pushed a commit to gabrielantonyxaviour/nitrolite that referenced this pull request Sep 27, 2025
* feat: add system support for EIP-191, contracts support for EIP-(712,1271,6492) (layer-3#294)

* feat: move erc7824 documentation to nitrolite (layer-3#272)

* feat: move erc7824 documentation to nitrolite

* feat: move GH actions to common scope

* fix: comment GITHUB_TOKEN

* feat(custody): add EIP-191, EIP-712 signature support (layer-3#257)

* feat(custody): add EIP-191, EIP-712 support

* feat(custody): correct EIP-712 sig impl

* feat(utils): add POLA principle comment

* feat(contract): add EIP712AdjudicatorBase

* feat(contract): integrate EIP712AdjudicatorBase to supported adjs

* fix(contract): tests with updated adjs

* test(contract): EIP712AdjudicatorBase

* test(contract): SimpleConsensus EIP191, EIP712 sigs

* test(contract): Utils signatures

* test(contract): Custody, SimpleConsensus integration tests for sigs

* refactor(contract): migrate sig to bytes (layer-3#279)

* refactor(Types): replace Signature{v,r,s} with bytes

* style(contract): add empty lines at the end

* refactor(clearnode): replace Signature{r,s,v} with []byte (layer-3#283)

* refactor(sdk): migrate `Signature{r,s,v}` to `Hex` (layer-3#284)

* refactor(sdk): replace Signature{r,s,v} with Hex

* fix(NitroliteService): perform convertStateFromContract correctly

* fix(rpc): expect updated signature type from rpc

* style(sdk/rpc): remove ServerSignatureSchema var

* feat(sdk/rpc): add empty signatures array by default

* feat(sdk): add build:force command

* feat(sdk): remove npm build:force

* refactor(clearnode): define `Signature []byte` type (layer-3#287)

* refactor(clearnode): define `Signature []byte` type

* refactor(clearnode::RPCEntry): replace sig `[]string` with `[]Signature`

* feat(clearnode/nitrolite): add Sigs2Strings, Strings2Sigs helpers

* fix(integration): tests sig migration (layer-3#289)

* feat(docker-compose): add ability to pass logger visibility to clearnode

* fix(clearnode): raw ECDSA sign and verify

* fix(clearnode): try to extract req id on ummarshal error

* fix(integration): update sig to new type

* feat(sdk): change type of sig array to contain only Hex

* refactor(clearnode): remove check on nil Req, zero-init instead

* fix(clearnode:nitrolite): remove unintended side-effect of sig param modif

* feat(custody): add note about ephemeral final state

* style(contract): run forge fmt

* fix(clearnode/docs): remove legacy signature format

* feat(custody): eip-1271, eip-6492 sigs support (layer-3#293)

* feat(contract): add ERC-1271,6492 support

* test(contract/Utils.sol): add ERC-1271, 6492 tests

* refactor(contract:Utils.t.sol): separate tests into contracts

* refactor(UtilsHarness): do NOT expose constants

* fix(contracts/adjudicators): use verifyStateSignature instead of just EOA sig

* test(contract/Custody): add ERC-1271, 6492 sig to integration test

* test(contract/Custody): add challenge with EIP-712, EIP-1271 tests

* refactor(contract/Utils): reorder recoverStateEIP712Signer params for consistency

* test(contract): remove console.logs

* feat(contract): clarify Utils comments

* refactor(contract): optimize Custody and Utils sig verification functions

* style(contract): run forge fmt

* feat: replace `stateHash` with `packedState` in message signing (layer-3#295)

* feat(contract): replace stateHash with packedState in signing

* test(contract): migrate to getPackedState

* feat(contract): remove getStateHash

* feat(clearnode): remove state_hash, rename EncodeState to Pack

* feat(sdk): remove state_hash, add getPackedState

* refactor(sdk): supply channelId and state to signState

* docs(website): migrate Sig to Hex, add supported signature formats

---------

Co-authored-by: MaxMoskalenko <mx.msklnk@gmail.com>

* feat: replace stateWalletClient with StateSigner (layer-3#297)

* feat: redesign and improve joining channels by broker, refactor endpoints (layer-3#290)

* feat: custody updates

feat(custody): add EIP-191, EIP-712 signature support (layer-3#257)

* feat(custody): add EIP-191, EIP-712 support

* feat(custody): correct EIP-712 sig impl

* feat(utils): add POLA principle comment

* feat(contract): add EIP712AdjudicatorBase

* feat(contract): integrate EIP712AdjudicatorBase to supported adjs

* fix(contract): tests with updated adjs

* test(contract): EIP712AdjudicatorBase

* test(contract): SimpleConsensus EIP191, EIP712 sigs

* test(contract): Utils signatures

* test(contract): Custody, SimpleConsensus integration tests for sigs

refactor(contract): migrate sig to bytes (layer-3#279)

* refactor(Types): replace Signature{v,r,s} with bytes

* style(contract): add empty lines at the end

refactor(clearnode): replace Signature{r,s,v} with []byte (layer-3#283)

refactor(sdk): migrate `Signature{r,s,v}` to `Hex` (layer-3#284)

* refactor(sdk): replace Signature{r,s,v} with Hex

* fix(NitroliteService): perform convertStateFromContract correctly

* fix(rpc): expect updated signature type from rpc

* style(sdk/rpc): remove ServerSignatureSchema var

* feat(sdk/rpc): add empty signatures array by default

* feat(sdk): add build:force command

* feat(sdk): remove npm build:force

refactor(clearnode): define `Signature []byte` type (layer-3#287)

* refactor(clearnode): define `Signature []byte` type

* refactor(clearnode::RPCEntry): replace sig `[]string` with `[]Signature`

* feat(clearnode/nitrolite): add Sigs2Strings, Strings2Sigs helpers

fix(integration): tests sig migration (layer-3#289)

* feat(docker-compose): add ability to pass logger visibility to clearnode

* fix(clearnode): raw ECDSA sign and verify

* fix(clearnode): try to extract req id on ummarshal error

* fix(integration): update sig to new type

* feat(sdk): change type of sig array to contain only Hex

* refactor(clearnode): remove check on nil Req, zero-init instead

* fix(clearnode:nitrolite): remove unintended side-effect of sig param modif

feat(custody): add note about ephemeral final state

style(contract): run forge fmt

fix(clearnode/docs): remove legacy signature format

feat(custody): eip-1271, eip-6492 sigs support (layer-3#293)

* feat(contract): add ERC-1271,6492 support

* test(contract/Utils.sol): add ERC-1271, 6492 tests

* refactor(contract:Utils.t.sol): separate tests into contracts

* refactor(UtilsHarness): do NOT expose constants

* fix(contracts/adjudicators): use verifyStateSignature instead of just EOA sig

* test(contract/Custody): add ERC-1271, 6492 sig to integration test

* test(contract/Custody): add challenge with EIP-712, EIP-1271 tests

* refactor(contract/Utils): reorder recoverStateEIP712Signer params for consistency

* test(contract): remove console.logs

* feat(contract): clarify Utils comments

* refactor(contract): optimize Custody and Utils sig verification functions

* style(contract): run forge fmt

feat(custody): add ability to create channel w/ server sig

feat(contract/Custody): add ability to broker deposit in create

* feat: clearnode updates

feat: improve and simplify channel joining by broker

drop join by broker

feat: add create channel endpoint draft

feat: use proper state format

feat: code improvements and fix tests

add doc

feat: use state as encode state arg

address comments

feat: add tests for request create method

update docs

feat: refactor channel service tests

rename encode state into encode state data

feat: update response

feat: unify channel operation responses

feat: alling app session service structure to channel service

update docs

improve errors consistency

* feat(rpc): add create_channel method and unify channel response types (layer-3#296)

* feat: remove state hash from channel operation response

* update erc-7824 docs

* feat: include channel in channel operation response

* fix: use chain id as key in network config

* fix(Custody::join): allow 2 signatures

* feat: add an optional session key for create_channel request

* return state data as an encoded string

* fix(Custody::join): add Server wallet

* test(custody::join): broker auto-join tests (layer-3#303)

* test(Custody::join): broker auto-join

* refactor(contract/test): signState usage

* refactor(Custody.t.sol): enhance broker auto join test name readability

* feat: add sdk and integration support for simplified join (layer-3#304)

---------

Co-authored-by: Sazonov Nikita <35502225+nksazonov@users.noreply.github.com>
Co-authored-by: Max Pushkarov <mpushkarov@yellow.org>
Co-authored-by: nksazonov <nsazonov@openware.com>
Co-authored-by: MaxMoskalenko <mx.msklnk@gmail.com>

* refactor: API protocol (layer-3#285)

* refactor: API protocol

* fix: resolve issues after rebase

* feat(Custody): update domain version to 0.3.0

* config(contract): set optimizer runs to 45 000

* docs(contract/deployments): add UAT 137, 11155111, PROD 137

* fix: add missing exports

* bump sdk version

* fix(sdk::RPCNetworkInfo): remove chain name

* update uat release values

* feat: migrate cerebro to v0.3.0 (layer-3#306)

* fix: channel amount

* feat(examples): remove snake, tictactoe, aura

* fix(main-pr): remove test-examples action

* build(contract): add separate config for linea

* docs(contract): add v0.3.0 deployments for mainnet

* add linea support & update prod config

---------

Co-authored-by: MaxMoskalenko <mx.msklnk@gmail.com>
Co-authored-by: Dmytro Steblyna <80773046+dimast-x@users.noreply.github.com>
Co-authored-by: Max Pushkarov <mpushkarov@yellow.org>
Co-authored-by: Anton Filonenko <phil@yellow.org>
gabrielantonyxaviour pushed a commit to gabrielantonyxaviour/nitrolite that referenced this pull request Sep 27, 2025
* feat: add system support for EIP-191, contracts support for EIP-(712,1271,6492) (layer-3#294)

* feat: move erc7824 documentation to nitrolite (layer-3#272)

* feat: move erc7824 documentation to nitrolite

* feat: move GH actions to common scope

* fix: comment GITHUB_TOKEN

* feat(custody): add EIP-191, EIP-712 signature support (layer-3#257)

* feat(custody): add EIP-191, EIP-712 support

* feat(custody): correct EIP-712 sig impl

* feat(utils): add POLA principle comment

* feat(contract): add EIP712AdjudicatorBase

* feat(contract): integrate EIP712AdjudicatorBase to supported adjs

* fix(contract): tests with updated adjs

* test(contract): EIP712AdjudicatorBase

* test(contract): SimpleConsensus EIP191, EIP712 sigs

* test(contract): Utils signatures

* test(contract): Custody, SimpleConsensus integration tests for sigs

* refactor(contract): migrate sig to bytes (layer-3#279)

* refactor(Types): replace Signature{v,r,s} with bytes

* style(contract): add empty lines at the end

* refactor(clearnode): replace Signature{r,s,v} with []byte (layer-3#283)

* refactor(sdk): migrate `Signature{r,s,v}` to `Hex` (layer-3#284)

* refactor(sdk): replace Signature{r,s,v} with Hex

* fix(NitroliteService): perform convertStateFromContract correctly

* fix(rpc): expect updated signature type from rpc

* style(sdk/rpc): remove ServerSignatureSchema var

* feat(sdk/rpc): add empty signatures array by default

* feat(sdk): add build:force command

* feat(sdk): remove npm build:force

* refactor(clearnode): define `Signature []byte` type (layer-3#287)

* refactor(clearnode): define `Signature []byte` type

* refactor(clearnode::RPCEntry): replace sig `[]string` with `[]Signature`

* feat(clearnode/nitrolite): add Sigs2Strings, Strings2Sigs helpers

* fix(integration): tests sig migration (layer-3#289)

* feat(docker-compose): add ability to pass logger visibility to clearnode

* fix(clearnode): raw ECDSA sign and verify

* fix(clearnode): try to extract req id on ummarshal error

* fix(integration): update sig to new type

* feat(sdk): change type of sig array to contain only Hex

* refactor(clearnode): remove check on nil Req, zero-init instead

* fix(clearnode:nitrolite): remove unintended side-effect of sig param modif

* feat(custody): add note about ephemeral final state

* style(contract): run forge fmt

* fix(clearnode/docs): remove legacy signature format

* feat(custody): eip-1271, eip-6492 sigs support (layer-3#293)

* feat(contract): add ERC-1271,6492 support

* test(contract/Utils.sol): add ERC-1271, 6492 tests

* refactor(contract:Utils.t.sol): separate tests into contracts

* refactor(UtilsHarness): do NOT expose constants

* fix(contracts/adjudicators): use verifyStateSignature instead of just EOA sig

* test(contract/Custody): add ERC-1271, 6492 sig to integration test

* test(contract/Custody): add challenge with EIP-712, EIP-1271 tests

* refactor(contract/Utils): reorder recoverStateEIP712Signer params for consistency

* test(contract): remove console.logs

* feat(contract): clarify Utils comments

* refactor(contract): optimize Custody and Utils sig verification functions

* style(contract): run forge fmt

* feat: replace `stateHash` with `packedState` in message signing (layer-3#295)

* feat(contract): replace stateHash with packedState in signing

* test(contract): migrate to getPackedState

* feat(contract): remove getStateHash

* feat(clearnode): remove state_hash, rename EncodeState to Pack

* feat(sdk): remove state_hash, add getPackedState

* refactor(sdk): supply channelId and state to signState

* docs(website): migrate Sig to Hex, add supported signature formats

---------

Co-authored-by: MaxMoskalenko <mx.msklnk@gmail.com>

* feat: replace stateWalletClient with StateSigner (layer-3#297)

* feat: redesign and improve joining channels by broker, refactor endpoints (layer-3#290)

* feat: custody updates

feat(custody): add EIP-191, EIP-712 signature support (layer-3#257)

* feat(custody): add EIP-191, EIP-712 support

* feat(custody): correct EIP-712 sig impl

* feat(utils): add POLA principle comment

* feat(contract): add EIP712AdjudicatorBase

* feat(contract): integrate EIP712AdjudicatorBase to supported adjs

* fix(contract): tests with updated adjs

* test(contract): EIP712AdjudicatorBase

* test(contract): SimpleConsensus EIP191, EIP712 sigs

* test(contract): Utils signatures

* test(contract): Custody, SimpleConsensus integration tests for sigs

refactor(contract): migrate sig to bytes (layer-3#279)

* refactor(Types): replace Signature{v,r,s} with bytes

* style(contract): add empty lines at the end

refactor(clearnode): replace Signature{r,s,v} with []byte (layer-3#283)

refactor(sdk): migrate `Signature{r,s,v}` to `Hex` (layer-3#284)

* refactor(sdk): replace Signature{r,s,v} with Hex

* fix(NitroliteService): perform convertStateFromContract correctly

* fix(rpc): expect updated signature type from rpc

* style(sdk/rpc): remove ServerSignatureSchema var

* feat(sdk/rpc): add empty signatures array by default

* feat(sdk): add build:force command

* feat(sdk): remove npm build:force

refactor(clearnode): define `Signature []byte` type (layer-3#287)

* refactor(clearnode): define `Signature []byte` type

* refactor(clearnode::RPCEntry): replace sig `[]string` with `[]Signature`

* feat(clearnode/nitrolite): add Sigs2Strings, Strings2Sigs helpers

fix(integration): tests sig migration (layer-3#289)

* feat(docker-compose): add ability to pass logger visibility to clearnode

* fix(clearnode): raw ECDSA sign and verify

* fix(clearnode): try to extract req id on ummarshal error

* fix(integration): update sig to new type

* feat(sdk): change type of sig array to contain only Hex

* refactor(clearnode): remove check on nil Req, zero-init instead

* fix(clearnode:nitrolite): remove unintended side-effect of sig param modif

feat(custody): add note about ephemeral final state

style(contract): run forge fmt

fix(clearnode/docs): remove legacy signature format

feat(custody): eip-1271, eip-6492 sigs support (layer-3#293)

* feat(contract): add ERC-1271,6492 support

* test(contract/Utils.sol): add ERC-1271, 6492 tests

* refactor(contract:Utils.t.sol): separate tests into contracts

* refactor(UtilsHarness): do NOT expose constants

* fix(contracts/adjudicators): use verifyStateSignature instead of just EOA sig

* test(contract/Custody): add ERC-1271, 6492 sig to integration test

* test(contract/Custody): add challenge with EIP-712, EIP-1271 tests

* refactor(contract/Utils): reorder recoverStateEIP712Signer params for consistency

* test(contract): remove console.logs

* feat(contract): clarify Utils comments

* refactor(contract): optimize Custody and Utils sig verification functions

* style(contract): run forge fmt

feat(custody): add ability to create channel w/ server sig

feat(contract/Custody): add ability to broker deposit in create

* feat: clearnode updates

feat: improve and simplify channel joining by broker

drop join by broker

feat: add create channel endpoint draft

feat: use proper state format

feat: code improvements and fix tests

add doc

feat: use state as encode state arg

address comments

feat: add tests for request create method

update docs

feat: refactor channel service tests

rename encode state into encode state data

feat: update response

feat: unify channel operation responses

feat: alling app session service structure to channel service

update docs

improve errors consistency

* feat(rpc): add create_channel method and unify channel response types (layer-3#296)

* feat: remove state hash from channel operation response

* update erc-7824 docs

* feat: include channel in channel operation response

* fix: use chain id as key in network config

* fix(Custody::join): allow 2 signatures

* feat: add an optional session key for create_channel request

* return state data as an encoded string

* fix(Custody::join): add Server wallet

* test(custody::join): broker auto-join tests (layer-3#303)

* test(Custody::join): broker auto-join

* refactor(contract/test): signState usage

* refactor(Custody.t.sol): enhance broker auto join test name readability

* feat: add sdk and integration support for simplified join (layer-3#304)

---------

Co-authored-by: Sazonov Nikita <35502225+nksazonov@users.noreply.github.com>
Co-authored-by: Max Pushkarov <mpushkarov@yellow.org>
Co-authored-by: nksazonov <nsazonov@openware.com>
Co-authored-by: MaxMoskalenko <mx.msklnk@gmail.com>

* refactor: API protocol (layer-3#285)

* refactor: API protocol

* fix: resolve issues after rebase

* feat(Custody): update domain version to 0.3.0

* config(contract): set optimizer runs to 45 000

* docs(contract/deployments): add UAT 137, 11155111, PROD 137

* fix: add missing exports

* bump sdk version

* fix(sdk::RPCNetworkInfo): remove chain name

* update uat release values

* feat: migrate cerebro to v0.3.0 (layer-3#306)

* fix: channel amount

* feat(examples): remove snake, tictactoe, aura

* fix(main-pr): remove test-examples action

* build(contract): add separate config for linea

* docs(contract): add v0.3.0 deployments for mainnet

* add linea support & update prod config

---------

Co-authored-by: MaxMoskalenko <mx.msklnk@gmail.com>
Co-authored-by: Dmytro Steblyna <80773046+dimast-x@users.noreply.github.com>
Co-authored-by: Max Pushkarov <mpushkarov@yellow.org>
Co-authored-by: Anton Filonenko <phil@yellow.org>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants