以太坊入门——以太坊中的账户、交易概念介绍

    162706

什么是账户?

外部拥有账户 vs 合约账户

以太坊中有两种账户

外部拥有账户(EOA)

合约账户

这个区别在即将到来的大都会升级中将会被抽象化。

(以太坊中有两种账户 图片来源:金色财经)

(以太坊中有两种账户 图片来源:金色财经)

外部拥有账户

一个外部拥有账户具有一下特性:

有一个以太币余额

可以发送交易(以太币转账或者激活合约代码)

通过私钥控制

没有相关联的代码

合约账户

一个合约账户拥有一下特性:

有一个以太币余额

有相关联的代码

代码执行是通过交易或者其他合约发送的call来激活

当被执行时 -- 运行在随机复杂度 (图灵完备性)-- 只能操作其拥有的特定储存,例如可以拥有其永久state -- 可以call其他合约

(所有以太坊区块链上的行动都是由各账户发送的交易激活 图片来源:金色财经)

(所有以太坊区块链上的行动都是由各账户发送的交易激活 图片来源:金色财经)

所有以太坊区块链上的行动都是由各账户发送的交易激活。每次一个合约账户收到一个交易,交易自带的参数都会成为代码的输入值运行。合约代码会被以太坊虚拟机(EVM)在每一个参与网络的节点上运行,以作为它们新区块的验证。

什么是交易和消息?

交易

"交易"这个术语在以太坊里被用来指代一个用来存储消息的被签名数据包在区块链上从一个外部拥有账户发送至另一个账户的过程。

交易包括:

这个消息的接收者

一个签名,用来证明发送者有意向通过区块链向接收者发送消息

价值域 - 从发送方转移到接受方的wei (ether/10^18) 的数量

一个可选的数据域,用来储存发送给合约的消息

一个GASLIMIT值,代表了这个交易的执行最多被允许使用的计算步骤

一个GASPRICE值,代表了交易发送者愿意支付的gas费用。一个单位的gas表示了执行一个基本指令,例如一个计算步骤

以太坊入门——以太坊中的账户、交易概念介绍

消息

合约具有发送"消息"到其他合约的能力。消息是一个永不串行且只在以太坊执行环境中存在的虚拟对象。他们可以被理解为函数调用(function calls)。

一个消息包括:

明确的消息发送者

消息的接收者

一个可选的数据域,这是合约实际上的输入数据

一个GASLIMIT值,用来限制这个消息出发的代码执行可用的最大gas数量

(以太坊入门——以太坊中的账户、交易概念介绍 图片来源:金色财经)

(以太坊入门——以太坊中的账户、交易概念介绍 图片来源:金色财经)

总的来说,一个消息就像是一个交易,除了它不是由外部账户生成,而是合约账户生成。当合约正在执行的代码中运行了CALL 或者DELEGATECALL这两个命令时,就会生成一个消息。消息有的时候也被称为"内部交易"。与一个交易类似,一个消息会引导接收的账户运行它的代码。因此,合约账户可以与其他合约账户发生关系,这点和外部账户一样。有许多人会误用交易这个词指代消息,所以可能消息这个词已经由于社区的共识而慢慢退出大家的视野,不再被使用。

    本文来源: 以太坊爱好者 本文作者: 币趣势
声明:金色财经登载此文出于传递更多信息之目的,并不意味着赞同其观点或证实其描述。文章内容仅供参考,不构成投资建议。投资者据此操作,风险自担。
以太坊入门 账户 交易
金色财经 >以太坊 >以太坊入门——以太坊中的账户、交易概念介绍