Skip to content

feat: add ExecutePayer field in chain metadata for setting solana execute accounts [CLD-3046] - #814

Merged
ecPablo merged 24 commits into
mainfrom
ecpablo/add-execute-payers-solana
Jul 14, 2026
Merged

feat: add ExecutePayer field in chain metadata for setting solana execute accounts [CLD-3046]#814
ecPablo merged 24 commits into
mainfrom
ecpablo/add-execute-payers-solana

Conversation

@ecPablo

@ecPablo ecPablo commented Jul 10, 2026

Copy link
Copy Markdown
Collaborator

Adds support for a new ExecutePayer field to AdditionalFieldsMetadata in solana SDK so that bypass proposals that have instructions that list the deployer key on the accounts metadata can be correctly update to the isSigner flag to true.

AI Summary

This pull request introduces support for an optional executePayer field in Solana Timelock chain metadata, addressing a critical edge case for bypass proposals. The main motivation is to ensure that when the Solana fee payer (who pays for and signs the transaction) is also present as a writable remaining account in a bypass operation, the Merkle leaf hash computed off-chain matches the on-chain verification, preventing proof failures. The changes include SDK enhancements, documentation updates, and a comprehensive end-to-end test to both demonstrate and guard against the signer-bit mismatch bug.

Solana Timelock Bypass Execute Payer Support

SDK and Core Logic:

  • Added an optional ExecutePayer field to AdditionalFieldsMetadata in sdk/solana/chain_metadata.go, with helper methods WithExecutePayer and HasExecutePayer. The bypass operation logic now applies a signer override to the fee payer if present in metadata, ensuring Merkle hashes align with on-chain expectations. [1] [2] [3]

Testing:

  • Added an end-to-end test (e2e/tests/solana/timelock_bypass_payer_collision.go) that demonstrates both the failure mode (proof cannot be verified) and the successful bypass when executePayer is set.
  • Expanded unit tests for AdditionalFieldsMetadata to cover JSON serialization/deserialization and the new helper methods. [1] [2]

Documentation:

  • Updated the documentation to describe the new executePayer field, its necessity for Solana bypass proposals, usage guidance, and a reference to the new test scenario. [1] [2] [3]
  • Added a changelog entry outlining the new feature.

…as signers in proposal transformation

Signed-off-by: Pablo <pablo.estrada@smartcontract.com>
@ecPablo ecPablo changed the title feat: add WithExecutePayers ctx function for setting solana accounts feat: add WithExecutePayers ctx function for setting solana accounts [CLD-3046] Jul 10, 2026
Signed-off-by: Pablo <pablo.estrada@smartcontract.com>
@ecPablo
ecPablo marked this pull request as ready for review July 10, 2026 19:59
@ecPablo
ecPablo requested a review from a team as a code owner July 10, 2026 19:59
Copilot AI review requested due to automatic review settings July 10, 2026 19:59
@ecPablo
ecPablo marked this pull request as draft July 10, 2026 19:59

This comment was marked as outdated.

ecPablo added 2 commits July 10, 2026 14:07
Signed-off-by: Pablo <pablo.estrada@smartcontract.com>
Signed-off-by: Pablo <pablo.estrada@smartcontract.com>

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Pull request overview

Copilot reviewed 4 out of 4 changed files in this pull request and generated 1 comment.

Comment thread e2e/tests/solana/timelock_bypass_payer_collision.go
ecPablo and others added 2 commits July 10, 2026 15:07
Signed-off-by: Pablo <pablo.estrada@smartcontract.com>
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Pull request overview

Copilot reviewed 4 out of 4 changed files in this pull request and generated 1 comment.

Comment thread e2e/tests/solana/timelock_bypass_payer_collision.go
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Pull request overview

Copilot reviewed 4 out of 4 changed files in this pull request and generated no new comments.

Signed-off-by: Pablo <pablo.estrada@smartcontract.com>
@ecPablo
ecPablo marked this pull request as ready for review July 10, 2026 22:24
Copilot AI review requested due to automatic review settings July 10, 2026 22:24

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Pull request overview

Copilot reviewed 4 out of 4 changed files in this pull request and generated no new comments.

@ecPablo
ecPablo marked this pull request as draft July 11, 2026 01:12

This comment was marked as resolved.

Signed-off-by: Pablo <pablo.estrada@smartcontract.com>
Copilot AI review requested due to automatic review settings July 14, 2026 19:37

This comment was marked as resolved.

Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
Copilot AI review requested due to automatic review settings July 14, 2026 19:44
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>

This comment was marked as outdated.

Signed-off-by: Pablo <pablo.estrada@smartcontract.com>
Copilot AI review requested due to automatic review settings July 14, 2026 19:56

This comment was marked as resolved.

Signed-off-by: Pablo <pablo.estrada@smartcontract.com>
Copilot AI review requested due to automatic review settings July 14, 2026 20:00

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Pull request overview

Copilot reviewed 14 out of 14 changed files in this pull request and generated no new comments.

Copilot AI review requested due to automatic review settings July 14, 2026 20:37

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Pull request overview

Copilot reviewed 14 out of 14 changed files in this pull request and generated no new comments.

@cl-sonarqube-production

Copy link
Copy Markdown

@ecPablo
ecPablo merged commit 4e1ae4b into main Jul 14, 2026
35 of 38 checks passed
@ecPablo
ecPablo deleted the ecpablo/add-execute-payers-solana branch July 14, 2026 20:48
ecPablo pushed a commit that referenced this pull request Jul 14, 2026
🤖 I have created a release *beep* *boop*
---


##
[0.52.0](v0.51.0...v0.52.0)
(2026-07-14)


### Features

* add ExecutePayer field in chain metadata for setting solana execute
accounts [CLD-3046]
([#814](#814))
([4e1ae4b](4e1ae4b))

---
This PR was generated with [Release
Please](https://github.com/googleapis/release-please). See
[documentation](https://github.com/googleapis/release-please#release-please).

[CLD-3046]:
https://smartcontract-it.atlassian.net/browse/CLD-3046?atlOrigin=eyJpIjoiNWRkNTljNzYxNjVmNDY3MDlhMDU5Y2ZhYzA5YTRkZjUiLCJwIjoiZ2l0aHViLWNvbS1KU1cifQ

Co-authored-by: app-token-issuer-ops-platform[bot] <275822481+app-token-issuer-ops-platform[bot]@users.noreply.github.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants