공유 객체
shared object는 네트워크의 누구나 접근할 수 있는 공개 mutable object이다. 여러 사용자 또는 smart contract가 동일한 object와 동시에 상호작용할 수 있도록 설계되어 있다.
Shared object 생성
sui::transfer::share_object 함수를 사용하여 shared object를 생성하면, 네트워크 상에서 공개적으로 접근할 수 있다. shared object의 확장된 기능과 접근성은 필요할 경우 접근을 보호하기 위한 추가 작업이 필요하다.
shared object에는 key ability가 필요하다.
public struct Donut has key { id: UID }
fun init(ctx: &mut TxContext) {
transfer::transfer(ShopOwnerCap {
id: object::new(ctx)
}, ctx.sender());
transfer::share_object(DonutShop {
id: object::new(ctx),
price: 1000,
balance: balance::zero()
})