V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX  ›  acess  ›  全部回复第 35 页 / 共 110 页
回复总数  2188
1 ... 31  32  33  34  35  36  37  38  39  40 ... 110  
2020-11-05 18:10:54 +08:00
回复了 chenpingan 创建的主题 Bitcoin BTC 现在适合入场吗
@chenpingan 没有硬件钱包,也可以用另一台不联网的设备安装 Electrum 作为冷钱包端,私钥(应该说是 HD 种子 /助记词)自始至终都不会“触网”,交易信息是通过二维码在两台设备间传递的。
但是这样有个问题貌似一直没修,就是二维码装不下体积太大的交易,Electrum 也没有拆分成多个二维码来绕开问题(啊,FLOSS 开发者的倔强+1 )。
2020-11-05 18:08:14 +08:00
回复了 chenpingan 创建的主题 Bitcoin BTC 现在适合入场吗
@chenpingan 对接硬件钱包的时候,助记词的生成也是硬件钱包完成的,然后 6 楼说的助记词不标准不通用、以及没有给 3 开头的 P2SH 封装隔离见证地址这个两个问题,就都不存在了,在这个场景下 Electrum 并没有那么倔强……
2020-11-05 18:06:19 +08:00
回复了 chenpingan 创建的主题 Bitcoin BTC 现在适合入场吗
@chenpingan 不过有一说一,Electrum 历史上爆过好几次大漏洞,最近的一次是钓鱼漏洞,影响持续到现在。虽然理论上弹窗钓鱼你不理他就没事,但总是有人会中招的,毕竟迷惑性太强了,钱包窗口自己弹出来的。
我自己的用法是用 Electrum Personal Server 对接 Bitcoin Core 全节点,所以当时爆钓鱼漏洞的时候我不去看新闻甚至不知道有这回事,完全没受影响;其次就是对接硬件钱包,这样 Electrum 只是硬件钱包的“前端”或者说“热端”(硬件钱包则是“冷端”),电脑上是没有私钥的,但凡有转出动作都需要在硬件钱包自己的屏幕上检查通过才能签名交易。
2020-11-05 18:02:38 +08:00
回复了 chenpingan 创建的主题 Bitcoin BTC 现在适合入场吗
@chenpingan (单私钥)纸钱包啊?现在已经认为过时了,不推荐用了。
个人比较喜欢用 Electrum 。不过 Electrum 开发者也有点固执,有些地方让我感觉不爽。首先是助记词( HD 种子),不是通用的 BIP39 助记词而且他自己的 Electrum2.0 标准,和别家不通用;而且创建钱包时不给 3 开头的 P2SH 兼容隔离见证地址选项,只给 1 开头的 P2PKH 传统地址和 bc1 开头的原生隔离见证地址两个选项,然而前者每虚拟字节手续费最贵,后者有兼容性问题,老钱包(包括一些交易所的提币界面)不识别这种新设计的地址。
@githere shou dao hei qian 然后就是冻卡咯
2020-11-01 13:58:31 +08:00
回复了 dblpx 创建的主题 Android 关于两个 Android 程序同时访问麦克风的功能实现
@daozhihun
我现在用的 los17.1,是 Android 10 。

目前我只找到 ScreenCam 可以内录任何 app 和系统的声音,但是很蛋疼,详见:/t/659086#reply2

Android 10 提供内录音频的录屏 API,但是必须 app 主动声明允许才可以录。
我一直好奇有没有 xposed 之类的办法能解除这个限制。不过即便解除了,貌似还是不能达到 Android 6.0 上 SCR Screen Recorder 那种耳机播放+音频内录+麦克风同时录制这种完美效果(虽然 SCR 也是需要 root 的,但是它效果完美啊)。

不知道 Android 11 能不能搞定这个需求,听你说的,似乎是搞定了,但只能是系统 app 才能录,用户 app 仍然不行?(嗯,这样也基本够用了)

而且你说“app 去获取系统声音是谷歌严格禁止的”这个我也不明白,是出于安全隐私方面的原因,还是……版权方面受到了压力……什么的?

