Rust реализацитя ядра НБМ
  • Rust 96.1%
  • Nix 3.9%
Find a file
2026-05-29 17:56:28 +03:00
.github feat: add dependabot 2026-05-13 23:34:10 +03:00
crates feat: add account kinds 2026-05-28 17:05:37 +03:00
docs/images docs: add icons 2026-05-13 17:37:13 +03:00
.envrc init: nix development environment and rust workspace 2026-05-13 17:12:26 +03:00
.gitignore init: add direnv path and pre-commit (autogenerated) 2026-05-13 17:50:57 +03:00
Cargo.lock feat: add derive-getters crate 2026-05-25 09:35:45 +03:00
Cargo.toml feat: realize full economic module 2026-05-20 00:06:11 +03:00
flake.lock nix: add precommit checks 2026-05-13 17:49:24 +03:00
flake.nix nix: add precommit checks 2026-05-13 17:49:24 +03:00
LICENSE init: add license 2026-05-13 17:51:04 +03:00
README.md feat: realize full economic module 2026-05-20 00:06:11 +03:00
rustfmt.toml init: nix development environment and rust workspace 2026-05-13 17:12:26 +03:00
TDOCUMENTATION.md docs: add tech documentation 2026-05-29 17:56:28 +03:00

Octopus Project Logo

License Last Commit Repo Size Build Status

Мы ВКонтукле Website

Ядро НБМ (API, Rust (Проект octopus-rs)

Исходный код ядра, то бишь API, Народного Банка Мемов, сердца экономики Мемного мира.

Кодовое название: microcore

Технологический стек

Место в проекте Технология
Язык программирования Rust
Runtime Теперь его нет
База данных PostgreSQL
Архитектура Монолитная, основанная на сервисах, отдельно сервер авторизации
Лицензия GNU AGPLv3

Чем RS версия отличается от обычной (на .NET)

RS версия отличается тем, что это ядро банка, переписанное на Rust. Главными преимуществами являются:

  1. Меньшее потребление ресурсов. Проекты на Rust не требуют отдельного рантайма, как того требуют проекты, базирующиеся на платформе .NET. К тому же сам Rust пропагандирует zero-cost abstractions, то есть мы не должны платить своими ресурсами за абстракции, они трансформируются самим компилятором в такой же быстрый код, который мы бы написали сами вручную.
  2. Кстати, о скорости. Сам Rust известен тем, что он мега-быстрый, точнее проекты на нём более быстрые и оптимизированные, как раз из-за этого zero-cost abstractions.
  3. Большая лаконичность Rust'а и его надёжность. В таком языке как Rust, который очень сильно завязан на типах (особенно если вспомнить об алгебраических типах enum), намного сложнее ошибиться. Также стоит вспомнить об отсутствии такой штуки как null, его в Rust просто не существует, а также о том, что нет конструкции try/catch. Вместо них есть алгебраические типы Option и Result. Благодаря этому намного легче писать надёжный код, так как сам язык к этому располагает.
  4. Мне хочется просто научиться ему. Это тоже может сойти как причина.

Именно по этим причинам (их, на самом деле, больше) мне хочется и кажется релевантным переписать сей проект, который традиционно был на JS/TS или .NET, на Rust. Особенно учитывая, что это банк, хоть и игровой, а не реальный (мы же, всё таки, реализма также хотим)

!!! Предупреждение !!!

При публикациях форков, не оставляйте, пожалуйста секретных ключей и прочих штук, которые должны оставаться конфидициальными. Используйте для этого Переменные окружение, они же Environment Variables

Экономическая модель (РП документация)

  • Стоимость валюты расчитывается от стоимости главной валюты (в нашем случае - Левро).
  • Игровой год тождественнен 12 дням, соответственно 1 игровой месяц = 1 день.
  • Торговля строится на предметах и услугах.
  • Также имеются депозиты и кредиты
  • Вложения (они же акции)
  • Экономическая модель пытается быть реалистичной, при этом сохраняя относительную простоту.
  • Имеются блоги и посты в них, с помощью этого могут быть реализованы новости и дайджесты

Спасибы:

  • Прошлые проекты-реализации Народного Банка Мемов (раннее Банка Мемного Социалистического Интернационала):

  • Системы Автоматизированной Бюрократии (они же бот-банки, боты-паспортисты):

  • А также боты созданные на всяких проприетарных платформах (Бот-банк Гардернии, ранние версии бота Ловушниского)

  • И, конечно же, Торговой Мемной Лиге (ренне Банк Кекляндии)

    • rival-politics/tml-classic

    • Ну и, конечно же, новым банкам от этого же разработчика, которые тоже утеряны и заброшены...

Лицензия

Этот проект распространяется под лицензией GNU Affero General Public License v3.0 (GNU AGPLv3). Согласно условиям, если вы используете это ПО для предоставления сетевых услуг (SaaS), вы обязаны предоставить исходный код своей версии пользователям.

Проще говоря: Пиздить разрешается, закрывать нельзя