比特派的官网地址是什么|如何获得比特币私钥

作者: 比特派的官网地址是什么
2024-03-09 18:23:29

从Bitcoin Core 导出私钥 - 知乎

从Bitcoin Core 导出私钥 - 知乎首发于互联网支付杂思切换模式写文章登录/注册从Bitcoin Core 导出私钥梁川​互联网金融话题下的优秀答主比特币项目官方 提供的 Bitcoin Core 是很多人入门Bitcoin的第一个钱包。但是由于Bitcion Core 钱包与Electrum等钱包遵循的协议(BIP,比特币改进协议)不同,因此围绕Bitcoin Core钱包私钥导出问题产生了一堆。最近接连有几个人问起:1、备份了Bitcoin Core的wallet.dat文件,怎样恢复出私钥?2、将从Bitcoin Core 使用 dumpwallet 或 dumpprivkey 命令得到的私钥(包括密语种子、主密钥extended private masterkey),导入 Electrum等钱包,为何钱包余额为零?3、怎样从Bitcoin Core 导出私钥,并导入到Electrum 钱包?由于Bitcoin Core 支持BIP32协议,其对应的衍生路径(Derivation Path)为 m/0'/0' , 其对应的地址称之为硬化地址hardened addresses。值得强调的,Bitcoin Core并不支持助记词 mnemonic方案。Electrum之类的钱包,虽然支持BIP32,但其衍生路径一般为:m/44'/0'/0',因此直接将Bitcoin Core导出的密语种子或主密钥( extended private masterkey)导入到Electrum中,由于衍生路径不同,得到的地址、私钥也不相同,最终表现为钱包余额为零。那么从Bitcoin Core中导出私钥正确姿势是怎样呢?从备份wallet.dat恢复钱包文件以下以windows下为例,其他同理。1、从 Bitcoin.org 下载官方客户端 并安装请务必从http://Bitcoin.org 下载Bitcoin Core,以保证资金的安全2、启动Bitcoin Core图形界面(bitcoin-qt.exe)3、正常进入后,不用等同步,退出bitcoin-qt4、将 %appdata%\bitcoin\wallets 下的wallet.dat 重命名 为wallet.dat.orig这里 %appdata% 是 C:\Users\用户名\AppData\Roaming请注意,如果不是全新安装的Bitcoin Core,请务必备份 原wallet.dat。5、拷贝备份的wallet.dat到%appdata%\bitcoin\wallets 下6、重新启动Bitcoin Core图形界面导出钱包文件1、点击菜单项 窗口(Window)->控制台(Console),进入控制台2、解锁钱包(如果设置了钱包密码,必须先解锁)walletpassphrase "YOUR_WALLET_PASSWORD" 6060为解锁钱包60秒注意,如果设置了密码解锁成功,会提示 null;如果失败,会有错误信息。3、导出钱包dumpwallet 'd:\mywallet20210112.txt'

或者

dumpwallet d:/mywallet20210112.txt

或者

dumpwallet d:\\mywallet20210112.txt注意:由于是console,因此要指定导入路径,或者用单引号”避免转义,或者用 \\转义,或者 用 / 。导出的文件中会包含如下重要信息:主密钥( extended private masterkey)# extended private masterkey: xprv9s21ZrQH143K3JQSiGssAtDC3Md3x7XZLA32TcnMvXQFFfLKDrN2QDd8VzFu482kkaFMfKpQLBGRtAi5r7TespySzuTcNTmA2GpP6rYFqN8搜索hdseed=1 为的哪一行,为钱包的密语种子KxgVjtJV33FmMQun3v98drokcvjh2dvxrS3oHEmMQRV132Y8GQWo 2021-01-12T03:27:05Z hdseed=1 # addr=bc1qyujqnktx2h86zqwzy3ppe9m05aqmfp6slp0pmn以上例子 KxgVjtJV33FmMQun3v98drokcvjh2dvxrS3oHEmMQRV132Y8GQWo 就是所谓的钱包密语种子,由钱包密语种子可以衍生生成主密钥( extended private masterkey)及其他子私钥、公钥、地址。可以使用Coleman’s BIP39 tool https://github.com/iancoleman/bip39 验证生成导出文件的相关信息在 Coleman’s BIP39 tool 工具中BIP32 Root Key:输入hdseedDerivation Path:选择BIP32Client:Bitcoin CoreBIP32 Derivation Path: m/0’/0′可以看到,在 Derived Addresses 生成的私钥等信息与导出文件完全相同。4、得到对应地址的私钥如果知道曾经用过的Bitcoin Core的公钥地址,可以直接在导出文件中搜索,对应行的第一列就是对应地址的私钥。如果不记得对应的地址,要得到最近接收过BTC的活跃地址,可以在console中输入:listreceivedbyaddress 0 true

listaddressgroupings在Electrum中导入1、从 Electrum.org 下载 Electrum并安装2、启动Electrum,创建空钱包3、在安装向导的“创建新钱包”,选择“导入比特币地址或私钥”4、在安装向导的“导入比特币地址或私钥”输入框,输入 私钥,稍等同步完,可以看到对应地址的余额,也可以转账。注意:Electrum中,可以直接导入Bitcoin Core的的密语种子、主私钥。导入方法:在安装向导的“创建新钱包”,选择“标准钱包”,选择“我已经有一个密语种子”可以导入hdseed=1的密语种子。选择“使用主密钥(主公钥或主私钥)”可以导入主密钥( extended private masterkey)。当由于衍生路径的不同,导入后生成的私钥和地址,与通过dumpwallet 导入的Bitcoin Core的私钥并不相同。因此如果需要操作原有的地址的余额,请采用“导入比特币地址或私钥”。如果想沿用原有主私钥或密语种子,但使用权限的钱包,可以采用创建“标准钱包”的方案。再次强调一下:以上操作过程,请一定主要备份wallet.da文件,务必保证操作系统安全。对新手,不熟悉Electrum操作的情况下,请慎用 Electrum的 Sweep 功能,有很多新手因为通过Sweep 导入私钥到Electrum中,导致永久丢失币。发布于 2021-01-12 12:18数字货币钱包电子钱包比特币 (Bitcoin)​赞同 22​​1 条评论​分享​喜欢​收藏​申请转载​文章被以下专栏收录互联网支

如何生成比特币地址和私钥? - 知乎

如何生成比特币地址和私钥? - 知乎切换模式写文章登录/注册如何生成比特币地址和私钥?Peter 王广忠程序员,专业区块链讲解员这集来聊如何生成一个比特币钱包,具体来说包含两项:地址和私钥。文末的参考资料给出了详细的操作步骤,我们这里的内容会比较概要,主要是帮助大家理解公钥密码学和钱包生成过程的关系,钱包地址和比特币私钥的关系。生成私钥生成钱包要从生成私钥开始,钱包地址可以通过私钥运算出来。选择私钥的过程就是在一个限定范围内,随机选择一个数。那么这个范围是什么呢?答案非常简单,第一,私钥必须是32个字节,也就是说是32乘以8位的二进制数。实际使用中,私钥可以表示为二进制格式、八进制格式、Base64格式、WIF格式或者助记词格式。不管什么样的格式,底层都对应相同的256位二进制数。第二,私钥必须是正数并且小于 FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEBAAEDCE6AF48A03BBFD25E8CD0364141,这是一个非常大的数了,绝大部分的256位二进制数都要比它小。那么为什么会有上面的限制范围呢?这是因为比特币通过私钥运算公钥的时候会使用一套名为 ECDSA 的签名算法,全称是椭圆曲线数字签名算法。ECDSA 还可以选择不同的曲线,比特币选择的曲线被叫做 secp256k1。签名算法决定了私钥的选择范围。生成私钥的时候唯一要考虑的就是安全问题。例如,通过 Python 语言 random.getrandbits(256) 就可以生成256位的随机数,就可以当私钥用了,但是这样生成的随机性其实只取决于生成时间,所以如果攻击者能够猜到你生成这个私钥的大致时间就会相对容易的通过暴力搜索的形式获得私钥。而采用 secrets.randbits(256) 就比较安全一些,因为随机性取决于系统上的一些不可复现的行为,即使我把自己的系统给你,你也不可能重新获得我的私钥。实际中,有人会到 https://www.bitaddress.org 上面生成私钥,这里的随机性取决于我们用鼠标在屏幕上随意滑动的轨迹。总之,私钥只要满足范围,并且保证别人肯定获取不到就可以了。计算公钥有了私钥就可以通过 ECDSA 算法来生成比特币公钥了。首先,我们需要把私钥传入 ECDSA 算法,这样得到的结果是一个64字节的整数,这个数是由长度均为32字节的一个点的 X 值和 Y 值拼接到一起得到的,例如,1e7bcc70c72770dbb72fea022e8a6d07f814d2ebe4de9ae3f7af75bf706902a7b73ff919898c836396a6b0c96812c3213b99372050853bd1678da0ead14487d7。接下来,由这个结果获得比特币的完整公钥是非常容易的,只需要在结果的最开头加上 0x04,也就是 041e7bcc70c72770dbb72fea022e8a6d07f814d2ebe4de9ae3f7af75bf706902a7b73ff919898c836396a6b0c96812c3213b99372050853bd1678da0ead14487d7。完整公钥看起来很长,所以可以压缩一下。我们知道公钥其实是一个点的 X 值和 Y 值拼接而成的,现在已知这条曲线,那么给定一个 X 值,只可能有正负两个 Y 值处在这条曲线上,所以我们可以从完整公钥里面把 Y 值剔除,只保留 Y 值的正负号。这样,如果以后需要的话,我们就可以很容易的运算出 Y 值来了。具体的做法是这样的,我们从完整公钥之中取出 X 值,如果 Y 值的最后一个字节是偶数,那么在 X 值的开头添加 0x02。如果 Y 值的最后一个字节是奇数,则在 X 值的开头添加 0x03。所以,我们当前情况下得到的压缩公钥就是 031e7bcc70c72770dbb72fea022e8a6d07f814d2ebe4de9ae3f7af75bf706902a7。这就是计算公钥的过程,主要就是对私钥进行了椭圆曲线运算。以前的钱包软件通常会使用完整公钥,而现在大部分钱包都使用压缩公钥了。获得地址比特币的地址是通过公钥进行了一系列的转换而获得的,其中主要的是进行了多重的哈希运算。第一步,对公钥进行加密。这里的公钥既可以是完整版,也可以是压缩版,我们选择压缩版。有了公钥之后,对公钥进行两次哈希运算,第一次通过 SHA-256 算法得到运算结果后,对结果再进行一次 RIPEMD-160 运算,最终得到的结果就是所谓的加密版的公钥了453233600a96384bb8d73d400984117ac84d7e8b。第二步,对加密版公钥添加网络标识字节。比特币一共有两个网络:主网和测试网。如果我们需要生成一个主网地址,就要在加密版公钥开头添加 0x00,得到的结果是 00453233600a96384bb8d73d400984117ac84d7e8b。第三步,添加校验值。校验值是通过对第二步得到的结果运行两次 SHA-256 哈希运算,然后取最终哈希值的前四个字节得到的,表示成十六机制就是 512f43c4。把这个校验值添加到第二步结果的末尾,得到的就是钱包地址了,也就是 00453233600a96384bb8d73d400984117ac84d7e8b512f43c4。有了校验值,钱包软件就很容易帮我们判定地址有没有填错或者损坏了。但是,很多时候我们看到的钱包地址不是用十六进制表示的,而是用 Base58 格式,所以看起来可能是这个样子 17JsmEygbbEUEpvt4PFtYaTeSqfb9ki1F1。总结最后来总结一下,生成钱包的过程主要分了这么几步:第一步,生成一个32字节的私钥。第二步,通过椭圆曲线签名算法由私钥获得公钥。第三步,公钥经过一系列的转换得到钱包地址。注意,转换过程中采用了不可逆的哈希运算,所以从地址是不能够反向运算出公钥的。参考:https://medium.freecodecamp.org/how-to-create-a-bitcoin-wallet-address-from-a-private-key-eca3ddd9c05fhttps://medium.freecodecamp.org/how-to-generate-your-very-own-bitcoin-private-key-7ad0f4936e6c编辑于 2019-01-08 10:55比特币 (Bitcoin)​赞同 74​​5 条评论​分享​喜欢​收藏​申请

一文读懂比特币私钥、公钥、钱包地址的来历和关系 - 知乎