另外即便 Android 11 搞定了这个需求,肯定还有大量机器一时半会(甚至是永远)升级不到 Android 11……
/t/659086 Android 10 仍然不太行……
/t/720330#r_9708050 Android 11 也许有改观
2020-11-01 13:53:44 +08:00
回复了 acess 创建的主题 Android 录屏同时内录音频, Android 10 似乎仍然不太行
(我之前还发过帖子 /t/646170
目前我只找到 ScreenCam 可以内录任何 app 和系统的声音,但是很蛋疼,必须刷 magisk 模块才能录,而且录了就不能同时播放(外放或耳机),最近发现用着还有 bug:有的时候即便没在录制,拔掉耳机就不外放了(不确定是不是和 ScreenCam 的 magisk 模块有关);而且 ScreenCam 停止录屏的时候会卡上几十秒,有时还会提示崩溃,所幸录出来的音视频数据还是完好的。
ScreenCam 提供魔改 ROM 的内录“后门”选项,但是我实测 los 上肯定是不能用的;(可能记错)而且小米上 screencam 貌似也不行,好像还是麦克风。
2020-10-31 22:58:31 +08:00
回复了 dblpx 创建的主题 Android 关于两个 Android 程序同时访问麦克风的功能实现
@daozhihun 借楼问一下音频内录(无论是系统还是 app ),感觉应该蛮相关的: /t/659086
其实现在这个状况一直让我失望,我只是偶尔会看游戏视频,但我感觉内录音频+玩家语音这个需求是非常合理的,不知道 Google 为啥从 Android 7.0 开始就各种拦路设卡,搞得连获取 root 权限后都不太能搞。
不知道 Android 11 在这方面有没有什么新动向呢?
多重签名,不知道楼主说的是哪种?我记得还是必须有第三方参与仲裁吧,用的是 2of3 多重签名。
2020-10-23 15:44:11 +08:00
回复了 Ficelle 创建的主题 Bitcoin 对于区块链和比特币想请教一下问题
提到 UTXO,我又想到白皮书里的 Merkle 树剪枝,实际上那个 Merkle 树剪枝是没意义的。

从根本上讲,比特币的区·块·链账本里只登记了“交易记录”,并没有登记“当前余额”,“当前余额”是从“交易记录”重放、推算出来的。中本聪的白皮书里把比特币的交易叫做“币”,听起来就好像与众不同了——“比特币没有账户!”
但是很显然,换一个名字叫,并不能绕过本质问题,比特币只是形式上没有账户而已,本质上并没有多大区别。全节点还是必须自己想办法把“当前余额”给重放、重建出来,也就是 UTXO 集合,这样才能对后续的交易进行验证。

从安全 /信任层面讲,如果新上线的节点不完整下载、验证整条区·块·链账本,那就可能受到恶意节点欺骗(回到白皮书本身去抠字眼,白皮书写的也只是“回收磁盘空间”,而不是“节约下载带宽”)。即使一个恶意节点没有挖矿算力,它也完全可以恶意地挑选 Merkle 树分支来进行恶意的裁剪,把本来没被花掉的币裁掉,或者把本来已经被花掉的币加回来(根据情况,可以直接加回来,也可以把当时直接花掉这个币的交易裁掉),等等,然后受骗的节点在验证交易时就会出错,和其他(没受骗的)节点出现不一致。如果恶意节点有挖矿算力,它还可以花掉从来就没存在过的币(实质上等于凭空造币,也就是通胀),然后这种交易也没有什么特征,因为有很多其他的交易也是来自于“不存在(整个分支都被裁掉)的交易”。

从效律上讲,很显然,维护一个独立的 UTXO 集合数据库,验证交易时就只需要对这个 UTXO 集合数据库进行查询、增删,不再需要回溯读取历史区块的内容。如果需要回溯读取历史区块内容,很显然效律相比而言就非常低下。(这里也可以看出来,UTXO 集合数据库在记录了区块高度的情况下,其实还是一个方便查询的索引,可以直接查到某个币 /交易是在哪个区块里面;只不过是在验证交易的时候,UTXO 集合本身就提供了需要的数据,所以就不太像是个索引了)
2020-10-23 15:29:20 +08:00
回复了 Ficelle 创建的主题 Bitcoin 对于区块链和比特币想请教一下问题
回头看 4 楼的帖子,我感觉“51%攻击是挖分叉链,让原本较短的分叉链反超之前的长链”这个有点不严谨……实际上 51%攻击还可以隐蔽地进行,可以私下里偷偷先挖好,等到明面上的交易完成(攻击方完成付款),再把更长的分叉链(攻击链)公开放出去,然后别的节点就会被迫丢弃之前的链,接受攻击链(首先是因为攻击链也没有违反规则;其次,如果不接受,对于当时没有在线、后来才上线加入网络的节点来说,它们无从分辨哪条链才是诚实链、哪条链是攻击链),最后攻击方的付款被强制撤回,收款方钱货两空。
2020-10-23 14:50:06 +08:00
回复了 Ficelle 创建的主题 Bitcoin 对于区块链和比特币想请教一下问题
实际上即便内存池里有交易,有的时候矿工仍然会挖空块。一般是因为 SPY mining,也就是 A 矿池假装成 B 矿池的矿工,从 B 矿池接收区块头、coinbase 交易等信息,这些信息不足以判断前一个区块是否合法,但是足够矿机暴力试错挖矿。然后 A 矿池的矿工就可以和 B 矿工站在同一个区块高度共同竞争挖下一个区块了。

完整下载、验证一个区块需要比较长的时间,只下载区块头等信息需要的时间就非常短,于是这里就有一个空当。这个时候,因为 A 矿池不知道前一个区块里有什么交易,所以不能更新 UTXO 集合、不知道内存池里哪些交易可以打包(要排除双花的情况,否则挖出来的区块就非法了),这个时候就只能挖空块了。

一般情况下这样不会出什么问题,如果 A 矿池不采取这个挖空块的策略,那他就不能在最新的区块后面延续挖新的区块,只能在同一个高度挖一个分叉,所以很显然 A 矿池还是采取挖空块的策略对自己更有利。
不过 2015 年的时候,BIP66 软分叉升级在部署时出了一点问题,SPY mining 因为没有完整验证上一个区块的内容就抢先挖,就放大了问题,导致网络出现比较长的分叉。

( BitMEX 博客上有篇文章总结了比特币的软分叉、硬分叉历史。不过我觉得“软分叉”“硬分叉”的概念本来就很混乱,一般是从共识规则被放宽还是被收紧来定义的,但是也有从其他角度定义的,比如兼容性改变,或者是网络实际状况等等;甚至还有人认为“共识规则放宽 /收紧”这个定义是 Blockstream 公司 /比特币核心开发组为了维护自己的利益才刻意强调的说辞)
2020-10-23 14:26:25 +08:00
回复了 Ficelle 创建的主题 Bitcoin 对于区块链和比特币想请教一下问题
没有供打包的交易,当然也可以挖矿出块,这个时候区块里只有一个给矿工自己发奖励的 coinbase 交易,一般被叫做空块。

创世区块比较特殊,它是直接硬编码写到全节点软件代码里的,而且创世 coinbase 交易生成的 50BTC 并没有进入 UTXO 集合,这 50BTC 等于不存在。

coinbase 交易实际上没有输入,它的输入内容是可以随便写的,中本聪就写了那句著名的报纸头版头条,有人说这是对金融危机的回应,也有人说这可能就是个时间戳而已,证明这个区块是那天之后才挖出来的,所以可以证明比特币挖矿是公平的、证明中本聪没有在发布比特币之前私自偷偷预挖币。

这里还有两个梗,都是关于创世地址。首先,有些比特币开发者认为 1A1z 开头的那个创世地址其实是一种误解,认为创世区块并没有地址,因为创世交易的输出是一个裸公钥 P2PK 输出,而不是现在常见的公钥哈希 P2PKH 输出,虽然这两种输出都是同一个私钥控制,币的所有权一模一样,但是技术细节并不一样。其次,创世区块里的 50BTC 等于不存在,不能被花掉,但是原则上创世地址如果用私钥签名交易,它收到的其他币都是可以花掉的。不过也有人猜测,创世区块里的那个公钥也许(只是也许)并不是从某个私钥推导出来的,所以没有对应私钥。

Sergio Demian Lerner 在这方面做过一些研究,可以去 bitcointalk 论坛搜搜他的帖子。
2020-10-23 14:16:08 +08:00
回复了 Ficelle 创建的主题 Bitcoin 对于区块链和比特币想请教一下问题
@Ficelle
《精通比特币》第二版是有中文版的,随便一搜就能找到。

内存池里面是待打包的交易,虽然一般全节点没有对接算力、不能独立挖矿出块,但是默认也会接受、验证、转发网络上广播的交易,交易在(被矿工)打包进区块之前,就暂存在内存池里。(所以说实际上交易数据在网络上会被重复传播两遍,然后才有 compact block 之类的技术,只给其他节点传输一个“骨架”,让其他节点从内存池里自己把对应的交易找出来、把完整区块重新组装出来,这样就可以设法大幅省掉重复传播第二次的开销、加快区块传播、避免出现带宽占用峰值)

内存池是每个节点各自维护的,很显然全节点完全可以自由选择要让哪些交易进入内存池(当然,一般不会选择非法交易,原因楼上说过了)、还可以选择优先打包哪些交易(一般是按照矿工费率 sat/vB 排序,优先打包矿工费付得多的;有些矿池提供“加速”,就是在付费后专门把对应的交易“插队”到前面,不过对于用户来说,我觉得加速器价格太贵,还是直接用 RBF 来追加手续费比较好);而且很显然不同节点的内存池内容完全可以不一样。
内存池里面的“零确认”交易不进链确认就是不作数的,只有进链确认了才算数。

内存池里面积压的交易,默认是有过期时间的,过期了就会丢弃出去。不过每一笔交易本身是没有过期时间的,所以即便因为长时间拥堵暂时被某些节点丢弃了,也随时可以重新广播出去,然后又会进入内存池、等待打包进链。
2020-10-23 00:20:29 +08:00
回复了 Ficelle 创建的主题 Bitcoin 对于区块链和比特币想请教一下问题
看到第 2 个问题,还有楼上说的 UTXO,感觉我可能说得很罗嗦、又没有 get 到你要问的点。

其实《精通比特币第二版》第十章“挖矿与共识”,尤其是“交易的独立检验”这一节应该就是你要找的答案。
2020-10-23 00:02:10 +08:00
回复了 Ficelle 创建的主题 Bitcoin 对于区块链和比特币想请教一下问题
3.上面已经说了,奖励不止是新币,还有交易手续费。
但是理论上(考虑矿工只是单纯逐利、甚至“不择手段”)貌似是只要有交易手续费参与,就不稳定,很多年前 Arvind Narayanan 有篇论文说了这个问题。我了解不多,只看了摘要图,简单说,如果内存池里可以被打包进区块赚到的交易手续费太少,而前一个区块里已经被别人打包赚走的交易手续费又很多,那逐利的矿工就可能把别人已经打包的交易重新拿出来,自己挖一条分叉链,把本属于别人的手续费收入据为己有,同时为了笼络其他矿工和自己同流合污,他可以只拿一部分手续费,另一部分分给愿意同流合污的其他矿工,由此让自己的分叉链获得算力支持。
这样一来,理论上,矿工就不会老老实实地正常延长区·块·链账本了,导致整个网络的动荡不稳。
2020-10-22 23:53:35 +08:00
回复了 Ficelle 创建的主题 Bitcoin 对于区块链和比特币想请教一下问题
关于 2 楼的问题,交易是谁发送的?

答案是任何人都可以发送,都可以转发,不需要是全节点(别人也没办法知道你是不是全节点),哪怕你就是调用 netcat 直接连接上比特币 P2P 网络的一个节点也可以,但是正常的全节点会检验交易是否合法,拒绝转发非法交易。但是很显然,只有掌控私钥的人能签名交易。

不过,给矿工发奖励的 coinbase 交易是特殊的,它没有输入,内容是矿工自己写的——当然,这里也必须符合规则,奖励总额不能超过新币(被叫做“区块补贴”block subsidy,当前是 6.25BTC )+手续费。
奖励可以少于新币+手续费,但是正常情况下追求利益最大化的矿工很显然不会这样挖,只有偶尔软件出问题的时候会产生这种区块(仍然是合法区块),然后这样也等于是让对应量的比特币被永久销毁了。

另外,交易除了“合法性规则”之外,还有“标准性规则”( standardness rule ),违反标准性规则的交易(也就是非标准交易),仍然可以是合法的,这种交易,全节点不会转发,(对于矿池或 solo 矿工来说)默认也不会打包进自己要挖的区块,但是如果别人打包进去了,也不会拒收相应的区块。
2020-10-22 23:44:11 +08:00
回复了 Ficelle 创建的主题 Bitcoin 对于区块链和比特币想请教一下问题
第 2 个问题,还有一点,很显然,验证全网所有交易(尤其是历史交易)负担非常重,显得很浪费。
但是这个问题据我所知几乎无解。
众所周知区·块·链最鸡肋的地方,就是它对外部真实世界无能为力,如果输入了假数据,它无法明辨是非。
如果你觉得多条链就能解决问题,我想说,对于链 A 来说,只要它不去跑 B 全节点验证 B 链的内容,那 B 链对他来说就是“外部”,然后 B 链上发生违规行为,A 链就无能为力。

除此之外还有一个概念“欺诈证明”( fraud proofs ),可以追溯到白皮书本身,白皮书描述 SPV 时,不是提到可以用警告机制,来引导 SPV 、让它们不要跟随非法链(哪怕非法链积累工作量更大)么?所以说,只要把非法链里面具体违反规则的证据亮出来,SPV 看到了,就可以自己得出毋庸置疑的结论,知道这条链是非法的,就不会跟随了。
比如一条链里如果把一个币花了两次,这样其实就是另一种形式的通胀、凭空造币,那只要把这两个交易的内容,还有 Merkle proof (还有区块头链)拿出来,SPV 看到这个证明就会确信这条链有非法内容,不能跟随。
但是这个概念在很多年前就被比特币核心开发者弃坑了,理由是如果制造非法链的人把违反规则的地方藏起来,那就拿不出对应的欺诈证明。如果要把类似于“某个高度的区块无法完整下载”这个消息本身作为欺诈证明 /警告消息,那也是没有意义的,因为收到这个警告消息的人,必须自己亲自去试试看那个区块能不能完整下载,然后,就产生了拒绝服务攻击,可以恶意生成假警告、让其他人去尝试下载本来完全能正常下载的区块,这样最终的、最坏的结果,就是 SPV 还是把整条区·块·链下载回来了,这样还叫什么轻量级客户端呢,还不如从一开始就老老实实跑全节点。
2020-10-22 23:32:08 +08:00
回复了 Ficelle 创建的主题 Bitcoin 对于区块链和比特币想请教一下问题
2.最早定义的矿工=节点,节点会完整验证全网所有交易,这样才能确保账本里没有违规行为,比如打破 2100 万币总量上限凭空印 100 万币,再比如无视数字签名直接把别人的币抢过来划到自己头上。

这些违规行为并不是受什么数学定理或者自然定律而做不到,想要制造此类非法区块,并没有任何难度,顶多就是挖矿要消耗算力。

但是如果区块里有了这些违规行为,别的节点看到这样的区块,检验时就必定会发现违反规则,然后拒收,拒绝在这个非法区块上继续延长区·块·链账本。
这样一来,虽然非法区块被挖出来了,但是没人承认,会被抛弃掉,然后在这个非法区块上付出的算力就付之东流了,这样等于是惩罚了挖非法区块的行为。

每个节点都知道别人会这样验证,知道自己如果打破规则胡乱写交易,自己付出的算力(背后是货真价实的电费)会付之东流,所以最后的结果就是每个人都“老实”了。而且,这是通过博弈达成的,每个节点是出于自己利益的考虑而“老实”,而不是什么道德啦法律啦之类的原因。


后来,矿工和节点实质上分离了。这个原因也挺复杂,有技术层面的原因,比如网络延迟,现在比特币自然产生的孤块分叉少其实是因为用了中心化的 FIBRE 服务器;还有挖矿 /共识规则本身,对小算力 solo 矿工极不友好,所以才有提出 GHOST 之类的机制试图缓解这个问题;也有经济层面的原因,也就是规模经济,马太效应,最后垄断。

矿工加入矿池,甚至压根就不在乎矿池给他们发的任务是啥;
(全)节点则失去了算力,只能监视网络,虽然这样不会跟随非法链(因为全节点可以检验出来是否违反规则),但是如果算力搞事了(比如 51%攻击,注意,这里认为 51%攻击并不能打破规则、把非法的变成合法的),或者干脆跑路了、没算力挖矿延续区·块·链账本了,那从技术上讲全节点只能干瞪眼,或者就“耍流氓”改规则改挖矿 /共识算法。


还有,你应该也注意到了,“规则”这个东西本来就是中本聪钦定的,是人为的,所以某种程度上也是主观的。
这里其实就有争议,算是“政治话语权”上的争议吧。
有人认为只有跑了全节点的用户才是真正的用户,基于这个前提假设,51%攻击也是不能打破规则的(但攻击方看不爽的链,51%攻击可以扰乱其正常运作,使其停摆、陷入混乱),所以,持有比特币 /愿意接受比特币支付,同时又自己跑全节点验证交易的用户,也就是所谓的“经济上的大多数”,才是说话算数的;
有人就不同意,认为按照白皮书和中本聪本人的发言,用户不需要跑全节点,SPV (其实 SPV 并没有能力验证交易有效性,它是盲目跟随算力的)才是真正的用户,只有矿工 /算力才是真正说话算数的;全节点没有算力、不能出块,所以只能干瞪眼。
1 ... 31  32  33  34  35  36  37  38  39  40 ... 110  
关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   4722 人在线   最高记录 6679   ·     Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 · 35ms · UTC 01:15 · PVG 09:15 · LAX 18:15 · JFK 21:15
Developed with CodeLauncher
♥ Do have faith in what you're doing.