Utilizing the enterprise-grade EVM API from Moralis, builders can simply name a sensible contract perform from JavaScript. Merely set up Moralis’ SDK and name the ”runContractFunction” endpoint! Moreover, by defining particular parameters within the code snippet under, together with the contract deal with, perform identify, ABI, and many others., you may run any EVM ”read-only” contract perform with a number of traces of code:
const response = await Moralis.EvmApi.utils.runContractFunction({ deal with, functionName, abi, });
In order for you extra info on how this works, examine the documentation web page to run a contract perform or comply with alongside on this tutorial as we apply this in observe! That stated, regardless of which path you resolve to comply with, you could have a Moralis account. So, create one totally free now and unlock the facility of blockchain!

Overview
Sensible contracts are on the core of blockchain growth and are important parts of the Web3 ecosystem. Within the case of Ethereum, good contracts include two components, considered one of which is sensible contract features. Such a perform is a chunk of code used a number of occasions to carry out given duties. Consequently, in Web3 growth, it’s extremely helpful for a developer to grasp how you can run Web3 contract strategies. If you wish to find out how to take action, be a part of us on this tutorial as we present you how you can name a sensible contract perform from JavaScript utilizing Moralis!
Earlier than we present you how you can name a sensible contract perform from JavaScript, the article will briefly cowl the intricacies of each contracts and features. So, if you’re already conversant in these ideas, be at liberty to skip straight into the central a part of the tutorial.
To name good contract features seamlessly, we will likely be utilizing Moralis’ Ethereum Web3 API. Nevertheless, that is solely one of many distinguished blockchain growth instruments supplied by Moralis. As such, if you’re really critical about changing into a blockchain developer, it is best to discover a few of Moralis’ different interfaces. An instance is the Streams API, enabling you to rapidly arrange Web3 webhooks to stream on-chain information straight into the backend of Web3 initiatives!
So, if you wish to entry these instruments and absolutely leverage the facility of blockchain expertise, enroll with Moralis now totally totally free!
Exploring Contracts and Capabilities – Easy methods to Name Sensible Contract Perform from JavaScript
Earlier than exploring how you can name a sensible contract perform with JavaScript, the article will briefly dive into the intricacies of contracts and features. In case you are already conversant in these two ideas, be at liberty to skip straight into the ”Easy methods to Name Sensible Contract Perform from JavaScript” tutorial. In any other case, be a part of us within the following sections, the place we begin by answering the query, ”what are good contracts?”.
What are Sensible Contracts?
Sensible contracts – additionally typically known as ”Web3 contracts” – are on the spine of the Web3 ecosystem and are primarily codified agreements between two or extra events over the web. Consequently, good contracts have the identical elementary functions as conventional contracts. Nevertheless, there’s a essential distinction between good contracts and conventional ones that’s fairly necessary to be aware of. The code on the blockchain regulates the ”phrases and circumstances” relatively than a third-party actor.

To slender the scope barely, allow us to focus extra particularly on Ethereum good contracts, as that is the preferred community for blockchain growth. These good contracts are packages working on the Ethereum blockchain. Moreover, they include two core parts: code and information. The code is a set of features, and the info is the contract’s state.
A standard metaphor for describing the performance of a sensible contract is a digital merchandising machine. Like conventional merchandising machines, good contracts produce assured outputs based mostly on given inputs. Accordingly, you may present contracts with cryptocurrency, and so they run code in return.
However, that briefly covers good contracts. For a extra profound breakdown, take a look at our article on Web3 contracts! Now, let’s get extra particular and discover considered one of their core parts: good contract features!
What are Sensible Contract Capabilities?
As we briefly talked about within the preliminary part, features are considered one of two core parts of Ethereum good contracts. So, what precisely are good contract features? A wise contract perform is a chunk of reusable code that may be known as from outdoors or inside a selected good contract that accomplishes a particular job. Creating features offers a number of advantages, corresponding to eliminating the necessity to write code a number of occasions and lowering the prospect of errors occurring.