一文读懂比特币私钥、公钥、钱包地址的来历和关系 - 知乎首发于每天学点区块链切换模式写文章登录/注册一文读懂比特币私钥、公钥、钱包地址的来历和关系景辰对比特币熟悉的朋友一定都知道,买卖比特币最后都是通过一个钱包地址来实现的,就像我们日常使用的银行卡卡号,我们随便找一个比特币的钱包地址,大家看一下:1QCXRuoxWo5Bya9NxHaVBArBQYhatHJrU7但是当谈到比特币的钱包地址是如何算出来的时候,可能就很少有人能够说清楚了。下面,景辰通过实际计算,来给大家讲解一下比特币的钱包地址是怎么来的,公钥、私钥是怎么来的,以及他们三者之间的关系。下面的过程你不一定懂得转换的原理,知道他们流转的过程就可以了。众所周知,比特币是建立在数学加密学基础上的,而不是像银行卡那样是基于信用的,基于信用体系的银行卡卡号我们都熟悉,是我们在向银行申请银行卡的时候银行给随机发的,那么比特币的钱包地址是怎么来的呢?在《比特币:一种点对点的电子现金系统》一文中,中本聪提到了用椭圆加密算法(ECDSA)来产生比特币的私钥和公钥。基于椭圆加密的原理,由私钥是可以计算出公钥的,再由公钥经过一系列数字签名运算就会得到比特币钱包地址。因为由公钥可以算出比特币地址,所以我们经常把公钥和比特币地址的说法相混淆,他们都是指的同一个概念,比特币钱包地址只是另一种格式的公钥,但是两者的外在表现形式是不一样的。那么我们就可以梳理出一个脉络了:私钥 —— 公钥 —— 比特币钱包地址从比特币私钥得到我们日常转账所用的比特币钱包地址总共需要九个步骤,中间用到了SHA256加密、RIPEMD160加密和BASE58编码。下面,我们以实际案例来模拟一下整个流程:第一步:生成随机私钥私钥是一个随机数,随机选取一个32字节的数,这个数的范围大小是介于1 ~ 0xFFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFE BAAE DCE6 AF48 A03B BFD2 5E8C D036 4141之间的一个数,为了方便后面的计算,我们随机生成一个合法的私钥:8F72F6B29E6E225A36B68DFE333C7CE5E55D83249D3D2CD6332671FA445C4DD3第二步:椭圆曲线算公钥生成了私钥之后,我们使用椭圆曲线加密算法(ECDSA-secp256k1)计算私钥所对应的非压缩公钥,生成的公钥共65字节, 其中一个字节是0x04,其中32个字节是X坐标,另外32个字节是Y坐标:公钥P.X:06CCAE7536386DA2C5ADD428B099C7658814CA837F94FADE365D0EC6B1519385公钥P.Y:FF83EC5F2C0C8F016A32134589F7B9E97ACBFEFD2EF12A91FA622B38A1449EEB第三步:计算公钥的SHA-256哈希值将上述公钥地址拼合,得到标准地址:0406CCAE7536386DA2C5ADD428B099C7658814CA837F94FADE365D0EC6B1519385FF83EC5F2C0C8F016A32134589F7B9E97ACBFEFD2EF12A91FA622B38A1449EEB对齐进行SHA-256哈希计算,得到结果:2572e5f4a8e77ddf5bb35b9e61c61f66455a4a24bcfd6cb190a8e8ff48fc097d第四步:计算 RIPEMD-160哈希值取上一步结果,进行RIPEMD-160计算,得到结果:0b14f003d63ab31aef5fedde2b504699547dd1f6第五步:加入地址版本号(比特币主网版本号“0x00”)取上一步结果,在前面加上16进制的00,即:000b14f003d63ab31aef5fedde2b504699547dd1f6第六步:计算 SHA-256 哈希值取上一步结果,进行SHA-256计算,可得:ddc2270f93cc84cc6869dd373f3c340bbf5cb9a8f5559297cc9e5d947aab2536然后,对以上结果再次计算 SHA-256 哈希值,得到:869ac57b83ccf75ca9da8895823562fffb611e3c297d9c2d4612aeeb32850078第七步:取上一步结果的前4个字节(8位十六进制)869ac57b第八步:把这4个字节加在第五步的结果后面作为校验位,将这4个字节加载第五步的结果后面,这就是比特币地址的16进制形态了:869ac57b000b14f003d63ab31aef5fedde2b504699547dd1f6第九步:用Base58编码变换一下地址对上一步的结果进行Base58编码,得到:1QCXRuoxWo5Bya9NxHaVBArBQYhatHJrU7这就是我们经常看到的传统意义上的比特币钱包地址了。以上步骤可以简化为下图所示:我们经常说的比特币公钥就是指的图中第二步所产生的结果,而HASH160指的是第四步RIPEMD160签名所产生的结果,由于RIPEMD也是一种HASH算法所以就统称为HASH160了,而我们常用的比特币地址就是经过BASE58编码后的结果。推荐往期阅读:区块链在交易发展演进中的地位区块链的地位 | 区块链的来源 | 比特币的概念 | 疯狂的ICO | 助力跨境支付发布于 2017-07-22 01:06区块链(Blockchain)比特币 (Bitcoin)椭圆曲线​赞同 76​​13 条评论​分享​喜欢​收藏​申请转载​文章被以下专栏收录每天学点区块链未名湖畔学

BitKan - Buy Bitcoin, Ethereum and Altcoins With Ease

an - Buy Bitcoin, Ethereum and Altcoins With EaseYou need to enable JavaScript to run this a

比特币入门教程 - 阮一峰的网络日志

比特币入门教程 - 阮一峰的网络日志

阮一峰的网络日志 » 首页 » 档案

上一篇:区块链入门教程    

下一篇:加密货币的本质    

分类:

理解计算机

⇐ 

 ⇒

比特币入门教程

作者: 阮一峰

日期: 2018年1月 4日

比特币(bitcoin)诞生于2008年的一篇论文。

一个署名为中本聪的人,提出了革命性的构想:让我们创造一种不受政府或其他任何人控制的货币!这个想法堪称疯狂:一串数字,背后没有任何资产支持,也没有任何人负责,你把它当作钱付给对方,怎么会有人愿意接受?

但是,狂想居然变成了现实。随后的几年,在全世界无数爱好者的支持下,比特币网络运行起来了,越来越多的人和资本参与,星星之火,终成燎原。刚刚过去的2017年,比特币迎来了爆发式的增长,从年初的1000美元,最高涨到了2万美元,全世界都为之震动,上到政府,下到普通百姓都在关注。事实就是比特币已经并将继续改变世界。

新闻媒体往往只关注它的火爆表现,忽视或者无法回答一些基本的问题。

比特币的原理是什么?

为什么这个无人管理的体系可以成功运作?

比特币交易的流程是怎么回事?

它与区块链又是什么关系?

下面,我尝试回答这些问题,希望帮助大家理解比特币。抛开技术细节,还是很容易解释的。

有一点说明,本文只讨论技术问题,不涉及如何投资比特币,更不会预测价格走势。事实上,我也不知道,如果我知道怎么发财,可能就不会在这里写博客了。

一、非对称加密

首先,理解比特币,必须理解非对称加密。

你可能听说过这个词,所谓非对称加密,其实很简单,就是加密和解密需要两把钥匙:一把公钥和一把私钥。

公钥是公开的,任何人都可以获取。私钥是保密的,只有拥有者才能使用。他人使用你的公钥加密信息,然后发送给你,你用私钥解密,取出信息。反过来,你也可以用私钥加密信息,别人用你的公钥解开,从而证明这个信息确实是你发出的,且未被篡改,这叫做数字签名(更详细的介绍请看《什么是数字签名》)。

现在请设想,如果公钥加密的不是普通的信息,而是加密了一笔钱,发送给你,这会怎样?

首先,你能解开加密包,取出里面的钱,因为私钥在你手里。其次,别人偷不走这笔钱,因为他们没有你的私钥。因此,支付可以成功。

这就是比特币(以及其他数字货币)的原理:非对称加密保证了支付的可靠性。

由于支付的钱必须通过私钥取出,所以你是谁并不重要,重要的是谁拥有私钥。只有拥有了私钥,才能取出支付给你的钱。(事实上,真实的交易流程稍有不同,私钥保证的不是取出支付给你的钱,而是保证只有你能把这些属于你的钱支付出去,详见后文。)

二、比特币钱包

对于比特币来说,钱不是支付给个人的,而是支付给某一把私钥。这就是交易匿名性的根本原因,因为没有人知道,那些私钥背后的主人是谁。

所以,比特币交易的第一件事,就是你必须拥有自己的公钥和私钥。

你去网上那些比特币交易所开户,它们会让你首先生成一个比特币钱包(wallet)。这个钱包不是用来存放比特币,而是存放你的公钥和私钥。软件会帮你生成这两把钥匙,然后放在钱包里面。

根据协议,公钥的长度是512位。这个长度不太方便传播,因此协议又规定,要为公钥生成一个160位的指纹。所谓指纹,就是一个比较短的、易于传播的哈希值。160位是二进制,写成十六进制,大约是26到35个字符,比如 1BvBMSEYstWetqTFn5Au4m4GFg7xJaNVN2。这个字符串就叫做钱包的地址,它是唯一的,即每个钱包的地址肯定都是不一样的。

你向别人收钱时,只要告诉对方你的钱包地址即可,对方向这个地址付款。由于你是这个地址的拥有者,所以你会收到这笔钱。

由于你是否拥有某个钱包地址,是由私钥证明的(具体的证明方法稍后介绍),所以一定要保护好私钥。这是极其重要的,如果你的私钥被偷了,你的比特币也就等于没了,因为他人可以冒用你的身份了,把钱包里面的钱都转走。

同样的,你向他人支付比特币,千万不能写错他人的钱包地址,否则你的比特币就支付到了另一个不同的人了。

三、交易过程

下面,我把整个流程串起来,看看比特币如何完成一笔交易。

一笔交易就是一个地址的比特币,转移到另一个地址。由于比特币的交易记录全部都是公开的,哪个地址拥有多少比特币,都是可以查到的。因此,支付方是否拥有足够的比特币,完成这笔交易,这是可以轻易验证的。

问题出在怎么防止其他人,冒用你的名义申报交易。举例来说,有人申报了一笔交易:地址 A 向地址 B 支付10个比特币。我怎么知道这个申报是真的,申报人就是地址 A 的主人?

比特币协议规定,申报交易的时候,除了交易金额,转出比特币的一方还必须提供以下数据。

上一笔交易的 Hash(你从哪里得到这些比特币)

本次交易双方的地址

支付方的公钥

支付方的私钥生成的数字签名

验证这笔交易是否属实,需要三步。

第一步,找到上一笔交易,确认支付方的比特币来源。

第二步,算出支付方公钥的指纹,确认与支付方的地址一致,从而保证公钥属实。

第三步,使用公钥去解开数字签名,保证私钥属实。

经过上面三步,就可以认定这笔交易是真实的。

四、交易确认与区块链

确认交易的真实性以后,交易还不算完成。交易数据必须写入数据库,才算成立,对方才能真正收到钱。

比特币使用的是一种特殊的数据库,叫做区块链(blockchain),详细的介绍请看《区块链入门教程》。本文只讨论交易如何写入区块链。

首先,所有的交易数据都会传送到矿工那里。矿工负责把这些交易写入区块链。

根据比特币协议,一个区块的大小最大是 1MB,而一笔交易大概是500字节左右,因此一个区块最多可以包含2000多笔交易。矿工负责把这2000多笔交易打包在一起,组成一个区块,然后计算这个区块的哈希。

计算哈希的过程叫做采矿,这需要大量的计算。矿工之间也在竞争,谁先算出哈希,谁就能第一个添加新区块进入区块链,从而享受这个区块的全部收益,而其他矿工将一无所获。

一笔交易一旦写入了区块链,就无法反悔了。这里需要建立一个观念:比特币不存放在钱包或其他别的地方,而是只存在于区块链上面。区块链记载了你参与的每一笔交易,你得到过多少比特币,你又支付了多少比特币,因此可以算出来你拥有多少资产。

五、矿工的收益

交易的确认离不开矿工。为什么有人愿意做矿工呢?

比特币协议规定,挖到新区块的矿工将获得奖励,一开始(2008年)是50个比特币,然后每4年减半,目前(2018年)是12.5个比特币。这也是比特币的供给增加机制,流通中新增的比特币都是这样诞生的。

你可能看出来了,每4年奖励减半,由于比特币可以分割到小数点后八位,那么到了2140年,矿工将得不到任何奖励,比特币的数量也将停止增加。这时,矿工的收益就完全依靠交易手续费了。

所谓交易手续费,就是矿工可以从每笔交易抽成,具体的金额由支付方自愿决定。你完全可以一毛不拔,一分钱也不给矿工,但是那样的话,你的交易就会没人处理,迟迟无法写入区块链,得到确认。矿工们总是优先处理手续费最高的交易。

目前由于交易数量猛增,手续费已经水涨船高,一个区块2000多笔交易的手续费总额可以达到3~10个比特币。如果你的手续费给低了,很可能过了一个星期,交易还没确认。

一个区块的奖励金12.5个比特币,再加上手续费,收益是相当可观的。按照目前的价格,可以达到100万~200万人民币。想想看,运气好的话,几分钟就能挖到一个区块,拿到这样一大笔钱,怪不得人们对挖矿趋之若鹜。

六、区块的扩容

《区块链入门教程》说过,比特币协议规定,平均10分钟诞生一个区块。区块的大小只有 1MB,最多只能包含2000多笔交易。也就是说,比特币网络每10分钟,最多只能处理2000多笔交易,换算一下,就是处理速度为3~5笔/秒。

全世界的比特币交易这么多,可是区块链每秒最多只能处理5笔,这已经成为制约比特币发展的一个瓶颈。

很早就有人呼吁,改革比特币协议,提升处理速度。这件事在2017年8月有了一点眉目,当时区块链发生了一次分叉,诞生了一个新协议,称为 Bitcoin Cash(简称 BCH)。这种新货币其他方面都与比特币一致,就是每个区块的大小从 1MB 增加到了 8MB,因此处理速度提升了8倍,手续费也低得多。该协议是对原有区块链的分叉,因此当时持有比特币的人,等于一人获赠了一份同样数量的 BCH。

BCH 等于创造了一种新货币,还有人提议,原始比特币的区块大小提升到 2MB,这称为 SegWit2x 。这个建议原定于2017年11月实施,但是最后一刻由于缺乏共识,就被取消了,目前还在讨论中。

七、点对点网络

比特币是一个全世界的开放网络,只要你有服务器,就能加入这个网络,成为一个节点。每个节点都包含了整个区块链(目前大概 100多 GB),并且节点之间时刻不停地在同步信息。

当你发生了一笔支付,你所在的节点就会把这笔交易告诉另一个节点,直至传遍整个网络。矿工从网上收集各种新发生的交易,将它们打包写入区块链。一旦写入成功,

矿工所在节点的区块链,就成为最新版本,其他节点都会来复制新增的区块,保证全网的区块链都是一致的。

最后,你所在的节点也拿到了最新的区块链,从而得知你早先的那笔交易,已经写在里面了,至此交易确认成功。

八、还有一个问题

写到这里,我就介绍完了比特币的基本知识,希望你已经明白了比特币是怎么回事。但是还有一个根本的问题,我没有回答:比特币的本质到底是什么?

说到底,比特币只是区块链的一条记录,是凭空生成的,为什么可以当钱用?举例来说,矿工获得12.5个比特币的奖励,其实就是区块链有一个记录:"xxx地址获得12.5个比特币"。正是这行记录,导致该矿工获得了大笔金钱。如果区块链突然增加了一条记录,记载你的地址获得了1000个比特币,你就真的会有1000个比特币。这到底是为什么?

