Skip to content

PLEX-1920 fix SolanaService.SubmitTransaction #1427

Merged
Unheilbar merged 66 commits intodevelopfrom
PLEX-1920
Feb 2, 2026
Merged

PLEX-1920 fix SolanaService.SubmitTransaction #1427
Unheilbar merged 66 commits intodevelopfrom
PLEX-1920

Conversation

@Unheilbar
Copy link
Copy Markdown
Contributor

@Unheilbar Unheilbar commented Jan 21, 2026

supports:

Copy link
Copy Markdown
Contributor

@silaslenihan silaslenihan left a comment

Choose a reason for hiding this comment

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

Assuming we are killing write target because products will jump directly to mainline CRE

Comment thread pkg/solana/solana_service.go Outdated
if err != nil {
return nil, fmt.Errorf("invalid transaction payload: %w", err)
}
// remove dummy signatures
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.

nit: could you maybe just add a little more on where these dummy signatures come from?

Comment thread pkg/solana/solana_service.go Outdated
txBytes := obj.GetBinary()

txJSON, jerr := json.Marshal(obj)
txJSON, _ := json.Marshal(obj)
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.

why ignore error?

Comment thread contracts/programs/keystone-forwarder/src/events.rs
Comment thread pkg/solana/chainwriter/chain_writer_test.go
Comment thread pkg/solana/solana_service.go Outdated
amit-momin
amit-momin previously approved these changes Jan 29, 2026
Config() config.Config
}

func New(chain Chain, reader client.Reader, txm Txm, chainInfo commontypes.ChainInfo, lggr logger.Logger) (capabilities.ExecutableCapability, error) {
Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

Are we sure that WriteTarget is not used?

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

Yes

Comment thread pkg/solana/chain.go
}
if c.cfg.Workflow.IsEnabled() {
c.lggr.Debug("Starting LogPoller")
startAll = append(startAll, c.lp)
Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

Hm, I wonder how CCIP works without starting the LP

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

They spin up logPoller during ChainReader creation

}

return &commonsol.SubmitTransactionReply{Status: txStatus, Signature: commonsol.Signature(signature), IdempotencyKey: transactionID}, nil
return &commonsol.SubmitTransactionReply{Status: txStatus, IdempotencyKey: transactionID}, nil
Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

Isn't it a breaking change that we no longer return the transaction signature?
Are we sure that noone else uses this method?

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

  1. The only consumer of SolanaService currently is solana capability, so noone uses this method
  2. TxManager().GetTransactionSig returns only signatures for pending transactions, here call always returns an error since at this point transaction is finalized
  3. Solana capability doesn't rely on signature from txm and instead retreives signatures from Logs
    However, having signature in reply is potentially missleading so I would either alter GetTransactionSig to support returning signatures for finalized tx (with some cleanup interval) or removed Signature from response. Gonna do this in a follow up PR

Comment thread pkg/solana/solana_service.go Outdated
@cl-sonarqube-production
Copy link
Copy Markdown

Quality Gate failed Quality Gate failed

Failed conditions
2.0% Coverage on New Code (required ≥ 75%)

See analysis details on SonarQube

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