Moreover, there are two varieties of good contract features:
- Capabilities that generate on-chain transactions.
- Capabilities which are ”read-only” and, due to this fact, don’t lead to blockchain transactions.
On this tutorial, we’ll give attention to the previous. Particularly, within the subsequent part, we’ll present you how you can use Moralis to name a ”read-only” good contract perform from JavaScript. If this sounds thrilling, keep caught in as we cowl the method from begin to end!
Easy methods to Name Sensible Contract Perform from JavaScript
The next tutorial sections illustrate how one can name a sensible contract perform from JavaScript. To make this as accessible as doable as you comply with our lead, we’ll make the most of Moralis’ EVM API and the ”runContractFunction” endpoint. By means of this endpoint, you may name any ”read-only” good contract perform from JavaScript with only some traces of code!
To exhibit how this works, we’ll present you how you can name the ”getPrice()” perform of the “Cool Cats” NFT contract. Calling this perform returns the minting value of the tokens, which you need to use as you see slot in your growth endeavors. Here’s a fast overview of the components we cowl on this article:
- Set Up a NodeJS Venture
- Add the Code to the ”index.js” File
- Run the Program
By overlaying the sections above, you’ll study not solely how you can name ”getPrice()” however any ”read-only” good contract perform. So, if this sounds thrilling, be a part of us on this tutorial as we kick issues off by displaying you how you can arrange a NodeJS undertaking!
Nevertheless, maybe you favor watching YouTube movies to coach your self. If that’s the case, you can even take a look at the Moralis YouTube clip under. On this video, you could find a complete breakdown of the whole course of, together with further examples of different good contract perform calls:
Set Up a NodeJS Venture
On this preliminary part of the tutorial on how you can name a sensible contract perform from JavaScript, we’ll present you how you can arrange a NodeJS undertaking. As such, to start with, when you have not already, be sure that to put in the most recent model of NodeJS. You possibly can obtain and set up it utilizing the next hyperlink: “https://nodejs.org/en/”.
From there, open your built-in growth setting (IDE) and create a brand new undertaking folder. We’re utilizing Visible Studio Code (VSC) all through the article. As such, for those who go for one other setting, word that there may sometimes be slight variations within the course of. However, upon getting opened your IDE, go forward and launch a brand new terminal. In case you are utilizing VSC, click on on the ”Terminal” tab on the prime after which hit ”New Terminal”:
From there, you may initialize a brand new NodeJS undertaking by working the command under within the undertaking’s root folder:
npm init -y
With the undertaking initialized, you additionally want to put in the required dependencies. To take action, run this command within the terminal:
npm i moralis dotenv
That covers the preliminary setup technique of the NodeJS undertaking. Nevertheless, from right here, you additionally want so as to add three new recordsdata ”.env”, ”abi.json”, and ”index.js”. As such, within the following sub-section, we’ll present you how you can create them and take a better take a look at what content material you will need to add to every.
Add ”.env”, abi.json”, and ”index.js”
The primary file you could create is ”.env”, which will likely be used to securely retailer your Web3 API key. As such, open the file and create a brand new ”MORALIS_KEY” setting variable. It ought to look one thing like this:
MORALIS_KEY = “JnJnO…”
Nevertheless, as you may need concluded already, you could change ”JnJnO…” together with your precise key. To get the important thing, you could have an energetic Moralis account. So both log in or enroll with Moralis totally free proper now. From there, log in to the admin panel, go to the ”Web3 APIs” tab, copy the important thing, and enter it into the ”.env” file:

Now that you’ve added your Moralis API key, the following step is to create the ”abi.json” file. For this file, you’ll want to add the ABI of the contract you have an interest in. To get the contract ABI, we’ll use the Etherscan blockchain explorer. Particularly, we’ll use the Cool Cats NFT contract to exhibit how this works.
However, open Etherscan and navigate to the contract you have an interest in. In our case, it seems one thing like this:
From there, scroll down and click on on the ”Contract” tab:
You possibly can then scroll down even additional, and it is best to discover the contract ABI nearly on the backside:
Copy this code and enter it into the ”abi.json” file. It ought to now look one thing like this:

