README

Uniscan is a NFT Explorer for blockchains.

Dependences

  1. Ruby
  2. Ruby on Rails - Web framework
  3. Hotwire - An alternative approach to building modern web applications
  4. MySQL
  5. Redis
  6. ImageMagick - Convert image, resize image, identify image
  7. FFmpeg - Convert video to gif
  8. Alibabacloud OSS - Online image storage and access service
  9. Sidekiq - Simple, efficient background processing for Ruby

Architecture and components

arch

Web Server

Provide web pages for users to use.

NFT trackers for blockchains

Track and get the NFT on the blockchains.
There are now trackers for Ethereum and Darwinia as examples.

NFT Workers

A NFT worker is a long-running process.
It is responsible for collecting the NFT discovered by the tracker and storing it in the database.
The data from the tracker is packaged into a sidekiq message for delivery.

NFT token_uri processor

It reads the token_uri of NFT from the database, and then obtains the metadata.
And, it will download and process the image from the metadata.

Models

A model is a Ruby class that is used to represent data. Additionally, models can have most of the application's logic.

  1. Account
  2. Blockchain
  3. Collection
  4. Token
  5. Property
  6. TokenOwnership
  7. Transfer

The relationship between the models:

relationship

Controllers

Controllers handle the incoming web requests and eventually respond with a rendered view.

  1. WelcomeController
  2. TokensController
  3. CollectionsController
  4. AccountsController

Test

You can also test in docker container.

Preparation

  1. Install Ruby ~> 2.7.0
    See Installing Ruby

  2. Install ImageMagick & FFmpeg

  3. Download code
    Download or clone the code to local, and go to the root directory.

  4. Install Rubygems

    bundle install
    

Run all tests

rails test

Run a single test file

rails test test/models/transfer_test.rb

Docker

Run

  1. Run mysql and redis.
docker-compose up -d db redis
  1. Create tables and generate seed data.
docker-compose run --rm uniscan rails db:migrate
docker-compose run --rm uniscan rails db:seed
  1. Run services
docker-compose up -d uniscan sidekiq eth_scan

Test

  1. Run mysql if not running

    docker-compose up -d db
    
  2. Create test database

    docker-compose run --rm uniscan_test rails db:create
    docker-compose run --rm uniscan_test rails db:migrate
    
  3. Run tests

    docker-compose run --rm uniscan rails test
    

Contributing

Bug reports and pull requests are welcome on GitHub at https://github.com/uni-arts-chain/uniscan.

License

The gem is available as open source under the terms of the MIT License.

Supported by web3 foundation

grants_badge