You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Support Metamask socket request to unlock CLI applications outside the browser
Sequencer
Implement an example sequencer for sov-bank
Summary
An integration interface that will receive transactions from various frontends and forward them to the sov-sequencer, so these can be received by the rollup.
Frontend
Can be any tool that invokes the TypeScript Sovereign Metamask Snap, including but not limited to browsers (natively) and CLI applications (probably through WASM modules).
Encoding Library
Will be responsible for receiving a human friendly transaction format, and encode it as Borsh. The Borsh encoded transaction will be the one included on-chain; hence, will be the signed transaction.
This library is expected to be implemented per rollup. As SDK, we should have some tooling that will generate automatically such library, per message. This means we might face challenges with enums discriminants. One example is if we are to encode the CallMessage of sov-bank: as per specification, Borsh will constrain us to 255 variants, that are probably enough. However, we need a fallback strategy in case more variants are required.
Metamask Snap
Will be responsible for signing transactions, provided a Metamask key seed. It means that any system that supports Metamask will also have the ability to sign transactions for the rollup.
Also, such library should support interacting with metamask via network socket so applications outside a browser context will be able to access the service. It means the library should potentially, on request, make available a network socket for CLI applications. Naturally, this socket would be critical - as it can sign transactions - and some security wards must be in place.
Sequencer
The sequencer will receive the signed transaction via RPC, and will broadcast them into the rollup.
It must be agnostic regarding the encoding strategy. For this task, we will use as input the signed transaction from the Metamask Snap, but we might as well take input from a HW wallet. With a payload as simple as (transaction, signature, public key), that would be trivial.
Note: public key might be optional here, as a transaction might either contain the public key, or a zero-knowledge proof that will take the signature and transaction as argument, and check the validity. This would unlock privacy-preserving transactions. However, if we assume that to be the case, we might want a trait that defines a transaction validity, such as fn(&self, signature: S) -> bool
The text was updated successfully, but these errors were encountered:
Tasks
Frontend
sov-bank
sov-bank
Encoding Library
no-std
torollup-interface
#1077serde
feature for non-native serialization #1141255
enum variantsMetamask Snap
Sequencer
sov-bank
Summary
An integration interface that will receive transactions from various frontends and forward them to the
sov-sequencer
, so these can be received by the rollup.Frontend
Can be any tool that invokes the TypeScript Sovereign Metamask Snap, including but not limited to browsers (natively) and CLI applications (probably through WASM modules).
Encoding Library
Will be responsible for receiving a human friendly transaction format, and encode it as Borsh. The Borsh encoded transaction will be the one included on-chain; hence, will be the signed transaction.
This library is expected to be implemented per rollup. As SDK, we should have some tooling that will generate automatically such library, per message. This means we might face challenges with enums discriminants. One example is if we are to encode the CallMessage of
sov-bank
: as per specification, Borsh will constrain us to255
variants, that are probably enough. However, we need a fallback strategy in case more variants are required.Metamask Snap
Will be responsible for signing transactions, provided a Metamask key seed. It means that any system that supports Metamask will also have the ability to sign transactions for the rollup.
Also, such library should support interacting with metamask via network socket so applications outside a browser context will be able to access the service. It means the library should potentially, on request, make available a network socket for CLI applications. Naturally, this socket would be critical - as it can sign transactions - and some security wards must be in place.
Sequencer
The sequencer will receive the signed transaction via RPC, and will broadcast them into the rollup.
It must be agnostic regarding the encoding strategy. For this task, we will use as input the signed transaction from the Metamask Snap, but we might as well take input from a HW wallet. With a payload as simple as
(transaction, signature, public key)
, that would be trivial.Note:
public key
might be optional here, as a transaction might either contain the public key, or a zero-knowledge proof that will take the signature and transaction as argument, and check the validity. This would unlock privacy-preserving transactions. However, if we assume that to be the case, we might want a trait that defines a transaction validity, such asfn(&self, signature: S) -> bool
The text was updated successfully, but these errors were encountered: