I'm involved in a .NET substrate-based project and I started working towards an implementation for making balance transfers on Substrate.
I would swear that I'm doing everything exactly the same way that the @polkadot/*
packages do, but in the end, when I submit my transaction, I get an error 1010
back, which means the signature verification failed, and I'm running out of ideas.
I have verified that:
- The unsigned payload matches that of the polkadot packages.
- The mnemonic is converted to the same public/secret pair.
- That the signature can be verified by my code.
- That the signature can be verified by
@polkadot/*
(!). - That the final payload matches one generated by
@polkadot/*
, minus the signature itself which is different every time, and the era, where I use an immortal era ([0]
).
This is a gist containing all the values leading up to the final submission. At the time of writing, the sender's nonce is 44.
Eternally grateful to anyone who can shed some light.
subkey verify
to debug it? Otherwise make sure to use the correct signature prefix, for sr25519 itssubstrate
.