这篇文章已经够长了,这个问题就留到下次再谈,欢迎关注本系列的最后一篇文章《加密货币的本质》。

九、参考链接

How Bitcoin works , by Timothy B. Lee

Bitcoins the hard way: Using the raw Bitcoin protocol, by Ken Shirriff

(完)

文档信息

版权声明:自由转载-非商用-非衍生-保持署名(创意共享3.0许可证)

发表日期: 2018年1月 4日

相关文章

2022.08.02: DNS 查询原理详解

通过 DNS 查询,得到域名的 IP 地址,才能访问网站。

2022.06.03: 字节序探析:大端与小端的比较

今天谈谈一个重要的计算机概念,大家可能都听说过它,但是很少深究,那就是字节序(Endianness)。

2022.02.04: 万兆家庭网络的时代

最近,我想将家里的网络设备,都升级到千兆。

2021.12.07: 为什么 Web3 与区块链有关

互联网迄今有两个阶段:Web 1.0 和 Web 2.0。

留言(162条)

Jaxure

说:

哈哈 最近阮老师集中研究这一块

2018年1月 4日 08:59

| #

| 引用

L.Rain

说:

引用Jaxure的发言:

哈哈 最近阮老师集中研究这一块

阮老师要出手了,哈哈

2018年1月 4日 09:25

| #

| 引用

binary

说:

"这个钱包不是用来存放比特币,而是存放你的公钥和私钥。软件会帮你生成这两把私钥,然后放在钱包里面。"

应该是生成这两把密钥

2018年1月 4日 09:34

| #

| 引用

zyg

说:

传说的去中心化呢~ 到头来还是矿工中心化~ 算力决定一切 哈哈~

2018年1月 4日 10:01

| #

| 引用

温国兵

说:

纠正一个错误

“你可能看出来了,每 4 年奖励减半,那么到了 2140 年,矿工将得不到任何奖励,比特币的数量也将停止增加。这时,矿工的收益就完全依靠交易手续费了。”

这里应该是 2040 年。

2018年1月 4日 10:07

| #

| 引用

机器猫电路改造

说:

关于第八个问题,不知道阮老师后续文章会不会谈到"比特币的伦理"问题;

比如比特币的出现对现阶段资源分配方式的影响?

如何面对和传统货币一样会带来犯罪问题? 对资源分配方式的处理问题?

另外,不知道阮老师,有没有机会谈一谈 World Community Grid,BOIN 等等这些分布计算? 很好奇,数字货币有没有可能和这些分布计算实现更科学的结合? 而不是像矿工们那样浪费资源.

2018年1月 4日 10:21

| #

| 引用

HiTimor

说:

好好好,入门篇。

2018年1月 4日 10:27

| #

| 引用

Mike

说:

比特币技术复杂、普通人不能很好的理解。比特币没有金融监管、容易产生金融犯罪。前段时间的黑客勒索无不采用比特币技术。所以个人并不看好这一块的技术。

2018年1月 4日 10:29

| #

| 引用

bravist

说:

写的真是通俗易懂,读了好多比特币的文章,这个原理解释地道

2018年1月 4日 10:35

| #

| 引用

小白

说:

有点疑惑,交易平台肯定需要维护 哪个比特币钱包是哪个用户的吧,而比特币钱包里包含公钥私钥,这样交易平台不就可以知道比特币是哪个用户的么

2018年1月 4日 11:37

| #

| 引用

TONYHEAD

说:

有若干疑问:

一个100GB的数据库就可以记录到比特币创立至今的所有交易往来?

"2000笔交易的区块手续费是3-10个比特币",这个交易成本太高了,2000笔流水,大一点的小卖部都不止这个数,难不成按目前的交易成本, 比特币只适合做大额资金的交易?

2018年1月 4日 11:59

| #

| 引用

问天玄铁

说:

比特币目前的很多问题(交易慢,账本大,算力集中)导致比特币一定不是数字货币的最终形态。我们不妨来想想更接近未来形态的数字货币协议和算法,就能让比特币变得不值钱,而且能让自己再次站在财富大门口。

2018年1月 4日 14:13

| #

| 引用

tc

说:

感谢科普了,通俗易懂。

不过有个疑问,“当矿工将得不到任何奖励,比特币的数量也将停止增加。这时,矿工的收益就完全依靠交易手续费了。”

这样感觉货币流通会很受影响啊,不知道在后面当数字货币的文章中会不会说明

2018年1月 4日 14:47

| #

| 引用

张庆华

说:

最近也在看这块,感觉非常有前途

2018年1月 4日 14:56

| #

| 引用

陈辉

说:

还是阮老师写的通俗易懂,能否一直同步到微信公众号里面。

2018年1月 4日 15:27

| #

| 引用

杨高超

说:

@TONYHEAD:

这个应该这么理解,比特币的交易不是以一个比特币为最小单位的,他可以无穷分割下去,例如一次交易交易了0.000001个比特币。

2018年1月 4日 15:31

| #

| 引用

leter

说:

如果我知道怎么发财,可能就不会在这里写博客了。说的很接地气。。哈哈

2018年1月 4日 15:39

| #

| 引用

没事扯扯蛋

说:

谁能说明比特币怎样和实际金钱或实物挂钩的???

如果不能挂钩,比特币就是个数字游戏,没有价值。

如果挂钩了,那说明比特币背后还是有势力(中心)支持的,否则怎么可能风生水起?

2018年1月 4日 16:08

| #

| 引用

BitcoinFan

说:

您最近有关注币圈么?感觉遗漏了很重要的东西:

1.挖矿赚币只是为了激励矿工,这个不是关键。挖矿的本质是达到分布式共识的手段,或者说,就是随机选一个人来记账,防止作弊,这个才是关键。

比特币安全的一个假设就是没有单个的人/组织能掌控50%以上的算力。

比特币的共识规则规定,大家都认最长链,更准确地说,是积累工作量最多的链。

矿工必须积极地接收别人挖到的新区块、在上面追加自己挖出的区块,并把自己挖出的区块积极广播出去,否则,他的链会被孤立,他就白干了。(可想而知,超过50%的算力,就不用鸟这些了)

2.扩容之争吵了几年了,现在BTC的开发者不愿意提高这个1MB的限制,是因为区块扩大后,会加剧比特币的中心化,这样的话,最后我们还不如直接用支付宝、VISA这样的中心化服务。

有人甚至认为比特币已经失去去中心化的本质,因为中国的大矿池已经垄断了算力,也就垄断了记账权。

有了SegWit之后,支撑交易量堪比VISA的闪电网络,还有其他技术能减少区块占用。而且,还有RSK等侧链技术可以期待。

Bitcoin Cash主要是中国矿工群体支持的,虽说未来扩大区块大小是不可避免的,但是Bitcoin Cash除了扩大区块大小,技术上并没有什么优势,它的宣传者还四处混淆视听,宣称只有自己才是真正的比特币。

闪电网络比较复杂,软件开发了几年,最近才基本成型,还在测试中。不过,也确实不能指望它能解决所有问题,因为闪电网络是为微支付设计的,支付通道的容量是有限的,大额交易可能还是直接走主链交易比较方便。

2018年1月 4日 16:37

| #

| 引用

BitcoinFan

说:

引用tc的发言:

感谢科普了,通俗易懂。

不过有个疑问,“当矿工将得不到任何奖励,比特币的数量也将停止增加。这时,矿工的收益就完全依靠交易手续费了。”

这样感觉货币流通会很受影响啊,不知道在后面当数字货币的文章中会不会说明

有人说最后手续费会占到交易额的5%,也有人认为用户花钱养矿工是不值得的,既浪费电,又不能消除被矿工攻击的风险。不如直接换共识机制,把工作证明(PoW)换掉,换成权益证明(PoS),大体上是谁持币多谁更有记账权,相信持币人不会做伤害体系利益的事情,否则他自己的利益会大大受损。

Peercoin算PoS的始祖,不过有学者指出它有漏洞,受到nothing at stake攻击的威胁;以太坊已经在测试PoS机制;还有Cardano,使用的是Ouroboros这个经过学术界同行评议的PoS机制。

2018年1月 4日 16:46

| #

| 引用

BitcoinFan

说:

引用TONYHEAD的发言:

有若干疑问:

一个100GB的数据库就可以记录到比特币创立至今的所有交易往来?

"2000笔交易的区块手续费是3-10个比特币",这个交易成本太高了,2000笔流水,大一点的小卖部都不止这个数,难不成按目前的交易成本, 比特币只适合做大额资金的交易?

现在已经有170GB了。

您怀疑比特币的交易量极为有限——确实是这样!比特币的交易容量小到“可笑”的程度。按照10分钟1MB来算,其实只相当于每秒7笔交易。

虽说可以把多笔交易拼成一个来节省空间,但这么做的效果是有限的。

对于交易所从1个地址提币给N个人这种情况,把多笔交易拼起来确实可以显著地节省空间,但是,这些币最终还是要再被它们的主人花出去,这个时候仍然需要消耗主链空间。

要理解具体情况,您可以去查一查比特币的交易格式,包括UTXO是什么。

我也可以大概给您描述一下:比特币的交易,由“输入”和“输出”两部分组成。

每一笔交易,都相当于把“输入”的币熔毁,重新铸造成“输出”中指定的金额。(其中输出金额需要小于等于输入,少的那部分作为付给矿工的手续费,计入coinbase交易)

所以,每个比特币地址上的余额都可以看作是通过从2009年“创世”开始的所有交易记录推算出来的。

“输入”部分包括数字签名(也就是“见证”部分),数据量一般比较大。

虽然扩大区块大小就可以提高交易量,但这样只是线性扩容,不能指数级地提升容量。

中国矿工群体和少数开发者认为,扩大区块容量并不会让比特币中心化,但是多数人(尤其是国外的社区)都不认同这种说法,目前排前几名的矿池已经把全网算力差不多都垄断了:https://btc.com/stats/pool。

多数开发者认为小额交易不能用宝贵的主链空间完成,需要放在主链之外,比如闪电网络,还有RSK等侧链。

还可以看看Bitcoin Core官方写的FAQ:https://bitcoincore.org/zh_CN/2015/12/21/%E7%B3%BB%E7%BB%9F%E6%89%A9%E5%B1%95%E5%B8%B8%E8%A7%81%E9%97%AE%E9%A2%98%E8%A7%A3%E7%AD%94/

2018年1月 4日 17:04

| #

| 引用

ixx

说:

引用小白的发言:

有点疑惑,交易平台肯定需要维护 哪个比特币钱包是哪个用户的吧,而比特币钱包里包含公钥私钥,这样交易平台不就可以知道比特币是哪个用户的么

交易平台提供一个钱包地址 你往里充钱并提供交易记录就可以了 跟你用银行转账类似

平台不会要所有人的钱包(要你也不会给的。。。)需要提币的时候 提供给平台你的钱包地址 就可以转到你的钱包里了

2018年1月 4日 18:01

| #

| 引用

ixx

说:

引用没事扯扯蛋的发言:

谁能说明比特币怎样和实际金钱或实物挂钩的???

如果不能挂钩,比特币就是个数字游戏,没有价值。

如果挂钩了,那说明比特币背后还是有势力(中心)支持的,否则怎么可能风生水起?

最开始有一部分人出于各种目的(收藏,或是炒作),允许你买他们的东西使用比特币支付(最开始买个比萨要50比特币。。。。现在想想。。。)慢慢的,越来越多的人接受了他,才发展到现在,这东西不可做假且数量固定,就像限量版的乐高一样,越多的人支持,“收藏”越值钱

2018年1月 4日 18:10

| #

| 引用

林海草原

说:

关于比特币,之前我还真没有了解过。前两天,一位博友的博客被挂马,被挂的是一个在线挖矿代码,每次打开博客都会被执行。我当时简单了解了一下,但是网上的文章晦涩。当今天看到阮老师的博文,我才真正知道挖矿是什么。挖矿能拿到如此高的奖励,难怪有些人会通过程序漏洞给别人的网站挂马来挖矿。

2018年1月 4日 18:12

| #

| 引用

jg

说:

引用小白的发言:

有点疑惑,交易平台肯定需要维护 哪个比特币钱包是哪个用户的吧,而比特币钱包里包含公钥私钥,这样交易平台不就可以知道比特币是哪个用户的么

交易平台是知道的,有的平台还实名认证的。

不放心,可以把从平台转移到自己的钱包就好了

2018年1月 4日 18:50

| #

| 引用

BitcoinFan

说:

引用小白的发言:

有点疑惑,交易平台肯定需要维护 哪个比特币钱包是哪个用户的吧,而比特币钱包里包含公钥私钥,这样交易平台不就可以知道比特币是哪个用户的么

交易平台相当于你把比特币转给他们,然后他们给你一个欠条。

可以说中心化的交易所和比特币的理念是完全背道而驰的。

交易所也确实是各种不靠谱,宣称“被盗”之类事情发生过好多次了,还有结合期货杠杆交易操纵价格、虚发假币之类黑历史。

2018年1月 4日 19:21

| #

| 引用

BitcoinFan

说:

引用林海草原的发言:

关于比特币,之前我还真没有了解过。前两天,一位博友的博客被挂马,被挂的是一个在线挖矿代码,每次打开博客都会被执行。我当时简单了解了一下,但是网上的文章晦涩。当今天看到阮老师的博文,我才真正知道挖矿是什么。挖矿能拿到如此高的奖励,难怪有些人会通过程序漏洞给别人的网站挂马来挖矿。

比特币早就不能用电脑(CPU或GPU)挖了,连FPGA都不行了,现在都是ASIC专用芯片挖矿。详细数据可以看这个:

https://en.bitcoin.it/wiki/Mining_Hardware_Comparison

2018年1月 4日 19:23

| #

| 引用

BitcoinFan

说:

引用jg的发言:

交易平台是知道的,有的平台还实名认证的。

不放心,可以把从平台转移到自己的钱包就好了

比特币的交易记录是一环扣一环,可以追溯的,而且完全公开(随便找个区块浏览器就可以方便地查,开一个比特币全节点也可以直接下载区块链数据)。如果不用混币之类的手段来切断追踪,从实名制交易所转出去还是可以被跟踪的。

