Open
Description
Description
Remove exposure of Ed25519.sign, remove Storage
Send/Sync
ties to the wasm
feature, and make keyDel in typescript compatible with the Rust code. Refactor the Storage
trait to return better errors, and simplify its API.
Motivation
- Users should be able to sign data without relying on our code.
- We might need the Storage trait not to be Send/Sync for other bindings (e.g Python) as well, so we should not tie its bounds to the
wasm
feature. - Js implementation of
MemStore
keyDel
slightly differs from the Rust code regarding idempotency. identity_account::types::signature::Signature::pkey
is not used in the Rust code.Storage::set_password
is no longer needed.- Improve error feedback. See: Add Wasm
Account
Storage
interface #597 (comment)
To-do list
- Assess the need to expose Ed25519.sign - @noble/ed25519 might provide the correct signature
- Remove Storage ties to
wasm
feature- Change the way the Account handles Storage
- Use the
cfg_attr
on Storage and change the name of the feature that enables it
- Decide whether
Storage::key_del
should be idempotent or not. RefactorKeyLocation
#729 - Refactor
Account
Signature
not to containPublicKey
[Task] RefactorAccount
Signature
#722 - Remove
SetPassword
method fromStorage
[Task] RemoveStorage::set_password
#720 - Investigate simplification of state in the
Storage
interface, potentially reducing the number of state variables - Refactor
Error
forStorage
Interface- Introduce a reasonably abstract error type that can accommodate many
Storage
implementations, including any type of file- or network-I/O-related failures
- Introduce a reasonably abstract error type that can accommodate many
- Prefer to use
UInt8Array
rather than Base58-BTC encoded strings for keys. [Task] Change keys in Wasm from Base58-BTC strings toUInt8Array
#721 - Write macro for
napi
related types and impl - Deduplicate Stronghold Nodejs wrapper code #872 - Assess
NapiResult
error messages - Avoid Serializing and Deserializing keys
Change checklist
Add an x
to the boxes that are relevant to your changes, and delete any items that are not.
- The feature or fix is implemented in Rust and across all bindings whereas possible.
- The feature or fix has sufficient testing coverage
- All tests and examples build and run locally as expected
- Every piece of code has been document according to the documentation guidelines.
- If conceptual documentation (mdbook) and examples highlighting the feature exist, they are properly updated.
- If the feature is not currently documented, a documentation task Issue has been opened to address this.
Metadata
Metadata
Assignees
Labels
Type
Projects
Status
Product Backlog