TimeBounds Ledger Number & Semantic Ledger Time Sorting. #290
Open
Description
opened on Apr 23, 2019
Currently, the TimePoint data structure used for transaction minTime and maxTime refers to unix time stamps rather than ledger heights. Referring to ledger numbers instead of wall clock times is better for smart contracting applications where the goal is to ensure a number of ledgers (e.g., 1 ledger) between two actions to ensure that they are not ordered incorrectly (assuming they use different source account sequence numbers).
To fix this, I have four proposed amendments:
- Use the new Transaction formats to permit transactions with ledger number based timeouts instead of wall clock time
- Use the new Transaction formats to permit transactions with ledger number based timeouts as well as wall clock time
- Reinterpret TimeBounds to a LedgerNumberBounds if maxTime < minTime, making old transaction format capable of expressing ledger number bounds but also making previously statically provably invalid transactions valid
- Semantic Ledger Time Sorting (see Semantic Ledger Time Sorting #291, separate issue as it was sufficiently complicated to merit separate discourse).
Overall, my favor goes to solution 2, then 1, then 3 but I understand there may be alternative preferences based on complexity of implementation. 4 should be considered separately, as it would be in parallel to one of these three.
Activity