Go大咖说第一期《比特币、区块链和Go开发》

姜家志 · · 20945 次点击 · · 开始浏览    
这是一个创建于 的文章,其中的信息可能已经有所发展或是发生改变。

个人介绍

姜家志,2013 年开始接触比特币,之后开发了比太钱包,现在在比特大陆从事比特币相关的开发工作。


引言

大家好,我是姜家志

首先感谢下谢大神的邀请,能有机会和大家进行交流,我是 2013 年开始接触比特币,当时花了很长时间在了解比特币原理和看比特币的源代码上。

之后我们发现比特币没有好用的钱包,就开发了 "比太钱包"(bither), 比太钱包是中国人开发的唯一的一个上 bitcoin.org 的钱包,截图中就是比太钱包。

另外的一个是 btc.com 钱包是我现在所在的公司开发的钱包,是由我们公司的欧洲团队开发的钱包。

我从 2014 年开始接触 Go 语言,接触之后就深深的喜欢上了 Go, 之后就开始有计划地学习 Go 语言,自己做了几个 demo 性质的网站,主要是个人 blog、论坛、和版本发布。使用的框架是 beego,在这里要再次感谢下谢大神开发的 beego,这个框架的源代码是相当的优雅,是我等学习的楷模。

我现在在比特大陆,主要从事比特币协议相关的开发工作。今天借助这个机会给大家聊聊比特币,以及区块链行业在使用 Go 开发的情况。让大家对比特币和区块链行业有一个大致的了解。

大纲

这个是我们今天的内容摘要,主要内容包括:比特币介绍,区块链行业介绍,区块链行业使用 Go 的情况,最后简单介绍下我们公司和我们做的事情。下面正式开始我们今天的内容。

比特币介绍

首先介绍下货币的历史,以中国的货币历史为例,主要是中国的货币历史很长。

(1) 贝壳,是中原一带最早的货币形式,是一种主导位置的货币,汉字中很多交换有关的字都是以贝作为部首的,比如 "赚",“货” 等
(2) 铜币,商朝的时候出现了铜币,根据目前的发现,这是人类历史上最早开始使用的金属货币。我们开始进入金属货币的时代。
(3)铸币, 周代的出现铸币,例如刀币。
(4)铜钱, 秦至两汉,秦始皇统一度量衡,统一货币,使用铜钱
(5)交子,这个在宋代出现,是人类历史上最早的纸币
(6)金银,元明两代纸币出现了严重的通货膨胀,之后以金银作为基础货币。为了流通便利,晋商还发明了票号。
(7)法币,国民政府进行币制改革,银元禁止流通,学习过历史都知道这个时候出现了严重的通货膨胀,法币归 0。
(8)信用货币,从布雷顿森林体系结束之后,人类进入信用货币的时代,就是以政府信用为背书作为货币的发行。随着移动互联网的发展,我们已经在逐渐脱离实物货币,使用数字货币,比如微信,支付宝,信用卡等。
(9)虚拟货币,那货币发展的下一步会不会是以比特币为主的虚拟货币的时代呢?这里我们先打一个问号。

从上面的货币发展的历史可以看到,人类使用法币的时代很长,历史上大多数时间内都是使用金属货币为主,货币的发行也不是完全以政府为主导的。
而且纸币的发行很容易就出现恶性的通货膨胀,除了恶性的通货膨胀之外,我们还常常听说温和的通货膨胀,下面就来看看温和的通货膨胀是什么?

布雷顿森林体系是以美元和黄金以固定的比例兑换为主的,1973 年布雷顿森林体系崩溃,美元的价值在持续性的下跌,2013 年一美元的购买力只相当与 1913 的 0.05 美元,美元贬值 95%。而美元以当前来说最稳定的货币之一。这就是温和的通货膨胀,你的财富如何消失的,看看温和的通货膨胀就明白了。

