Skip to content

Latest commit

 

History

History
512 lines (229 loc) · 19.1 KB

0_专业术语.markdown

File metadata and controls

512 lines (229 loc) · 19.1 KB

术语汇编

Account

包含地址、余额、随机数以及可选存储和代码的对象。账户有两类:合约账户和外部账户,其中外部账户存放代码的地方为空,我们经常根据这点来区分合约账户和外部账户。

Address

这经常表示可以在区块链上接收或发送交易的外部账户地址或者是合约(合约不能主动发起交易)。更具体来说,它是ECDSA公钥的keccak散列的后二十个字节组成的。

Assert

在solidity中,assert(false)编译为0xfe,一个无效的操作码,它会耗尽所有剩余的气体并恢复所有更改。当assert()语句失败时,就会发生一些非常错误和意想不到的事情,您将需要修复您的代码。您应该使用assert()来避免永远不会发生的情况。

solidity对一个require式的异常执行回退操作(指令0xfd)并执行一个无效操作(指令xxfe)来引发assert式异常。对于这两种情况,都会导致EVM回退对状态所做的所有更改。回退的原因式不能继续安全地执行,因为没有实现预期地效果。因为我们想保留交易的原子性,所以最安全地做法是回退所有更改并使整个交易不产生效果。请注意,assert式异常消耗了所有可用的调用gas,而从 Metropolis 版本起 require 式的异常不会消耗任何 gas。

big-endian

数据地高位字节保存在内存地低地址中,而低位字节保存在内存的高地址中。与little-endian相反:数据的高位字节保存在内存的高地址中,而低位字节保存在内存的低地址中。

BIPS

bitcoin improvement proposals(比特币改进建议)。比特币社区成员提交的一组改进比特币的填。例如,BIP-21是一项改进比特币统一资源标识符(URI)方案的提案。

block

一种数据结构,区块链以一个个区块以特殊的方式连接从而保证区块链的不可篡改,区块只能由矿工添加到以太坊网络

blockchain

在以太坊中,由工作量证明系统验证的一系列区块,每个区块都与其前一个区块连接到创世区块。这与比特币协议不同,因为它没有块大小限制,它改为使用不同的气体限制。

bytecode

为虚拟机或软件解释器高效执行而设计的抽象指令集,与人类可读的源代码不同,字节码以数字格式表示。

byzantium fork(拜占庭分叉)

//TODO

metropolis发展阶段的两个硬分叉中的第一个。它包括EIP-649:大都会难度炸弹延迟和区块奖励减少,其中冰河时代延迟1年,区块奖励从5个以太币减少到3个以太币。

compiling

将高级编程语言(例如solidity)编写的代码转换为低级语言(例如EVM字节码).

consensus

当众多节点(通常是网络上的大多数节点)在其本地验证的最佳区块链中都具有相同的块时,不要与共识规则相混淆。

consensus rules

全节点遵循的块验证规则与其他节点保持一致,不要与共识相混淆。

constantinople fork(君士坦丁堡分叉)

metropolis发展阶段的两个硬分叉中的第二个,原计划于2018年年中进行。预计将包括切换到混合工作证明(减少算力消耗而进行的优化)/股权证明共识算法(pos),以及其他变化

contract account

一个包含代码的账户,只要它从另一个账户收到交易,就会执行该代码。

contract creation transaction

以"零地址"作为接收方的特殊交易,用于注册合约并将其记录在以太坊区块链上。

dao

去中心化的自治组织。没有等级管理的公司或其他组织。也可以指2016年4月30日启动的名为"The DAO"的合约,该合约随后于2016年6月遭到黑客攻击;这最终激发了区块1192000的硬分叉(代号DAO),它逆转了被黑客攻击的DAO合约,并导致以太坊被分裂成两个相互竞争的系统。

dapp

去中心化的应用。从小的方面来看,它是一个智能合约和一个web端的用户页面所组成的。更广泛的来看,dapp是一种构建在开放、去中心化、点对点基础设施服务之上的网络应用程序。此外,许多dapp包括去中心化存储或消息协议和平台。

deed

ERC721提案引入的非同质化货币(NFT)标准.与ERC20代币不同,它证明了所有权并且不可互换,尽管他们在任何司法管辖区都不被赋予法律效应。

difficulty

对于pow共识机制来说,difficulty用于控制生成一个合理区块所需要的计算量,通过这样在一定程度上保证区块链的安全。

