Firmante
signer
es un tipo de recurso Move integrado. A signer
es una capacidad que permite al titular actuar en nombre de un particular address
. Puedes pensar en la implementaci贸n nativa como:
Copiar
A signer
es algo similar a un UID de Unix en el sentido de que representa un usuario autenticado mediante un c贸digo externo a Move (por ejemplo, verificando una firma criptogr谩fica o una contrase帽a).
Comparaci贸n conaddress
address
Un programa Move puede crear cualquier address
valor sin un permiso especial utilizando literales de direcci贸n:
Copiar
Sin embargo, signer
los valores son especiales porque no se pueden crear mediante literales o instrucciones, solo mediante Move VM. Antes de que la VM ejecute un script con par谩metros de tipo signer
, crear谩 signer
valores autom谩ticamente y los pasar谩 al script:
Copiar
Este script abortar谩 con c贸digo 0
si se env铆a desde cualquier direcci贸n que no sea 0x42
.
Un script de transacci贸n puede tener un n煤mero arbitrario de signer
s siempre que los signer
s sean un prefijo de cualquier otro argumento. En otras palabras, todos los signer
argumentos deben ir primero:
Copiar
Esto es 煤til para implementar scripts de m煤ltiples firmantes que act煤an de forma at贸mica con la autoridad de varias partes. Por ejemplo, una extensi贸n del script anterior podr铆a realizar un intercambio de moneda at贸mica entre s1
y s2
.
signer
Operadores
signer
OperadoresEl std::signer
m贸dulo de biblioteca est谩ndar proporciona dos funciones de utilidad sobre signer
valores:
Funci贸n | Descripci贸n |
| Devuelve el |
| Devuelve una referencia al |
Adem谩s, el move_to<T>(&signer, T)
operador de almacenamiento global requiere un &signer
argumento para publicar un recurso T
en signer.address
la cuenta. Esto garantiza que solo un usuario autenticado pueda optar por publicar un recurso en su archivo address
.
Propiedad
A diferencia de los valores escalares simples, signer
los valores no se pueden copiar, lo que significa que no se pueden copiar (desde ninguna operaci贸n, ya sea mediante una copy
instrucci贸n expl铆cita o mediante una desreferencia *
).
Last updated