上下文变量有三个:block transaction message
- 外部账号调用函数时,函数的背后都对应着交易transaction
- 内部账号调用另外一个合约时,也是用一个类似于transaction的数据结构去调用的,这个结构叫做message
- msg.sender:address
- msg.data;
- msg.value:eth
举个例子:
解读:
- 一次外部账号对合约的调用,可能引发一系列合约之间的调用;所有这些调用,背后是一个block,一个transaction
- 直接被外部账号调用的那个函数,transaction和message是同一的
- 调用跨越合约时,产生新的message
- 合约内部的调用,背后是一个message,message没有变化
-transaction,internal transaction