在以太坊的世界里,“发送消息”(Sending a Message)是一个核心概念,但它与我们日常使用即时通讯软件“发送消息”的含义截然不同,理解这一点,是掌握以太坊工作原理的关键,本文将深入浅出地解释以太坊中“发送消息”的真正含义,以及它在智能合约交互和资产转移中扮演的重要角色。

“消息”不是聊天记录:以太坊中的“消息”是什么?

请忘掉文字、图片或语音,在以太坊的语境下,“消息”(Message)是一个更底层的、技术性的概念,它本质上是一个异步的、由一个账户(可以是外部账户或合约账户)触发,并传递到另一个账户的调用请求

这个“消息”包含以下关键信息:

  • 发送方: 谁发起的这个调用。
  • 接收方: 消息的目标地址,可以是另一个智能合约地址,也可以是一个外部账户地址(用于转账)。
  • 值: 要随消息发送的以太币数量,单位是 wei,如果值为0,则是一次纯粹的合约调用。
  • 数据: 一个字节数组,这是智能合约交互的灵魂,它包含了要调用的函数签名和参数,告诉接收方“要做什么”以及“用什么参数做”,对于普通转账,这部分数据通常为空。
  • Gas: 发送方愿意为此操作支付的计算资源上限,用于限制执行成本,防止无限循环攻击。

“发送消息”就是向以太坊虚拟机提交一个指令,告诉它去某个地址执行某个操作,并附上必要的参数和燃料。

两种“消息”:交易与内部调用

以太坊中的“消息”主要分为两种,它们共同构成了以太坊状态变化的完整链条。

交易 - 外部消息

这是大多数用户最熟悉的“发送消息”,当你使用钱包(如 MetaMask)发送以太币或调用一个智能合约时,你就是在创建一笔“交易”。

  • 发起方: 只能是外部账户,也就是由私钥控制的你的钱包地址。
  • 触发方式: 由你主动签名并广播到以太坊网络。
  • 作用: 交易是改变以太坊状态的唯一入口,它可以是:
    • 转账:随机配图