在当今的社会恶性通货膨胀也在持续的发生,比如最近发生的:
(1) 津巴布韦月通货膨胀率最高为到 11,200,000%
(2) 2014 年俄罗斯卢布持续贬值
(3) 委内瑞拉玻利瓦尔一次性贬值 89%
(4) 印度纸币废除事件

从过去的历史和当前发生的事件来看:

  • 法币会持续的贬值

  • 恶性通货膨胀事件一直都会发生

  • 有些国家的政府信用并不那么可信

    相信大家对于 "财富是如何消失的?" 有一个大致的了解了,那么这些和比特币有什么样的关系呢,比特币又是什么呢?

我们首先先说下比特币的诞生

2008 年互联网有一个叫 "Satoshi Nakamoto" 的人,发布了一个论文,叫做 <比特币: 一种点对点的电子现金系统>。2009 年,Satoshi 本人开发比特币系统代码,创世块诞生,里面有一段话:“ The Times 03/Jan/2009 Chancellor on brink of second bailout for banks” 泰晤士报当天的头版文章标题,政府开始第二次救助银行。2010 年之后,Satoshi 本人逐渐消失。

2010 年 5 月 22 日,程序员 Laszlo Hanyecz 用 10000 个比特币买了 2 个披萨,价值 25 美元,这是比特币的第一次交易。
当前比特币的价格是 15473 元,2287 美元一个。上涨幅度之大也是比特币倍受关注的原因

为什么比特币会不断的上涨,首先比特币是一种通缩的货币。

右边的图是比特币购买力的变化,这就是通缩的力量。

当前比特币的购买力是 2014 年的 10 倍左右。

比特币不是通货膨胀的货币,而是通缩的货币,童年还没有过完的经济学家才会说 “通缩是有害,温和的通胀是有有利于经济发展的 “。历史上金银也是通缩的,而比特币的总量是固定的 2100 万枚。通胀就是在抢劫你的财富。

比特币的发行是通过减半机制来实现的,比特币是通过挖矿产生的,其中有一笔特殊的交易叫做 Coinbase,这笔交易就是挖矿的奖励也就是比特币的发行。最初的时候奖励挖一个块是 100 个比特币的奖励,每四年半就会减半一次,现在挖矿的奖励已经编程了 12.5 个比特币了。

那么比特币的机制能不能被改变,答案是不能,因为比特币是去中心化的。比特币并不是由单一组织控制的。

比特币的底层网络协议是 p2p 网络,不依赖于任何一个单一的服务器,而且比特币的源代码是开源的,由比特币社区共同去维护的。

比特币不受任何一个但与组织的控制,开发者,矿工,交易所,用户共同组成比特币社区,相互协调维护比特币的发展。比特币的运行依赖于比特币的每一个节点,但是单一节点运行失败并不影响整个比特币网络。

而做为货币本身来说是需要信用的,简单来说就是信心,那么比特币的信用是那里来的呢?

比特币的信用来源数学, 来自于密码学,比特币是数学保护的财富。

人类历史上第一次能够完完整整的控制自己的财产就是比特币,比特币私钥是唯一的凭据,失去私钥将失去比特币

比特币采取的是非对称加密算法 (ECDSA), 而挖矿是采用的 hash 摘要算法 (sha256), 地址(公钥)用来登记所有权,而他的供给是几乎无限的,因为私钥的概率空间是将近 2^256,无法被暴力破解。比特币只要有网络就可以使用,没有地区的显示,全球无缝流通。

而比特币采用的是 UTXO 模式,他的原理就是,比特币的区块链账本里记录的是一笔又一笔的交易,每笔交易都有若干交易输入,也就是资金来源,也都有若干笔交易输出,也就是资金去向,每一笔交易都要花费(spend)一笔输入,产生一笔输出。未花费过的交易输出”,也就是 UTXO。比特币账本只会记录交易,而不关心 "地址",如果需要知道地址上面有多少余额,就需要找到该地址上面的 UTXO,计算出其余额,这就是钱包的功能。