2018年1月 4日 19:26

| #

| 引用

BitcoinFan

说:

引用林海草原的发言:

关于比特币,之前我还真没有了解过。前两天,一位博友的博客被挂马,被挂的是一个在线挖矿代码,每次打开博客都会被执行。我当时简单了解了一下,但是网上的文章晦涩。当今天看到阮老师的博文,我才真正知道挖矿是什么。挖矿能拿到如此高的奖励,难怪有些人会通过程序漏洞给别人的网站挂马来挖矿。

现在这些“挖矿木马”挖的都是Monero之类山寨币,它们换掉了比特币的双SHA256工作证明算法,换成对ASIC极不友好的CryptoNight等,这样CPU或GPU挖矿才有可能,否则就被ASIC的能效虐翻了,直接亏本出局。

山寨币一般也都在技术上有创新和改进,比如Monero,已经全网启用RingCT,交易都是机密的,不像比特币那样全部公开透明、可追踪。

2018年1月 4日 19:29

| #

| 引用

ljt2k

说:

对于比特币来说,钱不是支付给个人的,而是支付给某一把私钥。

这里应该是支付给某一把公钥

2018年1月 5日 14:07

| #

| 引用

两只羊

说:

货币的由来是人民生产出来充当流通的东西。

这个是怎么来的,炒作来的。为什么能存在,值得思量的事情。

2018年1月 5日 14:55

| #

| 引用

麻三

说:

老师,下一篇啥时候来啊

2018年1月 5日 15:45

| #

| 引用

区块链小白

说:

如果因为战争,切断了所有出口网络,是不是就变成两条比特链了?

2018年1月 5日 17:54

| #

| 引用

H-u-a-n

说:

写的确实简单易懂,阮老师,受教了,Thanks♪(・ω・)ノ

2018年1月 6日 11:38

| #

| 引用

Dong

说:

有个疑问求解答:

一块区块链只能存2000笔交易,2040年就挖不到新的区块链,但交易是继续增加的,那么区块链用完了怎么办呢?

2018年1月 6日 11:47

| #

| 引用

Ellie Ren

说:

赞 以后可以follow 看你的博客了

2018年1月 6日 11:55

| #

| 引用

xunzhang

说:

如果10分钟内写不满1MB记录,如何处理

2018年1月 6日 15:12

| #

| 引用

Asid

说:

有那个比特币钱包能用的?搜了几个网让,还有ANDORID/IOS的APP,不敢用啊。怕有后门。

2018年1月 6日 17:09

| #

| 引用

方减

说:

浅显易懂,非常好的科普入门文章!期待下一篇

2018年1月 6日 20:30

| #

| 引用

zero

说:

引用小白的发言:

有点疑惑,交易平台肯定需要维护 哪个比特币钱包是哪个用户的吧,而比特币钱包里包含公钥私钥,这样交易平台不就可以知道比特币是哪个用户的么

交易所才是真正密钥的掌控者,用户实际上是不掌控密钥的。

2018年1月 7日 02:09

| #

| 引用

哈哈

说:

引用jg的发言:

交易平台是知道的,有的平台还实名认证的。

不放心,可以把从平台转移到自己的钱包就好了

这点倒是真的,哈哈哈,我做个这样的平台

2018年1月 8日 09:58

| #

| 引用

max210

说:

期待下一篇

2018年1月 8日 11:16

| #

| 引用

吕海超

说:

连着看完区块链和比特币,特别期待你写《数字货币的本质》,这几天每天都会登上来看一下有没有更新。。。

2018年1月 8日 14:20

| #

| 引用

杨峰

说:

很好奇,比特币是怎么开始的?有这个想法是因为,采矿是产生比特币的“造血系统”,而造血的过程是写入交易记录,而最初是没有交易记录给人来写的。

2018年1月 8日 15:50

| #

| 引用

BitcoinFan

说:

引用Dong的发言:

有个疑问求解答:

一块区块链只能存2000笔交易,2040年就挖不到新的区块链,但交易是继续增加的,那么区块链用完了怎么办呢?

你混淆了比特币发行和挖矿机制。

比特币发行是以区块补贴的形式发放,四年一减半,2140年区块补贴才会归零,但十几年后区块补贴就接近归零了。

但是,矿工还能收到手续费收入。只要矿工有收入,他们就会继续挖。

而且,比特币的难度调整机制让它保持大约10分钟挖出一个区块,无论挖矿的算力是多还是少都是这样。挖矿的算力多了,难度就上升、出块(先加快再)放缓,反之难度下降、出块(先放缓再)加快。

2018年1月 8日 19:05

| #

| 引用

BitcoinFan

说:

引用xunzhang的发言:

如果10分钟内写不满1MB记录,如何处理

以前一直是写不满的,写满了才有拥堵问题。

2018年1月 8日 19:06

| #

| 引用

BitcoinFan

说:

引用杨峰的发言:

很好奇,比特币是怎么开始的?有这个想法是因为,采矿是产生比特币的“造血系统”,而造血的过程是写入交易记录,而最初是没有交易记录给人来写的。

没人用,矿工可以打空块。

比特币最初就是中本聪一个人在那里挖。

2018年1月 8日 21:15

| #

| 引用

BitcoinFan

说:

引用Asid的发言:

有那个比特币钱包能用的?搜了几个网让,还有ANDORID/IOS的APP,不敢用啊。怕有后门。

比特币官网:https://bitcoin.org/zh_CN/

按照去中心化的精神,比特币是没有官网的,这个网站的管理员是Cobra。

一般用户推荐Electrum,最好结合硬件钱包,防止木马偷币。

比太钱包也不错,有方便的冷热钱包选择。

想折腾技术就装Bitcoin Core,不过这个是全节点,要下载一百多GB的区块链数据。

顺便说一下,现在1M区块空间已经满了,手续费比较高,转账时最好启用RBF(勾选Replacable),这样万一转账卡着了,可以直接加手续费加速确认。

2018年1月 8日 21:18

| #

| 引用

BitcoinFan

说:

SegWit2x的目的其实是把Core踢出去,而不是扩容。但实际上支持Core的人还是不少的,Core不愿意被“打脸”,这个2x还能有多少支持率呢……

而且,实际上2x这个项目搞出来的btc1软件(从Core fork出来的)很挫,最后还爆出off-by-one这种低级bug,参与者大概本来就是同床异梦吧。

2018年1月 9日 07:30

| #

| 引用

Mark

说:

引用BitcoinFan的发言:

您最近有关注币圈么?感觉遗漏了很重要的东西:

1.挖矿赚币只是为了激励矿工,这个不是关键。挖矿的本质是达到分布式共识的手段,或者说,就是随机选一个人来记账,防止作弊,这个才是关键。

比特币安全的一个假设就是没有单个的人/组织能掌控50%以上的算力。

比特币的共识规则规定,大家都认最长链,更准确地说,是积累工作量最多的链。

矿工必须积极地接收别人挖到的新区块、在上面追加自己挖出的区块,并把自己挖出的区块积极广播出去,否则,他的链会被孤立,他就白干了。(可想而知,超过50%的算力,就不用鸟这些了)

2.扩容之争吵了几年了,现在BTC的开发者不愿意提高这个1MB的限制,是因为区块扩大后,会加剧比特币的中心化,这样的话,最后我们还不如直接用支付宝、VISA这样的中心化服务。

有人甚至认为比特币已经失去去中心化的本质,因为中国的大矿池已经垄断了算力,也就垄断了记账权。

有了SegWit之后,支撑交易量堪比VISA的闪电网络,还有其他技术能减少区块占用。而且,还有RSK等侧链技术可以期待。

Bitcoin Cash主要是中国矿工群体支持的,虽说未来扩大区块大小是不可避免的,但是Bitcoin Cash除了扩大区块大小,技术上并没有什么优势,它的宣传者还四处混淆视听,宣称只有自己才是真正的比特币。

闪电网络比较复杂,软件开发了几年,最近才基本成型,还在测试中。不过,也确实不能指望它能解决所有问题,因为闪电网络是为微支付设计的,支付通道的容量是有限的,大额交易可能还是直接走主链交易比较方便。

想问 BitcoinFan 一个问题,挖矿的成功与否是不是取决于计算机计算力的大小,假设有人的或者某个组织的计算机计算力非常强,那不代表每次的挖矿都是他们成功了?这不就有可能超过50%以上的算力了吗

2018年1月 9日 11:35

| #

| 引用

henry

说:

交易所才是中心化的东西!我猜你在交易所买卖比特币,真正的比特币有可能是交易所帮你代持!就像互联网彩票一样!

2018年1月 9日 11:42

| #

| 引用

重本聪

说:

看了一片文章 都是深入浅出的讲这个技术 能看懂一半吧 可是作为货币 货币啊 它的基础在哪 目前看就是谁的矿机多谁厉害啊 比特币个数是定的 所谓涨跌 都是炒出来的 这不是货币的基本价值啊 还有 这玩意不唯一 现在有起码数十种 加密货币 这肯定不算那些传销用货币 这些货币号称都是更牛逼的 更合理的 发明的人更吊的 说道发明人 这些中本聪就是因为聪明发明了这么一套理论? 他定的各种协议 规矩大家就 必须遵守 就是因为互联网精神就是公平公正?这是不是太乌托邦了 那以后有没有大本聪 巨本聪 利用这些干坏事呢

2018年1月 9日 11:48

| #

| 引用

重本聪

说:

引用Mark的发言:

想问 BitcoinFan一个问题,挖矿的成功与否是不是取决于计算机计算力的大小,假设有人的或者某个组织的计算机计算力非常强,那不代表每次的挖矿都是他们成功了?这不就有可能超过50%以上的算力了吗

有个机制 算出来的时间并不固定 如果一段时间内太多了 就会增加难度 太少了 就会减小 大概这么个意思 算力是基础 但不是一定就最先算出来 但矿机多 肯定没错 你看看网上那些一片矿机的照片

2018年1月 9日 11:52

| #

| 引用

sms

说:

所以说,下个钱包app就分了一对key和一个地址?没有交易的话这个地址有效么?不怎么懂

2018年1月 9日 14:47

| #

| 引用

凡浩浩

说:

关注的博客很久了,看了你很多文章,佩服您的才华,敬佩您的坚持,感谢您的分享,很想问您一个问题,您最初热爱文学,后来获得经济学博士学历,成为大学教授,现在又是计算机工程师,在每一次选择的时候,您迷茫过吗?什么才您的热爱,您未来还会选择做别的吗?

2018年1月 9日 15:35

| #

| 引用

小米

说:

有一个地方不明白,需要请教博主。

如果我是矿工,挖矿时在当前交易记录中擅自增加一条“我获得1000比特币”的记录,然后很幸运这块矿被我挖到,交易记录被记录和通报全网了。

那是不是就能作弊了?

2018年1月 9日 16:30

| #

| 引用

王挺

说:

引用BitcoinFan的发言:

你混淆了比特币发行和挖矿机制。

比特币发行是以区块补贴的形式发放,四年一减半,2140年区块补贴才会归零,但十几年后区块补贴就接近归零了。

但是,矿工还能收到手续费收入。只要矿工有收入,他们就会继续挖。

而且,比特币的难度调整机制让它保持大约10分钟挖出一个区块,无论挖矿的算力是多还是少都是这样。挖矿的算力多了,难度就上升、出块(先加快再)放缓,反之难度下降、出块(先放缓再)加快。

我也有此疑问,但感觉这个回答没答到点上。

交易记录是必须要附在新的区块里,再写入主区块链才能生效的。而2040年之后,已经没机会“算出”新的区块了,还怎么附加交易记录呢?

2018年1月 9日 20:00

| #

| 引用

小米

说:

引用王挺的发言:

我也有此疑问,但感觉这个回答没答到点上。

交易记录是必须要附在新的区块里,再写入主区块链才能生效的。而2040年之后,已经没机会“算出”新的区块了,还怎么附加交易记录呢?

你没有分清楚生成区块与取得比特币之间的区别。区块是永远可以生成的,只要对上一区块的头文件进行hash运算并符合难度要求即可。但生成区块后,能否得到比特币奖励,是不一定的,固定收益是逐年递减的。

2018年1月10日 14:24

| #

| 引用

davino

说:

有几个疑问:

1. 交易平台是不是本身自己就是矿工?

2. 如果交易平台是矿工,在上面平台上用户的交易是实时的,但交易平台如果成功把记录放到链上,是不是等于你和用户没有进行任何操作?

3. 火币现在能进行P2P的交易。如果火币没有挖到矿,不是等于买方白给钱了?

2018年1月10日 16:10

| #

| 引用

齐宁

说:

我在想,中本聪拥有多少比特币,现在财富有多少了...

2018年1月10日 16:54

| #

| 引用

YANG

说:

如果我说这东西是骗人的,会不会有人来教育我?

区块链本质不谈,就说普通用户层面。

1. 普通人使用比特币的最大理由是什么?

2. 为什么要去挖矿?货币不是拿来用的么,为啥大部分人不去使用它。

3. 根据文中所写,在极端情况下一笔交易可能不会被确认,或者很长时间才能被记录下来。人们使用这种东西图了个啥?

4. 为什么要相信比特币组织,而不相信现有的货币发行组织?

2018年1月11日 10:47

| #

| 引用

FTY

说:

个人认知太浅,无非是浪费世界资源。与权贵争,成王败寇而已。

2018年1月11日 11:16

| #

| 引用

张鹏

说:

1,打包是谁做的? 旷工如何判断打包没有造假?

2,一个打包要2000条交易记录,如果当前一直不足2000条,打包会一直等待?

3,全网同步区矿链,这个效率会不会很低? 这很容易发生不一致问题。新的区块如何保证链到了最新的区块后面?

2018年1月11日 15:44

| #

| 引用

fogin

说:

引用TONYHEAD的发言:

有若干疑问:

一个100GB的数据库就可以记录到比特币创立至今的所有交易往来?

"2000笔交易的区块手续费是3-10个比特币",这个交易成本太高了,2000笔流水,大一点的小卖部都不止这个数,难不成按目前的交易成本, 比特币只适合做大额资金的交易?

