Improve Notary Service API to simplify multi-signature transaction signing #1461

Open
opened 2025-12-28 17:16:31 +00:00 by sami · 1 comment
Owner

Originally created by @End-rey on GitHub (Dec 19, 2024).

Currently, signing transactions in the notary service requires manual manipulation of invocation scripts. This includes removing existing invocation script from the transaction that was received from the notary pool, and ensuring the correct actor is used to match the transaction's original signers. This process is cumbersome, error-prone, and counterintuitive, especially when the goal is simply to append a signature to an existing transaction.

Describe the solution you'd like

Just use GetRawNotaryTransactionVerbose + Sign (or any other method that would make it easier to add a signature obtained from the notary pool) and everything works.

Describe alternatives you've considered

Current Manual Process:

  1. Retrieve the transaction using GetRawNotaryTransactionVerbose.
  2. Manually strip all existing invocation scripts.
  3. Use Sign with a properly configured actor.

This works but is not user-friendly and can lead to confusion or errors, as noted during debugging.

Originally created by @End-rey on GitHub (Dec 19, 2024). ## Is your feature request related to a problem? Please describe. <!-- A clear and concise description of what the problem is. Ex. I'm always frustrated when ... --> Currently, signing transactions in the notary service requires manual manipulation of invocation scripts. This includes removing existing invocation script from the transaction that was received from the notary pool, and ensuring the correct actor is used to match the transaction's original signers. This process is cumbersome, error-prone, and counterintuitive, especially when the goal is simply to append a signature to an existing transaction. ## Describe the solution you'd like <!-- A clear and concise description of what you want to happen. --> Just use [`GetRawNotaryTransactionVerbose`](https://github.com/nspcc-dev/neo-go/blob/6d2077271499733ff847ab47306a97c9233ee599/pkg/rpcclient/rpc.go#L953) + [`Sign`](https://github.com/nspcc-dev/neo-go/blob/6d2077271499733ff847ab47306a97c9233ee599/pkg/rpcclient/actor/actor.go#L228) (or any other method that would make it easier to add a signature obtained from the notary pool) and everything works. ## Describe alternatives you've considered Current Manual Process: 1. Retrieve the transaction using [`GetRawNotaryTransactionVerbose`](https://github.com/nspcc-dev/neo-go/blob/6d2077271499733ff847ab47306a97c9233ee599/pkg/rpcclient/rpc.go#L953). 2. Manually strip all existing invocation scripts. 3. Use [`Sign`](https://github.com/nspcc-dev/neo-go/blob/6d2077271499733ff847ab47306a97c9233ee599/pkg/rpcclient/actor/actor.go#L228) with a properly configured actor. This works but is not user-friendly and can lead to confusion or errors, as noted during debugging.
Author
Owner

@AnnaShaleva commented on GitHub (Jul 4, 2025):

Should be fixed on Notary service side. Notary service should accept multiple invocation scripts per multisig witness even if some of them already submitted by other requests.

@AnnaShaleva commented on GitHub (Jul 4, 2025): Should be fixed on Notary service side. Notary service should accept multiple invocation scripts per multisig witness even if some of them already submitted by other requests.
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
nspcc-dev/neo-go#1461
No description provided.