A microservice for calling ethereum APIs.

Overview

Ether Goblin

A microservice for calling ethereum APIs.

Features

  • RESTFul APIs for the Ethereum Blockchain and its ecosystem
  • Microservice
  • Run in Docker
  • NFT APIs (under development)
  • A simple balance Watchdog
  • NFT transfer tx listener

Supported Chains

Development Environment

  • typescript 4.6.3
  • node v16.14.2
  • ts-node v10.7.0
  • yarn v1.22.18

Quick Guide

  • Install dependency

    yarn
  • Build code

    Install all dependencies and compile code.

    make build
  • Build docker image

    make docker
  • Run

    • Params

      • --config Config filepath. Example:

        ts-node ./src/main/index.ts --config ./conf/app.config.yaml
    • Run code directly by ts-node

      yarn dev-run --config ./conf/app.config.yaml
    • Run compiled code by node

      yarn dist-run --config ./conf/app.config.yaml
  • Clean

    make clean

Roadmap

  • Documents
  • NFT APIs
  • ERC20 APIs

License

MIT

Comments
  • Release v0.12.0

    Release v0.12.0

    Features

    • (module/event/fetcher): fetch events by contract address

    Build

    • Bump node version from 16.18 to 18.12
    • Bump typescript from 4.8.4 to 4.9.3
    • Bump @openzeppelin/contracts from 4.7.3 to 4.8.0
    • Bump packages
    opened by jovijovi 0
  • Release v0.11.6

    Release v0.11.6

    opened by jovijovi 0
  • Release v0.11.2

    Release v0.11.2

    Features

    • (module/event/fetcher/db): add BulkSave

    Performance

    • (module/event/fetcher): improve dump events performance by BulkSave

    Refactor

    • (module/event/fetcher): refactor callback

    Build

    • Bump packages
    opened by jovijovi 0
  • Release v0.11.0

    Release v0.11.0

    BREAKING CHANGES

    • (module/event/fetcher/db):
      • Rename database fields in underlined style
      • Add new fields: 'block_timestamp', 'block_datetime' and 'event_type'

    Features

    • Load module by @jovijovi/pedrojs-loader
    • (module/event/fetcher):
      • Display a progress bar by config
      • Register HTTP APIs by config
      • Force update database if the data already exists
      • Add API 'GetTokenHistory'

    Performance

    • (module/event/fetcher): improve query logs performance

    Build

    • Bump packages
    opened by jovijovi 0
  • Release v0.10.1

    Release v0.10.1

    Features:

    • Load modules and register HTTP APIs through the module loader
    • (module/event/fetcher): add progress bar of event fetcher

    Refactor:

    Build:

    • Bump packages
    opened by jovijovi 0
  • Release v0.9.0

    Release v0.9.0

    Features:

    • (watchdog): initialize watchdog with block time from config
    • (watchdog): send alert mails by queue
    • (watchdog): try to catch up the latest block
    • (watchdog): modify template wording

    Refactor:

    • (watchdog): init watchdog with config
    • (watchdog): alert mail
    • (watchdog): alert generator
    • (watchdog): get balance
    • (watchdog): listen block event

    Fixes:

    • Use strict equality operators
    • (watchdog): export MailContent interface
    • (watchdog): remove magic number

    Performance:

    • (watchdog): improve the performance of checking balances

    Test:

    • (devenv): mount keystore volume
    • (devenv): bump postgres from 13.6 to 13.8

    Build:

    • Bump packages
    opened by jovijovi 0
  • Release v0.8.4

    Release v0.8.4

    Features:

    • feat(event/listener): when loading the cache, set the cache TTL to the latest config and set the start timestamp to the current time
    • feat(event/listener): retry to get contract owner with random interval

    Build:

    • Bump packages
    opened by jovijovi 0
  • Release v0.7.0

    Release v0.7.0

    Features:

    • (event/fetcher): API to push fetch events job to scheduler
    • (event/fetcher): callback for fetching event

    Fixes:

    • (event/fetcher/db): create composite primary key
    opened by jovijovi 0
  • Release v0.6.0

    Release v0.6.0

    Features:

    • (event): listener and fetcher support mint/transfer/burn events
    • (event/transfer): custom cache options by config file
    • (event/fetcher): retry getLogs
    • (event/fetcher): custom fromBlock
    • (event/fetcher/db): custom uri and table name
    • (mailer): support PGP
    • (mailer/template): add more details

    Fixes:

    • (event/transfer): returns 0 if no dump file was found when loading the cache
    opened by jovijovi 0
  • Release v0.4.0

    Release v0.4.0

    Features:

    • feat(event/mint): replace "node-schedule" with "setInterval"
    • feat(event/mint): support mysql for NFT archaeologist
    • feat(watchdog): replace "node-schedule" with "setInterval"
    • feat(watchdog): execute callback if the alert is triggered

    Fixes:

    • fix(event/mint): remove primary key to support batch minting NFTs in one tx
    opened by jovijovi 0
  • Release v0.3.6

    Release v0.3.6

    Features:

    • feat(event/transfer): filters contract address by owner
    • feat(event/transfer): use "setInterval" instead of "node-scheduler"

    Fixes:

    • fix(event/transfer): call contract ABI with provider
    • fix(event/transfer): check address in checksum
    opened by jovijovi 0
