플러그인

Update Delegate 플러그인

Last updated April 28, 2026

Update Delegate 플러그인을 사용하면 추가 주소에 업데이트 권한을 부여할 수 있습니다. 제3자가 기본 업데이트 권한이 아니면서 Asset 메타데이터를 수정하거나 컬렉션 멤버십을 관리해야 할 때 유용합니다.

학습 내용

  • Asset 및 Collection에 Update Delegate 플러그인 추가
  • 추가 주소에 업데이트 권한 부여
  • 추가 위임자가 할 수 있는 것과 없는 것 이해
  • 위임자 목록 업데이트 및 관리
  • 위임자로서 Collection에 Asset 추가 및 제거

요약

Update Delegate는 업데이트 권한이 다른 주소에 업데이트 권한을 부여할 수 있게 하는 권한 관리 플러그인입니다. 추가 위임자는 대부분의 Asset 데이터를 수정할 수 있지만 핵심 권한 설정은 변경할 수 없습니다.

  • 제3자에게 업데이트 권한 부여
  • 여러 추가 위임자 추가
  • Asset 및 Collection 모두에서 작동
  • Collection 권한을 가진 위임자는 컬렉션 멤버십을 관리할 수 있음
  • 위임자는 루트 업데이트 권한을 수정할 수 없음

범위 외

영구 업데이트 위임, 소유자 수준 권한 (이것은 권한 관리임), Token Metadata 업데이트 권한 (다른 시스템)은 범위 외입니다.

빠른 시작

바로가기: Asset에 추가 · 위임자 업데이트 · Collection · 컬렉션 멤버십

  1. 위임자 주소로 Update Delegate 플러그인 추가
  2. 선택적으로 추가 위임자 추가
  3. 이제 위임자가 Asset 메타데이터를 업데이트할 수 있음

Update Delegate 사용 시기

시나리오솔루션
제3자가 메타데이터를 업데이트해야 함✅ Update Delegate
게임 프로그램이 스탯을 수정해야 함✅ Update Delegate (프로그램에 위임)
여러 팀원이 업데이트 액세스 필요✅ 추가 위임자
영구적으로 취소 불가능한 업데이트 액세스❌ 지원되지 않음 (멀티시그 권한 사용)
소유자가 업데이트를 제어해야 함❌ 기본 권한 사용
Update Delegate 사용: 루트 권한을 이전하지 않고 프로그램이나 제3자에게 업데이트 권한을 부여해야 할 때.

일반적인 사용 사례

  • 제3자 서비스: 플랫폼이 귀하를 대신하여 메타데이터를 업데이트하도록 허용
  • 게임 프로그램: 게임 프로그램에 Asset 속성 수정 권한 부여
  • 팀 협업: 여러 팀원이 키 공유 없이 업데이트 가능
  • 마켓플레이스: 마켓플레이스가 리스팅 관련 메타데이터를 업데이트하도록 허용
  • 동적 콘텐츠: Asset 데이터를 자동으로 업데이트하는 서비스

호환성

MPL Core Asset
MPL Core Collection

인수

additionalDelegatespublickey[]

additionalDelegates

추가 위임자를 사용하면 updateDelegate 플러그인에 하나 이상의 위임자를 추가할 수 있습니다. 추가 위임자는 업데이트 권한이 할 수 있는 모든 것을 할 수 있지만 다음은 예외입니다:

  • 추가 위임자 배열 추가 또는 변경 (자신을 제거하는 것은 제외).
  • updateAuthority 플러그인의 플러그인 권한 변경.
  • Collection의 루트 업데이트 권한 변경.

Asset에 Update Delegate 플러그인 추가

MPL Core Asset에 Update Delegate 플러그인 추가

import { publicKey } from '@metaplex-foundation/umi'
import { addPlugin } from '@metaplex-foundation/mpl-core'
const assetAddress = publicKey('11111111111111111111111111111111')
const delegate = publicKey('22222222222222222222222222222222')
await addPlugin(umi, {
asset: assetAddress,
plugin: {
type: 'UpdateDelegate',
authority: { type: 'Address', address: delegate },
additionalDelegates: [],
},
}).sendAndConfirm(umi)

Update Delegate 플러그인 업데이트

Update Delegate 플러그인은 추가 위임자 목록을 수정하거나 플러그인 권한을 변경하도록 업데이트할 수 있습니다.

