{"id":18836670,"url":"https://github.com/dapi/zoldy","last_synced_at":"2026-01-27T21:30:14.938Z","repository":{"id":138400253,"uuid":"159850947","full_name":"dapi/zoldy","owner":"dapi","description":"Brave experimental of Zold implementation on Ruby","archived":false,"fork":false,"pushed_at":"2019-01-03T20:19:43.000Z","size":218,"stargazers_count":4,"open_issues_count":0,"forks_count":0,"subscribers_count":6,"default_branch":"master","last_synced_at":"2024-12-30T08:25:38.876Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"https://papers.zold.io/wp.pdf","language":"Ruby","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/dapi.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2018-11-30T16:36:42.000Z","updated_at":"2022-01-08T09:00:34.000Z","dependencies_parsed_at":"2023-04-18T20:17:11.964Z","dependency_job_id":null,"html_url":"https://github.com/dapi/zoldy","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dapi%2Fzoldy","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dapi%2Fzoldy/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dapi%2Fzoldy/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dapi%2Fzoldy/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/dapi","download_url":"https://codeload.github.com/dapi/zoldy/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":239774326,"owners_count":19694700,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-11-08T02:25:12.904Z","updated_at":"2026-01-27T21:30:14.861Z","avatar_url":"https://github.com/dapi.png","language":"Ruby","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Zoldy\n\n[![Build Status](https://travis-ci.org/dapi/zoldy.svg?branch=master)](https://travis-ci.org/dapi/zoldy)\n[![Maintainability](https://api.codeclimate.com/v1/badges/73033467d89b385a9ac2/maintainability)](https://codeclimate.com/github/dapi/zoldy/maintainability)\n[![PRs Welcome](https://img.shields.io/badge/PRs-welcome-brightgreen.svg?style=flat-square)](http://makeapullrequest.com)\n\nProof Of Concept Zold implementation on Ruby.\nZold is A [Fast Cryptocurrency for Micro Payments](https://papers.zold.io/wp.pdf)\n\n# Motivation\n\n* Deep dig into Zold protocol and validate Zold conceptions viability in real life cases.\n* Get rid of a mash of threads in [official zold implementation on ruby](https://github.com/zold-io/zold) and get more stable and easy to hack and support application.\n* Validate applicability of some typical in web development solutions and design strategies to build cryptocurrency node.\n* Have fun.\n\n[![HAVE\nFUN](https://i.ytimg.com/vi/PIb6AZdTr-A/hqdefault.jpg?sqp=-oaymwEjCPYBEIoBSFryq4qpAxUIARUAAAAAGAElAADIQj0AgKJDeAE=\u0026rs=AOn4CLD9Q0LmucQLrrJureSYqI-VBIKTnQ)](https://www.youtube.com/watch?v=PIb6AZdTr-A)\n\n# Difference to an official implementation\n\nThere are a lot of design patterns and `gems` and few pricipes used to get code better, application stable and development easy:\n\n* `puma` A Ruby/Rack web server built for concurrency with cluster mode.\n* `sidekiq` Simple, efficient background processing for Ruby. Both puma and sidekiq fully replaces direct threads usage in core application.\n* Wallets/Scores/Remote nodes stores are designed to be free of file-locking or mutex bottlenecks.\n* Wide Rack middlewares usage\n* `foreman` to manage Procfile-based applications\n* `grape` and `swagger` to creating documented interactive REST-like APIs\n* One YAML-file settings (`./config/settings.yml`) overridable by environment variables.\n* Protocol-based specifiactions described in one module (`./app/protocol.rb`) (Hmm.. not sure)\n* [bugsnag](https://www.bugsnag.com) is used for realtime production and development bug tracking\n* Interactive console (`./bin/console`) to have better development and usage expirience\n* Separated `development`, `production` and `test` environments.\n* Use `ActiveSupport::Dependencies.autoload_paths` instead of inplace file requirements.\n* `Rack::Reloader` for hot code reloading\n* `guard` for best practices with realtime testing\n* Respect to `SRP` (Single Responsibilty) and `CQRS` (Command Or Query Separation) principes of software development\n\n# What is done and what to do?\n\n* score generation - DONE\n* current node emitting and remote nodes discovery - DONE\n* wallets receiving - DONE\n* pushing wallets to remote nodes - DONE\n* wallet creation - TODO\n* hosting bonus and taxes - TODO\n* stress tests - TODO\n\n# Installation\n\n## Setup environment\n\n1. Install redis: `sudo apt-get install redis`\n2. Install rbenv/rvm (rbenv is preferrable): `https://github.com/rbenv/rbenv`\n3. Install required ruby and it's depdencies: `rbenv install; gem instal bundler`\n4. Highly recomended to install [direnv](https://direnv.net) to work with environment variables in `.envrc` for\n   development\n\n## Setup application\n\n1. `bundle`\n\n# Configuratoin\n\nLook into `./config/settings.yml`\n\n# Start in production mode\n\n\u003e RAKE_ENV=production \\\n\u003e SIDEKIQ_USERNAME=sidekiq SIDEKIQ_PASSWORD=YOUPASSWORD \\\n\u003e ZOLD_INVOICE=66Yodh14@1142c2d008235bbe \\\n\u003e bundle exec foreman start\n\nWhere `66Yodh14@1142c2d008235bbe` is your (or my) invoice.\n\n# Web interfaces\n\n* sidekiq - http://localhost:4096/sidekiq\n* swagger API doc - http://localhost:4096/swagger\n\n# Development\n\nStart guard to have interactive TDD\n\n\u003e bundle exec guard\n\n# Dependencies\n\n* Redis \u003e=3\n* Ruby 2.4/2.5\n\n# ROADMAP\n\n* Improve API - restrict plain/text responses and requestes. Use json only. Probably use an jsonapi\n\n# Author\n\nDanil Pismenny, [@pismenny](https://twitter.com/pismenny) / [@pismenny](http://t.me/pismenny)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdapi%2Fzoldy","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdapi%2Fzoldy","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdapi%2Fzoldy/lists"}