区块链入门级别认知(blockchain)
前言:今天参加了迅雷关于区块链的大会,学习和感受总结一下
之前的认知在:几个混迹互联网圈关于区块链 耳熟能详的 热词 “比特币” “区块链” “挖矿” ,知道的是有人从比特币或者相关虚拟货币中暴富。然后相关资源媒体不断炒概念,蹭热度公司出现了区块链项目,甚至还有区块链牙刷“边刷牙边挖矿,获得爱牙币还能兑换成牙刷,牙线等产品或者服务”。。。
通过今天在大会上的学习,首先拎清了几个事实:
(1)没错,会有人从区块链上的虚拟货币有贫穷限制想象的获利。或者“炒币”的相关行为 这是“币圈”。
(2)区块链技术会使各行各业受益,那么这是“链圈”。今天讲的就是“链圈”的事
(3)不会我今天来了一趟,我就牛逼了。。。
以下从区块链技术常识,技术认知,产品认知三方面进一步了解
一 区块链技术常识
(1)为什么使用区块链 why
能够实现:彼此不信任的情况下,不受地区所限制,可以是在世界各地,实现共享数据和传递价值
金融圈里形容这种“信任”是一种“交易对手风险(the counterparty risk)”:另一方不愿意承担交易的风险。
即这种风险就是对方不遵守契约精神的风险
区域链的优势就在于:通过一个革命性的数学、密码学和点对点网络系统彻底消除了“交易对手风险(mathematics, cryptography, and peer-to-peer networking)。
(1.1)历史证明区块链的重要性
在20世纪60年代,出现了第一个计算机化的数据库。随着硬件占据多个房间和互联网几十年,数据自然存在于*,物理位置。这是一种集中式方法(Centralized ),意味着数据的位置和访问权限由*权威机构控制。
集中式系统(Centralized systems)可以从内部或外部进行操作,因此我们必须信任这些系统的拥有者有足够的意愿和资源来保持其数据的安全性和完整性。集中式数据库仍然是最常见的今天,供电我们的大多数在线和离线应用程序。
自托管博客(A self-hosted blog )是集中式数据库的一个常见示例。所有者可以潜在地编辑事后或审查用户无追索权的帖子。另外,黑客可以侵入服务器并进行恶意行为。如果没有数据库备份,则逆转损坏是不可能的。
(1.2)共享数据
共享大量数据既昂贵又麻烦。我们可以通过跨多方分发数据来减轻这种负担。读写被组(group)的一个或多个部分控制,因此也会受到与集中式数据库类似的坏数据( corrupt data)影响。
现代共享数据库使用技术来减少这种坏数据。其中一些与区块链重合。根据共享数据库系统,它可能具有以下特点:
不变性( Immutability):与其重写旧数据,不如用保留的旧数据作为历史记录创建新副本。这个记录可以被用来证明在某一时刻存在的一段数据。
一致性(Consensus) :为了共享数据库,各方必须就其内容达成一致。达成一致共识的方法多种多样,其中一项(工作证明)将在下文讨论。
(2)什么是区块链 what
区块链是一个共享的数据库,由事务(交易)(transactions)的分类帐组成。就像一个银行,简单的连锁店的分类账跟踪货币(在这种情况下,加密)所有权。与集中式银行不同,每个人都有一个分类帐的副本,可以核实对方的账户。每个带有副本的设备都被称为“节点”。
区块链通过以下方式消除了影响其他数据库的信任问题:
完全去中心化:(Full decentralization)读取/写入数据库是完全分散和安全的。没有单独的个人或团体控制区块链。
极端容错:( Extreme fault tolerance)容错是系统处理坏数据( corrupt data)的能力。虽然容错并不是区块链特有的,但它将概念带到了逻辑的极端,因为每个共享数据库的帐户都验证了它的变化。
独立验证:( Independent verification)事务可以被任何人验证,而不需要第三方。这有时被称为“去中介化”。
(3)区块链如何工作 how
区块链网络中的帐户之间的交互称为“事务(交易)”(transactions)。它们可以是货币交易,例如在以太币(Ether 代码 ETH)传送中使用的加密货币。它们还可以传输数据,比如评论或用户名。一组事务(交易)(transactions)被称为“block”。
区块链上的每个帐户都有一个惟一的签名,它让每个人都知道是哪个帐户发起了事务(交易)(transactions)。在公共区块链上,任何人都可以读或写数据。读取数据是免费的,但是写入公共块链不是。这种成本,被称为“gas”,定价在以太币(Ether 代码 ETH),有助于阻止垃圾邮件和支付网络安全。
矿业/采矿 Mining
网络上的任何节点都可以通过一个名为“挖掘”的过程来参与保护网络。选择成为矿工的节点竞争解决数学问题,这些问题保护了一个区块的内容。
由于采矿需要计算能力(更不用说电力成本),矿工可以得到补偿。竞赛的获胜者将获得一些加密货币作为奖励。这就激励了节点的工作,以确保网络的安全,防止太多的权力落入任何单个的矿工手里。
哈希Hashing
一旦一个新的区块被开采,其他的矿工就会被通知并开始验证并将这个新的区块添加到他们的链副本中。这是通过加密哈希(或简单的“哈希”)完成的。哈希是一个单向过程,它接收数据并返回一个固定长度的字符串来表示数据。
虽然原始数据不能从其散列中复制,但相同的数据将始终产生相同的散列。因此,未经验证的数据可以用相同的函数进行散列,并与原始数据进行比较。如果它们是相同的,则验证数据。
一旦超过半数的矿工确认了新的区块,网络就已经“达成共识”,这个区块成为区块链永久历史的一部分。现在,所有节点都可以下载该数据,并确保其有效性。
下面是整个过程:
(1) (2)
(3) (4)
(5)
递进层次,专有名词,关于以太坊区块链(Ethereum Blockchain)
(1)以太坊(Ethereum)
Ethereum是一个区块链,允许你在其可信的环境中运行程序。这与比特币区块链(Bitcoin blockchain)形成了鲜明对比,后者只允许你管理加密货币。
为此,Ethereum有一个虚拟机,称为Ethereum虚拟机(EVM)。EVM允许在区块链上验证和执行代码,提供保证它将以相同的方式在每个人的机器上运行。这段代码包含在“智能合约(smart contract)”中。
除了跟踪帐户余额,Ethereum在区块链上维护EVM的状态。所有节点都处理智能合同,以验证契约的完整性和它们的输出。
(2)智能合约(smart contract)
智能合约是在EVM上运行的代码。是以太坊最重要的技术贡献。智能合约可以接受并存储以太币(Ether 代码 ETH)、数据或两者的结合。然后,根据智能合约中的逻辑,它可以将该以太币分配给其他帐户,甚至是其他智能合约。
这里举例Bob和Alice的签订一个智能合约例子。爱丽丝想雇鲍勃为她建一个天井,他们用一个契约合同(一个可以储存钱的地方,直到一个条件得到满足)在最后的交易前储存他们的以以太币(Ether 代码 ETH)。
(1) (2)
(3)
(如果鲍勃不能建造天井,或者他的工作表现不佳,Bob可以向Alice提供抵押金。可以把这个作为条款写在合约代码中)
二 技术层面
(1)智能合约的编程语言:Solidity
Solidity是针对智能合约设计的一⻔高级编程语言,运行环境是EVM(Ethereum Virtual Machine)。语言设计实现中受到了C++/Python/JavaScript的影响。 Solidity是强类型语言,支持继承、多态、接口、抽象、库、自定义数据类型等特 性。Solidity支持汇编指令编程,代码编译为字节码后运行在EVM上。Solidity是 当下最流行的智能合约开发语言,也是迅雷合约平台推荐和支持的语言。
(2)使用truffle 开发合约
truffle 提供了一套完善的开发、调试、编 译、部署、测试的本地环境。 可以使用模板命令unbox根据一些模板快速 生成对应的合约架构。
我们结合solidity的学习,学习使用 truffle 框架 。使用truffle develop在本地区块链环境下运行合约。
Truffle:开始创建一个自己的 dapp ,测试,部署到上链到以太坊网络的最好选择
(3)以太坊网络 Ethereum networks
到目前为止的讲解描述,都是在说以太坊的公共区块链,或者说“MainNet”。在MainNet上,包括账户余额和交易在内的链上的数据是公开的,任何人都可以创建一个节点并开始验证交易。该网络上的以太币(Ether 代码 ETH)具有市场价值,可以兑换其他加密货币或像美元一样的法定货币。
但也有其他的网络。事实上,任何人都可以创建自己的Ethereum网络。
(4)本地测试网络Local test networks
好多以太坊模拟器存在,这里推荐: Ganache 本地开发模拟以太坊区块链上的交易
(5)公测 Public test networks
开发阶段,在最终上线之前的网络测试中使用的以太币都是无价值的(only has no value)
广泛使用的三个公测网:
• Ropsten: The official test network, created by The Ethereum Foundation. Its functionality is similar to the MainNet.
• Kovan: A network that uses a consensus method called "proof-of-authority". This means its transactions are validated by select members, leading to a consistent four second block time. The supply of ether on this testnet is also controlled to mitigate spam attacks.
• Rinkeby: A testnet also using proof-of-authority, created by The Ethereum Foundation.
(6)私人/企业网络Private/enterprise networks
私有的Ethereum网络允许各方共享数据而不使其公开访问。一个私有区块链是一个很好的选择:
• Sharing of sensitive data, such as health care records
• Scaling to handle higher read/write throughput, due to the smaller network size
(7)分布式应用程序(dapps)Distributed applications (dapps)
使用智能合约进行处理的应用程序被称为分布式应用程序或者dapps
这些dapps的用户界面包括熟悉的语言,如HTML、CSS和JavaScript。应用程序本身可以托管在传统的web服务器上,也可以在分散的文件服务(如群集或IPFS)上。
dapps 为各行各业带来好处 :记录,金融,供应链,房地产,市场
迅雷 美女牛人 来鑫也是给大家出题涉猎方向,真是各行各业都能受益。
三.产品
最前面早期看到的区块链牙刷,甚至区块链马桶,是有点典型的蹭个热度。但是区块链现状是什么?迅雷CEO给了答案:
并且在圆桌会议上国家工信部吧电子标准区块链研究院主任 李鸣,说区块链有技术属性,社会属性金融属性,我觉得还有个精神属性,那就是大家说的就是啥也别管相信它就好了,听众都笑了,是的,当前面对的是对标准的制定和对安全的规范特别重要,当前国家的相关部门举措也是刚起步阶段。
接下来看看来鑫介绍的迅雷的技术栈
技术栈里每一个模块都有相对的专业技术组设计处理,简单的介绍背后藏着复杂的人员调度配合。了解这么多,其实一切的新技术都是在现有技术的基础之上的,迅雷之所以跑到行业前列,是因为,他们老早就有成型的体系,成熟的分布式系统,多方共享数据资源,他们一直在做的就是在夯实面临新技术的基本功,以技术驱动公司发展的一只脚早就跨过了门槛。然后还在想办法搜罗人才加入。。。
总结:
到底什么样的人和公司适合做区块链?圆桌会议上,几个大咖都表达了一下自己的看法,基本如下:
(1)技术角度:夯实基本功的开发者,动脑,勤快。区块链和起初的安卓,苹果刚出来没什么大区别。
(2)如果是混过“币圈”的,估计可以快速找到门道,搭出雏形,但是想真正走的长远是要靠区块链技术而不是简单的“币圈”经验
(3)感兴趣,对金融,计算机,管理有相关背景的人
(4)坐得住的人,这个我个理解就是,就是能踏实做事情的人,能够沉得住气,当时清华大学计算机系教授陈文光说,他见过往返于“币圈”和“链圈”的人,不能沉得住气,如果他只在链圈或者在币圈专研,成就一定比他反复转念更突出,影响更大
也许有一天,我们也需要做区块链,嗯,迅雷的CEO说,今天有专门人跑到会场找他,询问如何快速“上链”?他笑了,(我想潜台词应该是:冰冻三尺非一日之寒吧)
其实如果说公司的基础,我们现在做的也是在为以后打基础,我们公司的目标就是以后要成为一个数据服务公司啊,相关技术重叠性也非常强,现阶段我们就是要做好我们该做的就好了,每一步都扎实,在适合时机,做对应的调整。坚定信念不要怀疑。也是一种沉得住气。
参考:
1.http://truffleframework.com/tutorials/ethereum-overview#the-need-to-share-data //区块链入门基础 本博大部分理论来源
2.http://solidity.readthedocs.io/en/v0.4.21/index.html //学习solidity语言(solidityAPI)
3.http://truffleframework.com/ganache/ //本地开发模拟以太坊区块链上的交易