介绍

signer是 Move 中的内置类型,signer可以使用持有address定义的行为能力,可以理解为你被授权,可以访问此address。本地实现方式如下:

  1. struct signer has drop { a: address }

Move 程序中的address可以任意创建,但是signer不行。只能有 Move VM 创建,在VM运行编写的script代码块之前,它会自动创建signer

  1. script {
  2. use Std::Signer;
  3. fun main(s: signer) {
  4. // 如果地址不是0x42,将会中止并返回0
  5. assert!(Signer::address_of(&s) == @0x42, 0)
  6. }
  7. }

注意,在main方法体重所有的signer必须放在首位:

  1. script {
  2. use Std::Signer;
  3. fun main(s1: signer, s2: signer, x: u64, y: u8) {
  4. //...
  5. }
  6. }

用法

signer在 Move 源文件 Std Module 中 (Std::Signer) 已定义以下几个方法。

函数 描述
Signer::address_of(&signer): address 返回&signeraddress
Signer::borrow_address(&signer): &address 返回&signeraddress引用

全局存储方法move_to<T>(&signer, T)必须有一个&signer参数,它可以确保只有身份验证过的用户才能与其address交互。