1.相关概念
1.1 区块链1.1.1 定义
区块链本质上是一个去中心化的分布式账本数据库,由多个服务器组成,不可更改和伪造,类似于银行系统,不同的是区块链可以使每个人手上都有这个账本,账本公开所有人都可以查看;
1.1.2 特点
区块链中,交易信息以一个个信息块的形式记录,这些块以链条方式,按时间顺序连接起来。新生成的交易信息记录块,不断地被加到区块链中,交易一旦写入区块链中就不能被修改;
1.1.3 公有链
公有链(Public Blockchain)通常也称为非许可链(Permissionless Blockchain),公有链是区块链的一种,无官方组织及管理机构,无中心服务器,参与的节点按照系统规格自由接入网路、不受控制,节点间基于共识机制开展工作。
公有链一般适合于虚拟货币、面向大众的电子商务、互联网金融等 B2C、C2C 或 C2B 等应用场景,比特币和以太坊等就是典型的公有链。
1.1.4 区块链的发展
区块链的应用发展,大致可分为 3 个阶段:
1.2 虚拟币
虚拟货币是指非真实的货币。在国内比较有代表性的虚拟货币有腾讯 Q 币、新浪 U 币、百度币、盛大元宝等。比特币就属于虚拟货币,是区块链技术的产物。比特币不依靠特定货币机构发行,它依据特定算法,通过大量的计算产生,比特币经济使用整个 P2P **中众多节点构成的分布式数据库来确认并记录所有的交易行为,并使用密码学的设计来确保货币流通各个环节安全性。
1.3 智能合约
比特币带来的主要问题是浪费计算资源,以及缺乏**可扩展性。为了克服这些问题,区块链 2.0 阶段引入了智能合约,将比特币的概念扩展到了货币之外。
智能合约是在区块链中“实时”运行的小型程序,它使得区块链是可编程的。智能合约最突出的例子是**以太坊(Ethereum)**虚拟币,它提供了一个平台,开发人员可以在这个平台上,为区块链**创建分布式应用程序。
以太坊的智能合约就是一段由 EVM 虚拟机执行的字节码,常都是由编译器负责把高级语言编译为字节码。当智能合约被编译成二进制文件后,被部署到区块链上。用户通过调用智能合约的接口,来触发智能合约的执行操作。EVM 执行智能合约的代码,修改当前区块链上的数据(状态),被修改的数据,会被共识,确保一致性。
智能合约主要是为了解决信任问题而产生的,由于智能合约存放在区块链,并且区块链不可抵赖,不能篡改,因此智能合约比现实中任何一个机构的公信力都强,而区块链的去中心化思想的最大优势就是解决了信任问题。
但是如果智能合约出错后,可能会造成代币被盗或者消耗大量的 gas,必须去修复错误,而修复 bug 只能重新部署合约,就会产生一个问题:原来的合约已经有很多人在使用,如果部署新的合约,老合约的数据就丢失。
1.4 去中心化
去中心化(Decentralized)的意思就是用户可以不通过 Google、Facebook、微博等中介的服务访问互联网上的数据和信息,而是由个人自己拥有和控制互联网的各个部分。也就是说,在 Web3 上,开发者不需要在一个单独的服务器上建立和部署应用,也不用在一个单独的数据库中储存数据,极大降低了单点故障的风险。
区块链是真正去中心化互联网的核心,它改变了数据存储和管理的方式,其独特的架构允许多个节点在没有一个集中的事实来源的情况下就数据集的当前状态保持一致。作为用户为去中心化执行而激活的自动执行代码,智能合约是加密难题的重要组成部分,这允许两方在彼此不知情的情况下进行价值转移。
1.5 gas 费用
以太坊中交易需要手续费,手续费被称为 gas(汽油),gas 是用于评估在以太坊区块链上执行特定操作所需的计算工作量的单位。
gas 只是一个抽象单位,它仅存在于以太坊虚拟机中,用户实际上总是在以太坊**中使用 ETH(以太币)进行交易。
为什么要引入 gas 呢?
以太坊虚拟机可以执行任意代码,但它也更容易受到 halting problem 的影响。halting problem 是指从一个任意计算机程序的代码和输入来确定该程序是会结束运行,还是会永远继续运行。如果没有 gas,用户就可以执行一个永远不会停止的程序,为了防止这种情况发生,以太坊引入了与每个操作相关的 gas 成本,这将防止程序处于永远运行的状态,最终使整个**陷入停滞状态。