Lastly, the final file you could add is ”index.js”. This would be the file to which we add the logic used to name a sensible contract perform from JavaScript. Consequently, this ”index.js” requires additional consideration, which is why we dedicate the next part to breaking down the code!
Add the Code to the ”index.js” File
Now that you’ve arrange the NodeJS undertaking and created the required recordsdata, it’s time to add the code used to name a sensible contract perform from JavaScript. So, to start with, open ”index.js” and add the next code snippet on the prime of the file:
const Moralis = require("moralis").default; require("dotenv").config(); const ABI = require("./abi.json");
The above code imports Moralis, offers entry to the contents of the ”.env” file, and shops the contract ABI within the ”ABI” variable. From there, you could initialize Moralis and move the Web3 API key you specified earlier as a parameter. To take action, add the next code under the ”ABI” variable:
Moralis.begin({ apiKey: course of.env.MORALIS_KEY })
Subsequent, with Moralis initialized, create a brand new asynchronous perform. This perform will use Moralis’ EVM API to name the ”runContractFunction” endpoint with a number of parameters. On this case, since we wish to name the ”getPrice()” perform, you solely want so as to add the ”deal with”, ”functionName”, and ”abi” as parameters:
.then(async()=>{ const response = await Moralis.EvmApi.utils.runContractFunction({ deal with:"0x1A92f7381B9F03921564a437210bB9396471050C", functionName:"getPrice", abi: ABI })
Lastly, to prime issues off, we console-log the response by including the next code on the backside of the ”index.js” file:
console.log(response.uncooked)
All in all, your file ought to now look one thing like this:
const Moralis = require("moralis").default; require("dotenv").config(); const ABI = require("./abi.json"); Moralis.begin({ apiKey: course of.env.MORALIS_KEY }).then(async()=>{ const response = await Moralis.EvmApi.utils.runContractFunction({ deal with:"0x1A92f7381B9F03921564a437210bB9396471050C", functionName:"getPrice", abi: ABI }) console.log(response.uncooked) })
So, by working the ”index.js” file, this system ought to return the mint value of the Cool Cats NFTs. However, allow us to briefly present you how you can run this system and assessment the leads to the following part!
Run the Program
Lastly, now that you’ve added the code used to name a sensible contract perform, all that is still is working this system. To take action, open a brand new terminal and easily run the next command:
node index.js
This executes the code, and it is best to obtain a response much like the one proven under:

The response is ”20000000000000000”, which is the quantity ”2” adopted by sixteen zeros. As such, that is the mint value with out contemplating the decimals. The precise value is 0.2 ETH.
Congratulations! That’s it for this tutorial! You probably have adopted alongside this far, you now know how you can name a sensible contract perform from JavaScript. What’s extra, though we confirmed you how you can name the ”getPrice()” perform, particularly, you may apply the identical elementary ideas to name different ”read-only” features of any EVM-based contract!
If you wish to take a look at what different good contract features can be found, you may intently study the ”abi.json” file or browse Etherscan. For Etherscan, you may click on on the ”Contract” tab after which hit ”Learn Contract” to search out all features obtainable. For example, here’s what it seems like for the Cool Cats contract:
What’s extra, if you need additional info on how you can name a sensible contract perform with JavaScript, take a look at the EVM API documentation or the documentation web page to run a contract perform.
Abstract – Easy methods to Name Sensible Contract Perform From JavaScript
On this article, we taught you how you can name a sensible contract perform from JavaScript utilizing Moralis. Extra particularly, we used the ”runContractFunction” endpoint to name the ”getPrice()” perform of the Cool Cats contract. Consequently, when you have adopted alongside this far, you need to use the identical elementary ideas to name any good contract perform sooner or later!
In the event you discovered this tutorial informative, be sure that to take a look at further Moralis-based content material right here on the Web3 weblog. For example, discover the very best Ethereum API in 2023 or study the variations between ethers.js vs Web3 streams!
However, it doesn’t matter what blockchain endeavor you embark on sooner or later, enroll with Moralis now, as this Web3 supplier facilitates a extra seamless developer expertise for everybody!