0091 XLS-91d: Beneficiary - An Inheritance Solution for XRPL #269
Replies: 6 comments 20 replies
-
How does it work if the account has been blackholed? If it doesn't work if the account has been blackholed, you need to define what blackholed status is. (is it only when the master key has been disabled and the regular key is a ZERO/ONE Account? etc.) |
Beta Was this translation helpful? Give feedback.
-
nit: Transactions are usually named in the form of |
Beta Was this translation helpful? Give feedback.
-
|
Beta Was this translation helpful? Give feedback.
-
Wouldn't we need also a delete beneficiary tx? In case i want to cancel between last tx and timelock period |
Beta Was this translation helpful? Give feedback.
-
Is there any particular reason the proposal doesn't require the I worry about scenarios where the original account is no longer accessible, and the beneficiary account becomes inaccessible in a surprising or unforeseen way (this might be due to errantly setting the beneficiary to a blackhole/special address, loss of private keys of the beneficiary, or otherwise). By forcing the beneficiary to prove access to the beneficiary account, we know funds can't be pulled into an inaccessible beneficiary account (because that account must sign). |
Beta Was this translation helpful? Give feedback.
-
Is there a potential issue here if the user was already primarily using their regular key instead of their master key (e.g. when using the XRPL Labs Vanity Address service)? The situation I'm imagining:
|
Beta Was this translation helpful? Give feedback.
-
XLS-91 Beneficiary - An Inheritance Solution for XRPL
Introduction
The need for a secure and reliable inheritance mechanism on the XRP Ledger has been a recurring topic within the community. In the event of an account holder's death, without access to the private key, the assets in the account are effectively lost forever, causing significant concern for users who want to ensure their digital assets are passed on to their beneficiaries.
Existing solutions, like sharing private keys with executors or family members, pose significant security risks and are often impractical due to trust issues or technical limitations.
This proposal aims to introduce a simple, secure, and user-friendly inheritance mechanism on the XRP Ledger by leveraging new transaction types and modifications to the
AccountRoot
ledger entry. This mechanism allows account holders to set a beneficiary who can claim access to the account after a specified period of inactivity, ensuring assets can be passed on without compromising the account's security during the holder's lifetime.Problem Statement
When an XRP Ledger account holder dies without sharing their private key:
Users need a way to ensure their assets can be securely passed on to beneficiaries in the event of their death, without compromising their autonomy or the security of their account while they are alive.
Amendment
The proposed amendment introduces a new inheritance mechanism on the XRP Ledger by adding two new transaction types and extending the
AccountRoot
ledger entry.New Transaction Types:
SetBeneficiary
InvokeBeneficiary
AccountRoot Ledger Entry Extensions:
New Transaction Type:
SetBeneficiary
The
SetBeneficiary
transaction allows an account holder to designate a beneficiary account (sfBeneficiary
) and specify a time lock period (sfTimeLock
). Once set, these fields are added to theAccountRoot
ledger entry of the account.Transaction Format
SetBeneficiary
(ttSET_BENEFICIARY
).Example
SetBeneficiary
TransactionAccountRoot Ledger Entry Extensions
The
AccountRoot
ledger entry will be extended to include the following new fields:sfBeneficiary
(AccountID): The account ID of the designated beneficiary.sfTimeLock
(UInt32): The time lock period in seconds for inactivity.sfLastInteraction
(UInt32): The timestamp of the last outgoing transaction from the account.Updated AccountRoot Ledger Entry Format
The
AccountRoot
ledger entry will now include:Handling
SetBeneficiary
TransactionWhen a
SetBeneficiary
transaction is submitted:Validation:
Beneficiary
field must be a validAccountID
(account exists).TimeLock
must be a positive integer representing the time lock period in seconds.Update AccountRoot Ledger Entry:
sfBeneficiary
andsfTimeLock
fields are added or updated in theAccountRoot
ledger entry of theAccount
.sfLastInteraction
is initialized to the timestamp of the current ledger (if not already set).Transaction Result:
tesSUCCESS
.Updating
sfLastInteraction
sfLastInteraction
field in theAccountRoot
ledger entry is updated to the timestamp of the current ledger whenever an outgoing transaction (a transaction where theAccount
is the sender) is successfully processed.sfLastInteraction
.New Transaction Type:
InvokeBeneficiary
The
InvokeBeneficiary
transaction allows the beneficiary or any other party to initiate the claim process. The transaction will succeed only if the time elapsed since thesfLastInteraction
is greater than or equal to thesfTimeLock
. Upon success, thesfRegularKey
of the account is set to thesfBeneficiary
account ID, giving the beneficiary full access to the account.Transaction Format
InvokeBeneficiary
(ttINVOKE_BENEFICIARY
).Example
InvokeBeneficiary
TransactionHandling
InvokeBeneficiary
TransactionWhen a
InvokeBeneficiary
transaction is submitted:Validation:
Owner
field must be a validAccountID
of an account that hassfBeneficiary
andsfTimeLock
set in itsAccountRoot
ledger entry.Time Lock Verification:
sfLastInteraction
:TimeElapsed = CurrentLedgerTime - sfLastInteraction
TimeElapsed >= sfTimeLock
.Update AccountRoot Ledger Entry:
sfRegularKey
of theOwner
account to thesfBeneficiary
account ID.sfBeneficiary
andsfTimeLock
fields from theAccountRoot
.tecNO_PERMISSION
).Transaction Result:
tesSUCCESS
.Access Granted to Beneficiary
By setting the
sfRegularKey
of the account to the beneficiary's account ID, the beneficiary gains full access to the account through theRegularKey
mechanism of the XRP Ledger. ThesfBeneficiary
andsfTimeLock
fields are removed to prevent re-triggering of the inheritance process.Security Considerations
SetBeneficiary
transaction to update or remove the beneficiary designation by settingBeneficiary
to an empty value or omitting the field.sfLastInteraction
, resetting the inactivity timer.RegularKey
mechanism is standard in XRPL; however, account holders should be aware that setting theRegularKey
to the beneficiary account effectively grants full control over the account to the holder of that key, once the timelock conditions are satisfied.Examples
Scenario: Setting a Beneficiary
Alice wants to set Bob as her beneficiary, with a time lock of 6 months (15,552,000 seconds). She submits a
SetBeneficiary
transaction.Upon successful processing, Alice's
AccountRoot
ledger entry is updated with thesfBeneficiary
,sfTimeLock
, and initializessfLastInteraction
to the current ledger timestamp.Scenario: Invoking Beneficiary
After Alice passes away and no transactions are made from her account for over 6 months, Bob (or any other party) submits a
InvokeBeneficiary
transaction.If the time elapsed since
sfLastInteraction
is equal to or greater thansfTimeLock
, the transaction succeeds, setting thesfRegularKey
of Alice's account torBobAccountID
, and removing the beneficiary fields.Bob can now use his own secret key to sign transactions on behalf of Alice's account via the
RegularKey
mechanism, effectively gaining access to the assets.Edge Cases and Handling
sfTimeLock
period elapses, thesfLastInteraction
is updated, resetting the timer.InvokeBeneficiary
transaction succeeds, the beneficiary fields are removed from theAccountRoot
, preventing further claims.RegularKey
set, setting the beneficiary does not interfere with that. However, when theInvokeBeneficiary
transaction is successful, thesfRegularKey
is updated to the beneficiary's account ID, overriding any existingRegularKey
.Open Questions
TimeLock
period to prevent excessively long or infinite time locks?RegularKey
to be set in this manner?Beta Was this translation helpful? Give feedback.
All reactions