认识以太坊

作者: 阡陌哥哥 | 来源:发表于2018-03-13 10:54 被阅读0次

    参考资料:《区块链技术指南》
    DAPP(分布式应用),区块链新物种,程序员掘金新风口!

    什么是以太坊?

    比特币的区块链设计取得了巨大成功,但是,由于存在着非图灵完备性、缺少保存状态的账户概念,以及PoW挖矿机制所带来的资源浪费和效率问题,在很多区块链应用场景下并不适用。

    以太坊的设计者期望,基于以太坊,开发者能够创建任意的基于共识的、可扩展的、标准化的、图灵完备的、易于开发和协同的应用。

    以太坊既是平台又是编程语言,包括数字货币以太币(Ether),以及用来构建和发布分布式应用的以太脚本(EtherScript),它提供一个完整的编程语言环境。从最底层角度来看,以太坊是一个多层的、基于密码学的开源技术协议。

    以太坊也是区块链与智能合约的完美结合,在以太坊上可以任意编写智能合约,并且运行在以太坊特有的虚拟机上,通过以太坊虚拟机和RPC接口与底层区块链进行交互。

    以太坊的架构如下:


    以太坊总体架构

    一个智能合约是一套以数字形式定义的承诺(promises),包括合约参与方可以在上面执行这些承诺的协议。智能合约就像加密的包含价值的箱子。只有当特定条件被满足时它才被打开,它封装了一些逻辑、规则、处理步骤或者双方间的协议。

    以太坊核心概念

    --以太坊虚拟机

    以太坊虚拟机(EVM)智能合约的运行环境。EVM不是基于寄存器的,而是基于栈的虚拟机。因此所有的计算都在一个称为栈的区域内执行。栈最大有1024个元素,每个元素有256位。

    --以太坊账户

    以太坊包括两种账户,外部账户和合约账户。外部账户,该类账户被公钥-私钥对控制,类似于比特币账户。合约账户,该类账户被存储在账户中的代码控制,按照合约规定,运行账户。

    --消息

    消息是不同账户之间交换的信息,以太坊消息可以包含数据,合约账户可以对消息进行回应。

    --交易

    以太坊中“交易”是指存储从外部账户发出的消息的签名数据包。交易包含消息的接收者、用于确认发送者的签名、以太币账户余额、要发送的数据和被称STARTGASGASPRICE的两个数值。为了防止代码出现指数型爆炸和无限循环,每笔易需要对执行代码所引发的计算步骤做出限制。STARTGAS就是通过需要支付的燃料来对计算步骤进行限制,GASPRICE是每一计算步骤需要支付矿工的燃料的价格。

    --Gas(燃料)

    Gas价格由交易创建者设置,发送账户需要预付的交易费用=GASPRICE*Gas amount如果执行结束还有Gas剩余,这些Gas将被返还给发送账户。无论执行到什么位置,一Gas被耗尽就会触发一个out-of-gas异常。同时,当前调用帧所做的所有状态修改都将被回滚。

    --指令集

    所有的指令都是针对256位这个基本的数据单位进行的操作,具备常用的算术、位、逻辑和比较操作,也可以进行条件和无条件跳转。

    --消息调用

    合约可以通过消息调用的方式来调用其他合约,或者发送以太币到非合约账户。。调用层数被限制为1024。因此对于更加复杂的操作,我们应该使用循环而不是递归。

    --代码调用和库

    以太坊中存在一种特殊类型的消息调用,被称为callcode,这意味着一个合约可以在运行时从另外一个地址动态加载代码。这使得Solidity可以实现“库”。

    以太坊客户端

    目前有四种语言编写的客户端:

    Go语言-------------Geth(官方推荐)
    C++-----------------Eth
    Python-------------Pyethapp
    Java----------------EthereumJ

    以太坊包括一个专用的客户端浏览器Mist,使得用户可以运行各种各样的去中心化应用(DApp),发布智能合约。

    DAPP是Decentralized Application的缩写,中文叫分布式应用/去中心化应用。DAPP就是底层区块链平台生态上衍生的各种分布式应用,也是区块链世界中的基础服务提供方。DAPP于区块链,就好比APP之于IOS和Android。传统的web应用,客户端js代码运行在自己的浏览器中,服务端代码运行在企业的后台服务器上。但是,DAPP应用的智能逻辑运行在区块链上,客户端代码运行在特殊浏览器中(比如Mist)。
    一个DAPP应当具备以下条件:1、应用必须完全开源、自治,且没有一个实体控制着该应用超51%Token。2、应用的数据必须加密后存储在公开的区块链上;3、应用必须拥有Token机制(可用基于相同底层区块链平台的通用代币或自行发行新币),矿工或应用维护节点需要得到代币奖励;4、应用代币的产生必须依据标准的加密算法,有价值的节点可以根据该算法获取应用的代币奖励。

    相关文章

      网友评论

        本文标题:认识以太坊

        本文链接:https://www.haomeiwen.com/subject/xeogfftx.html