【易错概念】以太坊的交易(transaction),消息(message)和调用(call)

交易和消息是以太坊系统中很关键的两个概念,同时也是两个非常类似的概念,它们在形式上近乎相同,但是本质上却又完全不同。这篇博客会将交易(Transaction)、消息(Message)和调用(Message Call)进行介绍和区分。

交易(Transaction)是什么?

交易存储了发送者要发送至以太坊网络的经过签名的信息,它其中包含了从一个账户要传递给另一个账户(或者合约)的信息。在以太坊中,有两种类型的交易:一种是能够产生消息调用的交易,另一种是能够生成新账户的交易(比如说生成合约)

笼统的来说,一个完整有效的以太坊交易包含以下几个部分:

  • 交易接收者
  • 签名(用以核实交易发送者身份)
  • value值(发送的以太币数量,以wei为单位)
  • 可选数据域
  • STARTGAS值
  • GASPRICE值

交易中的字段

根据以太坊黄皮书,我们知道一个交易中有以下字段:

  • nonce:该字段表示的是交易发送者的交易序列号,它是账号的一个交易计数器,这个字段能够防止重放攻击(replay attack)。
  • gasPrice:gas的价格,用于计算交易费用
  • gasLimit:执行这笔交易所花费的gas的上限
  • to:交易接收者的地址或者合约的地址
  • value:要发送的以太币数量,以wei为单位
  • v, s, r:签名相关的参数,通过这三个参数可以得到发送者的公钥和地址(更详细的内容参见以太坊黄皮书附录F)

如果该交易是一个创建合约的交易,还可能包括以下字段:

  • init:用于初始化交易的EVM(以太坊虚拟机)操作码
  • data:数据域(理论上数据域的大小是不受限制的)

消息(Message)是什么?

消息在以太坊中是一个“虚拟”的事物,它永远不会被记录到区块链中,它是由合约发出的。从形式上看,消息很“像”交易,但是它与交易有着本质上的区别,一笔成功的交易会被永久的记录到区块链中。在以太坊中,我们可以把消息看做在EVM中的函数调用。

一般来说,一条消息会包含以下几个部分:

  • 消息的发送者
  • 消息的接收者
  • 以太币的数量(以wei为单位)
  • 可选数据域
  • STARTGAS
  • GASPRICE

交易、消息与调用(Message Call)的区别

以太坊黄皮书中对交易(transations)的描述为:

A piece of data, signed by an External Actor. It represents either a Message or a new Autonomous Object. Transactions are recorded into each block of the blockchain.
由外部参与者签名后的一段数据。它代表了一条信息或者一个新创建的自治对象(合约)。交易会被记录至区块链的区块中。

对消息(message)的描述为:

Data (as a set of bytes) and Value (specified as Ether) that is passed between two Accounts, either through the deterministic operation of an Autonomous Object or the cryptographically secure signature of the Transaction.
在两个账户之间传输的数据(一组字节)和值(以太币的数量),形式是合约的确定性操作或者经过加密安全签名的交易。

对调用(call)的描述为:

The act of passing a message from one Account to another. If the destination account is associated with non-empty EVM Code, then the VM will be started with the state of said Object and the Message acted upon. If the message sender is an Autonomous Object, then the Call passes any data returned from the VM operation.
从一个账户发送至另一个账户的消息的行为。如果目标账户关联着非空的EVM操作码,VM就会按照该操作码的状态进行启动。如果消息的发送者是一个自治对象,那么该调用将会传递所有返回自VM操作的数据。

具体来说,调用是对合约的本地调用,它是只读的操作并且不会消耗以太币。它能够模拟交易的行为,但是在调用结束以后,它会返回至之前的状态。交易是会被广播至整个网络的,被矿工处理验证之后会被记录至区块链的区块中。

合约中函数的调用创建的是调用还是交易?

考虑一下这四种情况:

  • 使用调用(call)直接对合约函数进行调用
  • 使用sendTransaction直接对合约函数进行调用
  • 使用调用(call)通过合约对合约函数进行调用
  • 使用sendTransaction通过合约对合约函数进行调用

第一种情况与第三种情况是很明显的调用,第二种情况由于使用的是sendTransaction方法,因此它创建了一笔交易。比较特殊的是第四种情况,它看似是生成了一笔交易,但是由于以太坊黄皮书中对交易的定义中提到,交易是需要外部参与者(External Actor)进行签名的消息,所以第四种情况没有生成交易。


本文的版权归作者 罗远航 所有,采用 Attribution-NonCommercial 3.0 License。任何人可以进行转载、分享,但不可在未经允许的情况下用于商业用途;转载请注明出处。感谢配合!

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 219,869评论 6 508
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 93,716评论 3 396
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 166,223评论 0 357
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 59,047评论 1 295
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 68,089评论 6 395
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,839评论 1 308
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,516评论 3 420
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,410评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,920评论 1 319
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 38,052评论 3 340
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 40,179评论 1 352
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,868评论 5 346
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,522评论 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 32,070评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,186评论 1 272
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,487评论 3 375
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 45,162评论 2 356

推荐阅读更多精彩内容