以太坊实践整理(一)区块链基础知识

以太坊实践整理(一)区块链基础知识
以太坊实践整理(二)以太坊Geth客户端
以太坊实践整理(三)Remix开发部署智能合约
以太坊实践整理(四)Truffle智能合约开发框架
以太坊实践整理(五)DApp开发全过程记录(上)
以太坊实践整理(五)DApp开发全过程记录(下)
以太坊实践整理(六)文件去中心化存储


在开始学习以太坊开发之前,有必要先要对区块链知识有个认识,简单整理了一些术语解释。

交易

在去中心化应用中,发送给节点的请求通常成为“交易”,包括转账,部署智能合约,调用智能合约函数,都是一种交易;交易数据是需要关联钱包签名后发送到节点的。

区块

区块是区块链中的数据存储单元。每个区块存储了一组交易信息以及这些交易信息的哈希数据。每个区块还会存储前一个区块的哈希信息。

区块链

区块通过哈希信息链接起来,就形成区块链

节点客户端

区块链是一个分布式网络,每个人都可以部署自己的节点加入到区块链网络中,成为其中一个节点。以太坊客户端是以太坊网络中的节点程序,运行客户端后节点加入以太坊网络,同时这个节点程序可以完成如创建账号、发起交易、部署合约、执行合约、挖掘区块等工作。比如geth就是一个以太坊客户端。

挖矿

节点生成区块的过程称为挖矿,挖矿就是节点打包一批交易数据成一个新区块,然后把这个区块广播到区块链网络,由其他节点去验证有效性,验证成功后,各节点将其作为新区块存储在本地,然后基于新区块继续竞争挖矿。挖矿成功的节点矿工会得到数字货币的激励,因此很多节点会加入生产区块的竞争。

共识算法

在挖矿的过程中,矿工需要付出算力来查找一个满足条件的数字,这种算力付出是无法伪造的。当前某节点运算出该数字后,其他节点可以很快验证该数字的有效性。这种为了持续生成区块而被所有网络节点认可的方案就叫做共识算法,而付出算力来证明自己工作的共识算法被称为PoW(Proof of Work)共识算法。

  • PoW(Proof of Work)工作量证明

    POW是比特币在Block的生成过程中使用的一种共识算法,也可以说是最原始的区块链共识算法了。POW工作量证明,简单地理解就是,通过一份证明来确认做过一定量的工作。以太坊1.×用的也是Pow共识算法。采用这种共识算法的区块链,交易TPS往往较低,出块间隔也较久,因为需要比较长时间的验证。

  • Pos(Proof of Stake)权益证明

    由于PoW机制存在巨大能源消耗、交易确认时间较长,便演进出了POS权益证明。基于权益证明共识的区块链系统中,参与者的角色是验证者Validator,只需要投资系统的数字货币并在特定时间内验证自己是否为下一区块创造者,即可完成下一区块的创建。下一区块创造者是以某种确定的方式来选择,验证者被选中为下一区块创造者的概率与其所拥有的系统中数字货币的数量成正比例,即拥有300个币的验证者被选中的概率是拥有100个币验证者的3倍。

  • DPos(Delegated Proof of Stake)授权权益证明

    原理是让每一个持币的人进行投票,由此产生一定数量的代表 。我们可以将其理解为超级节点,这些超级节点彼此的权利完全相等。DPOS有点像是议会制度或人民代表大会制度。如果代表不能履行他们的职责(当轮到他们时,没能生成区块),他们会被除名,网络会选出新的超级节点来取代他们。DPOS通过其选择区块生产者和验证节点质量的算法确保了安全性,同时消除了交易需要等待一定数量区块被非信任节点验证的时间消耗。通过减少确认的要求,DPOS算法大大提高了交易的速度。

智能合约

智能合约就是区块链上运行的程序,和其他程序一样,由代码和数据组成。在以太坊之前,区块链上可进行交易的一般是像比特币这样的加密货币,最多在交易的附言上带上一些信息。而以太坊引入了智能合约,扩大了交易的边界,它让交易发生的同时可以执行一段代码,这意味着交易本身具备了逻辑,毕竟现实中很多交易都会伴随着逻辑,比如分期付款,或者保险合同的执行也是有事前约定的条件的。

以太坊提供了一门几乎图灵完备的编程语言。结果就是理论上开发者可以在以太坊智能合约之上编写任意复杂的逻辑,甚至可以实现自己能想到的任何程序。得益于此,以太坊上出现了形形色色的中心化应用(DAPP)。

以太坊虚拟机(EVM)