而且比特币没有假钞,天然审计的,人类花在假钞识别的成本也是巨大的。在大量的使用微信和支付宝之后要假钞的问题要好了很多。我们要感谢科技带来的改变。

比特币系统有三大特征,上面说了比特币的去中心化,还有两个分别是工作量证明和链式结构。

区块链行业介绍


先说下工作量证明

工作量证明(POW)最主要是为了解决拜占庭难题。

拜占庭难题,是点对点通信中的基本问题: 在分布式计算上,不同的计算机透过讯息交换,尝试达成共识;但有时候,系统上协调计算机或成员计算机 可能因系统错误并交换错的讯息,导致影响最终的系统一致性

比特币系统中就是诚实节点在工作,而非诚实的节点有可能会给你错误的信息,那如何来保证系统是向正确的方向发展呢,这就是工作量证明机制,工作量证明是使用时间戳来标识链的增长,而出现分叉的时候以最长链为主,挖矿模拟的是人工在挖黄金的劳动,最长链就表示劳动最大。就是可以信赖的链。

POW 还解决了一个重要的问题就是 "双花",就是一个地址上面的比特币是可以花给 A,也可以给 B 的,这个时候我们怎么确认那笔交易是有效的呢?假设一个人有 51% 的情况,他是有能力抹去已经确认的交易的,这时我们就需要等待 6 个确认才可以(长链)。想更改 6 个确认的交易基本上是不可能的。

比特币的链式结构分为两种,交易的链式结构和块的链式结构。

先说下交易的链式结构。

比特币的交易是又输入和输出构成的,除了 Coinbase 是奖励以外,每一笔交易都比如有最少一个输入,而每一笔交易的输出在花费的时候又构成了另一笔交易的输入。所以每一笔交易都可以通过输入追溯到 Coinbase 交易,在一个输出没有动用的时候他就是 UTXO,如果通过了就必须在输出里面的金额花完,该输出被花费永久的记录在区块链中。而在动用 UTXO 的时候,所有者必须使用私钥对交易进行签名,把交易 + 签名 + 公钥发送给全网络,比特币节点就会对交易进行验证。

而这些验证都是由比特币的节点和矿工去完成的。

比特币的块链借给就是区块链。

块的链式结构,就是比特币打包的块,除了有交易以外,还有前一个块的 hash 值,这样,每一个块都包含了前一个块的 hash 值(前一个块的引用),通过块 hash 值,就能不断的向前追溯,一直追溯到创世块。

这样的结构的是不可能更改的,如果要更改就会被 POW 限制。

前面我们说过金属货币在面对信用货币的时候输了,其实是因为金属有自己先天的弱势,比如不容易携带。

我们给别人介绍比特币的时候我们常常用黄金来类比比特币,其实比特币比黄金还是有很多的优势的。

除了很黄金一样的稀缺性,不可替代性之外,比特币对于黄金有很多的优点,而且比特币是可以切割到 10^8 之一的,所以用来做货币是有很大的优势的

比特币只要有私钥,在网络的地方就可以动用你的比特币,因此也不存在携带的问题。而且别人是无法知道你是有比特币的

下面说说比特币的合法情况

在比特币 6000 点的时候,中国央行开始对比特币三大交易所进行检查,然后比特币涨到了 20000 点,为什么呢?

其中有一个很重要的点就是日本的对于比特币完全合法的,日本是世界第三大经济体,影响力可见一斑。其次比特币在欧洲,菲律宾,和澳大利亚都有比较明确合法的政策。而印度和韩国是有可能合法的。

在中国是可以做为商品自由买卖的,今年央行从 1.11 开始查交易所,6.1 交易所正常提币。从一个侧面来说,央行用半年的时候来帮助我们审核了下比特币是没有问题,不是传销,不是庞氏骗局,没有洗钱问题。央行花了很长的时间帮我审核的。

