共计 1516 个字符,预计需要花费 4 分钟才能阅读完成。
在执行交易的过程中,会触发事件。每个 Move 模块都能够定义本人的事件,并且决定何时触发这些事件。例如,在一个“转账”(coin tranfer)动作产生时,发送人和接管人账户,会顺次别离触发 SentEvent
事件和 ReceiveEvent
事件。事件触发的数据,会被存储到链上,并且能够通过 REST 服务来查问,参见“通过事件句柄获取事件信息”。
假如下列账户:0xc40f1c9b9fdc204cf77f68c9bb7029b0abbe8ad9e5561f7794964076a4fbdcfd
曾经实现了向另外一个账户转账,通过以下的 REST 接口能够查问相干信息:[https://fullnode.devnet.aptoslabs.com/v1/accounts/c40f1c9b9fdc204cf77f68c9bb7029b0abbe8ad9e5561f7794964076a4fbdcfd/events/0x1::coin::CoinStore<0x1::aptos_coin::AptosCoin>/withdraw_events](https://fullnode.devnet.aptoslabs.com/v1/accounts/c40f1c9b9fdc204cf77f68c9bb7029b0abbe8ad9e5561f7794964076a4fbdcfd/events/0x1::coin::CoinStore<0x1::aptos_coin::AptosCoin>/withdraw_events)
该接口会返回指定账户下所有的提现事件,相似上面的样子:
[{
"key":"0x0000000000000000caa60eb4a01756955ab9b2d1caca52ed",
"sequence_number":"0",
"type":"0x1::coin::WithdrawEvent",
"data":{"amount":"1000"}
}]
每个注册过的事件,都有一个惟一的 key。比方 0x0000000000000000c40f1c9b9fdc204cf77f68c9bb7029b0abbe8ad9e5561f7794964076a4fbdcfd
这个 key,就对应着账户 0xc40f1c9b9fdc204cf77f68c9bb7029b0abbe8ad9e5561f7794964076a4fbdcfd
上的事件
0x1::coin::CoinStore<0x1::aptos_coin::AptosCoin>/sent_events
。
查问事件的时候,能够间接用这个 key 当参数:[https://fullnode.devnet.aptoslabs.com/v1/events/0000000000000000c40f1c9b9fdc204cf77f68c9bb7029b0abbe8ad9e5561f7794964076a4fbdcfd](https://fullnode.devnet.aptoslabs.com/v1/events/0000000000000000c40f1c9b9fdc204cf77f68c9bb7029b0abbe8ad9e5561f7794964076a4fbdcfd)
上述事件流,或者说一组事件列表,每一条都蕴含一个从 0 开始有序递增的序列号字段,一个类型字段和数据字段。每条事件必须事后定义好类型。可能有多条事件具备雷同或相近的类型,特地是在应用泛型的时候。事件能够有关联的数据;一般说来,这些数据应该蕴含所有变动的信息,让用户可能查问到交易执行前后,相干的资源产生了哪些变动,从而触发了事件。