以太坊虚拟机,用来执行以太坊上的交易,提供智能合约的运行环境。熟悉Java的同学,可以把EVM当做JVM来理解,EVM同样是一个程序运行的容器。以太坊虚拟机运行在以太坊节点客户端上。

区块链种类

  • 公链

    公链是一种公开透明的区块链。任何人都可以接入区块链,成为其中一个节点。公链通常开放源代码。公链是完全去中心化的,没有单一的人或组织拥有公链。在“交易”和“查询”这两个最基础的区块链操作上,所有人都是平等的。这种平等意味着人人都拥有公链,也意味着没有机构能够关闭一条公链。为了奖励参与区块链运作的节点,公链都有一定的经济刺激机制,节点挖矿,即完成交易数据的区块打包,通常会收到一定的数字货币奖励。

  • 私链

    私链被具体的个人或组织所拥有。不同组织用同样的代码可以搭建自己的私链,链中的节点及链上的记录相互独立。作为用户,必须得到私链拥有者的许可才能发起转账和查询等操作。作为节点,也需要许可才能加入私链网络。

  • 联盟链

    从各种属性上看,联盟链几乎和私链一样,链盟链可以理解为特殊私链,它由多个组织公共拥有。从价值上看,联盟链可以让不同的组织之间共享数据,能很高地提升商业行为的效率。同时,因为有多个参与方,各参与方之间相互博弈,让私链那种可以任意修改的情况好了很多,所以又具备了一定的公链优势。

代币

我们经常听说”发币“就是基于区块链发代币,这种发代币和区块链本身挖矿产生的原生币是有本质区别的。代币就是通过智能合约的方式生成一组数字资产。通过智能合约编写代码,可以规定某个代币的总量及转账、收取甚至销毁等操作。

泰达币

泰达币(USDT)是一种将加密货币与法定货币美元挂钩的虚拟货币,是一种保存在外汇储备账户、获得法定货币支持的虚拟货币。是由中心化机构Tether公司背书的。背后的支持制度就是Tether公司保证每一个usdt币都有一美元的准备金保障。数字货币价格的不稳定性,虚拟货币交易所为了保证交易的及时性以及空仓避险的考虑,就需要有这样一款价值趋于恒定的数字货币。各国对于法币与虚拟货币交易的监管情况不同,USDT避免了法币直接与虚拟货币交易,往往先法币兑换成USDT,再用USDT去交易各种虚拟货币。本质上USDT是一种代币,Tether基于比特币网络、以太坊网络和波场网络的代币协议发行的USDT代币的区别如下:

以太坊实践整理(一)区块链基础知识_第1张图片

钱包客户端

除了geth这样子相对”重“的以太坊客户端,还有一种比较”轻“的客户端:钱包。普通用户用的比较多的是imToken,而开发者常用的钱包是MetaMask,是一个浏览器插件钱包,可以部署和执行智能合约。

任何人都可以基于区块链开放的RPC接口,开发钱包客户端。

区块浏览器

区块链浏览器就是一个网站,通过这个网站,你可以查询区块链上的一些信息,比如搜索交易记录,某个块的详细信息,当前链的高度等。也可以通过钱包地址或者交易ID来查询余额或者交易的详细信息。所以区块链浏览器不是建立在区块链公链上的程序。简单来说,它就是一个可以查询区块链数据的网站。并且它是建立在普通的中心化的网络上的。是区块链数据的对外窗口,区块浏览器让普通用户见证了公链的公开透明性。

DAPP去中心化应用

常规互联网应用是前端请求中心化服务器,服务器同步响应数据。DAPP则是前端请求去中心化网络中的任意节点,节点收到交易请求后,广播到整个网络,在网络中达成共识从而完成交易。

在DAPP应用中,发送给节点的请求称为“交易”,需要关联钱包进行签名之后才能发送给节点;另外,交易因为需要等待网络共识,所以大多数是异步的,一般通过事件回调获取结果。

开发DAPP应用,最重要的两部分就是前端应用及智能合约。智能合约运行在以太坊虚拟机(EVM)上,前端调用智能合约是通过向节点发起请求完成的。前端部分同互联网前端应用一样,可以使用任何自己擅长的前端框架如Vue或React来开发,然后通过web3.js函数库去调用智能合约。


以太坊实践整理(一)区块链基础知识
以太坊实践整理(二)以太坊Geth客户端
以太坊实践整理(三)Remix开发部署智能合约
以太坊实践整理(四)Truffle智能合约开发框架
以太坊实践整理(五)DApp开发全过程记录(上)
以太坊实践整理(五)DApp开发全过程记录(下)
以太坊实践整理(六)文件去中心化存储

你可能感兴趣的:(区块链开发以太坊智能合约)