주소 별칭
Sui network의 특정 address에 대해 transaction 서명을 허용할 key 집합을 구성하는 데 address aliases를 사용할 수 있다.
address aliases는 다음과 같은 용도로 사용할 수 있다:
- address에 대해 간단한 key rotation을 수행한다.
- 여러 signer에게 address가 소유한 모든 것에 대한 완전한 접근 권한을 부여한다.
- passkey를 사용하는 smart wallet 같은 더 복잡한 인증 scheme을 구현한다.
주어진 address에 대한 모든 alias는 그 address가 소유한 모든 coin, balance, 그리고 기타 리소스를 단독으로 제어하거나 가져갈 수 있는 능력을 가진다.
alias를 변경할 때는 매우 주의해야 한다. 새로 추가하는 alias는 사실상 address의 공동 소유자가 된다.
How aliases work
Sui의 각 address에는 alias 집합이 있다.
새 address는 자기 자신을 alias로 가지는 상태로 시작한다.
즉 새 address A는 alias 집합 {A}를 가진다.
address의 alias는 sui::address_alias module에 있는 Move API를 사용해 수정할 수 있다.
이 수정 함수들은 최상위 PTB 명령으로 호출되어야 하며 다른 Move 함수 안에서 호출할 수 없다.
alias를 수정할 때의 몇 가지 제약 사항은 다음과 같다:
- address는 항상 최소 하나의 alias를 가져야 한다.
- address는 자기 자신의 alias 집합에서 제거될 수 있다. 예를 들어 address
A가 있고 이 address가{B, C}의 서명만 허용하도록 만들 수 있다. - address에 허용되는 alias의 최대 개수는 8개이다.
Authenticating transactions with aliased addresses
Sui의 transaction은 두 address인 sender와 gas_owner로 구성된다(둘은 같을 수도 있고 다를 수도 있다).
구성된 각 address에 대해서는 그 alias 집합 안의 signer 중 하나로부터 signature가 필요하다.
예를 들어 다음 transaction과 alias가 있다고 하자:
transaction T {
sender: A
gas_owner: X
...
}
aliases[A] = {A, B}
aliases[X] = {Y}
유효하려면 transaction T는 A 또는 B 중 하나의 signature가 필요하고, 또한 Y의 signature가 필요하다.
이 예시에서 transaction이 A가 아닌 [B, Y]의 signature를 가지고 있더라도 실행 중에는 여전히 A가 소유한 모든 것에 접근할 수 있으며, Move call 실행 중 TxContext::sender 역시 A가 된다.