<!-- Moralis SDK code -->
<script src="https://cdn.jsdelivr.net/npm/[email protected]/dist/web3.min.js"></script> <script src="https://unpkg.com/moralis/dist/moralis.js"></script>
<h1>Moralis Gas Stats</h1>
<button id="btn-login">Moralis Login</button>
<button id="btn-logout">Logout</button>
<button id="btn-get-stats">Refresh Stats</button>
<!-- stats will go here -->
// connect to Moralis server
const serverUrl = "https://9c8nrl6lfq8u.moralis.io:2053/server";
const appId = "TCDv7lnGwNN7RIhlj30wA69dnaamxtsmqcTnm3ch";
Moralis.start({ serverUrl, appId });
let user = Moralis.User.current();
user = await Moralis.authenticate();
console.log("logged in user:", user);
async function logOut() {
await Moralis.User.logOut();
console.log("logged out");
// bind button click handlers
document.getElementById("btn-login").onclick = login;
document.getElementById("btn-logout").onclick = logOut;
document.getElementById("btn-get-stats").onclick = getStats;
const user = Moralis.User.current();
getUserTransactions(user);
// HISTORICAL TRANSACTIONS
async function getUserTransactions(user) {
const query = new Moralis.Query("EthTransactions");
query.equalTo("from_address", user.get("ethAddress"));
// subscribe to query updates
const subscription = await query.subscribe();
handleNewTransaction(subscription);
const results = await query.find();
console.log("user transactions:", results);
// REAL-TIME TRANSACTIONS
async function handleNewTransaction(subscription) {
// log each new transaction
subscription.on("create", function (data) {
console.log("new transaction: ", data);
async function getAverageGasPrices() {
const results = await Moralis.Cloud.run("getAvgGas");
console.log("average user gas prices:", results);
function renderGasStats(data) {
const container = document.getElementById("gas-stats");
container.innerHTML = data
.map(function (row, rank) {
return `<li>#${rank + 1}: ${Math.round(row.avgGas)} gwei</li>`;