连大额资金交易这个场景也做不了, 你知道这个世界上每秒发生着多少笔大额交易么。。。

2018年1月11日 16:59

| #

| 引用

forget

说:

引用小白的发言:

有点疑惑,交易平台肯定需要维护 哪个比特币钱包是哪个用户的吧,而比特币钱包里包含公钥私钥,这样交易平台不就可以知道比特币是哪个用户的么

可以这样理解:比特币是在全世界网络中交易的,而公钥和私钥是用比特币底层了一组加密算法产生的。我们想要参与其中就需要得到这组秘钥。这个交易平台(比如:比特币中国)就是帮我们来用这个加密算法产生这组秘钥的。谁都可以去要,然后平台就给你生成这对秘钥。中间应该不会记录你的任何信息。就好比:我是大街上的一个小贩,你是路人,你想买了东西了,我卖给你就是了,不需要你的任何信息。

2018年1月12日 11:22

| #

| 引用

BitcoinFan

说:

引用王挺的发言:

我也有此疑问,但感觉这个回答没答到点上。

交易记录是必须要附在新的区块里,再写入主区块链才能生效的。而2040年之后,已经没机会“算出”新的区块了,还怎么附加交易记录呢?

新的比特币目前是通过每区块12.5BTC、四年一减半的区块补贴形式发放的(也就是从coinbase交易里“凭空生成”)。

但是,挖新区块在技术上并不需要生成新的比特币。

实际上,就在现在,矿工就可以选择不拿区块补贴(目前是每区块12.5BTC)——最近就有矿池出了Bug,涉事矿工不慎“弄丢”了12.5BTC:

http://8btc.com/thread-121250-1-1.html

对于矿工来说,有利益驱动,他们才会去挖矿。没了区块奖励,他们还可以收交易手续费,这个可以成为驱动他们挖矿的激励。

但是,其实很多人都觉得这个设计不好,他们认为手续费必须占交易额的一个比例才能维持系统安全,这个比例低了,矿工作为“保安”就可能反过来“监守自盗”。而且,维持这个体系运转还要白白烧电。

所以,现在还有人在研究PoS等新共识机制,比如以太坊的Casper、Cardano的Ouroboros,试图取代目前被比特币和以太坊使用的PoW共识机制(这个我也是拾人牙慧,各位感兴趣可以去知乎关注maxdeath这位大神)

引用davino的发言:

有几个疑问:

1. 交易平台是不是本身自己就是矿工?

2. 如果交易平台是矿工,在上面平台上用户的交易是实时的,但交易平台如果成功把记录放到链上,是不是等于你和用户没有进行任何操作?

3. 火币现在能进行P2P的交易。如果火币没有挖到矿,不是等于买方白给钱了?

1.交易平台相当于一个比特币用户。平台不需要是矿工,但也有矿业兼职开交易平台,比如ViaBTC,是个矿池,他们就开过交易所。

2.没太理解你的意思。你想问交易所能不能赖账么?

现在的交易所一般都是中心化的,而且好像大多没有第三方存管,这不就坑爹了——相当于你把比特币和人民币、美元等法币转给他,他给你一个欠条,他们赖账跑路你就GG了。然后,平台上的各种交易都和比特币区块链无关,直到你提币或充币。哪怕是ViaBTC这样的也不例外。

3.P2P?你说的是OTC场外交易么?场外是把原来的集中竞价撮合去掉,大家手动发布交易信息、进行交易,平台只做信息交流和中间人担保。币一般是其他用户充的,不是平台挖的。而且这种场外交易确实不能完全保证货银对付,可能发生一方伪造法币支付凭据、忽悠对方放币等欺诈。

2018年1月13日 00:53

| #

| 引用

BitcoinFan

说:

引用张鹏的发言:

1,打包是谁做的? 旷工如何判断打包没有造假?

2,一个打包要2000条交易记录,如果当前一直不足2000条,打包会一直等待?

3,全网同步区矿链,这个效率会不会很低? 这很容易发生不一致问题。新的区块如何保证链到了最新的区块后面?

1.只有矿工有记账权:因为只有矿工有算力、能挖出满足全网的难度需求的新区块,所以只有他们能挖出合法的区块。

2.不会,矿工可以打空块(只有一条给自己发奖励的coinbase交易)。区块满了反而会有问题——拥堵、手续费高涨。

现在的区块大小上限是1MB,或者说是浮动的(因为SegWit已经激活,交易信息被分为两部分,其中“见证”这个部分字节数按照乘0.25计算)

3.效率确实很低。不一致问题,挖矿就是解决这个问题的,挖矿是一种分布式共识机制,叫工作证明。大家只认最长链有效(准确地说是积累工作量最大的链)。

2018年1月13日 00:57

| #

| 引用

BitcoinFan

说:

引用张鹏的发言:

1,打包是谁做的? 旷工如何判断打包没有造假?

2,一个打包要2000条交易记录,如果当前一直不足2000条,打包会一直等待?

3,全网同步区矿链,这个效率会不会很低? 这很容易发生不一致问题。新的区块如何保证链到了最新的区块后面?

比特币的交易记录是一环扣一环的。如果一个新节点要严格验证的话,需要从2009年的创世区块开始验证(不断地更新UTXO集合,也就是删掉“已经被原主人花掉的币”,加入“有了新主人的币”)。但是,这样跑一遍验证,只能防止抢劫比特币、无端凭空生成比特币,不能阻止双重支付。

每条交易都会被广播到整个网络。交易包含数字签名,节点也会维持一个UTXO集合,可以验证交易是否有效,强制花别人的币、花无中生有的币都是无效交易,会被丢弃。矿工会把验证过的交易加到要挖的区块里,如果hash值碰出来了,挖到了有效的区块,他们就会立刻把这个新区块广播出去,让大家检查、承认。

2018年1月13日 01:10

| #

| 引用

BitcoinFan

说:

引用forget的发言:

可以这样理解:比特币是在全世界网络中交易的,而公钥和私钥是用比特币底层了一组加密算法产生的。我们想要参与其中就需要得到这组秘钥。这个交易平台(比如:比特币中国)就是帮我们来用这个加密算法产生这组秘钥的。谁都可以去要,然后平台就给你生成这对秘钥。中间应该不会记录你的任何信息。就好比:我是大街上的一个小贩,你是路人,你想买了东西了,我卖给你就是了,不需要你的任何信息。

你的描述是错的。

密钥是任何人都可以生成的。比特币用了ECDSA这个非对称加密算法,它被用来确定一个币的控制权/所有权——只有掌握私钥的人才能花对应地址上的币。

这个和交易平台完全没关系,交易平台只是为了方便比特币法币(如人民币/美元)或比特币山寨币的交易而存在的,只有集中竞价撮合的交易所才能产生足够的流动性和市场深度——有了交易所,一秒钟你就可以卖掉/买入1.5BTC,币很多的话还能挂冰山委托慢慢买/卖,如果没有交易所,你就需要自己去场外交易平台甚至是微信群等地方,手动挂单、喊单、吃单,一大意还会被骗。

可以说交易所在比特币系统里也只是个用户而已。

2018年1月13日 01:18

| #

| 引用

BitcoinFan

说:

引用张鹏的发言:

1,打包是谁做的? 旷工如何判断打包没有造假?

2,一个打包要2000条交易记录,如果当前一直不足2000条,打包会一直等待?

3,全网同步区矿链,这个效率会不会很低? 这很容易发生不一致问题。新的区块如何保证链到了最新的区块后面?

补充一下,花“已经花掉的币”也是无效交易。

至于双重支付,需要有很大的算力(51%攻击)才能做到,原理是用大算力挖一条更长的链,在这条链里,原先转给A的币被转给了B。有了超过50%的算力,只要坚持时间够长就一定能成功;如果没有那么多算力,也有一定概率能成功,但确认数越多,成功概率越低。

51%攻击能产生的实质威胁主要就是双重支付,除此之外还有审查交易(换句话说就是冻结指定的地址)等手段。

2018年1月13日 01:22

| #

| 引用

BitcoinFan

说:

@YANG:

这个就是信仰问题了,是信政府这个中央权威,还是信比特币这套分布式共识机制呢?没法说得通啦。

有人就认为比特币最后会像“世界语”一样半死不活。

要说骗局的话,拉高出货就可以看作是欺诈,无论是股市还是币市,这种现象都存在。

2018年1月13日 01:28

| #

| 引用

BitcoinFan

说:

引用小米的发言:

有一个地方不明白,需要请教博主。

如果我是矿工,挖矿时在当前交易记录中擅自增加一条“我获得1000比特币”的记录,然后很幸运这块矿被我挖到,交易记录被记录和通报全网了。

那是不是就能作弊了?

你这么做,挖出的区块就是非法的。

只要别的节点(无论是矿工的全节点,还是不挖矿的全节点)接收到区块进行检查就会发现新生成的币量超过共识规则规定的区块奖励,然后就会拒绝承认这个区块。

2018年1月13日 01:30

| #

| 引用

BitcoinFan

说:

引用Mark的发言:

想问 BitcoinFan一个问题,挖矿的成功与否是不是取决于计算机计算力的大小,假设有人的或者某个组织的计算机计算力非常强,那不代表每次的挖矿都是他们成功了?这不就有可能超过50%以上的算力了吗

没有人掌握超过50%的算力是比特币安全的前提。

如果有人掌握的算力超过50%,他就可以不用鸟别的节点挖出的区块,然后就可以进行51%攻击——比如回滚交易记录,或者审查交易(冻结任意比特币地址)。但即使是这样,他也可能会顾忌攻击行为是否会让比特币失去价值(然后他的矿机和币就都作废了),所以即使有人手里有超过50%的算力也未必会实行51%攻击。

2018年1月13日 01:35

| #

| 引用

BitcoinFan

说:

引用温国兵的发言:

纠正一个错误

“你可能看出来了,每 4 年奖励减半,那么到了 2140 年,矿工将得不到任何奖励,比特币的数量也将停止增加。这时,矿工的收益就完全依靠交易手续费了。”

这里应该是 2040 年。

博主没错,就是2140年。

但是,四年一减半还是很快的,再减半几次,区块补贴就已经接近归零了。

2018年1月13日 01:40

| #

| 引用

BitcoinFan

说:

引用davino的发言:

有几个疑问:

1. 交易平台是不是本身自己就是矿工?

2. 如果交易平台是矿工,在上面平台上用户的交易是实时的,但交易平台如果成功把记录放到链上,是不是等于你和用户没有进行任何操作?

3. 火币现在能进行P2P的交易。如果火币没有挖到矿,不是等于买方白给钱了?

前面的回帖好像没显示出来,不知道是不是博主要审核……

交易平台只相当于一个比特币用户,往难听了说,就是你把币转给他们,他们给你一个欠条。

也有ViaBTC这样矿业兼职开交易所的,即使是这样,性质仍然不变。

2018年1月13日 01:43

| #

| 引用

BitcoinFan

说:

引用sms的发言:

所以说,下个钱包app就分了一对key和一个地址?没有交易的话这个地址有效么?不怎么懂

密钥是任何人都可以生成的,必须随机生成,否则别人就可以猜出来,这样就不安全了。

比特币用了ECDSA这个非对称加密算法,打个比方,就是认章不认人,章(密钥)其实有机器就能刻(任何人都可以用电脑生成,甚至可以用骰子来生成),只有你手里有章(私钥),能给账单盖章(数字签名),其他人手里都有完整账本,如果你想花无中生有的钱、花之前已经被花掉的钱、花别人的钱,都是无效的。

私钥可以推算出公钥,公钥经过两次哈希运算,再加上校验值、经过Base58编码就得到地址。反推在目前是不可能的,除非ECDSA、RIMEPD160、SHA256算法被破解(哈希算法本来就是不可逆的,即使“破解”,也不能由哈希值“恢复原状”,只是能找到碰撞值而已,不过目前找到碰撞也足够花别人地址上的钱了)。

现在的钱包一般都是HD的,也就是分层确定性钱包,由一个随机种子就可以推算出几乎无穷无尽的私钥,种子还可以表示为一串单词(密语),这样备份/恢复钱包就方便了,而且可以每次使用比特币都换一个地址。

2018年1月13日 01:58

| #

| 引用

BitcoinFan

说:

引用sms的发言:

所以说,下个钱包app就分了一对key和一个地址?没有交易的话这个地址有效么?不怎么懂

没用过的地址也是有效的。

博主对比特币地址的描述有误:比特币地址不是用十六进制表示公钥的哈希,而是用Base58编码表示公钥的哈希+一段校验值。用那段校验值就可以知道地址有没有错。

甚至还有找不到对应私钥的“烧币地址”(Proof of Burn),转进去的币就无法被转出来,等于被销毁了,这种地址同样是有效的。比如:合约币CounterParty提出的1CounterpartyXXXXXXXXXXXXXXXUWLpVr。生成这种地址也不难,先写出Base58地址,内容可以任意,然后算出对应的二进制数据(Base58解码),再计算对应的校验值,加到后面,然后重新Base58编码,就可以得到这种“烧币地址”。

2018年1月13日 02:17

| #

| 引用

BitcoinFan

说:

@YANG:

比特币的优点在于无国界、(伪)匿名、快速(相对电汇等传统服务)、安全等。价格波动大也确实是个问题,不过也不是完全没办法,比如用期货交易对冲(不过目前期货交易平台也是中心化的,甚至有平台亲自下海操纵市场等黑历史,而且,平台肯定要收交易手续费)。

挖矿是达成分布式共识的手段,这样才能防止双重支付。也有人觉得挖矿不好,达成共识慢、吞吐量有限、浪费能源、可能“监守自盗”,就开始想办法改进,所以现在也有其他共识机制,比如以太坊的Casper、Cardano的Ouroboros,都是PoS共识机制;还有比特股的DPoS等。

2018年1月13日 02:47

| #

| 引用

walker

说:

问两个问题啊:

1, 目前每个节点大小约为100G, 也就是说选择加入这个网络的话, 初始是要"同步"100G 的内容到硬盘上对吧?

