Your First Move Module
Last updated
Last updated
This tutorial details how to compile, test, publish and interact with Move modules on the Aptos blockchain. The steps in summary are:
Install the precombiled binary for the Aptos CLI.
Create an account on the Aptos blockchain and fund it.
Compile and test a Move module.
Publish a Move module to the Aptos blockchain.
Interact with a Move module.
.
After installing the CLI binary, next step is to create and fund an account on the Aptos blockchain.
Begin by starting a new terminal and run the below command to initialize a new local account:
The output will be similar to below.
The account address in the above output: a345dbfb0c94416589721360f207dcc92ecfe4f06d8ddc1c286f569d59721e5a
is your new account, and is aliased as the profile default
. This account address will be different for you as it is generated randomly. From now on, either default
or 0xa345dbfb0c94416589721360f207dcc92ecfe4f06d8ddc1c286f569d59721e5a
are interchangeable.
Now fund this account by running this command:
You will see an output similar to the below:
Run the below command to compile the hello_blockchain
module:
To test the module run:
After the code was compiled and tested, we can publish the module to the account created for this tutorial. Run this below command:
You will see the output similar to the below:
At this point, the module is now stored on the account in the Aptos blockchain.
Move modules expose access points, also referred as entry functions
. These access points can be called via transactions. The CLI allows for seamless access to these access points. The example Move module hello_blockchain
exposes a set_message
entry function that takes in a string
. This can be called via the CLI:
Upon success, the CLI will print out the following:
which, after the first execution contains the following:
Notice that the message
field contains hello, blockchain
.
Each successful call to set_message
after the first call results in an update to message_change_events
. The message_change_events
for a given account can be accessed via the REST API:
where, after a call to set the message to hello, blockchain, again
, the event stream would contain the following:
TIP
Other accounts can reuse the published module by calling the exact same function as in this example. It is left as an exercise to the reader.
Several example Move modules are available in the directory. Open a terminal and change directories into the hello_blockchain
directory:
The CLI entry must contain --named-addresses
because the file leaves this as undefined (see below). To prepare the module for the account created in the previous step, we specify that the named address hello_blockchain
is set to our account address, using the default
profile alias.
The set_message
function modifies the hello_blockchain
MessageHolder
resource. A resource is a data structure that is stored in . The resource can be read by querying the following REST API: