术语表

Đ
Đ, 加了横线的D 是在古英语、中世纪英语以及冰岛语、法罗斯群岛语中的一个大写字母”Eth”。它被用在像ĐEV或Đapp(去中心化应用)这样的词中,在这里,Đ是一个斯堪的纳维亚语的字母”eth”。大写的eth(Đ)也被用来做加密货币Dogecoin(Doge币)的象征。
去中心化应用 (= dapp)
脱离中心化的信任机构而运作的服务。一种允许脱离中间人而使最终用户/资源可以直接进行互动、达成协议或交换信息的应用程序。参考 Dapps
DAO
去中心化自治组织。DAO是区块链上的一种类型的合约(或者一套合约),它可以制定规则、强制执行或自动化包括组织管理、资金筹措、实操、开销和扩张在内的一些组织级的工作。
身份(identity)
由同一个人创建的一组可以通过某种方式进行验证的交互。
数字身份(digital identity)
一组使用相同公钥签名的、可以进行验证的交易,定义了数字身份的行为。在很多真实场景(比如投票)会希望数字身份可以和真实身份相符。如何非暴力地确保这一点,是个仍然未被解决的问题。
唯一身份(unique identity)
由同一个人创建的一组可以通过某种方式进行验证的交互,外加一个限定:一个人不会同时具有多个身份。
名声(reputation)
一个被其他实体所相信 (1) 有能力完成某项任务, (2) 在某些情况下值得信任(例如即使有短期获益的可能,也不会背叛其他人)的身份所拥有的财产(所有物)。
第三方监管(escrow)
如果两个互不信任的实体有意进行交易,他们也许会希望通过一个他们分别信任的第三方来处理资金转移;只有当产品交付的证明确认之后,资金才会被划转给收款方。这降低了付款方或者收款方进行欺诈的风险。这个过程和这个第三方就被叫做escrow。
保证金(deposit)
一些数字资产可以被加入一个合约,并在合约中包含另一方;当一个特定的条件无法达成时,这些数字资产会自动丧失,被奖励给认定这个条件的另一方,或者销毁掉(= 消费掉 = 被分发出去),或者被捐赠给一些信托基金。这些数字资产就是所谓的押金。
信任网络(web of trust)
这是一种设想:如果A高度认可B,并且B高度认可C,那么A可以信任C。基于这种原理,从理论上讲,判断特定概念中的特定个体间的可靠性的更复杂、更有效的算法,是可以被设计出来的。
激励相融(incentive compatibility)
这是一种协议,如果任何人想要“不遵守规则”来尝试欺诈,那么除非大多数人都在同时同意这种欺诈(共谋),否则无法达成。
共谋(collusion)
指在一种激励性的协议下,一部分参与者 一起假扮 (密谋)基于规则为他们自己牟利。
代币系统(token system)
一种可以被交易的不可替换的虚拟货物。更正规的讲,一个代币系统就是一个将许多资产映射为地址的数据库。其中所允许的主要操作就是N个代币由A转移到B,N不能为负数,N不大于A的余额,并有一份文档记录这个由A签名的转移授权。此外,类似于“保险”和“消费”的操作也是可以存在的,交易费会被收取,多个实体间同时发生的多重交易也是可能的。典型的使用场景包含货币、网络中的加密代币、企业股份和数字礼品卡。
区块(block)
一个区块就是一个数据包。包含了若干交易、前一区块(父区块)的哈希和其他可选数据。所有区块的总和就叫做区块链,包含了网络中所有交易的历史;除了最开始的“创世区块(genesis block)”以外,每个区块都包含一个它父区块的哈希。一些基于区块链的加密货币使用“账本(ledger)”一词,而不是区块链;但他们大体上是等价的。不过,在那些使用”账本“术语的系统中,每个区块一般会包含一个所有账户当前状态的完整拷贝(比如货币余额、部分满足的合约、登记项目等),来允许用户丢弃过时的历史数据。
dapp
即Đapp,就是“去中心化应用程序”。因为使用了 大写的eth字母Ð ,也可以把它读作Ethapp。
地址(address)
一个以太坊地址代表了一个账户。对于 EOA ,地址是由控制账户的公钥的最后20字节获得的,例如 cd2a3d9f938e13cd947ec05abc7fe734df8dd826 。这是个 16进制 格式,一般更明确地以 0x 作为前缀。在Web3.js和控制台函数中使用地址时可以不加前缀,但我们推荐使用它们。由于每字节地址由两个16进制字符标示,所以加上前缀的地址长度就是42字节。很多应用和API都实现了从Mist以太坊钱包0.5.0版本开始引入的新的 可校验地址规则(checksum-enabled address scheme)
16进制(hexadecimal)
表示字节序列的一般格式。它的优点是可以使用两个字符(字符 [0-9][a-f] )来简洁地表示一字节数据的值。
以太币(ether)
以太币是以太坊中所使用的货币的名称。它用来支付EVM中的计算费用。此外略有歧义的,它也是系统中一个计量单位的名称。
外部账户(EOA)
即Externally Owned Account,一个由唯一私钥控制的账户。如果你拥有一个EOA的私钥,你就可以使用它来发送以太币和消息。合约账户也有一个地址,参考 账户 。从Serenity版本开始,EOA和合约账户可以组合到同一个账户中。
气(gas)
即所谓 加密燃油(cryptofuel) 的名称,由EVM在执行代码时所消耗。气被用来支付以太坊区块链上的每个执行所需的费用。
气的上限(gas limit)
气的上限可以被应用到单独的交易中,参考 气价 ,也可以被用在区块中 block-gas-limit 。对于单独的交易,气的上限表示了你希望为执行合约的交易所支付的最大的气的数量。它是为了保护用户,使他们的以太币不会在尝试执行一个大任务或者恶意合约时被花光。区块的气上限,代表了区块中所有交易的气的累积。随着Homestead的发布,区块的气上限从3,141,592提高到4,712,388(大约增加了50%)。
气价(gas price)
即在交易中指定的每单位气所对应的以太币价格。随着Homestead的发布,默认的气价从50 shannon降低到20 shannon(大约降低了60%)。
交易(transaction)
一个由外部账户发出的签名数据包,其中保存一个消息。一个交易就是从一个外部账户到另一个外部账户或合约账户的信息转移。
消息(message)
合约与合约之间进行数据传输的一种机制。消息也可以被描述为一种虚拟对象,它不会被序列化,并且仅存在于以太坊执行环境中。
Web3
Web3的确切定义仍在被讨论,但它一般是指由日益增长的各种可连接设备、去中心化服务和应用程序、在线信息的逻辑存储和人工智能应用程序所组成的网络。
epoch
Epoch是DAG的生成周期,DAG是PoW算法Ethash所使用的种子。Epoch被指定为30000个区块。(即每隔30000个区块需要重新生成DAG,译者注。)
椭圆曲线(elliptic curve,密码学)
一个基于椭圆曲线代数结构的公钥密码学算法。参见 椭圆曲线加密
钱包(wallet)
一般意义上说,钱包就是任何可以保存以太币或其他加密货币的载体。在加密货币领域,钱包一般是指从可以保存单一公私钥对到管理多个密钥对的任何载体,比如Mist以太坊钱包。
合约(contract)
以太坊区块链上的一些持久化的代码,包含可执行函数的数据。当包含特定输入参数的以太坊交易发生时,这些函数可以运行。函数可以基于输入参数与合约内外的数据进行交互。
自杀(suicide)
参考自毁。依照 EIP 6 - Renaming SUICIDE OPCODE 自杀(suicide) 已不推荐使用。自毁(selfdestruct) 是与其等价的术语。
自毁(selfdestruct)
Solidity语言中的一个全局变量,允许你`“销毁当前合约,把它的资金发送到给定的地址上” <https://solidity.readthedocs.org/en/latest/miscellaneous.html#global-variables>`_ ,是已不推荐使用的术语自杀(suicide)的同义词。它会释放在区块链上的空间,并防止合约再被执行。合约的地址仍然回存在,但发送到其上的以太币会永远丢失。合约的创建者可以使用Solidity的 selfdestruct 函数来删掉合约。
交易费(transaction fee)
也就是气费(gas cost),是为了执行你的交易所需要支付给矿工们的以太币的数量。
挖矿(mining)
在以太坊区块链上校验交易和合约的执行(挖到区块),以此来交换一个以以太币为单位的奖励的过程。
矿池(mining pool)
一个由矿工所组成的资源池,它们通过一个网络共享处理能力,依照解决一个区块所贡献的工作量分配收到的奖励。
挖矿奖励(mining reward)
挖到一个新区块的矿工会被给予的加密货币(在这里是以太币)奖励。
状态(state)
区块链上所有余额和数据在某个时间点的快照,一般指某个特定区块的状况。
区块链(blockchain)
一个永远增长的数据区块序列。当一个新交易被作为一个新区块的一部分被确认的时候,它会得以增长。每个新区块都会基于一个密码学的工作量证明(PoW)而添加到当前区块链的尾部。
端点(peer)
网络上其他也在运行以太坊节点(Geth)的计算机,和你一样,它们也都有一个准确的区块链拷贝。
签名(signing)
用你的私钥生成一些表示签名的数据,来证明数据的原始拥有者是你。
发现(端点)
与网络中的其他‘攀谈’的过程,以此来获取其他节点的状态。
权威气价(gas price oracle)
一个Geth客户端的辅助函数,在发送交易时可以找到一个合适的默认气价。
轻客户端(light client)
允许用户在一个低容量环境中执行和检查交易执行,而不用去运行一个以太坊全节点(Geth)的客户端程序。
etherbase
你的节点上的账户的默认名称,它会作为你的主账户。如果你进行挖矿,挖矿奖励会被存入这个账户。
coinbase
一个与etherbase类似的概念,但也是个所有加密货币平台所通用的术语。
余额(balance)
属于一个账户的加密货币(在现在这个事例里)的数量。
solidity
Solidity是一个高级开发语言,语法规则接近Javascript。它被设计用来编译以太坊虚拟机的代码。
serpent
Serpent是一种高级开发语言,语法规则接近Python。它被设计用来编译以太坊虚拟机的代码。
EVM
即以太坊虚拟机(Ethereum Virtual Machine),它是构成以太坊平台的去中心化核心计算平台。
虚拟机(virtual machine)
在计算机领域,它指一种对特定的计算机系统的模拟。
端到端网络(peer to peer network,即P2P网络)
一个由计算机组成的网络,可以完成那些仅可能由中心化的、基于服务器的服务所完成的功能。
去中心化(decentralization)
一种将控制和计算处理的执行从中心化的实体中移出的概念。
分布式哈希表(Distributed Hash Table,DHT)
分布式哈希表是一种去中心化的分布式系统,可以提供类似于哈希表功能的查找服务。DHT中保存的是键、值对,网络中的任何节点都可以通过特定键高效地取得相应的值。
网络地址翻译(Network Address Translation,NAT)
一种将一个IP地址重映射到其他地址的方法。这是通过在网络路由设备中传输数据包时修改数据包头数据中的网络协议(IP)信息而做到的。
nonce
即一次性数字。在信息技术里,nonce就是为了某个特定目的而生成的数字,比如会话验证(session authentication)。典型地,nonce应该是一些随时间而变化的数值,因而有时会使用一个很大的随机数。一般而言,nonce意味着“邻近的时刻”或者“临时”。在区块链的工作量证明场景中,适合当前网络难度来证明区块有效性的那些由矿工找到的哈希值,被称为Nonce。
工作量证明(proof-of-work)
指一个数学上的值,可以证明已经解决了一个消耗资源和时间的计算问题。一般以缩写形式“PoW”出现。
权益证明(proof-of-stake)
挖矿操作的一种替代方法,需要矿工通过回答问题的方式证明它们拥有一定量的网络货币。这基于一个原理,就是矿工们不应该会去尝试破坏一个它们拥有权益的网络。权益证明一般以缩写形式“PoS”出现。与PoW相比,PoS可以降低算力的浪费,但它同样也可以给网络提供额外的安全性。
CASPER
Casper是一个基于保证金的经济学共识协议。这意味着被称为“bonded validators”的节点,需要为了在通过产生区块而达成共识的时候缴纳一份保证金(我们称之为“bonding”的一种行为)。如果一个验证器(即某个节点)产生了一个被Casper认为“无效”的数据,它就会丧失这个保证金和继续参与共识过程的权力。
共识(consensus)
指网络中所有节点关于以太坊网络状态的一致认同。
homestead
Homestead是以太坊平台的第二个主版本。它包含了很多未来网络升级所需的协议改动和网络改动:EIP-2 Main homestead hardfork changesEIP-7 Hardfork EVM update (DELEGATECALL)EIP-8 devp2p forward compatibility 。他已经在主网络到达1,150,000区块时被引入了。在测试网路中,它是在494,000区块时被引入的。
metropolis
以太坊的第三个发布版本。这是个用户界面出现的阶段(比如Mist),包括dapp商店。非技术背景的用户也可以在这个时候舒服的加入了。
serenity
以太坊的第四个发布阶段。这将是我们希望将网络中的挖矿过程由工作量证明迁移到权益证明的时候。
frontier
以太坊被计划为执行四个主要的阶段,Frontier是第一阶段的名称。Frontier版本已经在2015年7月30日发布。在这个命令行方式的Frontier阶段,每个区块奖励都被定为5以太币,并允许以太币的兑换。Frontier大大超过了早期的预料,使以太坊的生态系统得到了巨大的成长。
olympic
Frontier的先期发布版本,于2015年5月9日上线。它是为了使开发者可以测试以太坊区块链的各种边界限制。
morden
Morden是以太坊的第一个替代性测试网络。预计它会从Frontier到Homestead阶段一直持续存在。
测试网络(testnet)
为测试目的而存在的以太坊生产环境的镜像网络。参见morden。
私链(private chain)
私链就是一个写入权限中心化地由一个组织所掌握的区块链。
联盟链(consortium chain)
一个共识处理由预设的若干节点所控制的区块链。
微支付(micropayment)
微支付就是经常在线上活动发生的,交易额很小(小于1美元)的财务交易。
分片(sharding)
将可能的账户(合约也属于账户)空间切分为子空间的处理,比如基于它们的数字地址的首数字。这可以使合约在‘片’上执行,而不是在整个网络中,从而使交易更快速完成,并提供了一种更强的可扩展性。
哈希(hash)
一个密码学功能,它可以接受一个输入(或‘消息’),产生一个定长的字符串,被称为哈希值(有时也称为消息摘要、数字指纹、摘要或者检查计数)。哈希函数(或哈希算法)是一种将文档(比如一部分数据或文件)变换为一个较小数据(通常是32字节)的处理。哈希值看起来是完全随机的,并且与文档毫无关联的数据,但特定的文档经过哈希处理所得到的值总是一样的。此外最重要的是,要找到两个具有同样哈希值的文档是极为困难的计算处理。一般而言,即使两个文档中只有一个字母的不同,它们也会产生完全不同的哈希值。比如,“Saturday”的SHA3哈希值是 c38bbc8e93c09f6ed3fe39b5135da91ad1a99d397ef16948606cdcbd14929f9d ,而“Caturday”的SHA3哈希值则是 b4013c0eed56d5a0b448b02ec1d10dd18c1b3832068fbbdc65b98fa9b14b6dbf 。哈希总是被用做生成某个特定文档的不可伪造的全局唯一标示的方法。
加密燃油(crypto-fuel)
就是‘气’,指处理交易所需要的加密货币数量。
加密经济学(cryptoeconomics)
即加密货币的经济学。
协议(protocol)
一个用来定义通过计算机网络交换数据的方法的标准。
区块认可(block validation)
即通过存储在区块链上的历史数据对区块的密码学签名进行合法性校验。
区块时间(blocktime)
挖矿产生两个区块的平均时间间隔。
网络哈希率(network hashrate)
网络中节点每秒可以完成的哈希计算次数总和。
哈希率(hashrate)
每秒可以完成的哈希计算次数。
序列化(serialization)
把数据结构变换为字节序列的处理。以太坊内部使用一个被成为Recursive-Length Prefix(RLP)编码的格式,在 wiki的RLP这一节 中有具体描述。
双花(double spend)
一个故意的区块链分叉;一个有大量挖矿算力的用户发送了一个交易来订购一些产出,然后当收到相应的产品之后,创建另一个交易,将与之前交易里的花销等量的代币再发送给自己。攻击者会在与原始交易同级的地方创建一个包含了第二个交易的新区块,然后在这个新的分支上开始挖矿。如果攻击者拥有超过全部挖矿算力50%的算力,就可以确保双花在任何区块深度上都能最终实现。如果攻击者的算力不足50%,那么虽然有可能会实现,但最多只能维持2到5个区块;所以,大多数加密货币交易、对赌网站和财务服务,会等到第六个区块产生才接受一个支付交易。
SPV客户端(SPV client)
一个仅下载区块链的一小部分的客户端,允许用户在低算力或低存储的硬件(比如智能手机和手提电脑)上来获得同样的安全保障,仅在必要的时候下载一部分状态信息。这种客户端不需要花费很高的带宽或存储去校验和维持全部的区块链数据。参考轻客户端。
uncle
Uncle就是某个矿工在其他矿工已经找到的区块的相同位置找到的区块,它们被称为“stale blocks”。Uncle的父区块是要插入的区块的一个祖先,可以定位到区块链的尖端。与比特币网络不同,为了避免对于那些网络条件欠佳的矿工的惩罚,“stale blocks”也会得到奖励。因为比特币网络的区块时间(约10分钟)比在以太坊网络中(小于15秒)高出很多,所以这个问题在比特币网络中并不严重。
GHOST
即Greedy Heaviest-Observed Sub-Tree,是一种特殊的链选择(chain-selection)方法,它被设计用来激励stale blocks(uncle),从而降低对矿池挖矿的激励。在GHOST中,即使是由stale block给出的对先前区块的确认也是有效的,产出stale block的矿工也会得到挖矿奖励。
merkle patricia tree
Merkle Patricia tree提供了一种密码学的验证数据结构,能够存储所有的(键,值)绑定。它们是完全可预测的,就是说具有相同的(键,值)绑定的Patricia tree会确保其下的所有字节都相同,所以会有相同的根哈希(root hash)。它为插入、查找和删除提供了0(log(n))的复杂度,并且比像红黑树(red-black tree)这种更复杂的基于比较的可选方案更容易理解和用编码实现。
DAG
即Directed Acyclic Graph。它是一个由一组节点和节点间的连接所组成的图,具有非常特殊的属性。以太坊在其工作量证明算法Ethash中使用DAG。Ethash中使用的DAG会会花费较长的时间才能生成,它会在每次切换Epoch时被矿工节点生成并存入一个缓存文件,而后当算法需要时,从文件中取得相应的值。
uncle rate
每个区块所产生的uncle数量。
issuance
对一个发现新区块的矿工进行的、新的加密货币的铸造和授予。
预售(presale)
在网络实际发布之前的加密货币销售。
静态节点(static node)
以太坊客户端Geth、Golang支持的一种特性,允许总是连接到特定的节点。静态节点会在断线时重新连接。请参考 静态节点的章节
引导节点(bootnode)
当一个节点运行的时候,可以被用来初始化发现过程的节点。这些节点的接入点是在以太坊代码之中记载的。
兑换(exchange)
一个在线交易市场,可以基于市场兑换比率进行加密货币和官方货币的兑换。
编译器(compiler)
一个可以将高级语言书写的代码变换为低级的可执行代码的程序。
创世区块(genesis block)
区块链中的第一个区块。
网络ID(network id)
一个用来标示以太坊网络特定版本的数字。
区块头(block header)
一个区块中一组数据,具有针对区块的内容和区块创建时的状况的唯一性。它包含了前一个区块头的哈希、挖出当前区块的软件版本、时间戳以及区块内容的merkle根哈希。
待定的交易(pending transaction)
一个尚未被以太坊网络所确认的交易。
区块广播(block propagation)
将一个已确认的区块传送给网络中的所有节点的过程。
侧链(sidechain)
从主链上分支出去的、周期性地进行检查的一个区块链。由于侧链是脱离主链独立运行的,所以其上的安全损害不会影响到主链。
pegging
单向地锁定两个链上的货币/代币兑换比率(通常是一个主链和一个侧链)。
2-way pegging
双向地锁定两个链上的货币/代币兑换比率(通常是一个主链和一个侧链)。
去信任(trustless)
指一种网络能力,通过可信的方式完成交易,而不需要相关各方信任其他任何人。
faucet
一个随意分发加密货币(一般是测试网络)的网站。
检查计数(checksum)
一次数据传输中的数据位计数,它会被包含在数据单元中,以便接收方可以验证所有的数据都被传输完成了。
ICAP
即Interexchange Client Address Protocol,是一个用来标示和处理用户账户的、兼容IBAN(国际银行账户编号)的系统。它旨在提高资金转移的效率、保证汇兑安全,最终,使KYC(Know Your Customer,指了解客户)和AML(Anti-money laundering,即反洗钱)顾虑成为过去。
私钥(private key)
私钥是一个仅拥有者才知道的字符串,和其所对应的公钥一起被文本加密解密算法所使用。
公钥(public key)
一个由私钥衍生出来的字符串,可以公开。它被用来校验由私钥生成的签名的真实性。
编码(encryption)
编码就是一个将电子数据变换为其他人不可读的格式的处理,只有拥有正确的解码密钥的人才能获知原始数据。就是将一个称为密钥的较短的字符数据(比如 c85ef7d79691fe79573b1a7064c19c1a9819ebdbd1faaab1a8ec92344438aaf4 )混合进原始数据(纯文本)中产生一个输出(加密文本),这个输出可以被持有密钥的人“解码”为原始的数据,但其他任何没有密钥的人都无法进行解码。
数字签名(digital signature)
一个用来证明一个数字消息或文档真实性的数学方案。
端口(port)
一个网络端口就是由实现网络数据交互的现成标准(比如TCP、UDP)所使用的通信端点。
RPC
即Remote Procedure Call,是一种无需了解网络细节,就可以从网络中的远程计算机上请求一个服务的程序协议。
IPC
即Interprocess communication,是一组变成接口,允许程序员在一个操作系统中跨多个程序进程完成一些协作任务。
attach
一个可以初始化以太坊Javascript控制台的命令。
daemon
一种后台运行的计算机程序,不直接与用户进行交互。
系统服务(system service)
参考base layer service
基础服务(base layer service)
像Swarm和Whisper这样内置在以太坊平台的服务。
js
Javascript.
同步(syncing)
下载全部区块链数据的过程。
快速同步(fast sync)
快速同步仅下载区块的交易收据并拉取最新的状态数据库,而不是一次性处理全部区块链并回顾所有历史交易。
ASIC
即Application-specific integrated circuit,在这里指专为加密货币挖矿所设计的特制集成电路。
强存储(memory-hard)
强存储功能就是那些即使有效存储略微降低,也会使速度和可用性大幅降低的处理。
keyfile
每个账户的私钥/地址对都被保存在一个keyfile里边。这是一个包含了账户的加密私钥的JSON文本文件,只有创建账户过程中输入的密码才能对其进行解密。
ICAP格式(ICAP format)
使用 Inter-exchange Client Address Protocol 定义的IBAN(国际银行账户编号)格式。
区块链浏览器(block chain explorer)
一个允许简单的从区块链搜索和导出数据的网络站点。
geth
基于以太坊黄皮书定义的协议,用Golang程序设计语言实现的以太坊客户端。
eth
基于以太坊黄皮书定义的协议,用C++程序设计语言实现的以太坊客户端。
ethereumjs
基于以太坊黄皮书定义的协议,用Javascript程序设计语言实现的以太坊客户端。
pyethereum
基于以太坊黄皮书定义的协议,用Python程序设计语言实现的以太坊客户端。
ethereumj
基于以太坊黄皮书定义的协议,用Java程序设计语言实现的以太坊客户端。
ethereumh
基于以太坊黄皮书定义的协议,用Maskell程序设计语言实现的以太坊客户端。
parity
基于以太坊黄皮书定义的协议,用Rush程序设计语言实现的以太坊客户端。
难度(difficulty)
最简单的讲,就是挖到一个新区块所需的工作量。随着Homestead的发布,难度调整算法也改变了
账户(account)
账户是以太坊网络的中心部分,也是任何交易或合约的必要组成部分。在以太坊中由两种类型的账户:外部账户(EOA)和合约账户。
HLL (obsolete,淘汰的)
即Higher Level Language,就是Serpent和Solidity这样的语言。HLL也是早期的Ðapp开发者对不涉及低级元素的以太坊程序设计语言的称呼,这个习语已经被逐步废除了。
CLL (obsolete,淘汰的)
即C Like Language,就是Mutan这样的语言。这个缩写也已经被废除了。
ES1, ES2, and ES3 (obsolete,淘汰的)
“Ethereum Script”的版本1,2和3。这些是以太坊虚拟机(EVM)的早期版本。
日志事件(log event)
合约是被作为区块验证的一部分的交易执行所触发的。如果把它们想象成为函数调用,那么合约执行就是异步的,所以它们没有返回值。取而代之地,它们是用日志事件与外部世界进行通信的。日志事件是交易收据的一部分,是在交易执行时产生的。收据是被保存在收据二叉树上的,收据二叉树是作为区块头的一部分,和状态二叉树的根状态一起保存的,这保证了它的完整性。更广义地从外部来看,除了这些收据不是能从内部读取的合约以外,它们是以太坊系统状态的一个组成部分。