Skip to main content

Ripda Core integration

Reason this release was yanked:

This release has been discontinued and will no longer be maintained. For more recent versions and ongoing support, please consider using an alternative.

Project description

Integração do núcleo Ripda

Documentation Status Language grade: Python Total alerts Latest Version

Ripda é um mini framework que visa facilitar a implementação de qualquer sistema baseado em blockchain.

Introdução

O quão fácil pode ser implementar um sistema baseado em blockchain?

Quando me propus a desenvolver este mini framework, estava buscando uma maneira simples e rápida de implementar uma solução baseada em blockchain, que fosse o mais personalizável possível, e que fosse em uma linguagem de programação flexível.

A ideia inicial era criar a estrutura base de uma criptomoeda, inteiramente com Python, mas no decorrer da estruturação, percebi que poderia estender este projeto para qualquer sistema que necessite de salvar dados em uma estrutura de blockchain.

Você irá notar que parte da estrutura da Ripda segue o princípio de algumas criptomoedas, como a necessidade de mineração dos dados para salvá-los em uma cadeia de blocos, transações, etc. Uma das grandes diferenças é que aqui, você tem total controle sobre o quão difícil pode ser este processo de organização dos dados.

Por debaixo dos panos, Ripda utiliza o FastAPI para servir os dados de maneira mais performática possível, e fornece uma estrutura para que facilmente, você possa estender a estrutura do mini framework e adicionar mais funcionalidades.

Apesar de utilizar o FastAPI para servir os dados, você notará que grande parte da estruturação dos comandos, são inspirados no Django. Trabalhei com Djando por muitos anos, e gosto da maneira em que são utilizados os comandos no terminal, me inspirei grande parte na estrutura do Django para montar a forma como são organizados os comandos por aqui.

Respondendo a pergunta inicial: fácil, muito fácil utilizando Ripda.

Configurações

Como configurar um aplicativo na utilizando a estrutura do Ripda?

O aplicativo Ripda modelo possui quatro arquivos, manage.py que é utilizado para execução dos comandos principais, models.py no qual você pode definir novos modelos a serem criados no banco de dados, para extender a aplicação, urls.py, que você pode utilizar para criar novas rotas ou adicionar novos protocolos as rotas já existentes e settings.py que você definirar todas as configurações a serem usadas pela aplicação.

models.py

from sqlmodel import Field, SQLModel

"""
crie seus modelos aqui
"""

urls.py

from ripda import __version__
from ripda.core.management.commands.runserver import app

from models import *

"""
crie suas rotas aqui
"""


@app.get('/')
async def root():
    return {
        'ripda': __version__
    }

settings.py

import pathlib

HANDLER_MODULE: str = 'urls'

MODELER_MODULE: str = 'models'

# Diretório raiz do projeto
BASE_DIR = pathlib.Path(__file__).parent.parent.resolve()

# Nó em que a carteira será servida
NODE_HOST: str = 'localhost'
NODE_PORT: int = 1050

# Dificuldade em encontrar um hash; é medido pela quantidade de zeros no início do hash.
HASH_DIFFICULTY: int = 4

# Valor inicial padrão de nonce para testar
MINER_NONCE_START: float = 0.0

# Valor final padrão de nonce para testar
MINER_NONCE_STOP: float = 100.0

# Variação numérica entre nonces
MINER_NONCE_STEP: float = 0.001

# PostgreSQL
ENGINE_HOST: str = str()
ENGINE_PORT: int = int()
ENGINE_USER: str = str()
ENGINE_PASSWORD: str = str()
ENGINE_DB: str = 'ripda'

manage.py

import os
import sys


def main():
    os.environ.setdefault('RIPDA_SETTINGS_MODULE', 'settings')
    try:
        from ripda.core.management import execute_from_command_line
    except ImportError as exc:
        raise ImportError(
            "Couldn't import Ripda"
        ) from exc
    execute_from_command_line(sys.argv)


if __name__ == '__main__':
    main()

Salvos estes arquivos dentro de um módulo Python, você terá à sua disposição toda estrutura blockchain montada, ponta para utilização.

Comandos

São no total quatro comandos principais para se iniciar a aplicação, o primeiro é o migrate, este comando irá criar todas as tabelas necessárias para funcionamento da Ripda em seu banco de dados. Atenção, este comando irá apagar todas as tabelas e dados caso já existam no banco de dados.

python manage.py runserver

O segundo comando é o populate, este comando é utilizado quando se deseja popular o banco de dados com algumas transações faker para testar ou validar alguma nova funcionalidade. Serão criadas no total 1000 transações no banco, com dados quase aleatórios, para que você possa utilizar.

python manage.py populate

O terceiro comando é o miner, este comando, ao contrário dos anteriores, requer a passagem de um argumento adicional, o maker. Como o nome sugere, este comando é o responsável pela mineração dos dados, ou seja, sua organização em uma estrutura de blockchain.

python manage.py miner maker 1fd840bb7bad535ba1e8f587b41e5b27

O último comando é o runserver, este comando é responsável por servir os endpoints publicamente. São criados dois depois, \blocks e \transactions , no qual transactions aceita os protocolos GET e POST e blocks somente GET.

python manage.py runserver

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

ripda-1.0.0a2.tar.gz (15.6 kB view details)

Uploaded Source

Built Distribution

ripda-1.0.0a2-py3-none-any.whl (19.8 kB view details)

Uploaded Python 3

File details

Details for the file ripda-1.0.0a2.tar.gz.

File metadata

  • Download URL: ripda-1.0.0a2.tar.gz
  • Upload date:
  • Size: 15.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.0 CPython/3.10.2

File hashes

Hashes for ripda-1.0.0a2.tar.gz
Algorithm Hash digest
SHA256 e6bc7035cfe54945c843c6937070a4a615ba305d078a452d2fb98ce7771e6b59
MD5 a925f5f4b636c06df065d39402ca7df3
BLAKE2b-256 af23c91f3218384bd172a17d90a54a24f7cf20cdb9062b88bb0c290c0881d96d

See more details on using hashes here.

File details

Details for the file ripda-1.0.0a2-py3-none-any.whl.

File metadata

  • Download URL: ripda-1.0.0a2-py3-none-any.whl
  • Upload date:
  • Size: 19.8 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.0 CPython/3.10.2

File hashes

Hashes for ripda-1.0.0a2-py3-none-any.whl
Algorithm Hash digest
SHA256 2de0378b498680ebd91b4fd5b2f813fa6a883fda22f60943b3e37250745fda83
MD5 df5c7ed53439e8b598e41978315562f0
BLAKE2b-256 4090dc99b5124e0829f13421932d83fde287067463aea9d5c8bb1b0652595b62

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page