- Ty Everett ([email protected])
This BRC extends BRC-56 by adding the ability to remove specific outputs from a basket and delete digital certificates that are no longer required. Applications can request that a wallet remove outputs from a basket by providing the transaction ID (txid
) and the output index (vout
) along with the name of the basket. Certificates can be deleted by specifying the certifier, serial number, and certificate type. The wallet will authenticate the request and remove the requested output from the basket or delete the specified certificate. If the request is denied or the output or certificate cannot be found, the wallet will respond with an error message.
Applications need the ability to remove specific outputs from a basket when they are no longer needed, without having to spend them. Furthermore, certificates may need to be deleted when they expire or are no longer relevant. This functionality allows for tokens and certificates to be managed more efficiently within a wallet, improving user experience and reducing clutter.
This BRC introduces two new message types to the BRC-56 messaging layer:
The Output Basket Removal Request message is sent by an application to request the removal of a specific output from a basket. It contains the following fields:
Field | Description |
---|---|
txid |
The transaction ID of the output to be removed. |
vout |
The output index of the output to be removed. |
basket |
The name of the basket from which the output will be removed. |
The wallet will validate the request and remove the requested output from the specified basket if it exists. If the requested output does not exist or the user denies permission, the wallet will respond with an error.
The Output Basket Removal Response message is sent by the wallet in response to an Output Basket Removal Request. If the removal was successful, the response will contain a success message. Otherwise, if the request was denied or the output could not be found, an error message will be included.
If the wallet is unable to fulfill the Output Basket Removal Request for any reason, it will respond with a JSON-formatted Output Basket Removal Error. The fields for the error message are as follows:
Field | Description |
---|---|
status |
This should always be the string "error" . |
code |
A machine-readable error code. |
description |
A human-readable description of the error. |
One example of an Output Basket Removal Error is as follows:
{
"status": "error",
"code": "ERR_PERMISSION_DENIED",
"description": "The user has denied permission to remove this output from the basket."
}
The Certificate Deletion Request message is sent by an application to request the deletion of a specific digital certificate. It contains the following fields:
Field | Description |
---|---|
certifier |
The certifier responsible for the certificate. |
serialNumber |
The serial number of the certificate. |
certificateType |
The type of the certificate to be deleted. |
The wallet will validate the request and delete the specified certificate if it exists. If the certificate does not exist or the user denies permission, the wallet will respond with an error.
The Certificate Deletion Response message is sent by the wallet in response to a Certificate Deletion Request. If the deletion was successful, the response will contain a success message. Otherwise, if the request was denied or the certificate could not be found, an error message will be included.
If the wallet is unable to fulfill the Certificate Deletion Request for any reason, it will respond with a JSON-formatted Certificate Deletion Error. The fields for the error message are as follows:
Field | Description |
---|---|
status |
This should always be the string "error" . |
code |
A machine-readable error code. |
description |
A human-readable description of the error. |
One example of a Certificate Deletion Error is as follows:
{
"status": "error",
"code": "ERR_CERTIFICATE_NOT_FOUND",
"description": "The specified certificate could not be found."
}
Implementations of this specification will need to extend the existing implementation of BRC-56 to include the functionality for output basket removal and certificate deletion. The wallet will need to handle incoming request messages, validate them, and perform the specified operations. The application will need to handle the response and error messages accordingly.