区块链开发(1)基本概念

最近一直没更新博客了,一方面是在技术转型,游戏行业的不景气,不再将重心放在游戏开发了,一方面也是在积累与学习中(懒惰),缺乏动力。希望通过这次能坚持下去:)。言归正传,来记录和总结下自己在区块链开发方面的经验。

区块链的发展由第一代比特币区块链,到第二代以太坊智能合约的区块链技术,再到现在第三代基于石墨烯的EOS区块链。其中,涉及到的知识面之广,概念繁多,本篇作为开篇,主要来梳理下其中常见概念的含义,结合个人的理解,不涉及相关技术与操作演示(期待后续),也会不定期更新。如有任何你觉得不对的地方或给你造成了误导,欢迎讨论与指正。

1. 区块链技术

  • 链式数据结构,每个区块的头部都保存着指向上一个节点的哈希值,依次相连。
  • 基于P2P网络,分布式节点共识算法来维护和更新数据,来保证数据的"不可篡改"。
  • 利用密码学原理,来保证数据传输、访问的安全。
  • 自动化脚本(智能合约)来可编程和操作数据。
  • 本质是去中心化的数据库,最终要解决的是互联网传输中的信任问题。

2. 去中心化

  • 整个网络由每个节点共同参与,共同维护,不依赖中央处理节点,每个节点都是中心。
  • 数据的存储与更新是分布式的,不需要中介与信任结构背书。

3. 私有链、公有链与联盟链

私有链:

  • 参与节点的资格有限且可控、读取与写入受限。
  • 弱中心化,解决"队友"(机构内)间的信任问题。

公有链:

  • 开放的,任何人都可以读取链上的数据、参与交易。
  • 完全去中心化的,链上数据不受任何人或机构篡改。
  • 通过奖励代币机制来鼓励参与者竞争记账权。
  • 解决"人类"(所有人)不可信问题。

联盟链:

  • 由多个机构间共同参与、维护、管理,链上数据只允许系统内的机构读写、交易。
  • 部分去中心化,每个机构运行一个或多个节点。
  • 解决"组织"(机构间)不可信问题。

4. 挖矿

  • 竞争记账权,对一段时间内的网络中的交易进行确认,并记录在区块链上的过程。
  • 原理是重复计算区块头的哈希值,不断修改随机数nonce值,直到算出与难度目标值匹配。从而,会产生一个区块(每个区块都对应一个账单)。
  • 通常算力越高,计算哈希值的速度越快,挖矿成功的概率越大。

5. 智能合约

  • 一个可以自动执行的计算机程序(代码)。 将现实世界中的合同进行数字化而定义的"承诺",以及合约方执行这些"承诺"的协议。
  • 合约由一组代码(合约的函数)和数据(合约的状态)组成,运行在虚拟机上。
  • 用于处理交易双方之间的交易行为(接收、存储、发送等)。
  • 一旦合约被部署,就不能被更改。

6. 钱包

  • 控制用户的访问权限。
  • 管理数字货币地址、密钥。
  • 跟踪余额、创建交易和签名交易。

7. 公私钥

  • 非对称加密算法。两个密钥,一个是公开密钥,一个是私有密钥,公钥和私钥成对出现。
  • 一个用作加密,一个用作解密。
  • 私钥可以推倒出公钥。

8. 共识算法

共识:

  • 分布式系统中,大部分节点对某个"提案"达成一致性的机制。

拜占庭容错:

  • 概念:网络通信可靠,允许存在少数节点作恶场景(消息可能被伪造)下的一致性达成问题。
  • POW:工作量证明机制。根据每个节点的计算力来决定,谁得算力强,谁就可获得记账权。
  • POS:股权证明机制。根据每个节点具有的资源来决定,谁投入的资源多,谁就可以获得记账权。
  • DPOS:代理股权证明机制。选举出n个记账节点,在节点中提案者提交的提案被这些记账节点投票决定。

非拜占庭容错:

  • 概念: 分布式的系统中存在故障,但不存在恶意节点的场景(即可能消息丢失或重复,但无错误消息)下的共识达成问题。

9. 哈希算法与数字签名

哈希算法:

  • 概念:将任意长度的二进制值(明文)映射为较短的固定长度的二进制值(hash值)。不同的明文很难映射为相同的哈希值(哈希值也称为指纹或摘要)。
  • MD5:映射为32位16进制数字。
  • SHA-1:映射为40位16进制数字。
  • SHA-256: 映射为64位16进制数字。
  • SHA-512:映射为128位16进制数字。

数字签名:

  • 由数字摘要和非对称加密技术组成。
  • 原理:
    1. 将明文用接收方公钥进行加密,得到密文。
    2. 用发送方私钥对明文进行哈希后得到的信息摘要进行加密,得到发送方签名。
    3. 将密文和签名一起发送给接收方。
    4. 接收方用私钥对接接收到的密文进行解密,得到原来的明文。
    5. 用发送方公钥对接收到的签名进行解密,得到明文的哈希值,即信息摘要。
    6. 对明文进行哈希与签名解密算出的哈希值对比,一致则原文没有被篡改。

10. P2P网络

  • 无中心服务器,网络健壮,高容错。
  • 共享用户的带宽、存储空间和计算能力。
  • 用户节点越多,速度越快。

11. 数字货币与Token

数字货币:

  • 一般指基于区块链技术和加密算法产生的一种数字化资产,也常称为"加密货币"。
  • 可用于真实的商品和服务交易。

Token:

  • 基于区块链(例如:以太坊ERC20,EOS等)发行的一种自定义货币,也称为代币。

12. ERC20与ERC721

ERC20:

  • 以太坊定义的一套自定义货币的API接口标准。

ERC721:

  • 同样是基于以太坊,与ERC20不同的是,ERC721定义的代币具有不可替代的、唯一性。

13. Gas Price与Gas Limit

以太坊在执行交易、转账,部署智能合约等操作时,需要花费Gas费用。Gas费用的计算为:
Gas = Gas Price * Gas Limit + Value

  • Gas Price:指用户愿意花费每个Gas单位的价钱,单位是Gwei。即:价格单位。
  • Gas Limit:指用户愿意为执行某个操作花费的最大Gas量(最少21000),即:数量单位。

暂时先总结到这里,后面会不定期更新其它区块链开发中的相关概念,下一篇暂定为以太坊私链的搭建。如果觉得本篇对你有帮助,欢迎点赞支持。如果觉得本篇中有任何异议的地方,也欢迎留言与我讨论。

作者:AlphaGL。版权所有,欢迎保留原文链接进行转载 :)

你可能感兴趣的:(区块链开发(1)基本概念)