Transferable Account
Overview
A Transferable Account (TA) on Mycel is a specialized account structure designed to facilitate secure, cross-chain asset management and transfer. It operates using a 2-of-2 multi-signature mechanism, ensuring that both the user and the validators collectively control the account. This design enhances security and decentralization, as no single party can unilaterally control the account or its assets.
Alice: A user.
TSS Account: An account operated by validators.
Transferable Account: An account on Mycel managed by a 2-of-2 multi-signature, consisting of Alice and the TSS account.
Features
Create Account
Creating a transferable account involves securely linking a user's Bitcoin account to a Mycel account through a series of coordinated actions that ensure the integrity and security of the account creation process. The steps are as follows:
- Alice initiates a transaction from her Mycel account and signs it.
- Validators verify Alice's signature to confirm her identity.
- Validators execute a transaction to update the multisig contract.
- The multisig contract assigns Alice's Mycel account as a signer.
Transfer Account
Transferring a Transferable Account from one user (Alice) to another (Bob) involves the following steps:
- Alice initiates a transaction to update the multisig contract with her signature, indicating her intent to transfer the TA.
- Validators receive the transaction and collect signatures from the TSS account to authorize the transfer.
- TSS account signs the transaction and the multisig contract is updated to replace Alice with Bob as the new signer.
- The multisig contract is updated, making Bob the new authorized signer for the TA.
Request Signature
Requesting a signature for a transaction (e.g., sending BTC from a Bitcoin account) involves the following steps:
- Alice initiates a transaction from her Mycel account to sign a Bitcoin transaction to send BTC.
- Validators receive the transaction and collect signatures from the TSS Address.
- TSS Address sign the transaction, authorizing the multisig contract to execute the Bitcoin transaction.
- The transaction is executed on the Bitcoin , and BTC is sent to Alice's Bitcoin account.
Key Generation
Mycel is a decentralized platform that aims to provide secure and private transactions while maintaining the integrity and verifiability of the system. One of the key components in achieving these goals is the use of threshold signatures, specifically the Flexible Round-Optimized Schnorr Threshold (FROST) signature scheme.
One of the primary reasons Mycel has chosen to employ FROST is its unique property of maintaining a fixed public key, even when the set of signers changes. In Mycel, users' assets are held in transferable account, each associated with a unique public key. The security and ownership of these TAs are distributed among a group of validators using FROST.
Specification
State Diagram
Type
Account
id
Stringowner
Stringcurve
CurvepublicKey
Stringapproval
ApprovallockExpiry
UnixTime
Approval
publicKey
Stringcurve
Curve
Curve
- SECP256K1
- EDCSA
Messages
CreateAccount(owner)
Create a traferable account Returns the public key of transferable account which is created
LockAccount(id, duration)
Lock the transferable account
LockAccount(id, duration, to)
Lock the transferable account and approve unlocking
UnlockAccount(id)
Unlock the transferable account
ApproveAccount(id, to)
Approve unlocking the transferable account to the party
RevokeApproval(id, to)
Revoke the approval to unlocking the transferable account
RequestSign(id, data)
Request a signature of the transferable account
RequestSignAndDeleteAccount(id, data)
Request a signature of the transferable account and delete the key
Query
GetPublicKey(id)
Returns the public key (pair) of the transferable account
GetAddress(id, chain)
Returns the address of the transferable account
GetAccountStatus(id)
returns the status of the transferable account