Zum Hauptinhalt springen
Echtzeit-Radar & Feeds
Alle RSS Feeds ➔
👥 Community & Social
YouTube Security VideosVisual Studio Code: VS Code Learn: Extending Agents(24.09.2026 um 21:00 Uhr)
•
YouTube Security VideosGoogle Cloud Tech: Turn Audio into Action with Gemini 3.5 Transcribe(24.09.2026 um 21:00 Uhr)
••••
Unix & Linux ServerUSN-8815-1: libass vulnerabilities(24.09.2026 um 16:57 Uhr)
•••••
YouTube Security VideosVisual Studio Code: VS Code Learn: Extending Agents(24.09.2026 um 21:00 Uhr)
•
YouTube Security VideosGoogle Cloud Tech: Turn Audio into Action with Gemini 3.5 Transcribe(24.09.2026 um 21:00 Uhr)
••••
Unix & Linux ServerUSN-8815-1: libass vulnerabilities(24.09.2026 um 16:57 Uhr)
•••••
Intelligence View
⚡ tsecurity.de Intelligence

Como implementar um Ledger em sístemas distribuídos

O que é um ledger? Considere um Ledger como um "livro da verdade", por exemplo, uma planilha contábil de uma empresa, onde são registradas todas as transações que aconteceram. Assim como em uma planilha contábil, não editamos ou remove…

0
↗ Quelle (dev.to)
Reagiere als Erste:r — dein Feedback zählt!




O que é um ledger?



Considere um Ledger como um "livro da verdade", por exemplo, uma planilha contábil de uma empresa, onde são registradas todas as transações que aconteceram. Assim como em uma planilha contábil, não editamos ou removemos registros, apenas adicionamos novas entradas. Isso nos garante a imutabilidade, que é um ótimo princípio em sistemas financeiros. A forma mais comum de tratar isso é por meio de eventos de entrada e saída, junto ao montante de valor correspondente para cada transação.









Como fazer?



Primeiramente, é uma prática essencial manter um Ledger distinto para cada tipo de moeda, como BRL ou USD, para simplificar radicalmente a lógica de negócio e os cálculos. Além disso, para prevenir o processamento duplicado em um sistema distribuído, cada operação deve ser acompanhada de uma chave de idempotência única.



O gerenciamento da concorrência é outro pilar para evitar inconsistências no saldo. Uma abordagem é o lock otimista, que utiliza um campo de versionamento como version ou last_sequence. A alternativa é o lock pessimista, que garante acesso exclusivo ao Ledger através de um serviço externo como Redis.









Persistência e Concorrência



A persistência do Ledger pode ser implementada em um banco de dados como o MongoDB. Para lidar com bloqueios otimistas, utilizamos um campo como last_sequence no próprio documento do Ledger. Para o bloqueio pessimista, a recomendação é um serviço de cache distribuído onde a latência seja a menor possível, como o Redis.



A chave de idempotência, por sua vez, depende da estrutura do sistema, mas geralmente é composta por uma combinação de dados como timestamp + from + to + amount. Essa chave pode ser armazenada em um cache distribuído com um TTL (Time To Live).









Lidando com Dinheiro em Sistemas Distribuídos






Por que usar int e não float?



Nunca use tipos de ponto flutuante (float) para armazenar dinheiro. A solução padrão é trabalhar com inteiros, armazenando o valor na menor unidade da moeda (ex: R$ 123,45 é armazenado como o inteiro 12345). Todas as operações matemáticas são feitas com esses inteiros, eliminando erros de precisão.






Estrutura para Múltiplas Moedas



Valores monetários devem ser representados por uma estrutura que combine o montante e a moeda, seguindo o padrão ISO 4217. Essa estrutura deve conter o amount (inteiro) e a currency (ex: "BRL"), prevenindo erros como somar diretamente dólares com reais.









Aplicando o Lock Otimista e Transações



