EOSIO / eos

An open source smart contract platform
https://developers.eos.io/manuals/eos
MIT License
11.27k stars 3.76k forks source link

Extending the upper value of ref_block_num in tapos beyond 65535 blocks #10010

Open aaroncox opened 3 years ago

aaroncox commented 3 years ago

Currently the ref_block_num used in tapos generation has a maximum of 65535 blocks.

https://github.com/EOSIO/eos/blob/58f90b9666dc37cf35eac5dafb6db1c4138024e7/libraries/chain/include/eosio/chain/transaction.hpp#L61

This sets an upper limit on the maximum expiration of a transaction to around 9 hours. It would be beneficial to some off-chain applications (msigs in particular external of eosio.msig) if this maximum timeframe could be extended to multiple days or potentially weeks.

The goal in changes to the system would be that:

Just as an example use case, I've thought about how a social account recovery system could be implemented that operated off-chain. Within the current set of rules, the entire account recovery process would need to occur within this designated 9 hour timeframe - which could potentially make the system more difficult to use the user needed to collect signatures from parties in different parts of the world. If a 7 day or 14 day window was possible on the expiration, it would then allow a reasonable amount of time for recovery processes like this.

heifner commented 3 years ago

Context: https://t.me/c/1139062279/260225

We discussed adding a transaction extension to support this protocol feature. We also discussed storing a spare array of ref blocks of say every 10 blocks or every 100 blocks.