Releases(v0.12.0)
  • v0.12.0(Dec 5, 2022)

    Features

    • (module/event/fetcher): fetch events by contract address

    Build

    • Bump node version from 16.18 to 18.12
    • Bump typescript from 4.8.4 to 4.9.3
    • Bump @openzeppelin/contracts from 4.7.3 to 4.8.0
    • Bump packages
    Source code(tar.gz)
    Source code(zip)
  • v0.11.6(Oct 28, 2022)

  • v0.11.2(Oct 12, 2022)

    Features

    • (module/event/fetcher/db): add BulkSave

    Performance

    • (module/event/fetcher): improve dump events performance by BulkSave

    Refactor

    • (module/event/fetcher): refactor callback

    Build

    • Bump packages
    Source code(tar.gz)
    Source code(zip)
  • v0.11.0(Oct 11, 2022)

    BREAKING CHANGES

    • (module/event/fetcher/db):
      • Rename database fields in underlined style
      • Add new fields: 'block_timestamp', 'block_datetime' and 'event_type'

    Features

    • Load module by @jovijovi/pedrojs-loader
    • (module/event/fetcher):
      • Display a progress bar by config
      • Register HTTP APIs by config
      • Force update database if the data already exists
      • Add API 'GetTokenHistory'

    Performance

    • (module/event/fetcher): improve query logs performance

    Build

    • Bump packages
    Source code(tar.gz)
    Source code(zip)
  • v0.10.1(Oct 9, 2022)

  • v0.9.1(Sep 30, 2022)

  • v0.9.0(Sep 29, 2022)

    Features:

    • (watchdog): initialize watchdog with block time from config
    • (watchdog): send alert mails by queue
    • (watchdog): try to catch up the latest block
    • (watchdog): modify template wording

    Refactor:

    • (watchdog): init watchdog with config
    • (watchdog): alert mail
    • (watchdog): alert generator
    • (watchdog): get balance
    • (watchdog): listen block event

    Fixes:

    • Use strict equality operators
    • (watchdog): export MailContent interface
    • (watchdog): remove magic number

    Performance:

    • (watchdog): improve the performance of checking balances

    Test:

    • (devenv): mount keystore volume
    • (devenv): bump postgres from 13.6 to 13.8

    Build:

    • Bump packages
    Source code(tar.gz)
    Source code(zip)
  • v0.8.5(Aug 29, 2022)

  • v0.8.4(Aug 26, 2022)

    Features:

    • feat(event/listener): when loading the cache, set the cache TTL to the latest config and set the start timestamp to the current time
    • feat(event/listener): retry to get contract owner with random interval

    Build:

    • Bump packages
    Source code(tar.gz)
    Source code(zip)
  • v0.8.3(Aug 25, 2022)

  • v0.8.0(Aug 17, 2022)

  • v0.7.0(Aug 15, 2022)

    Features:

    • (event/fetcher): API to push fetch events job to scheduler
    • (event/fetcher): callback for fetching event

    Fixes:

    • (event/fetcher/db): create composite primary key
    Source code(tar.gz)
    Source code(zip)
  • v0.6.0(Aug 12, 2022)

    Features:

    • (event): listener and fetcher support mint/transfer/burn events
    • (event/transfer): custom cache options by config file
    • (event/fetcher): retry getLogs
    • (event/fetcher): custom fromBlock
    • (event/fetcher/db): custom uri and table name
    • (mailer): support PGP
    • (mailer/template): add more details

    Fixes:

    • (event/transfer): returns 0 if no dump file was found when loading the cache
    Source code(tar.gz)
    Source code(zip)
  • v0.5.0(Aug 4, 2022)

  • v0.4.2(Aug 3, 2022)

  • v0.4.0(Jul 14, 2022)

    Features:

    • feat(event/mint): replace "node-schedule" with "setInterval"
    • feat(event/mint): support mysql for NFT archaeologist
    • feat(watchdog): replace "node-schedule" with "setInterval"
    • feat(watchdog): execute callback if the alert is triggered

    Fixes:

    • fix(event/mint): remove primary key to support batch minting NFTs in one tx
    Source code(tar.gz)
    Source code(zip)
  • v0.3.7(Jul 12, 2022)

  • v0.3.6(Jul 12, 2022)

    Features:

    • feat(event/transfer): filters contract address by owner
    • feat(event/transfer): use "setInterval" instead of "node-scheduler"

    Fixes:

    • fix(event/transfer): call contract ABI with provider
    • fix(event/transfer): check address in checksum
    Source code(tar.gz)
    Source code(zip)
  • v0.3.4(Jul 6, 2022)

    Features:

    • API authorization via 2FA token (optional)

    Fixes:

    • fix(build): compile sqlite3(napi-v6-linux-musl-x64) in alpine

    Build:

    • Bump packages
    Source code(tar.gz)
    Source code(zip)
  • v0.2.0(Jun 2, 2022)

  • v0.1.18(May 20, 2022)

  • v0.1.15(Apr 21, 2022)

  • v0.1.14(Apr 19, 2022)

  • v0.1.13(Apr 18, 2022)

    Features:

    • Create JSON wallet
    • Retrieve JSON wallet from mnemonic
    • Retrieve JSON wallet from pk
    • Inspect JSON wallet

    Fixes:

    • Remove sensitive logs
    Source code(tar.gz)
    Source code(zip)
  • v0.1.12(Apr 12, 2022)

  • v0.1.10(Apr 1, 2022)

  • v0.1.9(Mar 29, 2022)

  • v0.1.7(Mar 25, 2022)

  • v0.1.6(Mar 23, 2022)

  • v0.1.4(Mar 22, 2022)