Para garantir a consistência, o processo de registrar uma transação deve ser atômico. Aqui está um passo a passo mais detalhado de como implementar o fluxo completo:




  1. Verificação de Idempotência (Fail Fast): Antes de iniciar a transação no banco de dados, verifique a chave de idempotência em um cache rápido como o Redis. Se a chave já existir, significa que a operação já foi processada, e você pode retornar o sucesso imediatamente, evitando trabalho desnecessário.


  2. Início do Loop de Tentativa (Retry Loop): Como o lock otimista pode falhar, toda a lógica de negócio deve rodar dentro de um loop que tentará a operação algumas vezes (ex: 3 tentativas) antes de desistir.


  3. Leitura do Estado Atual: Dentro do loop e de uma nova transação do MongoDB, leia o documento do Ledger para obter seu balance e last_sequence atuais.


  4. Cálculo em Memória: Calcule o novo saldo na sua aplicação. novo_saldo = saldo_atual + valor_da_transação.


  5. Execução da Escrita Atômica: Execute as duas operações de escrita dentro da mesma transação:





  * **`insertOne`** na coleção `transactions` com os dados da nova movimentação.
* **`updateOne`** na coleção `ledgers`. Este update é a chave do lock otimista: ele deve buscar pelo `_id` **e** pela `last_sequence` que você leu no passo 3. A atualização irá então modificar o `balance` e incrementar o `last_sequence`.





  1. Resultado:




  * **Sucesso**: Se o `updateOne` encontrar o documento e a transação for concluída (commit), significa que não houve conflito. Você pode sair do loop e retornar o sucesso.
* **Falha**: Se a transação falhar porque o `last_sequence` não correspondeu, significa que outro processo alterou o Ledger. O loop de tentativa continuará para a próxima iteração, reiniciando o processo a partir do passo 3. É uma boa prática adicionar um pequeno tempo de espera (backoff) entre as tentativas.




Se o loop se esgotar sem sucesso, a operação falhou e um erro deve ser retornado ao cliente.









Como ficam meus dados?






ledgers






{
"_id": ObjectId(),
"balance": {
"amount": 12345,
"currency": "BRL"
},
"last_sequence": 1,
"last_transactions":[
{
"_id": ObjectId(),
"ledger_id": ObjectId(),
"timestamp": UnixTime,
"sequence": 1,
"change": {
"amount": 5000,
"currency": "BRL"
},
"idempotency_key": "timestamp-from-to-amount"
}
]
}









transactions






{
"_id": ObjectId(),
"ledger_id": ObjectId(),
"timestamp": UnixTime,
"sequence": 1,
"change": {
"amount": 5000,
"currency": "BRL"
},
"idempotency_key": "timestamp-from-to-amount"
}












Considerações Finais



Construir um Ledger confiável se baseia em quatro pilares essenciais:

Imutabilidade, garantindo um histórico de transações que é apenas de adição (append-only);

Precisão, usando inteiros para cálculos monetários e evitando erros de ponto flutuante;

Consistência, através de transações atômicas com controle de concorrência como o lock otimista;

Idempotência, para proteger o sistema contra operações duplicadas.



Uma vez que esses fundamentos estão sólidos, o próximo passo na evolução do sistema é pensar em escalabilidade. Para Ledgers com milhões de transações, técnicas como Snapshots (fotos periódicas do saldo) para otimizar a performance de leitura e o arquivamento de transações antigas tornam-se cruciais para manter o sistema performático a longo prazo.

CTI Threat Relationship Graph2 Knoten / 1 Relationen
CVE / Incident Software MITRE ATT&CK CWE Weakness IoC
SOC Incident Playbook: Vulnerability Remediation & Verification
Syntax validiert (0 Fehler)
title: Detect Exploitation - Como implementar um Ledger em sístemas distribuídos
id: 638335e4-203e-4ebd-b688-eea9cb0938b7
status: experimental
description: Automatisch generierte SIEM-Erkennungsregel basierend auf CTI Intelligence
references:
  - https://tsecurity.de/
author: iShareStuff CTI Automated Detection Engine
date: 2026-09-24
logsource:
  category: network_connection
  product: any
detection:
  selection:
      CommandLine|contains:
        - 'exploit'
  condition: selection
falsepositives:
  - Legitime administrative Zugriffe oder Penetrationstests
level: high
tags:
  - attack.initial_access