2, 没有确认的交易, 是以什么形式传遍全网的? 从文中的描述, 好像是"纯请求, 不持久化", 那么文中又描述了有的交易因为手续费低, 可能几周都没有确认, 那么可以推断出任何交易其实都是持久化了的(并且严格遵循区域链的原因, 保证了不可篡改), 并不是单纯靠

"即时"的网络请求, 所以一个比特币节点严格意义上是有确认的和多如牛毛未确认的"数据库"构成? 这样的话, 目前总量100G 的大小, 其实饱含了即时全网所有未确认的交易数据, 这个理解对么?

2018年1月15日 01:51

| #

| 引用

Leo

说:

引用小白的发言:

有点疑惑,交易平台肯定需要维护 哪个比特币钱包是哪个用户的吧,而比特币钱包里包含公钥私钥,这样交易平台不就可以知道比特币是哪个用户的么

有道理啊

2018年1月15日 11:09

| #

| 引用

rstevens

说:

首先赞一下阮老师的文章!

不过还是有很多细节的地方有疑惑,例如

"首先,所有的交易数据都会传送到矿工那里。矿工负责把这些交易写入区块链。

根据比特币协议,一个区块的大小最大是 1MB,而一笔交易大概是500字节左右,因此一个区块最多可以包含2000多笔交易。矿工负责把这2000多笔交易打包在一起,组成一个区块,然后计算这个区块的 Hash。"

1、 交易数据是怎么传到矿工那的? 是发给所有矿工么?

2、 矿工自己来决定把多少个交易合并到一个区块中么?

这些细节,如果有实现代码可以看到就好了。阮老师知道有哪些开源的代码可以学习么?

2018年1月15日 16:41

| #

| 引用

ty

说:

所有的交易数据都会传送到矿工那里。矿工负责把这些交易写入区块链。

根据比特币协议,一个区块的大小最大是 1MB,而一笔交易大概是500字节左右,因此一个区块最多可以包含2000多笔交易。

相请教第一个块区是怎么来的?没有交易矿工就没办法写入块区,不写入块区就得不到比特币。

实在想不通,求指教。

2018年1月15日 21:34

| #

| 引用

Alex

说:

其实,任何东西想成为货币,就是一个信心,当然还有方便性。

要是人们都认为这东西能当钱使,那它就值钱了。

就像一般等价物的诞生一样,只不过现在的技术让这个过程简化快捷了很多。

这发行起来岂不就是通货膨胀啊!!!首先就让这显卡贵到姥姥家去了。

2018年1月16日 17:14

| #

| 引用

yaro

说:

每个区块的容量随着时间的增长会越来越大么,不会爆掉么?

2018年1月17日 17:03

| #

| 引用

BitcoinFan

说:

@walker:

1.现在已经冲着200GB去了。如果要完整从头验证一遍,需要把这么多区块链数据全部下载一遍。全节点也支持修剪模式(prune),但就我自己的经验,修剪模式会带来一些不便,比如不能rescan(导入私钥的时候就需要rescan来显示出正确的转账记录和余额)。以后可能有backward syncing,也就是从最近的区块倒着往回同步,而且还要同步UTXO集合(相当于余额数据)。

2.不对。

一百多GB是2009年比特币诞生至今的所有已确认交易。中间有不少孤块/分叉都被丢弃了,还有很多零确认因为被双花/手续费太低等原因也被丢弃了。

每个比特币节点都会连接到附近的节点(不过连接数默认是受限的),一个人广播一笔交易后,会一传十十传百,直到传遍整个网络。

零确认交易是保存在内存池里的,这些交易只是等待着矿工把它打包进链,是不算数的(比如,已有一笔零确认交易,但是矿池在新挖出的区块中,把另一笔与之冲突的“双重支付”交易打包进去了,那么大家都承认区块链里的那个交易有效,零确认交易无效)。

不过,现在大矿池基本垄断了算力,而且都遵守Opt-in RBF的规则,所以一般的零确认交易在几天之内还是不能双花的(也就是“卡着确认不了”),因为RBF现在还不是默认启用,但未来会改成默认启用。

2018年1月19日 16:03

| #

| 引用

BitcoinFan

说:

引用ty的发言:

所有的交易数据都会传送到矿工那里。矿工负责把这些交易写入区块链。

根据比特币协议,一个区块的大小最大是 1MB,而一笔交易大概是500字节左右,因此一个区块最多可以包含2000多笔交易。

相请教第一个块区是怎么来的?没有交易矿工就没办法写入块区,不写入块区就得不到比特币。

实在想不通,求指教。

第一个区块就是创世区块(genesis block),只有一笔“凭空”生成50BTC的coinbase交易(也就是区块补贴),内容算是中本聪随便写的。

就是这个:

https://btc.com/000000000019d6689c085ae165831e934ff763ae46a2a6c172b3f1b60a8ce26f

点开coinbase交易,就可以看到著名的The Times 03/Jan/2009 Chancellor on brink of second bailout for banks了:

https://btc.com/4a5e1e4baab89f3a32518a88c31bc87f618f76673e2cc77ab2127b7afdeda33b

2018年1月19日 16:07

| #

| 引用

BitcoinFan

说:

引用yaro的发言:

每个区块的容量随着时间的增长会越来越大么,不会爆掉么?

原来是一个区块最大1MB(矿工还可以自己设置更低的上限),但是直到最近这个上限才被填满,然后,矿工优先打包手续费高的交易,手续费不够高的,就在内存池里排队等着。

即使是鼓吹超大区块的Bitcoin Cash,矿工们现在也没敢把这个限制完全拿掉,目前的上限是8MB,前一阵子BCH发生了粉尘攻击(有人发帖说是“压力测试”),可以看到有些矿池甚至还保留着1MB的限制。

去年软分叉SegWit已经激活了,引入了一种新的交易格式(和老格式并存),这种格式把交易数据分成两块,一块是资金往来和数额,另一块是用数字签名证明交易有效的“见证”;对见证部分,计算字节数时要少算四分之三(给了折扣),这样就等于允许区块大小超过1MB。

SegWit格式的交易使用率越高,区块就可以扩到越大。目前SW使用率只有10%。

根据估计,这样扩容最大可以达到2MB左右。(4MB是不可能达到的,因为非见证部分字节数不会是零)

未来BTC应该还会有硬分叉,可能要扩大区块,不过近期是不会有了。

目前还有一些方法能减少交易字节数,比如压缩公钥、batching等。以后还会有Schnorr签名等技术。

2018年1月19日 16:22

| #

| 引用

BitcoinFan

说:

@Alex:

现在比特币的概念还被很多人抵触,多数人还是宁愿相信国家政权,而不是分布式共识。

政府也是,不少都对比特币不友好,像我国不就是这样,只是把比特币定位为合法的虚拟商品,不承认它是货币,而且把交易所都关了,连矿场都要赶出去……

而且比特币-法币“汇率”波动很大,市场投机性很强,这也是个本质上的问题。

比特币还面临着扩容问题,区块大了就趋向于中心化,闪电网络现在还没准备好。

还有,就是比特币不存在账户密码、密码忘记找回、资金冻结这种概念,算是“认密钥不认人”的,丢失被盗都是责任自负的。

比特币早就不能用显卡挖了,连莱特币都不行了,只能用ASIC矿机挖,否则是纯浪费电、耗费显卡寿命。

现在用显卡挖的是其他加密货币,比如以太币(ETH,以太坊Ethereum平台上用的代币,其实人人都可以轻易在以太坊上发行自己的ERC20代币)、门罗币(XMR,Monero)、零币(ZEC,Zcash)等等。

2018年1月19日 16:32

| #

| 引用

BitcoinFan

说:

引用没事扯扯蛋的发言:

谁能说明比特币怎样和实际金钱或实物挂钩的???

如果不能挂钩,比特币就是个数字游戏,没有价值。

如果挂钩了,那说明比特币背后还是有势力(中心)支持的,否则怎么可能风生水起?

这个都是老生常谈的问题了。

有价值的东西未必是“实物”,比如大数据,或者……玩游戏氪金;黄金就是没有人担保背书的,但它仍然有价值。

所以,现在有人想让比特币成为“数字黄金”……

2018年1月19日 16:46

| #

| 引用

nonehat

说:

纠正小错误:每笔交易的大小约为250B左右,也就是说1个区块可以包含 1 * 1024 * 1024 / 250 笔交易,而挖出一个区块约10分钟。所以每秒的交易量: 1*1024*1024 / 600 = 6.9。 也就是人们常说的不超过7笔。

2018年1月19日 22:25

| #

| 引用

lies

说:

假如算力能垄断比特币的交易权,那这个就是集权中心化了,因为假如算力越分散,那么想要垄断的成本就越低,51%对政府来说,想要达到并不难,什么时候政府管不住了,自己这么一折腾,是不是比特币就该没了

2018年1月21日 10:04

| #

| 引用

anor

说:

引用Dong的发言:

一块区块链只能存2000笔交易,2040年就挖不到新的区块链,但交易是继续增加的,那么区块链用完了怎么办呢?

区块链不会用完吧?只是用来奖励的比特币可能就没有了,到那时矿工只能靠手续费获得奖励了。

2018年1月25日 16:37

| #

| 引用

风君子-神游

说:

关于交易,按照文章里面所说,没交易一次是不是相当于生成了一个新的区块,因为会生成一个新的hash,那这个交易所产生的区块,和矿工新挖出来的区块有什么区别,其次,交易是通过矿工去填写数据的,那矿工会不会恶意的去写数据,例如,把新交易的比特币写自己钱包里面

2018年1月26日 14:24

| #

| 引用

ade

说:

引用Mike的发言:

比特币技术复杂、普通人不能很好的理解。比特币没有金融监管、容易产生金融犯罪。前段时间的黑客勒索无不采用比特币技术。所以个人并不看好这一块的技术。

比特币只是一种货币形式,RMB也是一种货币形式,如果敲诈勒索犯罪用RMB,那我们不是??

2018年1月26日 16:46

| #

| 引用

ALLEN

说:

区块链 和 比特币交易大概理解了。 但是作为交易者怎么获利。这一点是不是类似股票说,在比特币网上用现金(真实货币)交易购买虚拟比特币,然后等着升值再出售。

2018年1月29日 16:05

| #

| 引用

wjzsuperman

说:

是不是新增一个区块,就代表新增一个比特币?

2018年1月30日 10:08

| #

| 引用

胡吃喝

说:

引用wjzsuperman的发言:

是不是新增一个区块,就代表新增一个比特币?

最开始,新增一个区块,增加50个比特币,后来新增一个区块,增加25个,再后来就是12.5个

2018年2月 2日 20:32

| #

| 引用

胡吃喝

说:

引用anor的发言:

区块链不会用完吧?只是用来奖励的比特币可能就没有了,到那时矿工只能靠手续费获得奖励了。

区块链用不完,比特币倒是会用完,也就是再也挖不出来了。

2018年2月 2日 20:33

| #

| 引用

郭海峰

说:

原文:目前由于交易数量猛增,手续费已经水涨船高,一个区块2000多笔交易的手续费总额可以达到3~10个比特币。如果你的手续费给低了,很可能过了一个星期,交易还没确认。

请教:如果一个区块的2000比交易中有没有确认的,那这个区块怎么确认呢?不是一个小时就可以确认了吗?另外,如果一笔交易在确认过程中但还没没有支付成功,这些比特币是否可能再次支付给其它方,而因为第二次交易所在的区块被确认导致第二次交易成功,第一次交易失败呢?

2018年2月 3日 21:11

| #

| 引用

夜上

说:

引用Dong的发言:

有个疑问求解答:

一块区块链只能存2000笔交易,2040年就挖不到新的区块链,但交易是继续增加的,那么区块链用完了怎么办呢?

新开区块没有奖励了而已,并不是不开新的

2018年2月 5日 11:47

| #

| 引用

cqcmdwym

说:

你也可以用私钥加密信息,别人用你的公钥解开,从而证明这个信息确实是你发出的

你好,阮老师,这样是不是不安全,人家有公钥就能解开?

2018年2月 7日 07:45

| #

| 引用

airomyas

说:

引用王挺的发言:

我也有此疑问,但感觉这个回答没答到点上。

交易记录是必须要附在新的区块里,再写入主区块链才能生效的。而2040年之后,已经没机会“算出”新的区块了,还怎么附加交易记录呢?

区块永远可以增加,区块链的长度并没有限制。只是矿工取得记账权的时候,系统没有给矿工比特币来奖励了。

2018年2月12日 09:53

| #

| 引用

airomyas

说:

引用cqcmdwym的发言:

你也可以用私钥加密信息,别人用你的公钥解开,从而证明这个信息确实是你发出的

你好,阮老师,这样是不是不安全,人家有公钥就能解开?

这个叫数字签名,目的是为了证明这条用私钥签名的消息的确是你发出的(因为别人没有你的私钥),那么怎么证明呢?就是这条消息能够用你发布的公钥解开,这就说明消息是你发的,因为用别人的公钥不可能揭开你的私钥签名的消息。

这种情况下,不是为了保密,而是为了验证身份。

2018年2月12日 10:28

| #

| 引用

天空

说:

一开始错了,是欧美各大银行以及金融机构的一个需求,最后是一个中本聪的人或者组织造出一个比特比的产品来,本身不是中本聪的想法,它是需求的实现者

2018年2月13日 14:52

| #

| 引用

路人甲

说:

怎么全是小白?

2018年2月14日 01:10

| #

| 引用

老宽

说:

区块链记录着完整的账本,而比特币本质是希望解决去中心化的问题。1M的块大小引起交易堵塞的问题我能理解,通过扩容等技术手段肯定能解决的,只是扩多少的问题了。但是这个只是解决交易速度的问题啊?

但是,将来积累的账本数据肯定越来越多啊,那岂不是意味着每个安装了比特币钱包的客户端软件都得同步这些账本信息呢,比如现在账本数据如果几百G能理解不是问题,但是将来账本数据累积了总会很大啊,这个问题怎么能搞定啊?

2018年2月17日 00:22

| #

| 引用

谦修

说:

引用binary的发言:

"这个钱包不是用来存放比特币,而是存放你的公钥和私钥。软件会帮你生成这两把私钥,然后放在钱包里面。"