Asset에서 Update Delegate 플러그인 업데이트

import { publicKey } from '@metaplex-foundation/umi'
import { updatePlugin } from '@metaplex-foundation/mpl-core'
const assetAddress = publicKey('11111111111111111111111111111111')
const newDelegate = publicKey('33333333333333333333333333333333')
const existingDelegate = publicKey('22222222222222222222222222222222')
await updatePlugin(umi, {
asset: assetAddress,
plugin: {
type: 'UpdateDelegate',
additionalDelegates: [existingDelegate, newDelegate], // 위임자 추가 또는 제거
},
}).sendAndConfirm(umi)

Collection에서 Update Delegate 플러그인 업데이트

Collection에서 Update Delegate 플러그인 업데이트

import { publicKey } from '@metaplex-foundation/umi'
import { updateCollectionPlugin } from '@metaplex-foundation/mpl-core'
const collectionAddress = publicKey('11111111111111111111111111111111')
const delegate1 = publicKey('22222222222222222222222222222222')
const delegate2 = publicKey('33333333333333333333333333333333')
await updateCollectionPlugin(umi, {
collection: collectionAddress,
plugin: {
type: 'UpdateDelegate',
additionalDelegates: [delegate1, delegate2], // 업데이트된 위임자 목록
},
}).sendAndConfirm(umi)

Update Delegate를 사용한 Collection 멤버십 관리

CollectionUpdateDelegate 플러그인은 루트 업데이트 권한의 서명 없이 Collection에 Asset을 추가하고 제거할 수 있는 권한을 부여합니다. 게임 서버가 Asset을 길드에 할당하거나 런치패드가 Collection에 직접 민팅하는 프로그램과 서비스의 주요 패턴입니다.

  • 제거 — Collection에서 Asset을 제거하려면 Collection UpdateDelegate만 있으면 됩니다.
  • 추가 — Asset을 Collection에 추가하려면 Collection UpdateDelegate 외에도 Asset에 대한 권한(업데이트 권한으로서, 또는 Asset의 UpdateDelegate 플러그인 경유)이 필요합니다.

멤버십을 제어하는 것은 Asset의 UpdateDelegate가 아닌 CollectionUpdateDelegate 플러그인입니다. Asset의 위임자만으로는 Collection에 추가하거나 제거할 수 없으며 Collection 측 권한이 필요합니다.

Collection Update Delegate로서 Collection에 Asset 추가

서명자는 Collection의 UpdateDelegate additionalDelegates 배열에 등록되어 있어야 하며, Asset에 대한 권한(Asset의 업데이트 권한 또는 Asset의 UpdateDelegate 플러그인 위임자)도 가지고 있어야 합니다.

1import { publicKey } from '@metaplex-foundation/umi'
2import {
3 update,
4 fetchAsset,
5 updateAuthority,
6} from '@metaplex-foundation/mpl-core'
7
8const assetId = publicKey('11111111111111111111111111111111')
9const collectionId = publicKey('22222222222222222222222222222222')
10
11const asset = await fetchAsset(umi, assetId)
12
13// umi.identity must be in the Collection's UpdateDelegate additionalDelegates
14// AND hold the Asset's update authority (or be in the Asset's UpdateDelegate additionalDelegates)
15await update(umi, {
16 asset,
17 newCollection: collectionId,
18 newUpdateAuthority: updateAuthority('Collection', [collectionId]),
19}).sendAndConfirm(umi)
20
21console.log('Asset added to collection')

Collection Update Delegate로서 Collection에서 Asset 제거

서명자는 Collection의 UpdateDelegate additionalDelegates 배열에 등록되어 있기만 하면 됩니다. Asset을 제거하기 위해 Asset 수준 권한은 필요하지 않습니다.

1import { publicKey } from '@metaplex-foundation/umi'
2import {
3 update,
4 fetchAsset,
5 fetchCollection,
6 collectionAddress,
7 updateAuthority,
8} from '@metaplex-foundation/mpl-core'
9
10const assetId = publicKey('11111111111111111111111111111111')
11
12const asset = await fetchAsset(umi, assetId)
13
14const currentCollectionId = collectionAddress(asset)
15if (!currentCollectionId) {
16 throw new Error('Asset does not belong to a collection')
17}
18const collection = await fetchCollection(umi, currentCollectionId)
19
20// collectionDelegate only needs to be in the Collection's UpdateDelegate additionalDelegates
21const collectionDelegate = umi.identity // replace with your delegate signer if different
22await update(umi, {
23 asset,
24 collection,
25 newUpdateAuthority: updateAuthority('Address', [umi.identity.publicKey]),
26 authority: collectionDelegate,
27}).sendAndConfirm(umi)
28
29console.log('Asset removed from collection')