Syntax validiert (0 Fehler)
rule CTI_Threat_Indicator {
    meta:
        author = "iShareStuff CTI Automated Detection Engine"
        date = "2026-09-24"
        description = "YARA Signature for "
    strings:
        $str = "Como implementar um Ledger em " ascii wide
    condition:
        any of them
}
Syntax validiert (0 Fehler)
index=security sourcetype IN ("cisco:asa", "pan:traffic", "zeek_conn", "suricata", "WinEventLog:Security")
("Como implementar um Ledger em sstemas di")
| stats count earliest(_time) as first_seen latest(_time) as last_seen by src_ip, dest_ip, dest_host, signature
| eval first_seen=strftime(first_seen, "%Y-%m-%d %H:%M:%S"), last_seen=strftime(last_seen, "%Y-%m-%d %H:%M:%S")
| sort - count
Syntax validiert (0 Fehler)
message: "*Como implementar um Ledger em sstemas di*"
Syntax validiert (0 Fehler)
CommonSecurityLog
| where Message has "Como implementar um Ledger em sstemas di"
| summarize EventCount = count(), FirstSeen = min(TimeGenerated), LastSeen = max(TimeGenerated) by SourceIP, DestinationIP, DestinationPort, Activity
| extend DetectionRule = "iShareStuff-CTI-Compiled"
| sort by EventCount desc
🎯
MITRE ATT&CK Matrix Navigator 14 Taktiken
Reconnaissance
-
Resource Development
-
Initial Access
Execution
Persistence
-
Privilege Escalation
Defense Evasion
Credential Access
-
Discovery
-
Lateral Movement
-
Collection
-
Command and Control
Exfiltration
-
Impact
tsecurity.de Cognitive Threat RAG
Fokus-Vektor:

Kognitive Analyse für identifizierte Bedrohung: Erhöhte Bedrohungslage im Bereich Como implementar um Ledger em sístemas d.... Basierend auf 368k Vektor-Korrelationen werden sofortige Isolationsmaßnahmen für betroffene Endpunkte empfohlen.

🛡️ Angriffsfläche & Exposure

Netzwerk/Remote-Zugriff ohne Vorauthentifizierung möglich.

⚡ Empfohlene Sofortmaßnahmen
  • 1. Perimeter-Inspektion: Relevante Portfreigaben und exponierte Endpunkte unverzüglich scannen.
  • 2. Patch-Applikation: Hersteller-Hotfix einspielen oder betroffene Daemons in isolierte DMZ-Segmente überführen.
  • 3. Telemetrie & EDR-Alerts: Prozessaufrufe und Child-Processes auf anomale Shell-Spawns überwachen.
🔗 Semantisch verwandte Zero-Days MariaDB 11.7 VEC
Ähnliche Beiträge
🔍 Verwandte News

Auch interessante Nachrichten Como implementar um Ledger em sístemas distribuídos

Thematisch verwandte Begriffe: Como, implementar, Ledger, sístemas · 6 Treffer

Laden...

Beiträge werden geladen ...

Laden...

Videos werden geladen ...

Laden...

Beiträge werden geladen ...

Laden...

Videos werden geladen ...

Laden...

Beiträge werden geladen ...

Laden...

Videos werden geladen ...

Laden...

Beiträge werden geladen ...

Laden...

Videos werden geladen ...

Zum Aktualisieren ziehen
ZERO-DAY CVE-2026-61782 | Rsdoctor is a build analyzer tailored for projects built with Rspack. Pr…
Advisory →
tsecurity.de Icon
Offline-Lesen, Eilmeldungen & 0ms Ladezeit

Installiere tsecurity.de direkt auf deinen Home-Bildschirm für das ultimative Vollbild-Magazinerlebnis ohne Browser-Leisten.

Nächster Beitrag
Themen-Radar & Intelligence Matrix
Echtzeit-Taxonomie nach Angriffsvektoren & Plattformen

tsecurity.de Live Threat Radar

🔴 LIVE RADAR
MONITORING
AKTIV
CVE-DATENBANK
LIVE
🔍
Community Radar & Live Chat
Sentinel Bot online • Live-Stream
Dein Cluster: Security Explorer
Match:
lädt…
Verbindung zum Community-Stream wird aufgebaut...
Bearbeitungsmodus — Senden überschreibt deine Nachricht
Community-Puls — was gerade passiert
lädt…
Aktivitäten deiner Analysten
lädt…
Neues Thema oder Eilmeldung einreichen

Reiche interessante Links, Zero-Days oder Debatten ein. Die Community entscheidet per Upvote über die Veröffentlichung.

Heiß diskutierte Einreichungen
📂 Keine gespeicherten Artikel vorhanden.
Zurück Ziehen Vor
Links: vorheriger Artikel • Rechts: nächster Artikel • unten: schließen
News NIS-2 Frühwarnung Tier-1 Intel TTP ⏱️ 3 Min vor 10 Min
Artikeldaten werden geladen...
↗ Original-Quelle