In right now’s article, we’ll present you the way to construct decentralized functions (dapps) on OP Mainnet utilizing Moralis’ industry-leading Web3 APIs. With our premier APIs, you possibly can seamlessly fetch and combine on-chain knowledge into your tasks with solely single API calls. Consequently, when leveraging Moralis, you can begin constructing OP Mainnet tasks sooner and extra effectively!
Should you’re desperate to get going with the code, right here’s slightly sneak peek of three endpoints for querying a pockets’s native and NFT balances, together with the value of a token:
getNativeBalance() – Fetch the native steadiness of any pockets:const response = await Moralis.EvmApi.steadiness.getNativeBalance({
“chain”: “0xa”,
“handle”: “0xCBA6a2397b322CF1389f6d1adc05F75F36B20116”
}); getWalletNFTs() – Get the NFT steadiness of any pockets:const response = await Moralis.EvmApi.nft.getWalletNFTs({
“chain”: “0xa”,
“handle”: “0xCBA6a2397b322CF1389f6d1adc05F75F36B20116”
}); getTokenPrice() – Question the value of any fungible token:const response = await Moralis.EvmApi.token.getTokenPrice({
“chain”: “0xa”,
“handle”: “0x4200000000000000000000000000000000000042”
});
To discover different endpoints and our APIs in additional element, try our official Moralis documentation web page or be part of us on this article as we present you the way to construct on OP Mainnet with out breaking a sweat! Now, if you wish to observe alongside all through this tutorial, don’t overlook to enroll with Moralis. You possibly can create an account in a heartbeat, and also you’ll get immediate entry to our premier Web3 API suite!
Overview
We’ll kickstart right now’s article by exploring the ins and outs of OP Mainnet. In doing so, we’ll clarify what the community is, the way it works, and canopy some advantages of constructing dapps on OP Mainnet. From there, we’ll introduce you to Moralis and our industry-leading Optimism API suite. After getting an summary of Moralis, we’ll soar straight into the primary tutorial and present you the way to construct on OP Mainnet in three steps:
Step 1: Create a Moralis Account and Get Your API KeyStep 2: Select OP Mainnet API EndpointsStep 3: Write a Script and Run the Code
To high issues off, we’ll cowl a short listing of OP Mainnet tasks to provide you some inspiration on your subsequent dapp!
If this sounds thrilling, be part of us within the following part as we begin by discovering what OP Mainnet is!
What’s OP Mainnet?
OP Mainnet – often known as Optimism – launched in 2021, and it’s a low-cost and lightning-fast ETH layer-2 (L2) scaling answer. This blockchain community serves as a basis for an unlimited ecosystem that encompasses a big selection of decentralized functions (dapps). This consists of cryptocurrency wallets, decentralized exchanges (DEXs), and different outstanding Web3 tasks!
So, why do you have to construct dapps on OP Mainnet? To reply this query, let’s have a look at three advantages of this community:
Velocity and Effectivity: OP Mainnet leverages “optimistic rollup” expertise to bundle tons of of off-chain operations right into a single Ethereum transaction. In doing so, the community can considerably enhance Ethereum’s scalability by facilitating faster transactions at a low value. This makes OP Mainnet a extra environment friendly and cost-effective answer for finish customers and builders alike. Revolutionary Infrastructure: Via OP Mainnet’s Superchain mission, the community seeks to maximise interoperability and composability between blockchains utilizing the OP Stack. In doing so, OP Mainnet goals to combine a number of siloed L2 scaling options right into a single, unified layer. Scalable Ecosystem: With EVM-equivalence, all Ethereum dapps will work completely on OP Mainnet. This implies you should use the identical established improvement instruments to construct on OP Mainnet as you’ll on Ethereum.
That provides you an summary of OP Mainnet and the advantages of this community. Within the subsequent part, we’ll introduce you to the best method to construct OP Mainnet dapps: Moralis!
Best Option to Construct on OP Mainnet – Introducing Moralis
Moralis is an industry-leading Web3 API supplier, and its toolset of totally OP Mainnet-compatible APIs at present powers blockchain and crypto functions for hundreds of thousands of customers worldwide!
In Moralis’ suite of Web3 APIs, you’ll discover greater than ten interfaces for numerous use instances, together with the Pockets API, NFT API, and Token API. With these premier APIs, it’s attainable to question blockchain knowledge with solely single traces of code. As such, you possibly can seamlessly construct OP Mainnet dapps each sooner and extra effectively utilizing Moralis.
Nonetheless, what makes Moralis stand out in comparison with the competitors? To reply this query, let’s discover three advantages of our premier Web3 APIs:
Complete: All our API responses are enriched with metadata, transaction decodings, market knowledge, handle labels, and rather more from a number of sources. This permits us to supply the {industry}’s most complete APIs which can be designed with the result in thoughts, minimizing the variety of calls you could construct Web3 tasks. Easy: Moralis is the one Web3 API supplier that’s easy and intuitive to make use of. All of our requests and responses adhere to the identical normal and construction throughout numerous APIs tailor-made for particular use instances. Trusted: Our Web3 APIs are trusted by tons of of hundreds of builders and enterprise prospects like MetaMask, Polygon, Delta, and so on. So, if you wish to emulate a number of the Web3 {industry}’s greatest names, think about using Moralis.
Should you’d wish to discover all our interfaces, try the official Web3 API web page!
Additionally, do you know you could entry our Web3 APIs without spending a dime? Merely enroll with Moralis, and also you’ll be capable to construct OP Mainnet dapps with out breaking a sweat!
3-Step Tutorial: The right way to Construct on OP Mainnet
Now, with an summary of Moralis, let’s dive into the primary part of this information and present you the way to construct on OP Mainnet in three easy steps:
Step 1: Create a Moralis Account and Get Your API KeyStep 2: Select OP Mainnet API EndpointsStep 3: Write a Script and Run the Code
Nonetheless, earlier than you will get going, you could take care of a few stipulations!
Stipulations
Moralis’ Web3 APIs are appropriate with a number of programming languages, together with Python, Go, and so on. Nonetheless, on this tutorial, we’ll be utilizing JavaScript and NodeJS. As such, earlier than you proceed, ensure you have the next prepared:
Step 1: Create a Moralis Account and Get Your API Key
The very first thing you’ll want is a Moralis account. As such, should you haven’t already, click on on the ”Begin for Free” button on the high proper of Moralis’ homepage and arrange an account:
After creating an account and logging in, you’ll discover that Moralis has robotically arrange a brand new mission for you:
The very first thing you could wish to do is rename the mission below ”Settings”:
Subsequent, scroll all the way down to the ”API Keys” part and duplicate your Moralis API key:
Please preserve it for now, as you’ll want it within the third step!
Step 2: Select OP Mainnet API Endpoints
On this part, we’ll dive a bit deeper into the assorted APIs of Moralis to provide you an summary of what OP Mainnet tasks you possibly can construct with our premier instruments. Extra particularly, we’ll give attention to the next three APIs and their respective endpoints:
Pockets API NFT APIToken API
So, let’s kick this off by exploring the ins and outs of Moralis’ Pockets API!
Pockets API
Moralis’ Pockets API is the last word software for constructing cryptocurrency wallets and integrating pockets performance into OP Mainnet tasks. The Pockets API helps 500+ million addresses throughout the largest blockchains, together with Ethereum, Polygon, BSC, and, after all, OP Mainnet!
With this industry-leading software, you possibly can effortlessly question the native steadiness, NFT steadiness, profile knowledge, token transfers, transactions, and extra of any cryptocurrency handle. As such, with the Pockets API, you possibly can construct all the things from portfolio trackers to cryptocurrency wallets on OP Mainnet with out breaking a sweat.
To spotlight the accessibility of this software, listed below are three outstanding endpoints you’ll probably discover useful when constructing dapps:
getNativeBalance() – Question the native steadiness of any pockets handle: const response = await Moralis.EvmApi.steadiness.getNativeBalance({
“chain”: “0xa”,
“handle”: “0xCBA6a2397b322CF1389f6d1adc05F75F36B20116”
});
getNativeBalance() response:
{
“steadiness”: “50640324378835108031”
} getWalletTransactions() – Fetch the native transaction historical past of any pockets:const response = await Moralis.EvmApi.transaction.getWalletTransactions({
“chain”: “0xa”,
“handle”: “0x2a82ae142b2e62cb7d10b55e323acb1cab663a26”
});
getWalletTransactions() response:
[
//…
{
“hash”: “0x6cbb692563bfb4adfa0850a4d68cbed848ba9be2b73fe04f42a49b81305e3eab”,
“nonce”: “13”,
“transaction_index”: “5”,
“from_address”: “0xcd3031fb7da6c6764466a6f77ec74e52a4cea810”,
“from_address_label”: null,
“to_address”: “0x2a82ae142b2e62cb7d10b55e323acb1cab663a26”,
“to_address_label”: null,
“value”: “27200000”,
“gas”: “21000”,
“gas_price”: “50000000”,
“input”: “0x”,
“receipt_cumulative_gas_used”: “363490”,
“receipt_gas_used”: “21000”,
“receipt_contract_address”: null,
“receipt_root”: null,
“receipt_status”: “0”,
“block_timestamp”: “2023-11-18T09:10:23.000Z”,
“block_number”: “112349923”,
“block_hash”: “0xd92193788b4f8ed5c991819ecf22433a4a5eca8b45974c90115c852635dcc4d3”,
“transfer_index”: [
112349923,
5
]
},
//…
] getWalletTokenBalances() – Get the token balances of any pockets: const response = await Moralis.EvmApi.token.getWalletTokenBalances({
“chain”: “0xa”,
“handle”: “0x2a82ae142b2e62cb7d10b55e323acb1cab663a26”
});
getWalletTokenBalances() response:
[
{
“token_address”: “0x7f5c764cbc14f9669b88837ca1490cca17c31607”,
“symbol”: “USDC”,
“name”: “USD Coin”,
“logo”: null,
“thumbnail”: null,
“decimals”: 6,
“balance”: “2000000”,
“possible_spam”: false,
“verified_contract”: true
},
{
“token_address”: “0x4200000000000000000000000000000000000042”,
“symbol”: “OP”,
“name”: “Optimism”,
“logo”: null,
“thumbnail”: null,
“decimals”: 18,
“balance”: “1294044371320286807123702580”,
“possible_spam”: false,
“verified_contract”: true
},
//…
]
NFT API
The NFT API helps over three million collections throughout ten+ EVM-compatible chains, together with all the things from well-established tasks to tokens that dropped simply seconds in the past. Consequently, this software takes care of all of your NFT data-related improvement wants!
With the NFT API, you solely want single API calls to seamlessly fetch real-time NFT transfers, on-chain worth knowledge, enriched metadata, and extra. So, when working with this premier software, you possibly can construct all the things from NFT marketplaces to Web3 video games with ease.
Listed here are three outstanding endpoints to focus on the accessibility of our NFT API:
getNFTMetadata() – Get the metadata of any NFT: const response = await Moralis.EvmApi.nft.getNFTMetadata({
“chain”: “0xa”,
“handle”: “0xB8Df6Cc3050cC02F967Db1eE48330bA23276A492”,
“tokenId”: “1”
});
getNFTMetadata() response:
{
“quantity”: “1”,
“token_id”: “1”,
“token_address”: “0xb8df6cc3050cc02f967db1ee48330ba23276a492”,
“contract_type”: “ERC721”,
“owner_of”: “0xb09fa44ef3bcbd1bf2d35d5644a19e188d4c05f6”,
“last_metadata_sync”: “2024-02-01T15:09:43.956Z”,
“last_token_uri_sync”: “2024-02-01T15:09:42.794Z”,
“metadata”: “{“title”:”Optipunk #1″,”description”:”10,000 distinctive collectible characters with proof of possession saved on Optimism”,”attributes”:[{“trait_type”:”Type”,”value”:”Male”},{“trait_type”:”Accessory”,”value”:”Smile”},{“trait_type”:”Accessory”,”value”:”Mohawk”}],”picture”:”ipfs://QmbAhtqQqiSQqwCwQgrRB6urGc3umTskiuVpgX7FvHhutU/1.png”}”,
“block_number”: “97749”,
“block_number_minted”: “97749”,
“title”: “OptiPunk”,
“image”: “OPPUNK”,
“token_hash”: “364af8044f93145cf5859151b46223a3”,
“token_uri”: “https://ipfs-metadata.moralis.io:2053/ipfs/QmZYqgu73bpovLt7Y4kYfCPUbbgdRfvcsja8YZsprKismB/1”,
“minter_address”: “0xb09fa44ef3bcbd1bf2d35d5644a19e188d4c05f6”,
“verified_collection”: false,
“possible_spam”: false
} getWalletNFTs() – Fetch the NFT steadiness of a pockets:const response = await Moralis.EvmApi.nft.getWalletNFTs({
“chain”: “0xa”,
“handle”: “0xCBA6a2397b322CF1389f6d1adc05F75F36B20116”
});
getWalletNFTs() response:
[
{
“amount”: “1”,
“token_id”: “3569948”,
“token_address”: “0xd12999440402d30f69e282d45081999412013844”,
“contract_type”: “ERC721”,
“owner_of”: “0xcba6a2397b322cf1389f6d1adc05f75f36b20116”,
“last_metadata_sync”: “2024-02-01T15:03:42.174Z”,
“last_token_uri_sync”: “2024-02-01T15:03:42.039Z”,
“metadata”: “//…”,
“block_number”: “107697133”,
“block_number_minted”: “107306857”,
“name”: “Omnichain Adventures”,
“symbol”: “OMNIA”,
“token_hash”: “f50ea59436c7eda79995a4e694d53f72”,
“token_uri”: “https://yvsbrs5apkpplrjba65gcet4zbe3wsv6i5y3e44vgxcunjwopsmq.arweave.net/xWQYy6B6nvXFIQe6YRJ8yEm7Sr5HcbJzlTXFRqbOfJk”,
“minter_address”: “0x8caf185283211beab492601825fee0b44f8633aa”,
“verified_collection”: false,
“possible_spam”: false
}
] getNFTOwners() – Question an array of all NFT house owners for a given contract:const response = await Moralis.EvmApi.nft.getNFTOwners({
“chain”: “0xa”,
“handle”: “0xB8Df6Cc3050cC02F967Db1eE48330bA23276A492”
});
getNFTOwners() response:
[
{
“amount”: “1”,
“token_id”: “2329”,
“token_address”: “0xb8df6cc3050cc02f967db1ee48330ba23276a492”,
“contract_type”: “ERC721”,
“owner_of”: “0x0331969e189d63fbc31d771bb04ab44227d748d8”,
“last_metadata_sync”: “2024-02-01T15:10:32.987Z”,
“last_token_uri_sync”: “2024-02-01T15:10:31.531Z”,
“metadata”: “//…”,
“block_number”: “135838”,
“block_number_minted”: “135838”,
“name”: “OptiPunk”,
“symbol”: “OPPUNK”,
“token_hash”: “6206b15eef897e716a8f943c61718039”,
“token_uri”: “https://ipfs-metadata.moralis.io:2053/ipfs/QmZYqgu73bpovLt7Y4kYfCPUbbgdRfvcsja8YZsprKismB/2329”,
“minter_address”: “0x0331969e189d63fbc31d771bb04ab44227d748d8”,
“verified_collection”: false,
“possible_spam”: false
},
//…
]
Token API
The Token API is the {industry}’s most complete software for fungible token knowledge, supporting each single token throughout greater than ten blockchains, together with OP Mainnet, Ethereum, Polygon, and BNB Good Chain!
With the Token API, you possibly can seamlessly fetch costs, transfers, balances, metadata, and rather more for any ERC-20 token. As such, when utilizing this premier API, you possibly can construct all the things from DEXs to token explorers very quickly.
To spotlight the accessibility of the Token API, listed below are three endpoints you’ll discover useful when constructing OP Mainnet dapps:
getTokenPrice() – Get the value of any fungible token: const response = await Moralis.EvmApi.token.getTokenPrice({
“chain”: “0xa”,
“handle”: “0x4200000000000000000000000000000000000042”
});
getTokenPrice() response:
{
“tokenName”: “Optimism”,
“tokenSymbol”: “OP”,
“tokenLogo”: null,
“tokenDecimals”: “18”,
“nativePrice”: {
“worth”: “1346688388542655”,
“decimals”: 18,
“title”: “Ether”,
“image”: “ETH”,
“handle”: “0x4200000000000000000000000000000000000006”
},
“usdPrice”: 3.357083520606333,
“usdPriceFormatted”: “3.357083520606332971”,
“exchangeName”: “Uniswap v3”,
“exchangeAddress”: “0x1F98431c8aD98523631AE4a59f267346ea31F984”,
“tokenAddress”: “0x4200000000000000000000000000000000000042”,
“priceLastChangedAtBlock”: “115945253”,
“verifiedContract”: true
} getTokenMetadata() – Fetch the metadata of any token:const response = await Moralis.EvmApi.token.getTokenMetadata({
“chain”: “0xa”,
“addresses”: [
“0x4200000000000000000000000000000000000042”
]
});
getTokenMetadata() response:
[
{
“address”: “0x4200000000000000000000000000000000000042”,
“address_label”: null,
“name”: “Optimism”,
“symbol”: “OP”,
“decimals”: “18”,
“logo”: null,
“logo_hash”: null,
“thumbnail”: null,
“block_number”: “0”,
“validated”: 1,
“created_at”: null,
“possible_spam”: false,
“verified_contract”: true
}
] getTokenTransfers() – Question all transactions for a given token contract: const response = await Moralis.EvmApi.token.getTokenTransfers({
“chain”: “0xa”,
“handle”: “0x4200000000000000000000000000000000000042”
});
getTokenTransfers() response:
[
{
“token_name”: “Optimism”,
“token_symbol”: “OP”,
“token_logo”: null,
“token_decimals”: “18”,
“from_address”: “0x666936a007c8c2e70dd5aae9151fd50de858fb16”,
“from_address_label”: null,
“to_address”: “0x2580fe0cdd3a2300f4fe9637e7d4b44d47f1f63b”,
“to_address_label”: null,
“address”: “0x4200000000000000000000000000000000000042”,
“block_hash”: “0x4f99ed7e331b422c87d73eed2a60e98417d072ed64d0ceab57e7479d76aeb58b”,
“block_number”: “115945333”,
“block_timestamp”: “2024-02-09T14:37:23.000Z”,
“transaction_hash”: “0xf8e82cbe28afb6e3adea9ef0c34132588ff29a8cc16b0cc48cf516efc0a68d05”,
“transaction_index”: 10,
“log_index”: 48,
“value”: “600000000000000000000”,
“possible_spam”: false,
“value_decimal”: “600”,
“verified_contract”: true
},
]
Step 3: Write a Script and Run the Code
When you select the suitable endpoints on your specific mission, all that is still is so that you can name them. And we’ll present you precisely how to take action on this remaining step of our tutorial!
On this case, we’ll use the getWalletTokenBalances() endpoint for instance. Nonetheless, should you’re all for every other endpoint, fear not, as you possibly can observe just about the identical steps for all endpoints.
Begin by establishing a folder in your IDE and run the terminal command under to initialize a brand new mission:
npm init
Subsequent, run the instructions under within the terminal to put in the Moralis SDK:
npm set up moralis @moralisweb3/common-evm-utils
From right here, open your ”package deal.json” file and add ”sort”: ”module”:
You possibly can then create a brand new ”index.js” file and add the next code:
import Moralis from ‘moralis’;
attempt {
await Moralis.begin({
apiKey: “YOUR_API_KEY”
});
const response = await Moralis.EvmApi.token.getWalletTokenBalances({
“chain”: “0xa”,
“handle”: “0x2a82ae142b2e62cb7d10b55e323acb1cab663a26”
});
console.log(response.uncooked);
} catch (e) {
console.error(e);
}
You now have to make a couple of small configurations to the code. To begin with, you could change YOUR_API_KEY with the important thing you copied throughout step one. Subsequent, you additionally have to configure the handle parameter to suit your question:
From right here, you solely have to run the code. To take action, open a brand new terminal and execute the command under within the mission’s root folder:
node index.js
In return, you’ll get a response containing an array of the token balances of the required handle. It is going to look one thing like this:
[
{
“token_address”: “0x7f5c764cbc14f9669b88837ca1490cca17c31607”,
“symbol”: “USDC”,
“name”: “USD Coin”,
“logo”: null,
“thumbnail”: null,
“decimals”: 6,
“balance”: “2000000”,
“possible_spam”: false,
“verified_contract”: true
},
{
“token_address”: “0x4200000000000000000000000000000000000042”,
“symbol”: “OP”,
“name”: “Optimism”,
“logo”: null,
“thumbnail”: null,
“decimals”: 18,
“balance”: “1294044371320286807123702580”,
“possible_spam”: false,
“verified_contract”: true
},
//…
]
That’s it! You now know the way to question all the things from pockets balances to token transactions utilizing Moralis’ premier Web3 API suite. In flip, you’re now able to take your improvement endeavors to the subsequent stage and begin constructing OP Mainnet dapps!
Dapp Concepts – Exploring a Record of Optimism Initiatives
With a greater understanding of how one can construct dapps on OP Mainnet utilizing Moralis’ Web3 APIs, you may now be searching for some inspiration on your subsequent mission. Consequently, we’ll take this part to discover 5 outstanding OP Mainnet tasks:
If you wish to discover tasks not lined above, please try our complete listing of high Optimism dapps on Moralis’ Web3 Wiki!
Abstract: The right way to Construct on OP Mainnet
In right now’s article, we confirmed you the way to construct on OP Mainnet with Moralis in three easy steps:
Step 1: Create a Moralis Account and Get Your API KeyStep 2: Select OP Mainnet API EndpointsStep 3: Write a Script and Run the Code
In case you have adopted alongside this far, you now know the way to construct dapps on Optimism seamlessly! Additionally, should you haven’t already, don’t overlook to enroll with Moralis. You possibly can enroll with the press of some buttons, and also you’ll achieve immediate entry to our industry-leading OP Mainnet API suite so you can begin constructing dapps sooner and extra effectively!