1
boter 2017-06-02 16:41:52 +08:00
不着急的话 先等几天再说吧
|
2
acess OP @boter 好像 RBF 也是要之前的交易标记允许才行的?
现在 BlockChain 上一直都有拿笔卡住的交易,新构造的交易则拒绝接受。 |
5
zaishanfeng 2017-06-03 11:17:31 +08:00 via Android
比特币已经被玩坏了,现在一笔转账得好几天,手续费贼贵, 大玩家已经开始找接盘侠了
|
6
acess OP @zaishanfeng 好像早就有扩容方案了,为啥一直没实行?
|
7
wuqing78 2017-06-03 22:43:32 +08:00
有收费加速服务的
|
8
ryd994 2017-06-05 13:24:10 +08:00
不可能拿来干坏事的,如果前一笔被确认的的话,后一笔几乎不可能被确认
“几乎”的意思是,如果有严重的网络分区,则整个比特币网络可能分裂。btc 上好像还没有过,其他币有过。 |
9
Andnot 2020-12-30 17:25:02 +08:00
我有个疑问,假设 A 地址有 3btc,向 B 地址转账 1btc,找零地址 C 得到 2btc,由于手续费低(此处假设为 0,实际可能是个很低的费率),交易一直未确认。那么,此时可以用找零地址 C 向另一个地址 D 进行转账吗,如果提高手续费,能否将之前 A 向 B 进行的零手续费交易确认呢?
|
10
acess OP @Andnot
零确认的币是可以花掉的。没记错的话,Bitcoin Core 钱包默认不允许用户花掉任何零确认,在设置里可以放宽限制,然后自己的零确认找零可以花掉。这个应该是有渊源的,bitcointalk 有个帖子 I broke my wallet, sends never confirm now 里面说的就是类似你这种情况。Bitcoin Core 钱包应该就是为了避免出现这种第一笔零确认被卡 /被双花撤销,导致后续一连串交易跟着被卡 /被双花撤销的情况,才不让用户花掉零确认。 别的钱包就未必有这个限制,Electrum 我记得就可以直接花掉零确认收款,零确认找零当然也可以。 要说零手续费交易,这又是另一个话题了。每个节点默认情况下都是不转发、不打包手续费过低的交易的,我记得最低 1sat/vbyte 。所以零手续费交易正常情况下是很难打包进链的,可能广播都很难广播出去。但是如果有矿工愿意打包,这种行为也是被允许的。 |
11
acess OP @Andnot
现在 Electrum 钱包甚至都直接把利用 RBF (单指 BIP125,而不是我这个老帖子里这种,没有启用 RBF,却仍然要双花替换的行为)双花撤回交易做成一键完成的了。 即便 Electrum 不这么做,RBF 也一直可以达到这个目的,所以争议才大……RBF 支持者认为零确认本来就不安全,RBF 可以让追加手续费变得方便,形成一个用户挂单、矿工吃单的“手续费市场”; RBF 反对者认为 BIP125 给坏人提供了方便,“手续费市场”就是拥堵、很荒唐…… |
12
acess OP @Andnot 之前 RBF 只是被用来追加手续费的,该付给谁多少钱还是多少钱,只是回到自己钱包的找零会少一些(对应矿工费被追加了)。一直都有人说,RBF 可以追加手续费,当然也可以恶意利用来进行双花欺诈(如果收款方看到零确认就认为已经到账的话)。Electrum 就是把这个双花功能直接做出来了,我猜,大概是考虑到用户的交易被卡住太久后,可能压根就不想付款了(毕竟比特币价格波动大),对方从一开始也不会认为这笔交易到账过,所以撤了就撤了。
|
13
acess OP 就拿 Electrum 来说,其实手动完成这个双花也不至于难过登天:
1.观察被卡住的零确认交易,看看花掉的是具体哪一个 UTXO ( TXID:输出序号),把对应的交易导出。 2.断网(可以设置 Electrum 的代理服务器到 127.0.0.1 上没有程序监听的端口),重新创建一个钱包,把私钥或 HD 种子导入。 3.断网创建的钱包里很显然是没有交易的。这个时候,把被花掉的 UTXO 所在的交易导入,这样钱包里就显示出余额了。 4.开启“选币( Coins )”标签页,手动选择之前被花掉的 UTXO,进行双花。可以转给当初要付款的地址,也可以干脆转回自己的地址。当然,这次矿工费要多给点。 5.交易签名后,把它保存好。含有之前那笔被卡住零确认交易的钱包,要关掉。然后,多方尝试广播双花交易。 |
14
Andnot 2020-12-31 11:22:20 +08:00
@acess 谢谢你的解释!
我恰好遇到了这个问题,只不过是在 Blockchain.com 的在线钱包,它的找零地址都是即时生成的,无法人为指定。好在我的在线钱包中目前只有这一笔 0 确认交易,就把这笔交易对应的找零地址中的余额又转了一部分给我的另一个钱包地址,手续费也提高到了网站自动建议的费率( 59 sat/B ),只不过目前这笔交易也是未确认状态……如果这第二笔交易得到确认,是否第一笔 0 确认交易也可以同时得到确认呢? Electrum 本地钱包我还真没用过,今天研究研究,之前一直用的都是在线钱包,没想到过会遇到这种问题。 |
15
acess OP @Andnot 除了 RBF,另一种追加手续费的方法 CPFP 就是像你说的一样,把之前被卡住的币用更高手续费花出去,这样两笔交易的平均手续费就被拉高了。Electrum 里也直接实现了这个功能,右键菜单里就有。
其实现在不太推荐用 blockchain . com 这种网页钱包,毕竟这种钱包的代码是远程加载的。软件钱包虽然归根到底也是从网上下载的,但是一次下载完成后就不会改动,还方便验证数字签名。 (不过,有一说一,Electrum 也爆过几次重大漏洞,影响最大的就是钓鱼漏洞了,虽然钓鱼信息不能直接偷走币,但是从钱包界面里直接弹出钓鱼信息,这个欺骗性确实太强,一不小心就被带进去了;除此之外,能直接偷币的 RPC 漏洞也出过,但是貌似没多少后续影响。以前爆过的漏洞后来当然都很快修复了,不过很显然总是有不少钱包没升级,尤其是钓鱼漏洞,影响一直都有,时不时就有人去哭诉说自己中招了) |
16
acess OP @Andnot 一般是 RBF 用不了的情况下才用 CPFP……有时候连 CPFP 都用不了(比如,所有币都转出去了,没留找零),这个时候要么自己手动双花,要么就得找矿池买加速器了。加速器本质上和 RBF 、CPFP 都一样,都是交钱插队,但是加速器一般比较贵,也不像 RBF 、CPFP 那样是全网公开竞价,而且还不能逐次逐渐加价。(要说退款,那当然都不能退……RBF 也不能退,即便是通过双花撤销了付款、把币转账回自己的钱包,矿工费追加了还是追加了)
|
17
acess OP @Andnot Electrum 是支持冷热分离的(这样即便是有漏洞,热端没有私钥,也不能直接盗走币)。而且它还可以通过 Electrum Personal Server 对接 Bitcoin Core 全节点,这样一般都说隐私性会略强一些(虽然比特币的隐私本来就很蛋疼,但是用了自己的全节点,就不会把自己的地址信息上传给钱包服务器,钱包服务器就不会把这一堆地址联系到一起、知道它们其实属于同一个主人,从这个意义上说隐私性改善了)。
|
18
Andnot 2021-01-04 15:43:35 +08:00
@acess 非常感谢!你把相关概念解释得真清晰,佩服!
我也来汇报一下后续情况,后来通过第二笔高手续费的找零余额交易(即 CPFP 方式),我的两笔交易都得到确认了,看来只要手续费提上去了,矿工还是很乐意把遗留的零确认交易一并打包的。 元旦期间有事耽搁,一直也没好好使用下 Electrum,等我回头把 Blockchain.com 上的地址私钥导入后,再发起一笔 RBF 交易试试看:) |
19
acess OP @Andnot 只要有交易费可以赚,矿工都是愿意打包的,只不过区块大小限制是共识规则,矿工也不能随便打破规则,否则挖出来的区块不会被其他人接受,就白挖了。
其实私钥不推荐随便倒来倒去(而且现在都是 HD 钱包了,导入也是导入 HD 种子,或者说是助记词,而不是单个地址私钥),万一操作中途泄露了,或者出什么别的岔子导致丢币(比如 Bitcoin Core 的经典找零丢币陷阱,这个找零丢币不是一般说的“100 个地址用完后丢币”,其实好多年前 Bitcoin Core 就实现了 HD 钱包,虽然有点别扭、甚至简陋。我说的是:把私钥导入到新的、没备份过的 wallet.dat 里面,然后转出,找零就自动跑到了没备份过私钥 /HD 种子的地址上)就不好了。 |
20
Andnot 2021-01-05 17:33:05 +08:00
@acess 原来如此!
我的在线钱包是好多年前注册的了,不知道支不支持 HD 钱包这种方式,我记得当时网站让我记下了 15 个单词,可能就是助记词吧。 关于 BTC,这是最不让我放心的一点,总觉得 BTC 里有太多不确定的东西,一不留神就踩了什么陷阱,而且这种去中心化的系统,出了问题也没地方申诉……哈哈,当然技术本身就具有两面性,去中心化也恰恰是 BTC 的优点。 |
21
acess OP @Andnot
以前的 blockchain . info 钱包我也不太清楚具体情况,看到有开发者提到过,以前遗留下来的“助记词”应该只是把钱包加密密码用一串单词的方式编码了一下,并不是 HD 种子。 你说是 15 个单词,可能并不是 HD 种子,如果不是 HD 种子,也就无法推导出私钥。 不过 blockchain . info 当时应该还有给你发一个加密的 json 文件,这里面应该才是加密过的私钥。他们还有官方的钱包离线恢复工具: github . com/blockchain/my-wallet-backup-decryption-tool |
22
Andnot 2021-01-06 10:13:29 +08:00
@acess 哦,的确是!我查找了下硬盘,果然有一个“blockchain.wallet.aes.json”文件,看来这个就是私钥的备份文件了。
那么,我如果换用 Electrum 这类本地钱包,只要导入这个 json 文件就可以了吧? |
23
acess OP @Andnot 这个 json 应该是加密的,至少也要先解密吧。
换我的话,我会直接在干净的离线机器上用 Electrum 新建一个标准( HD )钱包,抄写好助记词、妥善保存(同时注明钱包创建日期,以及钱包类型是 Electrum ),然后等到链上手续费不高的时候,分几次把币全部转移过去。 |
24
acess OP @Andnot
Electrum 也支持创建非 HD 钱包,可以导入单个或多个私钥(也可以导入地址,导入地址后就是仅监视钱包)。 但是,私钥是很敏感的私密数据,直接在电脑上复制粘贴我总是有点害怕,毕竟剪贴板一般应用都可以直接监听。 |
25
acess OP @Andnot Electrum 的助记词有一点不好,就是和 BIP39 用的是同一套英文单词表,所以会产生混淆,所以我才说要记下额外信息,比如,注明这 12 个单词组成的助记词是“由 Electrum 在 2021 年 1 月 6 日生成的”。
助记词标准在币圈里貌似也是个老问题了。BIP39 现在算是“事实上的标准”,很多钱包都支持;但是 Electrum 不同意用 BIP39,然后才搞出自己的助记词格式。然后呢,带来的就是不兼容问题,Electrum 助记词是不能在 BIP39 钱包里导入的。 (偶然可能会出现可以导入的情况,但这其实是个 bug,导入后,BIP39 钱包会推导出与 Electrum 完全不同的另一组地址,相当于是一个新的、独立的“子钱包”,余额很显然也会是零,因为你之前从来就没用过这个“子钱包”——往里面转币是可以的,但是非常不推荐这么做,因为很可能过了一段时间你就忘了,在 Electrum 视角也看不到 BIP39 这边的余额) 反过来,BIP39 助记词可以在 Electrum 里导入,但很显然你也可以看出来开发者对 BIP39 的态度:你需要在输入助记词时点开“选项”,勾选 BIP39 这个复选框,然后下面还会显示一个警告消息,说什么 BIP39 不符合他们的安全标准之类的…… 反对 BIP39 的主要理由,就是 HD 钱包从种子生成私钥、地址,中间是经过一条派生路径的,这有点像目录树一样,打开不同的文件夹就看到不同的内容。 如果不知道正确的派生路径,就无法正确地恢复钱包。每一个层次搜索的空间都高达 2^32,稍微多几个层次就不可能穷举穷尽了。 实际上支持 BIP39 的钱包大多都使用 BIP44 、49 、84 规定的标准派生路径(对 BTC 来说,就是分别派生出 1 、3 、bc1 开头的地址,1 开头就是最传统最经典的 P2PKH 地址; 3 开头是 P2SH 封装的隔离见证地址 P2SH-P2WPKH,相比 1 开头的地址,矿工费享受隔离见证共识规则的折扣,会便宜一些; bc1 开头的是 P2WPKH 原生隔离见证地址,矿工费最便宜,但是这种地址是新设计的 Bech32 格式,有些地方还不能识别),但是这几个标准貌似推出都有点迟,在这之前就有钱包在用 BIP39 了,于是派生路径在日后看来就是“不标准”的。 |
26
Andnot 2021-01-08 14:57:22 +08:00
@acess 谢谢!你真是这方面的专家呀,相关知识太丰富了!
我这两天也了解了下 HD 钱包,发现它相比单一的比特币地址 /私钥方式,在保护隐私方面很强,但是从安全性上来说,似乎两者不相伯仲,对于单一的地址 /私钥方式,只要私钥丢失了,那比特币也没了;同样对于 HD 钱包来说,如果助记词丢失了,后果是一样的。不知我这么理解对不对? 而且如果不考虑保护隐私这一块,单一的地址似乎还有个「好处」,就是可以把找零都转回同一个地址,便于随时在网上查看自己的交易流程,避免每次都登录钱包查看。 你还提到私钥导入采用复制粘贴有安全隐患,这个风险的确是存在!谢谢提醒! 不过我特意去看了下私钥的文本,数了数一共 51 个字符( WIF 格式),那手动一个个输入应该也不慢,这样就可以大大降低风险了吧(当然还是会存在键盘被木马软件监控的风险)。 话说我现在不太敢随便转币了,还是想一次性把原始地址导入本地钱包,感觉这样更稳妥些。 |
27
acess OP |
28
acess OP “HD 钱包相比单私钥钱包在保护隐私方面很强”——额,怎么说呢,比特币一直都是伪匿名的,太透明了,隐私性比较差,唯一的隐私性只剩[地址]和[真实身份]不直接挂钩。
|
29
acess OP 地址用一次就换,收·款时换新收款地址,付·款时换新找零地址,这个其实是中本聪的想法,不过换地址这种隐私保护措施基本上也只是聊胜于无罢了。就比如……你能想象,支·付·宝给别人付·款后,可以翻看[对方]最近的几笔交易(哪怕只能看到数额)么?比特币不就类似于这样么。
|
30
acess OP “便于随时在网上查看自己的交易流程,避免每次都登录钱包查看”——你也意识到了,这在隐私上其实是巨大的缺陷。而且即便是用了 HD 钱包,很多时候你懒得自己搞全节点来本地查询,只能依赖别人建好的索引(比如区块浏览器、钱包服务器)来查询,于是你还是把地址(乃至于 xpub 主公钥,用 xpub 可以推导出下级所有子地址)发送过去了,然后服务器就可以记录下来,知道这一组地址实际上都对应同一个身份,甚至还可以进一步关联到 IP 地址,乃至真实身份(有些钱包是可以 KYC 实名验证的)。
|
31
acess OP 如果你用了全节点(最好再结合 Tor,广播交易时也匿名),把整个区·块·链账本都同步回来了,这样查询交易时都在本地进行了,不会透露任何信息给他人,于是匿名性 /隐私性可以上升一个水平,但是全节点毕竟太大太笨重,很多人都不愿意搞。(而且 Bitcoin Core 全节点实际上为了节省磁盘空间开销,很多索引都没有,所以基本上只能用最笨的办法——扫描历史区块,来找出与钱包有关的交易,非常慢。更糟糕的是,如果你开启了修剪功能,实际上就是简单地删掉旧区块文件,那么就直接“无米之炊”了,钱包里没有的交易,想扫描查询,压根不行,除非从头再同步一次。轻钱包服务器,还有区块浏览器,它们都是提前建立好索引的,所以才可以秒速出查询结果)
另外,万一有什么紧要关头全节点暂时同步不上(或者出了什么软硬件故障),也蛋疼。 |
32
acess OP “那手动一个个输入应该也不慢,这样就可以大大降低风险了吧”——这个我感觉意义不大,纯粹是更麻烦了。
“话说我现在不太敢随便转币了,还是想一次性把原始地址导入本地钱包”——你可以在离线环境里,用 blockchain . info 官方提供的工具把私钥解密出来,然后导入 Electrum ;再用联网的设备运行另一个 Electrum,新建钱包,选择导入比特币地址。 还有,blockchain . info 这种自己掌控私钥的钱包,其实本质上和你说的“本地钱包”区别并不太大,实际上就是把“本地钱包”的软件代码跑在了浏览器里面。 |
34
Andnot 2021-01-09 17:19:34 +08:00 via Android
@acess 你这个类比好形象呀,的确,比特币的匿名性是有一定问题的,不过好在不会太影响资金的安全性。
|
35
Andnot 2021-01-09 17:52:48 +08:00
@acess 呃,为何手动输入密钥的安全性也没有提高呢,是因为可能存在的键盘监控软件吗?
「你可以在离线环境里,用 blockchain.info 官方提供的工具把私钥解密出来,然后导入 Electrum ;再用联网的设备运行另一个 Electrum,新建钱包,选择导入比特币地址。」——这个应该就是冷钱包方案吧?(联网的 Electrum 导入地址,仅仅具备查询功能,从而提高安全性。) 关于在线钱包,我现在用的 Blockchain 服务应该就是你说的这种,网站上叫做「 Imported Bitcoin Addresses 」,它还提示我让我将这些「 Imported funds 」转入 wallet 。我觉得网站应该是有我的私钥的,因为每次交易都是自动完成,也没让我自己再输入私钥签名。 我比较关心的是安全性,这种钱包虽然与本地钱包区别不大,但应该还是有安全隐患的吧,比如网站数据库被黑了导致私钥泄漏之类。 但使用本地钱包我也有担心,一个是 Electrum 这类钱包软件曾爆出过漏洞,一个是我个人电脑的安防强度肯定比不上 Blockchain 这类专门做加密币的,从保存数据方面风险可能会更大。 我能想到的最安全的方案,是在一台离线电脑上用 Electrum 新建两个冷钱包,第一个钱包导入私钥,然后全部转给第二个钱包,交易签名什么的全程断网操作,然后用另一台联网电脑,将签名后的交易广播出去,静等完成转账。 不知你有没有更好的建议? |
37
acess OP @Andnot
我前面说过了,blockchain 钱包虽然跑在浏览器里,但它本质上和 Electrum 这种“本地钱包”区别不大,主要区别就是它跑在浏览器里。 blockchain 服务器确实保存了私钥,但是是加密保存的。这和[离链钱包](这个术语现在也有点过时了,因为闪电网络也是离链,但通道仍然是用户自己掌控的,和掌控私钥性质一样)或者叫[托管钱包]( custodial wallet,用户不掌控私钥,只有一个账户,资金控制权完全在钱包服务商手里)性质还是不一样的。不过我前面也说了,像 blockchain 这种网页钱包,相当于钱包代码每一次都从网上远程加载,万一网站被黑了,黑客即便不能直接偷到明文私钥,也仍然有可能用恶意代码替换掉正常的钱包代码,所以我才说这种钱包安全性较差。 就算是 blockchain 网站的安全性做得好,归根到底私钥还是会在你的浏览器里解密成明文。 所以说,如果你的电脑环境不安全,比如浏览器有恶意插件,那还是完蛋。 (当然,如果说到浏览器恶意插件,其实想象空间还可以很大——即便是冷钱包,不能直接偷币,恶意浏览器插件也仍然可以尝试偷换交易对象的收款地址,比如交易所的充币地址) Electrum 确实爆过几个大漏洞,不过后来都修补了。而且冷钱包即便爆了漏洞也无法直接偷币。还有,当时爆那个钓鱼漏洞时,因为我用的是 Electrum Personal Server 对接了自己的 Bitcoin Core 全节点,所以压根就没受到这个漏洞的影响,是事后才看到这个消息。 还有,冷钱包实际上是两台设备分工的。 断网设备保存私钥,从来不联网,但是仍然需要通过二维码等手段来和外界交互数据,它负责检查交易内容、对交易内容签名; 联网设备不保存私钥,只保存地址或 xpub 主公钥,可以联网同步账本内容(交易记录、余额),可以展示收款地址,可以制作未签名交易,交给冷端检查、签名后,再广播出去。 |
38
Andnot 2021-01-11 14:38:57 +08:00
@acess 谢谢你的回复!
Blockchain 加密保存用户的私钥,这个加密过程就是用网站的登录密码加密的吧,今天看了一篇文章,就讲到 Blockchain 是如何不保存用户的明文密码的: https://www.8btc.com/article/25680 如果真是这样的话,只要不发起交易,私钥以加密方式保存在 Blockchain 网站上应该也是足够安全的吧? 你提到浏览器的安全问题,这倒是个无法忽视的安全风险,虽然我从来只用 Chrome 的官方版本,但时不时也都会爆出一些大大小小的安全漏洞,这点确实不如专门的软件来的安全,可能那种区块链专用浏览器能够好些? 冷 /热钱包的解释简洁易懂,再次感谢! |