哈哈,大家好!我是号称行业“区块链王一博”的拓拓哥~
最近以太坊推出了抽象账户的概念和实现,即eip4437。在你的资产存在eth 抽象账户的合约中的前提下,如果你的私钥或助记词丢失,可用4437 来恢复,这个实现类似于多签名,同一合约的签署者可以联名恢复你对合约里资产的控制权
那么对于比特币来说有没有类似的方案,比特币地址私钥忘记后,能不能恢复?其实对于比特币来说,解决方式更加彻底和简单,即使用时间锁功能即可。ETH 目前的普通交易是不能设置时间锁的,只能在智能合约里面实现
什么是BTC 交易的时间锁?
nTimeLock 时间锁是指,在一笔交易中,你可以设置交易被区块链打包确认的时间,提前于这个时间来广播交易都无得到网络确认
时间锁有什么用
设置了nTimelock,你可以提前签名好若干笔交易。并把这些交易保存起来,以后即使你的私钥丢失,也能广播这些交易把冷钱包的币发到指定的地址上
这里有两点要注意的:
加上时间锁的交易签名后,原地址上的币是不能再次发送新交易的,否则会破坏原地址的UTXO结构,使得加了时间锁的交易无效 。
恢复地址的私钥需要你保存好,恢复地址可以是交易所地址,多签地址,当然最好是自己的备用恢复地址 。
带了时间锁的交易你可以签署任意多笔,在时间锁失效后,需要哪一笔确认,广播哪一笔即可
BTC 交易如何设置时间锁
我们用electrum 为例 首先,设置好你的恢复地址,图中39NQ 开头的地址就是我们的恢复地址,点击支付:
进入高级设置,里面的 LockTime 就是我们要设置的
你可以选择日期或者区块链高度来设置,比如你可以设置在2024年1月1号以后,这笔交易才能被广播确认,或者区块高度为100万以后,此交易才能确认
注意。如果你使用区块高度来设置确认时间的话,你需要进行计算,比如一百天后的区块高度为目前的高度+144*100
因为比特币一天大概144个区块,所以需要乘以100
设置完高度以后,插入你的trezor,点击签名
签名后的内容,我们叫做raw tx,你需要把raw tx保存起来。在你签名时,trezor 或其他硬件钱包会再次确认你的时间设置
签名完成后,点击上图左下角的导出,把raw tx 文本导出来保存即可
在时间锁的日期到达后,你可以通过electurm 加载你的raw tx井广播到网络确认,如下图
把事先保存好的raw tx 拿出来,贴到输入框,点击载入交易即可
RAW TX 需要保密么?
rawtx是私钥签名后的文本文件,你可以存在哪里都可以,签名后的交易是无法泄露你的私钥的,所以,你的raw tx 甚至被别人知道也无所谓,比如我上面签名的raw tx是:
0200000000010143ec0bb3ee0a059d923005809c4a25a75589decbcaffd333e8e171328 df56e80000000017160014e6b8415c6595f55553484ec19f86727c1a883576fdffffff011a1306000000000017a914543c05063ded36f50284b4d9c42c2ac99f5fd53b8702473044022022653182e616327ffdh7a9579d11663ed6e55ef67f4d695940bcdhc7e5b33eca02203167 f2ee67d7d23a405b1319e138ba2314fa600633a6316a15382e8946f8ff012103d9298b0c0 dc364c3f2675690a8734d53d8a115483b28a9c838b7ee94669d59c85f28cf64
这个raw tx 你们可以加载到你的electrum 里面,看看能不能广播成功
试过以后你会发现,这是无法成功被确认的,因为这笔交易无法在 LockTime:1691297887 (2023-08-06 11:58:07)之前确认,就算在时间锁失效以后广播成功了,bte 也是转移到我设定好的恢复地址上,其他人无法更改恢复地址
加上了时间锁后的签名 raw tx文本是用来在你丢失私钥的情况下恢复你的资产的,你可以保存在任何地方,在你知道恢复地址私钥的前提下,保存的地方越多越好
微信1:victeam005
微信2:shijie20170405
Telegream:https://t.me/VICOINDAOCHAT