User Operation
A UserOperation is an operation used for transactions (actions) using account abstraction in the Mitum network. In addition to the standard operation fields, an authentication
field related to general operations and authentication, a proxy_payer
field related to fee processing, and a settlement
field containing information about the operation sender are added under the extension
.
Unlike standard operations, which are directly signed using the sender's private key in the fact, UserOperations are signed with the private key of the operation sender, marking a significant distinction.
Structure of user operation (example)
{
"_hint": "mitum-currency-transfer-operation-v0.0.1",
"fact": {
"_hint": "mitum-currency-transfer-operation-fact-v0.0.1",
"hash": "Ff7K8e5XnzuSWFgFvPYX2nCebT5jySYgLHU2R2mjnkmE",
"token": "MjAyNC0xMS0yNyAwMjoxODowMy45NjggKzAwMDAgVVRD",
"sender": Address of user account
"currency": "FACT",
...
},
extension: {
// Related to authentication of user operation
"authentication": {
"_hint": "mitum-extension-base-authentication-v0.0.1",
"contract": Did-registry contract address related to account abstraction,
"authentication_id": "did:mitum:{Address of user account}#social_login",
"proof_data": Alternative signature
},
// Proxy Payment Account Information,
// If there is no account for payment by proxy, this section can be omitted.
"proxy_payer": {
"_hint": "mitum-extension-base-proxy-payer-v0.0.1",
"proxy_payer": Proxy Payment Contract Address (Sender must be pre-registered as the recipient for proper payment.)
}
// Account Information for Sending User Operation
"settlement": {
"_hint": "mitum-extension-base-settlement-v0.0.1",
"op_sender": Account address for sending User Operation
},
}
"hash": ...,
"signs": [
{
"signer": Publickey of op_sender,
"signature": Signatire of op_sender,
"signed_at": "2024-10-10T03:15:06.454Z"
}
]
}
Last updated