V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
sudo123
V2EX  ›  Bitcoin

什么是比特币?

  •  
  •   sudo123 · 2016-12-14 15:53:17 +08:00 · 1904 次点击
    这是一个创建于 2900 天前的主题,其中的信息可能已经有所发展或是发生改变。

    文:昌用

    来自:巴比特


    理解比特币的第一道坎,是搞不清它到底是什么东西。作为“币”,比特币跟纸币、硬币的差别太大了。媒体为了迎合大众,纷纷给文章配上闪闪发光的“比特币”,其实没有一个是真的。比特币是没有实物的货币,理解它不能老想着那些实物币。

    一、 比特币是一个公共账本

    理解比特币,首先要理解账面上的货币。其实日常生活中,我们的钱只有很少一部分是能捏在手里的钞票,大部分都是银行账上的数字。你有 10 万元存款在银行,并不意味着银行要替你把 10 万元钞票放在金库里,只要记个数在账本上就行了。实际上,全国人民的钱只有极少量以钞票的形式存在银行里,绝大部分都是各银行账面上的。比特币干脆连极少量的钞票都不要了,全都记在账上。比特币本身就是一个大账本。银行帐本里的记账单位是“元”(¥),比特币账本里的记账单位就是“比特币”(฿)。

    银行账本严格保密,有先进的安全措施防止人偷看和篡改。但比特币的账本是完全公开的,谁都可以拷贝一份来看看,甚至记上一笔。这岂不是太不靠谱了!别急,看并不意味着你知道谁有多少钱,记账也不意味着你能随心所欲。

    二、 比特币系统中的账号和密码

    比特币账本并不记录某人有多少币,只记录某些账号有多少币。至于这个账号是谁的,账本不记载。那么,我怎么能够自己拥有 1 个比特币呢?如果有一种办法保证只有我能支配某个账号中的比特币,那我就“拥有”了这些比特币。比特币系统通过一种加密技术实现了这一点,并且不需要透露我的任何个人信息。

    在比特币系统中,每个比特币账号(称为公钥)都有一个对应的密码(称为私钥),只有知道密码的人才能支配相应账号的币。这样看来,拥有比特币跟拥有银行存款差不多,谁掌握了银行账号的密码,就能支配该账号的钱。但在银行,你取钱必须提交密码,银行这个密码跟他们保存的密码比对,一致了才会提款,这叫对称加密。这里,你支配银行账号存款的前提是:银行值得信赖,且技术高超,密码不会被泄露。在比特币系统中,采用的是一种“非对称加密”技术,让别人不必看到你的密码,就能确信你拥有这个密码,从而不需要信任任何第三方。

    凭借“非对称加密”技术,在比特币系统中,作为密码的字符串 A 可以推算出作为账号的字符串 B ,但反之不能。我知道密码 A ,别人不知道,我就可以支配账号 B 的比特币。支配的方法是:我用密码 A 同一个支付命令(如“支付给账号 H 一个比特币”)混合运算得到加密信息 X ,这个过程称为签名。然后把字符串 X 告诉大家。任何人并不需要知道密码 A ,只需要公开的账号 B 就可以将 X 还原成转账指令,即解密。因此,每个人都能通过解密,验证我同意了“从账号 B 支付给 H 一个比特币”。这样,不需要银行,我就在不泄露密码 A 的情况下,行使了对账号 B 中比特币的支配权。换句话说,你知道某个账号的密码,你就有权支配该账号的所有币,而比特币界的第一原则就是:私钥就是一切,永远不要泄露私钥!

    有了非对称加密技术,比特币账本就可以随便拷贝了,上面没有保存密码和个人信息,只有账号、余额和转账指令,我和我的比特币都是安全的。接下来的问题是谁来记账,怎么记账,记账时能不能给自己账号的余额后面加个 0 ?

    三、 比特币系统怎么记账

    比特币记账就是把人们用密码签名后的转账指令记到账本上。按上例,就是在地址 B 上减少 1 个币,在地址 H 上增加 1 个。跟现实中会计记账差不多,比特币系统每隔一段时间,现在大概是 8 分钟,会把期间发生的所有转账指令记在一个新帐页上。记新帐页的时候,会把旧帐页的所有信息压缩计算成一串字符,写入帐页开头,这就像会计帐页编号一样确定了所有帐页的顺序,也使得篡改前面帐页中的任何一点信息,都会导致后一帐页的字符串对不上,产生连锁反应,使篡改很容易暴露。这样的账页称为区块( Block ),由编号穿起来的所有帐页形成一个大账本,叫区块链( Blockchain ),比特币系统的核心就是这个大账本。

    比特币账本可以人人保有,任何人也都可以记账。但是,不同的人在不同的时间记账,要保证所有账本记得一样几乎是不可能的。但不一样的话就乱了, B 到 H 的转账,有的人记了,有的人没记,账号 B 和 H 到底有多少币说不清了。解决的办法是,一个帐页只能有一个人来记。所有想记账的人在记账前必须做一道数学题,这道题根据前一帐页的编号和待记账的新转账指令来出,最先做出这道题的那个人才有权记录这个新帐页。再过 8 分钟,系统再根据新发生的转账指令出一道新题接着做……。

    记账时,如果两人收集到同样的交易指令,做出了同样的题,那么第一个做出的记账,后面的人白做了。如果两人收集到的交易指令不一样,就做不一样的题,做出之后各记一个帐页,再出新题,分别接着记账,这就出现了分叉。不要紧,两边记账的速度总是不一样的,规则规定记得慢的这一支会被丢弃。这样,所有人都会保留账页最多的账本,即最长的区块链,因为不这样的话,自己保留的账本就不会被多数人认可,就毫无用处。这样,所有人就能够保持唯一的公共账本了。

    记账是件麻烦事,谁愿意去记账呢?不用担心,记账是有好处的。规则规定,成功记账者可以在新帐页给自己账号添 25 个币,而且所记录的各项转账指令中往往也包含少量交易费,这也归记账者,这些就是对记账的奖励。这个记账过程被称作挖矿,记账者称为矿工,第一个矿工是中本聪。每帐页 25 个币的记账奖励是唯一的新发行比特币的办法。这种发行奖励约每四年减半, 2140 年前会减为 0 ,那时矿工收入就只能靠交易费了。

    四、 比特币账本安全吗

    在银行系统中,抢钱的最佳途径是侵入银行电脑,将其他储户的钱划转到自己账号上,或直接在自己账号余额后加几个零。这在比特币系统这几乎是不可能的。比特币账号的余额由转入该账号的转账指令确定。这些转账指令都被转出账号的密码进行了签名加密,要想篡改转账数额就必须破解转出账号的密码。以比特币现在所采取的非对称加密技术,用当今最快计算机破解一个账号密码的难度超过在全球沙滩上寻找某一粒沙子。那么,作弊者能否篡改帐页,给某个地址凭空增加余额呢?不能,因为: 1 )这需要同时修改全球总保有量的 51%账本,否则篡改得不到确认,得到的币花不出去; 2 )后续帐页记账时都会检查前面帐页,凭空产生非法余额的帐页会被丢弃。

    更可行的作弊发生在登记新帐页的时候。作弊者先把自己账号 B 中的币转到账号 H ,交换 H 账号所有者的东西,比如美元。但收到美元后,作弊者立即再广播一个将 B 账号的币转到自己的 I 账号的指令,并且利用自己掌控的计算能力夺得记账权,使 B 到 I 的交易率先记入大账本。这样,由于 B 账号余额不足, B 到 H 的转账指令将会被拒绝,这样就骗得了美元,而没有支付比特币。

    由于记账是全部矿工共同的竞赛,其他矿工先看 B 到 H 的转账指令,因此会先确认该转账,而放弃 B 到 I 的转账。这样,作弊成功的前提是作弊者掌控的计算能力超过其他所有矿工之和,即掌握全球 51%以上的挖矿算力,这样才能保证抢在所有其他人之前把 B 到 I 的转账计入账本。因此,这种作弊被称为 51%攻击。

    掌握总挖矿算力的 51%很不容易,但更重要的是,发动一次 51%攻击,还要找到适当的欺骗对象,只能一次性欺骗一个人,对账本并无损害,而且实施攻击容易暴露,难以继续。实际上,有了这么大的算力,诚实挖矿可以持续获得 51%的新增比特币(目前大概每天新增 4500 个),收入可观,且可持续。

    五、 比特币的记账规则可靠吗?

    按上述规则,比特币账本和记账方法好像很安全。但是,人们为什么共同遵守这些规则,有人能够改变这些规则吗?尤其是,作为比特币系统最初设计者,中本聪会不会突然改变规则,给自己增发 100 万个币?或者,算力很大的矿工能不能把记账奖励从每个帐页 25 个改成 2500 个?这些是新手很担心的事情,也是“大众专家”常用来警醒世人的质疑。

    比特币的记账规则称为“协议”,最早是由化名“中本聪”的人提出的,到现在都没有人知道他是谁。不过这丝毫不影响比特币规则的可靠性。因为,比特币的规则跟比特币账本一样,也是分散保存的,遵循多数战胜少数的原则。因为: 1 )比特币相关的矿工、交易者、公司等,都使用依据记账规则设计的软件进行挖矿和交易。要想使自己的挖矿奖励或交易成功记入总账本,就要遵循多数人所遵守的记账规则。如果少数人改变了记账规则,挖矿和交易信息就会与多数人的不同,就不能记入总账本; 2 )比特币规则以及基础性的软件都是开源的,即程序的代码都是在网络上完全公开,谁都可以看,可以测试。人外有人,破坏规则的作弊软件难以蒙蔽所有人。

    那么,是否比特币记账规则就不能更改呢?不是的。按照多数人决定的机制,如果一项修改能够使多数人获益,比如使交易确认效率更高,或使系统更安全,那么修改后的记账规则和软件一旦发布,很快会被多数人采用,新的规则就会取代旧规则,而不管修改者是谁。也就是说,谁都可以修改规则,但只有对多数人更有利的规则才会保留下来。所以,即使中本聪也不能肆意改变规则,即使你我,如果真有能力,也可以改变规则。比特币协议这种与多数人利益相容的改进机制,使比特币系统具有了更强的生命力和可靠性,能够应对更大的挑战。

    目前,对比特币系统的两个更加靠谱的担心是: 1 )其他虚拟货币能否取代比特币? 2 )超级计算机或新的计算方法被发明,破解了比特币的非对称加密算法怎么办?

    由于比特币协议和相关软件都是公开的,谁都可以复制和改进,如果有一种币在技术上有所改进,会不会取代比特币呢?这是一个现实问题。已经出现了许多种币,号称超越比特币(多数被称为“山寨币”)。但是,作为货币,持有和使用的人越多,愿意持有和使用的人就会更多。相似的货币,使用者少的货币自然会被淘汰。对于其他虚拟货币的优势,当被实践检验确实重要时,可以通过比特币协议的改进纳入进来。因此,在比特币已经远远领先于其他虚拟货币的情况下,被取代的可能性不大。

    如果超强的计算机被发明,比如传说中的量子计算机,或者破解加密技术的算法发生重大突破,比特币所依赖的非对称加密技术的确有可能被破解。但是,由于比特币协议可以改进,当这种发明或技术突破出现,分布在世界各个角落的比特币参与者会很快发现并传播。为了共同的财富安全,比特币世界很容易达成共识,暂停所有转账,修改规则和相关软件,采用新的算法提高破解难度。这是对多数人有利的,因此很容易获得多数人的同意。随着新的规则被多数人接受,比特币系统得以继续安全运行。所以,尽管比特币的记账规则是可变的,但这使它变得更可靠。

    六、 比特币是互联网时代的自由货币

    比特币是一种货币,但不是实物货币,而是记账货币。区块链是比特币系统的总账本,人人可以查看、记录和保存,多数人认同的版本将被更多人接受,这种简单多数原则保障了总账本的一致性,也为每个人的所有权提供了最可靠的证明。简单多数原则也保证了比特币账本的记账规则的可靠性,代表了多数人利益的规则就是正确的规则,这保证了比特币系统的生命力。

    比特币的账本和规则不包含任何主权、种族、宗教、性别的隔阂,任何人都可以了解它,并参与其中。因此,比特币是全世界、各民族、各种宗教通用的货币。由于摆脱了主权的控制,各国政府不能够控制比特币的发行,比特币将按照多数人同意的规则增长,货币滥发造成的通货膨胀不会出现在比特币经济中。因此,比特币是一种无国界、不可滥发的记账货币。

    迈过了理解的门槛之后,享用比特币的方法很简单:拥有比特币只需要记住一个密码,交易比特币只需要有电脑网络。除了私钥,比特币没有秘密,任何人都可以深入到比特币系统最深的核心,可以成为账本的记录者和规则的制定者。在这里,个人的自由和才能得到充分体现,比特币就是互联网时代的自由货币。

    捐助地址: 1BHJCt2Ao3FtNKtk2vqATP8kyac9NerFpC

    原文: http://www.8btc.com/what_is_bitcoin

    9 条回复    2017-01-03 01:36:51 +08:00
    clino
        1
    clino  
       2016-12-14 15:55:34 +08:00
    我一个比较大的担忧是硬件和网络的发展会不会跟不上账本膨胀的速度?
    sudo123
        2
    sudo123  
    OP
       2016-12-14 16:06:16 +08:00
    @clino 这确实是个问题。目前比特币的解决方案——“隔离验证+闪电网络”是可以解决这个问题的。但是目前比特币社区内部有部分人( Bitcoin Unlimited )认为这不是问题……
    misaka20038numbe
        3
    misaka20038numbe  
       2016-12-14 16:27:02 +08:00
    来一场全球性的电脑病毒,GG
    clino
        4
    clino  
       2016-12-14 16:38:54 +08:00
    @sudo123 为什么觉得这不是问题?
    反正我上次试同步下 bitcoin 花了我那么长时间就觉得这个东东是不是现在只能在服务器上做,那怎么叫分布式钱包啊...估计最后这个实验还是会完蛋
    sudo123
        5
    sudo123  
    OP
       2016-12-14 16:40:27 +08:00
    @clino Bitcoin Unlimited 那群人认为,以后比特币客户端都是专业的运营商来跑的,普通用户没必要使用全客户端
    frienmo
        6
    frienmo  
       2016-12-14 18:14:11 +08:00
    在一个程序员的论坛,还要科普比特币,说明比特币现在是真便宜~~
    yjzll
        7
    yjzll  
       2016-12-14 19:36:09 +08:00 via Android
    胆子大,不怕被人喷啊,我从不对人谈这个,没用
    loading
        8
    loading  
       2016-12-14 20:45:15 +08:00 via Android
    @frienmo 加 1
    Kuro
        9
    Kuro  
       2017-01-03 01:36:51 +08:00
    @frienmo 加 2
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2765 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 13:47 · PVG 21:47 · LAX 05:47 · JFK 08:47
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.