difficulty 越短生成一个合法区块的难度就越小,从某种程度上来讲,作恶的成本就越小,最坏的情况是,P2P系统因为此原因达成不了共识。difficulty越长,一个合法区块产生的时间间隔就越长,会导致TPS(transaction per second)值减小,也就是每秒交易数量极低。一般来说,区块链系统都会根据一段时间的算力来动态调整difficulty,保证出块的时间在一个合理的范围内动态波动,对于btc来说,一般是十分钟。

digital signature

用户使用私钥为文档生成的一小串数据,这样任何拥有相应公钥、签名和文档的人都可以验证。1、该文档由该特定私钥的所有者签名的。2、文件在签名后未被更改。也就是说,数字签名扮演现实世界中的印章的角色,来指定某人做过某事。

ECDSA

椭圆曲线数字签名算法。以太坊使用的一种加密算法,以确保资金只能由其所有者拥有。

EIP

ethereum improvement proposal.向以太坊社区提供信息的设计文档,描述提议的新功能或其流程或环境。有关详细信息,请参阅 https://github.com/ethereum/EIPs(另请参阅“ERC”)。

ENS

//TODO

ethereum name service.有关详细相信,请参阅 https://github.com/ethereum/ens/

Entropy

//TODO

在密码学的背景下,缺乏可预测性或随机性水平。在生成秘密信息(例如私钥)时,算法通常依赖于高熵来确保输出不可预测。

EOA

externally owned account. 由以太坊网络的用户创建的一个账户

ERC

ethereum request for comments(以太坊征求意见)。给一些试图定义以太坊使用特定标准的EIP的标签。

Ethash

以太坊1.0的工作量证明算法。有关详细信息,请参阅https://github.com/ethereum/wiki/wiki/Ethash

ether

以太坊生态系统使用的原生加密货币,用于支付执行智能合约时的gas费用。

event

允许使用EVM日志记录工具。DAPP可以侦听事件并使用它们在用户界面中触发js回调。有关详细信息,请参阅http://solidity.readthedocs.io/en/develop/contracts.html#events

evm

ethereum virtual machine.执行字节码的基于堆栈的虚拟机。在以太坊中,执行模型制定了系统状态如何在给定一系列字节码指令和一个晓得环境数据元组的情况下改变。这是通过虚拟状态机的模型实现的。

evm assembly language

一种人类可读的EVM字节码形式。

fallback function

在没有数据或声明的函数名称的情况下调用的默认函数。

faucet(水龙头)

一种以免费测试ether的形式分配资金的服务,可以在测试网上使用。

finney

ether的一种面额。1 finney=10^15wei,10^3 finney =1 ether

fork

协议的变化导致替代链的创建,或者在产生区块的过程中两个潜在区块路径的时间分叉

对于fork来讲,一般矿工会遵循最长有效链原则,继续开始挖矿。

frontier

以太坊初期测试开发阶段,从2015年7月持续到2016年3月

ganache

可以理解为以太坊私有链,可用于运行测试、执行命令和检查状态,同时控制链的运行方式。

gas

以太坊种用于执行智能合约的虚拟燃料。EVM使用记账机制来衡量gas的消耗并限制计算资源的消耗

gas limit

交易或区块可能消耗的最大气体量。

个人认为这是具有图灵完备的区块链的一个重要特点。从一定程度上保证了程序的可终结性(一定能在一段时间内执行完),同时用户根据计算资源消耗的多少付出响应的服务费,同时矿工也可以根据此机制得到一定的服务费。

gavin wood

英国程序员,以太坊联合创始人,前CTO.2014年8月,他提出了solidity,一种用于编写智能合约的面向合约的编程语言。

genesis block

一条区块链的第一个区块,用于初始化特定网络及其加密货币。

geth

以太坊协议最著名的实现之一,用 Go 语言编写。

hard fork

区块链的永久分歧,也被称为硬分叉。当未升级的节点无法验证由遵循新共识规则的升级节点创建的区块时,此类情况被称为硬分叉。不要与分叉、软分叉、软件分叉或git 分叉相混淆。

hash

由散列函数生成的可变大小输入的固定长度的指纹。

HD wallet

//TODO

使用分层确定性(HD)密钥创建和传输协议(BIO-32)的钱包。

HD wallet seed

用于生成HD钱包的主私钥和主链码的值。钱包种子可以用助记词表示,方便人类复制、备份、恢复私钥。

Homestead(家园)

以太坊的第二个开发阶段,于2016年3月在区块1150000启动。

ICAP

//TODO

交换客户端地址协议。一种与国际银行账号(IBAN)编码部分兼容的以太坊 地址编码,为以太坊地址提供通用、校验和可互操作的编码。ICAP地址使用新的IBAN伪国家代码: XE,代表"扩展以太坊",用于非管辖货币(例如XBT、XRP、XCP)