일반적인 오류

Authority mismatch

업데이트 권한(또는 기존 플러그인 권한)만 Update Delegate 플러그인을 추가/수정할 수 있습니다.

Cannot modify root authority

추가 위임자는 루트 업데이트 권한을 변경하거나 추가 위임자 목록을 수정할 수 없습니다 (자신을 제거하는 것은 예외).

참고 사항

  • 권한 관리: 업데이트 권한이 소유자 서명 없이 추가 가능
  • 추가 위임자는 거의 모든 업데이트 권한을 가짐
  • Collection UpdateDelegate는 Collection에서 Asset을 제거하고 권한을 가진 Asset을 추가할 수 있음
  • 위임자는 루트 업데이트 권한을 변경할 수 없음
  • 위임자는 추가 위임자 목록을 수정할 수 없음 (자신을 제거하는 것은 예외)
  • Asset 및 Collection 모두에서 작동

빠른 참조

Asset Update Delegate 권한

작업허용됨?
이름/URI 업데이트
플러그인 추가
플러그인 업데이트
플러그인 제거
루트 업데이트 권한 변경
추가 위임자 수정❌ (자기 제거 제외)
플러그인 권한 변경

Collection Update Delegate 권한

작업허용됨?
Collection에서 Asset 제거
권한을 가진 Asset을 Collection에 추가
Collection 메타데이터 업데이트
Collection 플러그인 업데이트
Collection 루트 업데이트 권한 변경
Collection 추가 위임자 수정❌ (자기 제거 제외)

FAQ

추가 위임자는 무엇을 할 수 있나요?

업데이트 권한이 할 수 있는 거의 모든 것: 메타데이터 업데이트, 플러그인 추가/제거 등. 루트 업데이트 권한 변경, 추가 위임자 목록 수정, Update Delegate 플러그인 권한 변경은 할 수 없습니다.

추가 위임자가 더 많은 위임자를 추가할 수 있나요?

아니요. 루트 업데이트 권한(또는 플러그인 권한)만 추가 위임자를 추가하거나 제거할 수 있습니다.

추가 위임자에서 자신을 제거하려면 어떻게 하나요?

추가 위임자는 additionalDelegates 배열에 자신의 주소 없이 플러그인을 업데이트하여 목록에서 자신을 제거할 수 있습니다.

추가 위임자에 제한이 있나요?

하드 제한은 없지만 위임자가 많을수록 계정 크기와 렌트가 증가합니다. 목록을 적절하게 유지하세요.

Update Delegate가 Collection에서 작동하나요?

네. Collection에 Update Delegate를 추가하면 위임자가 Collection 메타데이터와 Collection 수준 플러그인을 업데이트할 수 있습니다.

Collection Update Delegate가 Collection에 Asset을 추가/제거할 수 있나요?

네. Collection의 UpdateDelegate 플러그인에 등록된 위임자는 Collection에서 Asset을 제거할 수 있으며, 권한을 가진 Asset을 Collection에 추가할 수 있습니다. Update Delegate를 사용한 Collection 멤버십 관리를 참조하세요.

Collection에서 Asset을 제거하기 위해 Collection Update Delegate가 Asset 권한이 필요한가요?

아니요. Collection 수준의 위임자 권한만으로 Collection에서 Asset을 제거할 수 있습니다. Asset 수준 권한은 Asset을 추가할 때만 필요합니다.

관련 플러그인

  • Attributes - 위임자가 업데이트할 수 있는 온체인 데이터 저장
  • ImmutableMetadata - 메타데이터를 변경 불가능하게 만듦 (위임자 재정의)
  • AddBlocker - 위임자가 새 플러그인을 추가하지 못하도록 방지

용어집

용어정의
Update Delegate업데이트 권한을 부여하기 위한 권한 관리 플러그인
추가 위임자업데이트 권한이 있는 추가 주소
권한 관리업데이트 권한에 의해 제어되는 플러그인 유형
루트 업데이트 권한Asset/Collection의 기본 업데이트 권한