应该是生成这两把密钥

可以理解为,一个是银行卡号,一个是密码吗。。前者对应公钥,后者是私钥!

2018年2月23日 15:28

| #

| 引用

纪钟磊

说:

您好,我想问一个问题。就是张三有10个比特币,同时向另外两个他自己的私钥(s1,s2)分别支付10个比特币。把支付给s1的交易让旷工1处理。支付给s2的交易让旷工2处理。恰巧旷工1和旷工2出处理的达到的分支数也都是大于6并且相同的。那不是这个时候张三就把10个比特币分别成功支付给了自己的两个私钥,他本身拥有的10个bitcoin就变成了20个?解答一下我的疑惑吧,谢谢!

2018年2月24日 14:42

| #

| 引用

zcqshine

说:

引用TONYHEAD的发言:

有若干疑问:

一个100GB的数据库就可以记录到比特币创立至今的所有交易往来?

"2000笔交易的区块手续费是3-10个比特币",这个交易成本太高了,2000笔流水,大一点的小卖部都不止这个数,难不成按目前的交易成本, 比特币只适合做大额资金的交易?

比特币的价格现在已经够大额了...哈哈

2018年2月24日 16:30

| #

| 引用

btcoin小白

说:

区块是不是可以是0-2000条交易记录(包含是0条交易记录),我在想比特币诞生时应该是还没有交易的吧,这个时候区块里面应该是没有交易记录的吧?

2018年2月26日 23:22

| #

| 引用

xmokdjs

说:

引用温国兵的发言:

纠正一个错误

“你可能看出来了,每 4 年奖励减半,那么到了 2140 年,矿工将得不到任何奖励,比特币的数量也将停止增加。这时,矿工的收益就完全依靠交易手续费了。”

这里应该是 2040 年。

一尺之棰,日取其半,万世不竭。——《庄子·天下》

2018年2月27日 11:50

| #

| 引用

戴祎程

说:

我想问一下阮老师,如果矿工没有收集全交易记录,或者故意写错了交易记录,从而生成了最新的区块,后续的矿工怎么发现他记录的有问题?

2018年2月28日 16:42

| #

| 引用

DannyPei

说:

我想问个问题,矿工们从网络上收集各种交易请求,组包并计算hash,当计算出的hash不满足要求时,是会更换或重新收集网络上的各种交易请求然后重新打包计算hash,直到所计算出的hash满足要求吗?(因为如果不更换组包的交易内容的话,计算出的hash还是会和原来的一样)这样的话作为一个交易请求的提出方,所提出的交易请求能否被认可、何时被认可都是完全未知的,这样将难以满足货币日常流通的基本需求。不知道是否是这样,求阮老师和各位老师解答。

2018年3月 1日 15:22

| #

| 引用

DannyPei

说:

引用纪钟磊的发言:

您好,我想问一个问题。就是张三有10个比特币,同时向另外两个他自己的私钥(s1,s2)分别支付10个比特币。把支付给s1的交易让旷工1处理。支付给s2的交易让旷工2处理。恰巧旷工1和旷工2出处理的达到的分支数也都是大于6并且相同的。那不是这个时候张三就把10个比特币分别成功支付给了自己的两个私钥,他本身拥有的10个bitcoin就变成了20个?解答一下我的疑惑吧,谢谢!

不会,矿工1和矿工2同时计算出符合要求区块链,并且两个分支又同时达到6个链的长度,这是不可能发生的

2018年3月 1日 15:23

| #

| 引用

alex

说:

有个地方没明白。

假如说矿工A抢到了这块区块。然后广播出去。大家承认了以后。这块区块的HASH值就定了。

然后再在这块区块中输入"A挖到了这块区块 获得12.5个比特币"。那这个输入信息不是会导致这块区块的HASH值变了么?

2018年3月 2日 17:13

| #

| 引用

Aspi1in

说:

“事实上,我也不知道,如果我知道怎么发财,可能就不会在这里写博客了。”

扎心了老铁~

2018年3月 2日 19:17

| #

| 引用

gelvshige

说:

引用Aspi1in的发言:

“事实上,我也不知道,如果我知道怎么发财,可能就不会在这里写博客了。”

扎心了老铁~

坦白的很可爱!

2018年3月 2日 19:22

| #

| 引用

peakandyuri

说:

我其实有一个疑问,比特币是没有中心节点的,如果我要加入矿工的行列,我怎么才能知道其它节点并和它们交换数据。

2018年3月 5日 14:31

| #

| 引用

xuewuchen

说:

其实我觉得这里最大的问题就是,所有的资源都浪费在无意义的计算上面了。如果这些算力真的可以一起计算,是不是能够解决很多计算上面的难题呢

2018年3月 7日 09:14

| #

| 引用

zbw

说:

引用没事扯扯蛋的发言:

谁能说明比特币怎样和实际金钱或实物挂钩的???

如果不能挂钩,比特币就是个数字游戏,没有价值。

如果挂钩了,那说明比特币背后还是有势力(中心)支持的,否则怎么可能风生水起?

你可以把它当做一件物品,一个东西,这个东西只要有人愿意花钱去买,那就能与真实货币挂钩

2018年3月 9日 15:01

| #

| 引用

csha

说:

引用zyg的发言:

传说的去中心化呢~到头来还是矿工中心化~ 算力决定一切 哈哈~

你把去中心化这个概念理解错了

2018年3月13日 19:05

| #

| 引用

中本葱

说:

引用王挺的发言:

我也有此疑问,但感觉这个回答没答到点上。

交易记录是必须要附在新的区块里,再写入主区块链才能生效的。而2040年之后,已经没机会“算出”新的区块了,还怎么附加交易记录呢?

有区块啊,只是这些区块不会新生成比特币而已

2018年3月18日 11:27

| #

| 引用

沈小扬

说:

请教,矿工记录交易记录生成新的区块,从而得到奖励的比特币。这个奖励本身的交易又是谁来记录呐?有没有区块链来保存?

2018年3月19日 13:10

| #

| 引用

Satan

说:

160位是二进制,写成十六进制,大约是26到35个字符

这个是怎么算的?

2018年3月19日 13:13

| #

| 引用

Bicong Wang

说:

引用杨峰的发言:

很好奇,比特币是怎么开始的?有这个想法是因为,采矿是产生比特币的“造血系统”,而造血的过程是写入交易记录,而最初是没有交易记录给人来写的。

阮老师没有细讲挖矿,实际上挖矿的要求是造出一个哈希值小于xx的区块,这个跟交易是否存在没有必然关系。而随着区块的产生,比特币会被制造出来。

2018年3月19日 19:04

| #

| 引用

ieayoio

说:

引用小米的发言:

有一个地方不明白,需要请教博主。

如果我是矿工,挖矿时在当前交易记录中擅自增加一条“我获得1000比特币”的记录,然后很幸运这块矿被我挖到,交易记录被记录和通报全网了。

那是不是就能作弊了?

不知道你的问题解决了没,我觉得“我获得1000比特币”的这条记录不能凭空的产生,它必须是“xxx向你转账了1000比特币”才能达到你获得比特币的目的,而这个动作需要有向你转账的人的数字签名作为凭证

2018年3月20日 17:31

| #

| 引用

ieayoio

说:

所谓交易手续费,就是矿工可以从每笔交易抽成,具体的金额由支付方自愿决定。你完全可以一毛不拔,一分钱也不给矿工,但是那样的话,你的交易就会没人处理,迟迟无法写入区块链,得到确认。矿工们总是优先处理手续费最高的交易。

这里我有个疑问,是不是说等到矿工挖到新的区块没有奖励的时候,如果支付不付手续费,是不是说有可能交易永远无法写入区块链,这岂不是有钱花不出去了吗,所以只能追加手续费来完成交易吧?而且手续费少了也很有可能迟迟完成不了交易

2018年3月20日 17:40

| #

| 引用

悟空

说:

现在比特币的区块有多高了啊?

2018年4月 2日 21:05

| #

| 引用

mall

说:

有几点疑问:

1 公钥和私钥都是软件生成的,如何保证软件平台不会私自保存用户的私钥?

2 区块链本身的机制只承认最长新增链(block),那么最终会对导致每个block都只包含最简单的信息(空block或者只包含一笔交易的block),因为你等到2000笔交易凑齐的时候再开始打包计算,可能别人已经算出来的了。这样推演下去最终区块链里每个块只会包含一笔交易,1M的大小根本就用不完。为什么还会出现提议将block size增加 ?

望哪位大侠能指教一下?谢谢

2018年4月 9日 08:57

| #

| 引用

崔文远

说:

私钥的保存用什么方式最安全?

2018年4月11日 20:34

| #

| 引用

帅锅

说:

越看越带劲,真的十分感谢作者这么辛苦写的文章呀!已经能理解很多很多了,感激

2018年4月19日 16:10

| #

| 引用

shilion

说:

引用Satan的发言:

160位是二进制,写成十六进制,大约是26到35个字符

这个是怎么算的?

这个是十六进制和2进制的转换了。就像我们的十进制,冯10进1,十六进制是冯16进1,有0-9,A-F组成。

2018年4月19日 22:17

| #

| 引用

没有

说:

引用Mike的发言:

比特币技术复杂、普通人不能很好的理解。比特币没有金融监管、容易产生金融犯罪。前段时间的黑客勒索无不采用比特币技术。所以个人并不看好这一块的技术。

你不看好的原因我却感觉是比特币火的真正原因,不接受黑暗并不代表黑暗不存在

2018年4月28日 17:52

| #

| 引用

chen

说:

想请问一下:

比特币第一个区块Block #0是相当于初始化创建的,记录的交易一个新闻报纸的标题。

产生50个比特币的奖励(这50个比特币好像不能被使用)。

那第二个区块Block #1它的交易记录是什么呢(是否是用比特币交易呢)?

这些交易的手续费所需的比特币从何处来呢?

2018年5月 2日 18:11

| #

| 引用

梦元

说:

“我获得1000比特币”的这条记录不能凭空的产生,btc不会凭空产生,它产生的唯一渠道是旷工算出合规hash值后获得的奖励,而且会有专门的标识记录这笔btc的产生,以及它产生的条件。首先“我获得1000比特币”这条记录不会添加进去,因为这条记录不合规范至少是“xxx转给xx多少btc”或者是“xx算出了新的合规hash获得XX个btc的奖励”,其次即使你想办法强行添到了数据库,请求同步数据时,其它节点也会算出你这笔凭空产生的记录是非法,拒绝同步你的数据。

每一笔交易都必须具备 (from, to, value,fee ) ,而且每一笔交易应该都会有from方进行数字签名,避免旷工把转账给to方的5个btc改成了10个

2018年5月 3日 18:46

| #

| 引用

晨晨

说:

我就想知道怎么开户 交易

2018年5月11日 22:53

| #

| 引用

虾米

说:

虽然在币圈工作几年了,但是每次需要给小白讲解btc的时候都不知从何讲起。

以后我可以让他们来看峰哥的文章。

2018年5月17日 18:45

| #

| 引用

虾米

说:

引用梦元的发言:

“我获得1000比特币”的这条记录不能凭空的产生,btc不会凭空产生,它产生的唯一渠道是旷工算出合规hash值后获得的奖励,而且会有专门的标识记录这笔btc的产生,以及它产生的条件。首先“我获得1000比特币”这条记录不会添加进去,因为这条记录不合规范至少是“xxx转给xx多少btc”或者是“xx算出了新的合规hash获得XX个btc的奖励”,其次即使你想办法强行添到了数据库,请求同步数据时,其它节点也会算出你这笔凭空产生的记录是非法,拒绝同步你的数据。

每一笔交易都必须具备 (from, to, value,fee ) ,而且每一笔交易应该都会有from方进行数字签名,避免旷工把转账给to方的5个btc改成了10个

峰哥应该是想表达对 btc 的价值思考

2018年5月17日 18:47

| #

| 引用

浅蓝

说:

引用小白的发言:

有点疑惑,交易平台肯定需要维护 哪个比特币钱包是哪个用户的吧,而比特币钱包里包含公钥私钥,这样交易平台不就可以知道比特币是哪个用户的么

只需管理用户对应的钱包地址就行,不需要知道具体的公钥私钥,就好比支付宝管理用户的账号,但是不知道你的密码也能使交易正常完成

2018年5月18日 13:07

| #

| 引用

卫道者

说:

引用Mike的发言:

比特币技术复杂、普通人不能很好的理解。比特币没有金融监管、容易产生金融犯罪。前段时间的黑客勒索无不采用比特币技术。所以个人并不看好这一块的技术。

比特币勒索与比特币无关,只是通过比特币来收钱。

2018年7月13日 13:54

| #

| 引用

Tiger.xu

说:

每个节点都包含了整个区块链(目前大概 100多 GB),并且节点之间时刻不停地在同步信息。------目前100多GB,后面随着时间推移,这个区块链是否会非常之大。而且100多GB的数据在这么多节点中复制,会不会造成网络堵塞?

2018年7月15日 19:22

| #

| 引用

haiker

说:

为什么交易数据要包含双方的地址呢,既然交易数据中已经包含了公钥,而交易的支付方地址就是公钥计算hash得到,只提供公钥,私钥签名和接受方的地址和上次交易的hash不行吗?

2018年10月 7日 10:43

| #

| 引用

张淼

说:

嗯 讲的很清楚

2018年12月21日 11:31

| #

| 引用

风一样的男子

说:

老师,您好,我正在探究比特币的源码,现在有一块没弄清楚,就是同步机制.我想知道比特币的同步时机除了节点启动时,还有其他时机吗?特别时在处理孤块上,加入第k个区块在广播给A节点时丢了,那么对于A节点是采取怎样的措施来获得这个区块的呢?希望老师不吝赐教

2018年12月31日 12:08

| #

| 引用

哈哈

说:

很不错呢,通俗易懂。

2019年4月 9日 20:07

| #

| 引用

代富贵

说:

突然发现一个问题,有人(以为为例)炒币好几年了,说啥币都多少听说过,但是突然被问到到底什么是区块链,什么是加密货币的时候,还是一脸蒙。

2019年5月27日 17:02

| #

| 引用

