Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
23 changes: 21 additions & 2 deletions examples/last_will.simf
Original file line number Diff line number Diff line change
Expand Up @@ -24,9 +24,28 @@ fn recursive_covenant() {
assert!(unwrap(jet::output_is_fee(1)));
}

pub fn enforce_relative_distance(min_distance: Distance) {
// Assert that the current input is spent in a transaction that can
// only appear a distance of at least min_distance blocks after the
// block containing the input UTXO.
// Panic otherwise.

// This is a replacement for the deprecated jet::check_lock_distance.

// Transaction version must be at least 2.
assert!(jet::le_32(2, jet::version()));

// Fetch and parse sequence
let actual_data: Either<Distance, Duration> = unwrap(jet::parse_sequence(jet::current_sequence()));
let actual_distance: Distance = unwrap_left::<Duration>(actual_data);

assert!(jet::le_16(min_distance, actual_distance));
}

fn inherit_spend(inheritor_sig: Signature) {
let days_180: Distance = 25920;
jet::broken_do_not_use_check_lock_distance(days_180);
// On Bitcoin, this Distance would be 180 days; on Liquid, it is 18 days.
let timelock_distance: Distance = 25920;
Comment on lines +46 to +47

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Since we're touching this and it's supposed to be for inheritance, what's the maximum possible value we could use here?

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Maybe a nice to have in the future would be Distance::MAX

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This is more like a dead man's switch where the funds unlock after 180 days of inactivity.

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

If someone wanted to actually use it for inheritance, the preferable thing would be to use Duration, which can be up to 65535 units of 512 seconds (about 1.06 years).

enforce_relative_distance(timelock_distance);
let inheritor_pk: Pubkey = 0x79be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798; // 1 * G
checksig(inheritor_pk, inheritor_sig);
}
Expand Down
2 changes: 1 addition & 1 deletion test-data/last_will.json
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
{
"program": "5vHQKEGJsWVABAmKSEGCrynMGLpUF69BbvwQFoAuY+y1ngQJfqSPabfWRZ9K3F2jdRYYBitLzfMz987l3WKtAxSudDhYOBTf5tlucUbKz5QK2LfAvMA1kChBh+DHCpJAk4cziqISK6EzABFXCwYvClhPYGFQusJfripGQssOAVt34AhgGJAoSQbgJxuBig/FJwqFobGHNddy8HoTqejIHGcv8bcleUZT57KmW1Vp7LXaMUR4qMQ4YBiE3n41BAOBgcOJFAGQOJwuLAGkHHAHHq04wI/yiD2vraYIqA3SuA+bC47xyXGd55T1dYE3K44T3KDj4JyBFw3hIG4TisDgQMQOQy0/JhFAMksYYgkmifC/E6pFNqY5CLBt8zYQwD4id5wG3yDkOE5FJIEnwxOZ+Cq1myCZY7Ax/Klosw4w/YaiSrNDaOhM/+erWaIc9xgwDFZAAAAAQNIVC1M24nMERf6gONImmAwub35L6eiVhI0f2X8hANtDAEy06t3vxQYBiFwBg5gXe+1Cj7rQ+ji6QJDRW0vEmFLGZXcRhKAN6Nt0/l2ADDAMXw4Ic3idDCRwDPfEbxc9Hgqw6MFFnfB5SG98/3X6ptShJKOWBgHCQnKlJFkAAAAAAoVfDUc2gh0FinqrkqEEWyo/WTDVDT/U2bJS9gAmPKXAmHgCyTBgGIWkhIoZ0QznIWef/b40z+a+nNzThyQhoT+7cjE0KYRLTvzYTFzcowwDAc3eSs4FpHnyXmUvPp+bP+chOe9mSnFV9hx0R9iADzY6JhgGsgUJIPrNyvFAsGbdBzbSrO1OkcGEXy6AONowywuX3+NCWUQGHsywjitxQ2nK+GAYhajfQgn7m8T+SlBrmrOch86kHUDO438Z7mfcnzyKpQtkIOHi8CrIAAAABBwALgD4bDmlQbnQY5qA9/2zzyEMPHpAcN+yqDG3zI2HUxtIATDp2sMAxC4MQkUIMDxOBgOYGXVkQBL/b5MeFxWiMI+ZrKqP2EBia/TaUHWcUSNgAOAwDWFxEaX1K4z6OmpuEjKjkFQMqzncIxclF/HT1pwsizWH6XvSw8hwKE4nA5ai4WA5bg4sA5ChcjAHLsHMsE5lwOXwuV4DmAByqA5tAeV4PLkDm5A=",
"program": "6Ad0ChBibFlQAQJigxJFkAAAABAoVw+HGBzZH6trs+PtsPueC9Nnym4TM1piAZl54eFsnCxmnF7pS6GAYhZhamnAMTmMFtnPC/xiI5Vb9WwZIGczi6x80m4GQqYsGLmPKAWqxQMAxC4AwcwYulQXr0Fu/BAWgC5j7LWeBAl+pI9pt9ZFn0rcXaN1FhgGL4cFObcfgvfnf7Zau3ugLBURp8JIm9U2mH5DhfrY86e/4erQgwDg4XC2zhzFpWDlztsK/m/gR96TLql2o3z5rZRs2b7zY/xcmR+BSQGAYhcQkJFDOiGc5Czz/7fGmfzX05uacOSENCf3bkYmhTCJad+bCYugwNAxHMbF1+kP4Eem3zb/kCJKtk0jc2kvvObaA36q97mNfCmOQYBsCcYpINrFCRbhuOAuAgo5n+5nw8Ow8SUaLVk5EoJylbJLr0eorb3VMvKJpVtDy6gDANJAoSQfkGcbkKKBYtOAYHNFZRJaXTw8Jpe2xmpeKV76/KwtJclIr9i/JoPOZEHH1IYBiFrM32D6TScdfHnfIVTCl4baXfhg2oqbO7evK+KadNVmcNYeOgKE4Afk0CAcEA4kC4+AYg5Lk2l5vmZ++dy7rFWgYpXOhwsHApv82y3OKNlZ8oFbFvgXmAQgUIMPymOFSSBJw5nFUQkV0JmACKuFgxeFLCewMKhdYS/XFSMhZYcArbvwBDAMSBQkg3ATjcDFB+XJwqFobGHNddy8HoTqejIHGcv8bcleUZT57KmW1Vp7LXaMUR4qMQ4YBiE3gcVg4EBw0kUAcYA4mC4sAcZg5hwOYxacYEf5RB7X1tMEVAbpXAfNhcd45LjO88p6usCblccJ7lBzGhOZAXDOEAbhOKgOPAYgcyq0/JhFAMksYYgkmifC/E6pFNqY5CLBt8zYQwD4id5wG3yDmWCczKSBJ8MTmfgqtZsgmWOwMfypaLMOMP2GokqzQ2joTP/nq1miHPcYMAxA0czAoFpZtxOYIi/1AcaRNMBhc3vyX09ErCRo/sv5CAbaGAJlp1bvfigwDELeYF3vtQo+60Po4ukCQ0VtLxJhSxmV3EYSgDejbdP5dgAw8yIFfDghzeJ0MJHAM98RvFz0eCrDowUWd8HlIb3z/dfqm1KEko5YGAcGCc2qSLIAAAAABQq+Go5tBDoLFPVXJUIItlR+smGqGn+ps2Sl7ABMeUuBMPAFkmDAMQtJCRQbk8HmVAo5u8lZwLSPPkvMpefT82f85Cc97MlOKr7Djoj7EAHmx0TDANRAoSQfWblUKBYM26Dm2lWdqdI4MIvl0AcbRhlhcvv8aEsogMPZlhHFbihtOV8MAxC1G+hBP3N4n8lKDXNWc5D51IOoGdxv4z3M+5PnkVShbIQcPN6BVkAAAAAg4AFwB8NhzSoNzoMc1Ae/7Z55CGHj0gOG/ZVBjb5kbDqY2kAJh07WGAYhcGISKEGB5ugMBzAy6siAJf7fJjwuK0RhHzNZVR+wgMTX6bSg6ziiRsABwGAawuIjS+pXGfR01NwkZUcgqBlWc7hGLkov46etOFkWaw/S96WHnVAoTicDmbFwsBzOg4sA5CBciwHNCDmRCcyQHNILlWA5pgcpgOf8HlWDy1A6AQA=",
"witness": null
}
Loading