以太坊基本概念

目录

1、账户(accounts)

    外部账户

    合约账户

2、合约(contracts)

3、交易(transaction)和消息(message)

    交易

    消息

4、气(gas)

    gas

    gasPrice

    gasCost

    gasLimit

    gasFee


1、账户(accounts)

       在比特币中,用户控制的只是地址,不存在实际账户的概念。用户通过带有自己地址的作为输出的UTXO的金额计算出自己的余额。导致每次交易都会消耗整数个的UTXO,并且产生新的UTXO(找零)。

        然而以太坊核心就在于拥有账户的概念,每个用户都会拥有两类账户:外部账户(Externally Owned Accounts)和合约账户(Contract Accounts,CAs)。一般情况下,以太坊中的账户指的都是外部账户。在以太坊中,账户被认为是状态对象:其中外部账户具有余额(balance),合约账户不仅具有余额,而且还有存储。  

    外部账户

由用户创建,通过PKI生成一个密钥对,唯一对应一个外部账户。在外部账户发送交易时,交易信息会被账户对应的私钥签名,从而使得EVM可以安全的认证交易发送者的身份。外部账户跟其他账户发送以太币时不需要消耗以太币,跟合约账户交互时需要消耗以太币。

    合约账户

由外部账户创建,由相应的外部账户所有,但只受到合约中的代码控制,一个合约账户对应一个合约代码。合约账户中也可以有以太币,这是为了将以太币暂存,以便在之后发送到其他合约或者外部账户。合约账户中的代码不会自主执行,需要其他账户(外部账户或合约账户)发送交易(transaction)来出发代码执行。另外合约账户创建时需要消耗以太币。

2、合约(contracts)

以太坊中的合约虽也称为“智能合约”,但就是一段简单代码,并不具备智能性。英文中的“smart contracts”更多的是取单词“smart”中“精巧的”的意思,翻译为智能合约也就是行业习惯罢了。

一个合约实际上就是一串代码的集合,包括代码中的各种函数以及代码运行过程中的各种状态。被部署的合约以EVM字节码(bytecode)的形式存储在区块链上,一个合约唯一对应一个合约地址。

合约的编写中,EVM支持多种高级编程语言,开发者可以用很少量的代码编写合约,经过专门的编译器将合约编译成字节码之后,部署到区块链上:

Solidity:目前使用最为广泛的合约编程语言,语法跟JavaScript十分类似,也是官方最为推荐和支持力度最大的编程语言。

Vyper:以太坊平台上最为年轻的合约编程语言,目前仍处于实验阶段。其设计初衷是为了简化合约编写流程,减少合约执行过程中的gas消耗,增强合约安全性,其逻辑类似于Solidity,但在句法上更像Python,这样意味着以太坊抛弃了原因基于Python的开发语言Serpent。

LLL(Lisp Like Language):类似于汇编的略微低级的合约编程语言,适宜完成一些简单、直接的任务。

3、交易(transaction)和消息(message)

以太坊中,同时具有交易和消息两个概念,在《以太坊黄皮书》中:

    交易

“交易”的定义为:“由外部账户签名的一串数据,既可以表示一个消息,也可以表示一个新的自治对象(合约),交易记录在区块链的每个交易中。”

    消息

“消息”的定义为:“两个账户之间发送的数据(data)和值(value,以太币)。消息可以有自治对象产生一些确定性操作的产生,也可能由交易在数字签名时产生”。

简而言之:交易都会在区块链上记录,而消息是发生在EVM内部的参数传输,不会记录在区块链上

4、气(gas)

以太坊作为一个“世界计算机”,在执行每次操作时都会消耗一定的资源(计算、存储、内存等),因此以太坊的使用者想要让以太坊为其工作,就要向网络中的矿工支付一定的费用,由于每次计算机执行每次任务消耗的资源量几乎是恒定的,用户也希望自己支付的费用不会因为以太坊价格的波动而有太大的变化,于是,gas作为以太坊中一种特殊的工作量计量单位运用而生。

    gas

作为“燃料”,并不能在以太坊中交易,更不能在以太坊之外进行流通,因此矿工需要将收到的gas转换成以太币作为收益。

    gasPrice

表示用户愿意支付的gas的价格,即每单位的gas可以兑换的以太币数量(eth/gas)。为了保证gas的价值的稳定,gasPrice会根据市场进行波动而一直变化,保持动态平衡。另外矿工会优先打包gasPrice高的交易。

    gasCost

一般为恒定的值,表示以太坊结点在执行某种操作时固定花费的gas数量,也就是表明每种操作所花费的成本是恒定的,几乎不会发生变化。

    gasLimit

指用户愿意为某个交易花费的最高gas数量,当实际消耗的gas达到gasLimit时,交易会中止。这主要是为合约的执行提供了一种安全机制,反正合约因为漏洞导致gas的无限消耗。一个标准的以太币的交易的gasLimit一般是21000.

    gasFee

指执行一个交易或者一段合约代码的过程中实际需要支付的gas数量。一个区块的gasFee可以用来推测出一个区块消耗的计算量、所包含的交易数量以及一个区块的大小。其最终都会交给矿工

发布了28 篇原创文章 · 获赞 18 · 访问量 3744

猜你喜欢

转载自blog.csdn.net/Aaron_Kings/article/details/103811209