《以太坊白皮书》笔记(2)——以太坊介绍.上

EthereumEthereum: a blockchain with a built-in Turing-complete programming language, allowing anyone to write smart contracts and decentralized applications where they can create their own arbitrary rules for ownership, transaction formats and state transition functions.以太坊: 一个内置了图灵完备的程序语言的区块链。任何人可以编写智能合约;或者 “可以创造任意属于自己的规则” 的去中心化应用;以及交易格式和状态转化函数。#1 Smart Contract以太坊中最重要的概念: 智能合约。相对于比特币来说,智能合约可以说是比特币中 ”脚本“ 的升级加强版:智能合约可以支持更强大的脚本语言(图灵完备的脚本语言),并允许开发者开发任意应用实现智能合约(可以将以太坊想象为一个应用商店,用户可以从上面买到任一应用)。以太坊 = 比特币 + 智能合约

智能合约,从概念上来说,是运行在可复制、共享的账本上的一段计算机程序。它由用户发布,且发布之后无法修改。每个合约都相当于一段代码,且都有一个账户地址。每当这个地址发生交易的时候,这段代码就会被执行。每个合约只能以区块链作为输入和输出。任一合约可以调用其他合约中的函数。执行合约的过程中可以创建新的交易。

#2 Accounts在以太坊中,状态由一个个称之为 “账户” 的对象组成。每一个账户有一个 20 byte 的地址和账户之间价值和信息的直接转换而来的状态转变。(这段话有点难理解,简单来说就是账户的交易过程中产生的对象实体。)

以太坊中每个账户包含 4 个部分:随机数,一个用来确保每笔交易只能被执行一次的计数器。当前的以太余额(以太坊中的货币单位为 “以太” )。账户的合约代码,如果有的话。账户的存储(默认为空)。

账户有两种类型:外部所有账户,由私钥控制。这种账户没有包含任何代码,而且任何人都可以通过创建和签名一条交易来通过这种账户发送消息。合约账户,由它们的合约代码控制。在合约账户中,每当此账户接收到一条消息的时候,它的合约代码便会被执行。这使得合约账户可以读写内部存储,并发送其他消息或者在执行过程中创建其他交易。Note“合约” 在以太坊中并不应该被视为一种应该 “用它来填满” 或者 “服从于它的规则” 的东西。它们更像是一种在以太坊执行环境内部的 “自主媒介”。它们总是在接收到消息或者交易的时候执行一段代码片段,并直接控制属于它们的以太余额和键值存储,以此来追踪不断变化的状态。#3 Messages and TransactionsTransactions以太坊中的 “交易” :表示已经签名过的,储存着一个发送到外部所有账户的 “消息” 的数据的集合。包含:消息的接收者标识发送者的签名发送者转移给接受者的以太总额一个可选的数据域一个值,用来表示交易执行过程中允许的最大计算步骤一个值,用来表示每一个计算步骤发送者需要支付的费用Note和两个部分对于以太坊的anti-denial-of-service model(反阻断服务模型) 至关重要。为防止意外出现或者恶意执行的代码无限循环,以及一些代码造成的计算浪费。计算的基本单位为 "gas"。通常,一个计算步骤会消耗一个 gas,不过一些复杂的(包括一些需要昂贵的计算成本的,或者需要储存更多数据到状态中的)计算会消耗更多的 gas。交易数据中每一个字节都需要 5 个 gas 的花费。

Messages所有合约都向其他合约可以发送 ”消息“ 。这里的消息是一些虚拟对象,它们只在以太坊的执行环境中存在,且不会被序列化。一个消息包含:消息的发送者 (默认包含)消息的接收者关联的交易的以太金额一个可选的数据域一个值

需要着重留意的是,一个消息就像一笔交易一样,会使得接收者的账户执行它的关联代码。不同点在于,消息是由合约产生的(当合约代码执行到操作码时),且它不是一个外部参与者。因此,合约可以和其他合约产生关联,就像就像外部参与者一样。Note以太坊中消息机制的存在,使得合约与外部账户拥有同样的 —— 发送消息和创建其他合约的权力。

  • 发表于:
  • 原文链接:http://kuaibao.qq.com/s/20171227G00TQH00?refer=cp_1026

扫码关注云+社区