MSafe | Aptos
  • Overview
    • MSafe Overview
    • What can you do with MSafe wallet?
      • Why Multi-Sig & Non-Custodial
      • MSafe Wallet Key Benefits
    • Use Cases
      • Treasury Management
      • Smart Contract Deployment & Update
      • Protocol Admin Control
      • dApp Store Integration
    • Security
  • Users
    • Glossary
    • Launch App
    • Connect Wallet
    • Navigation Bar
    • Address Book
    • Create an Account
      • Initiate Creation
      • Co-Managers to Accept
    • Switch btw Accounts
    • Deposit / Receive
    • View Assets
    • View Pending Txn
    • View Txn History
    • Propose Transaction (Enable NFT, Send, Register Coin)
      • Enable NFT
      • Send
      • Add Coin
    • Approve Transaction
      • Co-Managers to Approve Enable NFT
      • Co-Managers to Approve Send
      • Co-Manager to Approve Add Coin
    • Change Vote
    • Reject Transaction
      • Co-Managers to Reject
    • Execute Transaction
      • Execute Approval
      • Execute Rejection
    • App Store
      • Use dApps
    • MSafe 1.0 User guide
      • Connect Wallet
      • First time registration
      • Create an MSafe Account
      • Receive Coin
      • Coin Transfer (APT)
      • DAPP Store
      • Add a new coin
      • Address Book
      • Permissions
      • Wallet FAQs
  • Developers
    • Overview
    • System
      • Auth-key & Multi-Ed25519
      • Backend Walk Through
      • MSafe Contracts
    • Interactive CLI
      • Installation
      • CLI arguments
      • Register and View
      • Create a MSafe Wallet
      • Approve / execute a transaction
      • Transfer Coin
      • Smart Contract | Module Publish
      • Entry Function
      • Reject a transaction
      • Migration from MSafe 1.0 to MSafe 2.0
    • SDK
      • Smart Contract | Deploy a MOVE Module
      • Call An Entry Function
    • Integrate with MSafe (DAPP)
      • FAQ
    • Move Module Publish
  • Product updates
    • 2022 Q4
Powered by GitBook
On this page
  1. Developers
  2. System

Auth-key & Multi-Ed25519

PreviousSystemNextBackend Walk Through

Last updated 2 years ago

Aptos support native multi-signer authentication. In this design doc, we would use the native implementation of a multi-signer to implement the multi-sig feature. (Reasons, see 3.1).

According to , the multi-key authentication key is defined as follows:

auth_key = sha3-256(p_1 | . . . | p_n | K | 0x01)

The auth key defines a multi-sig wallet address that needs to collect K out of n signatures to execute the transaction. MSafe adopt this implementation and build the product on top of it with some minor changes.

For MSafe, an additional dummy public key is added to serve as a nonce for wallet creation.

For example, Alice, Bob, and Charlie want to create a 2/3 multi-sig wallet, and each of them has a public address annotated as p_a, p_b, p_c. Thus the first wallet created by the three is

auth_key = sha3-256(p_a | p_b | p_c | 0x00...0 | 2 | 0x01)

Note that in this expression, 4 public keys are provided - three from the users, and one assigned by the system. 2 out of the 4 signatures are required to send a transaction. Since the private key of 0x00...0 can never be achieved as a premise of cryptography, it is equivalent to a 2/3 multi-sig wallet created by Alice, Bob, and Charlie.

If these three users want to create another multi-sig key, the public key provided by the system will be incremented by 1 (The nonce in MSafe creation module stored for the first owner, p_a). E.g.

auth_key = sha3-256(p_a | p_b | p_c | 0x00...1 | 2 | 0x01)
Aptos doc