柚子

说:

引用温国兵的发言:

纠正一个错误

“你可能看出来了,每 4 年奖励减半,那么到了 2140 年,矿工将得不到任何奖励,比特币的数量也将停止增加。这时,矿工的收益就完全依靠交易手续费了。”

这里应该是 2040 年。

每四年减半,要乘以4兄弟,就是2140年咯

2019年6月 1日 12:57

| #

| 引用

BitcoinFan

说:

引用haiker的发言:

为什么交易数据要包含双方的地址呢,既然交易数据中已经包含了公钥,而交易的支付方地址就是公钥计算hash得到,只提供公钥,私钥签名和接受方的地址和上次交易的hash不行吗?

交易数据其实压根就没有包含“地址”。地址只在应用层(钱包软件)里存在,在底层(区块链数据里)并不存在。

交易数据包含的是“输入”和“输出”。

每一项“输出”都含有金额和“锁定脚本”。就好像开宝箱一样,你必须有密码,或者钥匙(取决于这个宝箱最初是怎么制作的)才能打开,打开后想干啥就全部由你做主了。

一般情况下,锁定脚本的内容基本上就是公钥的哈希,外加一点点脚本操作码,

地址只是把公钥的哈希加上校验码,再用Base58编码了一下而已。加上校验码可以防止打错字,用Base58编码可以方便人类阅读。

每一项“输入”都要声明被“解锁”的是具体哪一笔钱,用上一笔交易的哈希(txid)和输出序号指定。同时还要拿出“解锁脚本”,一般就是公钥、数字签名,以及一点点脚本操作码。

2019年9月 6日 22:18

| #

| 引用

BitcoinFan

说:

引用haiker的发言:

为什么交易数据要包含双方的地址呢,既然交易数据中已经包含了公钥,而交易的支付方地址就是公钥计算hash得到,只提供公钥,私钥签名和接受方的地址和上次交易的hash不行吗?

更正一下,地址里不止包含公钥哈希和校验码,还有一个版本号。

实际上这还只是最简单的P2PKH地址,除此之外还有3开头的P2SH地址(含有脚本哈希而不是公钥哈希),以及bc1开头的P2WPKH、P2WSH地址(原生隔离见证地址,功能和P2PKH和P2SH类似)。

P2SH地址可以设置更复杂的脚本,也就是设定更复杂细致的解锁条件。一般它用于多重签名。除了多重签名,还可以“封装”隔离见证脚本,因为bc1开头的原生隔离见证地址很多地方还不兼容,封装成3开头的地址,就能保持兼容了(代价是交易略大,手续费略贵)。

对bc1开头的原生隔离见证地址来说,编码不再使用中本聪设计的Base58,而是使用重新设计的Bech32,只包含小写字母,但也可以全部转换成大写字母来表示(这样可以让二维码更小更“轻便”)。这样更方便在电话中口述这种用途。

2019年9月 6日 22:27

| #

| 引用

BitcoinFan

说:

引用haiker的发言:

为什么交易数据要包含双方的地址呢,既然交易数据中已经包含了公钥,而交易的支付方地址就是公钥计算hash得到,只提供公钥,私钥签名和接受方的地址和上次交易的hash不行吗?

比特币很多时候都是反直觉的……就比如“3开头的P2SH地址可以封装隔离见证”,可能会让很多人产生一种误解:“3开头的地址和bc1开头的地址往往使用同一个公钥”——实际上很多时候并不是这样,因为一般HD钱包都遵守BIP44/49/84规范,生成不同类型的地址时,使用的私钥也不一样;只有少数钱包,比如Bitcoin Core,在一些特殊情况下(老版本的addwitnessaddress,以及importprivkey/importpubkey导入单个私钥/公钥)是这么做的。

2019年9月 6日 22:32

| #

| 引用

BitcoinFan

说:

引用Tiger.xu的发言:

每个节点都包含了整个区块链(目前大概 100多 GB),并且节点之间时刻不停地在同步信息。------目前100多GB,后面随着时间推移,这个区块链是否会非常之大。而且100多GB的数据在这么多节点中复制,会不会造成网络堵塞?

确实是越攒越大的……有些比特币开发者反对增大区块,就是出于“历史区块增长的速度已经超过技术进步速度”这种理由。

网络堵塞,现在看还不至于,因为跑全节点的比特币用户算是少数(很多人只是在交易所里炒一炒,或者就只是用一下轻量级钱包而不是全节点钱包),而且只有一开始要下载那么多,后面只需要不断跟进就可以了,并不需要一遍遍地从头下载。

2019年9月 6日 22:36

| #

| 引用

BitcoinFan

说:

引用alex的发言:

有个地方没明白。

假如说矿工A抢到了这块区块。然后广播出去。大家承认了以后。这块区块的HASH值就定了。

然后再在这块区块中输入"A挖到了这块区块 获得12.5个比特币"。那这个输入信息不是会导致这块区块的HASH值变了么?

实际上当然是先把区块里的各种数据填好、把交易都打包进去,再发给矿机、让矿机去暴力试错凑hash值啊。矿机只需要拿到区块头、coinbase交易等很少的信息就可以进行挖矿了,并不需要拿到完整的区块。

2019年9月 6日 22:42

| #

| 引用

BitcoinFan

说:

引用老宽的发言:

区块链记录着完整的账本,而比特币本质是希望解决去中心化的问题。1M的块大小引起交易堵塞的问题我能理解,通过扩容等技术手段肯定能解决的,只是扩多少的问题了。但是这个只是解决交易速度的问题啊?

但是,将来积累的账本数据肯定越来越多啊,那岂不是意味着每个安装了比特币钱包的客户端软件都得同步这些账本信息呢,比如现在账本数据如果几百G能理解不是问题,但是将来账本数据累积了总会很大啊,这个问题怎么能搞定啊?

交易确认速度这个问题争议比较大。主流认可的办法是开发闪电网络,放弃原有的零确认交易。少数派的办法是用avalanche预共识加固零确认。还有侧链,以前经常提,现在已经有了liquid、rsk这些,却很冷清,几乎没人用。而且也有adam back等大佬认为侧链并不能从根本上解决扩容问题。

区块越攒越多的问题,也有争议。

有人坚持全节点必须把所有区块都下载验证一遍(启用修剪,也只是一边下载新的一边删旧的,并不是不下载旧的),有人就认为这么做太浪费,可以妥协一下,直接从最近的状态开始,跳过历史(也就是utxo commitment、assumeutxo之类的)。

以前对这个问题还提出一个解决方法,就是“欺诈证明”,也就是让轻量级客户端随机挑一部分进行验证,“众目睽睽”之下,总能发现猫腻。但是后来这个基本上是弃坑了,理由是如果有恶意矿工挖违反规则的链,那他完全可以把有猫腻的部分藏着不发出来,轻量级客户端拿它没办法,没办法证明这里缺了一块(而不只是网速卡了)。

引用DannyPei的发言:

我想问个问题,矿工们从网络上收集各种交易请求,组包并计算hash,当计算出的hash不满足要求时,是会更换或重新收集网络上的各种交易请求然后重新打包计算hash,直到所计算出的hash满足要求吗?(因为如果不更换组包的交易内容的话,计算出的hash还是会和原来的一样)这样的话作为一个交易请求的提出方,所提出的交易请求能否被认可、何时被认可都是完全未知的,这样将难以满足货币日常流通的基本需求。不知道是否是这样,求阮老师和各位老师解答。

区块头里有个nonce值,矿机一般是先修改nonce值。nonce值用完了,还可以稍微改一下时间戳,让时间戳前后稍微变动一下。除了时间戳,还有coinbase交易,可以用作extranonce,这里面的空间就大了,但是每次修改extranonce的计算成本都比较大,所以这一般是放到最后尝试。

还有像asicboost这样有争议的办法,(分显式和隐式两种,隐式asicboost里面有提到交换交易顺序,是多种办法中的一种),显式asicboost是修改nversion,争议相对较小。

2019年9月 6日 22:55

| #

| 引用

李晓铭

说:

请问博主,矿工们如何收集交易请求啊?我有一个交易,如何发给矿工呢?这个过程,需要一个中心转发吗?矿工们之间如何联系呢?

就像bt技术一样,最终离不开一个中心来发布种子和登记提供bt服务的ip地址,比特币和区块链能完全脱离一个中心吗?

2019年12月18日 17:38

| #

| 引用

BitcoinFan

说:

引用李晓铭的发言:

请问博主,矿工们如何收集交易请求啊?我有一个交易,如何发给矿工呢?这个过程,需要一个中心转发吗?矿工们之间如何联系呢?

就像bt技术一样,最终离不开一个中心来发布种子和登记提供bt服务的ip地址,比特币和区块链能完全脱离一个中心吗?

比特币有一套P2P协议啊,简单说就是一传十、十传百。

BT不也是有完全去中心化的DHT么,DHT是不需要Tracker服务器的。

不过,比特币的节点软件里确实有硬编码写进几个“种子节点”,一开始不知道其他节点的IP时,就可以向这些“种子节点”查询(这个查询用的是DNS协议,所以叫DNS seeding)。如果从其他途径来发现其他节点,比如手动添加、从已经连接上的其他节点查询等等,那DNS seeding就不是必要的。

这个话题细说的话就不简单了。

比如“节点”具体指什么呢?要是去阅读中本聪最初的介绍和发言,就会发现他默认“矿工即节点、节点即矿工”。

现在的话,“节点”(负责验证交易)和“矿工”(负责穷举哈希来“挖矿”)已经自然而然地分离了。

矿工自己并不会运行节点,他们会把矿机的算力输出给矿池,让矿池的“节点”(或者说是“全节点”full node)负责产生区块。

很多“全节点”背后也是没有算力的,只能监视网络,不能出块。

现在的比特币核心开发者大多认为用户需要跑全节点,因为全节点可以独立、完整地验证区块链账本的内容。

如果是SPV轻量级钱包的话,因为没有对交易内容进行验证,所以,理论上,即便是矿工打破了比特币的规则,比如凭空造100万币,那SPV也是无法识别的。

但是,全节点很笨重,很显然并不适合一般用户;而且有人认为“按照中本聪原本的设计,就不需要普通用户去跑全节点”,比特币的社区可以说也因为这个分歧而分裂了,反对“普通人应该跑全节点”的人很多转而去支持BCH(然后BCH又分裂成ABC和SV两个币……)。

比特币核心开发者则会指出中本聪很早以前就消失了,在他消失之前,他也并没有把SPV轻量级钱包设计完善,因为缺失了“警报机制”来提醒SPV不要去跟随违反规则的区块链账本。

2020年1月 4日 02:06

| #

| 引用

BitcoinFan

说:

还有,矿池之间可能未必是走比特币自身的P2P网络,他们可能还会走更快的FIBRE、Falcon等更加中心化、但也更快的网络,这样可以避免自己因为网络通信不畅(没有及时收到最新区块,或者没有及时把自己新挖出的区块广播出去)而挖出废块。

2020年1月 4日 02:11

| #

| 引用

JAK

说:

用核心钱包交易是不是每次交易都会生成一个新的地址,且钱包内所有的比特币都会转移到新的钱包内,接收了比特币是不是也是一样,所有的比特币包括不是交易所得的比特币都会自动到一个新的找零地址里去?

2020年3月31日 12:15

| #

| 引用

BCG

说:

引用温国兵的发言:

纠正一个错误

“你可能看出来了,每 4 年奖励减半,那么到了 2140 年,矿工将得不到任何奖励,比特币的数量也将停止增加。这时,矿工的收益就完全依靠交易手续费了。”

这里应该是 2040 年。

就是2140年,不是2040.

2020年4月30日 12:07

| #

| 引用

BitcoinFan

说:

引用JAK的发言:

用核心钱包交易是不是每次交易都会生成一个新的地址,且钱包内所有的比特币都会转移到新的钱包内,接收了比特币是不是也是一样,所有的比特币包括不是交易所得的比特币都会自动到一个新的找零地址里去?

避免重复使用同一个地址,这个是中本聪的白皮书里提到的。这是一种很鸡肋的、聊胜于无的隐私保护措施。

每次收款时都用新的收款地址,结合每次转出时都用新的找零地址,双管齐下,理想情况下就分不清哪个地址是回到原主人手里的找零,然后就无法进一步追查资金去向,从而保护隐私。

实际上有不少情况会泄露“哪个地址是找零”这个信息;甚至还有不少轻量级钱包是直接上传xpub主公钥的,钱包服务商直接就知道哪些地址背后是同一个主人了。

(而且Bitcoin Core虽然是HD钱包,但是用的是很蛋疼的hardened derivation,压根就没有xpub主公钥——这个情况可能在未来版本会有所改革,开发者现在正在做descriptor wallet)

每次转出,并不是会把所有币都转移到新的找零地址上。这要看你转出的金额大不大,以及你的钱包如何“选币”,选择花掉哪些UTXO。一般情况下钱包是只选择差不多够用的UTXO(所以这也会造成交易里的找零输出项金额较小,可以被猜测分辨出来;但是如果选了太多UTXO,也要注意,把不同地址上的币同时花出去本身也是隐私信息泄露,因为这样透露了这些地址背后实际上是属于同一个主人)。

2020年10月 2日 01:56

| #

| 引用

undefined

说:

挖到新区块的矿工可以获得比特币奖励,奖励的数量逐年递减,这个机制可以修改吗?谁来决定呢

2022年4月15日 11:56

| #

| 引用

sutungpo

说:

请教下在第三部分交易流程中:

转出比特币的一方提供的数据中的数字签名是不是也保证了交易金额的属实?否则交易的金额在申报提交过程中存在被篡改的可能性?

2022年8月15日 14:54

| #

| 引用

我在2023看世界

说:

2023年再看这篇文章,确实受益匪浅

2023年5月12日 21:43

| #

| 引用

我要发表看法

您的留言

(HTML标签部分可用)

您的大名:

«-必填

电子邮件:

«-必填,不公开

个人网址:

«-我信任你,不会填写广告链接

记住个人信息?

正在发表您的评论,请稍候

«- 点击按钮

Weibo |

Twitter |

GitHub

Email: [email protected]