Owner
null
Hemsida för personer i Sverige som kan och vill erbjuda boende till människor på flykt

Getting Started with Create React App This project was bootstrapped with Create React App. Available Scripts In the project directory, you can run: np

null 4 May 3, 2022
Kurs-repo för kursen Webbserver och Databaser

Webbserver och databaser This repository is meant for CME students to access exercises and codealongs that happen throughout the course. I hope you wi

null 14 Jan 3, 2023
Your Ethereum control panel. Interact with smart contracts on Ethereum.

etherfunk Your Ethereum control panel. Interact with smart contracts on Ethereum. ?? https://etherfunk.io ?? Devleopment First, run the development se

Tom Quirk 23 Sep 24, 2022
A User Interface for calling a program's instructions

Anchor Test UI Testing Anchor programs can be lenghty and overwelming So we thought of a Cool Way of Testing Anchor program without writing an Testing

Pratik Saria 25 Sep 3, 2022
Util for calling Prisma middleware for nested write operations.

Prisma Nested Middleware Util for calling Prisma middleware for nested write operations. Existing Prisma middleware is called once for every operation

Olivier Wilkinson 6 Dec 7, 2022
Collection of JSON-RPC APIs provided by Ethereum 1.0 clients

Ethereum JSON-RPC Specification View the spec The Ethereum JSON-RPC is a collection of methods that all clients implement. This interface allows downs

