Skip to main content

Shared Object Example

In the previous sections, we discussed comparing a shared object with an owned object. In this guide, we will create a smart contract that can receive objects to a shared object and transfer them to gain a deeper understanding of shared objects.

Create Move Package

To create a new move package run the following command:

iota move new transfer-to-shared-object

Package Overview

In this example, we will create a package that allows users to create new shared objects of type SharedCoins, delete them, add new coins to the SharedCoins, and transfer coins to a recipient address from a SharedCoins.

SharedCoins will hold IOTA coins, enabling anyone to deposit and withdraw coins from it.

create

This function initializes a shared object with an empty array named coins.

examples/move/transfer-to-shared-object/sources/shared_coins.move
loading...

delete

This function destroys the SharedCoins shared object.

examples/move/transfer-to-shared-object/sources/shared_coins.move
loading...

deposit_coin

This function deposits IOTA coins into SharedCoins by adding them to the coins array of SharedCoins.
Before using this function, ensure that some IOTA coins have been transferred to the address/object ID of the SharedCoins object. For the coin parameter, provide the address/object ID of the IOTA coin you transferred to SharedCoins. For further details, refer to Receiving and public_receive.

examples/move/transfer-to-shared-object/sources/shared_coins.move
loading...

transfer_coin

This function transfers an IOTA coin to the specified recipient address. It removes the coin object from the coins array and utilizes the public_transfer function to complete the transfer.

examples/move/transfer-to-shared-object/sources/shared_coins.move
loading...
  • You can view the complete contract code here.