ice age(冰河世纪)

以太坊硬分叉在区块200000引入指数级难度增加(又名难度炸弹),推动向权益证明的过渡。

ide

集成开发环境。一个用户界面,通常结合了代码编辑器、编译器、运行时和调试器.例如:vscode、goland、webstorm...

immutable deployed code problem

一旦部署了合约或库的代码,它就变得不可变了。标准的软件开发实践依赖于能够修复可能的错误并添加新功能,因此这对智能合约开发来说是一个挑战。

注意:对于真实的智能合约开发来讲,用一定的设计模式是可以改变这种窘境,但是也会带来新的问题(合约代码可变的争论).据我所知,ERC1967就是对此的改变。

internal transaction("message")

内部交易(也成为消息),从一个合约账户发送到另一个合约账户或EOA的交易。

ipfs(星际文件系统)

一个协议、网络或者说是开源项目,旨在创建一种内容可寻址的对等方式,用于在分布式文件系统中存储和功效的超媒体。

扩展:实现原理借鉴git和bittorrent

kdf

//TODO

key derivation function(密钥推导函数)。也称为"密码扩展算法",密钥库格式使用它通过重复散列密码短语来防止对密码短语加密的蛮力攻击、字典攻击和彩虹表攻击。

keccak-256

以太坊中使用的加密哈希函。keccak-256被标准化为sha-3.

keystore file

包含单个(随机生成的)密钥的JSON编码文件,通过密码加密以提高安全性

level db

一个开源的基于磁盘存储的key-value 数据库,作为一个轻量级的、单一用途的库实现绑定到许多平台。

library

一种特殊类型的合约,没有支付功能,没有回退功能,也没有数据存储。因此,它不能接收或持有以太币也不能存储数据。库主要用来在一个项目中进行代码复用。

lightweight client

一种以太坊的客户端,不存储区块链本地副本和验证块和交易,提供钱包的功能,可以创建和广播交易。

merkle patricia tree

以太坊中用于有效存储key-value的数据结构

存储以太坊中世界状态树、收据树、交易树的数据结构

message

//TODO

从未序列化且仅在EVM内发送的内部交易

message call

将消息从一个账户传递到另一个账户的行为。如果目标账户与EVM代码相关联,则VM将以该对象的状态启动,并根据消息进行操作。

metoken

本书用于演示的ERC20代币

metropolis(都会)

以太坊的第三个发展阶段,于2017年10月启动。

miner

以太坊中通过重复哈希计算找到新的区块的一个网络节点。

对于目前来说,广义来讲,即区块链中正在为发现新块做出努力的网络节点

mist

第一个支持以太坊的浏览器,由以太坊基金会构建。它包含了一个基于浏览器的钱包,这是ERC20标准的第一个实现(ERC20 的作者 Fabian Vogelsteller 也是 Mist 的主要开发人员).mist也是第一个引入驼峰式校验和(EIP-55)的钱包。mist运行一个完整的节点,并提供一个完整的dapp浏览器,支持基于swarm的存储和ens地址。

network

参考以太坊网络,一个将交易和区块传播到每个以太坊节点的点对点网络。

nft

这是ERC721提案引入的代币标准。NFT可以被追踪和交易,但每个代币都是独一无二的,它们不能像ERC20代币那样互换。NFT可以代表数字或实物资产的所有权。

node

参与网络的软件客户端。

nonce

在密码学中,只能使用一次的值。以太坊中使用的nonce有两种:账户nonce是每个账户中的交易计数器,用于防止重放攻击;工作量证明随机数是块中用于满足工作量证明的随机值。

在智能合约的assembly中新引入create2来让创建的智能合约地址变得具有可预测性的特点,其原理是基于address和用户nonce实现的。

ommer(叔父区块)

当一个矿工找到一个有效区块时,另一个矿工可能已经发布了一个竞争区块,该区块被添加到区块链的顶端。与比特币不同,以太坊中的孤立区块可以作为ommers包含在新区块中,并获得部分区块奖励。“ommer”一词是首选的性别中立术语,用于表示父块的兄弟姐妹,但有时也被称为“叔叔”。

parity

//TODO

以太坊客户端软件最突出的可互操作实现之一

private key

详细请看 "secret key"

proof of stake(POS)

一种加密货币区块链协议旨在实现分布式共识的方法。pos要求用户出示一定数量的加密货币(他们在网络中的股份)作为保证来参与区块链的产生,这种共识机制从经济学角度来讲一定程度上保证了拜占庭节点的产生。