null 557 Jan 8, 2023
A vanilla node.js blog microservice

Vanilla blog microservice This is a vanilla blog microservice built using node.js; it was created for the purpose of learning to gain an understanding

Kater Akeren 1 Dec 24, 2021
ACME client microservice for the Cumulocity IoT Edge to automatically issue and renew valid certificates via e.g. Let's Encrypt.

Cumulocity IoT Edge - ACME This repository contains the sources for an ACME microservice that can be used to periodically issue/renew certificates for

Software AG 3 May 3, 2022
🔖Minimalistic URL shortener as a microservice

?? u Minimalistic URL shortener as a microservice. Also Klein's successor. ?? stack Node.js TypeScript Express Prisma PostgreSQL Redis Docker Docker C

Faye Keller 9 Jul 17, 2022
Request-Header-Parser-Microservice App for FreeCodeCamp Backend Challenge

API Project: Request Header Parser Microservice for freeCodeCamp User stories: I can get the IP address, preferred languages (from header Accept-Langu

Christotle Agholor 3 Mar 20, 2022
A Node.js microservice to store and query time series data

Time series storage microservice This is a simple Node.js application which allows the storage and query of time series datasets in an InfluxDB 2.0 in

JTEKT 3 Apr 25, 2022
Microservice starter template with express.js & typescript

NodeJS + TypeScript [A starter template for microservice] Getting Started First, clone the repository: git clone https://github.com/MdMostaFizurRahama

Md Mostafizur Rahman 11 Jul 20, 2022
A light microservice serving Atom 1.0 Feeds for MusicThread threads

MusicThread Web Feeds A light microservice to serve Atom 1.0 Feeds for MusicThread. People use web feeds for following updates to specific threads via

Brushed Type 4 Jun 15, 2022
Microservice starter template with express.js & typescript

NodeJS + TypeScript [A starter template for REST API & microservices] Getting Started First, clone the repository: git clone https://github.com/MdMost

Md Mostafizur Rahman 11 Jun 28, 2022
Backend Microservice & Payment Gateway System

A progressive Node.js framework for building efficient and scalable server-side applications. Description Nest framework TypeScript starter repository

Ifechukwudeni Oweh 6 May 9, 2023
Ethereum Smart Contracts for locking your Ether and ERC20 tokens based on time and price conditions

SmartHold - a simple way to lock and hold your ETH or ERC20 in a smart contract This is a BETA software that has not been audited for security. USE AT

Paweł Urbanek 22 May 5, 2022
Build a Full Stack Marketplace on Ethereum with React, Solidity, Hardhat, and Ethers.js

Building a Digital Marketplace on Ethereum The technologies used in this workshop are React, Next.js, Tailwind CSS, HardHat, Solidity, and Ethers. Get

Nader Dabit 114 Nov 15, 2022
♦ Crowd funding project using Smart Contracts on the Ethereum. Created with Next.js and Tailwind CSS.

Crowdcoin ♦ Crowd funding project using Smart Contracts on the Ethereum. Created with Next.js and Tailwind CSS. Project from "Ethereum and Solidity: T

Luiz Fernando Veríssimo 2 Dec 14, 2022
Eth-explorers-extension - Chrome extension to open Ethereum addresses & transaction hash from any page on popular explorers + dashboards

eth-explorers-extension(s) This repository contains two folders with two extensions that work for address and transactions respectively. 1. eth-addres

Apoorv Lathey 71 Jan 6, 2023