以太坊的工作原理

前面讲了很多关于区块链相关的技术概念,下面其实主要可以开始重点的开发问题了。区块链应该大家都了解了,而我们开发者开发的不是区块链,而是基于区块链底层技术开发相关上层的DApp。本次我们先侧重在以太坊上进行DApp的开发。那么首先我们先了解一下以太坊的工作原理。

以太坊是一个去中心化的平台,我们可以在之上部署DApp。DApp则是有一个或者多个智能合约使用开发语言创建而成的。编写的智能合约可以使用多种编程语言,目前Solidity最受欢迎。编写完成的DApp则需要使用以太币(Ether)来部署与调用相关方法。

以太坊使用工作量证明的共识协议,智能合约通过发送交易调用或通过其他合约调用。以太网中有两种网络节点,普通节点与矿工节点。普通节点只备份区块链网络中的数据,而矿工节点则通过挖矿创建新的区块。

对于以太坊的个人理解主要相对于比特币来说的。比特币的场景只是集中在交易场景。比如A用户给予了B用户10个比特币。那么在经过验证区块生成后,B用户则收到了10个比特币。而以太坊则增加了智能合约的机制,比如A用户给予B用户购买10张彩票。那么在晚上八点开奖后,B用户则直接向A用户转账中奖的奖金。智能合约是开放的,任何人都有权检查智能合约的代码同时智能合约也是无法突然被删除的。

以太坊采用了众多的密码学等相关的技术。工作量证明,椭圆曲线密码,MerkleTree,时间戳,哈希为最重要的五个算法

以太坊的关键技术

工作量证明(POW)

工作量证明简单来说就是用来确认参与者是否做过一定的工作量。工作节点必须要通过一定的难度才能计算出最终的结果,但是验证节点只需要很简单的就可以验证你是否进行过大量的工作。有点类似于考试,努力一季度,两个小时就能测试出来你是否认真学习了。当然,不一定最努力的那个人就一定能获取最高分。但是至少获取最高分也就是获取记账权的概率较高。

以太坊的工作量证明机制防止区块被篡改。以太坊中的每个节点都包含区块链的备份,用户需要确保节点不能篡改区块链,还需要检查区块是否合法。在工作量证明系统中,创建区块的过程称之为挖矿。

椭圆曲线密码(ECC)

非对称加密技术,在ECC中需要产生两种密钥,一种是公钥可以开放给别人知道的,另外一种私钥是不能让任何知道的。私钥和公钥在数学上来说是不可逆的,也就是说我们可以通过私钥推导出公钥,但是从公钥不可能获取到私钥。

ECC主要用在以太坊的账户上,创建以太坊账户。以太坊使用的是secp256k1参数。

默克尔树(Merkle Tree)

默克尔树是一种树,大多数情况下是二叉树也可以是多叉树。在P2P网络中,类似于目前的迅雷之前的快播。默克尔树用来确保从其他节点下载的数据没有被进行损坏与篡改。用户从一个可信的源获取到文件的树的根,一旦获取到根就可以从其他不可信的源获取MerkleTree。通过可信的MerkeleTree检查不可信源获取的MertleTree是否有效或者被篡改。

时间戳机制(timestamp)

计算区块目标价值的公式需要用到时间戳,并且每个区块头中也包含了时间戳。如果在创建新的区块的时候可以使用不同的时间戳(非当前时间),但是其他节点在进行验证的时候会认为该区块是个错误区块。在区块工作量价值验证中,如果篡改了时间戳,那么该区块将不可能进行创建。

哈希函数(hash)

以太坊在很多地方都用到了哈希函数,例如以太坊上的地址,账户地址,签名等。同时每个区块也都会有当前区块与上一个月区块的哈希值。

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20180619G1LLK300?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 yunjia_community@tencent.com 删除。

扫码关注云+社区

领取腾讯云代金券