基础概念
比特币
比特币(BTC)是一种基于去中心化,采用点对点网络与共识主动性,开放源代码,以区块链作为底层技术的加密货币,比特币起源于中本聪于 2008 年 10 月 31 日发表的论文,2009 年 1 月 3 日,创世区块诞生。
区块链
区块链(Blockchain)是比特币的一个重要概念,区块链本质上是一串使用密码学方法产生的资料块(称为“区块”,block)。新增的区块总能链接到上一个区块,即整条区块链的尾部。比特币点对点网络将所有的交易历史都存储在“区块链”中,所以区块链可以看作记录着比特币交易的账本。
确认一项交易的过程通过解决一系列数学难题的工作量证明机制来实现。工作量证明机制需要电脑运算一定的时间才能解决,这就使得攻击者无法重写、修改交易历史,除非他能够拥有相对比特币点对点网络系统更强大的计算能力,从而能以更快的速度产生区块链(称为”51%攻击”)。
工作量证明机制的难度由系统自动调节,所以新区块的生成平均需时 10 分钟。整个比特币点对点网络的节点都会自动检测交易和区块的有效性,并忽略任何违背规则的交易和区块,比如那些产生错误数量的区块,或多次发送同一份额比特币的交易行为。
参与处理区块的客户端可以得到一定量新发行的比特币,以及相关的交易手续费。为了得到这些新产生的比特币,参与处理区块的客户端需要付出大量的时间和计算力,这些资料处理者称为“矿工”,资料处理活动称之为“挖矿”。
以太坊
以太坊(Ethereum)是一个开源的有智能合约功能的公共区块链平台,通过其专用加密货币以太币(Ether,简称“ETH”)提供去中心化的以太虚拟机(Ethereum Virtual Machine)来处理点对点合约。以太坊的概念首次在 2013 年由程序员维塔利克·布特林受比特币启发后提出,大意为“下一代加密货币与去中心化应用平台”,在 2014 年通过 ICO 众筹开始得以发展。以太坊亦被称为“第二代的区块链平台”,仅次于比特币。
以太坊虚拟机是以太坊的关键组成部分之一,它为以太坊上智能合约的部署和运行提供了必要的环境。任何人都可以运行一段虚拟机程序,并通过网络的共识机制被所有人所接受。以太坊虚拟机赋予了区块链技术极大的灵活性,在此之上可以非常容易地构建各种去中心化应用(Dapp),像去中心化金融(Defi)等都是基于以太坊虚拟机构建的应用。
以太坊虚拟机(EVM)可以看做是以太坊网络中的一台规范化计算机,其状态得到以太坊网络中所有人的一致同意。 每个参与以太坊网络的人(每个以太坊节点)都会保存一份这台计算机的状态。 此外,任何参与者都可以广播请求这台计算机进行任意计算。 每当广播这样的请求网络时,网络上的其他参与者就会验证、确认并进行(“执行”)计算。 这个命令会导致 EVM 的状态变化,并且在整个网络中传播。
多条交易记录以及 EVM 的当前状态被打包成区块,存储在区块链中。区块链通过共识机制,各个节点完成校验达成一致后进行存储,确保了数据的一致性,并防止被恶意篡改。
NFT
数字加密货币大致可以分为原生币(coin)和代币(token)两大类。前者如 BTC、ETH 等,拥有自己的区块链。后者如 Tether、TRON、ONT 等,依附于现有的区块链。市场上流通的基于以太坊的代币大都遵从 ERC20 协议。
NFT 的全称是 Non-Fungible Tokens(非同质化代币),具有不可分割、不可替代、独一无二等特点。每个代币可以代表一个独特的数字资料,作为虚拟商品所有权的电子认证或证书。由于其不能互换的特性,非同质化代币可以代表数字资产,如画作、艺术品、声音、视频、游戏中的项目或其他形式的创意作品。虽然作品本身是可以无限复制的,但这些代表它们的代币在其底层区块链上能被完整追踪,故能为买家提供所有权证明。诸如以太币、比特币等加密货币都有自己的代币标准以定义对 NFT 的使用。
以太坊社区采用了许多标准,有助于在项目的不同实现中保持统一的兼容性(例如以太坊客户和虚拟钱包),并确保智能合约和 dapps 仍保持兼容。ERC-721 就是其中 NFT 相关的标准。随着 NFT 的普及和 ERC721 的应用,出现了 ERC721 合约的改良版。当中包括 ERC721A。ERC721A 是 IERC721 的一种实现,在一次交易中铸造多个 NFT 可显著节省 Gas Fee。
区块
区块是指一批交易的组合,并且包含链中上一个区块的哈希。 这将区块连接在一起(成为一个链),因为哈希是从区块数据中加密得出的。 这可以防止欺诈,因为以前的任何区块中的任何改变都会使后续所有区块无效,而且所有哈希都会改变,所有运行区块链的人都会注意到。这样就防止了有人对历史数据进行篡改。
所有已在网络历史上提交给以太坊网络的区块的序列,称为区块链。 每个区块都包含对前一个区块的引用,这有助于我们在所有区块间(同时在精确的历史记录)上保持顺序。在以太网中,我们可以将区块链视为一个可靠的分布式数据库,用于存储整个以太网的历史、以及当前状态。
以太坊网络中,一个区块中包含如下信息:
字段 | 说明 |
---|---|
timestamp | 开采区块的时间 |
blockNumber | 区块链中区块的长度 |
baseFeePerGas | 要将交易纳入区块,每个 gas 所需的最低费用 |
difficulty | 开采所需的努力 |
mixHash | 该区块的唯一标识符 |
parentHash | 前一区块的唯一标识符,相当于指向前一区块的指针 |
nonce | 哈希,当与 mixHash 结合使用时,可以证明该块已经通过了工作量证明 |
transactions | 包含在区块中的交易 |
stateRoot | 系统的整个状态:帐户余额、合约存储、合约代码和帐户随机数 |
账户
在创建账户时会随之生成对应的地址和私钥,地址用来唯一确定账户,私钥用来给交易签名,掌握私钥就等于掌握其对应地址中存放的资产。
以太坊的账户有 2 种类型:
- 外部拥有的账户:被私钥的所有者控制且没有任何代码与之关联。
- 合约账户:被合约代码控制且有代码与之关联。
交易
以以太坊中的交易为例,一次交易部分信息如下:
字段 | 说明 |
---|---|
Transaction Fee | 交易总费用(base fee per gas + max priority fee per gas)* gas |
Gas Price | gas 价格 |
Gas limit | 交易可以消耗的最大 gas 数量 |
Gas Usage | 实际使用了多少 gas |
Base fee | 每个 gas 消耗的网络基础费 |
Max fee | 愿意为交易支付的最高 gas 价格 |
Max Priority fee | 最大 gas 价格 + 矿工小费 |
Burnt | 实际烧掉多少 gas |
value | 从发件人向收件人转移 ETH 的金额 (以 WEI 为单位,1ETH = 1*10^8WEI) |
from | 发送地址 |
to | 接收地址,如果为合约帐户,交易将执行合约代码 |
智能合约
以太坊最重要的技术贡献就是智能合约。智能合约是存储在区块链上的程序,可以协助和验证合约的谈判和执行。
因为合约内容公开,合约可以证明其宣称的功能是真实的,例如虚拟赌场可以证明它是公平的。另一方面,区块链上的所有用户都可以看到基于区块链的智能合约,这会导致包括安全漏洞在内的所有漏洞都可见,并且可能无法迅速修复。
基本原理
出块(挖矿)原理
- 字符串:前块头部+账单+时间+随机数
- Hash:SHA256(SHA256(字符串))
- 要求前 n 位是 0
难度 n 的确定
出块平均概率 (1/2)^n ,要保证每 10min 出一个块,通过调整 n 的大小使得,2^n=10*60*矿机总算力
交易防伪
- 电子签名,使用非对称加密:私钥、公钥,ECDSA 算法
- 双重支付问题
- 余额检查:区块链追溯
- 双重支付:区块顺序性
- 防止篡改
- 最长链原则:分叉以最长链为准
共识算法
工作量证明(PoW)
为了让一个区块添加到主链上,一个矿工必须要比其他矿工更快的提供出这个“证明”。通过矿工提供的一个数学机制的“证明”来证实每个区块的过程称之为工作量证明(proof of work)。其简单的原理可以理解为,通过寻找一个随机数 nonce,使得 Hash(mixHash, nonce)的前 n 位为 0。这个方法很容易验证一个 nonce 是否合法,但是求解这个 nonce 的过程则非常耗时,几乎只能通过暴力搜索的方式得到,需要消耗大量的计算资源。最先求解到 nonce 的矿工获得大家的认可,他打包出的区块被所有节点添加到区块链的末尾,在完成区块的创建后,这个矿工会获得新铸造的币 和这个区块内所有的交易费用,作为奖励。
PoW 的优点是完全去中心化、公平,缺点是浪费资源、处理性能较低。
权益证明(PoS)
权益证明机制,即拥有越多股权,就可以获得更多奖励。这里的股权是指持有的数字货币的数量和时间,根据它来分配权益,类似股票的分红制度。
持有的币越多,持有的时间越长,即币龄(币龄=持币数*持币时间)越大,就能拿到越多的分红,也就有更大的记账权利。
PoS 的优点是耗能少、作恶成本高昂、达成共识的时间短。缺点是持币趋于集中化、流动性变差。
委托权益证明(DPoS)
DPoS 在 PoS 基础上优化而来的,通过投票选举的方式,选出生产者,代表他们履行权利和义务,而不是用算力来决定。
如果生产者不称职,随时可能会被投票出局。投票的权重和分配的收益,都是按照持有的加密货币数量占总量的百分比来计算的,51%的股东的投票结果是不可逆且有约束力的。
DPoS 的优点是记账节点数量少、协作高效、记账效率高。其缺点是减弱了去中心化的程度。