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

in #blockchain6 years ago (edited)

 区块链的发展由第一代比特币区块链,到第二代以太坊智能合约的区块链技术,再到现在第三代基于石墨烯的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),即:数量单位。

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

Sort:  

Congratulations @sincos! You have completed the following achievement on the Steem blockchain and have been rewarded with new badge(s) :

You published your First Post

Click here to view your Board of Honor
If you no longer want to receive notifications, reply to this comment with the word STOP

Do not miss the last post from @steemitboard:

Meet the Steemians Contest - The results, the winners and the prizes
Meet the Steemians Contest - Special attendees revealed
Meet the Steemians Contest - Intermediate results

Support SteemitBoard's project! Vote for its witness and get one more award!