以上是比特币的一个大概情况,我们经常对身边的人说,应该考虑买点比特币。为什么应该拥有一点比特币呢?

在比特币 2000 的时候我常常劝身边的人可以买点,如果买个一万块钱的,比特币再涨 100 倍,这还是有不少钱的,而且又能参与一项巨大的技术发展。何乐而不为!
即使比特币归零了,也不是太影响生活。上面是给出的拥有比特币的一些理由,对于对奥派感兴趣的朋友应该是知道哈耶克的《货币非国家化》这本书,奥派的书还都值得看看的。我本人也是一个奥派。

区块链行业使用 Go 的情况

上面介绍的是比特币,下面给大家介绍下区块链行业的现状。

比特币是区块链的最早应用,而采用区块链的结构是因为比特币为了实现去中心,不是为了更容易获取数据,作为码农都明白,结构化的数据才是最好处理的数据,而区块链结构的数据并不好处理,比如要一个地址的交易,就需要找遍所有的块。

而区块链解决的不是效率的问题,解决的是信任,数据保护的问题。

这个行业因为和金钱打交道多所以赚钱的机会就多了一些,价格的持续上涨本身就造就了不少富豪。区块链的大多数项目都是开源的。

而区块链行业使用的都是什么编程语言呢?

区块链行业所使用的编程语言需要满足,执行效率高,高并发,跨平台,对于网络开发要求比较高等特点。

早期的项目是以 c++ 为主,现在的一些项目都开始使用 Go 语言。下面举两个 Go 语言比较有名的区块链项目。

以太坊,是一个智能合约的平台,该平台具备图灵完备,简单来说就是可以编程,右边是他从 16 年到现在的涨幅,涨了 100 多倍,现在很火的 ICO(类似与 IPO,创业公司直接获取到大量的资金)都是借助以太坊来实现的。他有两个语言的实现 Go 和 c++, 使用 Go 方案的比 c++ 的要多。

Hyperledger fabric,因为是 Linux 基金会支持的,IBM 主持的项目,所以一开始就比较火,Go 语言开发

为什么区块链行业会选择 Go 语言开发呢?

因为 Go 语言具备以下的优势?

有人也尝试过使用 node.js 和 python 的实现,但是这两个语言并不是适合构建系统级别的项目,在不久的未来区块链行业会有越来越多的人使用 Go。这是一个趋势。
当然 c++ 也具有 Go 的很多有点,但是 C++ 太复杂了,做 c++ 开发很多时候你需要把精力关注在语言上,而不是项目上。Go 作为一种工程化的语言,的确他的优势越来越明显。我从 2014 就喜欢上 Go 也是这个原因。
区块链的项目都需要面对高并发,时刻与网络通信,所以 Go 是个不错的选择。
下面是 "广告时间",简单的介绍下我们公司,虽然有广告的嫌疑,但是我们公司还是家比较有意思的公司。

公司介绍

我们公司的文化是主张不断学习的,所以我们对于程序员所使用的编程语言并不是特别在意。我们公司内有两个项目完全以 Go 语言为主开发的,下面简单给大家介绍下.

这个是我们正在做的项目,对整个比特币协议层进行优化

最后来简单说下我们的团队文化,我们是一家以技术驱动的公司,所以也十分推崇工程师文化。

我们认为一个好的工程师天然就是一个好的产品经理, 而且公司不需要监工,扁平化管理,每个人都要 "干活", 我们认为一个需要管理的工程师肯定是没有创造力的。公司的待遇好这个就不用说了.... 很好的,说了那么多其实我想说我们公司也在招优秀的工程师 。

