• Discover
  • Partner with us
  • Chapters
  • Blog

Learn everything about Move on Sui

Blockchain Basics
Blockchain Ecosystem Deep Dive
Blockchain Ecosystem Deep Dive - Layer 1s & Layer 2s
How Do Layer 1s and Layer 2s Work Together?

Introduction
DPos vs Pos
What is Next?
Object Centric Design-1
Object Centric Design-2
Real-Life Examples
Performable Transaction
Move on Sui

Architecture and Components
Sui Network
Sui Storage
Sui Compiler
Sui SDK

Remix IDE for Move on Sui
Install Sui on Windows
Install Sui on Mac
Install Sui on Linux
Project Structure and Modules
Structs and Objects
Init Function
Functions
Testing

Data Section
Functions 1
Functions 2
Deployment
Homework - Submit Your Repository

Interacting with Sui Blockchain from the Frontend
Interacting with Sui Blockchain from the Frontend-2
What is ZkLogin?
How ZkLogin Works?
Some Use Case Examples - ZkLogin
For More About ZkLogin
Sponsored Transactions

Final Project Sample Ideas
Submit Your Final Project

Step 5

// Create new TransactionBlock
const tx = new TransactionBlock();


// Define user object
const user = tx.object("0x...");

Now create a new, empty TransactionBlock and add the object ID of the user account that will send the transactions.


Step 6

// Make Move call
tx.moveCall({
 target: ${packageObjectId}::module::function,
 arguments: [...args],
 coin: coin, 
});

To make a Move call, use the TransactionBlock's moveCall method. Pass it the function name, arguments, and a payment coin.


Step 7

// Sign and execute transaction 
const result = await signAndExecuteTransactionBlock({ transactionBlock: tx });

Finally, sign the transaction block via the wallet hook and execute it by passing it to the Sui client. This will return the execution results.

Well, that wasn’t so bad, right? Since these are new to you, it can take some time to get used to it, but you will see that it gets easier by time. 

To learn more, you can look at this great documentation from Sui.

In the following part, you will find an example code to call functions from your DevHub smart contract.

You can directly use this code in your React project. Do not forget to replace the placeholders with your object ids.

// Sui Imports
import { getFullnodeUrl, SuiClient } from '@mysten/sui.js/client';
import { TransactionBlock } from '@mysten/sui.js/transactions';
import { useWalletKit } from '@mysten/wallet-kit';

export const useMoveCalls = () => {
 const client = new SuiClient({ url: getFullnodeUrl('devnet') });
 const { signAndExecuteTransactionBlock } = useWalletKit();

 const packageObjectId = '0x…'; // deployed object id for creating developer card 
 const tx = new TransactionBlock(); // Create a transaction block
 const devhub = tx.object("0x…")
 
 
 // Move Calls
 
 const handleCreateDeveloperCard = async () => {
 try {
 const [coin] = tx.splitCoins(tx.gas, [1]) // define payment coin
  
 // Calls the create_card function from the devcard package
 tx.moveCall({
  target: ${packageObjectId}::devcard::create_card,
  arguments: [
  tx.pure.string('Matt Patt'), // name
  tx.pure.string('Frontend Developer'), // title
  tx.pure.string(
   'https://example_url.png',
  ), // img_url 
  tx.pure.u8(3), // years_of_experience
  tx.pure.string('JavaScript, Typescript, Next.js, Node.js'), // technologies
  tx.pure.string('https://mattpatt.dev'), // portfolio
  tx.pure.string('matt.patt@dev.com'), // contact
  coin, // payment coin
  devhub, // devhub obj
  ],
 });
 
 // Sign and execute the transaction block
 const result = await signAndExecuteTransactionBlock({ transactionBlock: tx });
 console.log(result)
 } catch (error) {
 
 // Handle the error
 console.error(error);
 }
  
 }
 
 const updateCardDescriptionFunction = async () => {
 
 try {
  
  // Calls update_card_description function from the devcard package
  tx.moveCall({
  target: ${packageObjectId}::devcard::update_card_description,
  arguments: [
   devhub, // devhub obj
   tx.pure.string('New description'),
   tx.pure.u64(2)
  ],
  });
  
  // Sign and execute the transaction block
  const result = await signAndExecuteTransactionBlock({ transactionBlock: tx });
  console.log({result})
 } catch (error) {
  
  // Handle the error
  console.error(error);
 }
  
 }
 
 const deactivateCard = async () => {
 
  try {
   
  // Calls deactivate_card function from the devcard package
  tx.moveCall({
   target: ${packageObjectId}::devcard::deactivate_card,
   arguments: [
   devhub, // devhub obj
   tx.pure.u64(1)
   ],
  });
  
  // Sign and execute the transaction block
  const result = await signAndExecuteTransactionBlock({ transactionBlock: tx });
  console.log({result})
  } catch (error) {
  
  // Handle the error
  console.error(error);
  }
   
  }
  
 return {handleCreateDeveloperCard, updateCardDescritonFunction, deactivateCard}
}
Previous
Next

Lesson discussion

Swap insights and ask questions about “Learn everything about Move on Sui”.

Enroll to participate
Start the course to unlock the discussion. Enrolling helps us keep conversations relevant to learners.
WebsiteDiscoverPartner with UsBlogEvents
CoursesCircleRustSoliditySolanaWeb3 FundamentalsBlockchain Basics
CompanyAbout UsBrand GuidelineFAQsTerms of UsePrivacy PolicyGDPR NoticeCookies
Don't miss any update!

Disclaimer: The information, programs, and events provided on https://risein.com is strictly for upskilling and networking purposes related to the technical infrastructure of blockchain platforms. We do not provide financial or investment advice, nor do we make any representations regarding the value, profitability, or future price of any blockchain or cryptocurrency. Users are encouraged to conduct their own research and consult with licensed financial professionals before engaging in any investment activities. https://risein.com disclaims any responsibility for financial decisions made by users based on the information provided here.

© 2026 Rise In, All rights reserved