0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Capabilities

Last updated at Posted at 2024-10-26

CadenceはObject-capability modelを通じて、Capability-based securityをサポートします。

Cadenceにおける機能群(Capability)とは、オブジェクトに対するアクセス及びそのオブジェクト上で特定の操作を実行する為の権利を表現した値です。一つのCapabilityは、アクセス可能なものは何で、それに対してどのようにアクセス出来るかを示しています。

Capabilityは偽造できず、譲渡可能で、削除可能です。

Capabilityには、ストレージCapabilityとアカウントCapabilityがあります。

Capabilityは借用することで、格納されたオブジェクトへの、またはそのオブジェクトが参照するアカウントへの参照を取得できます。

Capabilityは、Capability<T: &Any>という型を持ちます。型のパラメータには、Capabilityの借用時に取得できる参照(Reference)の種類を指定します。型は、Entitlement(権限)により関連付けられた一連のアクセス権を示します。すなわち、Capabilityの参照型は認証されており、与えられた権限が必要とする対象のフィールドや関数にアクセスできる機能群がCapabilityの所有者に与えられています。

例えば、Capability<auth(SaveValue) &Account>という型を持つCapabilityはアカウントへのアクセスを許可し、そのアカウントへの値を保存することを(Capabilityの所有者に対して)許可しています。

各CapabilityにはIDがあります。IDはアカウント即ちアドレス毎に一意です。

Capabilityは、capability controllerを通じて作成および管理されます。

Capabilityは構造体であるため、コピーが可能です。対象のcapability controllerが削除されない限り何回でも使用(借用)できます。

Capability

access(all)
struct Capability<T: &Any> {
    
    /// The address of the account which the capability targets.
    access(all)
    let address: Address

    /// The ID of the capability.
    access(all)
    let id: UInt64

    /// Returns a reference to the targeted object.
    ///
    /// If the capability is revoked, the function returns nil.
    ///
    /// If the capability targets an object in account storage,
    /// and and no object is stored at the target storage path,
    /// the function returns nil.
    ///
    /// If the targeted object cannot be borrowed using the given type,
    /// the function panics.
    ///
    access(all)
    view fun borrow(): T?

    /// Returns true if the capability currently targets an object
    /// that satisfies the given type, i.e. could be borrowed using the given type.
    ///
    access(all)
    view fun check(): Bool
}

翻訳元->https://cadence-lang.org/docs/language/capabilities

Flow BlockchainのCadence version1.0ドキュメント (Capabilities)

Previous << Access control

Next >> Interfaces

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?