Proof of work (PoW)

需要大量计算才能找到的一段数据(证明)。在以太坊中,矿工必须找到 Ethash 算法的数值解,以满足全网难度目标。

private key

由私钥产生的一串数字,可以公开共享,任何人都可以使用它来验证相应私钥制作的数字签名。

receipt

以太坊客户端返回的代表特定交易结果的数据,包括交易的哈希值,区块编号,使用的gas,以及在部署智能合约的情况下,合约的地址

re-entrancy attack(重入攻击)

一种由攻击者合约调用受害者合约函数的攻击,在执行过程中,受害者以递归方式再次调用攻击者合约。例如,这可能会导致通过跳过更新余额或计算提款金额的受害者合约部分来盗窃资金。

reward

每个新区块中包含一定数量的以太币,作为网络对找到工作量证明解决方案的矿工的奖励。

对于以太坊来说,产生一个区块的奖励还应该加上区块里执行交易所产生的部分gas费用。

rlp

递归长度前缀。由以太坊开发人员设计的编码标准,用于编码和序列化任意复杂性和长度的对象(数据结构)。

satoshi nakamoto(中本聪)

设计比特币、创建其原始参考实现并率先解决数字货币双花问题的个人或多人使用的名称。他们的真实身份仍然未知。

secret key(private key)

允许以太坊用户通过生成数字签名(参见“公钥”、“地址”、“ECDSA”)来证明帐户或合同所有权的秘密号码。

serenity(宁静)

以太坊的第四个也是最后一个发展阶段,还没有计划的发布日期。

serpent

一种过程式(命令式)智能合约编程语言,语法类似于python。

sha

安全哈希算法。美国国家标准与技术研究院 (NIST) 发布的一系列加密哈希函数。

singleton

一种计算机编程术语,用于描述只能存在一个实例的对象。

smart contract

在以太坊上执行的程序。

solidity

一种过程式(命令式)编程语言,其语法类似于 JavaScript、C++ 或 Java。以太坊智能合约最流行和最常用的语言。由 Gavin Wood 博士(本书的合著者)创建。

solidity inline assembly

Solidity 程序中的 EVM 汇编语言。 Solidity 对内联汇编的支持使得编写某些操作变得更加容易。

spurious dragon

以太坊区块链的硬分叉,发生在2675000区块,以解决更多的拒绝服务攻击向量和清除状态(另请参见“Tangerine Whistle”)。此外,重放攻击保护机制。

swarm

去中心化 (P2P) 存储网络,与 Web3 和 Whisper 一起用于构建 DApp。

注意:这里的swarm和传统互联网中的集群有所区分。

szabo

ether的一种面额。1 szabo=10^12 wei,10^6 szabo=1 ether

tangerine whistle

以太坊区块链的硬分叉,发生在区块2463000以更改某些I/O密集型操作的气体计算,并清除拒绝服务攻击的累积状态,这种攻击利用了这些操作的地气体成本操作。

Testnet

“测试网络”的缩写,该网络用于模拟以太坊主网络的行为。

Transaction

提交给以太坊区块链的数据,由原始帐户签名,针对特定地址。该交易包含元数据,例如该交易的气体限制。

truffle

最常用的以太坊开发框架之一。

turing complete(图灵完备)

一个以英国数学家和计算机科学家艾伦·图灵(Alan Turing)命名的概念:一个数据处理规则系统(如计算机的指令集、编程语言或元胞自动机)如果可以用来模拟任何图灵机,就被称为“图灵完备”或“计算通用”。

vitalik buterin

俄裔加拿大程序员和作家,主要以以太坊和比特币杂志的联合创始人而闻名。

vyper

一种高级编程语言,类似于 Serpent,具有类似 Python 的语法。旨在更接近纯函数式语言。由 Vitalik Buterin 创建。

wallet

持有密钥的软件。用于访问和控制以太坊账户并与智能合约交互。密钥不需要存储在钱包中,而是可以从离线存储(例如存储卡或纸张)中检索以提高安全性。尽管名称如此,但钱包从不存储实际的硬币或代币。

web3

网络的第三个版本。由 Gavin Wood 博士首先提出,Web3 代表了 Web 应用程序的新愿景和焦点:从集中拥有和管理的应用程序,到构建在去中心化协议上的应用程序。

wei

ether 最小的面额 10**18 wei =1 ether

whisper

去中心化 (P2P) 消息服务。它与 Web3 和 Swarm 一起用于构建 DApp。

zero address

一个特殊的以太坊地址,完全由零组成,被指定为合约创建交易的目标地址。