LogoLogo
Blockchain ExplorerWebsiteAirdrop
  • Welcome to Metacces
  • Overview
    • Mission & Vision
    • Market Analysis
    • Story
  • THE ECOSYSTEM
    • Unique Oli
      • Who is Oli
      • AI Integration
      • Blockchain Integration
    • Blacxes
      • What is Blacxes
      • Utilites
      • Unique DNA
      • DAO Governance
      • Technology
      • Distribution
      • Swap
    • Access Journey
      • Overview
      • Basic level
      • Intermediate level
      • Final level
    • Main App
      • Overview
      • Account
      • Assets
      • Use Acces Journey
    • Blockchain Layer 1
    • Acces Coin
      • Coin Utility
      • Smart-Contracts
      • Tokenomecs
      • Metacces Listings Roadmap
  • DEVELOPERS
    • Public Endpoints
    • MetaMask
    • Node Setup
    • JSON RPC Server
    • Connect to RPC
    • API Methods
    • Client Libraries
    • Smart Contracts
      • Deploy
      • Interact
      • Transfer
      • Fixed Cap Asset
      • Variable Cap Asset
  • MISC
    • Roadmap
      • Main Roadmap
        • ✔️2022
        • ✔️2023
        • 🔛2024
        • 2025
      • 🪙Coin Roadmap
        • 2022
        • 2023
        • 2024
    • Meet The Team
    • Be a partner With Metacces
    • Pitch Deck⁩
    • Social Links
      • Website
      • Telegram
      • X.Twitter
      • Discord
      • Youtube
      • Instagram
      • Facebook
Powered by GitBook
On this page

Was this helpful?

  1. DEVELOPERS
  2. Smart Contracts

Interact

PreviousDeployNextTransfer

Last updated 8 months ago

Was this helpful?

Interact with public contracts

This tutorial uses the SimpleStorage.sol contract:

Copy

pragma solidity ^0.7.0;

contract SimpleStorage {
  uint public storedData;

  constructor(uint initVal) public {
    storedData = initVal;
  }

  function set(uint x) public {
    storedData = x;
  }

  function get() view public returns (uint retVal) {
    return storedData;
  }
}

Once the contract is deployed, you can perform a read operation using the get function call and a write operation using the set function call. This tutorial uses the web3js library to interact with the contract. The Quorum Developer Quickstart provides a full example of a public contract script.

1. Perform a read operation​

To perform a read operation, you need the address that the contract was deployed to and the contract's ABI. The contract's ABI can be obtained from compiling the contract; see the deploying smart contracts tutorial for an example.

Use the web3.eth.Contract object to create a new instance of the smart contract, then make the get function call from the contract's list of methods, which will return the value stored:

Copy

async function getValueAtAddress(
  host,
  deployedContractAbi,
  deployedContractAddress,
) {
  const web3 = new Web3(host);
  const contractInstance = new web3.eth.Contract(
    deployedContractAbi,
    deployedContractAddress,
  );
  const res = await contractInstance.methods.get().call();
  console.log("Obtained value at deployed contract is: " + res);
  return res;
}

To perform a write operation, send a transaction to update the stored value. As with the get call, you need to use the address that the contract was deployed to and the contract's ABI. The account address must correspond to an actual account with some ACCES in it to perform the transaction.

Make the set call passing in your account address, value as the updated value of the contract, and the amount of gas you are willing to spend for the transaction:

Copy

// You need to use the accountAddress details provided to GoQuorum to send/interact with contracts
async function setValueAtAddress(
  host,
  accountAddress,
  value,
  deployedContractAbi,
  deployedContractAddress,
) {
  const web3 = new Web3(host);
  const contractInstance = new web3.eth.Contract(
    deployedContractAbi,
    deployedContractAddress,
  );
  const res = await contractInstance.methods
    .set(value)
    .send({ from: accountAddress, gasPrice: "0x0", gasLimit: "0x24A22" });
  return res;
}

To verify that a value has been updated, perform a get call after a set update call.

2. Perform a write operation

3. Verify an updated value

​
​
​