介绍
signer是 Move 中的内置类型,signer可以使用持有address定义的行为能力,可以理解为你被授权,可以访问此address。本地实现方式如下:
struct signer has drop { a: address }
Move 程序中的address可以任意创建,但是signer不行。只能有 Move VM 创建,在VM运行编写的script代码块之前,它会自动创建signer:
script {use Std::Signer;fun main(s: signer) {// 如果地址不是0x42,将会中止并返回0assert!(Signer::address_of(&s) == @0x42, 0)}}
注意,在main方法体重所有的signer必须放在首位:
script {use Std::Signer;fun main(s1: signer, s2: signer, x: u64, y: u8) {//...}}
用法
signer在 Move 源文件 Std Module 中 (Std::Signer) 已定义以下几个方法。
| 函数 | 描述 |
|---|---|
Signer::address_of(&signer): address |
返回&signer的address |
Signer::borrow_address(&signer): &address |
返回&signer的address引用 |
全局存储方法move_to<T>(&signer, T)必须有一个&signer参数,它可以确保只有身份验证过的用户才能与其address交互。