QA


  1. Q: 怎么看待近期比特币扩容的问题? 是否会分叉, 比特币的持有者需要注意什么?
    A: 比特币扩容是必然的,不然吞吐量不够,不能继续往前发展,比特币分叉并不可怕,历史上的分叉也不少,只要你保存好自己的私钥就好。


  2. Q: 以前听说 btc 总量是有限的?这对于后面加入的玩家会不会太不公平?扩容是能解决这个问题吗?
    A: 总量有限的,世间没有绝对的公平,早期投资比特币的人类似于风险投资,有收益也有风险。扩容的问题必然要解决。


  3. Q: 智能合约目前有和现实生活结合的案例么?
    A: ICO 是一个很好的例子,初创工作在不经过风投的情况下能够融到很大的金额,有一些融资都上亿的。对于创业公司是件好事


  4. Q: 问点技术以外的。比如现在比特币已然成为了暗网的通用货币。包括最近的几次勒索软件,支付方式也是以比特币的方式进行。早些年暗网的黑市活动在比特币出现之前,并没有这么猖獗。从阴暗面的角度,比特币的将来是否需要在这个层面进一步改进和优化?
    A: 比特币只是一直支付工具而已,其实比特币是相对比纸币要容易追踪的,而且技术本身是中心的。另外对于一些事物的理解奥派也有不同的解释。


  5. Q: 比特币是否有性能挑战,比如一秒能处理的最大 Transaction 数
    A: 现在一秒能处理 3 笔交易,比特币正在扩容,扩容就是为了解决这个问题的


  6. Q: 当有交易发生时的广播,用的是什么机制才能保证大部分分布在世界各地的矿工们能够及时收到
    A: 比特币系统是 p2p 网络,每一个节点就负责向其他节点广播。


  7. Q: 比特币是否只是虚假的去中心化,比如一段去掉 2100 万货币总量限制的代码,能否被提交到比特币代码中,是由谁决定的?这个决定权是否就是比特币世界的统治者?
    A: 这个时就是 pow 决定的,如果要更改需要所有人的同意。比特币世界没有统治人,扩容的问题那么久也无法产生一致就是个例子,单个组织和个人无法控制比特币。


  8. Q: 为了防止所谓的量子计算机的供给,比特币钱包一般公开的是钱包 ID 而非公钥,公钥只是在进行转账的时刻才公开。那么如果我向一个从来没有转出钱的钱包进行转入操作,矿工如何验证这是一个合法的钱包 ID
    A: 比特币有一个地址的概念,他是公钥的 hash,使用地址可以避免公钥的暴露


  9. Q: 比特币钱包本质上是一个私钥,这给比特币带来了巨大的匿名安全性,人和钱包没有对应关系。但是在一些新的区块链应用中,比如公开政府选举投票区块链,我们需要有钱包与人的对应,而比特币目前显然做不到这一点,请问业界有解决方案吗?
    A: 这个不是比特币解决的问题,如果比特币解决了货币的问题已经很牛逼了,选举的问题可以考虑其他的区块链解决方案


  10. Q: 能不能问下,现在主要都有哪些应用层面是基于区块链吗?
    A: 日本有很多的结算已经开始使用比特币了,具体的应用层面到我们生活中的例子还很少。


  11. Q: 一直有疑问,为什么交易经过 6 次确认,就能避免双花问题?为什么不是 5 次或者 7 次呢?这是推论吗还是经验上的结论
    A: 6 次确认是算出来的.
    当 q=0.1 z=6 P=0.0002428 本双华的概率很小了。其实小额的话一个确认就没有啥问题了


  12. Q: 请问挖掘比特币是什么概念?可通过什么工具实现?如果比特币数目是固定的,是不是已经挖的差不多了?
    A: 比特币挖矿现在主要是使用专业算 sha256 的芯片来完成的
    这是矿场的图片, 1. 挖矿奖励完成需要 100 年的时间 2. 比特币每一笔交易是需要支付交易费的,以后的挖矿交易费会是主要的收入



有疑问加站长微信联系(非本文作者)

本文来自:微信公众平台

感谢作者:姜家志

查看原文:Go大咖说第一期《比特币、区块链和Go开发》

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889

20945 次点击  
加入收藏 微博
暂无回复
添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传